walberla::simd::avx2 Namespace Reference

Typedefs

typedef __m256d double4_t
 

Functions

const char * usedInstructionSet ()
 
double4_t make_double4 (double d, double c, double b, double a)
 
double4_t make_double4_r (double a, double b, double c, double d)
 
double4_t make_double4 (double a)
 
double4_t make_zero ()
 
double4_t load_aligned (double const *mem_addr)
 
double4_t load_unaligned (double const *mem_addr)
 
void store_aligned (double *mem_addr, double4_t a)
 
void loadNeighbors (const double *p, double4_t &r_left, double4_t &r_center, double4_t &r_right)
 
double getComponent (const double4_t &v, int i)
 
double getComponent (const double4_t &v, unsigned long i)
 
bool getBoolComponent (const double4_t &v, int i)
 
bool getBoolComponent (const double4_t &v, unsigned long i)
 
double4_t hadd (double4_t a, double4_t b)
 
double4_t horizontalSum (double4_t a)
 
double4_t exchangeLowerUpperHalf (double4_t a)
 
void extract (double4_t in, double4_t &d, double4_t &c, double4_t &b, double4_t &a)
 
double4_t rotateRight (double4_t a)
 
double4_t rotateLeft (double4_t a)
 
double4_t compareEQ (double4_t a, double4_t b)
 
double4_t compareNEQ (double4_t a, double4_t b)
 
double4_t compareGE (double4_t a, double4_t b)
 
double4_t compareLE (double4_t a, double4_t b)
 
double4_t logicalAND (double4_t a, double4_t b)
 
double4_t logicalOR (double4_t a, double4_t b)
 
int movemask (double4_t m)
 
double4_t blendv (double4_t a, double4_t b, double4_t mask)
 
template<int mask>
double4_t blend (double4_t a, double4_t b)
 
double4_t sqrt (double4_t a)
 
template<unsigned int numIter = 3>
double4_t invSqrt (double4_t y)
 

Typedef Documentation

◆ double4_t

Function Documentation

◆ blend()

template<int mask>
double4_t walberla::simd::avx2::blend ( double4_t  a,
double4_t  b 
)
inline

◆ blendv()

double4_t walberla::simd::avx2::blendv ( double4_t  a,
double4_t  b,
double4_t  mask 
)
inline

◆ compareEQ()

double4_t walberla::simd::avx2::compareEQ ( double4_t  a,
double4_t  b 
)
inline

◆ compareGE()

double4_t walberla::simd::avx2::compareGE ( double4_t  a,
double4_t  b 
)
inline

◆ compareLE()

double4_t walberla::simd::avx2::compareLE ( double4_t  a,
double4_t  b 
)
inline

◆ compareNEQ()

double4_t walberla::simd::avx2::compareNEQ ( double4_t  a,
double4_t  b 
)
inline

◆ exchangeLowerUpperHalf()

double4_t walberla::simd::avx2::exchangeLowerUpperHalf ( double4_t  a)
inline

◆ extract()

void walberla::simd::avx2::extract ( double4_t  in,
double4_t d,
double4_t c,
double4_t b,
double4_t a 
)
inline

◆ getBoolComponent() [1/2]

bool walberla::simd::avx2::getBoolComponent ( const double4_t v,
int  i 
)
inline

◆ getBoolComponent() [2/2]

bool walberla::simd::avx2::getBoolComponent ( const double4_t v,
unsigned long  i 
)
inline

◆ getComponent() [1/2]

double walberla::simd::avx2::getComponent ( const double4_t v,
int  i 
)
inline

◆ getComponent() [2/2]

double walberla::simd::avx2::getComponent ( const double4_t v,
unsigned long  i 
)
inline

◆ hadd()

double4_t walberla::simd::avx2::hadd ( double4_t  a,
double4_t  b 
)
inline

◆ horizontalSum()

double4_t walberla::simd::avx2::horizontalSum ( double4_t  a)
inline

◆ invSqrt()

template<unsigned int numIter = 3>
double4_t walberla::simd::avx2::invSqrt ( double4_t  y)
inline

◆ load_aligned()

double4_t walberla::simd::avx2::load_aligned ( double const *  mem_addr)
inline

◆ load_unaligned()

double4_t walberla::simd::avx2::load_unaligned ( double const *  mem_addr)
inline

◆ loadNeighbors()

void walberla::simd::avx2::loadNeighbors ( const double *  p,
double4_t r_left,
double4_t r_center,
double4_t r_right 
)
inline

◆ logicalAND()

double4_t walberla::simd::avx2::logicalAND ( double4_t  a,
double4_t  b 
)
inline

◆ logicalOR()

double4_t walberla::simd::avx2::logicalOR ( double4_t  a,
double4_t  b 
)
inline

◆ make_double4() [1/2]

double4_t walberla::simd::avx2::make_double4 ( double  a)
inline

◆ make_double4() [2/2]

double4_t walberla::simd::avx2::make_double4 ( double  d,
double  c,
double  b,
double  a 
)
inline

◆ make_double4_r()

double4_t walberla::simd::avx2::make_double4_r ( double  a,
double  b,
double  c,
double  d 
)
inline

◆ make_zero()

double4_t walberla::simd::avx2::make_zero ( )
inline

◆ movemask()

int walberla::simd::avx2::movemask ( double4_t  m)
inline

◆ rotateLeft()

double4_t walberla::simd::avx2::rotateLeft ( double4_t  a)
inline

◆ rotateRight()

double4_t walberla::simd::avx2::rotateRight ( double4_t  a)
inline

◆ sqrt()

double4_t walberla::simd::avx2::sqrt ( double4_t  a)
inline

◆ store_aligned()

void walberla::simd::avx2::store_aligned ( double *  mem_addr,
double4_t  a 
)
inline

◆ usedInstructionSet()

const char* walberla::simd::avx2::usedInstructionSet ( )
inline