27 #ifndef _PMMINTRIN_H_INCLUDED
28 #define _PMMINTRIN_H_INCLUDED
31 # error "SSE3 instruction set not enabled"
38 #define _MM_DENORMALS_ZERO_MASK 0x0040
39 #define _MM_DENORMALS_ZERO_ON 0x0040
40 #define _MM_DENORMALS_ZERO_OFF 0x0000
42 #define _MM_SET_DENORMALS_ZERO_MODE(mode) \
43 _mm_setcsr ((_mm_getcsr () & ~_MM_DENORMALS_ZERO_MASK) | (mode))
44 #define _MM_GET_DENORMALS_ZERO_MODE() \
45 (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
47 extern __inline __m128
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
48 _mm_addsub_ps (__m128
__X, __m128
__Y)
50 return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y);
53 extern __inline __m128
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
54 _mm_hadd_ps (__m128 __X, __m128 __Y)
56 return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y);
59 extern __inline __m128
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
60 _mm_hsub_ps (__m128 __X, __m128 __Y)
62 return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y);
65 extern __inline __m128
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
66 _mm_movehdup_ps (__m128 __X)
68 return (__m128) __builtin_ia32_movshdup ((__v4sf)__X);
71 extern __inline __m128
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
72 _mm_moveldup_ps (__m128 __X)
74 return (__m128) __builtin_ia32_movsldup ((__v4sf)__X);
77 extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
78 _mm_addsub_pd (__m128d __X, __m128d __Y)
80 return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y);
83 extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
84 _mm_hadd_pd (__m128d __X, __m128d __Y)
86 return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y);
89 extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
90 _mm_hsub_pd (__m128d __X, __m128d __Y)
92 return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y);
95 extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
96 _mm_loaddup_pd (
double const *
__P)
98 return _mm_load1_pd (__P);
101 extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
102 _mm_movedup_pd (__m128d __X)
104 return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0));
107 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
108 _mm_lddqu_si128 (__m128i const *
__P)
110 return (__m128i) __builtin_ia32_lddqu ((
char const *)__P);
113 extern __inline
void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
114 _mm_monitor (
void const * __P,
unsigned int __E,
unsigned int __H)
116 __builtin_ia32_monitor (__P, __E, __H);
119 extern __inline
void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
120 _mm_mwait (
unsigned int __E,
unsigned int __H)
122 __builtin_ia32_mwait (__E, __H);
__inline unsigned char unsigned int unsigned int __Y
Definition: adxintrin.h:33
double __v4df __attribute__((__vector_size__(32)))
Definition: avxintrin.h:32
__inline unsigned char unsigned int unsigned int unsigned int * __P
Definition: adxintrin.h:35
__inline unsigned char unsigned int __X
Definition: adxintrin.h:33
__inline __m256 float float float float __E
Definition: avxintrin.h:1189
__inline __m256 float float float float float float float __H
Definition: avxintrin.h:1191