Contains data types that support SIMD-style computation on vectors of numbers.
More...
|
struct | Vector |
| Vector<N,T> is used by vectorized Libint library as fixed-length vectors amenable for SIMD-style parallelism Vectorization via this class should be the last-resort measure if no specialized implementation is available. More...
|
|
struct | VectorAVXDouble |
| SIMD vector of 4 double-precision floating-point real numbers, operations on which use AVX instructions available on recent x86 hardware from Intel (starting with Sandy Bridge processors released in 2011) and AMD (starting with Bulldozer released in 2011). More...
|
|
struct | VectorFP2Double |
| SIMD vector of 2 double-precision floating-point real numbers, operations on which use FP2 (Double Hummer) instructions available on some PowerPC hardware, e.g. More...
|
|
struct | VectorQPXDouble |
| SIMD vector of 4 double-precision floating-point real numbers, operations on which use QPX instructions available on some recent PowerPC hardware, e.g. More...
|
|
struct | VectorSSEDouble |
| SIMD vector of 2 double-precision floating-point real numbers, operations on which use SSE2 instructions available on all recent x86 hardware. More...
|
|
struct | VectorSSEFloat |
| SIMD vector of 4 single-precision floating-point real numbers, operations on which use SSE instructions available on all recent x86 hardware. More...
|
|
|
|
template<size_t N, typename T > |
Vector< N, T > | operator* (T a, Vector< N, T > b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator* (Vector< N, T > a, T b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator* (int a, Vector< N, T > b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator* (Vector< N, T > a, int b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator* (Vector< N, T > a, Vector< N, T > b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator+ (Vector< N, T > a, Vector< N, T > b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator- (Vector< N, T > a, Vector< N, T > b) |
|
template<size_t N, typename T > |
Vector< N, T > | operator/ (Vector< N, T > a, Vector< N, T > b) |
|
|
VectorQPXDouble | operator* (double a, VectorQPXDouble b) |
|
VectorQPXDouble | operator* (VectorQPXDouble a, double b) |
|
VectorQPXDouble | operator* (int a, VectorQPXDouble b) |
|
VectorQPXDouble | operator* (VectorQPXDouble a, int b) |
|
VectorQPXDouble | operator* (VectorQPXDouble a, VectorQPXDouble b) |
|
VectorQPXDouble | operator+ (VectorQPXDouble a, VectorQPXDouble b) |
|
VectorQPXDouble | operator- (VectorQPXDouble a, VectorQPXDouble b) |
|
VectorQPXDouble | operator/ (VectorQPXDouble a, VectorQPXDouble b) |
|
VectorQPXDouble | fma_plus (VectorQPXDouble a, VectorQPXDouble b, VectorQPXDouble c) |
|
VectorQPXDouble | fma_minus (VectorQPXDouble a, VectorQPXDouble b, VectorQPXDouble c) |
|
|
VectorFP2Double | operator* (double a, VectorFP2Double b) |
|
VectorFP2Double | operator* (VectorFP2Double a, double b) |
|
VectorFP2Double | operator* (int a, VectorFP2Double b) |
|
VectorFP2Double | operator* (VectorFP2Double a, int b) |
|
VectorFP2Double | operator* (VectorFP2Double a, VectorFP2Double b) |
|
VectorFP2Double | operator+ (VectorFP2Double a, VectorFP2Double b) |
|
VectorFP2Double | operator- (VectorFP2Double a, VectorFP2Double b) |
|
VectorFP2Double | fma_plus (VectorFP2Double a, VectorFP2Double b, VectorFP2Double c) |
|
VectorFP2Double | fma_minus (VectorFP2Double a, VectorFP2Double b, VectorFP2Double c) |
|
|
VectorSSEDouble | operator* (double a, VectorSSEDouble b) |
|
VectorSSEDouble | operator* (VectorSSEDouble a, double b) |
|
VectorSSEDouble | operator* (int a, VectorSSEDouble b) |
|
VectorSSEDouble | operator* (VectorSSEDouble a, int b) |
|
VectorSSEDouble | operator* (VectorSSEDouble a, VectorSSEDouble b) |
|
VectorSSEDouble | operator+ (VectorSSEDouble a, VectorSSEDouble b) |
|
VectorSSEDouble | operator- (VectorSSEDouble a, VectorSSEDouble b) |
|
VectorSSEDouble | operator/ (VectorSSEDouble a, VectorSSEDouble b) |
|
VectorSSEDouble | fma_plus (VectorSSEDouble a, VectorSSEDouble b, VectorSSEDouble c) |
|
VectorSSEDouble | fma_minus (VectorSSEDouble a, VectorSSEDouble b, VectorSSEDouble c) |
|
double | horizontal_add (VectorSSEDouble const &a) |
| Horizontal add. More...
|
|
VectorSSEDouble | horizontal_add (VectorSSEDouble const &a, VectorSSEDouble const &b) |
| Horizontal add of a pair of vectors. More...
|
|
|
VectorSSEDouble | exp (VectorSSEDouble a) |
|
VectorSSEDouble | sqrt (VectorSSEDouble a) |
|
VectorSSEDouble | erf (VectorSSEDouble a) |
|
VectorSSEDouble | erfc (VectorSSEDouble a) |
|
|
VectorSSEFloat | operator* (float a, VectorSSEFloat b) |
|
VectorSSEFloat | operator* (VectorSSEFloat a, float b) |
|
VectorSSEFloat | operator* (double a, VectorSSEFloat b) |
|
VectorSSEFloat | operator* (VectorSSEFloat a, double b) |
|
VectorSSEFloat | operator* (int a, VectorSSEFloat b) |
|
VectorSSEFloat | operator* (VectorSSEFloat a, int b) |
|
VectorSSEFloat | operator* (VectorSSEFloat a, VectorSSEFloat b) |
|
VectorSSEFloat | operator+ (VectorSSEFloat a, VectorSSEFloat b) |
|
VectorSSEFloat | operator- (VectorSSEFloat a, VectorSSEFloat b) |
|
VectorSSEFloat | operator/ (VectorSSEFloat a, VectorSSEFloat b) |
|
VectorSSEFloat | fma_plus (VectorSSEFloat a, VectorSSEFloat b, VectorSSEFloat c) |
|
VectorSSEFloat | fma_minus (VectorSSEFloat a, VectorSSEFloat b, VectorSSEFloat c) |
|
|
VectorSSEFloat | exp (VectorSSEFloat a) |
|
VectorSSEFloat | sqrt (VectorSSEFloat a) |
|
VectorSSEFloat | erf (VectorSSEFloat a) |
|
VectorSSEFloat | erfc (VectorSSEFloat a) |
|
|
VectorAVXDouble | operator* (double a, VectorAVXDouble b) |
|
VectorAVXDouble | operator* (VectorAVXDouble a, double b) |
|
VectorAVXDouble | operator* (int a, VectorAVXDouble b) |
|
VectorAVXDouble | operator* (VectorAVXDouble a, int b) |
|
VectorAVXDouble | operator* (VectorAVXDouble a, VectorAVXDouble b) |
|
VectorAVXDouble | operator+ (VectorAVXDouble a, VectorAVXDouble b) |
|
VectorAVXDouble | operator+ (int a, VectorAVXDouble b) |
|
VectorAVXDouble | operator+ (VectorAVXDouble a, int b) |
|
VectorAVXDouble | operator- (VectorAVXDouble a, VectorAVXDouble b) |
|
VectorAVXDouble | operator/ (VectorAVXDouble a, VectorAVXDouble b) |
|
VectorAVXDouble | fma_plus (VectorAVXDouble a, VectorAVXDouble b, VectorAVXDouble c) |
|
VectorAVXDouble | fma_minus (VectorAVXDouble a, VectorAVXDouble b, VectorAVXDouble c) |
|
double | horizontal_add (VectorAVXDouble const &a) |
| Horizontal add. More...
|
|
VectorSSEDouble | horizontal_add (VectorAVXDouble const &a, VectorAVXDouble const &b) |
| Horizontal add of a pair of vectors. More...
|
|
VectorAVXDouble | horizontal_add (VectorAVXDouble const &a, VectorAVXDouble const &b, VectorAVXDouble const &c, VectorAVXDouble const &d) |
| Horizontal add of a set of 4 vectors. More...
|
|
|
VectorAVXDouble | exp (VectorAVXDouble a) |
|
VectorAVXDouble | sqrt (VectorAVXDouble a) |
|
VectorAVXDouble | erf (VectorAVXDouble a) |
|
VectorAVXDouble | erfc (VectorAVXDouble a) |
|
Contains data types that support SIMD-style computation on vectors of numbers.