35 #ifndef _BLAZE_MATH_INTRINSICS_LOAD_H_
36 #define _BLAZE_MATH_INTRINSICS_LOAD_H_
91 template<
typename T >
96 typedef sse_int16_t Type;
100 static inline Type
load(
const T* address )
105 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
106 #elif BLAZE_SSE2_MODE
107 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
128 template<
typename T >
133 typedef sse_int32_t Type;
137 static inline Type
load(
const T* address )
142 return _mm512_load_epi32( address );
143 #elif BLAZE_AVX2_MODE
144 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
145 #elif BLAZE_SSE2_MODE
146 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
167 template<
typename T >
172 typedef sse_int64_t Type;
176 static inline Type
load(
const T* address )
181 return _mm512_load_epi64( address );
182 #elif BLAZE_AVX2_MODE
183 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
184 #elif BLAZE_SSE2_MODE
185 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
220 template<
typename T >
221 inline typename EnableIf< IsIntegral<T>, Load<T,sizeof(T)> >::Type::Type
245 return _mm512_load_ps( address );
247 return _mm256_load_ps( address );
249 return _mm_load_ps( address );
273 return _mm512_load_pd( address );
275 return _mm256_load_pd( address );
276 #elif BLAZE_SSE2_MODE
277 return _mm_load_pd( address );
302 return _mm512_load_ps( reinterpret_cast<const float*>( address ) );
304 return _mm256_load_ps( reinterpret_cast<const float*>( address ) );
306 return _mm_load_ps( reinterpret_cast<const float*>( address ) );
331 return _mm512_load_pd( reinterpret_cast<const double*>( address ) );
333 return _mm256_load_pd( reinterpret_cast<const double*>( address ) );
334 #elif BLAZE_SSE2_MODE
335 return _mm_load_pd( reinterpret_cast<const double*>( address ) );
Intrinsic type for 32-bit single precision complex values.
EnableIf< IsIntegral< T >, Load< T, sizeof(T)> >::Type::Type load(const T *address)
Loads a vector of integral values.
Definition: Load.h:222
#define BLAZE_CONSTRAINT_MUST_BE_INTEGRAL_TYPE(T)
Constraint on the data type.In case the given data type T is not an integral data type...
Definition: Integral.h:78
Intrinsic type for 32-bit single precision floating point data values.
Intrinsic type for 64-bit double precision complex values.
Constraint on the data type.
Header file for the EnableIf class template.
Intrinsic type for 64-bit double precision floating point data values.
Header file for the basic intrinsic types.
Header file for run time assertion macros.
bool checkAlignment(const T *address)
Checks the alignment of the given.
Definition: AlignmentCheck.h:68
Header file for the alignment check function.
System settings for the SSE mode.
Header file for the complex data type.
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.In case of an invalid compile time expression, a compilation error is cr...
Definition: StaticAssert.h:143
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.In case of an invalid run time expression, the program execution is terminated. The BLAZE_INTERNAL_ASSERT macro can be disabled by setting the BLAZE_USER_ASSERTION flag to zero or by defining NDEBUG during the compilation.
Definition: Assert.h:101