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