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