35 #ifndef _BLAZE_MATH_INTRINSICS_LOADU_H_
36 #define _BLAZE_MATH_INTRINSICS_LOADU_H_
91 template<
typename T >
96 typedef sse_int16_t Type;
103 return _mm256_loadu_si256( reinterpret_cast<const __m256i*>( address ) );
104 #elif BLAZE_SSE2_MODE
105 return _mm_loadu_si128( reinterpret_cast<const __m128i*>( address ) );
126 template<
typename T >
131 typedef sse_int32_t Type;
138 __m512i v1 = _mm512_setzero_epi32();
139 v1 = _mm512_loadunpacklo_epi32( v1, address );
140 v1 = _mm512_loadunpackhi_epi32( v1, address+16UL );
142 #elif BLAZE_AVX2_MODE
143 return _mm256_loadu_si256( reinterpret_cast<const __m256i*>( address ) );
144 #elif BLAZE_SSE2_MODE
145 return _mm_loadu_si128( reinterpret_cast<const __m128i*>( address ) );
166 template<
typename T >
171 typedef sse_int64_t Type;
178 __m512i v1 = _mm512_setzero_epi32();
179 v1 = _mm512_loadunpacklo_epi64( v1, address );
180 v1 = _mm512_loadunpackhi_epi64( v1, address+8UL );
182 #elif BLAZE_AVX2_MODE
183 return _mm256_loadu_si256( reinterpret_cast<const __m256i*>( address ) );
184 #elif BLAZE_SSE2_MODE
185 return _mm_loadu_si128( reinterpret_cast<const __m128i*>( address ) );
219 template<
typename T >
241 __m512 v1 = _mm512_setzero_ps();
242 v1 = _mm512_loadunpacklo_ps( v1, address );
243 v1 = _mm512_loadunpackhi_ps( v1, address+16UL );
246 return _mm256_loadu_ps( address );
248 return _mm_loadu_ps( address );
269 __m512d v1 = _mm512_setzero_pd();
270 v1 = _mm512_loadunpacklo_pd( v1, address );
271 v1 = _mm512_loadunpackhi_pd( v1, address+8UL );
274 return _mm256_loadu_pd( address );
275 #elif BLAZE_SSE2_MODE
276 return _mm_loadu_pd( address );
299 __m512 v1 = _mm512_setzero_ps();
300 v1 = _mm512_loadunpacklo_ps( v1, reinterpret_cast<const float*>( address ) );
301 v1 = _mm512_loadunpackhi_ps( v1, reinterpret_cast<const float*>( address+8UL ) );
304 return _mm256_loadu_ps( reinterpret_cast<const float*>( address ) );
306 return _mm_loadu_ps( reinterpret_cast<const float*>( address ) );
329 __m512d v1 = _mm512_setzero_pd();
330 v1 = _mm512_loadunpacklo_pd( v1, reinterpret_cast<const double*>( address ) );
331 v1 = _mm512_loadunpackhi_pd( v1, reinterpret_cast<const double*>( address+4UL ) );
334 return _mm256_loadu_pd( reinterpret_cast<const double*>( address ) );
335 #elif BLAZE_SSE2_MODE
336 return _mm_loadu_pd( reinterpret_cast<const double*>( address ) );
Intrinsic type for 32-bit single precision complex values.
#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
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Intrinsic type for 32-bit single precision floating point data values.
BLAZE_ALWAYS_INLINE sse_cdouble_t loadu(const complex< double > *address)
Loads a vector of 'complex' values.
Definition: Loadu.h:324
Intrinsic type for 64-bit double precision complex values.
BLAZE_ALWAYS_INLINE EnableIf< IsIntegral< T >, Loadu< T, sizeof(T)> >::Type::Type loadu(const T *address)
Loads a vector of integral values.
Definition: Loadu.h:221
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 basic type definitions.
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.