LIBINT  2.1.0-stable
Public Types | Public Member Functions | Public Attributes | List of all members
libint2::simd::VectorAVXDouble Struct Reference

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...

#include <vector_x86.h>

Public Types

typedef double T
 

Public Member Functions

 VectorAVXDouble ()
 creates a vector of default-initialized values.
 
 VectorAVXDouble (T a)
 Initializes all elements to the same value. More...
 
 VectorAVXDouble (T(&a)[4])
 creates a vector of values initialized by an ordinary static-sized array
 
 VectorAVXDouble (T a0, T a1, T a2, T a3)
 creates a vector of values initialized by an ordinary static-sized array
 
 VectorAVXDouble (__m256d a)
 converts a 256-bit AVX double vector type to VectorAVXDouble
 
VectorAVXDoubleoperator= (T a)
 
VectorAVXDoubleoperator+= (VectorAVXDouble a)
 
VectorAVXDoubleoperator-= (VectorAVXDouble a)
 
VectorAVXDouble operator- () const
 
 operator double () const
 
 operator __m256d () const
 implicit conversion to AVX 256-bit "register"
 
void load (T const *a)
 loads a to this
 
void load_aligned (T const *a)
 loads a to this More...
 
void convert (T *a) const
 writes this to a
 
void convert_aligned (T *a) const
 writes this to a More...
 

Public Attributes

__m256d d
 

Detailed Description

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).

Constructor & Destructor Documentation

libint2::simd::VectorAVXDouble::VectorAVXDouble ( a)
inline

Initializes all elements to the same value.

Parameters
athe value to which all elements will be set

Member Function Documentation

void libint2::simd::VectorAVXDouble::convert_aligned ( T *  a) const
inline

writes this to a

Note
a must be aligned to 32 bytes

References libint2::fma_minus(), libint2::fma_plus(), and libint2::operator*().

void libint2::simd::VectorAVXDouble::load_aligned ( T const *  a)
inline

loads a to this

See also
load()
Note
a must be aligned to 32 bytes

Referenced by libint2::FmEval_Chebyshev3< Real >::eval(), and libint2::FmEval_Chebyshev7< Real >::eval().


The documentation for this struct was generated from the following file: