35 #ifndef _BLAZE_MATH_INTRINSICS_STOREU_H_
36 #define _BLAZE_MATH_INTRINSICS_STOREU_H_
75 template<
typename T >
80 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
82 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
84 *address = value.value;
101 template<
typename T >
106 _mm512_packstorelo_epi32( address, value.value );
107 _mm512_packstorehi_epi32( address+16UL, value.value );
108 #elif BLAZE_AVX2_MODE
109 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
110 #elif BLAZE_SSE2_MODE
111 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
113 *address = value.value;
130 template<
typename T >
135 _mm512_packstorelo_epi64( address, value.value );
136 _mm512_packstorehi_epi64( address+8UL, value.value );
137 #elif BLAZE_AVX2_MODE
138 _mm256_storeu_si256( reinterpret_cast<__m256i*>( address ), value.value );
139 #elif BLAZE_SSE2_MODE
140 _mm_storeu_si128( reinterpret_cast<__m128i*>( address ), value.value );
142 *address = value.value;
162 _mm512_packstorelo_ps( address , value.value );
163 _mm512_packstorehi_ps( address+16UL, value.value );
165 _mm256_storeu_ps( address, value.value );
167 _mm_storeu_ps( address, value.value );
169 *address = value.value;
189 _mm512_packstorelo_pd( address , value.value );
190 _mm512_packstorehi_pd( address+8UL, value.value );
192 _mm256_storeu_pd( address, value.value );
193 #elif BLAZE_SSE2_MODE
194 _mm_storeu_pd( address, value.value );
196 *address = value.value;
218 _mm512_packstorelo_ps( reinterpret_cast<float*>( address ), value.value );
219 _mm512_packstorehi_ps( reinterpret_cast<float*>( address+8UL ), value.value );
221 _mm256_storeu_ps( reinterpret_cast<float*>( address ), value.value );
223 _mm_storeu_ps( reinterpret_cast<float*>( address ), value.value );
225 *address = value.value;
247 _mm512_packstorelo_pd( reinterpret_cast<double*>( address ), value.value );
248 _mm512_packstorehi_pd( reinterpret_cast<double*>( address+4UL ), value.value );
250 _mm256_storeu_pd( reinterpret_cast<double*>( address ), value.value );
251 #elif BLAZE_SSE2_MODE
252 _mm_storeu_pd( reinterpret_cast<double*>( address ), value.value );
254 *address = value.value;
Intrinsic type for 32-bit single precision complex values.
Header file for basic type definitions.
Header file for the IsIntegral type trait.
Header file for the And class template.
Intrinsic type for 64-bit integral 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
Intrinsic type for 16-bit integral data values.
Intrinsic type for 32-bit single precision floating point data values.
Intrinsic type for 64-bit double precision complex values.
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 the HasSize type trait.
BLAZE_ALWAYS_INLINE EnableIf< And< IsIntegral< T >, HasSize< T, 2UL > > >::Type storeu(T *address, const sse_int16_t &value)
Unaligned store of a vector of 2-byte integral values.
Definition: Storeu.h:77
System settings for the SSE mode.
Header file for the complex data type.
Intrinsic type for 32-bit integral data values.
#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.