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

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

Variable Documentation

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