35 #ifndef _BLAZE_MATH_SIMD_SET_H_ 36 #define _BLAZE_MATH_SIMD_SET_H_ 72 template<
typename T >
74 , If_t< IsSigned_v<T>, SIMDint8, SIMDuint8 > >
75 set( T value ) noexcept
77 #if BLAZE_AVX512BW_MODE 78 return _mm512_set1_epi8( value );
80 return _mm256_set1_epi8( value );
82 return _mm_set1_epi8( value );
97 template<
typename T >
99 , If_t< IsSigned_v<T>, SIMDcint8, SIMDcuint8 > >
100 set( complex<T> value ) noexcept
102 #if BLAZE_AVX512BW_MODE 103 __m512i dst( _mm512_maskz_set1_epi8( 0XAAAAAAAA, value.imag() ) );
104 dst = _mm512_maskz_set1_epi8( 0x55555555, value.real() );
106 #elif BLAZE_AVX2_MODE 107 return _mm256_set_epi8( value.imag(), value.real(), value.imag(), value.real(),
108 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 #elif BLAZE_SSE2_MODE 116 return _mm_set_epi8( value.imag(), value.real(), value.imag(), value.real(),
117 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() );
143 template<
typename T >
145 , If_t< IsSigned_v<T>, SIMDint16, SIMDuint16 > >
146 set( T value ) noexcept
148 #if BLAZE_AVX512BW_MODE 149 return _mm512_set1_epi16( value );
150 #elif BLAZE_AVX2_MODE 151 return _mm256_set1_epi16( value );
152 #elif BLAZE_SSE2_MODE 153 return _mm_set1_epi16( value );
168 template<
typename T >
170 , If_t< IsSigned_v<T>, SIMDcint16, SIMDcuint16 > >
171 set( complex<T> value ) noexcept
173 #if BLAZE_AVX512BW_MODE 174 __m512i dst( _mm512_maskz_set1_epi16( 0XAAAA, value.imag() ) );
175 dst = _mm512_maskz_set1_epi16( 0x5555, value.real() );
177 #elif BLAZE_AVX2_MODE 178 return _mm256_set_epi16( value.imag(), value.real(), value.imag(), value.real(),
179 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 #elif BLAZE_SSE2_MODE 183 return _mm_set_epi16( value.imag(), value.real(), value.imag(), value.real(),
184 value.imag(), value.real(), value.imag(), value.real() );
208 template<
typename T >
210 , If_t< IsSigned_v<T>, SIMDint32, SIMDuint32 > >
211 set( T value ) noexcept
213 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 214 return _mm512_set1_epi32( value );
215 #elif BLAZE_AVX2_MODE 216 return _mm256_set1_epi32( value );
217 #elif BLAZE_SSE2_MODE 218 return _mm_set1_epi32( value );
233 template<
typename T >
235 , If_t< IsSigned_v<T>, SIMDcint32, SIMDcuint32 > >
236 set( complex<T> value ) noexcept
238 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 239 return _mm512_set_epi32( value.imag(), value.real(), value.imag(), value.real(),
240 value.imag(), value.real(), value.imag(), value.real(),
241 value.imag(), value.real(), value.imag(), value.real(),
242 value.imag(), value.real(), value.imag(), value.real() );
243 #elif BLAZE_AVX2_MODE 244 return _mm256_set_epi32( value.imag(), value.real(), value.imag(), value.real(),
245 value.imag(), value.real(), value.imag(), value.real() );
246 #elif BLAZE_SSE2_MODE 247 return _mm_set_epi32( value.imag(), value.real(), value.imag(), value.real() );
271 template<
typename T >
273 , If_t< IsSigned_v<T>, SIMDint64, SIMDuint64 > >
274 set( T value ) noexcept
276 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 277 return _mm512_set1_epi64( value );
278 #elif BLAZE_AVX2_MODE 279 return _mm256_set1_epi64x( value );
280 #elif BLAZE_SSE2_MODE 281 return _mm_set1_epi64( value );
296 template<
typename T >
298 , If_t< IsSigned_v<T>, SIMDcint64, SIMDcuint64 > >
299 set( complex<T> value ) noexcept
301 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 302 return _mm512_set_epi64( value.imag(), value.real(), value.imag(), value.real(),
303 value.imag(), value.real(), value.imag(), value.real() );
304 #elif BLAZE_AVX2_MODE 305 return _mm256_set_epi64x( value.imag(), value.real(), value.imag(), value.real() );
306 #elif BLAZE_SSE2_MODE 307 return _mm_set_epi64( value.imag(), value.real() );
333 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 334 return _mm512_set1_ps( value );
336 return _mm256_set1_ps( value );
338 return _mm_set1_ps( value );
355 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 356 return _mm512_set_ps( value.imag(), value.real(), value.imag(), value.real(),
357 value.imag(), value.real(), value.imag(), value.real(),
358 value.imag(), value.real(), value.imag(), value.real(),
359 value.imag(), value.real(), value.imag(), value.real() );
361 return _mm256_set_ps( value.imag(), value.real(), value.imag(), value.real(),
362 value.imag(), value.real(), value.imag(), value.real() );
364 return _mm_set_ps( value.imag(), value.real(), value.imag(), value.real() );
390 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 391 return _mm512_set1_pd( value );
393 return _mm256_set1_pd( value );
394 #elif BLAZE_SSE2_MODE 395 return _mm_set1_pd( value );
412 #if BLAZE_AVX512F_MODE || BLAZE_MIC_MODE 413 return _mm512_set_pd( value.imag(), value.real(), value.imag(), value.real(),
414 value.imag(), value.real(), value.imag(), value.real() );
416 return _mm256_set_pd( value.imag(), value.real(), value.imag(), value.real() );
417 #elif BLAZE_SSE2_MODE 418 return _mm_set_pd( value.imag(), value.real() );
Header file for basic type definitions.
Header file for the IsIntegral type trait.
SIMD type for 64-bit double precision floating point data 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.
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.
Header file for the HasSize type trait.
SIMD type for 32-bit single precision 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 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.