]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/tools/clang/lib/Headers/avx512vlbwintrin.h
Merge clang trunk r321017 to contrib/llvm/tools/clang.
[FreeBSD/FreeBSD.git] / contrib / llvm / tools / clang / lib / Headers / avx512vlbwintrin.h
1 /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------===
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  *===-----------------------------------------------------------------------===
22  */
23
24 #ifndef __IMMINTRIN_H
25 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27
28 #ifndef __AVX512VLBWINTRIN_H
29 #define __AVX512VLBWINTRIN_H
30
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw")))
33
34 static  __inline __m128i __DEFAULT_FN_ATTRS
35 _mm_setzero_hi(void){
36     return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
37 }
38
39 /* Integer compare */
40
41 #define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
42   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
43                                          (__v16qi)(__m128i)(b), (int)(p), \
44                                          (__mmask16)-1); })
45
46 #define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
47   (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
48                                          (__v16qi)(__m128i)(b), (int)(p), \
49                                          (__mmask16)(m)); })
50
51 #define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
52   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
53                                           (__v16qi)(__m128i)(b), (int)(p), \
54                                           (__mmask16)-1); })
55
56 #define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
57   (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
58                                           (__v16qi)(__m128i)(b), (int)(p), \
59                                           (__mmask16)(m)); })
60
61 #define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
62   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
63                                          (__v32qi)(__m256i)(b), (int)(p), \
64                                          (__mmask32)-1); })
65
66 #define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
67   (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
68                                          (__v32qi)(__m256i)(b), (int)(p), \
69                                          (__mmask32)(m)); })
70
71 #define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
72   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
73                                           (__v32qi)(__m256i)(b), (int)(p), \
74                                           (__mmask32)-1); })
75
76 #define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
77   (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
78                                           (__v32qi)(__m256i)(b), (int)(p), \
79                                           (__mmask32)(m)); })
80
81 #define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
82   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
83                                         (__v8hi)(__m128i)(b), (int)(p), \
84                                         (__mmask8)-1); })
85
86 #define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
87   (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
88                                         (__v8hi)(__m128i)(b), (int)(p), \
89                                         (__mmask8)(m)); })
90
91 #define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
92   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
93                                          (__v8hi)(__m128i)(b), (int)(p), \
94                                          (__mmask8)-1); })
95
96 #define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
97   (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
98                                          (__v8hi)(__m128i)(b), (int)(p), \
99                                          (__mmask8)(m)); })
100
101 #define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
102   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
103                                          (__v16hi)(__m256i)(b), (int)(p), \
104                                          (__mmask16)-1); })
105
106 #define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
107   (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
108                                          (__v16hi)(__m256i)(b), (int)(p), \
109                                          (__mmask16)(m)); })
110
111 #define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
112   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
113                                           (__v16hi)(__m256i)(b), (int)(p), \
114                                           (__mmask16)-1); })
115
116 #define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
117   (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
118                                           (__v16hi)(__m256i)(b), (int)(p), \
119                                           (__mmask16)(m)); })
120
121 #define _mm_cmpeq_epi8_mask(A, B) \
122     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
123 #define _mm_mask_cmpeq_epi8_mask(k, A, B) \
124     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
125 #define _mm_cmpge_epi8_mask(A, B) \
126     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
127 #define _mm_mask_cmpge_epi8_mask(k, A, B) \
128     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
129 #define _mm_cmpgt_epi8_mask(A, B) \
130     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
131 #define _mm_mask_cmpgt_epi8_mask(k, A, B) \
132     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
133 #define _mm_cmple_epi8_mask(A, B) \
134     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
135 #define _mm_mask_cmple_epi8_mask(k, A, B) \
136     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
137 #define _mm_cmplt_epi8_mask(A, B) \
138     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
139 #define _mm_mask_cmplt_epi8_mask(k, A, B) \
140     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
141 #define _mm_cmpneq_epi8_mask(A, B) \
142     _mm_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
143 #define _mm_mask_cmpneq_epi8_mask(k, A, B) \
144     _mm_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
145
146 #define _mm256_cmpeq_epi8_mask(A, B) \
147     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_EQ)
148 #define _mm256_mask_cmpeq_epi8_mask(k, A, B) \
149     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_EQ)
150 #define _mm256_cmpge_epi8_mask(A, B) \
151     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GE)
152 #define _mm256_mask_cmpge_epi8_mask(k, A, B) \
153     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GE)
154 #define _mm256_cmpgt_epi8_mask(A, B) \
155     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_GT)
156 #define _mm256_mask_cmpgt_epi8_mask(k, A, B) \
157     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_GT)
158 #define _mm256_cmple_epi8_mask(A, B) \
159     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LE)
160 #define _mm256_mask_cmple_epi8_mask(k, A, B) \
161     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LE)
162 #define _mm256_cmplt_epi8_mask(A, B) \
163     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_LT)
164 #define _mm256_mask_cmplt_epi8_mask(k, A, B) \
165     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_LT)
166 #define _mm256_cmpneq_epi8_mask(A, B) \
167     _mm256_cmp_epi8_mask((A), (B), _MM_CMPINT_NE)
168 #define _mm256_mask_cmpneq_epi8_mask(k, A, B) \
169     _mm256_mask_cmp_epi8_mask((k), (A), (B), _MM_CMPINT_NE)
170
171 #define _mm_cmpeq_epu8_mask(A, B) \
172     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
173 #define _mm_mask_cmpeq_epu8_mask(k, A, B) \
174     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
175 #define _mm_cmpge_epu8_mask(A, B) \
176     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
177 #define _mm_mask_cmpge_epu8_mask(k, A, B) \
178     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
179 #define _mm_cmpgt_epu8_mask(A, B) \
180     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
181 #define _mm_mask_cmpgt_epu8_mask(k, A, B) \
182     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
183 #define _mm_cmple_epu8_mask(A, B) \
184     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
185 #define _mm_mask_cmple_epu8_mask(k, A, B) \
186     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
187 #define _mm_cmplt_epu8_mask(A, B) \
188     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
189 #define _mm_mask_cmplt_epu8_mask(k, A, B) \
190     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
191 #define _mm_cmpneq_epu8_mask(A, B) \
192     _mm_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
193 #define _mm_mask_cmpneq_epu8_mask(k, A, B) \
194     _mm_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
195
196 #define _mm256_cmpeq_epu8_mask(A, B) \
197     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_EQ)
198 #define _mm256_mask_cmpeq_epu8_mask(k, A, B) \
199     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_EQ)
200 #define _mm256_cmpge_epu8_mask(A, B) \
201     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GE)
202 #define _mm256_mask_cmpge_epu8_mask(k, A, B) \
203     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GE)
204 #define _mm256_cmpgt_epu8_mask(A, B) \
205     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_GT)
206 #define _mm256_mask_cmpgt_epu8_mask(k, A, B) \
207     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_GT)
208 #define _mm256_cmple_epu8_mask(A, B) \
209     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LE)
210 #define _mm256_mask_cmple_epu8_mask(k, A, B) \
211     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LE)
212 #define _mm256_cmplt_epu8_mask(A, B) \
213     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_LT)
214 #define _mm256_mask_cmplt_epu8_mask(k, A, B) \
215     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_LT)
216 #define _mm256_cmpneq_epu8_mask(A, B) \
217     _mm256_cmp_epu8_mask((A), (B), _MM_CMPINT_NE)
218 #define _mm256_mask_cmpneq_epu8_mask(k, A, B) \
219     _mm256_mask_cmp_epu8_mask((k), (A), (B), _MM_CMPINT_NE)
220
221 #define _mm_cmpeq_epi16_mask(A, B) \
222     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
223 #define _mm_mask_cmpeq_epi16_mask(k, A, B) \
224     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
225 #define _mm_cmpge_epi16_mask(A, B) \
226     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
227 #define _mm_mask_cmpge_epi16_mask(k, A, B) \
228     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
229 #define _mm_cmpgt_epi16_mask(A, B) \
230     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
231 #define _mm_mask_cmpgt_epi16_mask(k, A, B) \
232     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
233 #define _mm_cmple_epi16_mask(A, B) \
234     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
235 #define _mm_mask_cmple_epi16_mask(k, A, B) \
236     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
237 #define _mm_cmplt_epi16_mask(A, B) \
238     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
239 #define _mm_mask_cmplt_epi16_mask(k, A, B) \
240     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
241 #define _mm_cmpneq_epi16_mask(A, B) \
242     _mm_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
243 #define _mm_mask_cmpneq_epi16_mask(k, A, B) \
244     _mm_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
245
246 #define _mm256_cmpeq_epi16_mask(A, B) \
247     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_EQ)
248 #define _mm256_mask_cmpeq_epi16_mask(k, A, B) \
249     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_EQ)
250 #define _mm256_cmpge_epi16_mask(A, B) \
251     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GE)
252 #define _mm256_mask_cmpge_epi16_mask(k, A, B) \
253     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GE)
254 #define _mm256_cmpgt_epi16_mask(A, B) \
255     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_GT)
256 #define _mm256_mask_cmpgt_epi16_mask(k, A, B) \
257     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_GT)
258 #define _mm256_cmple_epi16_mask(A, B) \
259     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LE)
260 #define _mm256_mask_cmple_epi16_mask(k, A, B) \
261     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LE)
262 #define _mm256_cmplt_epi16_mask(A, B) \
263     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_LT)
264 #define _mm256_mask_cmplt_epi16_mask(k, A, B) \
265     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_LT)
266 #define _mm256_cmpneq_epi16_mask(A, B) \
267     _mm256_cmp_epi16_mask((A), (B), _MM_CMPINT_NE)
268 #define _mm256_mask_cmpneq_epi16_mask(k, A, B) \
269     _mm256_mask_cmp_epi16_mask((k), (A), (B), _MM_CMPINT_NE)
270
271 #define _mm_cmpeq_epu16_mask(A, B) \
272     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
273 #define _mm_mask_cmpeq_epu16_mask(k, A, B) \
274     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
275 #define _mm_cmpge_epu16_mask(A, B) \
276     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
277 #define _mm_mask_cmpge_epu16_mask(k, A, B) \
278     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
279 #define _mm_cmpgt_epu16_mask(A, B) \
280     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
281 #define _mm_mask_cmpgt_epu16_mask(k, A, B) \
282     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
283 #define _mm_cmple_epu16_mask(A, B) \
284     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
285 #define _mm_mask_cmple_epu16_mask(k, A, B) \
286     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
287 #define _mm_cmplt_epu16_mask(A, B) \
288     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
289 #define _mm_mask_cmplt_epu16_mask(k, A, B) \
290     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
291 #define _mm_cmpneq_epu16_mask(A, B) \
292     _mm_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
293 #define _mm_mask_cmpneq_epu16_mask(k, A, B) \
294     _mm_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
295
296 #define _mm256_cmpeq_epu16_mask(A, B) \
297     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_EQ)
298 #define _mm256_mask_cmpeq_epu16_mask(k, A, B) \
299     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_EQ)
300 #define _mm256_cmpge_epu16_mask(A, B) \
301     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GE)
302 #define _mm256_mask_cmpge_epu16_mask(k, A, B) \
303     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GE)
304 #define _mm256_cmpgt_epu16_mask(A, B) \
305     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_GT)
306 #define _mm256_mask_cmpgt_epu16_mask(k, A, B) \
307     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_GT)
308 #define _mm256_cmple_epu16_mask(A, B) \
309     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LE)
310 #define _mm256_mask_cmple_epu16_mask(k, A, B) \
311     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LE)
312 #define _mm256_cmplt_epu16_mask(A, B) \
313     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_LT)
314 #define _mm256_mask_cmplt_epu16_mask(k, A, B) \
315     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_LT)
316 #define _mm256_cmpneq_epu16_mask(A, B) \
317     _mm256_cmp_epu16_mask((A), (B), _MM_CMPINT_NE)
318 #define _mm256_mask_cmpneq_epu16_mask(k, A, B) \
319     _mm256_mask_cmp_epu16_mask((k), (A), (B), _MM_CMPINT_NE)
320
321 static __inline__ __m256i __DEFAULT_FN_ATTRS
322 _mm256_mask_add_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
323   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
324                                              (__v32qi)_mm256_add_epi8(__A, __B),
325                                              (__v32qi)__W);
326 }
327
328 static __inline__ __m256i __DEFAULT_FN_ATTRS
329 _mm256_maskz_add_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
330   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
331                                              (__v32qi)_mm256_add_epi8(__A, __B),
332                                              (__v32qi)_mm256_setzero_si256());
333 }
334
335 static __inline__ __m256i __DEFAULT_FN_ATTRS
336 _mm256_mask_add_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
337   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
338                                              (__v16hi)_mm256_add_epi16(__A, __B),
339                                              (__v16hi)__W);
340 }
341
342 static __inline__ __m256i __DEFAULT_FN_ATTRS
343 _mm256_maskz_add_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
344   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
345                                              (__v16hi)_mm256_add_epi16(__A, __B),
346                                              (__v16hi)_mm256_setzero_si256());
347 }
348
349 static __inline__ __m256i __DEFAULT_FN_ATTRS
350 _mm256_mask_sub_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
351   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
352                                              (__v32qi)_mm256_sub_epi8(__A, __B),
353                                              (__v32qi)__W);
354 }
355
356 static __inline__ __m256i __DEFAULT_FN_ATTRS
357 _mm256_maskz_sub_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
358   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
359                                              (__v32qi)_mm256_sub_epi8(__A, __B),
360                                              (__v32qi)_mm256_setzero_si256());
361 }
362
363 static __inline__ __m256i __DEFAULT_FN_ATTRS
364 _mm256_mask_sub_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
365   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
366                                              (__v16hi)_mm256_sub_epi16(__A, __B),
367                                              (__v16hi)__W);
368 }
369
370 static __inline__ __m256i __DEFAULT_FN_ATTRS
371 _mm256_maskz_sub_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
372   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
373                                              (__v16hi)_mm256_sub_epi16(__A, __B),
374                                              (__v16hi)_mm256_setzero_si256());
375 }
376
377 static __inline__ __m128i __DEFAULT_FN_ATTRS
378 _mm_mask_add_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
379   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
380                                              (__v16qi)_mm_add_epi8(__A, __B),
381                                              (__v16qi)__W);
382 }
383
384 static __inline__ __m128i __DEFAULT_FN_ATTRS
385 _mm_maskz_add_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
386   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
387                                              (__v16qi)_mm_add_epi8(__A, __B),
388                                              (__v16qi)_mm_setzero_si128());
389 }
390
391 static __inline__ __m128i __DEFAULT_FN_ATTRS
392 _mm_mask_add_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
393   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
394                                              (__v8hi)_mm_add_epi16(__A, __B),
395                                              (__v8hi)__W);
396 }
397
398 static __inline__ __m128i __DEFAULT_FN_ATTRS
399 _mm_maskz_add_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
400   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
401                                              (__v8hi)_mm_add_epi16(__A, __B),
402                                              (__v8hi)_mm_setzero_si128());
403 }
404
405 static __inline__ __m128i __DEFAULT_FN_ATTRS
406 _mm_mask_sub_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
407   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
408                                              (__v16qi)_mm_sub_epi8(__A, __B),
409                                              (__v16qi)__W);
410 }
411
412 static __inline__ __m128i __DEFAULT_FN_ATTRS
413 _mm_maskz_sub_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
414   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
415                                              (__v16qi)_mm_sub_epi8(__A, __B),
416                                              (__v16qi)_mm_setzero_si128());
417 }
418
419 static __inline__ __m128i __DEFAULT_FN_ATTRS
420 _mm_mask_sub_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
421   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
422                                              (__v8hi)_mm_sub_epi16(__A, __B),
423                                              (__v8hi)__W);
424 }
425
426 static __inline__ __m128i __DEFAULT_FN_ATTRS
427 _mm_maskz_sub_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
428   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
429                                              (__v8hi)_mm_sub_epi16(__A, __B),
430                                              (__v8hi)_mm_setzero_si128());
431 }
432
433 static __inline__ __m256i __DEFAULT_FN_ATTRS
434 _mm256_mask_mullo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
435   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
436                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
437                                              (__v16hi)__W);
438 }
439
440 static __inline__ __m256i __DEFAULT_FN_ATTRS
441 _mm256_maskz_mullo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
442   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
443                                              (__v16hi)_mm256_mullo_epi16(__A, __B),
444                                              (__v16hi)_mm256_setzero_si256());
445 }
446
447 static __inline__ __m128i __DEFAULT_FN_ATTRS
448 _mm_mask_mullo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
449   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
450                                              (__v8hi)_mm_mullo_epi16(__A, __B),
451                                              (__v8hi)__W);
452 }
453
454 static __inline__ __m128i __DEFAULT_FN_ATTRS
455 _mm_maskz_mullo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
456   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
457                                              (__v8hi)_mm_mullo_epi16(__A, __B),
458                                              (__v8hi)_mm_setzero_si128());
459 }
460
461 static __inline__ __m128i __DEFAULT_FN_ATTRS
462 _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
463 {
464   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
465               (__v16qi) __W,
466               (__v16qi) __A);
467 }
468
469 static __inline__ __m256i __DEFAULT_FN_ATTRS
470 _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
471 {
472   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
473                (__v32qi) __W,
474                (__v32qi) __A);
475 }
476
477 static __inline__ __m128i __DEFAULT_FN_ATTRS
478 _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
479 {
480   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
481                (__v8hi) __W,
482                (__v8hi) __A);
483 }
484
485 static __inline__ __m256i __DEFAULT_FN_ATTRS
486 _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
487 {
488   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
489                (__v16hi) __W,
490                (__v16hi) __A);
491 }
492
493 static __inline__ __m128i __DEFAULT_FN_ATTRS
494 _mm_mask_abs_epi8(__m128i __W, __mmask16 __U, __m128i __A)
495 {
496   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
497                                              (__v16qi)_mm_abs_epi8(__A),
498                                              (__v16qi)__W);
499 }
500
501 static __inline__ __m128i __DEFAULT_FN_ATTRS
502 _mm_maskz_abs_epi8(__mmask16 __U, __m128i __A)
503 {
504   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
505                                              (__v16qi)_mm_abs_epi8(__A),
506                                              (__v16qi)_mm_setzero_si128());
507 }
508
509 static __inline__ __m256i __DEFAULT_FN_ATTRS
510 _mm256_mask_abs_epi8(__m256i __W, __mmask32 __U, __m256i __A)
511 {
512   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
513                                              (__v32qi)_mm256_abs_epi8(__A),
514                                              (__v32qi)__W);
515 }
516
517 static __inline__ __m256i __DEFAULT_FN_ATTRS
518 _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
519 {
520   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
521                                              (__v32qi)_mm256_abs_epi8(__A),
522                                              (__v32qi)_mm256_setzero_si256());
523 }
524
525 static __inline__ __m128i __DEFAULT_FN_ATTRS
526 _mm_mask_abs_epi16(__m128i __W, __mmask8 __U, __m128i __A)
527 {
528   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
529                                              (__v8hi)_mm_abs_epi16(__A),
530                                              (__v8hi)__W);
531 }
532
533 static __inline__ __m128i __DEFAULT_FN_ATTRS
534 _mm_maskz_abs_epi16(__mmask8 __U, __m128i __A)
535 {
536   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
537                                              (__v8hi)_mm_abs_epi16(__A),
538                                              (__v8hi)_mm_setzero_si128());
539 }
540
541 static __inline__ __m256i __DEFAULT_FN_ATTRS
542 _mm256_mask_abs_epi16(__m256i __W, __mmask16 __U, __m256i __A)
543 {
544   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
545                                              (__v16hi)_mm256_abs_epi16(__A),
546                                              (__v16hi)__W);
547 }
548
549 static __inline__ __m256i __DEFAULT_FN_ATTRS
550 _mm256_maskz_abs_epi16(__mmask16 __U, __m256i __A)
551 {
552   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
553                                              (__v16hi)_mm256_abs_epi16(__A),
554                                              (__v16hi)_mm256_setzero_si256());
555 }
556
557 static __inline__ __m128i __DEFAULT_FN_ATTRS
558 _mm_maskz_packs_epi32(__mmask8 __M, __m128i __A, __m128i __B) {
559   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
560                                              (__v8hi)_mm_packs_epi32(__A, __B),
561                                              (__v8hi)_mm_setzero_si128());
562 }
563
564 static __inline__ __m128i __DEFAULT_FN_ATTRS
565 _mm_mask_packs_epi32(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
566 {
567   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
568                                              (__v8hi)_mm_packs_epi32(__A, __B),
569                                              (__v8hi)__W);
570 }
571
572 static __inline__ __m256i __DEFAULT_FN_ATTRS
573 _mm256_maskz_packs_epi32(__mmask16 __M, __m256i __A, __m256i __B)
574 {
575   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
576                                           (__v16hi)_mm256_packs_epi32(__A, __B),
577                                           (__v16hi)_mm256_setzero_si256());
578 }
579
580 static __inline__ __m256i __DEFAULT_FN_ATTRS
581 _mm256_mask_packs_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
582 {
583   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
584                                           (__v16hi)_mm256_packs_epi32(__A, __B),
585                                           (__v16hi)__W);
586 }
587
588 static __inline__ __m128i __DEFAULT_FN_ATTRS
589 _mm_maskz_packs_epi16(__mmask16 __M, __m128i __A, __m128i __B)
590 {
591   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
592                                              (__v16qi)_mm_packs_epi16(__A, __B),
593                                              (__v16qi)_mm_setzero_si128());
594 }
595
596 static __inline__ __m128i __DEFAULT_FN_ATTRS
597 _mm_mask_packs_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
598 {
599   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
600                                              (__v16qi)_mm_packs_epi16(__A, __B),
601                                              (__v16qi)__W);
602 }
603
604 static __inline__ __m256i __DEFAULT_FN_ATTRS
605 _mm256_maskz_packs_epi16(__mmask32 __M, __m256i __A, __m256i __B)
606 {
607   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
608                                           (__v32qi)_mm256_packs_epi16(__A, __B),
609                                           (__v32qi)_mm256_setzero_si256());
610 }
611
612 static __inline__ __m256i __DEFAULT_FN_ATTRS
613 _mm256_mask_packs_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
614 {
615   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
616                                           (__v32qi)_mm256_packs_epi16(__A, __B),
617                                           (__v32qi)__W);
618 }
619
620 static __inline__ __m128i __DEFAULT_FN_ATTRS
621 _mm_maskz_packus_epi32(__mmask8 __M, __m128i __A, __m128i __B)
622 {
623   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
624                                              (__v8hi)_mm_packus_epi32(__A, __B),
625                                              (__v8hi)_mm_setzero_si128());
626 }
627
628 static __inline__ __m128i __DEFAULT_FN_ATTRS
629 _mm_mask_packus_epi32(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
630 {
631   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
632                                              (__v8hi)_mm_packus_epi32(__A, __B),
633                                              (__v8hi)__W);
634 }
635
636 static __inline__ __m256i __DEFAULT_FN_ATTRS
637 _mm256_maskz_packus_epi32(__mmask16 __M, __m256i __A, __m256i __B)
638 {
639   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
640                                          (__v16hi)_mm256_packus_epi32(__A, __B),
641                                          (__v16hi)_mm256_setzero_si256());
642 }
643
644 static __inline__ __m256i __DEFAULT_FN_ATTRS
645 _mm256_mask_packus_epi32(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
646 {
647   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
648                                          (__v16hi)_mm256_packus_epi32(__A, __B),
649                                          (__v16hi)__W);
650 }
651
652 static __inline__ __m128i __DEFAULT_FN_ATTRS
653 _mm_maskz_packus_epi16(__mmask16 __M, __m128i __A, __m128i __B)
654 {
655   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
656                                             (__v16qi)_mm_packus_epi16(__A, __B),
657                                             (__v16qi)_mm_setzero_si128());
658 }
659
660 static __inline__ __m128i __DEFAULT_FN_ATTRS
661 _mm_mask_packus_epi16(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
662 {
663   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
664                                             (__v16qi)_mm_packus_epi16(__A, __B),
665                                             (__v16qi)__W);
666 }
667
668 static __inline__ __m256i __DEFAULT_FN_ATTRS
669 _mm256_maskz_packus_epi16(__mmask32 __M, __m256i __A, __m256i __B)
670 {
671   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
672                                          (__v32qi)_mm256_packus_epi16(__A, __B),
673                                          (__v32qi)_mm256_setzero_si256());
674 }
675
676 static __inline__ __m256i __DEFAULT_FN_ATTRS
677 _mm256_mask_packus_epi16(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
678 {
679   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
680                                          (__v32qi)_mm256_packus_epi16(__A, __B),
681                                          (__v32qi)__W);
682 }
683
684 static __inline__ __m128i __DEFAULT_FN_ATTRS
685 _mm_mask_adds_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
686 {
687   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
688                                              (__v16qi)_mm_adds_epi8(__A, __B),
689                                              (__v16qi)__W);
690 }
691
692 static __inline__ __m128i __DEFAULT_FN_ATTRS
693 _mm_maskz_adds_epi8(__mmask16 __U, __m128i __A, __m128i __B)
694 {
695   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
696                                              (__v16qi)_mm_adds_epi8(__A, __B),
697                                              (__v16qi)_mm_setzero_si128());
698 }
699
700 static __inline__ __m256i __DEFAULT_FN_ATTRS
701 _mm256_mask_adds_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
702 {
703   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
704                                             (__v32qi)_mm256_adds_epi8(__A, __B),
705                                             (__v32qi)__W);
706 }
707
708 static __inline__ __m256i __DEFAULT_FN_ATTRS
709 _mm256_maskz_adds_epi8(__mmask32 __U, __m256i __A, __m256i __B)
710 {
711   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
712                                             (__v32qi)_mm256_adds_epi8(__A, __B),
713                                             (__v32qi)_mm256_setzero_si256());
714 }
715
716 static __inline__ __m128i __DEFAULT_FN_ATTRS
717 _mm_mask_adds_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
718 {
719   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
720                                              (__v8hi)_mm_adds_epi16(__A, __B),
721                                              (__v8hi)__W);
722 }
723
724 static __inline__ __m128i __DEFAULT_FN_ATTRS
725 _mm_maskz_adds_epi16(__mmask8 __U, __m128i __A, __m128i __B)
726 {
727   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
728                                              (__v8hi)_mm_adds_epi16(__A, __B),
729                                              (__v8hi)_mm_setzero_si128());
730 }
731
732 static __inline__ __m256i __DEFAULT_FN_ATTRS
733 _mm256_mask_adds_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
734 {
735   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
736                                            (__v16hi)_mm256_adds_epi16(__A, __B),
737                                            (__v16hi)__W);
738 }
739
740 static __inline__ __m256i __DEFAULT_FN_ATTRS
741 _mm256_maskz_adds_epi16(__mmask16 __U, __m256i __A, __m256i __B)
742 {
743   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
744                                            (__v16hi)_mm256_adds_epi16(__A, __B),
745                                            (__v16hi)_mm256_setzero_si256());
746 }
747
748 static __inline__ __m128i __DEFAULT_FN_ATTRS
749 _mm_mask_adds_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
750 {
751   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
752                                              (__v16qi)_mm_adds_epu8(__A, __B),
753                                              (__v16qi)__W);
754 }
755
756 static __inline__ __m128i __DEFAULT_FN_ATTRS
757 _mm_maskz_adds_epu8(__mmask16 __U, __m128i __A, __m128i __B)
758 {
759   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
760                                              (__v16qi)_mm_adds_epu8(__A, __B),
761                                              (__v16qi)_mm_setzero_si128());
762 }
763
764 static __inline__ __m256i __DEFAULT_FN_ATTRS
765 _mm256_mask_adds_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
766 {
767   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
768                                             (__v32qi)_mm256_adds_epu8(__A, __B),
769                                             (__v32qi)__W);
770 }
771
772 static __inline__ __m256i __DEFAULT_FN_ATTRS
773 _mm256_maskz_adds_epu8(__mmask32 __U, __m256i __A, __m256i __B)
774 {
775   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
776                                             (__v32qi)_mm256_adds_epu8(__A, __B),
777                                             (__v32qi)_mm256_setzero_si256());
778 }
779
780 static __inline__ __m128i __DEFAULT_FN_ATTRS
781 _mm_mask_adds_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
782 {
783   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
784                                              (__v8hi)_mm_adds_epu16(__A, __B),
785                                              (__v8hi)__W);
786 }
787
788 static __inline__ __m128i __DEFAULT_FN_ATTRS
789 _mm_maskz_adds_epu16(__mmask8 __U, __m128i __A, __m128i __B)
790 {
791   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
792                                              (__v8hi)_mm_adds_epu16(__A, __B),
793                                              (__v8hi)_mm_setzero_si128());
794 }
795
796 static __inline__ __m256i __DEFAULT_FN_ATTRS
797 _mm256_mask_adds_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
798 {
799   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
800                                            (__v16hi)_mm256_adds_epu16(__A, __B),
801                                            (__v16hi)__W);
802 }
803
804 static __inline__ __m256i __DEFAULT_FN_ATTRS
805 _mm256_maskz_adds_epu16(__mmask16 __U, __m256i __A, __m256i __B)
806 {
807   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
808                                            (__v16hi)_mm256_adds_epu16(__A, __B),
809                                            (__v16hi)_mm256_setzero_si256());
810 }
811
812 static __inline__ __m128i __DEFAULT_FN_ATTRS
813 _mm_mask_avg_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
814 {
815   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
816                                              (__v16qi)_mm_avg_epu8(__A, __B),
817                                              (__v16qi)__W);
818 }
819
820 static __inline__ __m128i __DEFAULT_FN_ATTRS
821 _mm_maskz_avg_epu8(__mmask16 __U, __m128i __A, __m128i __B)
822 {
823   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
824                                              (__v16qi)_mm_avg_epu8(__A, __B),
825                                              (__v16qi)_mm_setzero_si128());
826 }
827
828 static __inline__ __m256i __DEFAULT_FN_ATTRS
829 _mm256_mask_avg_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
830 {
831   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
832                                              (__v32qi)_mm256_avg_epu8(__A, __B),
833                                              (__v32qi)__W);
834 }
835
836 static __inline__ __m256i __DEFAULT_FN_ATTRS
837 _mm256_maskz_avg_epu8(__mmask32 __U, __m256i __A, __m256i __B)
838 {
839   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
840                                              (__v32qi)_mm256_avg_epu8(__A, __B),
841                                              (__v32qi)_mm256_setzero_si256());
842 }
843
844 static __inline__ __m128i __DEFAULT_FN_ATTRS
845 _mm_mask_avg_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
846 {
847   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
848                                              (__v8hi)_mm_avg_epu16(__A, __B),
849                                              (__v8hi)__W);
850 }
851
852 static __inline__ __m128i __DEFAULT_FN_ATTRS
853 _mm_maskz_avg_epu16(__mmask8 __U, __m128i __A, __m128i __B)
854 {
855   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
856                                              (__v8hi)_mm_avg_epu16(__A, __B),
857                                              (__v8hi)_mm_setzero_si128());
858 }
859
860 static __inline__ __m256i __DEFAULT_FN_ATTRS
861 _mm256_mask_avg_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
862 {
863   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
864                                             (__v16hi)_mm256_avg_epu16(__A, __B),
865                                             (__v16hi)__W);
866 }
867
868 static __inline__ __m256i __DEFAULT_FN_ATTRS
869 _mm256_maskz_avg_epu16(__mmask16 __U, __m256i __A, __m256i __B)
870 {
871   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
872                                             (__v16hi)_mm256_avg_epu16(__A, __B),
873                                             (__v16hi)_mm256_setzero_si256());
874 }
875
876 static __inline__ __m128i __DEFAULT_FN_ATTRS
877 _mm_maskz_max_epi8(__mmask16 __M, __m128i __A, __m128i __B)
878 {
879   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
880                                              (__v16qi)_mm_max_epi8(__A, __B),
881                                              (__v16qi)_mm_setzero_si128());
882 }
883
884 static __inline__ __m128i __DEFAULT_FN_ATTRS
885 _mm_mask_max_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
886 {
887   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
888                                              (__v16qi)_mm_max_epi8(__A, __B),
889                                              (__v16qi)__W);
890 }
891
892 static __inline__ __m256i __DEFAULT_FN_ATTRS
893 _mm256_maskz_max_epi8(__mmask32 __M, __m256i __A, __m256i __B)
894 {
895   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
896                                              (__v32qi)_mm256_max_epi8(__A, __B),
897                                              (__v32qi)_mm256_setzero_si256());
898 }
899
900 static __inline__ __m256i __DEFAULT_FN_ATTRS
901 _mm256_mask_max_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
902 {
903   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
904                                              (__v32qi)_mm256_max_epi8(__A, __B),
905                                              (__v32qi)__W);
906 }
907
908 static __inline__ __m128i __DEFAULT_FN_ATTRS
909 _mm_maskz_max_epi16(__mmask8 __M, __m128i __A, __m128i __B)
910 {
911   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
912                                              (__v8hi)_mm_max_epi16(__A, __B),
913                                              (__v8hi)_mm_setzero_si128());
914 }
915
916 static __inline__ __m128i __DEFAULT_FN_ATTRS
917 _mm_mask_max_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
918 {
919   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
920                                              (__v8hi)_mm_max_epi16(__A, __B),
921                                              (__v8hi)__W);
922 }
923
924 static __inline__ __m256i __DEFAULT_FN_ATTRS
925 _mm256_maskz_max_epi16(__mmask16 __M, __m256i __A, __m256i __B)
926 {
927   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
928                                             (__v16hi)_mm256_max_epi16(__A, __B),
929                                             (__v16hi)_mm256_setzero_si256());
930 }
931
932 static __inline__ __m256i __DEFAULT_FN_ATTRS
933 _mm256_mask_max_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
934 {
935   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
936                                             (__v16hi)_mm256_max_epi16(__A, __B),
937                                             (__v16hi)__W);
938 }
939
940 static __inline__ __m128i __DEFAULT_FN_ATTRS
941 _mm_maskz_max_epu8(__mmask16 __M, __m128i __A, __m128i __B)
942 {
943   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
944                                              (__v16qi)_mm_max_epu8(__A, __B),
945                                              (__v16qi)_mm_setzero_si128());
946 }
947
948 static __inline__ __m128i __DEFAULT_FN_ATTRS
949 _mm_mask_max_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
950 {
951   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
952                                              (__v16qi)_mm_max_epu8(__A, __B),
953                                              (__v16qi)__W);
954 }
955
956 static __inline__ __m256i __DEFAULT_FN_ATTRS
957 _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
958 {
959   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
960                                              (__v32qi)_mm256_max_epu8(__A, __B),
961                                              (__v32qi)_mm256_setzero_si256());
962 }
963
964 static __inline__ __m256i __DEFAULT_FN_ATTRS
965 _mm256_mask_max_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
966 {
967   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
968                                              (__v32qi)_mm256_max_epu8(__A, __B),
969                                              (__v32qi)__W);
970 }
971
972 static __inline__ __m128i __DEFAULT_FN_ATTRS
973 _mm_maskz_max_epu16(__mmask8 __M, __m128i __A, __m128i __B)
974 {
975   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
976                                              (__v8hi)_mm_max_epu16(__A, __B),
977                                              (__v8hi)_mm_setzero_si128());
978 }
979
980 static __inline__ __m128i __DEFAULT_FN_ATTRS
981 _mm_mask_max_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
982 {
983   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
984                                              (__v8hi)_mm_max_epu16(__A, __B),
985                                              (__v8hi)__W);
986 }
987
988 static __inline__ __m256i __DEFAULT_FN_ATTRS
989 _mm256_maskz_max_epu16(__mmask16 __M, __m256i __A, __m256i __B)
990 {
991   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
992                                             (__v16hi)_mm256_max_epu16(__A, __B),
993                                             (__v16hi)_mm256_setzero_si256());
994 }
995
996 static __inline__ __m256i __DEFAULT_FN_ATTRS
997 _mm256_mask_max_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
998 {
999   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1000                                             (__v16hi)_mm256_max_epu16(__A, __B),
1001                                             (__v16hi)__W);
1002 }
1003
1004 static __inline__ __m128i __DEFAULT_FN_ATTRS
1005 _mm_maskz_min_epi8(__mmask16 __M, __m128i __A, __m128i __B)
1006 {
1007   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1008                                              (__v16qi)_mm_min_epi8(__A, __B),
1009                                              (__v16qi)_mm_setzero_si128());
1010 }
1011
1012 static __inline__ __m128i __DEFAULT_FN_ATTRS
1013 _mm_mask_min_epi8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
1014 {
1015   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1016                                              (__v16qi)_mm_min_epi8(__A, __B),
1017                                              (__v16qi)__W);
1018 }
1019
1020 static __inline__ __m256i __DEFAULT_FN_ATTRS
1021 _mm256_maskz_min_epi8(__mmask32 __M, __m256i __A, __m256i __B)
1022 {
1023   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1024                                              (__v32qi)_mm256_min_epi8(__A, __B),
1025                                              (__v32qi)_mm256_setzero_si256());
1026 }
1027
1028 static __inline__ __m256i __DEFAULT_FN_ATTRS
1029 _mm256_mask_min_epi8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
1030 {
1031   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1032                                              (__v32qi)_mm256_min_epi8(__A, __B),
1033                                              (__v32qi)__W);
1034 }
1035
1036 static __inline__ __m128i __DEFAULT_FN_ATTRS
1037 _mm_maskz_min_epi16(__mmask8 __M, __m128i __A, __m128i __B)
1038 {
1039   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1040                                              (__v8hi)_mm_min_epi16(__A, __B),
1041                                              (__v8hi)_mm_setzero_si128());
1042 }
1043
1044 static __inline__ __m128i __DEFAULT_FN_ATTRS
1045 _mm_mask_min_epi16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
1046 {
1047   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1048                                              (__v8hi)_mm_min_epi16(__A, __B),
1049                                              (__v8hi)__W);
1050 }
1051
1052 static __inline__ __m256i __DEFAULT_FN_ATTRS
1053 _mm256_maskz_min_epi16(__mmask16 __M, __m256i __A, __m256i __B)
1054 {
1055   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1056                                             (__v16hi)_mm256_min_epi16(__A, __B),
1057                                             (__v16hi)_mm256_setzero_si256());
1058 }
1059
1060 static __inline__ __m256i __DEFAULT_FN_ATTRS
1061 _mm256_mask_min_epi16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
1062 {
1063   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1064                                             (__v16hi)_mm256_min_epi16(__A, __B),
1065                                             (__v16hi)__W);
1066 }
1067
1068 static __inline__ __m128i __DEFAULT_FN_ATTRS
1069 _mm_maskz_min_epu8(__mmask16 __M, __m128i __A, __m128i __B)
1070 {
1071   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1072                                              (__v16qi)_mm_min_epu8(__A, __B),
1073                                              (__v16qi)_mm_setzero_si128());
1074 }
1075
1076 static __inline__ __m128i __DEFAULT_FN_ATTRS
1077 _mm_mask_min_epu8(__m128i __W, __mmask16 __M, __m128i __A, __m128i __B)
1078 {
1079   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__M,
1080                                              (__v16qi)_mm_min_epu8(__A, __B),
1081                                              (__v16qi)__W);
1082 }
1083
1084 static __inline__ __m256i __DEFAULT_FN_ATTRS
1085 _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1086 {
1087   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1088                                              (__v32qi)_mm256_min_epu8(__A, __B),
1089                                              (__v32qi)_mm256_setzero_si256());
1090 }
1091
1092 static __inline__ __m256i __DEFAULT_FN_ATTRS
1093 _mm256_mask_min_epu8(__m256i __W, __mmask32 __M, __m256i __A, __m256i __B)
1094 {
1095   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__M,
1096                                              (__v32qi)_mm256_min_epu8(__A, __B),
1097                                              (__v32qi)__W);
1098 }
1099
1100 static __inline__ __m128i __DEFAULT_FN_ATTRS
1101 _mm_maskz_min_epu16(__mmask8 __M, __m128i __A, __m128i __B)
1102 {
1103   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1104                                              (__v8hi)_mm_min_epu16(__A, __B),
1105                                              (__v8hi)_mm_setzero_si128());
1106 }
1107
1108 static __inline__ __m128i __DEFAULT_FN_ATTRS
1109 _mm_mask_min_epu16(__m128i __W, __mmask8 __M, __m128i __A, __m128i __B)
1110 {
1111   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__M,
1112                                              (__v8hi)_mm_min_epu16(__A, __B),
1113                                              (__v8hi)__W);
1114 }
1115
1116 static __inline__ __m256i __DEFAULT_FN_ATTRS
1117 _mm256_maskz_min_epu16(__mmask16 __M, __m256i __A, __m256i __B)
1118 {
1119   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1120                                             (__v16hi)_mm256_min_epu16(__A, __B),
1121                                             (__v16hi)_mm256_setzero_si256());
1122 }
1123
1124 static __inline__ __m256i __DEFAULT_FN_ATTRS
1125 _mm256_mask_min_epu16(__m256i __W, __mmask16 __M, __m256i __A, __m256i __B)
1126 {
1127   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__M,
1128                                             (__v16hi)_mm256_min_epu16(__A, __B),
1129                                             (__v16hi)__W);
1130 }
1131
1132 static __inline__ __m128i __DEFAULT_FN_ATTRS
1133 _mm_mask_shuffle_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1134 {
1135   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1136                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
1137                                             (__v16qi)__W);
1138 }
1139
1140 static __inline__ __m128i __DEFAULT_FN_ATTRS
1141 _mm_maskz_shuffle_epi8(__mmask16 __U, __m128i __A, __m128i __B)
1142 {
1143   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1144                                             (__v16qi)_mm_shuffle_epi8(__A, __B),
1145                                             (__v16qi)_mm_setzero_si128());
1146 }
1147
1148 static __inline__ __m256i __DEFAULT_FN_ATTRS
1149 _mm256_mask_shuffle_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1150 {
1151   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1152                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
1153                                          (__v32qi)__W);
1154 }
1155
1156 static __inline__ __m256i __DEFAULT_FN_ATTRS
1157 _mm256_maskz_shuffle_epi8(__mmask32 __U, __m256i __A, __m256i __B)
1158 {
1159   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1160                                          (__v32qi)_mm256_shuffle_epi8(__A, __B),
1161                                          (__v32qi)_mm256_setzero_si256());
1162 }
1163
1164 static __inline__ __m128i __DEFAULT_FN_ATTRS
1165 _mm_mask_subs_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1166 {
1167   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1168                                              (__v16qi)_mm_subs_epi8(__A, __B),
1169                                              (__v16qi)__W);
1170 }
1171
1172 static __inline__ __m128i __DEFAULT_FN_ATTRS
1173 _mm_maskz_subs_epi8(__mmask16 __U, __m128i __A, __m128i __B)
1174 {
1175   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1176                                              (__v16qi)_mm_subs_epi8(__A, __B),
1177                                              (__v16qi)_mm_setzero_si128());
1178 }
1179
1180 static __inline__ __m256i __DEFAULT_FN_ATTRS
1181 _mm256_mask_subs_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1182 {
1183   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1184                                             (__v32qi)_mm256_subs_epi8(__A, __B),
1185                                             (__v32qi)__W);
1186 }
1187
1188 static __inline__ __m256i __DEFAULT_FN_ATTRS
1189 _mm256_maskz_subs_epi8(__mmask32 __U, __m256i __A, __m256i __B)
1190 {
1191   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1192                                             (__v32qi)_mm256_subs_epi8(__A, __B),
1193                                             (__v32qi)_mm256_setzero_si256());
1194 }
1195
1196 static __inline__ __m128i __DEFAULT_FN_ATTRS
1197 _mm_mask_subs_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1198 {
1199   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1200                                              (__v8hi)_mm_subs_epi16(__A, __B),
1201                                              (__v8hi)__W);
1202 }
1203
1204 static __inline__ __m128i __DEFAULT_FN_ATTRS
1205 _mm_maskz_subs_epi16(__mmask8 __U, __m128i __A, __m128i __B)
1206 {
1207   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1208                                              (__v8hi)_mm_subs_epi16(__A, __B),
1209                                              (__v8hi)_mm_setzero_si128());
1210 }
1211
1212 static __inline__ __m256i __DEFAULT_FN_ATTRS
1213 _mm256_mask_subs_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
1214 {
1215   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1216                                            (__v16hi)_mm256_subs_epi16(__A, __B),
1217                                            (__v16hi)__W);
1218 }
1219
1220 static __inline__ __m256i __DEFAULT_FN_ATTRS
1221 _mm256_maskz_subs_epi16(__mmask16 __U, __m256i __A, __m256i __B)
1222 {
1223   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1224                                            (__v16hi)_mm256_subs_epi16(__A, __B),
1225                                            (__v16hi)_mm256_setzero_si256());
1226 }
1227
1228 static __inline__ __m128i __DEFAULT_FN_ATTRS
1229 _mm_mask_subs_epu8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B)
1230 {
1231   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1232                                              (__v16qi)_mm_subs_epu8(__A, __B),
1233                                              (__v16qi)__W);
1234 }
1235
1236 static __inline__ __m128i __DEFAULT_FN_ATTRS
1237 _mm_maskz_subs_epu8(__mmask16 __U, __m128i __A, __m128i __B)
1238 {
1239   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1240                                              (__v16qi)_mm_subs_epu8(__A, __B),
1241                                              (__v16qi)_mm_setzero_si128());
1242 }
1243
1244 static __inline__ __m256i __DEFAULT_FN_ATTRS
1245 _mm256_mask_subs_epu8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B)
1246 {
1247   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1248                                             (__v32qi)_mm256_subs_epu8(__A, __B),
1249                                             (__v32qi)__W);
1250 }
1251
1252 static __inline__ __m256i __DEFAULT_FN_ATTRS
1253 _mm256_maskz_subs_epu8(__mmask32 __U, __m256i __A, __m256i __B)
1254 {
1255   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1256                                             (__v32qi)_mm256_subs_epu8(__A, __B),
1257                                             (__v32qi)_mm256_setzero_si256());
1258 }
1259
1260 static __inline__ __m128i __DEFAULT_FN_ATTRS
1261 _mm_mask_subs_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1262 {
1263   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1264                                              (__v8hi)_mm_subs_epu16(__A, __B),
1265                                              (__v8hi)__W);
1266 }
1267
1268 static __inline__ __m128i __DEFAULT_FN_ATTRS
1269 _mm_maskz_subs_epu16(__mmask8 __U, __m128i __A, __m128i __B)
1270 {
1271   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1272                                              (__v8hi)_mm_subs_epu16(__A, __B),
1273                                              (__v8hi)_mm_setzero_si128());
1274 }
1275
1276 static __inline__ __m256i __DEFAULT_FN_ATTRS
1277 _mm256_mask_subs_epu16(__m256i __W, __mmask16 __U, __m256i __A,
1278       __m256i __B) {
1279   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1280                                            (__v16hi)_mm256_subs_epu16(__A, __B),
1281                                            (__v16hi)__W);
1282 }
1283
1284 static __inline__ __m256i __DEFAULT_FN_ATTRS
1285 _mm256_maskz_subs_epu16(__mmask16 __U, __m256i __A, __m256i __B)
1286 {
1287   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1288                                            (__v16hi)_mm256_subs_epu16(__A, __B),
1289                                            (__v16hi)_mm256_setzero_si256());
1290 }
1291
1292 static __inline__ __m128i __DEFAULT_FN_ATTRS
1293 _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
1294             __m128i __B)
1295 {
1296   return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
1297                (__v8hi) __I /* idx */ ,
1298                (__v8hi) __B,
1299                (__mmask8) __U);
1300 }
1301
1302 static __inline__ __m256i __DEFAULT_FN_ATTRS
1303 _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
1304          __mmask16 __U, __m256i __B)
1305 {
1306   return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
1307                (__v16hi) __I /* idx */ ,
1308                (__v16hi) __B,
1309                (__mmask16) __U);
1310 }
1311
1312 static __inline__ __m128i __DEFAULT_FN_ATTRS
1313 _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
1314 {
1315   return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1316                (__v8hi) __A,
1317                (__v8hi) __B,
1318                (__mmask8) -1);
1319 }
1320
1321 static __inline__ __m128i __DEFAULT_FN_ATTRS
1322 _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
1323            __m128i __B)
1324 {
1325   return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1326                (__v8hi) __A,
1327                (__v8hi) __B,
1328                (__mmask8) __U);
1329 }
1330
1331 static __inline__ __m128i __DEFAULT_FN_ATTRS
1332 _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
1333             __m128i __B)
1334 {
1335   return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */,
1336                (__v8hi) __A,
1337                (__v8hi) __B,
1338                (__mmask8) __U);
1339 }
1340
1341 static __inline__ __m256i __DEFAULT_FN_ATTRS
1342 _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
1343 {
1344   return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1345                (__v16hi) __A,
1346                (__v16hi) __B,
1347                (__mmask16) -1);
1348 }
1349
1350 static __inline__ __m256i __DEFAULT_FN_ATTRS
1351 _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
1352         __m256i __I, __m256i __B)
1353 {
1354   return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1355                (__v16hi) __A,
1356                (__v16hi) __B,
1357                (__mmask16) __U);
1358 }
1359
1360 static __inline__ __m256i __DEFAULT_FN_ATTRS
1361 _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
1362          __m256i __I, __m256i __B)
1363 {
1364   return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */,
1365                (__v16hi) __A,
1366                (__v16hi) __B,
1367                (__mmask16) __U);
1368 }
1369
1370 static __inline__ __m128i __DEFAULT_FN_ATTRS
1371 _mm_mask_maddubs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1372   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1373                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
1374                                             (__v8hi)__W);
1375 }
1376
1377 static __inline__ __m128i __DEFAULT_FN_ATTRS
1378 _mm_maskz_maddubs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1379   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1380                                             (__v8hi)_mm_maddubs_epi16(__X, __Y),
1381                                             (__v8hi)_mm_setzero_si128());
1382 }
1383
1384 static __inline__ __m256i __DEFAULT_FN_ATTRS
1385 _mm256_mask_maddubs_epi16(__m256i __W, __mmask16 __U, __m256i __X,
1386                           __m256i __Y) {
1387   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1388                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
1389                                         (__v16hi)__W);
1390 }
1391
1392 static __inline__ __m256i __DEFAULT_FN_ATTRS
1393 _mm256_maskz_maddubs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1394   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1395                                         (__v16hi)_mm256_maddubs_epi16(__X, __Y),
1396                                         (__v16hi)_mm256_setzero_si256());
1397 }
1398
1399 static __inline__ __m128i __DEFAULT_FN_ATTRS
1400 _mm_mask_madd_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1401   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1402                                              (__v4si)_mm_madd_epi16(__A, __B),
1403                                              (__v4si)__W);
1404 }
1405
1406 static __inline__ __m128i __DEFAULT_FN_ATTRS
1407 _mm_maskz_madd_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1408   return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
1409                                              (__v4si)_mm_madd_epi16(__A, __B),
1410                                              (__v4si)_mm_setzero_si128());
1411 }
1412
1413 static __inline__ __m256i __DEFAULT_FN_ATTRS
1414 _mm256_mask_madd_epi16(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1415   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1416                                             (__v8si)_mm256_madd_epi16(__A, __B),
1417                                             (__v8si)__W);
1418 }
1419
1420 static __inline__ __m256i __DEFAULT_FN_ATTRS
1421 _mm256_maskz_madd_epi16(__mmask8 __U, __m256i __A, __m256i __B) {
1422   return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
1423                                             (__v8si)_mm256_madd_epi16(__A, __B),
1424                                             (__v8si)_mm256_setzero_si256());
1425 }
1426
1427 static __inline__ __m128i __DEFAULT_FN_ATTRS
1428 _mm_cvtsepi16_epi8 (__m128i __A) {
1429   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1430                (__v16qi) _mm_setzero_si128(),
1431                (__mmask8) -1);
1432 }
1433
1434 static __inline__ __m128i __DEFAULT_FN_ATTRS
1435 _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1436   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1437                (__v16qi) __O,
1438                 __M);
1439 }
1440
1441 static __inline__ __m128i __DEFAULT_FN_ATTRS
1442 _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
1443   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1444                (__v16qi) _mm_setzero_si128(),
1445                __M);
1446 }
1447
1448 static __inline__ __m128i __DEFAULT_FN_ATTRS
1449 _mm256_cvtsepi16_epi8 (__m256i __A) {
1450   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1451                (__v16qi) _mm_setzero_si128(),
1452                (__mmask16) -1);
1453 }
1454
1455 static __inline__ __m128i __DEFAULT_FN_ATTRS
1456 _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1457   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1458                (__v16qi) __O,
1459                 __M);
1460 }
1461
1462 static __inline__ __m128i __DEFAULT_FN_ATTRS
1463 _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
1464   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1465                (__v16qi) _mm_setzero_si128(),
1466                __M);
1467 }
1468
1469 static __inline__ __m128i __DEFAULT_FN_ATTRS
1470 _mm_cvtusepi16_epi8 (__m128i __A) {
1471   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1472                 (__v16qi) _mm_setzero_si128(),
1473                 (__mmask8) -1);
1474 }
1475
1476 static __inline__ __m128i __DEFAULT_FN_ATTRS
1477 _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1478   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1479                 (__v16qi) __O,
1480                 __M);
1481 }
1482
1483 static __inline__ __m128i __DEFAULT_FN_ATTRS
1484 _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
1485   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1486                 (__v16qi) _mm_setzero_si128(),
1487                 __M);
1488 }
1489
1490 static __inline__ __m128i __DEFAULT_FN_ATTRS
1491 _mm256_cvtusepi16_epi8 (__m256i __A) {
1492   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1493                 (__v16qi) _mm_setzero_si128(),
1494                 (__mmask16) -1);
1495 }
1496
1497 static __inline__ __m128i __DEFAULT_FN_ATTRS
1498 _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1499   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1500                 (__v16qi) __O,
1501                 __M);
1502 }
1503
1504 static __inline__ __m128i __DEFAULT_FN_ATTRS
1505 _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
1506   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1507                 (__v16qi) _mm_setzero_si128(),
1508                 __M);
1509 }
1510
1511 static __inline__ __m128i __DEFAULT_FN_ATTRS
1512 _mm_cvtepi16_epi8 (__m128i __A) {
1513
1514   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1515                (__v16qi) _mm_setzero_si128(),
1516                (__mmask8) -1);
1517 }
1518
1519 static __inline__ __m128i __DEFAULT_FN_ATTRS
1520 _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1521   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1522                (__v16qi) __O,
1523                __M);
1524 }
1525
1526 static __inline__ __m128i __DEFAULT_FN_ATTRS
1527 _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
1528   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1529                (__v16qi) _mm_setzero_si128(),
1530                __M);
1531 }
1532
1533 static __inline__ void __DEFAULT_FN_ATTRS
1534 _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1535 {
1536   __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1537 }
1538
1539
1540 static __inline__ void __DEFAULT_FN_ATTRS
1541 _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1542 {
1543   __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1544 }
1545
1546 static __inline__ void __DEFAULT_FN_ATTRS
1547 _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
1548 {
1549   __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
1550 }
1551
1552 static __inline__ __m128i __DEFAULT_FN_ATTRS
1553 _mm256_cvtepi16_epi8 (__m256i __A) {
1554   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
1555                (__v16qi) _mm_setzero_si128(),
1556                (__mmask16) -1);
1557 }
1558
1559 static __inline__ __m128i __DEFAULT_FN_ATTRS
1560 _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1561   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
1562                (__v16qi) __O,
1563                __M);
1564 }
1565
1566 static __inline__ __m128i __DEFAULT_FN_ATTRS
1567 _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
1568   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
1569                (__v16qi) _mm_setzero_si128(),
1570                __M);
1571 }
1572
1573 static __inline__ void __DEFAULT_FN_ATTRS
1574 _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
1575 {
1576   __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
1577 }
1578
1579 static __inline__ void __DEFAULT_FN_ATTRS
1580 _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
1581 {
1582   __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
1583 }
1584
1585 static __inline__ void __DEFAULT_FN_ATTRS
1586 _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
1587 {
1588   __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
1589 }
1590
1591 static __inline__ __m128i __DEFAULT_FN_ATTRS
1592 _mm_mask_mulhrs_epi16(__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1593   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1594                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
1595                                              (__v8hi)__W);
1596 }
1597
1598 static __inline__ __m128i __DEFAULT_FN_ATTRS
1599 _mm_maskz_mulhrs_epi16(__mmask8 __U, __m128i __X, __m128i __Y) {
1600   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1601                                              (__v8hi)_mm_mulhrs_epi16(__X, __Y),
1602                                              (__v8hi)_mm_setzero_si128());
1603 }
1604
1605 static __inline__ __m256i __DEFAULT_FN_ATTRS
1606 _mm256_mask_mulhrs_epi16(__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
1607   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1608                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
1609                                          (__v16hi)__W);
1610 }
1611
1612 static __inline__ __m256i __DEFAULT_FN_ATTRS
1613 _mm256_maskz_mulhrs_epi16(__mmask16 __U, __m256i __X, __m256i __Y) {
1614   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1615                                          (__v16hi)_mm256_mulhrs_epi16(__X, __Y),
1616                                          (__v16hi)_mm256_setzero_si256());
1617 }
1618
1619 static __inline__ __m128i __DEFAULT_FN_ATTRS
1620 _mm_mask_mulhi_epu16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1621   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1622                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
1623                                              (__v8hi)__W);
1624 }
1625
1626 static __inline__ __m128i __DEFAULT_FN_ATTRS
1627 _mm_maskz_mulhi_epu16(__mmask8 __U, __m128i __A, __m128i __B) {
1628   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1629                                              (__v8hi)_mm_mulhi_epu16(__A, __B),
1630                                              (__v8hi)_mm_setzero_si128());
1631 }
1632
1633 static __inline__ __m256i __DEFAULT_FN_ATTRS
1634 _mm256_mask_mulhi_epu16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1635   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1636                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
1637                                           (__v16hi)__W);
1638 }
1639
1640 static __inline__ __m256i __DEFAULT_FN_ATTRS
1641 _mm256_maskz_mulhi_epu16(__mmask16 __U, __m256i __A, __m256i __B) {
1642   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1643                                           (__v16hi)_mm256_mulhi_epu16(__A, __B),
1644                                           (__v16hi)_mm256_setzero_si256());
1645 }
1646
1647 static __inline__ __m128i __DEFAULT_FN_ATTRS
1648 _mm_mask_mulhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1649   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1650                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
1651                                              (__v8hi)__W);
1652 }
1653
1654 static __inline__ __m128i __DEFAULT_FN_ATTRS
1655 _mm_maskz_mulhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1656   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1657                                              (__v8hi)_mm_mulhi_epi16(__A, __B),
1658                                              (__v8hi)_mm_setzero_si128());
1659 }
1660
1661 static __inline__ __m256i __DEFAULT_FN_ATTRS
1662 _mm256_mask_mulhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1663   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1664                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
1665                                           (__v16hi)__W);
1666 }
1667
1668 static __inline__ __m256i __DEFAULT_FN_ATTRS
1669 _mm256_maskz_mulhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1670   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1671                                           (__v16hi)_mm256_mulhi_epi16(__A, __B),
1672                                           (__v16hi)_mm256_setzero_si256());
1673 }
1674
1675 static __inline__ __m128i __DEFAULT_FN_ATTRS
1676 _mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1677   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1678                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
1679                                            (__v16qi)__W);
1680 }
1681
1682 static __inline__ __m128i __DEFAULT_FN_ATTRS
1683 _mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1684   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1685                                            (__v16qi)_mm_unpackhi_epi8(__A, __B),
1686                                            (__v16qi)_mm_setzero_si128());
1687 }
1688
1689 static __inline__ __m256i __DEFAULT_FN_ATTRS
1690 _mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1691   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1692                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
1693                                         (__v32qi)__W);
1694 }
1695
1696 static __inline__ __m256i __DEFAULT_FN_ATTRS
1697 _mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1698   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1699                                         (__v32qi)_mm256_unpackhi_epi8(__A, __B),
1700                                         (__v32qi)_mm256_setzero_si256());
1701 }
1702
1703 static __inline__ __m128i __DEFAULT_FN_ATTRS
1704 _mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1705   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1706                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
1707                                            (__v8hi)__W);
1708 }
1709
1710 static __inline__ __m128i __DEFAULT_FN_ATTRS
1711 _mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1712   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1713                                            (__v8hi)_mm_unpackhi_epi16(__A, __B),
1714                                            (__v8hi) _mm_setzero_si128());
1715 }
1716
1717 static __inline__ __m256i __DEFAULT_FN_ATTRS
1718 _mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1719   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1720                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
1721                                        (__v16hi)__W);
1722 }
1723
1724 static __inline__ __m256i __DEFAULT_FN_ATTRS
1725 _mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1726   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1727                                        (__v16hi)_mm256_unpackhi_epi16(__A, __B),
1728                                        (__v16hi)_mm256_setzero_si256());
1729 }
1730
1731 static __inline__ __m128i __DEFAULT_FN_ATTRS
1732 _mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
1733   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1734                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
1735                                            (__v16qi)__W);
1736 }
1737
1738 static __inline__ __m128i __DEFAULT_FN_ATTRS
1739 _mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
1740   return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
1741                                            (__v16qi)_mm_unpacklo_epi8(__A, __B),
1742                                            (__v16qi)_mm_setzero_si128());
1743 }
1744
1745 static __inline__ __m256i __DEFAULT_FN_ATTRS
1746 _mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
1747   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1748                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
1749                                         (__v32qi)__W);
1750 }
1751
1752 static __inline__ __m256i __DEFAULT_FN_ATTRS
1753 _mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
1754   return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
1755                                         (__v32qi)_mm256_unpacklo_epi8(__A, __B),
1756                                         (__v32qi)_mm256_setzero_si256());
1757 }
1758
1759 static __inline__ __m128i __DEFAULT_FN_ATTRS
1760 _mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
1761   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1762                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
1763                                            (__v8hi)__W);
1764 }
1765
1766 static __inline__ __m128i __DEFAULT_FN_ATTRS
1767 _mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
1768   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1769                                            (__v8hi)_mm_unpacklo_epi16(__A, __B),
1770                                            (__v8hi) _mm_setzero_si128());
1771 }
1772
1773 static __inline__ __m256i __DEFAULT_FN_ATTRS
1774 _mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
1775   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1776                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
1777                                        (__v16hi)__W);
1778 }
1779
1780 static __inline__ __m256i __DEFAULT_FN_ATTRS
1781 _mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
1782   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1783                                        (__v16hi)_mm256_unpacklo_epi16(__A, __B),
1784                                        (__v16hi)_mm256_setzero_si256());
1785 }
1786
1787 static __inline__ __m128i __DEFAULT_FN_ATTRS
1788 _mm_mask_cvtepi8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
1789 {
1790   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1791                                              (__v8hi)_mm_cvtepi8_epi16(__A),
1792                                              (__v8hi)__W);
1793 }
1794
1795 static __inline__ __m128i __DEFAULT_FN_ATTRS
1796 _mm_maskz_cvtepi8_epi16(__mmask8 __U, __m128i __A)
1797 {
1798   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1799                                              (__v8hi)_mm_cvtepi8_epi16(__A),
1800                                              (__v8hi)_mm_setzero_si128());
1801 }
1802
1803 static __inline__ __m256i __DEFAULT_FN_ATTRS
1804 _mm256_mask_cvtepi8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
1805 {
1806   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1807                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
1808                                              (__v16hi)__W);
1809 }
1810
1811 static __inline__ __m256i __DEFAULT_FN_ATTRS
1812 _mm256_maskz_cvtepi8_epi16(__mmask16 __U, __m128i __A)
1813 {
1814   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1815                                              (__v16hi)_mm256_cvtepi8_epi16(__A),
1816                                              (__v16hi)_mm256_setzero_si256());
1817 }
1818
1819
1820 static __inline__ __m128i __DEFAULT_FN_ATTRS
1821 _mm_mask_cvtepu8_epi16(__m128i __W, __mmask8 __U, __m128i __A)
1822 {
1823   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1824                                              (__v8hi)_mm_cvtepu8_epi16(__A),
1825                                              (__v8hi)__W);
1826 }
1827
1828 static __inline__ __m128i __DEFAULT_FN_ATTRS
1829 _mm_maskz_cvtepu8_epi16(__mmask8 __U, __m128i __A)
1830 {
1831   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1832                                              (__v8hi)_mm_cvtepu8_epi16(__A),
1833                                              (__v8hi)_mm_setzero_si128());
1834 }
1835
1836 static __inline__ __m256i __DEFAULT_FN_ATTRS
1837 _mm256_mask_cvtepu8_epi16(__m256i __W, __mmask16 __U, __m128i __A)
1838 {
1839   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1840                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
1841                                              (__v16hi)__W);
1842 }
1843
1844 static __inline__ __m256i __DEFAULT_FN_ATTRS
1845 _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
1846 {
1847   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1848                                              (__v16hi)_mm256_cvtepu8_epi16(__A),
1849                                              (__v16hi)_mm256_setzero_si256());
1850 }
1851
1852
1853 #define _mm_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1854   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1855                                       (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
1856                                       (__v8hi)(__m128i)(W)); })
1857
1858 #define _mm_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1859   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1860                                       (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
1861                                       (__v8hi)_mm_setzero_hi()); })
1862
1863 #define _mm256_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
1864   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1865                                       (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
1866                                       (__v16hi)(__m256i)(W)); })
1867
1868 #define _mm256_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
1869   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1870                                       (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
1871                                       (__v16hi)_mm256_setzero_si256()); })
1872
1873 #define _mm_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1874   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1875                                       (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
1876                                       (__v8hi)(__m128i)(W)); })
1877
1878 #define _mm_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1879   (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
1880                                       (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
1881                                       (__v8hi)_mm_setzero_hi()); })
1882
1883 #define _mm256_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
1884   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1885                                       (__v16hi)_mm256_shufflelo_epi16((A), \
1886                                                                       (imm)), \
1887                                       (__v16hi)(__m256i)(W)); })
1888
1889 #define _mm256_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
1890   (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
1891                                       (__v16hi)_mm256_shufflelo_epi16((A), \
1892                                                                       (imm)), \
1893                                       (__v16hi)_mm256_setzero_si256()); })
1894
1895 static __inline__ __m256i __DEFAULT_FN_ATTRS
1896 _mm256_sllv_epi16(__m256i __A, __m256i __B)
1897 {
1898   return (__m256i)__builtin_ia32_psllv16hi((__v16hi)__A, (__v16hi)__B);
1899 }
1900
1901 static __inline__ __m256i __DEFAULT_FN_ATTRS
1902 _mm256_mask_sllv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
1903 {
1904   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1905                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
1906                                            (__v16hi)__W);
1907 }
1908
1909 static __inline__ __m256i __DEFAULT_FN_ATTRS
1910 _mm256_maskz_sllv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
1911 {
1912   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1913                                            (__v16hi)_mm256_sllv_epi16(__A, __B),
1914                                            (__v16hi)_mm256_setzero_si256());
1915 }
1916
1917 static __inline__ __m128i __DEFAULT_FN_ATTRS
1918 _mm_sllv_epi16(__m128i __A, __m128i __B)
1919 {
1920   return (__m128i)__builtin_ia32_psllv8hi((__v8hi)__A, (__v8hi)__B);
1921 }
1922
1923 static __inline__ __m128i __DEFAULT_FN_ATTRS
1924 _mm_mask_sllv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1925 {
1926   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1927                                              (__v8hi)_mm_sllv_epi16(__A, __B),
1928                                              (__v8hi)__W);
1929 }
1930
1931 static __inline__ __m128i __DEFAULT_FN_ATTRS
1932 _mm_maskz_sllv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
1933 {
1934   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1935                                              (__v8hi)_mm_sllv_epi16(__A, __B),
1936                                              (__v8hi)_mm_setzero_si128());
1937 }
1938
1939 static __inline__ __m128i __DEFAULT_FN_ATTRS
1940 _mm_mask_sll_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1941 {
1942   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1943                                              (__v8hi)_mm_sll_epi16(__A, __B),
1944                                              (__v8hi)__W);
1945 }
1946
1947 static __inline__ __m128i __DEFAULT_FN_ATTRS
1948 _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1949 {
1950   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1951                                              (__v8hi)_mm_sll_epi16(__A, __B),
1952                                              (__v8hi)_mm_setzero_si128());
1953 }
1954
1955 static __inline__ __m256i __DEFAULT_FN_ATTRS
1956 _mm256_mask_sll_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
1957 {
1958   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1959                                           (__v16hi)_mm256_sll_epi16(__A, __B),
1960                                           (__v16hi)__W);
1961 }
1962
1963 static __inline__ __m256i __DEFAULT_FN_ATTRS
1964 _mm256_maskz_sll_epi16(__mmask16 __U, __m256i __A, __m128i __B)
1965 {
1966   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1967                                           (__v16hi)_mm256_sll_epi16(__A, __B),
1968                                           (__v16hi)_mm256_setzero_si256());
1969 }
1970
1971 static __inline__ __m128i __DEFAULT_FN_ATTRS
1972 _mm_mask_slli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
1973 {
1974   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1975                                              (__v8hi)_mm_slli_epi16(__A, __B),
1976                                              (__v8hi)__W);
1977 }
1978
1979 static __inline__ __m128i __DEFAULT_FN_ATTRS
1980 _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
1981 {
1982   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
1983                                              (__v8hi)_mm_slli_epi16(__A, __B),
1984                                              (__v8hi)_mm_setzero_si128());
1985 }
1986
1987 static __inline__ __m256i __DEFAULT_FN_ATTRS
1988 _mm256_mask_slli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
1989 {
1990   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1991                                          (__v16hi)_mm256_slli_epi16(__A, __B),
1992                                          (__v16hi)__W);
1993 }
1994
1995 static __inline__ __m256i __DEFAULT_FN_ATTRS
1996 _mm256_maskz_slli_epi16(__mmask16 __U, __m256i __A, int __B)
1997 {
1998   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
1999                                          (__v16hi)_mm256_slli_epi16(__A, __B),
2000                                          (__v16hi)_mm256_setzero_si256());
2001 }
2002
2003 static __inline__ __m256i __DEFAULT_FN_ATTRS
2004 _mm256_srlv_epi16(__m256i __A, __m256i __B)
2005 {
2006   return (__m256i)__builtin_ia32_psrlv16hi((__v16hi)__A, (__v16hi)__B);
2007 }
2008
2009 static __inline__ __m256i __DEFAULT_FN_ATTRS
2010 _mm256_mask_srlv_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
2011 {
2012   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2013                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
2014                                            (__v16hi)__W);
2015 }
2016
2017 static __inline__ __m256i __DEFAULT_FN_ATTRS
2018 _mm256_maskz_srlv_epi16(__mmask16 __U, __m256i __A, __m256i __B)
2019 {
2020   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2021                                            (__v16hi)_mm256_srlv_epi16(__A, __B),
2022                                            (__v16hi)_mm256_setzero_si256());
2023 }
2024
2025 static __inline__ __m128i __DEFAULT_FN_ATTRS
2026 _mm_srlv_epi16(__m128i __A, __m128i __B)
2027 {
2028   return (__m128i)__builtin_ia32_psrlv8hi((__v8hi)__A, (__v8hi)__B);
2029 }
2030
2031 static __inline__ __m128i __DEFAULT_FN_ATTRS
2032 _mm_mask_srlv_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2033 {
2034   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2035                                              (__v8hi)_mm_srlv_epi16(__A, __B),
2036                                              (__v8hi)__W);
2037 }
2038
2039 static __inline__ __m128i __DEFAULT_FN_ATTRS
2040 _mm_maskz_srlv_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2041 {
2042   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2043                                              (__v8hi)_mm_srlv_epi16(__A, __B),
2044                                              (__v8hi)_mm_setzero_si128());
2045 }
2046
2047 static __inline__ __m256i __DEFAULT_FN_ATTRS
2048 _mm256_srav_epi16(__m256i __A, __m256i __B)
2049 {
2050   return (__m256i)__builtin_ia32_psrav16hi((__v16hi)__A, (__v16hi)__B);
2051 }
2052
2053 static __inline__ __m256i __DEFAULT_FN_ATTRS
2054 _mm256_mask_srav_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B)
2055 {
2056   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2057                                            (__v16hi)_mm256_srav_epi16(__A, __B),
2058                                            (__v16hi)__W);
2059 }
2060
2061 static __inline__ __m256i __DEFAULT_FN_ATTRS
2062 _mm256_maskz_srav_epi16(__mmask16 __U, __m256i __A, __m256i __B)
2063 {
2064   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2065                                            (__v16hi)_mm256_srav_epi16(__A, __B),
2066                                            (__v16hi)_mm256_setzero_si256());
2067 }
2068
2069 static __inline__ __m128i __DEFAULT_FN_ATTRS
2070 _mm_srav_epi16(__m128i __A, __m128i __B)
2071 {
2072   return (__m128i)__builtin_ia32_psrav8hi((__v8hi)__A, (__v8hi)__B);
2073 }
2074
2075 static __inline__ __m128i __DEFAULT_FN_ATTRS
2076 _mm_mask_srav_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2077 {
2078   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2079                                              (__v8hi)_mm_srav_epi16(__A, __B),
2080                                              (__v8hi)__W);
2081 }
2082
2083 static __inline__ __m128i __DEFAULT_FN_ATTRS
2084 _mm_maskz_srav_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2085 {
2086   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2087                                              (__v8hi)_mm_srav_epi16(__A, __B),
2088                                              (__v8hi)_mm_setzero_si128());
2089 }
2090
2091 static __inline__ __m128i __DEFAULT_FN_ATTRS
2092 _mm_mask_sra_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2093 {
2094   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2095                                              (__v8hi)_mm_sra_epi16(__A, __B),
2096                                              (__v8hi)__W);
2097 }
2098
2099 static __inline__ __m128i __DEFAULT_FN_ATTRS
2100 _mm_maskz_sra_epi16(__mmask8 __U, __m128i __A, __m128i __B)
2101 {
2102   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2103                                              (__v8hi)_mm_sra_epi16(__A, __B),
2104                                              (__v8hi)_mm_setzero_si128());
2105 }
2106
2107 static __inline__ __m256i __DEFAULT_FN_ATTRS
2108 _mm256_mask_sra_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
2109 {
2110   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2111                                           (__v16hi)_mm256_sra_epi16(__A, __B),
2112                                           (__v16hi)__W);
2113 }
2114
2115 static __inline__ __m256i __DEFAULT_FN_ATTRS
2116 _mm256_maskz_sra_epi16(__mmask16 __U, __m256i __A, __m128i __B)
2117 {
2118   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2119                                           (__v16hi)_mm256_sra_epi16(__A, __B),
2120                                           (__v16hi)_mm256_setzero_si256());
2121 }
2122
2123 static __inline__ __m128i __DEFAULT_FN_ATTRS
2124 _mm_mask_srai_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
2125 {
2126   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2127                                              (__v8hi)_mm_srai_epi16(__A, __B),
2128                                              (__v8hi)__W);
2129 }
2130
2131 static __inline__ __m128i __DEFAULT_FN_ATTRS
2132 _mm_maskz_srai_epi16(__mmask8 __U, __m128i __A, int __B)
2133 {
2134   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2135                                              (__v8hi)_mm_srai_epi16(__A, __B),
2136                                              (__v8hi)_mm_setzero_si128());
2137 }
2138
2139 static __inline__ __m256i __DEFAULT_FN_ATTRS
2140 _mm256_mask_srai_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
2141 {
2142   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2143                                          (__v16hi)_mm256_srai_epi16(__A, __B),
2144                                          (__v16hi)__W);
2145 }
2146
2147 static __inline__ __m256i __DEFAULT_FN_ATTRS
2148 _mm256_maskz_srai_epi16(__mmask16 __U, __m256i __A, int __B)
2149 {
2150   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2151                                          (__v16hi)_mm256_srai_epi16(__A, __B),
2152                                          (__v16hi)_mm256_setzero_si256());
2153 }
2154
2155 static __inline__ __m128i __DEFAULT_FN_ATTRS
2156 _mm_mask_srl_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
2157 {
2158   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2159                                              (__v8hi)_mm_srl_epi16(__A, __B),
2160                                              (__v8hi)__W);
2161 }
2162
2163 static __inline__ __m128i __DEFAULT_FN_ATTRS
2164 _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2165 {
2166   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2167                                              (__v8hi)_mm_srl_epi16(__A, __B),
2168                                              (__v8hi)_mm_setzero_si128());
2169 }
2170
2171 static __inline__ __m256i __DEFAULT_FN_ATTRS
2172 _mm256_mask_srl_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m128i __B)
2173 {
2174   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2175                                           (__v16hi)_mm256_srl_epi16(__A, __B),
2176                                           (__v16hi)__W);
2177 }
2178
2179 static __inline__ __m256i __DEFAULT_FN_ATTRS
2180 _mm256_maskz_srl_epi16(__mmask16 __U, __m256i __A, __m128i __B)
2181 {
2182   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2183                                           (__v16hi)_mm256_srl_epi16(__A, __B),
2184                                           (__v16hi)_mm256_setzero_si256());
2185 }
2186
2187 static __inline__ __m128i __DEFAULT_FN_ATTRS
2188 _mm_mask_srli_epi16(__m128i __W, __mmask8 __U, __m128i __A, int __B)
2189 {
2190   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2191                                              (__v8hi)_mm_srli_epi16(__A, __B),
2192                                              (__v8hi)__W);
2193 }
2194
2195 static __inline__ __m128i __DEFAULT_FN_ATTRS
2196 _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, int __B)
2197 {
2198   return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2199                                              (__v8hi)_mm_srli_epi16(__A, __B),
2200                                              (__v8hi)_mm_setzero_si128());
2201 }
2202
2203 static __inline__ __m256i __DEFAULT_FN_ATTRS
2204 _mm256_mask_srli_epi16(__m256i __W, __mmask16 __U, __m256i __A, int __B)
2205 {
2206   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2207                                          (__v16hi)_mm256_srli_epi16(__A, __B),
2208                                          (__v16hi)__W);
2209 }
2210
2211 static __inline__ __m256i __DEFAULT_FN_ATTRS
2212 _mm256_maskz_srli_epi16(__mmask16 __U, __m256i __A, int __B)
2213 {
2214   return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2215                                          (__v16hi)_mm256_srli_epi16(__A, __B),
2216                                          (__v16hi)_mm256_setzero_si256());
2217 }
2218
2219 static __inline__ __m128i __DEFAULT_FN_ATTRS
2220 _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2221 {
2222   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2223                 (__v8hi) __A,
2224                 (__v8hi) __W);
2225 }
2226
2227 static __inline__ __m128i __DEFAULT_FN_ATTRS
2228 _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2229 {
2230   return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2231                 (__v8hi) __A,
2232                 (__v8hi) _mm_setzero_hi ());
2233 }
2234
2235 static __inline__ __m256i __DEFAULT_FN_ATTRS
2236 _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2237 {
2238   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2239                 (__v16hi) __A,
2240                 (__v16hi) __W);
2241 }
2242
2243 static __inline__ __m256i __DEFAULT_FN_ATTRS
2244 _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2245 {
2246   return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2247                 (__v16hi) __A,
2248                 (__v16hi) _mm256_setzero_si256 ());
2249 }
2250
2251 static __inline__ __m128i __DEFAULT_FN_ATTRS
2252 _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2253 {
2254   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2255                 (__v16qi) __A,
2256                 (__v16qi) __W);
2257 }
2258
2259 static __inline__ __m128i __DEFAULT_FN_ATTRS
2260 _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2261 {
2262   return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2263                 (__v16qi) __A,
2264                 (__v16qi) _mm_setzero_hi ());
2265 }
2266
2267 static __inline__ __m256i __DEFAULT_FN_ATTRS
2268 _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2269 {
2270   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2271                 (__v32qi) __A,
2272                 (__v32qi) __W);
2273 }
2274
2275 static __inline__ __m256i __DEFAULT_FN_ATTRS
2276 _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2277 {
2278   return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2279                 (__v32qi) __A,
2280                 (__v32qi) _mm256_setzero_si256 ());
2281 }
2282
2283
2284 static __inline__ __m128i __DEFAULT_FN_ATTRS
2285 _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2286 {
2287   return (__m128i) __builtin_ia32_selectb_128(__M,
2288                                               (__v16qi) _mm_set1_epi8(__A),
2289                                               (__v16qi) __O);
2290 }
2291
2292 static __inline__ __m128i __DEFAULT_FN_ATTRS
2293 _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2294 {
2295  return (__m128i) __builtin_ia32_selectb_128(__M,
2296                                              (__v16qi) _mm_set1_epi8(__A),
2297                                              (__v16qi) _mm_setzero_si128());
2298 }
2299
2300 static __inline__ __m256i __DEFAULT_FN_ATTRS
2301 _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2302 {
2303   return (__m256i) __builtin_ia32_selectb_256(__M,
2304                                               (__v32qi) _mm256_set1_epi8(__A),
2305                                               (__v32qi) __O);
2306 }
2307
2308 static __inline__ __m256i __DEFAULT_FN_ATTRS
2309 _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2310 {
2311   return (__m256i) __builtin_ia32_selectb_256(__M,
2312                                               (__v32qi) _mm256_set1_epi8(__A),
2313                                               (__v32qi) _mm256_setzero_si256());
2314 }
2315
2316 static __inline__ __m128i __DEFAULT_FN_ATTRS
2317 _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
2318 {
2319   return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2320                  (__v8hi) __W,
2321                  (__mmask8) __U);
2322 }
2323
2324 static __inline__ __m128i __DEFAULT_FN_ATTRS
2325 _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
2326 {
2327   return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2328                  (__v8hi)
2329                  _mm_setzero_hi (),
2330                  (__mmask8) __U);
2331 }
2332
2333 static __inline__ __m256i __DEFAULT_FN_ATTRS
2334 _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
2335 {
2336   return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2337                  (__v16hi) __W,
2338                  (__mmask16) __U);
2339 }
2340
2341 static __inline__ __m256i __DEFAULT_FN_ATTRS
2342 _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
2343 {
2344   return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2345                  (__v16hi)
2346                  _mm256_setzero_si256 (),
2347                  (__mmask16) __U);
2348 }
2349
2350 static __inline__ __m128i __DEFAULT_FN_ATTRS
2351 _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
2352 {
2353   return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2354                  (__v16qi) __W,
2355                  (__mmask16) __U);
2356 }
2357
2358 static __inline__ __m128i __DEFAULT_FN_ATTRS
2359 _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
2360 {
2361   return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2362                  (__v16qi)
2363                  _mm_setzero_si128 (),
2364                  (__mmask16) __U);
2365 }
2366
2367 static __inline__ __m256i __DEFAULT_FN_ATTRS
2368 _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
2369 {
2370   return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2371                  (__v32qi) __W,
2372                  (__mmask32) __U);
2373 }
2374
2375 static __inline__ __m256i __DEFAULT_FN_ATTRS
2376 _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
2377 {
2378   return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2379                  (__v32qi)
2380                  _mm256_setzero_si256 (),
2381                  (__mmask32) __U);
2382 }
2383 static __inline__ void __DEFAULT_FN_ATTRS
2384 _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
2385 {
2386   __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
2387              (__v8hi) __A,
2388              (__mmask8) __U);
2389 }
2390
2391 static __inline__ void __DEFAULT_FN_ATTRS
2392 _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
2393 {
2394   __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
2395              (__v16hi) __A,
2396              (__mmask16) __U);
2397 }
2398
2399 static __inline__ void __DEFAULT_FN_ATTRS
2400 _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
2401 {
2402   __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
2403              (__v16qi) __A,
2404              (__mmask16) __U);
2405 }
2406
2407 static __inline__ void __DEFAULT_FN_ATTRS
2408 _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
2409 {
2410   __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
2411              (__v32qi) __A,
2412              (__mmask32) __U);
2413 }
2414
2415 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2416 _mm_test_epi8_mask (__m128i __A, __m128i __B)
2417 {
2418   return _mm_cmpneq_epi8_mask (_mm_and_si128(__A, __B), _mm_setzero_hi());
2419 }
2420
2421 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2422 _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
2423 {
2424   return _mm_mask_cmpneq_epi8_mask (__U, _mm_and_si128 (__A, __B),
2425                                     _mm_setzero_hi());
2426 }
2427
2428 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2429 _mm256_test_epi8_mask (__m256i __A, __m256i __B)
2430 {
2431   return _mm256_cmpneq_epi8_mask (_mm256_and_si256(__A, __B),
2432                                   _mm256_setzero_si256());
2433 }
2434
2435 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2436 _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
2437 {
2438   return _mm256_mask_cmpneq_epi8_mask (__U, _mm256_and_si256(__A, __B),
2439                                        _mm256_setzero_si256());
2440 }
2441
2442 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
2443 _mm_test_epi16_mask (__m128i __A, __m128i __B)
2444 {
2445   return _mm_cmpneq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
2446 }
2447
2448 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
2449 _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
2450 {
2451   return _mm_mask_cmpneq_epi16_mask (__U, _mm_and_si128 (__A, __B),
2452                                      _mm_setzero_hi());
2453 }
2454
2455 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2456 _mm256_test_epi16_mask (__m256i __A, __m256i __B)
2457 {
2458   return _mm256_cmpneq_epi16_mask (_mm256_and_si256 (__A, __B),
2459                                    _mm256_setzero_si256 ());
2460 }
2461
2462 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2463 _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
2464 {
2465   return _mm256_mask_cmpneq_epi16_mask (__U, _mm256_and_si256(__A, __B),
2466                                         _mm256_setzero_si256());
2467 }
2468
2469 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2470 _mm_testn_epi8_mask (__m128i __A, __m128i __B)
2471 {
2472   return _mm_cmpeq_epi8_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
2473 }
2474
2475 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2476 _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
2477 {
2478   return _mm_mask_cmpeq_epi8_mask (__U, _mm_and_si128 (__A, __B),
2479                                   _mm_setzero_hi());
2480 }
2481
2482 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2483 _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
2484 {
2485   return _mm256_cmpeq_epi8_mask (_mm256_and_si256 (__A, __B),
2486                                  _mm256_setzero_si256());
2487 }
2488
2489 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2490 _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
2491 {
2492   return _mm256_mask_cmpeq_epi8_mask (__U, _mm256_and_si256 (__A, __B),
2493                                       _mm256_setzero_si256());
2494 }
2495
2496 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
2497 _mm_testn_epi16_mask (__m128i __A, __m128i __B)
2498 {
2499   return _mm_cmpeq_epi16_mask (_mm_and_si128 (__A, __B), _mm_setzero_hi());
2500 }
2501
2502 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
2503 _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
2504 {
2505   return _mm_mask_cmpeq_epi16_mask (__U, _mm_and_si128(__A, __B), _mm_setzero_hi());
2506 }
2507
2508 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2509 _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
2510 {
2511   return _mm256_cmpeq_epi16_mask (_mm256_and_si256(__A, __B),
2512                                   _mm256_setzero_si256());
2513 }
2514
2515 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2516 _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
2517 {
2518   return _mm256_mask_cmpeq_epi16_mask (__U, _mm256_and_si256 (__A, __B),
2519                                        _mm256_setzero_si256());
2520 }
2521
2522 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2523 _mm_movepi8_mask (__m128i __A)
2524 {
2525   return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
2526 }
2527
2528 static __inline__ __mmask32 __DEFAULT_FN_ATTRS
2529 _mm256_movepi8_mask (__m256i __A)
2530 {
2531   return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
2532 }
2533
2534 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
2535 _mm_movepi16_mask (__m128i __A)
2536 {
2537   return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
2538 }
2539
2540 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
2541 _mm256_movepi16_mask (__m256i __A)
2542 {
2543   return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
2544 }
2545
2546 static __inline__ __m128i __DEFAULT_FN_ATTRS
2547 _mm_movm_epi8 (__mmask16 __A)
2548 {
2549   return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
2550 }
2551
2552 static __inline__ __m256i __DEFAULT_FN_ATTRS
2553 _mm256_movm_epi8 (__mmask32 __A)
2554 {
2555   return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
2556 }
2557
2558 static __inline__ __m128i __DEFAULT_FN_ATTRS
2559 _mm_movm_epi16 (__mmask8 __A)
2560 {
2561   return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
2562 }
2563
2564 static __inline__ __m256i __DEFAULT_FN_ATTRS
2565 _mm256_movm_epi16 (__mmask16 __A)
2566 {
2567   return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
2568 }
2569
2570 static __inline__ __m128i __DEFAULT_FN_ATTRS
2571 _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
2572 {
2573   return (__m128i)__builtin_ia32_selectb_128(__M,
2574                                              (__v16qi) _mm_broadcastb_epi8(__A),
2575                                              (__v16qi) __O);
2576 }
2577
2578 static __inline__ __m128i __DEFAULT_FN_ATTRS
2579 _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
2580 {
2581   return (__m128i)__builtin_ia32_selectb_128(__M,
2582                                              (__v16qi) _mm_broadcastb_epi8(__A),
2583                                              (__v16qi) _mm_setzero_si128());
2584 }
2585
2586 static __inline__ __m256i __DEFAULT_FN_ATTRS
2587 _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
2588 {
2589   return (__m256i)__builtin_ia32_selectb_256(__M,
2590                                              (__v32qi) _mm256_broadcastb_epi8(__A),
2591                                              (__v32qi) __O);
2592 }
2593
2594 static __inline__ __m256i __DEFAULT_FN_ATTRS
2595 _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
2596 {
2597   return (__m256i)__builtin_ia32_selectb_256(__M,
2598                                              (__v32qi) _mm256_broadcastb_epi8(__A),
2599                                              (__v32qi) _mm256_setzero_si256());
2600 }
2601
2602 static __inline__ __m128i __DEFAULT_FN_ATTRS
2603 _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
2604 {
2605   return (__m128i)__builtin_ia32_selectw_128(__M,
2606                                              (__v8hi) _mm_broadcastw_epi16(__A),
2607                                              (__v8hi) __O);
2608 }
2609
2610 static __inline__ __m128i __DEFAULT_FN_ATTRS
2611 _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
2612 {
2613   return (__m128i)__builtin_ia32_selectw_128(__M,
2614                                              (__v8hi) _mm_broadcastw_epi16(__A),
2615                                              (__v8hi) _mm_setzero_si128());
2616 }
2617
2618 static __inline__ __m256i __DEFAULT_FN_ATTRS
2619 _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
2620 {
2621   return (__m256i)__builtin_ia32_selectw_256(__M,
2622                                              (__v16hi) _mm256_broadcastw_epi16(__A),
2623                                              (__v16hi) __O);
2624 }
2625
2626 static __inline__ __m256i __DEFAULT_FN_ATTRS
2627 _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
2628 {
2629   return (__m256i)__builtin_ia32_selectw_256(__M,
2630                                              (__v16hi) _mm256_broadcastw_epi16(__A),
2631                                              (__v16hi) _mm256_setzero_si256());
2632 }
2633
2634 static __inline__ __m256i __DEFAULT_FN_ATTRS
2635 _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
2636 {
2637   return (__m256i) __builtin_ia32_selectw_256 (__M,
2638                                                (__v16hi) _mm256_set1_epi16(__A),
2639                                                (__v16hi) __O);
2640 }
2641
2642 static __inline__ __m256i __DEFAULT_FN_ATTRS
2643 _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
2644 {
2645   return (__m256i) __builtin_ia32_selectw_256(__M,
2646                                               (__v16hi)_mm256_set1_epi16(__A),
2647                                               (__v16hi) _mm256_setzero_si256());
2648 }
2649
2650 static __inline__ __m128i __DEFAULT_FN_ATTRS
2651 _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
2652 {
2653   return (__m128i) __builtin_ia32_selectw_128(__M,
2654                                               (__v8hi) _mm_set1_epi16(__A),
2655                                               (__v8hi) __O);
2656 }
2657
2658 static __inline__ __m128i __DEFAULT_FN_ATTRS
2659 _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
2660 {
2661   return (__m128i) __builtin_ia32_selectw_128(__M,
2662                                               (__v8hi) _mm_set1_epi16(__A),
2663                                               (__v8hi) _mm_setzero_si128());
2664 }
2665
2666 static __inline__ __m128i __DEFAULT_FN_ATTRS
2667 _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
2668 {
2669   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
2670                  (__v8hi) __A,
2671                  (__v8hi) _mm_undefined_si128 (),
2672                  (__mmask8) -1);
2673 }
2674
2675 static __inline__ __m128i __DEFAULT_FN_ATTRS
2676 _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
2677 {
2678   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
2679                  (__v8hi) __A,
2680                  (__v8hi) _mm_setzero_si128 (),
2681                  (__mmask8) __M);
2682 }
2683
2684 static __inline__ __m128i __DEFAULT_FN_ATTRS
2685 _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
2686           __m128i __B)
2687 {
2688   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
2689                  (__v8hi) __A,
2690                  (__v8hi) __W,
2691                  (__mmask8) __M);
2692 }
2693
2694 static __inline__ __m256i __DEFAULT_FN_ATTRS
2695 _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
2696 {
2697   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
2698                  (__v16hi) __A,
2699                  (__v16hi) _mm256_undefined_si256 (),
2700                  (__mmask16) -1);
2701 }
2702
2703 static __inline__ __m256i __DEFAULT_FN_ATTRS
2704 _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
2705         __m256i __B)
2706 {
2707   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
2708                  (__v16hi) __A,
2709                  (__v16hi) _mm256_setzero_si256 (),
2710                  (__mmask16) __M);
2711 }
2712
2713 static __inline__ __m256i __DEFAULT_FN_ATTRS
2714 _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
2715              __m256i __B)
2716 {
2717   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
2718                  (__v16hi) __A,
2719                  (__v16hi) __W,
2720                  (__mmask16) __M);
2721 }
2722
2723 #define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
2724   (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
2725                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
2726                                  (__v16qi)(__m128i)(W)); })
2727
2728 #define _mm_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
2729   (__m128i)__builtin_ia32_selectb_128((__mmask16)(U), \
2730                                  (__v16qi)_mm_alignr_epi8((A), (B), (int)(N)), \
2731                                  (__v16qi)_mm_setzero_si128()); })
2732
2733 #define _mm256_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
2734   (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
2735                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
2736                               (__v32qi)(__m256i)(W)); })
2737
2738 #define _mm256_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
2739   (__m256i)__builtin_ia32_selectb_256((__mmask32)(U), \
2740                               (__v32qi)_mm256_alignr_epi8((A), (B), (int)(N)), \
2741                               (__v32qi)_mm256_setzero_si256()); })
2742
2743 #define _mm_dbsad_epu8(A, B, imm) __extension__ ({ \
2744   (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
2745                                            (__v16qi)(__m128i)(B), (int)(imm), \
2746                                            (__v8hi)_mm_setzero_hi(), \
2747                                            (__mmask8)-1); })
2748
2749 #define _mm_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
2750   (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
2751                                            (__v16qi)(__m128i)(B), (int)(imm), \
2752                                            (__v8hi)(__m128i)(W), \
2753                                            (__mmask8)(U)); })
2754
2755 #define _mm_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
2756   (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
2757                                            (__v16qi)(__m128i)(B), (int)(imm), \
2758                                            (__v8hi)_mm_setzero_si128(), \
2759                                            (__mmask8)(U)); })
2760
2761 #define _mm256_dbsad_epu8(A, B, imm) __extension__ ({ \
2762   (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
2763                                            (__v32qi)(__m256i)(B), (int)(imm), \
2764                                            (__v16hi)_mm256_setzero_si256(), \
2765                                            (__mmask16)-1); })
2766
2767 #define _mm256_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
2768   (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
2769                                            (__v32qi)(__m256i)(B), (int)(imm), \
2770                                            (__v16hi)(__m256i)(W), \
2771                                            (__mmask16)(U)); })
2772
2773 #define _mm256_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
2774   (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
2775                                            (__v32qi)(__m256i)(B), (int)(imm), \
2776                                            (__v16hi)_mm256_setzero_si256(), \
2777                                            (__mmask16)(U)); })
2778
2779 #undef __DEFAULT_FN_ATTRS
2780
2781 #endif /* __AVX512VLBWINTRIN_H */