YAKL
Classes | Namespaces | Macros | Functions
YAKL_simd.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  yakl::simd::Pack< T, N >
 The Pack class performs encourages vectorization by performing operations Packs of known size. More...
 
struct  yakl::simd::PackIterConfig< N, SIMD >
 Informs iterate_over_pack of the Pack size and whether to apply a SIMD pragma. More...
 

Namespaces

 yakl
 
 yakl::simd
 Holds YAKL's Pack class and operators to encourage SIMD vectorization.
 

Macros

#define GET_SIMD_PRAGMA()
 

Functions

template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::abs (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::acos (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::asin (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::atan (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::ceil (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::cos (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::exp (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::floor (Pack< T, N > a)
 
template<class F , unsigned int N, bool SIMD = false>
YAKL_INLINE void yakl::simd::iterate_over_pack (F const &f, PackIterConfig< N, SIMD > config)
 Perform a loop over the number of elements specified by the PackIterConfig object. More...
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::log (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::log10 (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::operator* (Pack< T, N > a, Pack< T, N > b)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator* (Pack< T, N > lhs, TLOC val)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator* (TLOC val, Pack< T, N > rhs)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::operator+ (Pack< T, N > a, Pack< T, N > b)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator+ (Pack< T, N > lhs, TLOC val)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator+ (TLOC val, Pack< T, N > rhs)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::operator- (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::operator- (Pack< T, N > a, Pack< T, N > b)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator- (Pack< T, N > lhs, TLOC val)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator- (TLOC val, Pack< T, N > rhs)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::operator/ (Pack< T, N > a, Pack< T, N > b)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator/ (Pack< T, N > lhs, TLOC val)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::operator/ (TLOC val, Pack< T, N > rhs)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::pow (Pack< T, N > a, Pack< T, N > b)
 
template<class T , unsigned int N, class TLOC , typename std::enable_if< std::is_arithmetic< TLOC >::value, bool >::type = false>
YAKL_INLINE Pack< T, N > yakl::simd::pow (Pack< T, N > lhs, TLOC val)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::round (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::sin (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::sqrt (Pack< T, N > a)
 
template<class T , unsigned int N>
YAKL_INLINE Pack< T, N > yakl::simd::tan (Pack< T, N > a)
 

Detailed Description

YAKL Pack routines to encourage SIMD vectorization

Macro Definition Documentation

◆ GET_SIMD_PRAGMA

#define GET_SIMD_PRAGMA ( )