35 #ifndef _BLAZE_MATH_INTRINSICS_LOADA_H_
36 #define _BLAZE_MATH_INTRINSICS_LOADA_H_
75 template<
typename T >
76 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,2UL> >, simd_int16_t >::Type
82 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
84 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
103 template<
typename T >
104 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,4UL> >, simd_int32_t >::Type
110 return _mm512_load_epi32( address );
111 #elif BLAZE_AVX2_MODE
112 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
113 #elif BLAZE_SSE2_MODE
114 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
133 template<
typename T >
134 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,8UL> >, simd_int64_t >::Type
140 return _mm512_load_epi64( address );
141 #elif BLAZE_AVX2_MODE
142 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
143 #elif BLAZE_SSE2_MODE
144 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
168 return _mm512_load_ps( address );
170 return _mm256_load_ps( address );
172 return _mm_load_ps( address );
196 return _mm512_load_pd( address );
198 return _mm256_load_pd( address );
199 #elif BLAZE_SSE2_MODE
200 return _mm_load_pd( address );
219 template<
typename T >
220 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,2UL> >, simd_cint16_t >::Type
227 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
228 #elif BLAZE_SSE2_MODE
229 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
248 template<
typename T >
249 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,4UL> >, simd_cint32_t >::Type
256 return _mm512_load_epi32( address );
257 #elif BLAZE_AVX2_MODE
258 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
259 #elif BLAZE_SSE2_MODE
260 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
279 template<
typename T >
280 BLAZE_ALWAYS_INLINE typename EnableIf< And< IsIntegral<T>, HasSize<T,8UL> >, simd_cint64_t >::Type
287 return _mm512_load_epi64( address );
288 #elif BLAZE_AVX2_MODE
289 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
290 #elif BLAZE_SSE2_MODE
291 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
316 return _mm512_load_ps( reinterpret_cast<const float*>( address ) );
318 return _mm256_load_ps( reinterpret_cast<const float*>( address ) );
320 return _mm_load_ps( reinterpret_cast<const float*>( address ) );
345 return _mm512_load_pd( reinterpret_cast<const double*>( address ) );
347 return _mm256_load_pd( reinterpret_cast<const double*>( address ) );
348 #elif BLAZE_SSE2_MODE
349 return _mm_load_pd( reinterpret_cast<const double*>( address ) );
Header file for the IsIntegral type trait.
Header file for the And class template.
Intrinsic type for 64-bit double precision floating point data values.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:57
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the EnableIf class template.
Header file for the basic intrinsic types.
BLAZE_ALWAYS_INLINE EnableIf< And< IsIntegral< T >, HasSize< T, 2UL > >, simd_int16_t >::Type loada(const T *address)
Loads a vector of 2-byte integral values.
Definition: Loada.h:77
Intrinsic type for 32-bit single precision floating point data values.
Header file for run time assertion macros.
Header file for the HasSize type trait.
Intrinsic type for 64-bit double precision complex values.
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
Intrinsic type for 32-bit single precision complex values.
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
System settings for the inline keywords.
#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