35#ifndef _BLAZE_MATH_SIMD_LOADA_H_
36#define _BLAZE_MATH_SIMD_LOADA_H_
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 ) );
107template<
typename T >
110 loada(
const complex<T>* address )
noexcept
115#if BLAZE_AVX512BW_MODE
116 return _mm512_load_si512(
reinterpret_cast<const __m512i*
>( address ) );
118 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
120 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
147template<
typename T >
154#if BLAZE_AVX512BW_MODE
155 return _mm512_load_si512(
reinterpret_cast<const __m512i*
>( address ) );
157 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
159 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
178template<
typename T >
181 loada(
const complex<T>* address )
noexcept
186#if BLAZE_AVX512BW_MODE
187 return _mm512_load_si512(
reinterpret_cast<const __m512i*
>( address ) );
189 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
191 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
218template<
typename T >
225#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
226 return _mm512_load_epi32( address );
228 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
230 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
249template<
typename T >
252 loada(
const complex<T>* address )
noexcept
257#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
258 return _mm512_load_epi32( address );
260 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
262 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
289template<
typename T >
296#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
297 return _mm512_load_epi64( address );
299 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
301 return _mm_load_si128(
reinterpret_cast<const __m128i*
>( address ) );
320template<
typename T >
323 loada(
const complex<T>* address )
noexcept
328#if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE
329 return _mm512_load_epi64( address );
331 return _mm256_load_si256(
reinterpret_cast<const __m256i*
>( address ) );
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 );
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 ) );
463 return _mm_load_pd(
reinterpret_cast<const double*
>( address ) );
Header file for the alignment check function.
Header file for run time assertion macros.
Header file for the basic SIMD types.
Header file for the complex data type.
Header file for the EnableIf class template.
Header file for the HasSize type trait.
Header file for the If class template.
Header file for the IsIntegral type trait.
Header file for the IsSigned type trait.
SIMD type for 64-bit double precision complex values.
SIMD type for 32-bit single precision complex values.
SIMD type for 16-bit signed integral complex values.
SIMD type for 32-bit signed integral complex values.
SIMD type for 64-bit signed integral complex values.
SIMD type for 8-bit signed integral complex values.
SIMD type for 16-bit unsigned integral complex values.
SIMD type for 32-bit unsigned integral complex values.
SIMD type for 64-bit unsigned integral complex values.
SIMD type for 8-bit unsigned integral complex values.
SIMD type for 64-bit double precision floating point data values.
SIMD type for 32-bit single precision floating point data values.
SIMD type for 16-bit signed integral data values.
SIMD type for 32-bit signed integral data values.
SIMD type for 64-bit integral data values.
SIMD type for 8-bit signed integral data values.
SIMD type for 16-bit unsigned integral data values.
SIMD type for 32-bit unsigned integral data values.
SIMD type for 64-bit unsigned integral data values.
SIMD type for 8-bit unsigned integral data values.
#define BLAZE_INTERNAL_ASSERT(expr, msg)
Run time assertion macro for internal checks.
Definition: Assert.h:101
BLAZE_ALWAYS_INLINE const SIMDcdouble loada(const complex< double > *address) noexcept
Loads a vector of 'complex<double>' values.
Definition: Loada.h:453
#define BLAZE_STATIC_ASSERT(expr)
Compile time assertion macro.
Definition: StaticAssert.h:112
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
typename If< Condition >::template Type< T1, T2 > If_t
Auxiliary alias template for the If class template.
Definition: If.h:108
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
System settings for the inline keywords.
System settings for the SSE mode.