35 #ifndef _BLAZE_MATH_INTRINSICS_STOREU_H_
36 #define _BLAZE_MATH_INTRINSICS_STOREU_H_
73 template<
typename T >
78 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
80 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
82 *address = value.value;
99 template<
typename T >
104 _mm512_packstorelo_epi32( address, value.value );
105 _mm512_packstorehi_epi32( address+16UL, value.value );
106 #elif BLAZE_AVX2_MODE
107 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
108 #elif BLAZE_SSE2_MODE
109 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
111 *address = value.value;
128 template<
typename T >
133 _mm512_packstorelo_epi64( address, value.value );
134 _mm512_packstorehi_epi64( address+8UL, value.value );
135 #elif BLAZE_AVX2_MODE
136 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
137 #elif BLAZE_SSE2_MODE
138 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
140 *address = value.value;
160 _mm512_packstorelo_ps( address , value.value );
161 _mm512_packstorehi_ps( address+16UL, value.value );
163 _mm256_storeu_ps( address, value.value );
165 _mm_storeu_ps( address, value.value );
167 *address = value.value;
187 _mm512_packstorelo_pd( address , value.value );
188 _mm512_packstorehi_pd( address+8UL, value.value );
190 _mm256_storeu_pd( address, value.value );
191 #elif BLAZE_SSE2_MODE
192 _mm_storeu_pd( address, value.value );
194 *address = value.value;
211 template<
typename T >
218 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
219 #elif BLAZE_SSE2_MODE
220 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
222 *address = value.value;
239 template<
typename T >
246 _mm512_packstorelo_epi32( address, value.value );
247 _mm512_packstorehi_epi32( address+16UL, value.value );
248 #elif BLAZE_AVX2_MODE
249 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
250 #elif BLAZE_SSE2_MODE
251 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
253 *address = value.value;
270 template<
typename T >
277 _mm512_packstorelo_epi64( address, value.value );
278 _mm512_packstorehi_epi64( address+8UL, value.value );
279 #elif BLAZE_AVX2_MODE
280 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
281 #elif BLAZE_SSE2_MODE
282 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
284 *address = value.value;
306 _mm512_packstorelo_ps( reinterpret_cast<float*>( address ), value.value );
307 _mm512_packstorehi_ps( reinterpret_cast<float*>( address+8UL ), value.value );
309 _mm256_storeu_ps( reinterpret_cast<float*>( address ), value.value );
311 _mm_storeu_ps( reinterpret_cast<float*>( address ), value.value );
313 *address = value.value;
335 _mm512_packstorelo_pd( reinterpret_cast<double*>( address ), value.value );
336 _mm512_packstorehi_pd( reinterpret_cast<double*>( address+4UL ), value.value );
338 _mm256_storeu_pd( reinterpret_cast<double*>( address ), value.value );
339 #elif BLAZE_SSE2_MODE
340 _mm_storeu_pd( reinterpret_cast<double*>( address ), value.value );
342 *address = value.value;
Intrinsic type for 16-bit integral data values.
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
BLAZE_ALWAYS_INLINE EnableIf< And< IsIntegral< T >, HasSize< T, 2UL > > >::Type storeu(T *address, const simd_int16_t &value)
Unaligned store of a vector of 2-byte integral values.
Definition: Storeu.h:75
Header file for the EnableIf class template.
Header file for the basic intrinsic types.
Intrinsic type for 64-bit integral complex values.
Intrinsic type for 32-bit single precision floating point data values.
Header file for the HasSize type trait.
Intrinsic type for 64-bit integral data values.
Intrinsic type for 32-bit integral complex values.
Intrinsic type for 64-bit double precision complex values.
Intrinsic type for 32-bit single precision complex values.
Intrinsic type for 16-bit integral 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:143
System settings for the inline keywords.
Intrinsic type for 32-bit integral data values.