35 #ifndef _BLAZE_MATH_SIMD_SET_H_ 36 #define _BLAZE_MATH_SIMD_SET_H_ 73 template<
typename T >
75 , If_< IsSigned<T>, SIMDint8, SIMDuint8 > >
76 set( T value ) noexcept
78 #if BLAZE_AVX512BW_MODE 79 return _mm512_set1_epi8( value );
81 return _mm256_set1_epi8( value );
83 return _mm_set1_epi8( value );
98 template<
typename T >
101 set( complex<T> value ) noexcept
103 #if BLAZE_AVX512BW_MODE 104 __m512i dst( _mm512_maskz_set1_epi8( 0XAAAAAAAA, value.imag() ) );
105 dst = _mm512_maskz_set1_epi8( 0x55555555, value.real() );
107 #elif BLAZE_AVX2_MODE 108 return _mm256_set_epi8( value.imag(), value.real(), value.imag(), value.real(),
109 value.imag(), value.real(), value.imag(), value.real(),
110 value.imag(), value.real(), value.imag(), value.real(),
111 value.imag(), value.real(), value.imag(), value.real(),
112 value.imag(), value.real(), value.imag(), value.real(),
113 value.imag(), value.real(), value.imag(), value.real(),
114 value.imag(), value.real(), value.imag(), value.real(),
115 value.imag(), value.real(), value.imag(), value.real() );
116 #elif BLAZE_SSE2_MODE 117 return _mm_set_epi8( value.imag(), value.real(), value.imag(), value.real(),
118 value.imag(), value.real(), value.imag(), value.real(),
119 value.imag(), value.real(), value.imag(), value.real(),
120 value.imag(), value.real(), value.imag(), value.real() );
144 template<
typename T >
147 set( T value ) noexcept
149 #if BLAZE_AVX512BW_MODE 150 return _mm512_set1_epi16( value );
151 #elif BLAZE_AVX2_MODE 152 return _mm256_set1_epi16( value );
153 #elif BLAZE_SSE2_MODE 154 return _mm_set1_epi16( value );
169 template<
typename T >
172 set( complex<T> value ) noexcept
174 #if BLAZE_AVX512BW_MODE 175 __m512i dst( _mm512_maskz_set1_epi16( 0XAAAA, value.imag() ) );
176 dst = _mm512_maskz_set1_epi16( 0x5555, value.real() );
178 #elif BLAZE_AVX2_MODE 179 return _mm256_set_epi16( value.imag(), value.real(), value.imag(), value.real(),
180 value.imag(), value.real(), value.imag(), value.real(),
181 value.imag(), value.real(), value.imag(), value.real(),
182 value.imag(), value.real(), value.imag(), value.real() );
183 #elif BLAZE_SSE2_MODE 184 return _mm_set_epi16( value.imag(), value.real(), value.imag(), value.real(),
185 value.imag(), value.real(), value.imag(), value.real() );
209 template<
typename T >
212 set( T value ) noexcept
214 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 215 return _mm512_set1_epi32( value );
216 #elif BLAZE_AVX2_MODE 217 return _mm256_set1_epi32( value );
218 #elif BLAZE_SSE2_MODE 219 return _mm_set1_epi32( value );
234 template<
typename T >
237 set( complex<T> value ) noexcept
239 #if BLAZE_AVX512F_MODE 240 __m512i dst( _mm512_maskz_set1_epi32( 0xAA, value.imag() ) );
241 dst = _mm512_maskz_set1_epi32( 0x55, value.real() );
244 return _mm512_set_epi32( value.imag(), value.real(), value.imag(), value.real(),
245 value.imag(), value.real(), value.imag(), value.real(),
246 value.imag(), value.real(), value.imag(), value.real(),
247 value.imag(), value.real(), value.imag(), value.real() );
248 #elif BLAZE_AVX2_MODE 249 return _mm256_set_epi32( value.imag(), value.real(), value.imag(), value.real(),
250 value.imag(), value.real(), value.imag(), value.real() );
251 #elif BLAZE_SSE2_MODE 252 return _mm_set_epi32( value.imag(), value.real(), value.imag(), value.real() );
276 template<
typename T >
279 set( T value ) noexcept
281 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 282 return _mm512_set1_epi64( value );
283 #elif BLAZE_AVX2_MODE 284 return _mm256_set1_epi64x( value );
285 #elif BLAZE_SSE2_MODE 286 return _mm_set1_epi64( value );
301 template<
typename T >
304 set( complex<T> value ) noexcept
306 #if BLAZE_AVX512F_MODE 307 __m512i dst( _mm512_maskz_set1_epi64( 0xA, value.imag() ) );
308 dst = _mm512_maskz_set1_epi32( 0x5, value.real() );
311 return _mm512_set_epi64( value.imag(), value.real(), value.imag(), value.real(),
312 value.imag(), value.real(), value.imag(), value.real() );
313 #elif BLAZE_AVX2_MODE 314 return _mm256_set_epi64( value.imag(), value.real(), value.imag(), value.real() );
315 #elif BLAZE_SSE2_MODE 316 return _mm_set_epi64( value.imag(), value.real() );
342 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 343 return _mm512_set1_ps( value );
345 return _mm256_set1_ps( value );
347 return _mm_set1_ps( value );
364 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 365 return _mm512_set_ps( value.imag(), value.real(), value.imag(), value.real(),
366 value.imag(), value.real(), value.imag(), value.real(),
367 value.imag(), value.real(), value.imag(), value.real(),
368 value.imag(), value.real(), value.imag(), value.real() );
370 return _mm256_set_ps( value.imag(), value.real(), value.imag(), value.real(),
371 value.imag(), value.real(), value.imag(), value.real() );
373 return _mm_set_ps( value.imag(), value.real(), value.imag(), value.real() );
399 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 400 return _mm512_set1_pd( value );
402 return _mm256_set1_pd( value );
403 #elif BLAZE_SSE2_MODE 404 return _mm_set1_pd( value );
421 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 422 return _mm512_set_pd( value.imag(), value.real(), value.imag(), value.real(),
423 value.imag(), value.real(), value.imag(), value.real() );
425 return _mm256_set_pd( value.imag(), value.real(), value.imag(), value.real() );
426 #elif BLAZE_SSE2_MODE 427 return _mm_set_pd( value.imag(), value.real() );
SIMD type for 16-bit signed integral data values.
SIMD type for 32-bit unsigned integral complex values.
Header file for basic type definitions.
SIMD type for 16-bit unsigned integral complex values.
SIMD type for 32-bit signed integral complex values.
Header file for the IsIntegral type trait.
Header file for the And class template.
SIMD type for 32-bit unsigned integral data values.
SIMD type for 64-bit double precision floating point data values.
SIMD type for 64-bit unsigned integral complex values.
SIMD type for 16-bit signed integral complex values.
Namespace of the Blaze C++ math library.
Definition: Blaze.h:58
#define BLAZE_ALWAYS_INLINE
Platform dependent setup of an enforced inline keyword.
Definition: Inline.h:85
Header file for the If class template.
SIMD type for 16-bit unsigned integral data values.
SIMD type for 32-bit signed integral data values.
Constraint on the data type.
Header file for the EnableIf class template.
Header file for the basic SIMD types.
Header file for run time assertion macros.
SIMD type for 8-bit signed integral complex values.
Header file for the HasSize type trait.
SIMD type for 32-bit single precision complex values.
SIMD type for 64-bit signed integral complex values.
Header file for the IsSigned type trait.
SIMD type for 32-bit single precision floating point data values.
SIMD type for 64-bit unsigned integral data values.
SIMD type for 64-bit integral data values.
SIMD type for 8-bit unsigned integral complex values.
SIMD type for 64-bit double precision complex values.
System settings for the SSE mode.
#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:112
System settings for the inline keywords.