35 #ifndef _BLAZE_MATH_INTRINSICS_BASICTYPES_H_
36 #define _BLAZE_MATH_INTRINSICS_BASICTYPES_H_
67 BLAZE_ALWAYS_INLINE int8_t operator[](
size_t i )
const {
return reinterpret_cast<const int8_t*
>( &value )[i]; }
74 BLAZE_ALWAYS_INLINE int8_t operator[](
size_t i )
const {
return reinterpret_cast<const int8_t*
>( &value )[i]; }
99 BLAZE_ALWAYS_INLINE int16_t operator[](
size_t i )
const {
return reinterpret_cast<const int16_t*
>( &value )[i]; }
102 #elif BLAZE_SSE2_MODE
103 struct simd_int16_t {
106 BLAZE_ALWAYS_INLINE int16_t operator[](
size_t i )
const {
return reinterpret_cast<const int16_t*
>( &value )[i]; }
110 struct simd_int16_t {
128 struct simd_int32_t {
131 BLAZE_ALWAYS_INLINE int32_t operator[](
size_t i )
const {
return reinterpret_cast<const int32_t*
>( &value )[i]; }
134 #elif BLAZE_AVX2_MODE
135 struct simd_int32_t {
138 BLAZE_ALWAYS_INLINE int32_t operator[](
size_t i )
const {
return reinterpret_cast<const int32_t*
>( &value )[i]; }
141 #elif BLAZE_SSE2_MODE
142 struct simd_int32_t {
145 BLAZE_ALWAYS_INLINE int32_t operator[](
size_t i )
const {
return reinterpret_cast<const int32_t*
>( &value )[i]; }
149 struct simd_int32_t {
167 struct simd_int64_t {
170 BLAZE_ALWAYS_INLINE int64_t operator[](
size_t i )
const {
return reinterpret_cast<const int64_t*
>( &value )[i]; }
173 #elif BLAZE_AVX2_MODE
174 struct simd_int64_t {
177 BLAZE_ALWAYS_INLINE int64_t operator[](
size_t i )
const {
return reinterpret_cast<const int64_t*
>( &value )[i]; }
180 #elif BLAZE_SSE2_MODE
181 struct simd_int64_t {
184 BLAZE_ALWAYS_INLINE int64_t operator[](
size_t i )
const {
return reinterpret_cast<const int64_t*
>( &value )[i]; }
188 struct simd_int64_t {
206 struct simd_float_t {
209 BLAZE_ALWAYS_INLINE float operator[](
size_t i )
const {
return reinterpret_cast<const float*
>( &value )[i]; }
213 struct simd_float_t {
216 BLAZE_ALWAYS_INLINE float operator[](
size_t i )
const {
return reinterpret_cast<const float*
>( &value )[i]; }
220 struct simd_float_t {
223 BLAZE_ALWAYS_INLINE float operator[](
size_t i )
const {
return reinterpret_cast<const float*
>( &value )[i]; }
227 struct simd_float_t {
245 struct simd_double_t {
248 BLAZE_ALWAYS_INLINE double operator[](
size_t i )
const {
return reinterpret_cast<const double*
>( &value )[i]; }
252 struct simd_double_t {
255 BLAZE_ALWAYS_INLINE double operator[](
size_t i )
const {
return reinterpret_cast<const double*
>( &value )[i]; }
258 #elif BLAZE_SSE2_MODE
259 struct simd_double_t {
262 BLAZE_ALWAYS_INLINE double operator[](
size_t i )
const {
return reinterpret_cast<const double*
>( &value )[i]; }
266 struct simd_double_t {
284 struct simd_cint8_t {
287 BLAZE_ALWAYS_INLINE complex<int8_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int8_t>*
>( &value )[i]; }
290 #elif BLAZE_SSE2_MODE
291 struct simd_cint8_t {
294 BLAZE_ALWAYS_INLINE complex<int8_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int8_t>*
>( &value )[i]; }
298 struct simd_cint8_t {
302 complex<int8_t> value;
316 struct simd_cint16_t {
319 BLAZE_ALWAYS_INLINE complex<int16_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int16_t>*
>( &value )[i]; }
322 #elif BLAZE_SSE2_MODE
323 struct simd_cint16_t {
326 BLAZE_ALWAYS_INLINE complex<int16_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int16_t>*
>( &value )[i]; }
330 struct simd_cint16_t {
334 complex<int16_t> value;
348 struct simd_cint32_t {
351 BLAZE_ALWAYS_INLINE complex<int32_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int32_t>*
>( &value )[i]; }
354 #elif BLAZE_AVX2_MODE
355 struct simd_cint32_t {
358 BLAZE_ALWAYS_INLINE complex<int32_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int32_t>*
>( &value )[i]; }
361 #elif BLAZE_SSE2_MODE
362 struct simd_cint32_t {
365 BLAZE_ALWAYS_INLINE complex<int32_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int32_t>*
>( &value )[i]; }
369 struct simd_cint32_t {
373 complex<int32_t> value;
387 struct simd_cint64_t {
390 BLAZE_ALWAYS_INLINE complex<int64_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int64_t>*
>( &value )[i]; }
393 #elif BLAZE_AVX2_MODE
394 struct simd_cint64_t {
397 BLAZE_ALWAYS_INLINE complex<int64_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int64_t>*
>( &value )[i]; }
400 #elif BLAZE_SSE2_MODE
401 struct simd_cint64_t {
404 BLAZE_ALWAYS_INLINE complex<int64_t> operator[](
size_t i )
const {
return reinterpret_cast<const complex<int64_t>*
>( &value )[i]; }
408 struct simd_cint64_t {
412 complex<int64_t> value;
426 struct simd_cfloat_t {
429 BLAZE_ALWAYS_INLINE complex<float> operator[](
size_t i )
const {
return reinterpret_cast<const complex<float>*
>( &value )[i]; }
433 struct simd_cfloat_t {
436 BLAZE_ALWAYS_INLINE complex<float> operator[](
size_t i )
const {
return reinterpret_cast<const complex<float>*
>( &value )[i]; }
440 struct simd_cfloat_t {
443 BLAZE_ALWAYS_INLINE complex<float> operator[](
size_t i )
const {
return reinterpret_cast<const complex<float>*
>( &value )[i]; }
447 struct simd_cfloat_t {
451 complex<float> value;
465 struct simd_cdouble_t {
468 BLAZE_ALWAYS_INLINE complex<double> operator[](
size_t i )
const {
return reinterpret_cast<const complex<double>*
>( &value )[i]; }
472 struct simd_cdouble_t {
475 BLAZE_ALWAYS_INLINE complex<double> operator[](
size_t i )
const {
return reinterpret_cast<const complex<double>*
>( &value )[i]; }
478 #elif BLAZE_SSE2_MODE
479 struct simd_cdouble_t {
482 BLAZE_ALWAYS_INLINE complex<double> operator[](
size_t i )
const {
return reinterpret_cast<const complex<double>*
>( &value )[i]; }
486 struct simd_cdouble_t {
490 complex<double> value;
Header file for basic type definitions.
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
System settings for the SSE mode.
Header file for the complex data type.
System settings for the inline keywords.