Documentation 6b54b78464
Loading...
Searching...
No Matches

Symbols that need to be defined before including this header: More...

#include <special_vectorization.hpp>

Public Types

enum  : size_t { Align = alignof(Register) }
 
enum  : size_t { Size = sizeof(Register) / sizeof(Scalar) }
 
using Scalar = SCALAR_T
 
using Register = REGISTER_T
 

Public Member Functions

ARRAY_BOILERPLATE FORCEINLINE Array (Register y)
 
FORCEINLINE Array (const Array &other) noexcept
 
FORCEINLINE void bcast (Scalar x)
 
FORCEINLINE void load (const Scalar *ptr)
 
FORCEINLINE void loada (const Scalar *ptr)
 
FORCEINLINE void store (Scalar *ptr) const
 
FORCEINLINE void storea (Scalar *ptr) const
 
FORCEINLINE void stream (Scalar *ptr) const
 
template<class T >
FORCEINLINE void gather (const Scalar *begin, const T &offsets)
 
FORCEINLINE Array & operator= (Scalar x)
 
FORCEINLINE Array & operator= (const Array &other) noexcept
 
FORCEINLINE Array & operator+= (Scalar x)
 
FORCEINLINE Array & operator+= (const Array &other) noexcept
 
FORCEINLINE Array & operator-= (Scalar x)
 
FORCEINLINE Array & operator-= (const Array &other) noexcept
 
FORCEINLINE Array & operator*= (Scalar x)
 
FORCEINLINE Array & operator*= (const Array &other) noexcept
 
FORCEINLINE Array & operator/= (Scalar x)
 
FORCEINLINE Array & operator/= (const Array &other) noexcept
 

Public Attributes

union { 
 
   Register   reg 
 
   Scalar   x_ [Size] 
 
};  
 

Detailed Description

Symbols that need to be defined before including this header:

Parameters
[in]ARRAY_T- The desired specialization of simd::Array.
[in]SCALAR_T- Scalar type.
[in]REGISTER_T- Intrinsic type.
[in]SIZE_TAG- Dummy object associated with the simd size.
[in]ARRAY_BOILERPLATE- Generates the general ctors, access, etc.
Note
On top of that, the intrinsic functions must be wrapped to strip their type / size characteristics, e.g. _mm256_add_pd -> add_p, overload resolution will do the rest. The first four symbols are undefined once we are done using them.

Member Typedef Documentation

◆ Register

using ARRAY_T::Register = REGISTER_T

◆ Scalar

using ARRAY_T::Scalar = SCALAR_T

Member Enumeration Documentation

◆ anonymous enum

anonymous enum : size_t
Enumerator
Align 

◆ anonymous enum

anonymous enum : size_t
Enumerator
Size 

Member Function Documentation

◆ Array() [1/2]

FORCEINLINE ARRAY_T::Array ( const Array &  other)
inlinenoexcept

◆ Array() [2/2]

ARRAY_BOILERPLATE FORCEINLINE ARRAY_T::Array ( Register  y)
inline

◆ bcast()

FORCEINLINE void ARRAY_T::bcast ( Scalar  x)
inline

◆ gather()

template<class T >
FORCEINLINE void ARRAY_T::gather ( const Scalar *  begin,
const T &  offsets 
)
inline

◆ load()

FORCEINLINE void ARRAY_T::load ( const Scalar *  ptr)
inline

◆ loada()

FORCEINLINE void ARRAY_T::loada ( const Scalar *  ptr)
inline

◆ operator*=() [1/2]

FORCEINLINE Array & ARRAY_T::operator*= ( const Array &  other)
inlinenoexcept

◆ operator*=() [2/2]

FORCEINLINE Array & ARRAY_T::operator*= ( Scalar  x)
inline

◆ operator+=() [1/2]

FORCEINLINE Array & ARRAY_T::operator+= ( const Array &  other)
inlinenoexcept

◆ operator+=() [2/2]

FORCEINLINE Array & ARRAY_T::operator+= ( Scalar  x)
inline

◆ operator-=() [1/2]

FORCEINLINE Array & ARRAY_T::operator-= ( const Array &  other)
inlinenoexcept

◆ operator-=() [2/2]

FORCEINLINE Array & ARRAY_T::operator-= ( Scalar  x)
inline

◆ operator/=() [1/2]

FORCEINLINE Array & ARRAY_T::operator/= ( const Array &  other)
inlinenoexcept

◆ operator/=() [2/2]

FORCEINLINE Array & ARRAY_T::operator/= ( Scalar  x)
inline

◆ operator=() [1/2]

FORCEINLINE Array & ARRAY_T::operator= ( const Array &  other)
inlinenoexcept

◆ operator=() [2/2]

FORCEINLINE Array & ARRAY_T::operator= ( Scalar  x)
inline

◆ store()

FORCEINLINE void ARRAY_T::store ( Scalar *  ptr) const
inline

◆ storea()

FORCEINLINE void ARRAY_T::storea ( Scalar *  ptr) const
inline

◆ stream()

FORCEINLINE void ARRAY_T::stream ( Scalar *  ptr) const
inline

Member Data Documentation

◆ [union]

union { ... } ARRAY_T

◆ reg

Register ARRAY_T::reg

◆ x_

Scalar ARRAY_T::x_[Size]

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