27 #ifndef _TMMINTRIN_H_INCLUDED
28 #define _TMMINTRIN_H_INCLUDED
31 # error "SSSE3 instruction set not enabled"
37 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
38 _mm_hadd_epi16 (__m128i
__X, __m128i
__Y)
40 return (__m128i) __builtin_ia32_phaddw128 ((__v8hi)__X, (__v8hi)__Y);
43 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
44 _mm_hadd_epi32 (__m128i __X, __m128i __Y)
46 return (__m128i) __builtin_ia32_phaddd128 ((__v4si)__X, (__v4si)__Y);
49 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
50 _mm_hadds_epi16 (__m128i __X, __m128i __Y)
52 return (__m128i) __builtin_ia32_phaddsw128 ((__v8hi)__X, (__v8hi)__Y);
55 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
56 _mm_hadd_pi16 (__m64 __X, __m64 __Y)
58 return (__m64) __builtin_ia32_phaddw ((__v4hi)__X, (__v4hi)__Y);
61 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
62 _mm_hadd_pi32 (__m64 __X, __m64 __Y)
64 return (__m64) __builtin_ia32_phaddd ((__v2si)__X, (__v2si)__Y);
67 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
68 _mm_hadds_pi16 (__m64 __X, __m64 __Y)
70 return (__m64) __builtin_ia32_phaddsw ((__v4hi)__X, (__v4hi)__Y);
73 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
74 _mm_hsub_epi16 (__m128i __X, __m128i __Y)
76 return (__m128i) __builtin_ia32_phsubw128 ((__v8hi)__X, (__v8hi)__Y);
79 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
80 _mm_hsub_epi32 (__m128i __X, __m128i __Y)
82 return (__m128i) __builtin_ia32_phsubd128 ((__v4si)__X, (__v4si)__Y);
85 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
86 _mm_hsubs_epi16 (__m128i __X, __m128i __Y)
88 return (__m128i) __builtin_ia32_phsubsw128 ((__v8hi)__X, (__v8hi)__Y);
91 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
92 _mm_hsub_pi16 (__m64 __X, __m64 __Y)
94 return (__m64) __builtin_ia32_phsubw ((__v4hi)__X, (__v4hi)__Y);
97 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
98 _mm_hsub_pi32 (__m64 __X, __m64 __Y)
100 return (__m64) __builtin_ia32_phsubd ((__v2si)__X, (__v2si)__Y);
103 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
104 _mm_hsubs_pi16 (__m64 __X, __m64 __Y)
106 return (__m64) __builtin_ia32_phsubsw ((__v4hi)__X, (__v4hi)__Y);
109 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
110 _mm_maddubs_epi16 (__m128i __X, __m128i __Y)
112 return (__m128i) __builtin_ia32_pmaddubsw128 ((__v16qi)__X, (__v16qi)__Y);
115 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
116 _mm_maddubs_pi16 (__m64 __X, __m64 __Y)
118 return (__m64) __builtin_ia32_pmaddubsw ((__v8qi)__X, (__v8qi)__Y);
121 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
122 _mm_mulhrs_epi16 (__m128i __X, __m128i __Y)
124 return (__m128i) __builtin_ia32_pmulhrsw128 ((__v8hi)__X, (__v8hi)__Y);
127 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
128 _mm_mulhrs_pi16 (__m64 __X, __m64 __Y)
130 return (__m64) __builtin_ia32_pmulhrsw ((__v4hi)__X, (__v4hi)__Y);
133 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
134 _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
136 return (__m128i) __builtin_ia32_pshufb128 ((__v16qi)__X, (__v16qi)__Y);
139 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
140 _mm_shuffle_pi8 (__m64 __X, __m64 __Y)
142 return (__m64) __builtin_ia32_pshufb ((__v8qi)__X, (__v8qi)__Y);
145 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
146 _mm_sign_epi8 (__m128i __X, __m128i __Y)
148 return (__m128i) __builtin_ia32_psignb128 ((__v16qi)__X, (__v16qi)__Y);
151 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
152 _mm_sign_epi16 (__m128i __X, __m128i __Y)
154 return (__m128i) __builtin_ia32_psignw128 ((__v8hi)__X, (__v8hi)__Y);
157 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
158 _mm_sign_epi32 (__m128i __X, __m128i __Y)
160 return (__m128i) __builtin_ia32_psignd128 ((__v4si)__X, (__v4si)__Y);
163 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
164 _mm_sign_pi8 (__m64 __X, __m64 __Y)
166 return (__m64) __builtin_ia32_psignb ((__v8qi)__X, (__v8qi)__Y);
169 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
170 _mm_sign_pi16 (__m64 __X, __m64 __Y)
172 return (__m64) __builtin_ia32_psignw ((__v4hi)__X, (__v4hi)__Y);
175 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
176 _mm_sign_pi32 (__m64 __X, __m64 __Y)
178 return (__m64) __builtin_ia32_psignd ((__v2si)__X, (__v2si)__Y);
182 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
183 _mm_alignr_epi8(__m128i __X, __m128i __Y, const
int __N)
185 return (__m128i) __builtin_ia32_palignr128 ((__v2di)__X,
186 (__v2di)__Y, __N * 8);
189 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
190 _mm_alignr_pi8(__m64 __X, __m64 __Y, const
int __N)
192 return (__m64) __builtin_ia32_palignr ((__v1di)__X,
193 (__v1di)__Y, __N * 8);
196 #define _mm_alignr_epi8(X, Y, N) \
197 ((__m128i) __builtin_ia32_palignr128 ((__v2di)(__m128i)(X), \
198 (__v2di)(__m128i)(Y), \
200 #define _mm_alignr_pi8(X, Y, N) \
201 ((__m64) __builtin_ia32_palignr ((__v1di)(__m64)(X), \
202 (__v1di)(__m64)(Y), \
206 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
207 _mm_abs_epi8 (__m128i __X)
209 return (__m128i) __builtin_ia32_pabsb128 ((__v16qi)__X);
212 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
213 _mm_abs_epi16 (__m128i __X)
215 return (__m128i) __builtin_ia32_pabsw128 ((__v8hi)__X);
218 extern __inline __m128i
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
219 _mm_abs_epi32 (__m128i __X)
221 return (__m128i) __builtin_ia32_pabsd128 ((__v4si)__X);
224 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
225 _mm_abs_pi8 (__m64 __X)
227 return (__m64) __builtin_ia32_pabsb ((__v8qi)__X);
230 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
231 _mm_abs_pi16 (__m64 __X)
233 return (__m64) __builtin_ia32_pabsw ((__v4hi)__X);
236 extern __inline __m64
__attribute__((__gnu_inline__, __always_inline__, __artificial__))
237 _mm_abs_pi32 (__m64 __X)
239 return (__m64) __builtin_ia32_pabsd ((__v2si)__X);
__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 __X
Definition: adxintrin.h:33