walberla::simd::scalar Namespace Reference

Classes

class  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 *m)
 
double4_t load_unaligned (double const *m)
 
void store_aligned (double *m, 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 a)
 
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>
double4_t invSqrt (double4_t a)
 

Variables

const double TRUE_MASK = -std::numeric_limits<double>::signaling_NaN()
 
const double FALSE_MASK = static_cast<double>( 0x0ul )
 
const uint64_t MSB = 0x8000000000000000ul
 

Function Documentation

◆ blend()

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

◆ blendv()

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

◆ compareEQ()

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

◆ compareGE()

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

◆ compareLE()

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

◆ compareNEQ()

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

◆ exchangeLowerUpperHalf()

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

◆ extract()

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

◆ getBoolComponent() [1/2]

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

◆ getBoolComponent() [2/2]

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

◆ getComponent() [1/2]

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

◆ getComponent() [2/2]

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

◆ hadd()

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

◆ horizontalSum()

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

◆ invSqrt()

template<unsigned int numIter>
double4_t walberla::simd::scalar::invSqrt ( double4_t  a)
inline

◆ load_aligned()

double4_t walberla::simd::scalar::load_aligned ( double const *  m)
inline

◆ load_unaligned()

double4_t walberla::simd::scalar::load_unaligned ( double const *  m)
inline

◆ loadNeighbors()

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

◆ logicalAND()

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

◆ logicalOR()

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

◆ make_double4() [1/2]

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

◆ make_double4() [2/2]

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

◆ make_double4_r()

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

◆ make_zero()

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

◆ movemask()

int walberla::simd::scalar::movemask ( double4_t  a)
inline

◆ rotateLeft()

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

◆ rotateRight()

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

◆ sqrt()

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

◆ store_aligned()

void walberla::simd::scalar::store_aligned ( double *  m,
double4_t  a 
)
inline

◆ usedInstructionSet()

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

Variable Documentation

◆ FALSE_MASK

const double walberla::simd::scalar::FALSE_MASK = static_cast<double>( 0x0ul )

◆ MSB

const uint64_t walberla::simd::scalar::MSB = 0x8000000000000000ul

◆ TRUE_MASK

const double walberla::simd::scalar::TRUE_MASK = -std::numeric_limits<double>::signaling_NaN()