35 #ifndef _BLAZE_MATH_SIMD_LOADA_H_
36 #define _BLAZE_MATH_SIMD_LOADA_H_
77 template<
typename T >
79 , If_< IsSigned<T>, SIMDint8, SIMDuint8 > >
80 loada(
const T* address ) noexcept
85 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
87 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
106 template<
typename T >
108 , If_< IsSigned<T>, SIMDcint8, SIMDcuint8 > >
109 loada(
const complex<T>* address ) noexcept
115 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
116 #elif BLAZE_SSE2_MODE
117 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
144 template<
typename T >
146 , If_< IsSigned<T>, SIMDint16, SIMDuint16 > >
152 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
153 #elif BLAZE_SSE2_MODE
154 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
173 template<
typename T >
175 , If_< IsSigned<T>, SIMDcint16, SIMDcuint16 > >
176 loada(
const complex<T>* address ) noexcept
182 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
183 #elif BLAZE_SSE2_MODE
184 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
211 template<
typename T >
213 , If_< IsSigned<T>, SIMDint32, SIMDuint32 > >
219 return _mm512_load_epi32( address );
220 #elif BLAZE_AVX2_MODE
221 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
222 #elif BLAZE_SSE2_MODE
223 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
242 template<
typename T >
244 , If_< IsSigned<T>, SIMDcint32, SIMDcuint32 > >
245 loada(
const complex<T>* address ) noexcept
251 return _mm512_load_epi32( address );
252 #elif BLAZE_AVX2_MODE
253 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
254 #elif BLAZE_SSE2_MODE
255 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
282 template<
typename T >
284 , If_< IsSigned<T>, SIMDint64, SIMDuint64 > >
290 return _mm512_load_epi64( address );
291 #elif BLAZE_AVX2_MODE
292 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
293 #elif BLAZE_SSE2_MODE
294 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
313 template<
typename T >
315 , If_< IsSigned<T>, SIMDcint64, SIMDcuint64 > >
316 loada(
const complex<T>* address ) noexcept
322 return _mm512_load_epi64( address );
323 #elif BLAZE_AVX2_MODE
324 return _mm256_load_si256( reinterpret_cast<const __m256i*>( address ) );
325 #elif BLAZE_SSE2_MODE
326 return _mm_load_si128( reinterpret_cast<const __m128i*>( address ) );
328 return If_< IsSigned<T>, SIMDcint64,
SIMDcuint64 >( *address );
358 return _mm512_load_ps( address );
360 return _mm256_load_ps( address );
362 return _mm_load_ps( address );
387 return _mm512_load_ps( reinterpret_cast<const float*>( address ) );
389 return _mm256_load_ps( reinterpret_cast<const float*>( address ) );
391 return _mm_load_ps( reinterpret_cast<const float*>( address ) );
423 return _mm512_load_pd( address );
425 return _mm256_load_pd( address );
426 #elif BLAZE_SSE2_MODE
427 return _mm_load_pd( address );
452 return _mm512_load_pd( reinterpret_cast<const double*>( address ) );
454 return _mm256_load_pd( reinterpret_cast<const double*>( address ) );
455 #elif BLAZE_SSE2_MODE
456 return _mm_load_pd( reinterpret_cast<const double*>( address ) );
Header file for the IsIntegral type trait.
Header file for the And class template.
SIMD type for 64-bit double precision floating point data values.
SIMD type for 64-bit unsigned integral complex 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 If class template.
BLAZE_ALWAYS_INLINE const EnableIf_< And< IsIntegral< T >, HasSize< T, 1UL > >, If_< IsSigned< T >, SIMDint8, SIMDuint8 > > loada(const T *address) noexcept
Loads a vector of 1-byte integral values.
Definition: Loada.h:80
Header file for the EnableIf class template.
Header file for the basic SIMD types.
Header file for run time assertion macros.
Header file for the HasSize type trait.
SIMD type for 32-bit single precision complex values.
Header file for the IsSigned type trait.
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
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