xref: /netbsd-src/external/gpl3/gcc.old/dist/gcc/config/i386/avx512bwintrin.h (revision cef8759bd76c1b621f8eab8faa6f208faabc2e15)
1 /* Copyright (C) 2014-2017 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 <avx512bwintrin.h> directly; include <immintrin.h> instead."
26 #endif
27 
28 #ifndef _AVX512BWINTRIN_H_INCLUDED
29 #define _AVX512BWINTRIN_H_INCLUDED
30 
31 #ifndef __AVX512BW__
32 #pragma GCC push_options
33 #pragma GCC target("avx512bw")
34 #define __DISABLE_AVX512BW__
35 #endif /* __AVX512BW__ */
36 
37 /* Internal data types for implementing the intrinsics.  */
38 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
39 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
40 
41 typedef unsigned long long __mmask64;
42 
43 extern __inline unsigned char
44 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
45 _ktest_mask32_u8  (__mmask32 __A,  __mmask32 __B, unsigned char *__CF)
46 {
47   *__CF = (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
48   return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
49 }
50 
51 extern __inline unsigned char
52 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
53 _ktest_mask64_u8  (__mmask64 __A,  __mmask64 __B, unsigned char *__CF)
54 {
55   *__CF = (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
56   return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
57 }
58 
59 extern __inline unsigned char
60 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
61 _ktestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
62 {
63   return (unsigned char) __builtin_ia32_ktestzsi (__A, __B);
64 }
65 
66 extern __inline unsigned char
67 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
68 _ktestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
69 {
70   return (unsigned char) __builtin_ia32_ktestzdi (__A, __B);
71 }
72 
73 extern __inline unsigned char
74 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
75 _ktestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
76 {
77   return (unsigned char) __builtin_ia32_ktestcsi (__A, __B);
78 }
79 
80 extern __inline unsigned char
81 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
82 _ktestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
83 {
84   return (unsigned char) __builtin_ia32_ktestcdi (__A, __B);
85 }
86 
87 extern __inline unsigned char
88 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
89 _kortest_mask32_u8  (__mmask32 __A,  __mmask32 __B, unsigned char *__CF)
90 {
91   *__CF = (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
92   return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
93 }
94 
95 extern __inline unsigned char
96 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
97 _kortest_mask64_u8  (__mmask64 __A,  __mmask64 __B, unsigned char *__CF)
98 {
99   *__CF = (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
100   return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
101 }
102 
103 extern __inline unsigned char
104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
105 _kortestz_mask32_u8 (__mmask32 __A, __mmask32 __B)
106 {
107   return (unsigned char) __builtin_ia32_kortestzsi (__A, __B);
108 }
109 
110 extern __inline unsigned char
111 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
112 _kortestz_mask64_u8 (__mmask64 __A, __mmask64 __B)
113 {
114   return (unsigned char) __builtin_ia32_kortestzdi (__A, __B);
115 }
116 
117 extern __inline unsigned char
118 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
119 _kortestc_mask32_u8 (__mmask32 __A, __mmask32 __B)
120 {
121   return (unsigned char) __builtin_ia32_kortestcsi (__A, __B);
122 }
123 
124 extern __inline unsigned char
125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
126 _kortestc_mask64_u8 (__mmask64 __A, __mmask64 __B)
127 {
128   return (unsigned char) __builtin_ia32_kortestcdi (__A, __B);
129 }
130 
131 extern __inline __mmask32
132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
133 _kadd_mask32 (__mmask32 __A, __mmask32 __B)
134 {
135   return (__mmask32) __builtin_ia32_kaddsi ((__mmask32) __A, (__mmask32) __B);
136 }
137 
138 extern __inline __mmask64
139 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
140 _kadd_mask64 (__mmask64 __A, __mmask64 __B)
141 {
142   return (__mmask64) __builtin_ia32_kadddi ((__mmask64) __A, (__mmask64) __B);
143 }
144 
145 extern __inline unsigned int
146 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
147 _cvtmask32_u32 (__mmask32 __A)
148 {
149   return (unsigned int) __builtin_ia32_kmovd ((__mmask32) __A);
150 }
151 
152 extern __inline unsigned long long
153 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
154 _cvtmask64_u64 (__mmask64 __A)
155 {
156   return (unsigned long long) __builtin_ia32_kmovq ((__mmask64) __A);
157 }
158 
159 extern __inline __mmask32
160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
161 _cvtu32_mask32 (unsigned int __A)
162 {
163   return (__mmask32) __builtin_ia32_kmovd ((__mmask32) __A);
164 }
165 
166 extern __inline __mmask64
167 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
168 _cvtu64_mask64 (unsigned long long __A)
169 {
170   return (__mmask64) __builtin_ia32_kmovq ((__mmask64) __A);
171 }
172 
173 extern __inline __mmask32
174 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
175 _load_mask32 (__mmask32 *__A)
176 {
177   return (__mmask32) __builtin_ia32_kmovd (*__A);
178 }
179 
180 extern __inline __mmask64
181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
182 _load_mask64 (__mmask64 *__A)
183 {
184   return (__mmask64) __builtin_ia32_kmovq (*(__mmask64 *) __A);
185 }
186 
187 extern __inline void
188 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
189 _store_mask32 (__mmask32 *__A, __mmask32 __B)
190 {
191   *(__mmask32 *) __A = __builtin_ia32_kmovd (__B);
192 }
193 
194 extern __inline void
195 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
196 _store_mask64 (__mmask64 *__A, __mmask64 __B)
197 {
198   *(__mmask64 *) __A = __builtin_ia32_kmovq (__B);
199 }
200 
201 extern __inline __mmask32
202 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
203 _knot_mask32 (__mmask32 __A)
204 {
205   return (__mmask32) __builtin_ia32_knotsi ((__mmask32) __A);
206 }
207 
208 extern __inline __mmask64
209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
210 _knot_mask64 (__mmask64 __A)
211 {
212   return (__mmask64) __builtin_ia32_knotdi ((__mmask64) __A);
213 }
214 
215 extern __inline __mmask32
216 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
217 _kor_mask32 (__mmask32 __A, __mmask32 __B)
218 {
219   return (__mmask32) __builtin_ia32_korsi ((__mmask32) __A, (__mmask32) __B);
220 }
221 
222 extern __inline __mmask64
223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
224 _kor_mask64 (__mmask64 __A, __mmask64 __B)
225 {
226   return (__mmask64) __builtin_ia32_kordi ((__mmask64) __A, (__mmask64) __B);
227 }
228 
229 extern __inline __mmask32
230 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
231 _kxnor_mask32 (__mmask32 __A, __mmask32 __B)
232 {
233   return (__mmask32) __builtin_ia32_kxnorsi ((__mmask32) __A, (__mmask32) __B);
234 }
235 
236 extern __inline __mmask64
237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
238 _kxnor_mask64 (__mmask64 __A, __mmask64 __B)
239 {
240   return (__mmask64) __builtin_ia32_kxnordi ((__mmask64) __A, (__mmask64) __B);
241 }
242 
243 extern __inline __mmask32
244 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
245 _kxor_mask32 (__mmask32 __A, __mmask32 __B)
246 {
247   return (__mmask32) __builtin_ia32_kxorsi ((__mmask32) __A, (__mmask32) __B);
248 }
249 
250 extern __inline __mmask64
251 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
252 _kxor_mask64 (__mmask64 __A, __mmask64 __B)
253 {
254   return (__mmask64) __builtin_ia32_kxordi ((__mmask64) __A, (__mmask64) __B);
255 }
256 
257 extern __inline __mmask32
258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
259 _kand_mask32 (__mmask32 __A, __mmask32 __B)
260 {
261   return (__mmask32) __builtin_ia32_kandsi ((__mmask32) __A, (__mmask32) __B);
262 }
263 
264 extern __inline __mmask64
265 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
266 _kand_mask64 (__mmask64 __A, __mmask64 __B)
267 {
268   return (__mmask64) __builtin_ia32_kanddi ((__mmask64) __A, (__mmask64) __B);
269 }
270 
271 extern __inline __mmask32
272 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
273 _kandn_mask32 (__mmask32 __A, __mmask32 __B)
274 {
275   return (__mmask32) __builtin_ia32_kandnsi ((__mmask32) __A, (__mmask32) __B);
276 }
277 
278 extern __inline __mmask64
279 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
280 _kandn_mask64 (__mmask64 __A, __mmask64 __B)
281 {
282   return (__mmask64) __builtin_ia32_kandndi ((__mmask64) __A, (__mmask64) __B);
283 }
284 
285 extern __inline __m512i
286 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
287 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
288 {
289   return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
290 						    (__v32hi) __W,
291 						    (__mmask32) __U);
292 }
293 
294 extern __inline __m512i
295 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
296 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
297 {
298   return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
299 						    (__v32hi)
300 						    _mm512_setzero_si512 (),
301 						    (__mmask32) __U);
302 }
303 
304 extern __inline __m512i
305 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
306 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
307 {
308   return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
309 						     (__v32hi) __W,
310 						     (__mmask32) __U);
311 }
312 
313 extern __inline __m512i
314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
315 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
316 {
317   return (__m512i) __builtin_ia32_loaddquhi512_mask ((const short *) __P,
318 						     (__v32hi)
319 						     _mm512_setzero_si512 (),
320 						     (__mmask32) __U);
321 }
322 
323 extern __inline void
324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
325 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
326 {
327   __builtin_ia32_storedquhi512_mask ((short *) __P,
328 				     (__v32hi) __A,
329 				     (__mmask32) __U);
330 }
331 
332 extern __inline __m512i
333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
334 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
335 {
336   return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
337 						    (__v64qi) __W,
338 						    (__mmask64) __U);
339 }
340 
341 extern __inline __m512i
342 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
343 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
344 {
345   return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
346 						    (__v64qi)
347 						    _mm512_setzero_si512 (),
348 						    (__mmask64) __U);
349 }
350 
351 extern __inline __mmask32
352 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
353 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
354 {
355   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
356 					      (__mmask32) __B);
357 }
358 
359 extern __inline __mmask32
360 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
361 _kunpackw_mask32 (__mmask16 __A, __mmask16 __B)
362 {
363   return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
364 					      (__mmask32) __B);
365 }
366 
367 extern __inline __mmask64
368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
369 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
370 {
371   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
372 					      (__mmask64) __B);
373 }
374 
375 extern __inline __mmask64
376 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
377 _kunpackd_mask64 (__mmask32 __A, __mmask32 __B)
378 {
379   return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
380 					      (__mmask64) __B);
381 }
382 
383 extern __inline __m512i
384 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
385 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
386 {
387   return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
388 						     (__v64qi) __W,
389 						     (__mmask64) __U);
390 }
391 
392 extern __inline __m512i
393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
394 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
395 {
396   return (__m512i) __builtin_ia32_loaddquqi512_mask ((const char *) __P,
397 						     (__v64qi)
398 						     _mm512_setzero_si512 (),
399 						     (__mmask64) __U);
400 }
401 
402 extern __inline void
403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
404 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
405 {
406   __builtin_ia32_storedquqi512_mask ((char *) __P,
407 				     (__v64qi) __A,
408 				     (__mmask64) __U);
409 }
410 
411 extern __inline __m512i
412 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
413 _mm512_sad_epu8 (__m512i __A, __m512i __B)
414 {
415   return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
416 					     (__v64qi) __B);
417 }
418 
419 extern __inline __m256i
420 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
421 _mm512_cvtepi16_epi8 (__m512i __A)
422 {
423   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
424 						  (__v32qi) _mm256_undefined_si256(),
425 						  (__mmask32) -1);
426 }
427 
428 extern __inline __m256i
429 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
431 {
432   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
433 						  (__v32qi) __O, __M);
434 }
435 
436 extern __inline __m256i
437 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
438 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
439 {
440   return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
441 						  (__v32qi)
442 						  _mm256_setzero_si256 (),
443 						  __M);
444 }
445 
446 extern __inline __m256i
447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
448 _mm512_cvtsepi16_epi8 (__m512i __A)
449 {
450   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
451 						   (__v32qi)_mm256_undefined_si256(),
452 						   (__mmask32) -1);
453 }
454 
455 extern __inline __m256i
456 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
457 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
458 {
459   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
460 						   (__v32qi)__O,
461 						   __M);
462 }
463 
464 extern __inline __m256i
465 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
466 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
467 {
468   return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
469 						   (__v32qi)
470 						   _mm256_setzero_si256 (),
471 						   __M);
472 }
473 
474 extern __inline __m256i
475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
476 _mm512_cvtusepi16_epi8 (__m512i __A)
477 {
478   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
479 						    (__v32qi)_mm256_undefined_si256(),
480 						    (__mmask32) -1);
481 }
482 
483 extern __inline __m256i
484 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
485 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
486 {
487   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
488 						    (__v32qi) __O,
489 						    __M);
490 }
491 
492 extern __inline __m256i
493 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
494 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
495 {
496   return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
497 						    (__v32qi)
498 						    _mm256_setzero_si256 (),
499 						    __M);
500 }
501 
502 extern __inline __m512i
503 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
504 _mm512_broadcastb_epi8 (__m128i __A)
505 {
506   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
507 						       (__v64qi)_mm512_undefined_epi32(),
508 						       (__mmask64) -1);
509 }
510 
511 extern __inline __m512i
512 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
513 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
514 {
515   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
516 						       (__v64qi) __O,
517 						       __M);
518 }
519 
520 extern __inline __m512i
521 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
522 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
523 {
524   return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
525 						       (__v64qi)
526 						       _mm512_setzero_si512 (),
527 						       __M);
528 }
529 
530 extern __inline __m512i
531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
532 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
533 {
534   return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
535 							   (__v64qi) __O,
536 							   __M);
537 }
538 
539 extern __inline __m512i
540 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
541 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
542 {
543   return (__m512i)
544 	 __builtin_ia32_pbroadcastb512_gpr_mask (__A,
545 						 (__v64qi)
546 						 _mm512_setzero_si512 (),
547 						 __M);
548 }
549 
550 extern __inline __m512i
551 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
552 _mm512_broadcastw_epi16 (__m128i __A)
553 {
554   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
555 						       (__v32hi)_mm512_undefined_epi32(),
556 						       (__mmask32) -1);
557 }
558 
559 extern __inline __m512i
560 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
561 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
562 {
563   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
564 						       (__v32hi) __O,
565 						       __M);
566 }
567 
568 extern __inline __m512i
569 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
570 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
571 {
572   return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
573 						       (__v32hi)
574 						       _mm512_setzero_si512 (),
575 						       __M);
576 }
577 
578 extern __inline __m512i
579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
580 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
581 {
582   return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
583 							   (__v32hi) __O,
584 							   __M);
585 }
586 
587 extern __inline __m512i
588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
589 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
590 {
591   return (__m512i)
592 	 __builtin_ia32_pbroadcastw512_gpr_mask (__A,
593 						 (__v32hi)
594 						 _mm512_setzero_si512 (),
595 						 __M);
596 }
597 
598 extern __inline __m512i
599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
600 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
601 {
602   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
603 						    (__v32hi) __B,
604 						    (__v32hi)
605 						    _mm512_setzero_si512 (),
606 						    (__mmask32) -1);
607 }
608 
609 extern __inline __m512i
610 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
611 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
612 			  __m512i __B)
613 {
614   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
615 						    (__v32hi) __B,
616 						    (__v32hi) __W,
617 						    (__mmask32) __U);
618 }
619 
620 extern __inline __m512i
621 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
622 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
623 {
624   return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
625 						    (__v32hi) __B,
626 						    (__v32hi)
627 						    _mm512_setzero_si512 (),
628 						    (__mmask32) __U);
629 }
630 
631 extern __inline __m512i
632 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
633 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
634 {
635   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
636 						  (__v32hi) __B,
637 						  (__v32hi)
638 						  _mm512_setzero_si512 (),
639 						  (__mmask32) -1);
640 }
641 
642 extern __inline __m512i
643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
644 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
645 			 __m512i __B)
646 {
647   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
648 						  (__v32hi) __B,
649 						  (__v32hi) __W,
650 						  (__mmask32) __U);
651 }
652 
653 extern __inline __m512i
654 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
655 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
656 {
657   return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
658 						  (__v32hi) __B,
659 						  (__v32hi)
660 						  _mm512_setzero_si512 (),
661 						  (__mmask32) __U);
662 }
663 
664 extern __inline __m512i
665 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
666 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
667 {
668   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
669 						   (__v32hi) __B,
670 						   (__v32hi)
671 						   _mm512_setzero_si512 (),
672 						   (__mmask32) -1);
673 }
674 
675 extern __inline __m512i
676 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
677 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
678 			 __m512i __B)
679 {
680   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
681 						   (__v32hi) __B,
682 						   (__v32hi) __W,
683 						   (__mmask32) __U);
684 }
685 
686 extern __inline __m512i
687 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
688 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
689 {
690   return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
691 						   (__v32hi) __B,
692 						   (__v32hi)
693 						   _mm512_setzero_si512 (),
694 						   (__mmask32) __U);
695 }
696 
697 extern __inline __m512i
698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
699 _mm512_mullo_epi16 (__m512i __A, __m512i __B)
700 {
701   return (__m512i) ((__v32hu) __A * (__v32hu) __B);
702 }
703 
704 extern __inline __m512i
705 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
706 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
707 			 __m512i __B)
708 {
709   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
710 						  (__v32hi) __B,
711 						  (__v32hi) __W,
712 						  (__mmask32) __U);
713 }
714 
715 extern __inline __m512i
716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
717 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
718 {
719   return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
720 						  (__v32hi) __B,
721 						  (__v32hi)
722 						  _mm512_setzero_si512 (),
723 						  (__mmask32) __U);
724 }
725 
726 extern __inline __m512i
727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
728 _mm512_cvtepi8_epi16 (__m256i __A)
729 {
730   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
731 						    (__v32hi)
732 						    _mm512_setzero_si512 (),
733 						    (__mmask32) -1);
734 }
735 
736 extern __inline __m512i
737 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
738 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
739 {
740   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
741 						    (__v32hi) __W,
742 						    (__mmask32) __U);
743 }
744 
745 extern __inline __m512i
746 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
747 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
748 {
749   return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
750 						    (__v32hi)
751 						    _mm512_setzero_si512 (),
752 						    (__mmask32) __U);
753 }
754 
755 extern __inline __m512i
756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
757 _mm512_cvtepu8_epi16 (__m256i __A)
758 {
759   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
760 						    (__v32hi)
761 						    _mm512_setzero_si512 (),
762 						    (__mmask32) -1);
763 }
764 
765 extern __inline __m512i
766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
767 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
768 {
769   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
770 						    (__v32hi) __W,
771 						    (__mmask32) __U);
772 }
773 
774 extern __inline __m512i
775 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
776 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
777 {
778   return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
779 						    (__v32hi)
780 						    _mm512_setzero_si512 (),
781 						    (__mmask32) __U);
782 }
783 
784 extern __inline __m512i
785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
787 {
788   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
789 						     (__v32hi) __A,
790 						     (__v32hi)
791 						     _mm512_setzero_si512 (),
792 						     (__mmask32) -1);
793 }
794 
795 extern __inline __m512i
796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
797 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
798 				__m512i __B)
799 {
800   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
801 						     (__v32hi) __A,
802 						     (__v32hi)
803 						     _mm512_setzero_si512 (),
804 						     (__mmask32) __M);
805 }
806 
807 extern __inline __m512i
808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
809 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
810 			       __m512i __B)
811 {
812   return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __B,
813 						     (__v32hi) __A,
814 						     (__v32hi) __W,
815 						     (__mmask32) __M);
816 }
817 
818 extern __inline __m512i
819 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
820 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
821 {
822   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
823 							/* idx */ ,
824 							(__v32hi) __A,
825 							(__v32hi) __B,
826 							(__mmask32) -1);
827 }
828 
829 extern __inline __m512i
830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
831 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
832 				__m512i __I, __m512i __B)
833 {
834   return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
835 							/* idx */ ,
836 							(__v32hi) __A,
837 							(__v32hi) __B,
838 							(__mmask32)
839 							__U);
840 }
841 
842 extern __inline __m512i
843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
844 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
845 				 __mmask32 __U, __m512i __B)
846 {
847   return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
848 							(__v32hi) __I
849 							/* idx */ ,
850 							(__v32hi) __B,
851 							(__mmask32)
852 							__U);
853 }
854 
855 extern __inline __m512i
856 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
857 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
858 				 __m512i __I, __m512i __B)
859 {
860   return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
861 							 /* idx */ ,
862 							 (__v32hi) __A,
863 							 (__v32hi) __B,
864 							 (__mmask32)
865 							 __U);
866 }
867 
868 extern __inline __m512i
869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
870 _mm512_avg_epu8 (__m512i __A, __m512i __B)
871 {
872   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
873 						 (__v64qi) __B,
874 						 (__v64qi)
875 						 _mm512_setzero_si512 (),
876 						 (__mmask64) -1);
877 }
878 
879 extern __inline __m512i
880 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
881 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
882 		      __m512i __B)
883 {
884   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
885 						 (__v64qi) __B,
886 						 (__v64qi) __W,
887 						 (__mmask64) __U);
888 }
889 
890 extern __inline __m512i
891 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
892 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
893 {
894   return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
895 						 (__v64qi) __B,
896 						 (__v64qi)
897 						 _mm512_setzero_si512 (),
898 						 (__mmask64) __U);
899 }
900 
901 extern __inline __m512i
902 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
903 _mm512_add_epi8 (__m512i __A, __m512i __B)
904 {
905   return (__m512i) ((__v64qu) __A + (__v64qu) __B);
906 }
907 
908 extern __inline __m512i
909 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
910 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
911 		      __m512i __B)
912 {
913   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
914 						 (__v64qi) __B,
915 						 (__v64qi) __W,
916 						 (__mmask64) __U);
917 }
918 
919 extern __inline __m512i
920 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
921 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
922 {
923   return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
924 						 (__v64qi) __B,
925 						 (__v64qi)
926 						 _mm512_setzero_si512 (),
927 						 (__mmask64) __U);
928 }
929 
930 extern __inline __m512i
931 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
932 _mm512_sub_epi8 (__m512i __A, __m512i __B)
933 {
934   return (__m512i) ((__v64qu) __A - (__v64qu) __B);
935 }
936 
937 extern __inline __m512i
938 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
939 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
940 		      __m512i __B)
941 {
942   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
943 						 (__v64qi) __B,
944 						 (__v64qi) __W,
945 						 (__mmask64) __U);
946 }
947 
948 extern __inline __m512i
949 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
950 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
951 {
952   return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
953 						 (__v64qi) __B,
954 						 (__v64qi)
955 						 _mm512_setzero_si512 (),
956 						 (__mmask64) __U);
957 }
958 
959 extern __inline __m512i
960 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
961 _mm512_avg_epu16 (__m512i __A, __m512i __B)
962 {
963   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
964 						 (__v32hi) __B,
965 						 (__v32hi)
966 						 _mm512_setzero_si512 (),
967 						 (__mmask32) -1);
968 }
969 
970 extern __inline __m512i
971 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
972 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
973 		       __m512i __B)
974 {
975   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
976 						 (__v32hi) __B,
977 						 (__v32hi) __W,
978 						 (__mmask32) __U);
979 }
980 
981 extern __inline __m512i
982 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
983 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
984 {
985   return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
986 						 (__v32hi) __B,
987 						 (__v32hi)
988 						 _mm512_setzero_si512 (),
989 						 (__mmask32) __U);
990 }
991 
992 extern __inline __m512i
993 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
994 _mm512_subs_epi8 (__m512i __A, __m512i __B)
995 {
996   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
997 						  (__v64qi) __B,
998 						  (__v64qi)
999 						  _mm512_setzero_si512 (),
1000 						  (__mmask64) -1);
1001 }
1002 
1003 extern __inline __m512i
1004 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1005 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1006 		       __m512i __B)
1007 {
1008   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1009 						  (__v64qi) __B,
1010 						  (__v64qi) __W,
1011 						  (__mmask64) __U);
1012 }
1013 
1014 extern __inline __m512i
1015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1016 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1017 {
1018   return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1019 						  (__v64qi) __B,
1020 						  (__v64qi)
1021 						  _mm512_setzero_si512 (),
1022 						  (__mmask64) __U);
1023 }
1024 
1025 extern __inline __m512i
1026 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1027 _mm512_subs_epu8 (__m512i __A, __m512i __B)
1028 {
1029   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1030 						   (__v64qi) __B,
1031 						   (__v64qi)
1032 						   _mm512_setzero_si512 (),
1033 						   (__mmask64) -1);
1034 }
1035 
1036 extern __inline __m512i
1037 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1038 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1039 		       __m512i __B)
1040 {
1041   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1042 						   (__v64qi) __B,
1043 						   (__v64qi) __W,
1044 						   (__mmask64) __U);
1045 }
1046 
1047 extern __inline __m512i
1048 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1049 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1050 {
1051   return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1052 						   (__v64qi) __B,
1053 						   (__v64qi)
1054 						   _mm512_setzero_si512 (),
1055 						   (__mmask64) __U);
1056 }
1057 
1058 extern __inline __m512i
1059 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1060 _mm512_adds_epi8 (__m512i __A, __m512i __B)
1061 {
1062   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1063 						  (__v64qi) __B,
1064 						  (__v64qi)
1065 						  _mm512_setzero_si512 (),
1066 						  (__mmask64) -1);
1067 }
1068 
1069 extern __inline __m512i
1070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1071 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1072 		       __m512i __B)
1073 {
1074   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1075 						  (__v64qi) __B,
1076 						  (__v64qi) __W,
1077 						  (__mmask64) __U);
1078 }
1079 
1080 extern __inline __m512i
1081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1082 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1083 {
1084   return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
1085 						  (__v64qi) __B,
1086 						  (__v64qi)
1087 						  _mm512_setzero_si512 (),
1088 						  (__mmask64) __U);
1089 }
1090 
1091 extern __inline __m512i
1092 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1093 _mm512_adds_epu8 (__m512i __A, __m512i __B)
1094 {
1095   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1096 						   (__v64qi) __B,
1097 						   (__v64qi)
1098 						   _mm512_setzero_si512 (),
1099 						   (__mmask64) -1);
1100 }
1101 
1102 extern __inline __m512i
1103 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1104 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1105 		       __m512i __B)
1106 {
1107   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1108 						   (__v64qi) __B,
1109 						   (__v64qi) __W,
1110 						   (__mmask64) __U);
1111 }
1112 
1113 extern __inline __m512i
1114 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1115 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1116 {
1117   return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
1118 						   (__v64qi) __B,
1119 						   (__v64qi)
1120 						   _mm512_setzero_si512 (),
1121 						   (__mmask64) __U);
1122 }
1123 
1124 extern __inline __m512i
1125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1126 _mm512_sub_epi16 (__m512i __A, __m512i __B)
1127 {
1128   return (__m512i) ((__v32hu) __A - (__v32hu) __B);
1129 }
1130 
1131 extern __inline __m512i
1132 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1133 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1134 		       __m512i __B)
1135 {
1136   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1137 						 (__v32hi) __B,
1138 						 (__v32hi) __W,
1139 						 (__mmask32) __U);
1140 }
1141 
1142 extern __inline __m512i
1143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1144 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1145 {
1146   return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
1147 						 (__v32hi) __B,
1148 						 (__v32hi)
1149 						 _mm512_setzero_si512 (),
1150 						 (__mmask32) __U);
1151 }
1152 
1153 extern __inline __m512i
1154 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1155 _mm512_subs_epi16 (__m512i __A, __m512i __B)
1156 {
1157   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1158 						  (__v32hi) __B,
1159 						  (__v32hi)
1160 						  _mm512_setzero_si512 (),
1161 						  (__mmask32) -1);
1162 }
1163 
1164 extern __inline __m512i
1165 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1166 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1167 			__m512i __B)
1168 {
1169   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1170 						  (__v32hi) __B,
1171 						  (__v32hi) __W,
1172 						  (__mmask32) __U);
1173 }
1174 
1175 extern __inline __m512i
1176 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1177 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1178 {
1179   return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1180 						  (__v32hi) __B,
1181 						  (__v32hi)
1182 						  _mm512_setzero_si512 (),
1183 						  (__mmask32) __U);
1184 }
1185 
1186 extern __inline __m512i
1187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1188 _mm512_subs_epu16 (__m512i __A, __m512i __B)
1189 {
1190   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1191 						   (__v32hi) __B,
1192 						   (__v32hi)
1193 						   _mm512_setzero_si512 (),
1194 						   (__mmask32) -1);
1195 }
1196 
1197 extern __inline __m512i
1198 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1199 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1200 			__m512i __B)
1201 {
1202   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1203 						   (__v32hi) __B,
1204 						   (__v32hi) __W,
1205 						   (__mmask32) __U);
1206 }
1207 
1208 extern __inline __m512i
1209 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1210 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1211 {
1212   return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1213 						   (__v32hi) __B,
1214 						   (__v32hi)
1215 						   _mm512_setzero_si512 (),
1216 						   (__mmask32) __U);
1217 }
1218 
1219 extern __inline __m512i
1220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1221 _mm512_add_epi16 (__m512i __A, __m512i __B)
1222 {
1223   return (__m512i) ((__v32hu) __A + (__v32hu) __B);
1224 }
1225 
1226 extern __inline __m512i
1227 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1228 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1229 		       __m512i __B)
1230 {
1231   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1232 						 (__v32hi) __B,
1233 						 (__v32hi) __W,
1234 						 (__mmask32) __U);
1235 }
1236 
1237 extern __inline __m512i
1238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1239 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1240 {
1241   return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1242 						 (__v32hi) __B,
1243 						 (__v32hi)
1244 						 _mm512_setzero_si512 (),
1245 						 (__mmask32) __U);
1246 }
1247 
1248 extern __inline __m512i
1249 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1250 _mm512_adds_epi16 (__m512i __A, __m512i __B)
1251 {
1252   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1253 						  (__v32hi) __B,
1254 						  (__v32hi)
1255 						  _mm512_setzero_si512 (),
1256 						  (__mmask32) -1);
1257 }
1258 
1259 extern __inline __m512i
1260 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1261 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1262 			__m512i __B)
1263 {
1264   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1265 						  (__v32hi) __B,
1266 						  (__v32hi) __W,
1267 						  (__mmask32) __U);
1268 }
1269 
1270 extern __inline __m512i
1271 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1272 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1273 {
1274   return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1275 						  (__v32hi) __B,
1276 						  (__v32hi)
1277 						  _mm512_setzero_si512 (),
1278 						  (__mmask32) __U);
1279 }
1280 
1281 extern __inline __m512i
1282 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1283 _mm512_adds_epu16 (__m512i __A, __m512i __B)
1284 {
1285   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1286 						   (__v32hi) __B,
1287 						   (__v32hi)
1288 						   _mm512_setzero_si512 (),
1289 						   (__mmask32) -1);
1290 }
1291 
1292 extern __inline __m512i
1293 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1294 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1295 			__m512i __B)
1296 {
1297   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1298 						   (__v32hi) __B,
1299 						   (__v32hi) __W,
1300 						   (__mmask32) __U);
1301 }
1302 
1303 extern __inline __m512i
1304 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1305 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1306 {
1307   return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1308 						   (__v32hi) __B,
1309 						   (__v32hi)
1310 						   _mm512_setzero_si512 (),
1311 						   (__mmask32) __U);
1312 }
1313 
1314 extern __inline __m512i
1315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1316 _mm512_srl_epi16 (__m512i __A, __m128i __B)
1317 {
1318   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1319 						 (__v8hi) __B,
1320 						 (__v32hi)
1321 						 _mm512_setzero_si512 (),
1322 						 (__mmask32) -1);
1323 }
1324 
1325 extern __inline __m512i
1326 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1327 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1328 		       __m128i __B)
1329 {
1330   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1331 						 (__v8hi) __B,
1332 						 (__v32hi) __W,
1333 						 (__mmask32) __U);
1334 }
1335 
1336 extern __inline __m512i
1337 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1338 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1339 {
1340   return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1341 						 (__v8hi) __B,
1342 						 (__v32hi)
1343 						 _mm512_setzero_si512 (),
1344 						 (__mmask32) __U);
1345 }
1346 
1347 extern __inline __m512i
1348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1349 _mm512_packs_epi16 (__m512i __A, __m512i __B)
1350 {
1351   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1352 						    (__v32hi) __B,
1353 						    (__v64qi)
1354 						    _mm512_setzero_si512 (),
1355 						    (__mmask64) -1);
1356 }
1357 
1358 extern __inline __m512i
1359 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1360 _mm512_sll_epi16 (__m512i __A, __m128i __B)
1361 {
1362   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1363 						 (__v8hi) __B,
1364 						 (__v32hi)
1365 						 _mm512_setzero_si512 (),
1366 						 (__mmask32) -1);
1367 }
1368 
1369 extern __inline __m512i
1370 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1371 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1372 		       __m128i __B)
1373 {
1374   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1375 						 (__v8hi) __B,
1376 						 (__v32hi) __W,
1377 						 (__mmask32) __U);
1378 }
1379 
1380 extern __inline __m512i
1381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1382 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1383 {
1384   return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1385 						 (__v8hi) __B,
1386 						 (__v32hi)
1387 						 _mm512_setzero_si512 (),
1388 						 (__mmask32) __U);
1389 }
1390 
1391 extern __inline __m512i
1392 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1393 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1394 {
1395   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1396 						     (__v64qi) __Y,
1397 						     (__v32hi)
1398 						     _mm512_setzero_si512 (),
1399 						     (__mmask32) -1);
1400 }
1401 
1402 extern __inline __m512i
1403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1404 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1405 			   __m512i __Y)
1406 {
1407   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1408 						     (__v64qi) __Y,
1409 						     (__v32hi) __W,
1410 						     (__mmask32) __U);
1411 }
1412 
1413 extern __inline __m512i
1414 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1415 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1416 {
1417   return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1418 						     (__v64qi) __Y,
1419 						     (__v32hi)
1420 						     _mm512_setzero_si512 (),
1421 						     (__mmask32) __U);
1422 }
1423 
1424 extern __inline __m512i
1425 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1426 _mm512_madd_epi16 (__m512i __A, __m512i __B)
1427 {
1428   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1429 						   (__v32hi) __B,
1430 						   (__v16si)
1431 						   _mm512_setzero_si512 (),
1432 						   (__mmask16) -1);
1433 }
1434 
1435 extern __inline __m512i
1436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1437 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1438 			__m512i __B)
1439 {
1440   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1441 						   (__v32hi) __B,
1442 						   (__v16si) __W,
1443 						   (__mmask16) __U);
1444 }
1445 
1446 extern __inline __m512i
1447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1448 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1449 {
1450   return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1451 						   (__v32hi) __B,
1452 						   (__v16si)
1453 						   _mm512_setzero_si512 (),
1454 						   (__mmask16) __U);
1455 }
1456 
1457 extern __inline __m512i
1458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1459 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1460 {
1461   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1462 						     (__v64qi) __B,
1463 						     (__v64qi)
1464 						     _mm512_setzero_si512 (),
1465 						     (__mmask64) -1);
1466 }
1467 
1468 extern __inline __m512i
1469 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1470 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1471 			   __m512i __B)
1472 {
1473   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1474 						     (__v64qi) __B,
1475 						     (__v64qi) __W,
1476 						     (__mmask64) __U);
1477 }
1478 
1479 extern __inline __m512i
1480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1481 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1482 {
1483   return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1484 						     (__v64qi) __B,
1485 						     (__v64qi)
1486 						     _mm512_setzero_si512 (),
1487 						     (__mmask64) __U);
1488 }
1489 
1490 extern __inline __m512i
1491 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1492 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1493 {
1494   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1495 						     (__v32hi) __B,
1496 						     (__v32hi)
1497 						     _mm512_setzero_si512 (),
1498 						     (__mmask32) -1);
1499 }
1500 
1501 extern __inline __m512i
1502 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1503 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1504 			    __m512i __B)
1505 {
1506   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1507 						     (__v32hi) __B,
1508 						     (__v32hi) __W,
1509 						     (__mmask32) __U);
1510 }
1511 
1512 extern __inline __m512i
1513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1514 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1515 {
1516   return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1517 						     (__v32hi) __B,
1518 						     (__v32hi)
1519 						     _mm512_setzero_si512 (),
1520 						     (__mmask32) __U);
1521 }
1522 
1523 extern __inline __m512i
1524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1525 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1526 {
1527   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1528 						     (__v64qi) __B,
1529 						     (__v64qi)
1530 						     _mm512_setzero_si512 (),
1531 						     (__mmask64) -1);
1532 }
1533 
1534 extern __inline __m512i
1535 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1536 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1537 			   __m512i __B)
1538 {
1539   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1540 						     (__v64qi) __B,
1541 						     (__v64qi) __W,
1542 						     (__mmask64) __U);
1543 }
1544 
1545 extern __inline __m512i
1546 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1547 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1548 {
1549   return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1550 						     (__v64qi) __B,
1551 						     (__v64qi)
1552 						     _mm512_setzero_si512 (),
1553 						     (__mmask64) __U);
1554 }
1555 
1556 extern __inline __m512i
1557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1558 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1559 {
1560   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1561 						     (__v32hi) __B,
1562 						     (__v32hi)
1563 						     _mm512_setzero_si512 (),
1564 						     (__mmask32) -1);
1565 }
1566 
1567 extern __inline __m512i
1568 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1569 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1570 			    __m512i __B)
1571 {
1572   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1573 						     (__v32hi) __B,
1574 						     (__v32hi) __W,
1575 						     (__mmask32) __U);
1576 }
1577 
1578 extern __inline __m512i
1579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1580 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1581 {
1582   return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1583 						     (__v32hi) __B,
1584 						     (__v32hi)
1585 						     _mm512_setzero_si512 (),
1586 						     (__mmask32) __U);
1587 }
1588 
1589 extern __inline __mmask64
1590 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1591 _mm512_cmpeq_epu8_mask (__m512i __A, __m512i __B)
1592 {
1593   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1594 						    (__v64qi) __B, 0,
1595 						    (__mmask64) -1);
1596 }
1597 
1598 extern __inline __mmask64
1599 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1600 _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1601 {
1602   return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1603 						     (__v64qi) __B,
1604 						     (__mmask64) -1);
1605 }
1606 
1607 extern __inline __mmask64
1608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1609 _mm512_mask_cmpeq_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1610 {
1611   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1612 						    (__v64qi) __B, 0,
1613 						    __U);
1614 }
1615 
1616 extern __inline __mmask64
1617 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1618 _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1619 {
1620   return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1621 						     (__v64qi) __B,
1622 						     __U);
1623 }
1624 
1625 extern __inline __mmask32
1626 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1627 _mm512_cmpeq_epu16_mask (__m512i __A, __m512i __B)
1628 {
1629   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1630 						    (__v32hi) __B, 0,
1631 						    (__mmask32) -1);
1632 }
1633 
1634 extern __inline __mmask32
1635 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1636 _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1637 {
1638   return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1639 						     (__v32hi) __B,
1640 						     (__mmask32) -1);
1641 }
1642 
1643 extern __inline __mmask32
1644 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1645 _mm512_mask_cmpeq_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1646 {
1647   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1648 						    (__v32hi) __B, 0,
1649 						    __U);
1650 }
1651 
1652 extern __inline __mmask32
1653 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1654 _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1655 {
1656   return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1657 						     (__v32hi) __B,
1658 						     __U);
1659 }
1660 
1661 extern __inline __mmask64
1662 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1663 _mm512_cmpgt_epu8_mask (__m512i __A, __m512i __B)
1664 {
1665   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1666 						    (__v64qi) __B, 6,
1667 						    (__mmask64) -1);
1668 }
1669 
1670 extern __inline __mmask64
1671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1672 _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1673 {
1674   return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1675 						     (__v64qi) __B,
1676 						     (__mmask64) -1);
1677 }
1678 
1679 extern __inline __mmask64
1680 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1681 _mm512_mask_cmpgt_epu8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1682 {
1683   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __A,
1684 						    (__v64qi) __B, 6,
1685 						    __U);
1686 }
1687 
1688 extern __inline __mmask64
1689 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1690 _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1691 {
1692   return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1693 						     (__v64qi) __B,
1694 						     __U);
1695 }
1696 
1697 extern __inline __mmask32
1698 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1699 _mm512_cmpgt_epu16_mask (__m512i __A, __m512i __B)
1700 {
1701   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1702 						    (__v32hi) __B, 6,
1703 						    (__mmask32) -1);
1704 }
1705 
1706 extern __inline __mmask32
1707 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1708 _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1709 {
1710   return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1711 						     (__v32hi) __B,
1712 						     (__mmask32) -1);
1713 }
1714 
1715 extern __inline __mmask32
1716 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1717 _mm512_mask_cmpgt_epu16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1718 {
1719   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __A,
1720 						    (__v32hi) __B, 6,
1721 						    __U);
1722 }
1723 
1724 extern __inline __mmask32
1725 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1726 _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1727 {
1728   return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1729 						     (__v32hi) __B,
1730 						     __U);
1731 }
1732 
1733 extern __inline __mmask64
1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1735 _mm512_movepi8_mask (__m512i __A)
1736 {
1737   return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1738 }
1739 
1740 extern __inline __mmask32
1741 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1742 _mm512_movepi16_mask (__m512i __A)
1743 {
1744   return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1745 }
1746 
1747 extern __inline __m512i
1748 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1749 _mm512_movm_epi8 (__mmask64 __A)
1750 {
1751   return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1752 }
1753 
1754 extern __inline __m512i
1755 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1756 _mm512_movm_epi16 (__mmask32 __A)
1757 {
1758   return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1759 }
1760 
1761 extern __inline __mmask64
1762 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1763 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1764 {
1765   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1766 						(__v64qi) __B,
1767 						(__mmask64) -1);
1768 }
1769 
1770 extern __inline __mmask64
1771 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1772 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1773 {
1774   return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1775 						(__v64qi) __B, __U);
1776 }
1777 
1778 extern __inline __mmask32
1779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1780 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1781 {
1782   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1783 						(__v32hi) __B,
1784 						(__mmask32) -1);
1785 }
1786 
1787 extern __inline __mmask32
1788 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1789 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1790 {
1791   return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1792 						(__v32hi) __B, __U);
1793 }
1794 
1795 extern __inline __mmask64
1796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1797 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1798 {
1799   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1800 						 (__v64qi) __B,
1801 						 (__mmask64) -1);
1802 }
1803 
1804 extern __inline __mmask64
1805 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1806 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1807 {
1808   return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1809 						 (__v64qi) __B, __U);
1810 }
1811 
1812 extern __inline __mmask32
1813 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1814 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1815 {
1816   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1817 						 (__v32hi) __B,
1818 						 (__mmask32) -1);
1819 }
1820 
1821 extern __inline __mmask32
1822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1823 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1824 {
1825   return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1826 						 (__v32hi) __B, __U);
1827 }
1828 
1829 extern __inline __m512i
1830 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1831 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1832 {
1833   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1834 						  (__v64qi) __B,
1835 						  (__v64qi)
1836 						  _mm512_setzero_si512 (),
1837 						  (__mmask64) -1);
1838 }
1839 
1840 extern __inline __m512i
1841 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1842 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1843 			  __m512i __B)
1844 {
1845   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1846 						  (__v64qi) __B,
1847 						  (__v64qi) __W,
1848 						  (__mmask64) __U);
1849 }
1850 
1851 extern __inline __m512i
1852 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1853 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1854 {
1855   return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1856 						  (__v64qi) __B,
1857 						  (__v64qi)
1858 						  _mm512_setzero_si512 (),
1859 						  (__mmask64) __U);
1860 }
1861 
1862 extern __inline __m512i
1863 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1864 _mm512_min_epu16 (__m512i __A, __m512i __B)
1865 {
1866   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1867 						  (__v32hi) __B,
1868 						  (__v32hi)
1869 						  _mm512_setzero_si512 (),
1870 						  (__mmask32) -1);
1871 }
1872 
1873 extern __inline __m512i
1874 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1875 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1876 {
1877   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1878 						  (__v32hi) __B,
1879 						  (__v32hi)
1880 						  _mm512_setzero_si512 (),
1881 						  (__mmask32) __M);
1882 }
1883 
1884 extern __inline __m512i
1885 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1886 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1887 		       __m512i __B)
1888 {
1889   return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1890 						  (__v32hi) __B,
1891 						  (__v32hi) __W,
1892 						  (__mmask32) __M);
1893 }
1894 
1895 extern __inline __m512i
1896 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1897 _mm512_min_epi16 (__m512i __A, __m512i __B)
1898 {
1899   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1900 						  (__v32hi) __B,
1901 						  (__v32hi)
1902 						  _mm512_setzero_si512 (),
1903 						  (__mmask32) -1);
1904 }
1905 
1906 extern __inline __m512i
1907 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1908 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1909 {
1910   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1911 						  (__v32hi) __B,
1912 						  (__v32hi)
1913 						  _mm512_setzero_si512 (),
1914 						  (__mmask32) __M);
1915 }
1916 
1917 extern __inline __m512i
1918 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1919 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1920 		       __m512i __B)
1921 {
1922   return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1923 						  (__v32hi) __B,
1924 						  (__v32hi) __W,
1925 						  (__mmask32) __M);
1926 }
1927 
1928 extern __inline __m512i
1929 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1930 _mm512_max_epu8 (__m512i __A, __m512i __B)
1931 {
1932   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1933 						  (__v64qi) __B,
1934 						  (__v64qi)
1935 						  _mm512_setzero_si512 (),
1936 						  (__mmask64) -1);
1937 }
1938 
1939 extern __inline __m512i
1940 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1941 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1942 {
1943   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1944 						  (__v64qi) __B,
1945 						  (__v64qi)
1946 						  _mm512_setzero_si512 (),
1947 						  (__mmask64) __M);
1948 }
1949 
1950 extern __inline __m512i
1951 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1952 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1953 		      __m512i __B)
1954 {
1955   return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1956 						  (__v64qi) __B,
1957 						  (__v64qi) __W,
1958 						  (__mmask64) __M);
1959 }
1960 
1961 extern __inline __m512i
1962 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1963 _mm512_max_epi8 (__m512i __A, __m512i __B)
1964 {
1965   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1966 						  (__v64qi) __B,
1967 						  (__v64qi)
1968 						  _mm512_setzero_si512 (),
1969 						  (__mmask64) -1);
1970 }
1971 
1972 extern __inline __m512i
1973 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1974 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1975 {
1976   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1977 						  (__v64qi) __B,
1978 						  (__v64qi)
1979 						  _mm512_setzero_si512 (),
1980 						  (__mmask64) __M);
1981 }
1982 
1983 extern __inline __m512i
1984 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1985 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1986 		      __m512i __B)
1987 {
1988   return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1989 						  (__v64qi) __B,
1990 						  (__v64qi) __W,
1991 						  (__mmask64) __M);
1992 }
1993 
1994 extern __inline __m512i
1995 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1996 _mm512_min_epu8 (__m512i __A, __m512i __B)
1997 {
1998   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1999 						  (__v64qi) __B,
2000 						  (__v64qi)
2001 						  _mm512_setzero_si512 (),
2002 						  (__mmask64) -1);
2003 }
2004 
2005 extern __inline __m512i
2006 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2007 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
2008 {
2009   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2010 						  (__v64qi) __B,
2011 						  (__v64qi)
2012 						  _mm512_setzero_si512 (),
2013 						  (__mmask64) __M);
2014 }
2015 
2016 extern __inline __m512i
2017 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2018 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
2019 		      __m512i __B)
2020 {
2021   return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
2022 						  (__v64qi) __B,
2023 						  (__v64qi) __W,
2024 						  (__mmask64) __M);
2025 }
2026 
2027 extern __inline __m512i
2028 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2029 _mm512_min_epi8 (__m512i __A, __m512i __B)
2030 {
2031   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2032 						  (__v64qi) __B,
2033 						  (__v64qi)
2034 						  _mm512_setzero_si512 (),
2035 						  (__mmask64) -1);
2036 }
2037 
2038 extern __inline __m512i
2039 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2040 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
2041 {
2042   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2043 						  (__v64qi) __B,
2044 						  (__v64qi)
2045 						  _mm512_setzero_si512 (),
2046 						  (__mmask64) __M);
2047 }
2048 
2049 extern __inline __m512i
2050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2051 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
2052 		      __m512i __B)
2053 {
2054   return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
2055 						  (__v64qi) __B,
2056 						  (__v64qi) __W,
2057 						  (__mmask64) __M);
2058 }
2059 
2060 extern __inline __m512i
2061 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2062 _mm512_max_epi16 (__m512i __A, __m512i __B)
2063 {
2064   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2065 						  (__v32hi) __B,
2066 						  (__v32hi)
2067 						  _mm512_setzero_si512 (),
2068 						  (__mmask32) -1);
2069 }
2070 
2071 extern __inline __m512i
2072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2073 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
2074 {
2075   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2076 						  (__v32hi) __B,
2077 						  (__v32hi)
2078 						  _mm512_setzero_si512 (),
2079 						  (__mmask32) __M);
2080 }
2081 
2082 extern __inline __m512i
2083 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2084 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
2085 		       __m512i __B)
2086 {
2087   return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
2088 						  (__v32hi) __B,
2089 						  (__v32hi) __W,
2090 						  (__mmask32) __M);
2091 }
2092 
2093 extern __inline __m512i
2094 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2095 _mm512_max_epu16 (__m512i __A, __m512i __B)
2096 {
2097   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2098 						  (__v32hi) __B,
2099 						  (__v32hi)
2100 						  _mm512_setzero_si512 (),
2101 						  (__mmask32) -1);
2102 }
2103 
2104 extern __inline __m512i
2105 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2106 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
2107 {
2108   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2109 						  (__v32hi) __B,
2110 						  (__v32hi)
2111 						  _mm512_setzero_si512 (),
2112 						  (__mmask32) __M);
2113 }
2114 
2115 extern __inline __m512i
2116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2117 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
2118 		       __m512i __B)
2119 {
2120   return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
2121 						  (__v32hi) __B,
2122 						  (__v32hi) __W,
2123 						  (__mmask32) __M);
2124 }
2125 
2126 extern __inline __m512i
2127 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2128 _mm512_sra_epi16 (__m512i __A, __m128i __B)
2129 {
2130   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2131 						 (__v8hi) __B,
2132 						 (__v32hi)
2133 						 _mm512_setzero_si512 (),
2134 						 (__mmask32) -1);
2135 }
2136 
2137 extern __inline __m512i
2138 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2139 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2140 		       __m128i __B)
2141 {
2142   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2143 						 (__v8hi) __B,
2144 						 (__v32hi) __W,
2145 						 (__mmask32) __U);
2146 }
2147 
2148 extern __inline __m512i
2149 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2150 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
2151 {
2152   return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
2153 						 (__v8hi) __B,
2154 						 (__v32hi)
2155 						 _mm512_setzero_si512 (),
2156 						 (__mmask32) __U);
2157 }
2158 
2159 extern __inline __m512i
2160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2161 _mm512_srav_epi16 (__m512i __A, __m512i __B)
2162 {
2163   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2164 						  (__v32hi) __B,
2165 						  (__v32hi)
2166 						  _mm512_setzero_si512 (),
2167 						  (__mmask32) -1);
2168 }
2169 
2170 extern __inline __m512i
2171 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2172 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2173 			__m512i __B)
2174 {
2175   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2176 						  (__v32hi) __B,
2177 						  (__v32hi) __W,
2178 						  (__mmask32) __U);
2179 }
2180 
2181 extern __inline __m512i
2182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2183 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2184 {
2185   return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
2186 						  (__v32hi) __B,
2187 						  (__v32hi)
2188 						  _mm512_setzero_si512 (),
2189 						  (__mmask32) __U);
2190 }
2191 
2192 extern __inline __m512i
2193 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2194 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
2195 {
2196   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2197 						  (__v32hi) __B,
2198 						  (__v32hi)
2199 						  _mm512_setzero_si512 (),
2200 						  (__mmask32) -1);
2201 }
2202 
2203 extern __inline __m512i
2204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2205 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2206 			__m512i __B)
2207 {
2208   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2209 						  (__v32hi) __B,
2210 						  (__v32hi) __W,
2211 						  (__mmask32) __U);
2212 }
2213 
2214 extern __inline __m512i
2215 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2216 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2217 {
2218   return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
2219 						  (__v32hi) __B,
2220 						  (__v32hi)
2221 						  _mm512_setzero_si512 (),
2222 						  (__mmask32) __U);
2223 }
2224 
2225 extern __inline __m512i
2226 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2227 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
2228 {
2229   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2230 						  (__v32hi) __B,
2231 						  (__v32hi)
2232 						  _mm512_setzero_si512 (),
2233 						  (__mmask32) -1);
2234 }
2235 
2236 extern __inline __m512i
2237 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2238 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2239 			__m512i __B)
2240 {
2241   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2242 						  (__v32hi) __B,
2243 						  (__v32hi) __W,
2244 						  (__mmask32) __U);
2245 }
2246 
2247 extern __inline __m512i
2248 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2249 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
2250 {
2251   return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
2252 						  (__v32hi) __B,
2253 						  (__v32hi)
2254 						  _mm512_setzero_si512 (),
2255 						  (__mmask32) __U);
2256 }
2257 
2258 extern __inline __m512i
2259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2260 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2261 			 __m512i __B)
2262 {
2263   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2264 						    (__v32hi) __B,
2265 						    (__v64qi) __W,
2266 						    (__mmask64) __M);
2267 }
2268 
2269 extern __inline __m512i
2270 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2271 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2272 {
2273   return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
2274 						    (__v32hi) __B,
2275 						    (__v64qi)
2276 						    _mm512_setzero_si512 (),
2277 						    __M);
2278 }
2279 
2280 extern __inline __m512i
2281 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2282 _mm512_packus_epi16 (__m512i __A, __m512i __B)
2283 {
2284   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2285 						    (__v32hi) __B,
2286 						    (__v64qi)
2287 						    _mm512_setzero_si512 (),
2288 						    (__mmask64) -1);
2289 }
2290 
2291 extern __inline __m512i
2292 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2293 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2294 			  __m512i __B)
2295 {
2296   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2297 						    (__v32hi) __B,
2298 						    (__v64qi) __W,
2299 						    (__mmask64) __M);
2300 }
2301 
2302 extern __inline __m512i
2303 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2304 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2305 {
2306   return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2307 						    (__v32hi) __B,
2308 						    (__v64qi)
2309 						    _mm512_setzero_si512 (),
2310 						    (__mmask64) __M);
2311 }
2312 
2313 extern __inline __m512i
2314 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2315 _mm512_abs_epi8 (__m512i __A)
2316 {
2317   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2318 						 (__v64qi)
2319 						 _mm512_setzero_si512 (),
2320 						 (__mmask64) -1);
2321 }
2322 
2323 extern __inline __m512i
2324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2325 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2326 {
2327   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2328 						 (__v64qi) __W,
2329 						 (__mmask64) __U);
2330 }
2331 
2332 extern __inline __m512i
2333 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2334 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2335 {
2336   return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2337 						 (__v64qi)
2338 						 _mm512_setzero_si512 (),
2339 						 (__mmask64) __U);
2340 }
2341 
2342 extern __inline __m512i
2343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2344 _mm512_abs_epi16 (__m512i __A)
2345 {
2346   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2347 						 (__v32hi)
2348 						 _mm512_setzero_si512 (),
2349 						 (__mmask32) -1);
2350 }
2351 
2352 extern __inline __m512i
2353 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2354 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2355 {
2356   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2357 						 (__v32hi) __W,
2358 						 (__mmask32) __U);
2359 }
2360 
2361 extern __inline __m512i
2362 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2363 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2364 {
2365   return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2366 						 (__v32hi)
2367 						 _mm512_setzero_si512 (),
2368 						 (__mmask32) __U);
2369 }
2370 
2371 extern __inline __mmask64
2372 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2373 _mm512_mask_cmpneq_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2374 {
2375   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2376 						   (__v64qi) __Y, 4,
2377 						   (__mmask64) __M);
2378 }
2379 
2380 extern __inline __mmask64
2381 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2382 _mm512_mask_cmplt_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2383 {
2384   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2385 						   (__v64qi) __Y, 1,
2386 						   (__mmask64) __M);
2387 }
2388 
2389 extern __inline __mmask64
2390 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2391 _mm512_mask_cmpge_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2392 {
2393   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2394 						   (__v64qi) __Y, 5,
2395 						   (__mmask64) __M);
2396 }
2397 
2398 extern __inline __mmask64
2399 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2400 _mm512_mask_cmple_epu8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2401 {
2402   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2403 						   (__v64qi) __Y, 2,
2404 						   (__mmask64) __M);
2405 }
2406 
2407 extern __inline __mmask32
2408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2409 _mm512_mask_cmpneq_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2410 {
2411   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2412 						   (__v32hi) __Y, 4,
2413 						   (__mmask32) __M);
2414 }
2415 
2416 extern __inline __mmask32
2417 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2418 _mm512_mask_cmplt_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2419 {
2420   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2421 						   (__v32hi) __Y, 1,
2422 						   (__mmask32) __M);
2423 }
2424 
2425 extern __inline __mmask32
2426 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2427 _mm512_mask_cmpge_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2428 {
2429   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2430 						   (__v32hi) __Y, 5,
2431 						   (__mmask32) __M);
2432 }
2433 
2434 extern __inline __mmask32
2435 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2436 _mm512_mask_cmple_epu16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2437 {
2438   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2439 						   (__v32hi) __Y, 2,
2440 						   (__mmask32) __M);
2441 }
2442 
2443 extern __inline __mmask64
2444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2445 _mm512_mask_cmpneq_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2446 {
2447   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2448 						  (__v64qi) __Y, 4,
2449 						  (__mmask64) __M);
2450 }
2451 
2452 extern __inline __mmask64
2453 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2454 _mm512_mask_cmplt_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2455 {
2456   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2457 						  (__v64qi) __Y, 1,
2458 						  (__mmask64) __M);
2459 }
2460 
2461 extern __inline __mmask64
2462 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2463 _mm512_mask_cmpge_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2464 {
2465   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2466 						  (__v64qi) __Y, 5,
2467 						  (__mmask64) __M);
2468 }
2469 
2470 extern __inline __mmask64
2471 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2472 _mm512_mask_cmple_epi8_mask (__mmask64 __M, __m512i __X, __m512i __Y)
2473 {
2474   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2475 						  (__v64qi) __Y, 2,
2476 						  (__mmask64) __M);
2477 }
2478 
2479 extern __inline __mmask32
2480 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2481 _mm512_mask_cmpneq_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2482 {
2483   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2484 						  (__v32hi) __Y, 4,
2485 						  (__mmask32) __M);
2486 }
2487 
2488 extern __inline __mmask32
2489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2490 _mm512_mask_cmplt_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2491 {
2492   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2493 						  (__v32hi) __Y, 1,
2494 						  (__mmask32) __M);
2495 }
2496 
2497 extern __inline __mmask32
2498 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2499 _mm512_mask_cmpge_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2500 {
2501   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2502 						  (__v32hi) __Y, 5,
2503 						  (__mmask32) __M);
2504 }
2505 
2506 extern __inline __mmask32
2507 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2508 _mm512_mask_cmple_epi16_mask (__mmask32 __M, __m512i __X, __m512i __Y)
2509 {
2510   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2511 						  (__v32hi) __Y, 2,
2512 						  (__mmask32) __M);
2513 }
2514 
2515 extern __inline __mmask64
2516 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2517 _mm512_cmpneq_epu8_mask (__m512i __X, __m512i __Y)
2518 {
2519   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2520 						   (__v64qi) __Y, 4,
2521 						   (__mmask64) -1);
2522 }
2523 
2524 extern __inline __mmask64
2525 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2526 _mm512_cmplt_epu8_mask (__m512i __X, __m512i __Y)
2527 {
2528   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2529 						   (__v64qi) __Y, 1,
2530 						   (__mmask64) -1);
2531 }
2532 
2533 extern __inline __mmask64
2534 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2535 _mm512_cmpge_epu8_mask (__m512i __X, __m512i __Y)
2536 {
2537   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2538 						   (__v64qi) __Y, 5,
2539 						   (__mmask64) -1);
2540 }
2541 
2542 extern __inline __mmask64
2543 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2544 _mm512_cmple_epu8_mask (__m512i __X, __m512i __Y)
2545 {
2546   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2547 						   (__v64qi) __Y, 2,
2548 						   (__mmask64) -1);
2549 }
2550 
2551 extern __inline __mmask32
2552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2553 _mm512_cmpneq_epu16_mask (__m512i __X, __m512i __Y)
2554 {
2555   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2556 						   (__v32hi) __Y, 4,
2557 						   (__mmask32) -1);
2558 }
2559 
2560 extern __inline __mmask32
2561 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2562 _mm512_cmplt_epu16_mask (__m512i __X, __m512i __Y)
2563 {
2564   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2565 						   (__v32hi) __Y, 1,
2566 						   (__mmask32) -1);
2567 }
2568 
2569 extern __inline __mmask32
2570 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2571 _mm512_cmpge_epu16_mask (__m512i __X, __m512i __Y)
2572 {
2573   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2574 						   (__v32hi) __Y, 5,
2575 						   (__mmask32) -1);
2576 }
2577 
2578 extern __inline __mmask32
2579 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2580 _mm512_cmple_epu16_mask (__m512i __X, __m512i __Y)
2581 {
2582   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2583 						   (__v32hi) __Y, 2,
2584 						   (__mmask32) -1);
2585 }
2586 
2587 extern __inline __mmask64
2588 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2589 _mm512_cmpneq_epi8_mask (__m512i __X, __m512i __Y)
2590 {
2591   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2592 						  (__v64qi) __Y, 4,
2593 						  (__mmask64) -1);
2594 }
2595 
2596 extern __inline __mmask64
2597 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2598 _mm512_cmplt_epi8_mask (__m512i __X, __m512i __Y)
2599 {
2600   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2601 						  (__v64qi) __Y, 1,
2602 						  (__mmask64) -1);
2603 }
2604 
2605 extern __inline __mmask64
2606 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2607 _mm512_cmpge_epi8_mask (__m512i __X, __m512i __Y)
2608 {
2609   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2610 						  (__v64qi) __Y, 5,
2611 						  (__mmask64) -1);
2612 }
2613 
2614 extern __inline __mmask64
2615 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2616 _mm512_cmple_epi8_mask (__m512i __X, __m512i __Y)
2617 {
2618   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2619 						  (__v64qi) __Y, 2,
2620 						  (__mmask64) -1);
2621 }
2622 
2623 extern __inline __mmask32
2624 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2625 _mm512_cmpneq_epi16_mask (__m512i __X, __m512i __Y)
2626 {
2627   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2628 						  (__v32hi) __Y, 4,
2629 						  (__mmask32) -1);
2630 }
2631 
2632 extern __inline __mmask32
2633 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2634 _mm512_cmplt_epi16_mask (__m512i __X, __m512i __Y)
2635 {
2636   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2637 						  (__v32hi) __Y, 1,
2638 						  (__mmask32) -1);
2639 }
2640 
2641 extern __inline __mmask32
2642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2643 _mm512_cmpge_epi16_mask (__m512i __X, __m512i __Y)
2644 {
2645   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2646 						  (__v32hi) __Y, 5,
2647 						  (__mmask32) -1);
2648 }
2649 
2650 extern __inline __mmask32
2651 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2652 _mm512_cmple_epi16_mask (__m512i __X, __m512i __Y)
2653 {
2654   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2655 						  (__v32hi) __Y, 2,
2656 						  (__mmask32) -1);
2657 }
2658 
2659 extern __inline __m512i
2660 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2661 _mm512_packs_epi32 (__m512i __A, __m512i __B)
2662 {
2663   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2664 						    (__v16si) __B,
2665 						    (__v32hi)
2666 						    _mm512_setzero_si512 (),
2667 						    (__mmask32) -1);
2668 }
2669 
2670 extern __inline __m512i
2671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2672 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2673 {
2674   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2675 						    (__v16si) __B,
2676 						    (__v32hi)
2677 						    _mm512_setzero_si512 (),
2678 						    __M);
2679 }
2680 
2681 extern __inline __m512i
2682 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2683 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2684 			 __m512i __B)
2685 {
2686   return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2687 						    (__v16si) __B,
2688 						    (__v32hi) __W,
2689 						    __M);
2690 }
2691 
2692 extern __inline __m512i
2693 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2694 _mm512_packus_epi32 (__m512i __A, __m512i __B)
2695 {
2696   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2697 						    (__v16si) __B,
2698 						    (__v32hi)
2699 						    _mm512_setzero_si512 (),
2700 						    (__mmask32) -1);
2701 }
2702 
2703 extern __inline __m512i
2704 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2705 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2706 {
2707   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2708 						    (__v16si) __B,
2709 						    (__v32hi)
2710 						    _mm512_setzero_si512 (),
2711 						    __M);
2712 }
2713 
2714 extern __inline __m512i
2715 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2716 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2717 			  __m512i __B)
2718 {
2719   return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2720 						    (__v16si) __B,
2721 						    (__v32hi) __W,
2722 						    __M);
2723 }
2724 
2725 #ifdef __OPTIMIZE__
2726 extern __inline __mmask32
2727 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2728 _kshiftli_mask32 (__mmask32 __A, unsigned int __B)
2729 {
2730   return (__mmask32) __builtin_ia32_kshiftlisi ((__mmask32) __A,
2731 						(__mmask8) __B);
2732 }
2733 
2734 extern __inline __mmask64
2735 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2736 _kshiftli_mask64 (__mmask64 __A, unsigned int __B)
2737 {
2738   return (__mmask64) __builtin_ia32_kshiftlidi ((__mmask64) __A,
2739 						(__mmask8) __B);
2740 }
2741 
2742 extern __inline __mmask32
2743 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2744 _kshiftri_mask32 (__mmask32 __A, unsigned int __B)
2745 {
2746   return (__mmask32) __builtin_ia32_kshiftrisi ((__mmask32) __A,
2747 						(__mmask8) __B);
2748 }
2749 
2750 extern __inline __mmask64
2751 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2752 _kshiftri_mask64 (__mmask64 __A, unsigned int __B)
2753 {
2754   return (__mmask64) __builtin_ia32_kshiftridi ((__mmask64) __A,
2755 						(__mmask8) __B);
2756 }
2757 
2758 extern __inline __m512i
2759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2760 _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2761 {
2762   return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2763 					      (__v8di) __B, __N * 8);
2764 }
2765 
2766 extern __inline __m512i
2767 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2768 _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2769 			 __m512i __B, const int __N)
2770 {
2771   return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2772 						   (__v8di) __B,
2773 						   __N * 8,
2774 						   (__v8di) __W,
2775 						   (__mmask64) __U);
2776 }
2777 
2778 extern __inline __m512i
2779 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2780 _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2781 			  const int __N)
2782 {
2783   return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2784 						   (__v8di) __B,
2785 						   __N * 8,
2786 						   (__v8di)
2787 						   _mm512_setzero_si512 (),
2788 						   (__mmask64) __U);
2789 }
2790 
2791 extern __inline __m512i
2792 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2793 _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2794 {
2795   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2796 						    (__v64qi) __B,
2797 						    __imm,
2798 						    (__v32hi)
2799 						    _mm512_setzero_si512 (),
2800 						    (__mmask32) -1);
2801 }
2802 
2803 extern __inline __m512i
2804 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2805 _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2806 			__m512i __B, const int __imm)
2807 {
2808   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2809 						    (__v64qi) __B,
2810 						    __imm,
2811 						    (__v32hi) __W,
2812 						    (__mmask32) __U);
2813 }
2814 
2815 extern __inline __m512i
2816 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2817 _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2818 			 const int __imm)
2819 {
2820   return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2821 						    (__v64qi) __B,
2822 						    __imm,
2823 						    (__v32hi)
2824 						    _mm512_setzero_si512 (),
2825 						    (__mmask32) __U);
2826 }
2827 
2828 extern __inline __m512i
2829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2830 _mm512_srli_epi16 (__m512i __A, const int __imm)
2831 {
2832   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2833 						  (__v32hi)
2834 						  _mm512_setzero_si512 (),
2835 						  (__mmask32) -1);
2836 }
2837 
2838 extern __inline __m512i
2839 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2840 _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2841 			const int __imm)
2842 {
2843   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2844 						  (__v32hi) __W,
2845 						  (__mmask32) __U);
2846 }
2847 
2848 extern __inline __m512i
2849 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2850 _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2851 {
2852   return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2853 						  (__v32hi)
2854 						  _mm512_setzero_si512 (),
2855 						  (__mmask32) __U);
2856 }
2857 
2858 extern __inline __m512i
2859 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2860 _mm512_slli_epi16 (__m512i __A, const int __B)
2861 {
2862   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2863 						  (__v32hi)
2864 						  _mm512_setzero_si512 (),
2865 						  (__mmask32) -1);
2866 }
2867 
2868 extern __inline __m512i
2869 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2870 _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2871 			const int __B)
2872 {
2873   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2874 						  (__v32hi) __W,
2875 						  (__mmask32) __U);
2876 }
2877 
2878 extern __inline __m512i
2879 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2880 _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2881 {
2882   return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2883 						  (__v32hi)
2884 						  _mm512_setzero_si512 (),
2885 						  (__mmask32) __U);
2886 }
2887 
2888 extern __inline __m512i
2889 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2890 _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2891 {
2892   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2893 						   __imm,
2894 						   (__v32hi)
2895 						   _mm512_setzero_si512 (),
2896 						   (__mmask32) -1);
2897 }
2898 
2899 extern __inline __m512i
2900 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2901 _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2902 			     const int __imm)
2903 {
2904   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2905 						   __imm,
2906 						   (__v32hi) __W,
2907 						   (__mmask32) __U);
2908 }
2909 
2910 extern __inline __m512i
2911 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2912 _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2913 			      const int __imm)
2914 {
2915   return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2916 						   __imm,
2917 						   (__v32hi)
2918 						   _mm512_setzero_si512 (),
2919 						   (__mmask32) __U);
2920 }
2921 
2922 extern __inline __m512i
2923 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2924 _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2925 {
2926   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2927 						   __imm,
2928 						   (__v32hi)
2929 						   _mm512_setzero_si512 (),
2930 						   (__mmask32) -1);
2931 }
2932 
2933 extern __inline __m512i
2934 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2935 _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2936 			     const int __imm)
2937 {
2938   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2939 						   __imm,
2940 						   (__v32hi) __W,
2941 						   (__mmask32) __U);
2942 }
2943 
2944 extern __inline __m512i
2945 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2946 _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
2947 			      const int __imm)
2948 {
2949   return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2950 						   __imm,
2951 						   (__v32hi)
2952 						   _mm512_setzero_si512 (),
2953 						   (__mmask32) __U);
2954 }
2955 
2956 extern __inline __m512i
2957 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2958 _mm512_srai_epi16 (__m512i __A, const int __imm)
2959 {
2960   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2961 						  (__v32hi)
2962 						  _mm512_setzero_si512 (),
2963 						  (__mmask32) -1);
2964 }
2965 
2966 extern __inline __m512i
2967 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2968 _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2969 			const int __imm)
2970 {
2971   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2972 						  (__v32hi) __W,
2973 						  (__mmask32) __U);
2974 }
2975 
2976 extern __inline __m512i
2977 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2978 _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2979 {
2980   return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2981 						  (__v32hi)
2982 						  _mm512_setzero_si512 (),
2983 						  (__mmask32) __U);
2984 }
2985 
2986 extern __inline __m512i
2987 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2988 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
2989 {
2990   return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
2991 						    (__v32hi) __W,
2992 						    (__mmask32) __U);
2993 }
2994 
2995 extern __inline __m512i
2996 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2997 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
2998 {
2999   return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
3000 						    (__v64qi) __W,
3001 						    (__mmask64) __U);
3002 }
3003 
3004 extern __inline __mmask32
3005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3006 _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3007 			    const int __P)
3008 {
3009   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3010 						  (__v32hi) __Y, __P,
3011 						  (__mmask32) __U);
3012 }
3013 
3014 extern __inline __mmask32
3015 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3016 _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
3017 {
3018   return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
3019 						  (__v32hi) __Y, __P,
3020 						  (__mmask32) -1);
3021 }
3022 
3023 extern __inline __mmask64
3024 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3025 _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3026 			   const int __P)
3027 {
3028   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3029 						  (__v64qi) __Y, __P,
3030 						  (__mmask64) __U);
3031 }
3032 
3033 extern __inline __mmask64
3034 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3035 _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
3036 {
3037   return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
3038 						  (__v64qi) __Y, __P,
3039 						  (__mmask64) -1);
3040 }
3041 
3042 extern __inline __mmask32
3043 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3044 _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3045 			    const int __P)
3046 {
3047   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3048 						   (__v32hi) __Y, __P,
3049 						   (__mmask32) __U);
3050 }
3051 
3052 extern __inline __mmask32
3053 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3054 _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
3055 {
3056   return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
3057 						   (__v32hi) __Y, __P,
3058 						   (__mmask32) -1);
3059 }
3060 
3061 extern __inline __mmask64
3062 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3063 _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
3064 			   const int __P)
3065 {
3066   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3067 						   (__v64qi) __Y, __P,
3068 						   (__mmask64) __U);
3069 }
3070 
3071 extern __inline __mmask64
3072 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3073 _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
3074 {
3075   return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
3076 						   (__v64qi) __Y, __P,
3077 						   (__mmask64) -1);
3078 }
3079 
3080 extern __inline __m512i
3081 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3082 _mm512_bslli_epi128 (__m512i __A, const int __N)
3083 {
3084   return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
3085 }
3086 
3087 extern __inline __m512i
3088 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
3089 _mm512_bsrli_epi128 (__m512i __A, const int __N)
3090 {
3091   return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
3092 }
3093 
3094 #else
3095 #define _kshiftli_mask32(X, Y)							\
3096   ((__mmask32) __builtin_ia32_kshiftlisi ((__mmask32)(X), (__mmask8)(Y)))
3097 
3098 #define _kshiftli_mask64(X, Y)							\
3099   ((__mmask64) __builtin_ia32_kshiftlidi ((__mmask64)(X), (__mmask8)(Y)))
3100 
3101 #define _kshiftri_mask32(X, Y)							\
3102   ((__mmask32) __builtin_ia32_kshiftrisi ((__mmask32)(X), (__mmask8)(Y)))
3103 
3104 #define _kshiftri_mask64(X, Y)							\
3105   ((__mmask64) __builtin_ia32_kshiftridi ((__mmask64)(X), (__mmask8)(Y)))
3106 
3107 #define _mm512_alignr_epi8(X, Y, N)						    \
3108   ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X),			    \
3109 					(__v8di)(__m512i)(Y),			    \
3110 					(int)(N * 8)))
3111 
3112 #define _mm512_mask_alignr_epi8(W, U, X, Y, N)					    \
3113   ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
3114 					    (__v8di)(__m512i)(Y), (int)(N * 8),	    \
3115 					    (__v8di)(__m512i)(W), (__mmask64)(U)))
3116 
3117 #define _mm512_maskz_alignr_epi8(U, X, Y, N)					    \
3118   ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X),		    \
3119 					     (__v8di)(__m512i)(Y), (int)(N * 8),    \
3120 					     (__v8di)(__m512i)			    \
3121 					     _mm512_setzero_si512 (),		    \
3122 					     (__mmask64)(U)))
3123 
3124 #define _mm512_dbsad_epu8(X, Y, C)                                                  \
3125   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
3126                                               (__v64qi)(__m512i) (Y), (int) (C),    \
3127                                               (__v32hi)(__m512i)		    \
3128 					      _mm512_setzero_si512 (),		    \
3129                                               (__mmask32)-1))
3130 
3131 #define _mm512_mask_dbsad_epu8(W, U, X, Y, C)                                       \
3132   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
3133                                               (__v64qi)(__m512i) (Y), (int) (C),    \
3134                                               (__v32hi)(__m512i)(W),                \
3135                                               (__mmask32)(U)))
3136 
3137 #define _mm512_maskz_dbsad_epu8(U, X, Y, C)                                         \
3138   ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X),               \
3139                                               (__v64qi)(__m512i) (Y), (int) (C),    \
3140                                               (__v32hi)(__m512i)		    \
3141 					      _mm512_setzero_si512 (),		    \
3142                                               (__mmask32)(U)))
3143 
3144 #define _mm512_srli_epi16(A, B)                                         \
3145   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
3146     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3147 
3148 #define _mm512_mask_srli_epi16(W, U, A, B)                              \
3149   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
3150     (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3151 
3152 #define _mm512_maskz_srli_epi16(U, A, B)                                \
3153   ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A),      \
3154     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3155 
3156 #define _mm512_slli_epi16(X, C)						   \
3157   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3158     (__v32hi)(__m512i)_mm512_setzero_si512 (),				   \
3159     (__mmask32)-1))
3160 
3161 #define _mm512_mask_slli_epi16(W, U, X, C)                                 \
3162   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3163     (__v32hi)(__m512i)(W),\
3164     (__mmask32)(U)))
3165 
3166 #define _mm512_maskz_slli_epi16(U, X, C)                                   \
3167   ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
3168     (__v32hi)(__m512i)_mm512_setzero_si512 (),				   \
3169     (__mmask32)(U)))
3170 
3171 #define _mm512_shufflehi_epi16(A, B)                                                \
3172   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3173                                              (__v32hi)(__m512i)			    \
3174 					     _mm512_setzero_si512 (),		    \
3175                                              (__mmask32)-1))
3176 
3177 #define _mm512_mask_shufflehi_epi16(W, U, A, B)                                     \
3178   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3179                                              (__v32hi)(__m512i)(W),                 \
3180                                              (__mmask32)(U)))
3181 
3182 #define _mm512_maskz_shufflehi_epi16(U, A, B)                                       \
3183   ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3184                                              (__v32hi)(__m512i)			    \
3185 					     _mm512_setzero_si512 (),		    \
3186                                              (__mmask32)(U)))
3187 
3188 #define _mm512_shufflelo_epi16(A, B)                                                \
3189   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3190                                              (__v32hi)(__m512i)			    \
3191 					     _mm512_setzero_si512 (),		    \
3192                                              (__mmask32)-1))
3193 
3194 #define _mm512_mask_shufflelo_epi16(W, U, A, B)                                     \
3195   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3196                                              (__v32hi)(__m512i)(W),                 \
3197                                              (__mmask32)(U)))
3198 
3199 #define _mm512_maskz_shufflelo_epi16(U, A, B)                                       \
3200   ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B),       \
3201                                              (__v32hi)(__m512i)			    \
3202 					     _mm512_setzero_si512 (),		    \
3203                                              (__mmask32)(U)))
3204 
3205 #define _mm512_srai_epi16(A, B)                                         \
3206   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
3207     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)-1))
3208 
3209 #define _mm512_mask_srai_epi16(W, U, A, B)                              \
3210   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
3211     (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
3212 
3213 #define _mm512_maskz_srai_epi16(U, A, B)                                \
3214   ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A),      \
3215     (int)(B), (__v32hi)_mm512_setzero_si512 (), (__mmask32)(U)))
3216 
3217 #define _mm512_mask_blend_epi16(__U, __A, __W)			      \
3218   ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A),	      \
3219 						    (__v32hi) (__W),  \
3220 						    (__mmask32) (__U)))
3221 
3222 #define _mm512_mask_blend_epi8(__U, __A, __W)			      \
3223   ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A),	      \
3224 						    (__v64qi) (__W),  \
3225 						    (__mmask64) (__U)))
3226 
3227 #define _mm512_cmp_epi16_mask(X, Y, P)				\
3228   ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
3229 					    (__v32hi)(__m512i)(Y), (int)(P),\
3230 					    (__mmask32)(-1)))
3231 
3232 #define _mm512_cmp_epi8_mask(X, Y, P)				\
3233   ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
3234 					    (__v64qi)(__m512i)(Y), (int)(P),\
3235 					    (__mmask64)(-1)))
3236 
3237 #define _mm512_cmp_epu16_mask(X, Y, P)				\
3238   ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
3239 					    (__v32hi)(__m512i)(Y), (int)(P),\
3240 					    (__mmask32)(-1)))
3241 
3242 #define _mm512_cmp_epu8_mask(X, Y, P)				\
3243   ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
3244 					    (__v64qi)(__m512i)(Y), (int)(P),\
3245 					    (__mmask64)(-1)))
3246 
3247 #define _mm512_mask_cmp_epi16_mask(M, X, Y, P)				\
3248   ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X),	\
3249 					    (__v32hi)(__m512i)(Y), (int)(P),\
3250 					    (__mmask32)(M)))
3251 
3252 #define _mm512_mask_cmp_epi8_mask(M, X, Y, P)				\
3253   ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X),	\
3254 					    (__v64qi)(__m512i)(Y), (int)(P),\
3255 					    (__mmask64)(M)))
3256 
3257 #define _mm512_mask_cmp_epu16_mask(M, X, Y, P)				\
3258   ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X),	\
3259 					    (__v32hi)(__m512i)(Y), (int)(P),\
3260 					    (__mmask32)(M)))
3261 
3262 #define _mm512_mask_cmp_epu8_mask(M, X, Y, P)				\
3263   ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X),	\
3264 					    (__v64qi)(__m512i)(Y), (int)(P),\
3265 					    (__mmask64)(M)))
3266 
3267 #define _mm512_bslli_epi128(A, N)                                         \
3268   ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
3269 
3270 #define _mm512_bsrli_epi128(A, N)                                         \
3271   ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
3272 
3273 #endif
3274 
3275 #ifdef __DISABLE_AVX512BW__
3276 #undef __DISABLE_AVX512BW__
3277 #pragma GCC pop_options
3278 #endif /* __DISABLE_AVX512BW__ */
3279 
3280 #endif /* _AVX512BWINTRIN_H_INCLUDED */
3281