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