35 #ifndef _BLAZE_MATH_SIMD_LOADA_H_ 36 #define _BLAZE_MATH_SIMD_LOADA_H_ 76 template<
typename T >
78 , If_t< IsSigned_v<T>, SIMDint8, SIMDuint8 > >
79 loada(
const T* address ) noexcept
83 #if BLAZE_AVX512BW_MODE 84 return _mm512_load_si512( reinterpret_cast<const __m512i*>( address ) );
86 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
88 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
107 template<
typename T >
109 , If_t< IsSigned_v<T>, SIMDcint8, SIMDcuint8 > >
110 loada(
const complex<T>* address ) noexcept
115 #if BLAZE_AVX512BW_MODE 116 return _mm512_load_si512( reinterpret_cast<const __m512i*>( address ) );
117 #elif BLAZE_AVX2_MODE 118 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
119 #elif BLAZE_SSE2_MODE 120 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
147 template<
typename T >
149 , If_t< IsSigned_v<T>, SIMDint16, SIMDuint16 > >
154 #if BLAZE_AVX512BW_MODE 155 return _mm512_load_si512( reinterpret_cast<const __m512i*>( address ) );
156 #elif BLAZE_AVX2_MODE 157 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
158 #elif BLAZE_SSE2_MODE 159 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
178 template<
typename T >
180 , If_t< IsSigned_v<T>, SIMDcint16, SIMDcuint16 > >
181 loada(
const complex<T>* address ) noexcept
186 #if BLAZE_AVX512BW_MODE 187 return _mm512_load_si512( reinterpret_cast<const __m512i*>( address ) );
188 #elif BLAZE_AVX2_MODE 189 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
190 #elif BLAZE_SSE2_MODE 191 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
218 template<
typename T >
220 , If_t< IsSigned_v<T>, SIMDint32, SIMDuint32 > >
225 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 226 return _mm512_load_epi32( address );
227 #elif BLAZE_AVX2_MODE 228 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
229 #elif BLAZE_SSE2_MODE 230 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
249 template<
typename T >
251 , If_t< IsSigned_v<T>, SIMDcint32, SIMDcuint32 > >
252 loada(
const complex<T>* address ) noexcept
257 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 258 return _mm512_load_epi32( address );
259 #elif BLAZE_AVX2_MODE 260 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
261 #elif BLAZE_SSE2_MODE 262 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
289 template<
typename T >
291 , If_t< IsSigned_v<T>, SIMDint64, SIMDuint64 > >
296 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 297 return _mm512_load_epi64( address );
298 #elif BLAZE_AVX2_MODE 299 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
300 #elif BLAZE_SSE2_MODE 301 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
320 template<
typename T >
322 , If_t< IsSigned_v<T>, SIMDcint64, SIMDcuint64 > >
323 loada(
const complex<T>* address ) noexcept
328 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 329 return _mm512_load_epi64( address );
330 #elif BLAZE_AVX2_MODE 331 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
332 #elif BLAZE_SSE2_MODE 333 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
364 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 365 return _mm512_load_ps( address );
367 return _mm256_load_ps( address );
369 return _mm_load_ps( address );
393 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 394 return _mm512_load_ps( reinterpret_cast<const float*>( address ) );
396 return _mm256_load_ps( reinterpret_cast<const float*>( address ) );
398 return _mm_load_ps( reinterpret_cast<const float*>( address ) );
429 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 430 return _mm512_load_pd( address );
432 return _mm256_load_pd( address );
433 #elif BLAZE_SSE2_MODE 434 return _mm_load_pd( address );
458 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 459 return _mm512_load_pd( reinterpret_cast<const double*>( address ) );
461 return _mm256_load_pd( reinterpret_cast<const double*>( address ) );
462 #elif BLAZE_SSE2_MODE 463 return _mm_load_pd( reinterpret_cast<const double*>( address ) );
SIMD type for 32-bit unsigned integral complex values.
typename If< Condition, T1, T2 >::Type If_t
Auxiliary alias declaration for the If class template.The If_t alias declaration provides a convenien...
Definition: If.h:109
SIMD type for 16-bit unsigned integral complex values.
SIMD type for 32-bit signed integral complex values.
Header file for the IsIntegral type trait.
SIMD type for 64-bit double precision floating point data values.
SIMD type for 64-bit unsigned integral complex values.
SIMD type for 16-bit signed integral complex values.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the If class template.
Header file for the EnableIf class template.
Header file for the basic SIMD types.
Header file for run time assertion macros.
SIMD type for 8-bit signed integral complex values.
Header file for the HasSize type trait.
SIMD type for 32-bit single precision complex values.
SIMD type for 64-bit signed integral complex values.
Header file for the IsSigned type trait.
BLAZE_ALWAYS_INLINE const EnableIf_t< IsIntegral_v< T > &&HasSize_v< T, 1UL >, If_t< IsSigned_v< T >, SIMDint8, SIMDuint8 > > loada(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loada.h:79
SIMD type for 32-bit single precision floating point data values.
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
SIMD type for 8-bit unsigned integral complex values.
Header file for the alignment check function.
SIMD type for 64-bit double precision complex values.
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:112
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