1 /* Copyright (C) 2014-2018 Free Software Foundation, Inc.
2 
3    This file is part of GCC.
4 
5    GCC is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3, or (at your option)
8    any later version.
9 
10    GCC is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14 
15    Under Section 7 of GPL version 3, you are granted additional
16    permissions described in the GCC Runtime Library Exception, version
17    3.1, as published by the Free Software Foundation.
18 
19    You should have received a copy of the GNU General Public License and
20    a copy of the GCC Runtime Library Exception along with this program;
21    see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
22    <http://www.gnu.org/licenses/>.  */
23 
24 #ifndef _IMMINTRIN_H_INCLUDED
25 #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27 
28 #ifndef _AVX512VLBWINTRIN_H_INCLUDED
29 #define _AVX512VLBWINTRIN_H_INCLUDED
30 
31 #if !defined(__AVX512VL__) || !defined(__AVX512BW__)
32 #pragma GCC push_options
33 #pragma GCC target("avx512vl,avx512bw")
34 #define __DISABLE_AVX512VLBW__
35 #endif /* __AVX512VLBW__ */
36 
37 
38 extern __inline __m256i
39 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
40 _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
41 {
42   return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
43 						    (__v32qi) __W,
44 						    (__mmask32) __U);
45 }
46 
47 extern __inline __m256i
48 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
49 _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
50 {
51   return (__m256i) __builtin_ia32_movdquqi256_mask ((__v32qi) __A,
52 						    (__v32qi)
53 						    _mm256_setzero_si256 (),
54 						    (__mmask32) __U);
55 }
56 
57 extern __inline __m128i
58 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
59 _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
60 {
61   return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
62 						    (__v16qi) __W,
63 						    (__mmask16) __U);
64 }
65 
66 extern __inline __m128i
67 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
68 _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
69 {
70   return (__m128i) __builtin_ia32_movdquqi128_mask ((__v16qi) __A,
71 						    (__v16qi)
72 						    _mm_setzero_si128 (),
73 						    (__mmask16) __U);
74 }
75 
76 extern __inline void
77 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
78 _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
79 {
80   __builtin_ia32_storedquqi256_mask ((char *) __P,
81 				     (__v32qi) __A,
82 				     (__mmask32) __U);
83 }
84 
85 extern __inline void
86 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
87 _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
88 {
89   __builtin_ia32_storedquqi128_mask ((char *) __P,
90 				     (__v16qi) __A,
91 				     (__mmask16) __U);
92 }
93 
94 extern __inline __m256i
95 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
96 _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
97 {
98   return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
99 						     (__v16hi) __W,
100 						     (__mmask16) __U);
101 }
102 
103 extern __inline __m256i
104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
105 _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
106 {
107   return (__m256i) __builtin_ia32_loaddquhi256_mask ((const short *) __P,
108 						     (__v16hi)
109 						     _mm256_setzero_si256 (),
110 						     (__mmask16) __U);
111 }
112 
113 extern __inline __m128i
114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
115 _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
116 {
117   return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
118 						     (__v8hi) __W,
119 						     (__mmask8) __U);
120 }
121 
122 extern __inline __m128i
123 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
124 _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
125 {
126   return (__m128i) __builtin_ia32_loaddquhi128_mask ((const short *) __P,
127 						     (__v8hi)
128 						     _mm_setzero_si128 (),
129 						     (__mmask8) __U);
130 }
131 
132 
133 extern __inline __m256i
134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
135 _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
136 {
137   return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
138 						    (__v16hi) __W,
139 						    (__mmask16) __U);
140 }
141 
142 extern __inline __m256i
143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
144 _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
145 {
146   return (__m256i) __builtin_ia32_movdquhi256_mask ((__v16hi) __A,
147 						    (__v16hi)
148 						    _mm256_setzero_si256 (),
149 						    (__mmask16) __U);
150 }
151 
152 extern __inline __m128i
153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
154 _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
155 {
156   return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
157 						    (__v8hi) __W,
158 						    (__mmask8) __U);
159 }
160 
161 extern __inline __m128i
162 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
163 _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
164 {
165   return (__m128i) __builtin_ia32_movdquhi128_mask ((__v8hi) __A,
166 						    (__v8hi)
167 						    _mm_setzero_si128 (),
168 						    (__mmask8) __U);
169 }
170 
171 extern __inline __m256i
172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
173 _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
174 {
175   return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
176 						     (__v32qi) __W,
177 						     (__mmask32) __U);
178 }
179 
180 extern __inline __m256i
181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
182 _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
183 {
184   return (__m256i) __builtin_ia32_loaddquqi256_mask ((const char *) __P,
185 						     (__v32qi)
186 						     _mm256_setzero_si256 (),
187 						     (__mmask32) __U);
188 }
189 
190 extern __inline __m128i
191 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
192 _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
193 {
194   return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
195 						     (__v16qi) __W,
196 						     (__mmask16) __U);
197 }
198 
199 extern __inline __m128i
200 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
201 _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
202 {
203   return (__m128i) __builtin_ia32_loaddquqi128_mask ((const char *) __P,
204 						     (__v16qi)
205 						     _mm_setzero_si128 (),
206 						     (__mmask16) __U);
207 }
208 
209 extern __inline __m128i
210 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
211 _mm256_cvtepi16_epi8 (__m256i __A)
212 {
213 
214   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
215 						  (__v16qi)_mm_undefined_si128(),
216 						  (__mmask16) -1);
217 }
218 
219 extern __inline void
220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
221 _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
222 {
223   __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
224 }
225 
226 extern __inline __m128i
227 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
228 _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
229 {
230   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
231 						  (__v16qi) __O, __M);
232 }
233 
234 extern __inline __m128i
235 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
236 _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A)
237 {
238   return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
239 						  (__v16qi)
240 						  _mm_setzero_si128 (),
241 						  __M);
242 }
243 
244 extern __inline __m128i
245 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
246 _mm_cvtsepi16_epi8 (__m128i __A)
247 {
248 
249   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
250 						   (__v16qi)_mm_undefined_si128(),
251 						   (__mmask8) -1);
252 }
253 
254 extern __inline void
255 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
256 _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
257 {
258   __builtin_ia32_pmovswb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
259 }
260 
261 extern __inline __m128i
262 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
263 _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
264 {
265   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
266 						   (__v16qi) __O, __M);
267 }
268 
269 extern __inline __m128i
270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
271 _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A)
272 {
273   return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
274 						   (__v16qi)
275 						   _mm_setzero_si128 (),
276 						   __M);
277 }
278 
279 extern __inline __m128i
280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
281 _mm256_cvtsepi16_epi8 (__m256i __A)
282 {
283 
284   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
285 						   (__v16qi)_mm_undefined_si128(),
286 						   (__mmask16) -1);
287 }
288 
289 extern __inline void
290 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
291 _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
292 {
293   __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
294 }
295 
296 extern __inline __m128i
297 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
298 _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
299 {
300   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
301 						   (__v16qi) __O, __M);
302 }
303 
304 extern __inline __m128i
305 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
306 _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A)
307 {
308   return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
309 						   (__v16qi)
310 						   _mm_setzero_si128 (),
311 						   __M);
312 }
313 
314 extern __inline __m128i
315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
316 _mm_cvtusepi16_epi8 (__m128i __A)
317 {
318 
319   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
320 						    (__v16qi)_mm_undefined_si128(),
321 						    (__mmask8) -1);
322 }
323 
324 extern __inline void
325 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
326 _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
327 {
328   __builtin_ia32_pmovuswb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
329 }
330 
331 extern __inline __m128i
332 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
333 _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
334 {
335   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
336 						    (__v16qi) __O,
337 						    __M);
338 }
339 
340 extern __inline __m128i
341 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
342 _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A)
343 {
344   return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
345 						    (__v16qi)
346 						    _mm_setzero_si128 (),
347 						    __M);
348 }
349 
350 extern __inline __m128i
351 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
352 _mm256_cvtusepi16_epi8 (__m256i __A)
353 {
354 
355   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
356 						    (__v16qi)_mm_undefined_si128(),
357 						    (__mmask16) -1);
358 }
359 
360 extern __inline void
361 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
362 _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask16 __M,__m256i __A)
363 {
364   __builtin_ia32_pmovuswb256mem_mask ((__v16qi *) __P , (__v16hi) __A, __M);
365 }
366 
367 extern __inline __m128i
368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
369 _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A)
370 {
371   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
372 						    (__v16qi) __O,
373 						    __M);
374 }
375 
376 extern __inline __m128i
377 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
378 _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A)
379 {
380   return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
381 						    (__v16qi)
382 						    _mm_setzero_si128 (),
383 						    __M);
384 }
385 
386 extern __inline __m256i
387 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
388 _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
389 {
390   return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
391 						       (__v32qi) __O,
392 						       __M);
393 }
394 
395 extern __inline __m256i
396 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
397 _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
398 {
399   return (__m256i) __builtin_ia32_pbroadcastb256_mask ((__v16qi) __A,
400 						       (__v32qi)
401 						       _mm256_setzero_si256 (),
402 						       __M);
403 }
404 
405 extern __inline __m256i
406 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
407 _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
408 {
409   return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
410 							   (__v32qi) __O,
411 							   __M);
412 }
413 
414 extern __inline __m256i
415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
416 _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
417 {
418   return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
419 							   (__v32qi)
420 							   _mm256_setzero_si256 (),
421 							   __M);
422 }
423 
424 extern __inline __m128i
425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
426 _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
427 {
428   return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
429 						       (__v16qi) __O,
430 						       __M);
431 }
432 
433 extern __inline __m128i
434 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
435 _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
436 {
437   return (__m128i) __builtin_ia32_pbroadcastb128_mask ((__v16qi) __A,
438 						       (__v16qi)
439 						       _mm_setzero_si128 (),
440 						       __M);
441 }
442 
443 extern __inline __m128i
444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
445 _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
446 {
447   return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
448 							   (__v16qi) __O,
449 							   __M);
450 }
451 
452 extern __inline __m128i
453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
454 _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
455 {
456   return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
457 							   (__v16qi)
458 							   _mm_setzero_si128 (),
459 							   __M);
460 }
461 
462 extern __inline __m256i
463 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
464 _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
465 {
466   return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
467 						       (__v16hi) __O,
468 						       __M);
469 }
470 
471 extern __inline __m256i
472 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
473 _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
474 {
475   return (__m256i) __builtin_ia32_pbroadcastw256_mask ((__v8hi) __A,
476 						       (__v16hi)
477 						       _mm256_setzero_si256 (),
478 						       __M);
479 }
480 
481 extern __inline __m256i
482 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
483 _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
484 {
485   return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
486 							   (__v16hi) __O,
487 							   __M);
488 }
489 
490 extern __inline __m256i
491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
492 _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
493 {
494   return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
495 							   (__v16hi)
496 							   _mm256_setzero_si256 (),
497 							   __M);
498 }
499 
500 extern __inline __m128i
501 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
502 _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
503 {
504   return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
505 						       (__v8hi) __O,
506 						       __M);
507 }
508 
509 extern __inline __m128i
510 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
511 _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
512 {
513   return (__m128i) __builtin_ia32_pbroadcastw128_mask ((__v8hi) __A,
514 						       (__v8hi)
515 						       _mm_setzero_si128 (),
516 						       __M);
517 }
518 
519 extern __inline __m128i
520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
521 _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
522 {
523   return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
524 							   (__v8hi) __O,
525 							   __M);
526 }
527 
528 extern __inline __m128i
529 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
530 _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
531 {
532   return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
533 							   (__v8hi)
534 							   _mm_setzero_si128 (),
535 							   __M);
536 }
537 
538 extern __inline __m256i
539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
540 _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
541 {
542   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
543 						     (__v16hi) __A,
544 						     (__v16hi)
545 						     _mm256_setzero_si256 (),
546 						     (__mmask16) -1);
547 }
548 
549 extern __inline __m256i
550 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
551 _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
552 				__m256i __B)
553 {
554   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
555 						     (__v16hi) __A,
556 						     (__v16hi)
557 						     _mm256_setzero_si256 (),
558 						     (__mmask16) __M);
559 }
560 
561 extern __inline __m256i
562 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
563 _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
564 			       __m256i __B)
565 {
566   return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
567 						     (__v16hi) __A,
568 						     (__v16hi) __W,
569 						     (__mmask16) __M);
570 }
571 
572 extern __inline __m128i
573 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
574 _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
575 {
576   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
577 						     (__v8hi) __A,
578 						     (__v8hi)
579 						     _mm_setzero_si128 (),
580 						     (__mmask8) -1);
581 }
582 
583 extern __inline __m128i
584 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
585 _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
586 {
587   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
588 						     (__v8hi) __A,
589 						     (__v8hi)
590 						     _mm_setzero_si128 (),
591 						     (__mmask8) __M);
592 }
593 
594 extern __inline __m128i
595 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
596 _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
597 			    __m128i __B)
598 {
599   return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
600 						     (__v8hi) __A,
601 						     (__v8hi) __W,
602 						     (__mmask8) __M);
603 }
604 
605 extern __inline __m256i
606 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
607 _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
608 {
609   return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
610 							/* idx */ ,
611 							(__v16hi) __A,
612 							(__v16hi) __B,
613 							(__mmask16) -1);
614 }
615 
616 extern __inline __m256i
617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
618 _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
619 				__m256i __I, __m256i __B)
620 {
621   return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I
622 							/* idx */ ,
623 							(__v16hi) __A,
624 							(__v16hi) __B,
625 							(__mmask16)
626 							__U);
627 }
628 
629 extern __inline __m256i
630 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
631 _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
632 				 __mmask16 __U, __m256i __B)
633 {
634   return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
635 							(__v16hi) __I
636 							/* idx */ ,
637 							(__v16hi) __B,
638 							(__mmask16)
639 							__U);
640 }
641 
642 extern __inline __m256i
643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
644 _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
645 				 __m256i __I, __m256i __B)
646 {
647   return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I
648 							 /* idx */ ,
649 							 (__v16hi) __A,
650 							 (__v16hi) __B,
651 							 (__mmask16)
652 							 __U);
653 }
654 
655 extern __inline __m128i
656 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
657 _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
658 {
659   return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
660 							/* idx */ ,
661 							(__v8hi) __A,
662 							(__v8hi) __B,
663 							(__mmask8) -1);
664 }
665 
666 extern __inline __m128i
667 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
668 _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
669 			     __m128i __B)
670 {
671   return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I
672 							/* idx */ ,
673 							(__v8hi) __A,
674 							(__v8hi) __B,
675 							(__mmask8)
676 							__U);
677 }
678 
679 extern __inline __m128i
680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
681 _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
682 			      __m128i __B)
683 {
684   return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
685 							(__v8hi) __I
686 							/* idx */ ,
687 							(__v8hi) __B,
688 							(__mmask8)
689 							__U);
690 }
691 
692 extern __inline __m128i
693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
694 _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
695 			      __m128i __B)
696 {
697   return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I
698 							 /* idx */ ,
699 							 (__v8hi) __A,
700 							 (__v8hi) __B,
701 							 (__mmask8)
702 							 __U);
703 }
704 
705 extern __inline __m256i
706 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
707 _mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
708 			   __m256i __Y)
709 {
710   return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
711 						     (__v32qi) __Y,
712 						     (__v16hi) __W,
713 						     (__mmask16) __U);
714 }
715 
716 extern __inline __m256i
717 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
718 _mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
719 {
720   return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
721 						     (__v32qi) __Y,
722 						     (__v16hi)
723 						     _mm256_setzero_si256 (),
724 						     (__mmask16) __U);
725 }
726 
727 extern __inline __m128i
728 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
729 _mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
730 			__m128i __Y)
731 {
732   return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
733 						     (__v16qi) __Y,
734 						     (__v8hi) __W,
735 						     (__mmask8) __U);
736 }
737 
738 extern __inline __m128i
739 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
740 _mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
741 {
742   return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
743 						     (__v16qi) __Y,
744 						     (__v8hi)
745 						     _mm_setzero_si128 (),
746 						     (__mmask8) __U);
747 }
748 
749 extern __inline __m256i
750 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
751 _mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A,
752 			__m256i __B)
753 {
754   return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
755 						   (__v16hi) __B,
756 						   (__v8si) __W,
757 						   (__mmask8) __U);
758 }
759 
760 extern __inline __m256i
761 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
762 _mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B)
763 {
764   return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
765 						   (__v16hi) __B,
766 						   (__v8si)
767 						   _mm256_setzero_si256 (),
768 						   (__mmask8) __U);
769 }
770 
771 extern __inline __m128i
772 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
773 _mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
774 		     __m128i __B)
775 {
776   return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
777 						   (__v8hi) __B,
778 						   (__v4si) __W,
779 						   (__mmask8) __U);
780 }
781 
782 extern __inline __m128i
783 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
784 _mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
785 {
786   return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
787 						   (__v8hi) __B,
788 						   (__v4si)
789 						   _mm_setzero_si128 (),
790 						   (__mmask8) __U);
791 }
792 
793 extern __inline __mmask16
794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
795 _mm_movepi8_mask (__m128i __A)
796 {
797   return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
798 }
799 
800 extern __inline __mmask32
801 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
802 _mm256_movepi8_mask (__m256i __A)
803 {
804   return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
805 }
806 
807 extern __inline __mmask8
808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
809 _mm_movepi16_mask (__m128i __A)
810 {
811   return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
812 }
813 
814 extern __inline __mmask16
815 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
816 _mm256_movepi16_mask (__m256i __A)
817 {
818   return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
819 }
820 
821 extern __inline __m128i
822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
823 _mm_movm_epi8 (__mmask16 __A)
824 {
825   return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
826 }
827 
828 extern __inline __m256i
829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
830 _mm256_movm_epi8 (__mmask32 __A)
831 {
832   return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
833 }
834 
835 extern __inline __m128i
836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
837 _mm_movm_epi16 (__mmask8 __A)
838 {
839   return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
840 }
841 
842 extern __inline __m256i
843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
844 _mm256_movm_epi16 (__mmask16 __A)
845 {
846   return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
847 }
848 
849 extern __inline __mmask16
850 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
851 _mm_test_epi8_mask (__m128i __A, __m128i __B)
852 {
853   return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
854 						(__v16qi) __B,
855 						(__mmask16) -1);
856 }
857 
858 extern __inline __mmask16
859 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
860 _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
861 {
862   return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
863 						(__v16qi) __B, __U);
864 }
865 
866 extern __inline __mmask32
867 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
868 _mm256_test_epi8_mask (__m256i __A, __m256i __B)
869 {
870   return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
871 						(__v32qi) __B,
872 						(__mmask32) -1);
873 }
874 
875 extern __inline __mmask32
876 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
877 _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
878 {
879   return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
880 						(__v32qi) __B, __U);
881 }
882 
883 extern __inline __mmask8
884 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
885 _mm_test_epi16_mask (__m128i __A, __m128i __B)
886 {
887   return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
888 					       (__v8hi) __B,
889 					       (__mmask8) -1);
890 }
891 
892 extern __inline __mmask8
893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
894 _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
895 {
896   return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
897 					       (__v8hi) __B, __U);
898 }
899 
900 extern __inline __mmask16
901 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
902 _mm256_test_epi16_mask (__m256i __A, __m256i __B)
903 {
904   return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
905 						(__v16hi) __B,
906 						(__mmask16) -1);
907 }
908 
909 extern __inline __mmask16
910 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
911 _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
912 {
913   return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
914 						(__v16hi) __B, __U);
915 }
916 
917 extern __inline __m256i
918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
919 _mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
920 {
921   return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
922 						  (__v16hi) __B,
923 						  (__v16hi)
924 						  _mm256_setzero_si256 (),
925 						  (__mmask16) __M);
926 }
927 
928 extern __inline __m256i
929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
930 _mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
931 		       __m256i __B)
932 {
933   return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
934 						  (__v16hi) __B,
935 						  (__v16hi) __W,
936 						  (__mmask16) __M);
937 }
938 
939 extern __inline __m128i
940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
941 _mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
942 {
943   return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
944 						  (__v8hi) __B,
945 						  (__v8hi)
946 						  _mm_setzero_si128 (),
947 						  (__mmask8) __M);
948 }
949 
950 extern __inline __m128i
951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
952 _mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
953 		    __m128i __B)
954 {
955   return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
956 						  (__v8hi) __B,
957 						  (__v8hi) __W,
958 						  (__mmask8) __M);
959 }
960 
961 extern __inline __m256i
962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
963 _mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
964 {
965   return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
966 						  (__v16hi) __B,
967 						  (__v16hi)
968 						  _mm256_setzero_si256 (),
969 						  (__mmask16) __M);
970 }
971 
972 extern __inline __m256i
973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
974 _mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
975 		       __m256i __B)
976 {
977   return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
978 						  (__v16hi) __B,
979 						  (__v16hi) __W,
980 						  (__mmask16) __M);
981 }
982 
983 extern __inline __m256i
984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
985 _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
986 {
987   return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
988 						  (__v32qi) __B,
989 						  (__v32qi)
990 						  _mm256_setzero_si256 (),
991 						  (__mmask32) __M);
992 }
993 
994 extern __inline __m256i
995 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
996 _mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
997 		      __m256i __B)
998 {
999   return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1000 						  (__v32qi) __B,
1001 						  (__v32qi) __W,
1002 						  (__mmask32) __M);
1003 }
1004 
1005 extern __inline __m128i
1006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1007 _mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1008 {
1009   return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1010 						  (__v16qi) __B,
1011 						  (__v16qi)
1012 						  _mm_setzero_si128 (),
1013 						  (__mmask16) __M);
1014 }
1015 
1016 extern __inline __m128i
1017 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1018 _mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1019 		   __m128i __B)
1020 {
1021   return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1022 						  (__v16qi) __B,
1023 						  (__v16qi) __W,
1024 						  (__mmask16) __M);
1025 }
1026 
1027 extern __inline __m256i
1028 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1029 _mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1030 {
1031   return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1032 						  (__v32qi) __B,
1033 						  (__v32qi)
1034 						  _mm256_setzero_si256 (),
1035 						  (__mmask32) __M);
1036 }
1037 
1038 extern __inline __m256i
1039 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1040 _mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1041 		      __m256i __B)
1042 {
1043   return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1044 						  (__v32qi) __B,
1045 						  (__v32qi) __W,
1046 						  (__mmask32) __M);
1047 }
1048 
1049 extern __inline __m128i
1050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1051 _mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1052 {
1053   return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1054 						  (__v16qi) __B,
1055 						  (__v16qi)
1056 						  _mm_setzero_si128 (),
1057 						  (__mmask16) __M);
1058 }
1059 
1060 extern __inline __m128i
1061 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1062 _mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1063 		   __m128i __B)
1064 {
1065   return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1066 						  (__v16qi) __B,
1067 						  (__v16qi) __W,
1068 						  (__mmask16) __M);
1069 }
1070 
1071 extern __inline __m256i
1072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1073 _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1074 {
1075   return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1076 						  (__v32qi) __B,
1077 						  (__v32qi)
1078 						  _mm256_setzero_si256 (),
1079 						  (__mmask32) __M);
1080 }
1081 
1082 extern __inline __m256i
1083 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1084 _mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1085 		      __m256i __B)
1086 {
1087   return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1088 						  (__v32qi) __B,
1089 						  (__v32qi) __W,
1090 						  (__mmask32) __M);
1091 }
1092 
1093 extern __inline __m128i
1094 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1095 _mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1096 {
1097   return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1098 						  (__v16qi) __B,
1099 						  (__v16qi)
1100 						  _mm_setzero_si128 (),
1101 						  (__mmask16) __M);
1102 }
1103 
1104 extern __inline __m128i
1105 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1106 _mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1107 		   __m128i __B)
1108 {
1109   return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1110 						  (__v16qi) __B,
1111 						  (__v16qi) __W,
1112 						  (__mmask16) __M);
1113 }
1114 
1115 extern __inline __m256i
1116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1117 _mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1118 {
1119   return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1120 						  (__v32qi) __B,
1121 						  (__v32qi)
1122 						  _mm256_setzero_si256 (),
1123 						  (__mmask32) __M);
1124 }
1125 
1126 extern __inline __m256i
1127 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1128 _mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1129 		      __m256i __B)
1130 {
1131   return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1132 						  (__v32qi) __B,
1133 						  (__v32qi) __W,
1134 						  (__mmask32) __M);
1135 }
1136 
1137 extern __inline __m128i
1138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1139 _mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1140 {
1141   return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1142 						  (__v16qi) __B,
1143 						  (__v16qi)
1144 						  _mm_setzero_si128 (),
1145 						  (__mmask16) __M);
1146 }
1147 
1148 extern __inline __m128i
1149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1150 _mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1151 		   __m128i __B)
1152 {
1153   return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1154 						  (__v16qi) __B,
1155 						  (__v16qi) __W,
1156 						  (__mmask16) __M);
1157 }
1158 
1159 extern __inline __m256i
1160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1161 _mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1162 {
1163   return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1164 						  (__v16hi) __B,
1165 						  (__v16hi)
1166 						  _mm256_setzero_si256 (),
1167 						  (__mmask16) __M);
1168 }
1169 
1170 extern __inline __m256i
1171 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1172 _mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1173 		       __m256i __B)
1174 {
1175   return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1176 						  (__v16hi) __B,
1177 						  (__v16hi) __W,
1178 						  (__mmask16) __M);
1179 }
1180 
1181 extern __inline __m128i
1182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1183 _mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1184 {
1185   return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1186 						  (__v8hi) __B,
1187 						  (__v8hi)
1188 						  _mm_setzero_si128 (),
1189 						  (__mmask8) __M);
1190 }
1191 
1192 extern __inline __m128i
1193 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1194 _mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1195 		    __m128i __B)
1196 {
1197   return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1198 						  (__v8hi) __B,
1199 						  (__v8hi) __W,
1200 						  (__mmask8) __M);
1201 }
1202 
1203 extern __inline __m256i
1204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1205 _mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1206 {
1207   return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1208 						  (__v16hi) __B,
1209 						  (__v16hi)
1210 						  _mm256_setzero_si256 (),
1211 						  (__mmask16) __M);
1212 }
1213 
1214 extern __inline __m256i
1215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1216 _mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1217 		       __m256i __B)
1218 {
1219   return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1220 						  (__v16hi) __B,
1221 						  (__v16hi) __W,
1222 						  (__mmask16) __M);
1223 }
1224 
1225 extern __inline __m128i
1226 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1227 _mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1228 {
1229   return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1230 						  (__v8hi) __B,
1231 						  (__v8hi)
1232 						  _mm_setzero_si128 (),
1233 						  (__mmask8) __M);
1234 }
1235 
1236 extern __inline __m128i
1237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1238 _mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1239 		    __m128i __B)
1240 {
1241   return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1242 						  (__v8hi) __B,
1243 						  (__v8hi) __W,
1244 						  (__mmask8) __M);
1245 }
1246 
1247 extern __inline __m128i
1248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1249 _mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1250 {
1251   return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1252 						  (__v8hi) __B,
1253 						  (__v8hi)
1254 						  _mm_setzero_si128 (),
1255 						  (__mmask8) __M);
1256 }
1257 
1258 extern __inline __m128i
1259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1260 _mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1261 		    __m128i __B)
1262 {
1263   return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1264 						  (__v8hi) __B,
1265 						  (__v8hi) __W,
1266 						  (__mmask8) __M);
1267 }
1268 
1269 #ifdef __OPTIMIZE__
1270 extern __inline __m256i
1271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1272 _mm256_mask_alignr_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1273 			 __m256i __B, const int __N)
1274 {
1275   return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
1276 						   (__v4di) __B,
1277 						   __N * 8,
1278 						   (__v4di) __W,
1279 						   (__mmask32) __U);
1280 }
1281 
1282 extern __inline __m256i
1283 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1284 _mm256_maskz_alignr_epi8 (__mmask32 __U, __m256i __A, __m256i __B,
1285 			  const int __N)
1286 {
1287   return (__m256i) __builtin_ia32_palignr256_mask ((__v4di) __A,
1288 						   (__v4di) __B,
1289 						   __N * 8,
1290 						   (__v4di)
1291 						   _mm256_setzero_si256 (),
1292 						   (__mmask32) __U);
1293 }
1294 
1295 extern __inline __m128i
1296 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1297 _mm_mask_alignr_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1298 		      __m128i __B, const int __N)
1299 {
1300   return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
1301 						   (__v2di) __B,
1302 						   __N * 8,
1303 						   (__v2di) __W,
1304 						   (__mmask16) __U);
1305 }
1306 
1307 extern __inline __m128i
1308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1309 _mm_maskz_alignr_epi8 (__mmask16 __U, __m128i __A, __m128i __B,
1310 		       const int __N)
1311 {
1312   return (__m128i) __builtin_ia32_palignr128_mask ((__v2di) __A,
1313 						   (__v2di) __B,
1314 						   __N * 8,
1315 						   (__v2di)
1316 						   _mm_setzero_si128 (),
1317 						   (__mmask16) __U);
1318 }
1319 
1320 extern __inline __m256i
1321 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1322 _mm256_dbsad_epu8 (__m256i __A, __m256i __B, const int __imm)
1323 {
1324   return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1325 						    (__v32qi) __B,
1326 						    __imm,
1327 						    (__v16hi)
1328 						    _mm256_setzero_si256 (),
1329 						    (__mmask16) -1);
1330 }
1331 
1332 extern __inline __m256i
1333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1334 _mm256_mask_dbsad_epu8 (__m256i __W, __mmask16 __U, __m256i __A,
1335 			__m256i __B, const int __imm)
1336 {
1337   return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1338 						    (__v32qi) __B,
1339 						    __imm,
1340 						    (__v16hi) __W,
1341 						    (__mmask16) __U);
1342 }
1343 
1344 extern __inline __m256i
1345 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1346 _mm256_maskz_dbsad_epu8 (__mmask16 __U, __m256i __A, __m256i __B,
1347 			 const int __imm)
1348 {
1349   return (__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi) __A,
1350 						    (__v32qi) __B,
1351 						    __imm,
1352 						    (__v16hi)
1353 						    _mm256_setzero_si256 (),
1354 						    (__mmask16) __U);
1355 }
1356 
1357 extern __inline __m128i
1358 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1359 _mm_dbsad_epu8 (__m128i __A, __m128i __B, const int __imm)
1360 {
1361   return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1362 						    (__v16qi) __B,
1363 						    __imm,
1364 						    (__v8hi)
1365 						    _mm_setzero_si128 (),
1366 						    (__mmask8) -1);
1367 }
1368 
1369 extern __inline __m128i
1370 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1371 _mm_mask_dbsad_epu8 (__m128i __W, __mmask8 __U, __m128i __A,
1372 		     __m128i __B, const int __imm)
1373 {
1374   return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1375 						    (__v16qi) __B,
1376 						    __imm,
1377 						    (__v8hi) __W,
1378 						    (__mmask8) __U);
1379 }
1380 
1381 extern __inline __m128i
1382 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1383 _mm_maskz_dbsad_epu8 (__mmask8 __U, __m128i __A, __m128i __B,
1384 		      const int __imm)
1385 {
1386   return (__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi) __A,
1387 						    (__v16qi) __B,
1388 						    __imm,
1389 						    (__v8hi)
1390 						    _mm_setzero_si128 (),
1391 						    (__mmask8) __U);
1392 }
1393 
1394 extern __inline __m128i
1395 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1396 _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
1397 {
1398   return (__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) __A,
1399 						    (__v8hi) __W,
1400 						    (__mmask8) __U);
1401 }
1402 
1403 extern __inline __m128i
1404 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1405 _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
1406 {
1407   return (__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) __A,
1408 						    (__v16qi) __W,
1409 						    (__mmask16) __U);
1410 }
1411 
1412 extern __inline __m256i
1413 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1414 _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
1415 {
1416   return (__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) __A,
1417 						    (__v16hi) __W,
1418 						    (__mmask16) __U);
1419 }
1420 
1421 extern __inline __m256i
1422 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1423 _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
1424 {
1425   return (__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) __A,
1426 						    (__v32qi) __W,
1427 						    (__mmask32) __U);
1428 }
1429 
1430 extern __inline __mmask8
1431 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1432 _mm_mask_cmp_epi16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1433 			 const int __P)
1434 {
1435   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
1436 						 (__v8hi) __Y, __P,
1437 						 (__mmask8) __U);
1438 }
1439 
1440 extern __inline __mmask8
1441 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1442 _mm_cmp_epi16_mask (__m128i __X, __m128i __Y, const int __P)
1443 {
1444   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
1445 						 (__v8hi) __Y, __P,
1446 						 (__mmask8) -1);
1447 }
1448 
1449 extern __inline __mmask16
1450 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1451 _mm256_mask_cmp_epi16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1452 			    const int __P)
1453 {
1454   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
1455 						  (__v16hi) __Y, __P,
1456 						  (__mmask16) __U);
1457 }
1458 
1459 extern __inline __mmask16
1460 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1461 _mm256_cmp_epi16_mask (__m256i __X, __m256i __Y, const int __P)
1462 {
1463   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
1464 						  (__v16hi) __Y, __P,
1465 						  (__mmask16) -1);
1466 }
1467 
1468 extern __inline __mmask16
1469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1470 _mm_mask_cmp_epi8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
1471 			const int __P)
1472 {
1473   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
1474 						  (__v16qi) __Y, __P,
1475 						  (__mmask16) __U);
1476 }
1477 
1478 extern __inline __mmask16
1479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1480 _mm_cmp_epi8_mask (__m128i __X, __m128i __Y, const int __P)
1481 {
1482   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
1483 						  (__v16qi) __Y, __P,
1484 						  (__mmask16) -1);
1485 }
1486 
1487 extern __inline __mmask32
1488 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1489 _mm256_mask_cmp_epi8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
1490 			   const int __P)
1491 {
1492   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
1493 						  (__v32qi) __Y, __P,
1494 						  (__mmask32) __U);
1495 }
1496 
1497 extern __inline __mmask32
1498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1499 _mm256_cmp_epi8_mask (__m256i __X, __m256i __Y, const int __P)
1500 {
1501   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
1502 						  (__v32qi) __Y, __P,
1503 						  (__mmask32) -1);
1504 }
1505 
1506 extern __inline __mmask8
1507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1508 _mm_mask_cmp_epu16_mask (__mmask8 __U, __m128i __X, __m128i __Y,
1509 			 const int __P)
1510 {
1511   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
1512 						  (__v8hi) __Y, __P,
1513 						  (__mmask8) __U);
1514 }
1515 
1516 extern __inline __mmask8
1517 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1518 _mm_cmp_epu16_mask (__m128i __X, __m128i __Y, const int __P)
1519 {
1520   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
1521 						  (__v8hi) __Y, __P,
1522 						  (__mmask8) -1);
1523 }
1524 
1525 extern __inline __mmask16
1526 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1527 _mm256_mask_cmp_epu16_mask (__mmask16 __U, __m256i __X, __m256i __Y,
1528 			    const int __P)
1529 {
1530   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
1531 						   (__v16hi) __Y, __P,
1532 						   (__mmask16) __U);
1533 }
1534 
1535 extern __inline __mmask16
1536 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1537 _mm256_cmp_epu16_mask (__m256i __X, __m256i __Y, const int __P)
1538 {
1539   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
1540 						   (__v16hi) __Y, __P,
1541 						   (__mmask16) -1);
1542 }
1543 
1544 extern __inline __mmask16
1545 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1546 _mm_mask_cmp_epu8_mask (__mmask16 __U, __m128i __X, __m128i __Y,
1547 			const int __P)
1548 {
1549   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
1550 						   (__v16qi) __Y, __P,
1551 						   (__mmask16) __U);
1552 }
1553 
1554 extern __inline __mmask16
1555 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1556 _mm_cmp_epu8_mask (__m128i __X, __m128i __Y, const int __P)
1557 {
1558   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
1559 						   (__v16qi) __Y, __P,
1560 						   (__mmask16) -1);
1561 }
1562 
1563 extern __inline __mmask32
1564 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1565 _mm256_mask_cmp_epu8_mask (__mmask32 __U, __m256i __X, __m256i __Y,
1566 			   const int __P)
1567 {
1568   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
1569 						   (__v32qi) __Y, __P,
1570 						   (__mmask32) __U);
1571 }
1572 
1573 extern __inline __mmask32
1574 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1575 _mm256_cmp_epu8_mask (__m256i __X, __m256i __Y, const int __P)
1576 {
1577   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
1578 						   (__v32qi) __Y, __P,
1579 						   (__mmask32) -1);
1580 }
1581 
1582 extern __inline __m256i
1583 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1584 _mm256_mask_srli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1585 			const int __imm)
1586 {
1587   return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
1588 						  (__v16hi) __W,
1589 						  (__mmask16) __U);
1590 }
1591 
1592 extern __inline __m256i
1593 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1594 _mm256_maskz_srli_epi16 (__mmask16 __U, __m256i __A, const int __imm)
1595 {
1596   return (__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi) __A, __imm,
1597 						  (__v16hi)
1598 						  _mm256_setzero_si256 (),
1599 						  (__mmask16) __U);
1600 }
1601 
1602 extern __inline __m128i
1603 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1604 _mm_mask_srli_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1605 		     const int __imm)
1606 {
1607   return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
1608 						  (__v8hi) __W,
1609 						  (__mmask8) __U);
1610 }
1611 
1612 extern __inline __m128i
1613 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1614 _mm_maskz_srli_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1615 {
1616   return (__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi) __A, __imm,
1617 						  (__v8hi)
1618 						  _mm_setzero_si128 (),
1619 						  (__mmask8) __U);
1620 }
1621 
1622 extern __inline __m256i
1623 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1624 _mm256_mask_shufflehi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1625 			     const int __imm)
1626 {
1627   return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
1628 						   __imm,
1629 						   (__v16hi) __W,
1630 						   (__mmask16) __U);
1631 }
1632 
1633 extern __inline __m256i
1634 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1635 _mm256_maskz_shufflehi_epi16 (__mmask16 __U, __m256i __A,
1636 			      const int __imm)
1637 {
1638   return (__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi) __A,
1639 						   __imm,
1640 						   (__v16hi)
1641 						   _mm256_setzero_si256 (),
1642 						   (__mmask16) __U);
1643 }
1644 
1645 extern __inline __m128i
1646 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1647 _mm_mask_shufflehi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1648 			  const int __imm)
1649 {
1650   return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
1651 						   (__v8hi) __W,
1652 						   (__mmask8) __U);
1653 }
1654 
1655 extern __inline __m128i
1656 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1657 _mm_maskz_shufflehi_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1658 {
1659   return (__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi) __A, __imm,
1660 						   (__v8hi)
1661 						   _mm_setzero_si128 (),
1662 						   (__mmask8) __U);
1663 }
1664 
1665 extern __inline __m256i
1666 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1667 _mm256_mask_shufflelo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1668 			     const int __imm)
1669 {
1670   return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
1671 						   __imm,
1672 						   (__v16hi) __W,
1673 						   (__mmask16) __U);
1674 }
1675 
1676 extern __inline __m256i
1677 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1678 _mm256_maskz_shufflelo_epi16 (__mmask16 __U, __m256i __A,
1679 			      const int __imm)
1680 {
1681   return (__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi) __A,
1682 						   __imm,
1683 						   (__v16hi)
1684 						   _mm256_setzero_si256 (),
1685 						   (__mmask16) __U);
1686 }
1687 
1688 extern __inline __m128i
1689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1690 _mm_mask_shufflelo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1691 			  const int __imm)
1692 {
1693   return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
1694 						   (__v8hi) __W,
1695 						   (__mmask8) __U);
1696 }
1697 
1698 extern __inline __m128i
1699 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1700 _mm_maskz_shufflelo_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1701 {
1702   return (__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi) __A, __imm,
1703 						   (__v8hi)
1704 						   _mm_setzero_si128 (),
1705 						   (__mmask8) __U);
1706 }
1707 
1708 extern __inline __m256i
1709 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1710 _mm256_mask_srai_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1711 			const int __imm)
1712 {
1713   return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
1714 						  (__v16hi) __W,
1715 						  (__mmask16) __U);
1716 }
1717 
1718 extern __inline __m256i
1719 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1720 _mm256_maskz_srai_epi16 (__mmask16 __U, __m256i __A, const int __imm)
1721 {
1722   return (__m256i) __builtin_ia32_psrawi256_mask ((__v16hi) __A, __imm,
1723 						  (__v16hi)
1724 						  _mm256_setzero_si256 (),
1725 						  (__mmask16) __U);
1726 }
1727 
1728 extern __inline __m128i
1729 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1730 _mm_mask_srai_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1731 		     const int __imm)
1732 {
1733   return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
1734 						  (__v8hi) __W,
1735 						  (__mmask8) __U);
1736 }
1737 
1738 extern __inline __m128i
1739 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1740 _mm_maskz_srai_epi16 (__mmask8 __U, __m128i __A, const int __imm)
1741 {
1742   return (__m128i) __builtin_ia32_psrawi128_mask ((__v8hi) __A, __imm,
1743 						  (__v8hi)
1744 						  _mm_setzero_si128 (),
1745 						  (__mmask8) __U);
1746 }
1747 
1748 extern __inline __m256i
1749 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1750 _mm256_mask_slli_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1751 			int __B)
1752 {
1753   return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
1754 						  (__v16hi) __W,
1755 						  (__mmask16) __U);
1756 }
1757 
1758 extern __inline __m256i
1759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1760 _mm256_maskz_slli_epi16 (__mmask16 __U, __m256i __A, int __B)
1761 {
1762   return (__m256i) __builtin_ia32_psllwi256_mask ((__v16hi) __A, __B,
1763 						  (__v16hi)
1764 						  _mm256_setzero_si256 (),
1765 						  (__mmask16) __U);
1766 }
1767 
1768 extern __inline __m128i
1769 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1770 _mm_mask_slli_epi16 (__m128i __W, __mmask8 __U, __m128i __A, int __B)
1771 {
1772   return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
1773 						  (__v8hi) __W,
1774 						  (__mmask8) __U);
1775 }
1776 
1777 extern __inline __m128i
1778 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1779 _mm_maskz_slli_epi16 (__mmask8 __U, __m128i __A, int __B)
1780 {
1781   return (__m128i) __builtin_ia32_psllwi128_mask ((__v8hi) __A, __B,
1782 						  (__v8hi)
1783 						  _mm_setzero_si128 (),
1784 						  (__mmask8) __U);
1785 }
1786 
1787 #else
1788 #define _mm256_mask_alignr_epi8(W, U, X, Y, N)					    \
1789   ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
1790 					    (__v4di)(__m256i)(Y), (int)(N * 8),	    \
1791 					    (__v4di)(__m256i)(X), (__mmask32)(U)))
1792 
1793 #define _mm256_mask_srli_epi16(W, U, A, B)                              \
1794   ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
1795     (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
1796 
1797 #define _mm256_maskz_srli_epi16(U, A, B)                                \
1798   ((__m256i) __builtin_ia32_psrlwi256_mask ((__v16hi)(__m256i)(A),      \
1799     (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
1800 
1801 #define _mm_mask_srli_epi16(W, U, A, B)                                 \
1802   ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
1803     (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
1804 
1805 #define _mm_maskz_srli_epi16(U, A, B)                                   \
1806   ((__m128i) __builtin_ia32_psrlwi128_mask ((__v8hi)(__m128i)(A),       \
1807     (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
1808 
1809 #define _mm256_mask_srai_epi16(W, U, A, B)                              \
1810   ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
1811     (int)(B), (__v16hi)(__m256i)(W), (__mmask16)(U)))
1812 
1813 #define _mm256_maskz_srai_epi16(U, A, B)                                \
1814   ((__m256i) __builtin_ia32_psrawi256_mask ((__v16hi)(__m256i)(A),      \
1815     (int)(B), (__v16hi)_mm256_setzero_si256 (), (__mmask16)(U)))
1816 
1817 #define _mm_mask_srai_epi16(W, U, A, B)                                 \
1818   ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
1819     (int)(B), (__v8hi)(__m128i)(W), (__mmask8)(U)))
1820 
1821 #define _mm_maskz_srai_epi16(U, A, B)                                   \
1822   ((__m128i) __builtin_ia32_psrawi128_mask ((__v8hi)(__m128i)(A),       \
1823     (int)(B), (__v8hi)_mm_setzero_si128(), (__mmask8)(U)))
1824 
1825 #define _mm256_mask_shufflehi_epi16(W, U, A, B)                                     \
1826   ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
1827                                              (__v16hi)(__m256i)(W),                 \
1828                                              (__mmask16)(U)))
1829 
1830 #define _mm256_maskz_shufflehi_epi16(U, A, B)                                       \
1831   ((__m256i) __builtin_ia32_pshufhw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
1832                                              (__v16hi)(__m256i)_mm256_setzero_si256 (), \
1833                                              (__mmask16)(U)))
1834 
1835 #define _mm_mask_shufflehi_epi16(W, U, A, B)                                        \
1836   ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
1837                                              (__v8hi)(__m128i)(W),                  \
1838                                              (__mmask8)(U)))
1839 
1840 #define _mm_maskz_shufflehi_epi16(U, A, B)                                          \
1841   ((__m128i) __builtin_ia32_pshufhw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
1842 					     (__v8hi)(__m128i)_mm_setzero_si128 (), \
1843                                              (__mmask8)(U)))
1844 
1845 #define _mm256_mask_shufflelo_epi16(W, U, A, B)                                     \
1846   ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
1847                                              (__v16hi)(__m256i)(W),                 \
1848                                              (__mmask16)(U)))
1849 
1850 #define _mm256_maskz_shufflelo_epi16(U, A, B)                                       \
1851   ((__m256i) __builtin_ia32_pshuflw256_mask ((__v16hi)(__m256i)(A), (int)(B),       \
1852                                              (__v16hi)(__m256i)_mm256_setzero_si256 (), \
1853                                              (__mmask16)(U)))
1854 
1855 #define _mm_mask_shufflelo_epi16(W, U, A, B)                                        \
1856   ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
1857                                              (__v8hi)(__m128i)(W),                  \
1858                                              (__mmask8)(U)))
1859 
1860 #define _mm_maskz_shufflelo_epi16(U, A, B)                                          \
1861   ((__m128i) __builtin_ia32_pshuflw128_mask ((__v8hi)(__m128i)(A), (int)(B),        \
1862 					     (__v8hi)(__m128i)_mm_setzero_si128 (), \
1863                                              (__mmask8)(U)))
1864 
1865 #define _mm256_maskz_alignr_epi8(U, X, Y, N)					    \
1866   ((__m256i) __builtin_ia32_palignr256_mask ((__v4di)(__m256i)(X),		    \
1867 					    (__v4di)(__m256i)(Y), (int)(N * 8),	    \
1868 					    (__v4di)(__m256i)_mm256_setzero_si256 (),   \
1869 					    (__mmask32)(U)))
1870 
1871 #define _mm_mask_alignr_epi8(W, U, X, Y, N)					    \
1872   ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
1873 					    (__v2di)(__m128i)(Y), (int)(N * 8),	    \
1874 					    (__v2di)(__m128i)(X), (__mmask16)(U)))
1875 
1876 #define _mm_maskz_alignr_epi8(U, X, Y, N)					    \
1877   ((__m128i) __builtin_ia32_palignr128_mask ((__v2di)(__m128i)(X),		    \
1878 					    (__v2di)(__m128i)(Y), (int)(N * 8),	    \
1879 					    (__v2di)(__m128i)_mm_setzero_si128 (),  \
1880 					    (__mmask16)(U)))
1881 
1882 #define _mm_mask_slli_epi16(W, U, X, C)					  \
1883   ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
1884     (__v8hi)(__m128i)(W),\
1885     (__mmask8)(U)))
1886 
1887 #define _mm_maskz_slli_epi16(U, X, C)					  \
1888   ((__m128i)__builtin_ia32_psllwi128_mask ((__v8hi)(__m128i)(X), (int)(C),\
1889     (__v8hi)(__m128i)_mm_setzero_si128 (),\
1890     (__mmask8)(U)))
1891 
1892 #define _mm256_dbsad_epu8(X, Y, C)                                                  \
1893   ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
1894                                               (__v32qi)(__m256i) (Y), (int) (C),    \
1895                                               (__v16hi)(__m256i)_mm256_setzero_si256(),\
1896                                               (__mmask16)-1))
1897 
1898 #define _mm256_mask_slli_epi16(W, U, X, C)                                 \
1899   ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
1900     (__v16hi)(__m256i)(W),\
1901     (__mmask16)(U)))
1902 
1903 #define _mm256_maskz_slli_epi16(U, X, C)                                   \
1904   ((__m256i)__builtin_ia32_psllwi256_mask ((__v16hi)(__m256i)(X), (int)(C),\
1905     (__v16hi)(__m256i)_mm256_setzero_si256 (),\
1906     (__mmask16)(U)))
1907 
1908 #define _mm256_mask_dbsad_epu8(W, U, X, Y, C)                                       \
1909   ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
1910                                               (__v32qi)(__m256i) (Y), (int) (C),    \
1911                                               (__v16hi)(__m256i)(W),                \
1912                                               (__mmask16)(U)))
1913 
1914 #define _mm256_maskz_dbsad_epu8(U, X, Y, C)                                         \
1915   ((__m256i) __builtin_ia32_dbpsadbw256_mask ((__v32qi)(__m256i) (X),               \
1916                                               (__v32qi)(__m256i) (Y), (int) (C),    \
1917                                               (__v16hi)(__m256i)_mm256_setzero_si256(),\
1918                                               (__mmask16)(U)))
1919 
1920 #define _mm_dbsad_epu8(X, Y, C)                                                     \
1921   ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
1922                                               (__v16qi)(__m128i) (Y), (int) (C),    \
1923                                               (__v8hi)(__m128i)_mm_setzero_si128(), \
1924                                               (__mmask8)-1))
1925 
1926 #define _mm_mask_dbsad_epu8(W, U, X, Y, C)                                          \
1927   ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
1928                                               (__v16qi)(__m128i) (Y), (int) (C),    \
1929                                               (__v8hi)(__m128i)(W),                 \
1930                                               (__mmask8)(U)))
1931 
1932 #define _mm_maskz_dbsad_epu8(U, X, Y, C)                                            \
1933   ((__m128i) __builtin_ia32_dbpsadbw128_mask ((__v16qi)(__m128i) (X),               \
1934                                               (__v16qi)(__m128i) (Y), (int) (C),    \
1935                                               (__v8hi)(__m128i)_mm_setzero_si128(), \
1936                                               (__mmask8)(U)))
1937 
1938 #define _mm_mask_blend_epi16(__U, __A, __W)			      \
1939   ((__m128i) __builtin_ia32_blendmw_128_mask ((__v8hi) (__A),	      \
1940 						    (__v8hi) (__W),   \
1941 						    (__mmask8) (__U)))
1942 
1943 #define _mm_mask_blend_epi8(__U, __A, __W)			      \
1944   ((__m128i) __builtin_ia32_blendmb_128_mask ((__v16qi) (__A),	      \
1945 						    (__v16qi) (__W),  \
1946 						    (__mmask16) (__U)))
1947 
1948 #define _mm256_mask_blend_epi16(__U, __A, __W)			      \
1949   ((__m256i) __builtin_ia32_blendmw_256_mask ((__v16hi) (__A),	      \
1950 						    (__v16hi) (__W),  \
1951 						    (__mmask16) (__U)))
1952 
1953 #define _mm256_mask_blend_epi8(__U, __A, __W)			      \
1954   ((__m256i) __builtin_ia32_blendmb_256_mask ((__v32qi) (__A),	      \
1955 						    (__v32qi) (__W),  \
1956 						    (__mmask32) (__U)))
1957 
1958 #define _mm_cmp_epi16_mask(X, Y, P)				\
1959   ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
1960 					    (__v8hi)(__m128i)(Y), (int)(P),\
1961 					    (__mmask8)(-1)))
1962 
1963 #define _mm_cmp_epi8_mask(X, Y, P)				\
1964   ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
1965 					    (__v16qi)(__m128i)(Y), (int)(P),\
1966 					    (__mmask16)(-1)))
1967 
1968 #define _mm256_cmp_epi16_mask(X, Y, P)				\
1969   ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
1970 					    (__v16hi)(__m256i)(Y), (int)(P),\
1971 					    (__mmask16)(-1)))
1972 
1973 #define _mm256_cmp_epi8_mask(X, Y, P)				\
1974   ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
1975 					    (__v32qi)(__m256i)(Y), (int)(P),\
1976 					    (__mmask32)(-1)))
1977 
1978 #define _mm_cmp_epu16_mask(X, Y, P)				\
1979   ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
1980 					    (__v8hi)(__m128i)(Y), (int)(P),\
1981 					    (__mmask8)(-1)))
1982 
1983 #define _mm_cmp_epu8_mask(X, Y, P)				\
1984   ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
1985 					    (__v16qi)(__m128i)(Y), (int)(P),\
1986 					    (__mmask16)(-1)))
1987 
1988 #define _mm256_cmp_epu16_mask(X, Y, P)				\
1989   ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
1990 					    (__v16hi)(__m256i)(Y), (int)(P),\
1991 					    (__mmask16)(-1)))
1992 
1993 #define _mm256_cmp_epu8_mask(X, Y, P)				\
1994   ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
1995 					    (__v32qi)(__m256i)(Y), (int)(P),\
1996 					    (__mmask32)-1))
1997 
1998 #define _mm_mask_cmp_epi16_mask(M, X, Y, P)				\
1999   ((__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi)(__m128i)(X),	\
2000 					    (__v8hi)(__m128i)(Y), (int)(P),\
2001 					    (__mmask8)(M)))
2002 
2003 #define _mm_mask_cmp_epi8_mask(M, X, Y, P)				\
2004   ((__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi)(__m128i)(X),	\
2005 					    (__v16qi)(__m128i)(Y), (int)(P),\
2006 					    (__mmask16)(M)))
2007 
2008 #define _mm256_mask_cmp_epi16_mask(M, X, Y, P)				\
2009   ((__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi)(__m256i)(X),	\
2010 					    (__v16hi)(__m256i)(Y), (int)(P),\
2011 					    (__mmask16)(M)))
2012 
2013 #define _mm256_mask_cmp_epi8_mask(M, X, Y, P)				\
2014   ((__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi)(__m256i)(X),	\
2015 					    (__v32qi)(__m256i)(Y), (int)(P),\
2016 					    (__mmask32)(M)))
2017 
2018 #define _mm_mask_cmp_epu16_mask(M, X, Y, P)				\
2019   ((__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi)(__m128i)(X),	\
2020 					    (__v8hi)(__m128i)(Y), (int)(P),\
2021 					    (__mmask8)(M)))
2022 
2023 #define _mm_mask_cmp_epu8_mask(M, X, Y, P)				\
2024   ((__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi)(__m128i)(X),	\
2025 					    (__v16qi)(__m128i)(Y), (int)(P),\
2026 					    (__mmask16)(M)))
2027 
2028 #define _mm256_mask_cmp_epu16_mask(M, X, Y, P)				\
2029   ((__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi)(__m256i)(X),	\
2030 					    (__v16hi)(__m256i)(Y), (int)(P),\
2031 					    (__mmask16)(M)))
2032 
2033 #define _mm256_mask_cmp_epu8_mask(M, X, Y, P)				\
2034   ((__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi)(__m256i)(X),	\
2035 					    (__v32qi)(__m256i)(Y), (int)(P),\
2036 					    (__mmask32)M))
2037 #endif
2038 
2039 extern __inline __mmask32
2040   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2041 _mm256_cmpneq_epi8_mask (__m256i __X, __m256i __Y)
2042 {
2043   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2044 						  (__v32qi) __Y, 4,
2045 						  (__mmask32) -1);
2046 }
2047 
2048 extern __inline __mmask32
2049   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2050 _mm256_cmplt_epi8_mask (__m256i __X, __m256i __Y)
2051 {
2052   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2053 						  (__v32qi) __Y, 1,
2054 						  (__mmask32) -1);
2055 }
2056 
2057 extern __inline __mmask32
2058   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2059 _mm256_cmpge_epi8_mask (__m256i __X, __m256i __Y)
2060 {
2061   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2062 						  (__v32qi) __Y, 5,
2063 						  (__mmask32) -1);
2064 }
2065 
2066 extern __inline __mmask32
2067   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2068 _mm256_cmple_epi8_mask (__m256i __X, __m256i __Y)
2069 {
2070   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
2071 						  (__v32qi) __Y, 2,
2072 						  (__mmask32) -1);
2073 }
2074 
2075 extern __inline __mmask16
2076   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2077 _mm256_cmpneq_epi16_mask (__m256i __X, __m256i __Y)
2078 {
2079   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2080 						  (__v16hi) __Y, 4,
2081 						  (__mmask16) -1);
2082 }
2083 
2084 extern __inline __mmask16
2085   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2086 _mm256_cmplt_epi16_mask (__m256i __X, __m256i __Y)
2087 {
2088   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2089 						  (__v16hi) __Y, 1,
2090 						  (__mmask16) -1);
2091 }
2092 
2093 extern __inline __mmask16
2094   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2095 _mm256_cmpge_epi16_mask (__m256i __X, __m256i __Y)
2096 {
2097   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2098 						  (__v16hi) __Y, 5,
2099 						  (__mmask16) -1);
2100 }
2101 
2102 extern __inline __mmask16
2103   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2104 _mm256_cmple_epi16_mask (__m256i __X, __m256i __Y)
2105 {
2106   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
2107 						  (__v16hi) __Y, 2,
2108 						  (__mmask16) -1);
2109 }
2110 
2111 extern __inline __mmask16
2112   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2113 _mm_cmpneq_epu8_mask (__m128i __X, __m128i __Y)
2114 {
2115   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2116 						   (__v16qi) __Y, 4,
2117 						   (__mmask16) -1);
2118 }
2119 
2120 extern __inline __mmask16
2121   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2122 _mm_cmplt_epu8_mask (__m128i __X, __m128i __Y)
2123 {
2124   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2125 						   (__v16qi) __Y, 1,
2126 						   (__mmask16) -1);
2127 }
2128 
2129 extern __inline __mmask16
2130   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2131 _mm_cmpge_epu8_mask (__m128i __X, __m128i __Y)
2132 {
2133   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2134 						   (__v16qi) __Y, 5,
2135 						   (__mmask16) -1);
2136 }
2137 
2138 extern __inline __mmask16
2139   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2140 _mm_cmple_epu8_mask (__m128i __X, __m128i __Y)
2141 {
2142   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
2143 						   (__v16qi) __Y, 2,
2144 						   (__mmask16) -1);
2145 }
2146 
2147 extern __inline __mmask8
2148   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2149 _mm_cmpneq_epu16_mask (__m128i __X, __m128i __Y)
2150 {
2151   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2152 						  (__v8hi) __Y, 4,
2153 						  (__mmask8) -1);
2154 }
2155 
2156 extern __inline __mmask8
2157   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2158 _mm_cmplt_epu16_mask (__m128i __X, __m128i __Y)
2159 {
2160   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2161 						  (__v8hi) __Y, 1,
2162 						  (__mmask8) -1);
2163 }
2164 
2165 extern __inline __mmask8
2166   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2167 _mm_cmpge_epu16_mask (__m128i __X, __m128i __Y)
2168 {
2169   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2170 						  (__v8hi) __Y, 5,
2171 						  (__mmask8) -1);
2172 }
2173 
2174 extern __inline __mmask8
2175   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2176 _mm_cmple_epu16_mask (__m128i __X, __m128i __Y)
2177 {
2178   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
2179 						  (__v8hi) __Y, 2,
2180 						  (__mmask8) -1);
2181 }
2182 
2183 extern __inline __mmask16
2184   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2185 _mm_cmpneq_epi8_mask (__m128i __X, __m128i __Y)
2186 {
2187   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2188 						  (__v16qi) __Y, 4,
2189 						  (__mmask16) -1);
2190 }
2191 
2192 extern __inline __mmask16
2193   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2194 _mm_cmplt_epi8_mask (__m128i __X, __m128i __Y)
2195 {
2196   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2197 						  (__v16qi) __Y, 1,
2198 						  (__mmask16) -1);
2199 }
2200 
2201 extern __inline __mmask16
2202   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2203 _mm_cmpge_epi8_mask (__m128i __X, __m128i __Y)
2204 {
2205   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2206 						  (__v16qi) __Y, 5,
2207 						  (__mmask16) -1);
2208 }
2209 
2210 extern __inline __mmask16
2211   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2212 _mm_cmple_epi8_mask (__m128i __X, __m128i __Y)
2213 {
2214   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
2215 						  (__v16qi) __Y, 2,
2216 						  (__mmask16) -1);
2217 }
2218 
2219 extern __inline __mmask8
2220   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2221 _mm_cmpneq_epi16_mask (__m128i __X, __m128i __Y)
2222 {
2223   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2224 						 (__v8hi) __Y, 4,
2225 						 (__mmask8) -1);
2226 }
2227 
2228 extern __inline __mmask8
2229   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2230 _mm_cmplt_epi16_mask (__m128i __X, __m128i __Y)
2231 {
2232   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2233 						 (__v8hi) __Y, 1,
2234 						 (__mmask8) -1);
2235 }
2236 
2237 extern __inline __mmask8
2238   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2239 _mm_cmpge_epi16_mask (__m128i __X, __m128i __Y)
2240 {
2241   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2242 						 (__v8hi) __Y, 5,
2243 						 (__mmask8) -1);
2244 }
2245 
2246 extern __inline __mmask8
2247   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2248 _mm_cmple_epi16_mask (__m128i __X, __m128i __Y)
2249 {
2250   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
2251 						 (__v8hi) __Y, 2,
2252 						 (__mmask8) -1);
2253 }
2254 
2255 extern __inline __m256i
2256 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2257 _mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
2258 			  __m256i __Y)
2259 {
2260   return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2261 						    (__v16hi) __Y,
2262 						    (__v16hi) __W,
2263 						    (__mmask16) __U);
2264 }
2265 
2266 extern __inline __m256i
2267 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2268 _mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y)
2269 {
2270   return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2271 						    (__v16hi) __Y,
2272 						    (__v16hi)
2273 						    _mm256_setzero_si256 (),
2274 						    (__mmask16) __U);
2275 }
2276 
2277 extern __inline __m256i
2278 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2279 _mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2280 			 __m256i __B)
2281 {
2282   return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2283 						   (__v16hi) __B,
2284 						   (__v16hi) __W,
2285 						   (__mmask16) __U);
2286 }
2287 
2288 extern __inline __m256i
2289 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2290 _mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2291 {
2292   return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2293 						   (__v16hi) __B,
2294 						   (__v16hi)
2295 						   _mm256_setzero_si256 (),
2296 						   (__mmask16) __U);
2297 }
2298 
2299 extern __inline __m256i
2300 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2301 _mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2302 			 __m256i __B)
2303 {
2304   return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2305 						  (__v16hi) __B,
2306 						  (__v16hi) __W,
2307 						  (__mmask16) __U);
2308 }
2309 
2310 extern __inline __m256i
2311 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2312 _mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2313 {
2314   return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2315 						  (__v16hi) __B,
2316 						  (__v16hi)
2317 						  _mm256_setzero_si256 (),
2318 						  (__mmask16) __U);
2319 }
2320 
2321 extern __inline __m128i
2322 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2323 _mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2324 		      __m128i __B)
2325 {
2326   return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2327 						  (__v8hi) __B,
2328 						  (__v8hi) __W,
2329 						  (__mmask8) __U);
2330 }
2331 
2332 extern __inline __m128i
2333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2334 _mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2335 {
2336   return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2337 						  (__v8hi) __B,
2338 						  (__v8hi)
2339 						  _mm_setzero_si128 (),
2340 						  (__mmask8) __U);
2341 }
2342 
2343 extern __inline __m128i
2344 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2345 _mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2346 		      __m128i __B)
2347 {
2348   return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2349 						   (__v8hi) __B,
2350 						   (__v8hi) __W,
2351 						   (__mmask8) __U);
2352 }
2353 
2354 extern __inline __m128i
2355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2356 _mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
2357 {
2358   return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2359 						   (__v8hi) __B,
2360 						   (__v8hi)
2361 						   _mm_setzero_si128 (),
2362 						   (__mmask8) __U);
2363 }
2364 
2365 extern __inline __m128i
2366 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2367 _mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X,
2368 		       __m128i __Y)
2369 {
2370   return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2371 						    (__v8hi) __Y,
2372 						    (__v8hi) __W,
2373 						    (__mmask8) __U);
2374 }
2375 
2376 extern __inline __m128i
2377 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2378 _mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y)
2379 {
2380   return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2381 						    (__v8hi) __Y,
2382 						    (__v8hi)
2383 						    _mm_setzero_si128 (),
2384 						    (__mmask8) __U);
2385 }
2386 
2387 extern __inline __m256i
2388 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2389 _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2390 			 __m256i __B)
2391 {
2392   return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
2393 						  (__v16hi) __B,
2394 						  (__v16hi) __W,
2395 						  (__mmask16) __U);
2396 }
2397 
2398 extern __inline __m256i
2399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2400 _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2401 {
2402   return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
2403 						  (__v16hi) __B,
2404 						  (__v16hi)
2405 						  _mm256_setzero_si256 (),
2406 						  (__mmask16) __U);
2407 }
2408 
2409 extern __inline __m128i
2410 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2411 _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2412 		      __m128i __B)
2413 {
2414   return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
2415 						  (__v8hi) __B,
2416 						  (__v8hi) __W,
2417 						  (__mmask8) __U);
2418 }
2419 
2420 extern __inline __m128i
2421 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2422 _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2423 {
2424   return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
2425 						  (__v8hi) __B,
2426 						  (__v8hi)
2427 						  _mm_setzero_si128 (),
2428 						  (__mmask8) __U);
2429 }
2430 
2431 extern __inline __m256i
2432 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2433 _mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
2434 {
2435   return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2436 						    (__v16hi) __W,
2437 						    (__mmask16) __U);
2438 }
2439 
2440 extern __inline __m256i
2441 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2442 _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
2443 {
2444   return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2445 						    (__v16hi)
2446 						    _mm256_setzero_si256 (),
2447 						    (__mmask16) __U);
2448 }
2449 
2450 extern __inline __m128i
2451 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2452 _mm_mask_cvtepi8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2453 {
2454   return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2455 						    (__v8hi) __W,
2456 						    (__mmask8) __U);
2457 }
2458 
2459 extern __inline __m128i
2460 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2461 _mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
2462 {
2463   return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2464 						    (__v8hi)
2465 						    _mm_setzero_si128 (),
2466 						    (__mmask8) __U);
2467 }
2468 
2469 extern __inline __m256i
2470 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2471 _mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask16 __U, __m128i __A)
2472 {
2473   return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2474 						    (__v16hi) __W,
2475 						    (__mmask16) __U);
2476 }
2477 
2478 extern __inline __m256i
2479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2480 _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2481 {
2482   return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2483 						    (__v16hi)
2484 						    _mm256_setzero_si256 (),
2485 						    (__mmask16) __U);
2486 }
2487 
2488 extern __inline __m128i
2489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2490 _mm_mask_cvtepu8_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2491 {
2492   return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2493 						    (__v8hi) __W,
2494 						    (__mmask8) __U);
2495 }
2496 
2497 extern __inline __m128i
2498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2499 _mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2500 {
2501   return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2502 						    (__v8hi)
2503 						    _mm_setzero_si128 (),
2504 						    (__mmask8) __U);
2505 }
2506 
2507 extern __inline __m256i
2508 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2509 _mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2510 		      __m256i __B)
2511 {
2512   return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
2513 						 (__v32qi) __B,
2514 						 (__v32qi) __W,
2515 						 (__mmask32) __U);
2516 }
2517 
2518 extern __inline __m256i
2519 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2520 _mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2521 {
2522   return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
2523 						 (__v32qi) __B,
2524 						 (__v32qi)
2525 						 _mm256_setzero_si256 (),
2526 						 (__mmask32) __U);
2527 }
2528 
2529 extern __inline __m128i
2530 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2531 _mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
2532 		   __m128i __B)
2533 {
2534   return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
2535 						 (__v16qi) __B,
2536 						 (__v16qi) __W,
2537 						 (__mmask16) __U);
2538 }
2539 
2540 extern __inline __m128i
2541 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2542 _mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
2543 {
2544   return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
2545 						 (__v16qi) __B,
2546 						 (__v16qi)
2547 						 _mm_setzero_si128 (),
2548 						 (__mmask16) __U);
2549 }
2550 
2551 extern __inline __m256i
2552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2553 _mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2554 		       __m256i __B)
2555 {
2556   return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
2557 						 (__v16hi) __B,
2558 						 (__v16hi) __W,
2559 						 (__mmask16) __U);
2560 }
2561 
2562 extern __inline __m256i
2563 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2564 _mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2565 {
2566   return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
2567 						 (__v16hi) __B,
2568 						 (__v16hi)
2569 						 _mm256_setzero_si256 (),
2570 						 (__mmask16) __U);
2571 }
2572 
2573 extern __inline __m128i
2574 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2575 _mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2576 		    __m128i __B)
2577 {
2578   return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
2579 						 (__v8hi) __B,
2580 						 (__v8hi) __W,
2581 						 (__mmask8) __U);
2582 }
2583 
2584 extern __inline __m128i
2585 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2586 _mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
2587 {
2588   return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
2589 						 (__v8hi) __B,
2590 						 (__v8hi)
2591 						 _mm_setzero_si128 (),
2592 						 (__mmask8) __U);
2593 }
2594 
2595 extern __inline __m256i
2596 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2597 _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2598 		      __m256i __B)
2599 {
2600   return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
2601 						 (__v32qi) __B,
2602 						 (__v32qi) __W,
2603 						 (__mmask32) __U);
2604 }
2605 
2606 extern __inline __m256i
2607 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2608 _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2609 {
2610   return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
2611 						 (__v32qi) __B,
2612 						 (__v32qi)
2613 						 _mm256_setzero_si256 (),
2614 						 (__mmask32) __U);
2615 }
2616 
2617 extern __inline __m256i
2618 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2619 _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2620 		       __m256i __B)
2621 {
2622   return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
2623 						 (__v16hi) __B,
2624 						 (__v16hi) __W,
2625 						 (__mmask16) __U);
2626 }
2627 
2628 extern __inline __m256i
2629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2630 _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2631 {
2632   return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
2633 						 (__v16hi) __B,
2634 						 (__v16hi)
2635 						 _mm256_setzero_si256 (),
2636 						 (__mmask16) __U);
2637 }
2638 
2639 extern __inline __m256i
2640 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2641 _mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2642 		       __m256i __B)
2643 {
2644   return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
2645 						  (__v32qi) __B,
2646 						  (__v32qi) __W,
2647 						  (__mmask32) __U);
2648 }
2649 
2650 extern __inline __m256i
2651 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2652 _mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2653 {
2654   return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
2655 						  (__v32qi) __B,
2656 						  (__v32qi)
2657 						  _mm256_setzero_si256 (),
2658 						  (__mmask32) __U);
2659 }
2660 
2661 extern __inline __m256i
2662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2663 _mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2664 			__m256i __B)
2665 {
2666   return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
2667 						  (__v16hi) __B,
2668 						  (__v16hi) __W,
2669 						  (__mmask16) __U);
2670 }
2671 
2672 extern __inline __m256i
2673 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2674 _mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2675 {
2676   return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
2677 						  (__v16hi) __B,
2678 						  (__v16hi)
2679 						  _mm256_setzero_si256 (),
2680 						  (__mmask16) __U);
2681 }
2682 
2683 extern __inline __m256i
2684 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2685 _mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2686 		       __m256i __B)
2687 {
2688   return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
2689 						   (__v32qi) __B,
2690 						   (__v32qi) __W,
2691 						   (__mmask32) __U);
2692 }
2693 
2694 extern __inline __m256i
2695 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2696 _mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2697 {
2698   return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
2699 						   (__v32qi) __B,
2700 						   (__v32qi)
2701 						   _mm256_setzero_si256 (),
2702 						   (__mmask32) __U);
2703 }
2704 
2705 extern __inline __m256i
2706 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2707 _mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2708 			__m256i __B)
2709 {
2710   return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
2711 						   (__v16hi) __B,
2712 						   (__v16hi) __W,
2713 						   (__mmask16) __U);
2714 }
2715 
2716 extern __inline __m256i
2717 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2718 _mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2719 {
2720   return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
2721 						   (__v16hi) __B,
2722 						   (__v16hi)
2723 						   _mm256_setzero_si256 (),
2724 						   (__mmask16) __U);
2725 }
2726 
2727 extern __inline __m256i
2728 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2729 _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2730 		      __m256i __B)
2731 {
2732   return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
2733 						 (__v32qi) __B,
2734 						 (__v32qi) __W,
2735 						 (__mmask32) __U);
2736 }
2737 
2738 extern __inline __m256i
2739 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2740 _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2741 {
2742   return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
2743 						 (__v32qi) __B,
2744 						 (__v32qi)
2745 						 _mm256_setzero_si256 (),
2746 						 (__mmask32) __U);
2747 }
2748 
2749 extern __inline __m256i
2750 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2751 _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2752 		       __m256i __B)
2753 {
2754   return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
2755 						 (__v16hi) __B,
2756 						 (__v16hi) __W,
2757 						 (__mmask16) __U);
2758 }
2759 
2760 extern __inline __m256i
2761 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2762 _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2763 {
2764   return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
2765 						 (__v16hi) __B,
2766 						 (__v16hi)
2767 						 _mm256_setzero_si256 (),
2768 						 (__mmask16) __U);
2769 }
2770 
2771 extern __inline __m256i
2772 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2773 _mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2774 		       __m256i __B)
2775 {
2776   return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
2777 						  (__v32qi) __B,
2778 						  (__v32qi) __W,
2779 						  (__mmask32) __U);
2780 }
2781 
2782 extern __inline __m256i
2783 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2784 _mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2785 {
2786   return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
2787 						  (__v32qi) __B,
2788 						  (__v32qi)
2789 						  _mm256_setzero_si256 (),
2790 						  (__mmask32) __U);
2791 }
2792 
2793 extern __inline __m256i
2794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2795 _mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2796 			__m256i __B)
2797 {
2798   return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
2799 						  (__v16hi) __B,
2800 						  (__v16hi) __W,
2801 						  (__mmask16) __U);
2802 }
2803 
2804 extern __inline __m256i
2805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2806 _mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2807 {
2808   return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
2809 						  (__v16hi) __B,
2810 						  (__v16hi)
2811 						  _mm256_setzero_si256 (),
2812 						  (__mmask16) __U);
2813 }
2814 
2815 extern __inline __m256i
2816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2817 _mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
2818 		       __m256i __B)
2819 {
2820   return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
2821 						   (__v32qi) __B,
2822 						   (__v32qi) __W,
2823 						   (__mmask32) __U);
2824 }
2825 
2826 extern __inline __m256i
2827 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2828 _mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
2829 {
2830   return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
2831 						   (__v32qi) __B,
2832 						   (__v32qi)
2833 						   _mm256_setzero_si256 (),
2834 						   (__mmask32) __U);
2835 }
2836 
2837 extern __inline __m256i
2838 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2839 _mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2840 			__m256i __B)
2841 {
2842   return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
2843 						   (__v16hi) __B,
2844 						   (__v16hi) __W,
2845 						   (__mmask16) __U);
2846 }
2847 
2848 extern __inline __m256i
2849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2850 _mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
2851 {
2852   return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
2853 						   (__v16hi) __B,
2854 						   (__v16hi)
2855 						   _mm256_setzero_si256 (),
2856 						   (__mmask16) __U);
2857 }
2858 
2859 extern __inline __m128i
2860 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2861 _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2862 		   __m128i __B)
2863 {
2864   return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
2865 						 (__v16qi) __B,
2866 						 (__v16qi) __W,
2867 						 (__mmask16) __U);
2868 }
2869 
2870 extern __inline __m128i
2871 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2872 _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
2873 {
2874   return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
2875 						 (__v16qi) __B,
2876 						 (__v16qi)
2877 						 _mm_setzero_si128 (),
2878 						 (__mmask16) __U);
2879 }
2880 
2881 extern __inline __m128i
2882 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2883 _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2884 		    __m128i __B)
2885 {
2886   return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
2887 						 (__v8hi) __B,
2888 						 (__v8hi) __W,
2889 						 (__mmask8) __U);
2890 }
2891 
2892 extern __inline __m128i
2893 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2894 _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2895 {
2896   return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
2897 						 (__v8hi) __B,
2898 						 (__v8hi)
2899 						 _mm_setzero_si128 (),
2900 						 (__mmask8) __U);
2901 }
2902 
2903 extern __inline __m256i
2904 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2905 _mm256_mask_unpackhi_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2906 			   __m256i __B)
2907 {
2908   return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2909 						     (__v32qi) __B,
2910 						     (__v32qi) __W,
2911 						     (__mmask32) __U);
2912 }
2913 
2914 extern __inline __m256i
2915 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2916 _mm256_maskz_unpackhi_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
2917 {
2918   return (__m256i) __builtin_ia32_punpckhbw256_mask ((__v32qi) __A,
2919 						     (__v32qi) __B,
2920 						     (__v32qi)
2921 						     _mm256_setzero_si256 (),
2922 						     (__mmask32) __U);
2923 }
2924 
2925 extern __inline __m128i
2926 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2927 _mm_mask_unpackhi_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
2928 			__m128i __B)
2929 {
2930   return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2931 						     (__v16qi) __B,
2932 						     (__v16qi) __W,
2933 						     (__mmask16) __U);
2934 }
2935 
2936 extern __inline __m128i
2937 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2938 _mm_maskz_unpackhi_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
2939 {
2940   return (__m128i) __builtin_ia32_punpckhbw128_mask ((__v16qi) __A,
2941 						     (__v16qi) __B,
2942 						     (__v16qi)
2943 						     _mm_setzero_si128 (),
2944 						     (__mmask16) __U);
2945 }
2946 
2947 extern __inline __m256i
2948 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2949 _mm256_mask_unpackhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2950 			    __m256i __B)
2951 {
2952   return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2953 						     (__v16hi) __B,
2954 						     (__v16hi) __W,
2955 						     (__mmask16) __U);
2956 }
2957 
2958 extern __inline __m256i
2959 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2960 _mm256_maskz_unpackhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2961 {
2962   return (__m256i) __builtin_ia32_punpckhwd256_mask ((__v16hi) __A,
2963 						     (__v16hi) __B,
2964 						     (__v16hi)
2965 						     _mm256_setzero_si256 (),
2966 						     (__mmask16) __U);
2967 }
2968 
2969 extern __inline __m128i
2970 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2971 _mm_mask_unpackhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2972 			 __m128i __B)
2973 {
2974   return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2975 						     (__v8hi) __B,
2976 						     (__v8hi) __W,
2977 						     (__mmask8) __U);
2978 }
2979 
2980 extern __inline __m128i
2981 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2982 _mm_maskz_unpackhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2983 {
2984   return (__m128i) __builtin_ia32_punpckhwd128_mask ((__v8hi) __A,
2985 						     (__v8hi) __B,
2986 						     (__v8hi)
2987 						     _mm_setzero_si128 (),
2988 						     (__mmask8) __U);
2989 }
2990 
2991 extern __inline __m256i
2992 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2993 _mm256_mask_unpacklo_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
2994 			   __m256i __B)
2995 {
2996   return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
2997 						     (__v32qi) __B,
2998 						     (__v32qi) __W,
2999 						     (__mmask32) __U);
3000 }
3001 
3002 extern __inline __m256i
3003 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3004 _mm256_maskz_unpacklo_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
3005 {
3006   return (__m256i) __builtin_ia32_punpcklbw256_mask ((__v32qi) __A,
3007 						     (__v32qi) __B,
3008 						     (__v32qi)
3009 						     _mm256_setzero_si256 (),
3010 						     (__mmask32) __U);
3011 }
3012 
3013 extern __inline __m128i
3014 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3015 _mm_mask_unpacklo_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3016 			__m128i __B)
3017 {
3018   return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
3019 						     (__v16qi) __B,
3020 						     (__v16qi) __W,
3021 						     (__mmask16) __U);
3022 }
3023 
3024 extern __inline __m128i
3025 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3026 _mm_maskz_unpacklo_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3027 {
3028   return (__m128i) __builtin_ia32_punpcklbw128_mask ((__v16qi) __A,
3029 						     (__v16qi) __B,
3030 						     (__v16qi)
3031 						     _mm_setzero_si128 (),
3032 						     (__mmask16) __U);
3033 }
3034 
3035 extern __inline __m256i
3036 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3037 _mm256_mask_unpacklo_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3038 			    __m256i __B)
3039 {
3040   return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
3041 						     (__v16hi) __B,
3042 						     (__v16hi) __W,
3043 						     (__mmask16) __U);
3044 }
3045 
3046 extern __inline __m256i
3047 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3048 _mm256_maskz_unpacklo_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
3049 {
3050   return (__m256i) __builtin_ia32_punpcklwd256_mask ((__v16hi) __A,
3051 						     (__v16hi) __B,
3052 						     (__v16hi)
3053 						     _mm256_setzero_si256 (),
3054 						     (__mmask16) __U);
3055 }
3056 
3057 extern __inline __m128i
3058 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3059 _mm_mask_unpacklo_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3060 			 __m128i __B)
3061 {
3062   return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
3063 						     (__v8hi) __B,
3064 						     (__v8hi) __W,
3065 						     (__mmask8) __U);
3066 }
3067 
3068 extern __inline __m128i
3069 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3070 _mm_maskz_unpacklo_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3071 {
3072   return (__m128i) __builtin_ia32_punpcklwd128_mask ((__v8hi) __A,
3073 						     (__v8hi) __B,
3074 						     (__v8hi)
3075 						     _mm_setzero_si128 (),
3076 						     (__mmask8) __U);
3077 }
3078 
3079 extern __inline __mmask16
3080 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3081 _mm_cmpeq_epi8_mask (__m128i __A, __m128i __B)
3082 {
3083   return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
3084 						     (__v16qi) __B,
3085 						     (__mmask16) -1);
3086 }
3087 
3088 extern __inline __mmask16
3089 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3090 _mm_cmpeq_epu8_mask (__m128i __A, __m128i __B)
3091 {
3092   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
3093 						    (__v16qi) __B, 0,
3094 						    (__mmask16) -1);
3095 }
3096 
3097 extern __inline __mmask16
3098 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3099 _mm_mask_cmpeq_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3100 {
3101   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
3102 						    (__v16qi) __B, 0,
3103 						    __U);
3104 }
3105 
3106 extern __inline __mmask16
3107 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3108 _mm_mask_cmpeq_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3109 {
3110   return (__mmask16) __builtin_ia32_pcmpeqb128_mask ((__v16qi) __A,
3111 						     (__v16qi) __B,
3112 						     __U);
3113 }
3114 
3115 extern __inline __mmask32
3116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3117 _mm256_cmpeq_epu8_mask (__m256i __A, __m256i __B)
3118 {
3119   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
3120 						    (__v32qi) __B, 0,
3121 						    (__mmask32) -1);
3122 }
3123 
3124 extern __inline __mmask32
3125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3126 _mm256_cmpeq_epi8_mask (__m256i __A, __m256i __B)
3127 {
3128   return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
3129 						     (__v32qi) __B,
3130 						     (__mmask32) -1);
3131 }
3132 
3133 extern __inline __mmask32
3134 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3135 _mm256_mask_cmpeq_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3136 {
3137   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
3138 						    (__v32qi) __B, 0,
3139 						    __U);
3140 }
3141 
3142 extern __inline __mmask32
3143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3144 _mm256_mask_cmpeq_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3145 {
3146   return (__mmask32) __builtin_ia32_pcmpeqb256_mask ((__v32qi) __A,
3147 						     (__v32qi) __B,
3148 						     __U);
3149 }
3150 
3151 extern __inline __mmask8
3152 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3153 _mm_cmpeq_epu16_mask (__m128i __A, __m128i __B)
3154 {
3155   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
3156 						   (__v8hi) __B, 0,
3157 						   (__mmask8) -1);
3158 }
3159 
3160 extern __inline __mmask8
3161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3162 _mm_cmpeq_epi16_mask (__m128i __A, __m128i __B)
3163 {
3164   return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
3165 						    (__v8hi) __B,
3166 						    (__mmask8) -1);
3167 }
3168 
3169 extern __inline __mmask8
3170 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3171 _mm_mask_cmpeq_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3172 {
3173   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
3174 						   (__v8hi) __B, 0, __U);
3175 }
3176 
3177 extern __inline __mmask8
3178 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3179 _mm_mask_cmpeq_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3180 {
3181   return (__mmask8) __builtin_ia32_pcmpeqw128_mask ((__v8hi) __A,
3182 						    (__v8hi) __B, __U);
3183 }
3184 
3185 extern __inline __mmask16
3186 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3187 _mm256_cmpeq_epu16_mask (__m256i __A, __m256i __B)
3188 {
3189   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
3190 						    (__v16hi) __B, 0,
3191 						    (__mmask16) -1);
3192 }
3193 
3194 extern __inline __mmask16
3195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3196 _mm256_cmpeq_epi16_mask (__m256i __A, __m256i __B)
3197 {
3198   return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
3199 						     (__v16hi) __B,
3200 						     (__mmask16) -1);
3201 }
3202 
3203 extern __inline __mmask16
3204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3205 _mm256_mask_cmpeq_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3206 {
3207   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
3208 						    (__v16hi) __B, 0,
3209 						    __U);
3210 }
3211 
3212 extern __inline __mmask16
3213 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3214 _mm256_mask_cmpeq_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3215 {
3216   return (__mmask16) __builtin_ia32_pcmpeqw256_mask ((__v16hi) __A,
3217 						     (__v16hi) __B,
3218 						     __U);
3219 }
3220 
3221 extern __inline __mmask16
3222 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3223 _mm_cmpgt_epu8_mask (__m128i __A, __m128i __B)
3224 {
3225   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
3226 						    (__v16qi) __B, 6,
3227 						    (__mmask16) -1);
3228 }
3229 
3230 extern __inline __mmask16
3231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3232 _mm_cmpgt_epi8_mask (__m128i __A, __m128i __B)
3233 {
3234   return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
3235 						     (__v16qi) __B,
3236 						     (__mmask16) -1);
3237 }
3238 
3239 extern __inline __mmask16
3240 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3241 _mm_mask_cmpgt_epu8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3242 {
3243   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __A,
3244 						    (__v16qi) __B, 6,
3245 						    __U);
3246 }
3247 
3248 extern __inline __mmask16
3249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3250 _mm_mask_cmpgt_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3251 {
3252   return (__mmask16) __builtin_ia32_pcmpgtb128_mask ((__v16qi) __A,
3253 						     (__v16qi) __B,
3254 						     __U);
3255 }
3256 
3257 extern __inline __mmask32
3258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3259 _mm256_cmpgt_epu8_mask (__m256i __A, __m256i __B)
3260 {
3261   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
3262 						    (__v32qi) __B, 6,
3263 						    (__mmask32) -1);
3264 }
3265 
3266 extern __inline __mmask32
3267 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3268 _mm256_cmpgt_epi8_mask (__m256i __A, __m256i __B)
3269 {
3270   return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
3271 						     (__v32qi) __B,
3272 						     (__mmask32) -1);
3273 }
3274 
3275 extern __inline __mmask32
3276 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3277 _mm256_mask_cmpgt_epu8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3278 {
3279   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __A,
3280 						    (__v32qi) __B, 6,
3281 						    __U);
3282 }
3283 
3284 extern __inline __mmask32
3285 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3286 _mm256_mask_cmpgt_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3287 {
3288   return (__mmask32) __builtin_ia32_pcmpgtb256_mask ((__v32qi) __A,
3289 						     (__v32qi) __B,
3290 						     __U);
3291 }
3292 
3293 extern __inline __mmask8
3294 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3295 _mm_cmpgt_epu16_mask (__m128i __A, __m128i __B)
3296 {
3297   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
3298 						   (__v8hi) __B, 6,
3299 						   (__mmask8) -1);
3300 }
3301 
3302 extern __inline __mmask8
3303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3304 _mm_cmpgt_epi16_mask (__m128i __A, __m128i __B)
3305 {
3306   return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
3307 						    (__v8hi) __B,
3308 						    (__mmask8) -1);
3309 }
3310 
3311 extern __inline __mmask8
3312 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3313 _mm_mask_cmpgt_epu16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3314 {
3315   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __A,
3316 						   (__v8hi) __B, 6, __U);
3317 }
3318 
3319 extern __inline __mmask8
3320 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3321 _mm_mask_cmpgt_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3322 {
3323   return (__mmask8) __builtin_ia32_pcmpgtw128_mask ((__v8hi) __A,
3324 						    (__v8hi) __B, __U);
3325 }
3326 
3327 extern __inline __mmask16
3328 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3329 _mm256_cmpgt_epu16_mask (__m256i __A, __m256i __B)
3330 {
3331   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
3332 						    (__v16hi) __B, 6,
3333 						    (__mmask16) -1);
3334 }
3335 
3336 extern __inline __mmask16
3337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3338 _mm256_cmpgt_epi16_mask (__m256i __A, __m256i __B)
3339 {
3340   return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
3341 						     (__v16hi) __B,
3342 						     (__mmask16) -1);
3343 }
3344 
3345 extern __inline __mmask16
3346 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3347 _mm256_mask_cmpgt_epu16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3348 {
3349   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __A,
3350 						    (__v16hi) __B, 6,
3351 						    __U);
3352 }
3353 
3354 extern __inline __mmask16
3355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3356 _mm256_mask_cmpgt_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3357 {
3358   return (__mmask16) __builtin_ia32_pcmpgtw256_mask ((__v16hi) __A,
3359 						     (__v16hi) __B,
3360 						     __U);
3361 }
3362 
3363 extern __inline __mmask16
3364 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3365 _mm_testn_epi8_mask (__m128i __A, __m128i __B)
3366 {
3367   return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3368 						 (__v16qi) __B,
3369 						 (__mmask16) -1);
3370 }
3371 
3372 extern __inline __mmask16
3373 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3374 _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3375 {
3376   return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3377 						 (__v16qi) __B, __U);
3378 }
3379 
3380 extern __inline __mmask32
3381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3382 _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
3383 {
3384   return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3385 						 (__v32qi) __B,
3386 						 (__mmask32) -1);
3387 }
3388 
3389 extern __inline __mmask32
3390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3391 _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3392 {
3393   return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3394 						 (__v32qi) __B, __U);
3395 }
3396 
3397 extern __inline __mmask8
3398 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3399 _mm_testn_epi16_mask (__m128i __A, __m128i __B)
3400 {
3401   return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3402 						(__v8hi) __B,
3403 						(__mmask8) -1);
3404 }
3405 
3406 extern __inline __mmask8
3407 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3408 _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3409 {
3410   return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3411 						(__v8hi) __B, __U);
3412 }
3413 
3414 extern __inline __mmask16
3415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3416 _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
3417 {
3418   return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3419 						 (__v16hi) __B,
3420 						 (__mmask16) -1);
3421 }
3422 
3423 extern __inline __mmask16
3424 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3425 _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3426 {
3427   return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3428 						 (__v16hi) __B, __U);
3429 }
3430 
3431 extern __inline __m256i
3432 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3433 _mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
3434 			  __m256i __B)
3435 {
3436   return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
3437 						  (__v32qi) __B,
3438 						  (__v32qi) __W,
3439 						  (__mmask32) __U);
3440 }
3441 
3442 extern __inline __m256i
3443 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3444 _mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
3445 {
3446   return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
3447 						  (__v32qi) __B,
3448 						  (__v32qi)
3449 						  _mm256_setzero_si256 (),
3450 						  (__mmask32) __U);
3451 }
3452 
3453 extern __inline __m128i
3454 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3455 _mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3456 		       __m128i __B)
3457 {
3458   return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
3459 						  (__v16qi) __B,
3460 						  (__v16qi) __W,
3461 						  (__mmask16) __U);
3462 }
3463 
3464 extern __inline __m128i
3465 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3466 _mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3467 {
3468   return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
3469 						  (__v16qi) __B,
3470 						  (__v16qi)
3471 						  _mm_setzero_si128 (),
3472 						  (__mmask16) __U);
3473 }
3474 
3475 extern __inline __m256i
3476 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3477 _mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
3478 {
3479   return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
3480 						    (__v16hi) __B,
3481 						    (__v32qi)
3482 						    _mm256_setzero_si256 (),
3483 						    __M);
3484 }
3485 
3486 extern __inline __m256i
3487 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3488 _mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
3489 			 __m256i __B)
3490 {
3491   return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
3492 						    (__v16hi) __B,
3493 						    (__v32qi) __W,
3494 						    __M);
3495 }
3496 
3497 extern __inline __m128i
3498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3499 _mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
3500 {
3501   return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
3502 						    (__v8hi) __B,
3503 						    (__v16qi)
3504 						    _mm_setzero_si128 (),
3505 						    __M);
3506 }
3507 
3508 extern __inline __m128i
3509 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3510 _mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
3511 		      __m128i __B)
3512 {
3513   return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
3514 						    (__v8hi) __B,
3515 						    (__v16qi) __W,
3516 						    __M);
3517 }
3518 
3519 extern __inline __m256i
3520 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3521 _mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
3522 {
3523   return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
3524 						    (__v16hi) __B,
3525 						    (__v32qi)
3526 						    _mm256_setzero_si256 (),
3527 						    __M);
3528 }
3529 
3530 extern __inline __m256i
3531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3532 _mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
3533 			  __m256i __B)
3534 {
3535   return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
3536 						    (__v16hi) __B,
3537 						    (__v32qi) __W,
3538 						    __M);
3539 }
3540 
3541 extern __inline __m128i
3542 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3543 _mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
3544 {
3545   return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
3546 						    (__v8hi) __B,
3547 						    (__v16qi)
3548 						    _mm_setzero_si128 (),
3549 						    __M);
3550 }
3551 
3552 extern __inline __m128i
3553 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3554 _mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
3555 		       __m128i __B)
3556 {
3557   return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
3558 						    (__v8hi) __B,
3559 						    (__v16qi) __W,
3560 						    __M);
3561 }
3562 
3563 extern __inline __m256i
3564 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3565 _mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
3566 {
3567   return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
3568 						 (__v32qi) __W,
3569 						 (__mmask32) __U);
3570 }
3571 
3572 extern __inline __m256i
3573 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3574 _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
3575 {
3576   return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
3577 						 (__v32qi)
3578 						 _mm256_setzero_si256 (),
3579 						 (__mmask32) __U);
3580 }
3581 
3582 extern __inline __m128i
3583 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3584 _mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
3585 {
3586   return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
3587 						 (__v16qi) __W,
3588 						 (__mmask16) __U);
3589 }
3590 
3591 extern __inline __m128i
3592 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3593 _mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
3594 {
3595   return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
3596 						 (__v16qi)
3597 						 _mm_setzero_si128 (),
3598 						 (__mmask16) __U);
3599 }
3600 
3601 extern __inline __m256i
3602 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3603 _mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
3604 {
3605   return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
3606 						 (__v16hi) __W,
3607 						 (__mmask16) __U);
3608 }
3609 
3610 extern __inline __m256i
3611 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3612 _mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
3613 {
3614   return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
3615 						 (__v16hi)
3616 						 _mm256_setzero_si256 (),
3617 						 (__mmask16) __U);
3618 }
3619 
3620 extern __inline __m128i
3621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3622 _mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
3623 {
3624   return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
3625 						 (__v8hi) __W,
3626 						 (__mmask8) __U);
3627 }
3628 
3629 extern __inline __m128i
3630 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3631 _mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
3632 {
3633   return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
3634 						 (__v8hi)
3635 						 _mm_setzero_si128 (),
3636 						 (__mmask8) __U);
3637 }
3638 
3639 extern __inline __mmask32
3640   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3641 _mm256_cmpneq_epu8_mask (__m256i __X, __m256i __Y)
3642 {
3643   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3644 						   (__v32qi) __Y, 4,
3645 						   (__mmask32) -1);
3646 }
3647 
3648 extern __inline __mmask32
3649   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3650 _mm256_cmplt_epu8_mask (__m256i __X, __m256i __Y)
3651 {
3652   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3653 						   (__v32qi) __Y, 1,
3654 						   (__mmask32) -1);
3655 }
3656 
3657 extern __inline __mmask32
3658   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3659 _mm256_cmpge_epu8_mask (__m256i __X, __m256i __Y)
3660 {
3661   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3662 						   (__v32qi) __Y, 5,
3663 						   (__mmask32) -1);
3664 }
3665 
3666 extern __inline __mmask32
3667   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3668 _mm256_cmple_epu8_mask (__m256i __X, __m256i __Y)
3669 {
3670   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
3671 						   (__v32qi) __Y, 2,
3672 						   (__mmask32) -1);
3673 }
3674 
3675 extern __inline __mmask16
3676   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3677 _mm256_cmpneq_epu16_mask (__m256i __X, __m256i __Y)
3678 {
3679   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3680 						   (__v16hi) __Y, 4,
3681 						   (__mmask16) -1);
3682 }
3683 
3684 extern __inline __mmask16
3685   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3686 _mm256_cmplt_epu16_mask (__m256i __X, __m256i __Y)
3687 {
3688   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3689 						   (__v16hi) __Y, 1,
3690 						   (__mmask16) -1);
3691 }
3692 
3693 extern __inline __mmask16
3694   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3695 _mm256_cmpge_epu16_mask (__m256i __X, __m256i __Y)
3696 {
3697   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3698 						   (__v16hi) __Y, 5,
3699 						   (__mmask16) -1);
3700 }
3701 
3702 extern __inline __mmask16
3703   __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3704 _mm256_cmple_epu16_mask (__m256i __X, __m256i __Y)
3705 {
3706   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
3707 						   (__v16hi) __Y, 2,
3708 						   (__mmask16) -1);
3709 }
3710 
3711 extern __inline void
3712 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3713 _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
3714 {
3715   __builtin_ia32_storedquhi256_mask ((short *) __P,
3716 				     (__v16hi) __A,
3717 				     (__mmask16) __U);
3718 }
3719 
3720 extern __inline void
3721 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3722 _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
3723 {
3724   __builtin_ia32_storedquhi128_mask ((short *) __P,
3725 				     (__v8hi) __A,
3726 				     (__mmask8) __U);
3727 }
3728 
3729 extern __inline __m128i
3730 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3731 _mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3732 		     __m128i __B)
3733 {
3734   return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
3735 						  (__v8hi) __B,
3736 						  (__v8hi) __W,
3737 						  (__mmask8) __U);
3738 }
3739 
3740 extern __inline __m128i
3741 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3742 _mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3743 		    __m128i __B)
3744 {
3745   return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
3746 						  (__v16qi) __B,
3747 						  (__v16qi) __W,
3748 						  (__mmask16) __U);
3749 }
3750 
3751 extern __inline __m128i
3752 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3753 _mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3754 {
3755   return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
3756 						  (__v16qi) __B,
3757 						  (__v16qi)
3758 						  _mm_setzero_si128 (),
3759 						  (__mmask16) __U);
3760 }
3761 
3762 extern __inline __m128i
3763 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3764 _mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3765 		     __m128i __B)
3766 {
3767   return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
3768 						  (__v8hi) __B,
3769 						  (__v8hi) __W,
3770 						  (__mmask8) __U);
3771 }
3772 
3773 extern __inline __m128i
3774 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3775 _mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3776 {
3777   return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
3778 						  (__v8hi) __B,
3779 						  (__v8hi)
3780 						  _mm_setzero_si128 (),
3781 						  (__mmask8) __U);
3782 }
3783 
3784 extern __inline __m128i
3785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3786 _mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
3787 		    __m128i __B)
3788 {
3789   return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
3790 						   (__v16qi) __B,
3791 						   (__v16qi) __W,
3792 						   (__mmask16) __U);
3793 }
3794 
3795 extern __inline __m128i
3796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3797 _mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
3798 {
3799   return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
3800 						   (__v16qi) __B,
3801 						   (__v16qi)
3802 						   _mm_setzero_si128 (),
3803 						   (__mmask16) __U);
3804 }
3805 
3806 extern __inline __m128i
3807 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3808 _mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
3809 		     __m128i __B)
3810 {
3811   return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
3812 						   (__v8hi) __B,
3813 						   (__v8hi) __W,
3814 						   (__mmask8) __U);
3815 }
3816 
3817 extern __inline __m128i
3818 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3819 _mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
3820 {
3821   return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
3822 						   (__v8hi) __B,
3823 						   (__v8hi)
3824 						   _mm_setzero_si128 (),
3825 						   (__mmask8) __U);
3826 }
3827 
3828 extern __inline __m256i
3829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3830 _mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3831 		       __m128i __B)
3832 {
3833   return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
3834 						 (__v8hi) __B,
3835 						 (__v16hi) __W,
3836 						 (__mmask16) __U);
3837 }
3838 
3839 extern __inline __m256i
3840 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3841 _mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
3842 {
3843   return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
3844 						 (__v8hi) __B,
3845 						 (__v16hi)
3846 						 _mm256_setzero_si256 (),
3847 						 (__mmask16) __U);
3848 }
3849 
3850 extern __inline __m128i
3851 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3852 _mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3853 		    __m128i __B)
3854 {
3855   return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
3856 						 (__v8hi) __B,
3857 						 (__v8hi) __W,
3858 						 (__mmask8) __U);
3859 }
3860 
3861 extern __inline __m128i
3862 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3863 _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3864 {
3865   return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
3866 						 (__v8hi) __B,
3867 						 (__v8hi)
3868 						 _mm_setzero_si128 (),
3869 						 (__mmask8) __U);
3870 }
3871 
3872 extern __inline __m256i
3873 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3874 _mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
3875 		       __m128i __B)
3876 {
3877   return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
3878 						 (__v8hi) __B,
3879 						 (__v16hi) __W,
3880 						 (__mmask16) __U);
3881 }
3882 
3883 extern __inline __m256i
3884 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3885 _mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
3886 {
3887   return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
3888 						 (__v8hi) __B,
3889 						 (__v16hi)
3890 						 _mm256_setzero_si256 (),
3891 						 (__mmask16) __U);
3892 }
3893 
3894 extern __inline __m128i
3895 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3896 _mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3897 		    __m128i __B)
3898 {
3899   return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
3900 						 (__v8hi) __B,
3901 						 (__v8hi) __W,
3902 						 (__mmask8) __U);
3903 }
3904 
3905 extern __inline __m128i
3906 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3907 _mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3908 {
3909   return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
3910 						 (__v8hi) __B,
3911 						 (__v8hi)
3912 						 _mm_setzero_si128 (),
3913 						 (__mmask8) __U);
3914 }
3915 
3916 extern __inline __m128i
3917 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3918 _mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
3919 {
3920   return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
3921 						  (__v8hi) __B,
3922 						  (__v8hi)
3923 						  _mm_setzero_si128 (),
3924 						  (__mmask8) __U);
3925 }
3926 
3927 extern __inline __m128i
3928 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3929 _mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
3930 		    __m128i __B)
3931 {
3932   return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
3933 						   (__v16qi) __B,
3934 						   (__v16qi) __W,
3935 						   (__mmask16) __U);
3936 }
3937 
3938 extern __inline __m128i
3939 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3940 _mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
3941 {
3942   return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
3943 						   (__v16qi) __B,
3944 						   (__v16qi)
3945 						   _mm_setzero_si128 (),
3946 						   (__mmask16) __U);
3947 }
3948 
3949 extern __inline __m128i
3950 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3951 _mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
3952 		     __m128i __B)
3953 {
3954   return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
3955 						   (__v8hi) __B,
3956 						   (__v8hi) __W,
3957 						   (__mmask8) __U);
3958 }
3959 
3960 extern __inline __m128i
3961 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3962 _mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
3963 {
3964   return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
3965 						   (__v8hi) __B,
3966 						   (__v8hi)
3967 						   _mm_setzero_si128 (),
3968 						   (__mmask8) __U);
3969 }
3970 
3971 extern __inline __m128i
3972 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3973 _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
3974 		   __m128i __B)
3975 {
3976   return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
3977 						 (__v16qi) __B,
3978 						 (__v16qi) __W,
3979 						 (__mmask16) __U);
3980 }
3981 
3982 extern __inline __m128i
3983 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3984 _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
3985 {
3986   return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
3987 						 (__v16qi) __B,
3988 						 (__v16qi)
3989 						 _mm_setzero_si128 (),
3990 						 (__mmask16) __U);
3991 }
3992 
3993 extern __inline __m128i
3994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3995 _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
3996 		    __m128i __B)
3997 {
3998   return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
3999 						 (__v8hi) __B,
4000 						 (__v8hi) __W,
4001 						 (__mmask8) __U);
4002 }
4003 
4004 extern __inline __m128i
4005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4006 _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4007 {
4008   return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
4009 						 (__v8hi) __B,
4010 						 (__v8hi)
4011 						 _mm_setzero_si128 (),
4012 						 (__mmask8) __U);
4013 }
4014 
4015 extern __inline __m128i
4016 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4017 _mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
4018 		    __m128i __B)
4019 {
4020   return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
4021 						  (__v16qi) __B,
4022 						  (__v16qi) __W,
4023 						  (__mmask16) __U);
4024 }
4025 
4026 extern __inline __m128i
4027 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4028 _mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
4029 {
4030   return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
4031 						  (__v16qi) __B,
4032 						  (__v16qi)
4033 						  _mm_setzero_si128 (),
4034 						  (__mmask16) __U);
4035 }
4036 
4037 extern __inline __m128i
4038 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4039 _mm_cvtepi16_epi8 (__m128i __A)
4040 {
4041 
4042   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
4043 						  (__v16qi)_mm_undefined_si128(),
4044 						  (__mmask8) -1);
4045 }
4046 
4047 extern __inline void
4048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4049 _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M,__m128i __A)
4050 {
4051   __builtin_ia32_pmovwb128mem_mask ((__v8qi *) __P , (__v8hi) __A, __M);
4052 }
4053 
4054 extern __inline __m128i
4055 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4056 _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
4057 {
4058   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
4059 						  (__v16qi) __O, __M);
4060 }
4061 
4062 extern __inline __m128i
4063 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4064 _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A)
4065 {
4066   return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
4067 						  (__v16qi)
4068 						  _mm_setzero_si128 (),
4069 						  __M);
4070 }
4071 
4072 extern __inline __m256i
4073 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4074 _mm256_srav_epi16 (__m256i __A, __m256i __B)
4075 {
4076   return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
4077 						  (__v16hi) __B,
4078 						  (__v16hi)
4079 						  _mm256_setzero_si256 (),
4080 						  (__mmask16) -1);
4081 }
4082 
4083 extern __inline __m256i
4084 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4085 _mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4086 			__m256i __B)
4087 {
4088   return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
4089 						  (__v16hi) __B,
4090 						  (__v16hi) __W,
4091 						  (__mmask16) __U);
4092 }
4093 
4094 extern __inline __m256i
4095 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4096 _mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
4097 {
4098   return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
4099 						  (__v16hi) __B,
4100 						  (__v16hi)
4101 						  _mm256_setzero_si256 (),
4102 						  (__mmask16) __U);
4103 }
4104 
4105 extern __inline __m128i
4106 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4107 _mm_srav_epi16 (__m128i __A, __m128i __B)
4108 {
4109   return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
4110 						 (__v8hi) __B,
4111 						 (__v8hi)
4112 						 _mm_setzero_si128 (),
4113 						 (__mmask8) -1);
4114 }
4115 
4116 extern __inline __m128i
4117 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4118 _mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4119 		     __m128i __B)
4120 {
4121   return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
4122 						 (__v8hi) __B,
4123 						 (__v8hi) __W,
4124 						 (__mmask8) __U);
4125 }
4126 
4127 extern __inline __m128i
4128 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4129 _mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4130 {
4131   return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
4132 						 (__v8hi) __B,
4133 						 (__v8hi)
4134 						 _mm_setzero_si128 (),
4135 						 (__mmask8) __U);
4136 }
4137 
4138 extern __inline __m256i
4139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4140 _mm256_srlv_epi16 (__m256i __A, __m256i __B)
4141 {
4142   return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
4143 						  (__v16hi) __B,
4144 						  (__v16hi)
4145 						  _mm256_setzero_si256 (),
4146 						  (__mmask16) -1);
4147 }
4148 
4149 extern __inline __m256i
4150 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4151 _mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4152 			__m256i __B)
4153 {
4154   return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
4155 						  (__v16hi) __B,
4156 						  (__v16hi) __W,
4157 						  (__mmask16) __U);
4158 }
4159 
4160 extern __inline __m256i
4161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4162 _mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
4163 {
4164   return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
4165 						  (__v16hi) __B,
4166 						  (__v16hi)
4167 						  _mm256_setzero_si256 (),
4168 						  (__mmask16) __U);
4169 }
4170 
4171 extern __inline __m128i
4172 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4173 _mm_srlv_epi16 (__m128i __A, __m128i __B)
4174 {
4175   return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
4176 						 (__v8hi) __B,
4177 						 (__v8hi)
4178 						 _mm_setzero_si128 (),
4179 						 (__mmask8) -1);
4180 }
4181 
4182 extern __inline __m128i
4183 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4184 _mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4185 		     __m128i __B)
4186 {
4187   return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
4188 						 (__v8hi) __B,
4189 						 (__v8hi) __W,
4190 						 (__mmask8) __U);
4191 }
4192 
4193 extern __inline __m128i
4194 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4195 _mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4196 {
4197   return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
4198 						 (__v8hi) __B,
4199 						 (__v8hi)
4200 						 _mm_setzero_si128 (),
4201 						 (__mmask8) __U);
4202 }
4203 
4204 extern __inline __m256i
4205 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4206 _mm256_sllv_epi16 (__m256i __A, __m256i __B)
4207 {
4208   return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4209 						  (__v16hi) __B,
4210 						  (__v16hi)
4211 						  _mm256_setzero_si256 (),
4212 						  (__mmask16) -1);
4213 }
4214 
4215 extern __inline __m256i
4216 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4217 _mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4218 			__m256i __B)
4219 {
4220   return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4221 						  (__v16hi) __B,
4222 						  (__v16hi) __W,
4223 						  (__mmask16) __U);
4224 }
4225 
4226 extern __inline __m256i
4227 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4228 _mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
4229 {
4230   return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
4231 						  (__v16hi) __B,
4232 						  (__v16hi)
4233 						  _mm256_setzero_si256 (),
4234 						  (__mmask16) __U);
4235 }
4236 
4237 extern __inline __m128i
4238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4239 _mm_sllv_epi16 (__m128i __A, __m128i __B)
4240 {
4241   return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4242 						 (__v8hi) __B,
4243 						 (__v8hi)
4244 						 _mm_setzero_si128 (),
4245 						 (__mmask8) -1);
4246 }
4247 
4248 extern __inline __m128i
4249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4250 _mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4251 		     __m128i __B)
4252 {
4253   return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4254 						 (__v8hi) __B,
4255 						 (__v8hi) __W,
4256 						 (__mmask8) __U);
4257 }
4258 
4259 extern __inline __m128i
4260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4261 _mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4262 {
4263   return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
4264 						 (__v8hi) __B,
4265 						 (__v8hi)
4266 						 _mm_setzero_si128 (),
4267 						 (__mmask8) __U);
4268 }
4269 
4270 extern __inline __m128i
4271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4272 _mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
4273 		    __m128i __B)
4274 {
4275   return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
4276 						 (__v8hi) __B,
4277 						 (__v8hi) __W,
4278 						 (__mmask8) __U);
4279 }
4280 
4281 extern __inline __m128i
4282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4283 _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
4284 {
4285   return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
4286 						 (__v8hi) __B,
4287 						 (__v8hi)
4288 						 _mm_setzero_si128 (),
4289 						 (__mmask8) __U);
4290 }
4291 
4292 extern __inline __m256i
4293 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4294 _mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
4295 		       __m128i __B)
4296 {
4297   return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
4298 						 (__v8hi) __B,
4299 						 (__v16hi) __W,
4300 						 (__mmask16) __U);
4301 }
4302 
4303 extern __inline __m256i
4304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4305 _mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
4306 {
4307   return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
4308 						 (__v8hi) __B,
4309 						 (__v16hi)
4310 						 _mm256_setzero_si256 (),
4311 						 (__mmask16) __U);
4312 }
4313 
4314 extern __inline __m256i
4315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4316 _mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
4317 {
4318   return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
4319 						    (__v8si) __B,
4320 						    (__v16hi)
4321 						    _mm256_setzero_si256 (),
4322 						    __M);
4323 }
4324 
4325 extern __inline __m256i
4326 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4327 _mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
4328 			  __m256i __B)
4329 {
4330   return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
4331 						    (__v8si) __B,
4332 						    (__v16hi) __W,
4333 						    __M);
4334 }
4335 
4336 extern __inline __m128i
4337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4338 _mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
4339 {
4340   return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
4341 						    (__v4si) __B,
4342 						    (__v8hi)
4343 						    _mm_setzero_si128 (),
4344 						    __M);
4345 }
4346 
4347 extern __inline __m128i
4348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4349 _mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
4350 		       __m128i __B)
4351 {
4352   return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
4353 						    (__v4si) __B,
4354 						    (__v8hi) __W, __M);
4355 }
4356 
4357 extern __inline __m256i
4358 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4359 _mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
4360 {
4361   return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
4362 						    (__v8si) __B,
4363 						    (__v16hi)
4364 						    _mm256_setzero_si256 (),
4365 						    __M);
4366 }
4367 
4368 extern __inline __m256i
4369 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4370 _mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
4371 			 __m256i __B)
4372 {
4373   return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
4374 						    (__v8si) __B,
4375 						    (__v16hi) __W,
4376 						    __M);
4377 }
4378 
4379 extern __inline __m128i
4380 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4381 _mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
4382 {
4383   return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
4384 						    (__v4si) __B,
4385 						    (__v8hi)
4386 						    _mm_setzero_si128 (),
4387 						    __M);
4388 }
4389 
4390 extern __inline __m128i
4391 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4392 _mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
4393 		      __m128i __B)
4394 {
4395   return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
4396 						    (__v4si) __B,
4397 						    (__v8hi) __W, __M);
4398 }
4399 
4400 extern __inline __mmask16
4401 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4402 _mm_mask_cmpneq_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4403 {
4404   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
4405 						   (__v16qi) __Y, 4,
4406 						   (__mmask16) __M);
4407 }
4408 
4409 extern __inline __mmask16
4410 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4411 _mm_mask_cmplt_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4412 {
4413   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
4414 						   (__v16qi) __Y, 1,
4415 						   (__mmask16) __M);
4416 }
4417 
4418 extern __inline __mmask16
4419 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4420 _mm_mask_cmpge_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4421 {
4422   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
4423 						   (__v16qi) __Y, 5,
4424 						   (__mmask16) __M);
4425 }
4426 
4427 extern __inline __mmask16
4428 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4429 _mm_mask_cmple_epu8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4430 {
4431   return (__mmask16) __builtin_ia32_ucmpb128_mask ((__v16qi) __X,
4432 						   (__v16qi) __Y, 2,
4433 						   (__mmask16) __M);
4434 }
4435 
4436 extern __inline __mmask8
4437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4438 _mm_mask_cmpneq_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4439 {
4440   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
4441 						  (__v8hi) __Y, 4,
4442 						  (__mmask8) __M);
4443 }
4444 
4445 extern __inline __mmask8
4446 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4447 _mm_mask_cmplt_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4448 {
4449   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
4450 						  (__v8hi) __Y, 1,
4451 						  (__mmask8) __M);
4452 }
4453 
4454 extern __inline __mmask8
4455 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4456 _mm_mask_cmpge_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4457 {
4458   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
4459 						  (__v8hi) __Y, 5,
4460 						  (__mmask8) __M);
4461 }
4462 
4463 extern __inline __mmask8
4464 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4465 _mm_mask_cmple_epu16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4466 {
4467   return (__mmask8) __builtin_ia32_ucmpw128_mask ((__v8hi) __X,
4468 						  (__v8hi) __Y, 2,
4469 						  (__mmask8) __M);
4470 }
4471 
4472 extern __inline __mmask16
4473 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4474 _mm_mask_cmpneq_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4475 {
4476   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
4477 						  (__v16qi) __Y, 4,
4478 						  (__mmask16) __M);
4479 }
4480 
4481 extern __inline __mmask16
4482 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4483 _mm_mask_cmplt_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4484 {
4485   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
4486 						  (__v16qi) __Y, 1,
4487 						  (__mmask16) __M);
4488 }
4489 
4490 extern __inline __mmask16
4491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4492 _mm_mask_cmpge_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4493 {
4494   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
4495 						  (__v16qi) __Y, 5,
4496 						  (__mmask16) __M);
4497 }
4498 
4499 extern __inline __mmask16
4500 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4501 _mm_mask_cmple_epi8_mask (__mmask16 __M, __m128i __X, __m128i __Y)
4502 {
4503   return (__mmask16) __builtin_ia32_cmpb128_mask ((__v16qi) __X,
4504 						  (__v16qi) __Y, 2,
4505 						  (__mmask16) __M);
4506 }
4507 
4508 extern __inline __mmask8
4509 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4510 _mm_mask_cmpneq_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4511 {
4512   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
4513 						 (__v8hi) __Y, 4,
4514 						 (__mmask8) __M);
4515 }
4516 
4517 extern __inline __mmask8
4518 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4519 _mm_mask_cmplt_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4520 {
4521   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
4522 						 (__v8hi) __Y, 1,
4523 						 (__mmask8) __M);
4524 }
4525 
4526 extern __inline __mmask8
4527 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4528 _mm_mask_cmpge_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4529 {
4530   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
4531 						 (__v8hi) __Y, 5,
4532 						 (__mmask8) __M);
4533 }
4534 
4535 extern __inline __mmask8
4536 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4537 _mm_mask_cmple_epi16_mask (__mmask8 __M, __m128i __X, __m128i __Y)
4538 {
4539   return (__mmask8) __builtin_ia32_cmpw128_mask ((__v8hi) __X,
4540 						 (__v8hi) __Y, 2,
4541 						 (__mmask8) __M);
4542 }
4543 
4544 extern __inline __mmask32
4545 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4546 _mm256_mask_cmpneq_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4547 {
4548   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
4549 						   (__v32qi) __Y, 4,
4550 						   (__mmask32) __M);
4551 }
4552 
4553 extern __inline __mmask32
4554 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4555 _mm256_mask_cmplt_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4556 {
4557   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
4558 						   (__v32qi) __Y, 1,
4559 						   (__mmask32) __M);
4560 }
4561 
4562 extern __inline __mmask32
4563 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4564 _mm256_mask_cmpge_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4565 {
4566   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
4567 						   (__v32qi) __Y, 5,
4568 						   (__mmask32) __M);
4569 }
4570 
4571 extern __inline __mmask32
4572 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4573 _mm256_mask_cmple_epu8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4574 {
4575   return (__mmask32) __builtin_ia32_ucmpb256_mask ((__v32qi) __X,
4576 						   (__v32qi) __Y, 2,
4577 						   (__mmask32) __M);
4578 }
4579 
4580 extern __inline __mmask16
4581 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4582 _mm256_mask_cmpneq_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4583 {
4584   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
4585 						   (__v16hi) __Y, 4,
4586 						   (__mmask16) __M);
4587 }
4588 
4589 extern __inline __mmask16
4590 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4591 _mm256_mask_cmplt_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4592 {
4593   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
4594 						   (__v16hi) __Y, 1,
4595 						   (__mmask16) __M);
4596 }
4597 
4598 extern __inline __mmask16
4599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4600 _mm256_mask_cmpge_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4601 {
4602   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
4603 						   (__v16hi) __Y, 5,
4604 						   (__mmask16) __M);
4605 }
4606 
4607 extern __inline __mmask16
4608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4609 _mm256_mask_cmple_epu16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4610 {
4611   return (__mmask16) __builtin_ia32_ucmpw256_mask ((__v16hi) __X,
4612 						   (__v16hi) __Y, 2,
4613 						   (__mmask16) __M);
4614 }
4615 
4616 extern __inline __mmask32
4617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4618 _mm256_mask_cmpneq_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4619 {
4620   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
4621 						  (__v32qi) __Y, 4,
4622 						  (__mmask32) __M);
4623 }
4624 
4625 extern __inline __mmask32
4626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4627 _mm256_mask_cmplt_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4628 {
4629   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
4630 						  (__v32qi) __Y, 1,
4631 						  (__mmask32) __M);
4632 }
4633 
4634 extern __inline __mmask32
4635 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4636 _mm256_mask_cmpge_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4637 {
4638   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
4639 						  (__v32qi) __Y, 5,
4640 						  (__mmask32) __M);
4641 }
4642 
4643 extern __inline __mmask32
4644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4645 _mm256_mask_cmple_epi8_mask (__mmask32 __M, __m256i __X, __m256i __Y)
4646 {
4647   return (__mmask32) __builtin_ia32_cmpb256_mask ((__v32qi) __X,
4648 						  (__v32qi) __Y, 2,
4649 						  (__mmask32) __M);
4650 }
4651 
4652 extern __inline __mmask16
4653 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4654 _mm256_mask_cmpneq_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4655 {
4656   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
4657 						  (__v16hi) __Y, 4,
4658 						  (__mmask16) __M);
4659 }
4660 
4661 extern __inline __mmask16
4662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4663 _mm256_mask_cmplt_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4664 {
4665   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
4666 						  (__v16hi) __Y, 1,
4667 						  (__mmask16) __M);
4668 }
4669 
4670 extern __inline __mmask16
4671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4672 _mm256_mask_cmpge_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4673 {
4674   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
4675 						  (__v16hi) __Y, 5,
4676 						  (__mmask16) __M);
4677 }
4678 
4679 extern __inline __mmask16
4680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
4681 _mm256_mask_cmple_epi16_mask (__mmask16 __M, __m256i __X, __m256i __Y)
4682 {
4683   return (__mmask16) __builtin_ia32_cmpw256_mask ((__v16hi) __X,
4684 						  (__v16hi) __Y, 2,
4685 						  (__mmask16) __M);
4686 }
4687 
4688 #ifdef __DISABLE_AVX512VLBW__
4689 #undef __DISABLE_AVX512VLBW__
4690 #pragma GCC pop_options
4691 #endif /* __DISABLE_AVX512VLBW__ */
4692 
4693 #endif /* _AVX512VLBWINTRIN_H_INCLUDED */
4694