35 #ifndef _BLAZE_MATH_INTRINSICS_STREAM_H_
36 #define _BLAZE_MATH_INTRINSICS_STREAM_H_
72 template<
typename T >
79 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
81 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
83 *address = value.value;
97 template<
typename T >
104 _mm512_store_epi32( address, value.value );
105 #elif BLAZE_AVX2_MODE
106 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
107 #elif BLAZE_SSE2_MODE
108 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
110 *address = value.value;
124 template<
typename T >
131 _mm512_store_epi64( address, value.value );
132 #elif BLAZE_AVX2_MODE
133 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
134 #elif BLAZE_SSE2_MODE
135 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
137 *address = value.value;
156 _mm512_storenr_ps( address, value.value );
158 _mm256_stream_ps( address, value.value );
160 _mm_stream_ps( address, value.value );
162 *address = value.value;
181 _mm512_storenr_pd( address, value.value );
183 _mm256_stream_pd( address, value.value );
184 #elif BLAZE_SSE2_MODE
185 _mm_stream_pd( address, value.value );
187 *address = value.value;
201 template<
typename T >
209 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
210 #elif BLAZE_SSE2_MODE
211 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
213 *address = value.value;
227 template<
typename T >
235 _mm512_store_epi32( address, value.value );
236 #elif BLAZE_AVX2_MODE
237 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
238 #elif BLAZE_SSE2_MODE
239 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
241 *address = value.value;
255 template<
typename T >
263 _mm512_store_epi64( address, value.value );
264 #elif BLAZE_AVX2_MODE
265 _mm256_stream_si256( reinterpret_cast<__m256i*>( address ), value.value );
266 #elif BLAZE_SSE2_MODE
267 _mm_stream_si128( reinterpret_cast<__m128i*>( address ), value.value );
269 *address = value.value;
289 _mm512_storenr_ps( reinterpret_cast<float*>( address ), value.value );
291 _mm256_stream_ps( reinterpret_cast<float*>( address ), value.value );
293 _mm_stream_ps( reinterpret_cast<float*>( address ), value.value );
295 *address = value.value;
315 _mm512_storenr_pd( reinterpret_cast<double*>( address ), value.value );
317 _mm256_stream_pd( reinterpret_cast<double*>( address ), value.value );
318 #elif BLAZE_SSE2_MODE
319 _mm_stream_pd( reinterpret_cast<double*>( address ), value.value );
321 *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
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 run time assertion macros.
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.
BLAZE_ALWAYS_INLINE bool checkAlignment(const T *address)
Checks the alignment of the given address.
Definition: AlignmentCheck.h:68
Intrinsic type for 32-bit single precision complex values.
Intrinsic type for 16-bit integral complex values.
Header file for the alignment check function.
BLAZE_ALWAYS_INLINE EnableIf< And< IsIntegral< T >, HasSize< T, 2UL > > >::Type stream(T *address, const simd_int16_t &value)
Aligned, non-temporal store of a vector of 2-byte integral values.
Definition: Stream.h:74
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.
#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
Intrinsic type for 32-bit integral data values.