Initial support for AVX-512{VL,BW,DQ}
[official-gcc.git] / gcc / config / i386 / avx512bwintrin.h
blobb5caab956b5722fab6db9c2762bb524f46f00aea
1 /* Copyright (C) 2013
2 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 Under Section 7 of GPL version 3, you are granted additional
17 permissions described in the GCC Runtime Library Exception, version
18 3.1, as published by the Free Software Foundation.
20 You should have received a copy of the GNU General Public License and
21 a copy of the GCC Runtime Library Exception along with this program;
22 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23 <http://www.gnu.org/licenses/>. */
25 #ifndef _IMMINTRIN_H_INCLUDED
26 #error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
27 #endif
29 #ifndef _AVX512BWINTRIN_H_INCLUDED
30 #define _AVX512BWINTRIN_H_INCLUDED
32 #ifndef __AVX512BW__
33 #pragma GCC push_options
34 #pragma GCC target("avx512bw")
35 #define __DISABLE_AVX512BW__
36 #endif /* __AVX512BW__ */
38 /* Internal data types for implementing the intrinsics. */
39 typedef short __v32hi __attribute__ ((__vector_size__ (64)));
40 typedef char __v64qi __attribute__ ((__vector_size__ (64)));
42 typedef unsigned long long __mmask64;
44 extern __inline __m512i
45 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
46 _mm512_setzero_qi (void)
48 return __extension__ (__m512i)(__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
49 0, 0, 0, 0, 0, 0, 0, 0,
50 0, 0, 0, 0, 0, 0, 0, 0,
51 0, 0, 0, 0, 0, 0, 0, 0,
52 0, 0, 0, 0, 0, 0, 0, 0,
53 0, 0, 0, 0, 0, 0, 0, 0,
54 0, 0, 0, 0, 0, 0, 0, 0,
55 0, 0, 0, 0, 0, 0, 0, 0 };
58 extern __inline __m512i
59 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
60 _mm512_setzero_hi (void)
62 return __extension__ (__m512i)(__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
63 0, 0, 0, 0, 0, 0, 0, 0,
64 0, 0, 0, 0, 0, 0, 0, 0,
65 0, 0, 0, 0, 0, 0, 0, 0 };
68 extern __inline __m512i
69 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
70 _mm512_mask_mov_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
72 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
73 (__v32hi) __W,
74 (__mmask32) __U);
77 extern __inline __m512i
78 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
79 _mm512_maskz_mov_epi16 (__mmask32 __U, __m512i __A)
81 return (__m512i) __builtin_ia32_movdquhi512_mask ((__v32hi) __A,
82 (__v32hi)
83 _mm512_setzero_hi (),
84 (__mmask32) __U);
87 extern __inline __m512i
88 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
89 _mm512_mask_loadu_epi16 (__m512i __W, __mmask32 __U, void const *__P)
91 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
92 (__v32hi) __W,
93 (__mmask32) __U);
96 extern __inline __m512i
97 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
98 _mm512_maskz_loadu_epi16 (__mmask32 __U, void const *__P)
100 return (__m512i) __builtin_ia32_loaddquhi512_mask ((__v32hi *) __P,
101 (__v32hi)
102 _mm512_setzero_hi (),
103 (__mmask32) __U);
106 extern __inline void
107 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
108 _mm512_mask_storeu_epi16 (void *__P, __mmask32 __U, __m512i __A)
110 __builtin_ia32_storedquhi512_mask ((__v32hi *) __P,
111 (__v32hi) __A,
112 (__mmask32) __U);
115 extern __inline __m512i
116 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
117 _mm512_mask_mov_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
119 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
120 (__v64qi) __W,
121 (__mmask64) __U);
124 extern __inline __m512i
125 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
126 _mm512_maskz_mov_epi8 (__mmask64 __U, __m512i __A)
128 return (__m512i) __builtin_ia32_movdquqi512_mask ((__v64qi) __A,
129 (__v64qi)
130 _mm512_setzero_hi (),
131 (__mmask64) __U);
134 extern __inline __mmask32
135 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
136 _mm512_kunpackw (__mmask32 __A, __mmask32 __B)
138 return (__mmask32) __builtin_ia32_kunpcksi ((__mmask32) __A,
139 (__mmask32) __B);
142 extern __inline __mmask64
143 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
144 _mm512_kunpackd (__mmask64 __A, __mmask64 __B)
146 return (__mmask64) __builtin_ia32_kunpckdi ((__mmask64) __A,
147 (__mmask64) __B);
150 extern __inline __m512i
151 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
152 _mm512_mask_loadu_epi8 (__m512i __W, __mmask64 __U, void const *__P)
154 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
155 (__v64qi) __W,
156 (__mmask64) __U);
159 extern __inline __m512i
160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
161 _mm512_maskz_loadu_epi8 (__mmask64 __U, void const *__P)
163 return (__m512i) __builtin_ia32_loaddquqi512_mask ((__v64qi *) __P,
164 (__v64qi)
165 _mm512_setzero_hi (),
166 (__mmask64) __U);
169 extern __inline void
170 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
171 _mm512_mask_storeu_epi8 (void *__P, __mmask64 __U, __m512i __A)
173 __builtin_ia32_storedquqi512_mask ((__v64qi *) __P,
174 (__v64qi) __A,
175 (__mmask64) __U);
178 extern __inline __m512i
179 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
180 _mm512_sad_epu8 (__m512i __A, __m512i __B)
182 return (__m512i) __builtin_ia32_psadbw512 ((__v64qi) __A,
183 (__v64qi) __B);
186 extern __inline __m256i
187 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
188 _mm512_cvtepi16_epi8 (__m512i __A)
190 __v32qi __O;
191 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A, __O,
192 (__mmask32) -1);
195 extern __inline __m256i
196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
197 _mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
199 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
200 (__v32qi) __O, __M);
203 extern __inline __m256i
204 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
205 _mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A)
207 return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
208 (__v32qi)
209 _mm256_setzero_si256 (),
210 __M);
213 extern __inline __m256i
214 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
215 _mm512_cvtsepi16_epi8 (__m512i __A)
217 __v32qi __O;
218 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A, __O,
219 (__mmask32) -1);
222 extern __inline __m256i
223 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
224 _mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
226 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
227 (__v32qi) __O, __M);
230 extern __inline __m256i
231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
232 _mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A)
234 return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
235 (__v32qi)
236 _mm256_setzero_si256 (),
237 __M);
240 extern __inline __m256i
241 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
242 _mm512_cvtusepi16_epi8 (__m512i __A)
244 __v32qi __O;
245 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A, __O,
246 (__mmask32) -1);
249 extern __inline __m256i
250 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
251 _mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A)
253 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
254 (__v32qi) __O,
255 __M);
258 extern __inline __m256i
259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260 _mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A)
262 return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
263 (__v32qi)
264 _mm256_setzero_si256 (),
265 __M);
268 extern __inline __m512i
269 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
270 _mm512_broadcastb_epi8 (__m128i __A)
272 __v64qi __O;
273 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
274 __O,
275 (__mmask64) -
279 extern __inline __m512i
280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
281 _mm512_mask_broadcastb_epi8 (__m512i __O, __mmask64 __M, __m128i __A)
283 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
284 (__v64qi) __O,
285 __M);
288 extern __inline __m512i
289 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
290 _mm512_maskz_broadcastb_epi8 (__mmask64 __M, __m128i __A)
292 return (__m512i) __builtin_ia32_pbroadcastb512_mask ((__v16qi) __A,
293 (__v64qi)
294 _mm512_setzero_si512 (),
295 __M);
298 extern __inline __m512i
299 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
300 _mm512_mask_set1_epi8 (__m512i __O, __mmask64 __M, char __A)
302 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
303 (__v64qi) __O,
304 __M);
307 extern __inline __m512i
308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
309 _mm512_maskz_set1_epi8 (__mmask64 __M, char __A)
311 return (__m512i) __builtin_ia32_pbroadcastb512_gpr_mask (__A,
312 (__v64qi)
313 _mm512_setzero_si512 (),
314 __M);
317 extern __inline __m512i
318 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
319 _mm512_broadcastw_epi16 (__m128i __A)
321 __v32hi __O;
322 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
323 __O,
324 (__mmask32) -
328 extern __inline __m512i
329 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
330 _mm512_mask_broadcastw_epi16 (__m512i __O, __mmask32 __M, __m128i __A)
332 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
333 (__v32hi) __O,
334 __M);
337 extern __inline __m512i
338 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
339 _mm512_maskz_broadcastw_epi16 (__mmask32 __M, __m128i __A)
341 return (__m512i) __builtin_ia32_pbroadcastw512_mask ((__v8hi) __A,
342 (__v32hi)
343 _mm512_setzero_si512 (),
344 __M);
347 extern __inline __m512i
348 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
349 _mm512_mask_set1_epi16 (__m512i __O, __mmask32 __M, short __A)
351 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
352 (__v32hi) __O,
353 __M);
356 extern __inline __m512i
357 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
358 _mm512_maskz_set1_epi16 (__mmask32 __M, short __A)
360 return (__m512i) __builtin_ia32_pbroadcastw512_gpr_mask (__A,
361 (__v32hi)
362 _mm512_setzero_si512 (),
363 __M);
366 extern __inline __m512i
367 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
368 _mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
370 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
371 (__v32hi) __B,
372 (__v32hi)
373 _mm512_setzero_hi (),
374 (__mmask32) -1);
377 extern __inline __m512i
378 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
379 _mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
380 __m512i __B)
382 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
383 (__v32hi) __B,
384 (__v32hi) __W,
385 (__mmask32) __U);
388 extern __inline __m512i
389 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
390 _mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
392 return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
393 (__v32hi) __B,
394 (__v32hi)
395 _mm512_setzero_hi (),
396 (__mmask32) __U);
399 extern __inline __m512i
400 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
401 _mm512_mulhi_epi16 (__m512i __A, __m512i __B)
403 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
404 (__v32hi) __B,
405 (__v32hi)
406 _mm512_setzero_hi (),
407 (__mmask32) -1);
410 extern __inline __m512i
411 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
412 _mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
413 __m512i __B)
415 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
416 (__v32hi) __B,
417 (__v32hi) __W,
418 (__mmask32) __U);
421 extern __inline __m512i
422 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
423 _mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
425 return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
426 (__v32hi) __B,
427 (__v32hi)
428 _mm512_setzero_hi (),
429 (__mmask32) __U);
432 extern __inline __m512i
433 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
434 _mm512_mulhi_epu16 (__m512i __A, __m512i __B)
436 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
437 (__v32hi) __B,
438 (__v32hi)
439 _mm512_setzero_hi (),
440 (__mmask32) -1);
443 extern __inline __m512i
444 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
445 _mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
446 __m512i __B)
448 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
449 (__v32hi) __B,
450 (__v32hi) __W,
451 (__mmask32) __U);
454 extern __inline __m512i
455 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
456 _mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
458 return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
459 (__v32hi) __B,
460 (__v32hi)
461 _mm512_setzero_hi (),
462 (__mmask32) __U);
465 extern __inline __m512i
466 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
467 _mm512_mullo_epi16 (__m512i __A, __m512i __B)
469 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
470 (__v32hi) __B,
471 (__v32hi)
472 _mm512_setzero_hi (),
473 (__mmask32) -1);
476 extern __inline __m512i
477 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
478 _mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
479 __m512i __B)
481 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
482 (__v32hi) __B,
483 (__v32hi) __W,
484 (__mmask32) __U);
487 extern __inline __m512i
488 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
489 _mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
491 return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
492 (__v32hi) __B,
493 (__v32hi)
494 _mm512_setzero_hi (),
495 (__mmask32) __U);
498 extern __inline __m512i
499 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
500 _mm512_cvtepi8_epi16 (__m256i __A)
502 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
503 (__v32hi)
504 _mm512_setzero_hi (),
505 (__mmask32) -1);
508 extern __inline __m512i
509 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
510 _mm512_mask_cvtepi8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
512 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
513 (__v32hi) __W,
514 (__mmask32) __U);
517 extern __inline __m512i
518 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
519 _mm512_maskz_cvtepi8_epi16 (__mmask32 __U, __m256i __A)
521 return (__m512i) __builtin_ia32_pmovsxbw512_mask ((__v32qi) __A,
522 (__v32hi)
523 _mm512_setzero_si512 (),
524 (__mmask32) __U);
527 extern __inline __m512i
528 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
529 _mm512_cvtepu8_epi16 (__m256i __A)
531 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
532 (__v32hi)
533 _mm512_setzero_hi (),
534 (__mmask32) -1);
537 extern __inline __m512i
538 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
539 _mm512_mask_cvtepu8_epi16 (__m512i __W, __mmask32 __U, __m256i __A)
541 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
542 (__v32hi) __W,
543 (__mmask32) __U);
546 extern __inline __m512i
547 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
548 _mm512_maskz_cvtepu8_epi16 (__mmask32 __U, __m256i __A)
550 return (__m512i) __builtin_ia32_pmovzxbw512_mask ((__v32qi) __A,
551 (__v32hi)
552 _mm512_setzero_si512 (),
553 (__mmask32) __U);
556 extern __inline __m512i
557 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
558 _mm512_permutexvar_epi16 (__m512i __A, __m512i __B)
560 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A,
561 (__v32hi) __B,
562 (__v32hi)
563 _mm512_setzero_hi (),
564 (__mmask32) -1);
567 extern __inline __m512i
568 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
569 _mm512_maskz_permutexvar_epi16 (__mmask32 __M, __m512i __A,
570 __m512i __B)
572 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A,
573 (__v32hi) __B,
574 (__v32hi)
575 _mm512_setzero_si512 (),
576 (__mmask32) __M);
579 extern __inline __m512i
580 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
581 _mm512_mask_permutexvar_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
582 __m512i __B)
584 return (__m512i) __builtin_ia32_permvarhi512_mask ((__v32hi) __A,
585 (__v32hi) __B,
586 (__v32hi) __W,
587 (__mmask32) __M);
590 extern __inline __m512i
591 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
592 _mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
594 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
595 /* idx */ ,
596 (__v32hi) __A,
597 (__v32hi) __B,
598 (__mmask32) -
602 extern __inline __m512i
603 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
604 _mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
605 __m512i __I, __m512i __B)
607 return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I
608 /* idx */ ,
609 (__v32hi) __A,
610 (__v32hi) __B,
611 (__mmask32)
612 __U);
615 extern __inline __m512i
616 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
617 _mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
618 __mmask32 __U, __m512i __B)
620 return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
621 (__v32hi) __I
622 /* idx */ ,
623 (__v32hi) __B,
624 (__mmask32)
625 __U);
628 extern __inline __m512i
629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
630 _mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
631 __m512i __I, __m512i __B)
633 return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
634 /* idx */ ,
635 (__v32hi) __A,
636 (__v32hi) __B,
637 (__mmask32)
638 __U);
641 extern __inline __m512i
642 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
643 _mm512_avg_epu8 (__m512i __A, __m512i __B)
645 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
646 (__v64qi) __B,
647 (__v64qi)
648 _mm512_setzero_qi (),
649 (__mmask64) -1);
652 extern __inline __m512i
653 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
654 _mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
655 __m512i __B)
657 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
658 (__v64qi) __B,
659 (__v64qi) __W,
660 (__mmask64) __U);
663 extern __inline __m512i
664 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
665 _mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
667 return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
668 (__v64qi) __B,
669 (__v64qi)
670 _mm512_setzero_si512 (),
671 (__mmask64) __U);
674 extern __inline __m512i
675 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
676 _mm512_add_epi8 (__m512i __A, __m512i __B)
678 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
679 (__v64qi) __B,
680 (__v64qi)
681 _mm512_setzero_qi (),
682 (__mmask64) -1);
685 extern __inline __m512i
686 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
687 _mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
688 __m512i __B)
690 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
691 (__v64qi) __B,
692 (__v64qi) __W,
693 (__mmask64) __U);
696 extern __inline __m512i
697 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
698 _mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
700 return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
701 (__v64qi) __B,
702 (__v64qi)
703 _mm512_setzero_qi (),
704 (__mmask64) __U);
707 extern __inline __m512i
708 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
709 _mm512_sub_epi8 (__m512i __A, __m512i __B)
711 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
712 (__v64qi) __B,
713 (__v64qi)
714 _mm512_setzero_qi (),
715 (__mmask64) -1);
718 extern __inline __m512i
719 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
720 _mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
721 __m512i __B)
723 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
724 (__v64qi) __B,
725 (__v64qi) __W,
726 (__mmask64) __U);
729 extern __inline __m512i
730 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
731 _mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
733 return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
734 (__v64qi) __B,
735 (__v64qi)
736 _mm512_setzero_qi (),
737 (__mmask64) __U);
740 extern __inline __m512i
741 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
742 _mm512_avg_epu16 (__m512i __A, __m512i __B)
744 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
745 (__v32hi) __B,
746 (__v32hi)
747 _mm512_setzero_hi (),
748 (__mmask32) -1);
751 extern __inline __m512i
752 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
753 _mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
754 __m512i __B)
756 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
757 (__v32hi) __B,
758 (__v32hi) __W,
759 (__mmask32) __U);
762 extern __inline __m512i
763 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
764 _mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
766 return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
767 (__v32hi) __B,
768 (__v32hi)
769 _mm512_setzero_si512 (),
770 (__mmask32) __U);
773 extern __inline __m512i
774 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
775 _mm512_subs_epi8 (__m512i __A, __m512i __B)
777 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
778 (__v64qi) __B,
779 (__v64qi)
780 _mm512_setzero_qi (),
781 (__mmask64) -1);
784 extern __inline __m512i
785 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
786 _mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
787 __m512i __B)
789 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
790 (__v64qi) __B,
791 (__v64qi) __W,
792 (__mmask64) __U);
795 extern __inline __m512i
796 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
797 _mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
799 return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
800 (__v64qi) __B,
801 (__v64qi)
802 _mm512_setzero_qi (),
803 (__mmask64) __U);
806 extern __inline __m512i
807 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
808 _mm512_subs_epu8 (__m512i __A, __m512i __B)
810 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
811 (__v64qi) __B,
812 (__v64qi)
813 _mm512_setzero_qi (),
814 (__mmask64) -1);
817 extern __inline __m512i
818 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
819 _mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
820 __m512i __B)
822 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
823 (__v64qi) __B,
824 (__v64qi) __W,
825 (__mmask64) __U);
828 extern __inline __m512i
829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
830 _mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
832 return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
833 (__v64qi) __B,
834 (__v64qi)
835 _mm512_setzero_qi (),
836 (__mmask64) __U);
839 extern __inline __m512i
840 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
841 _mm512_adds_epi8 (__m512i __A, __m512i __B)
843 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
844 (__v64qi) __B,
845 (__v64qi)
846 _mm512_setzero_qi (),
847 (__mmask64) -1);
850 extern __inline __m512i
851 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
852 _mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
853 __m512i __B)
855 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
856 (__v64qi) __B,
857 (__v64qi) __W,
858 (__mmask64) __U);
861 extern __inline __m512i
862 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
863 _mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
865 return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
866 (__v64qi) __B,
867 (__v64qi)
868 _mm512_setzero_qi (),
869 (__mmask64) __U);
872 extern __inline __m512i
873 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
874 _mm512_adds_epu8 (__m512i __A, __m512i __B)
876 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
877 (__v64qi) __B,
878 (__v64qi)
879 _mm512_setzero_qi (),
880 (__mmask64) -1);
883 extern __inline __m512i
884 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
885 _mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
886 __m512i __B)
888 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
889 (__v64qi) __B,
890 (__v64qi) __W,
891 (__mmask64) __U);
894 extern __inline __m512i
895 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
896 _mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
898 return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
899 (__v64qi) __B,
900 (__v64qi)
901 _mm512_setzero_qi (),
902 (__mmask64) __U);
905 extern __inline __m512i
906 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
907 _mm512_sub_epi16 (__m512i __A, __m512i __B)
909 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
910 (__v32hi) __B,
911 (__v32hi)
912 _mm512_setzero_hi (),
913 (__mmask32) -1);
916 extern __inline __m512i
917 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
918 _mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
919 __m512i __B)
921 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
922 (__v32hi) __B,
923 (__v32hi) __W,
924 (__mmask32) __U);
927 extern __inline __m512i
928 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
929 _mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
931 return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
932 (__v32hi) __B,
933 (__v32hi)
934 _mm512_setzero_hi (),
935 (__mmask32) __U);
938 extern __inline __m512i
939 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
940 _mm512_subs_epi16 (__m512i __A, __m512i __B)
942 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
943 (__v32hi) __B,
944 (__v32hi)
945 _mm512_setzero_hi (),
946 (__mmask32) -1);
949 extern __inline __m512i
950 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
951 _mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
952 __m512i __B)
954 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
955 (__v32hi) __B,
956 (__v32hi) __W,
957 (__mmask32) __U);
960 extern __inline __m512i
961 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
962 _mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
964 return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
965 (__v32hi) __B,
966 (__v32hi)
967 _mm512_setzero_hi (),
968 (__mmask32) __U);
971 extern __inline __m512i
972 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
973 _mm512_subs_epu16 (__m512i __A, __m512i __B)
975 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
976 (__v32hi) __B,
977 (__v32hi)
978 _mm512_setzero_hi (),
979 (__mmask32) -1);
982 extern __inline __m512i
983 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
984 _mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
985 __m512i __B)
987 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
988 (__v32hi) __B,
989 (__v32hi) __W,
990 (__mmask32) __U);
993 extern __inline __m512i
994 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
995 _mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
997 return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
998 (__v32hi) __B,
999 (__v32hi)
1000 _mm512_setzero_hi (),
1001 (__mmask32) __U);
1004 extern __inline __m512i
1005 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1006 _mm512_add_epi16 (__m512i __A, __m512i __B)
1008 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1009 (__v32hi) __B,
1010 (__v32hi)
1011 _mm512_setzero_hi (),
1012 (__mmask32) -1);
1015 extern __inline __m512i
1016 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1017 _mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1018 __m512i __B)
1020 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1021 (__v32hi) __B,
1022 (__v32hi) __W,
1023 (__mmask32) __U);
1026 extern __inline __m512i
1027 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1028 _mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1030 return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
1031 (__v32hi) __B,
1032 (__v32hi)
1033 _mm512_setzero_hi (),
1034 (__mmask32) __U);
1037 extern __inline __m512i
1038 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1039 _mm512_adds_epi16 (__m512i __A, __m512i __B)
1041 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1042 (__v32hi) __B,
1043 (__v32hi)
1044 _mm512_setzero_hi (),
1045 (__mmask32) -1);
1048 extern __inline __m512i
1049 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1050 _mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1051 __m512i __B)
1053 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1054 (__v32hi) __B,
1055 (__v32hi) __W,
1056 (__mmask32) __U);
1059 extern __inline __m512i
1060 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1061 _mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1063 return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
1064 (__v32hi) __B,
1065 (__v32hi)
1066 _mm512_setzero_hi (),
1067 (__mmask32) __U);
1070 extern __inline __m512i
1071 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1072 _mm512_adds_epu16 (__m512i __A, __m512i __B)
1074 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1075 (__v32hi) __B,
1076 (__v32hi)
1077 _mm512_setzero_hi (),
1078 (__mmask32) -1);
1081 extern __inline __m512i
1082 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1083 _mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1084 __m512i __B)
1086 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1087 (__v32hi) __B,
1088 (__v32hi) __W,
1089 (__mmask32) __U);
1092 extern __inline __m512i
1093 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1094 _mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1096 return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
1097 (__v32hi) __B,
1098 (__v32hi)
1099 _mm512_setzero_hi (),
1100 (__mmask32) __U);
1103 extern __inline __m512i
1104 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1105 _mm512_srl_epi16 (__m512i __A, __m128i __B)
1107 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1108 (__v8hi) __B,
1109 (__v32hi)
1110 _mm512_setzero_hi (),
1111 (__mmask32) -1);
1114 extern __inline __m512i
1115 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1116 _mm512_mask_srl_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1117 __m128i __B)
1119 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1120 (__v8hi) __B,
1121 (__v32hi) __W,
1122 (__mmask32) __U);
1125 extern __inline __m512i
1126 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1127 _mm512_maskz_srl_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1129 return (__m512i) __builtin_ia32_psrlw512_mask ((__v32hi) __A,
1130 (__v8hi) __B,
1131 (__v32hi)
1132 _mm512_setzero_hi (),
1133 (__mmask32) __U);
1136 extern __inline __m512i
1137 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1138 _mm512_packs_epi16 (__m512i __A, __m512i __B)
1140 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1141 (__v32hi) __B,
1142 (__v64qi)
1143 _mm512_setzero_qi (),
1144 (__mmask64) -1);
1147 extern __inline __m512i
1148 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1149 _mm512_sll_epi16 (__m512i __A, __m128i __B)
1151 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1152 (__v8hi) __B,
1153 (__v32hi)
1154 _mm512_setzero_hi (),
1155 (__mmask32) -1);
1158 extern __inline __m512i
1159 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1160 _mm512_mask_sll_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1161 __m128i __B)
1163 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1164 (__v8hi) __B,
1165 (__v32hi) __W,
1166 (__mmask32) __U);
1169 extern __inline __m512i
1170 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1171 _mm512_maskz_sll_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1173 return (__m512i) __builtin_ia32_psllw512_mask ((__v32hi) __A,
1174 (__v8hi) __B,
1175 (__v32hi)
1176 _mm512_setzero_hi (),
1177 (__mmask32) __U);
1180 extern __inline __m512i
1181 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1182 _mm512_maddubs_epi16 (__m512i __X, __m512i __Y)
1184 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1185 (__v64qi) __Y,
1186 (__v32hi)
1187 _mm512_setzero_hi (),
1188 (__mmask32) -1);
1191 extern __inline __m512i
1192 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1193 _mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1194 __m512i __Y)
1196 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1197 (__v64qi) __Y,
1198 (__v32hi) __W,
1199 (__mmask32) __U);
1202 extern __inline __m512i
1203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1204 _mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y)
1206 return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1207 (__v64qi) __Y,
1208 (__v32hi)
1209 _mm512_setzero_hi (),
1210 (__mmask32) __U);
1213 extern __inline __m512i
1214 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1215 _mm512_madd_epi16 (__m512i __A, __m512i __B)
1217 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1218 (__v32hi) __B,
1219 (__v16si)
1220 _mm512_setzero_si512 (),
1221 (__mmask16) -1);
1224 extern __inline __m512i
1225 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1226 _mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1227 __m512i __B)
1229 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1230 (__v32hi) __B,
1231 (__v16si) __W,
1232 (__mmask16) __U);
1235 extern __inline __m512i
1236 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1237 _mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B)
1239 return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1240 (__v32hi) __B,
1241 (__v16si)
1242 _mm512_setzero_si512 (),
1243 (__mmask16) __U);
1246 extern __inline __m512i
1247 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1248 _mm512_unpackhi_epi8 (__m512i __A, __m512i __B)
1250 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1251 (__v64qi) __B,
1252 (__v64qi)
1253 _mm512_setzero_qi (),
1254 (__mmask64) -1);
1257 extern __inline __m512i
1258 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1259 _mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1260 __m512i __B)
1262 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1263 (__v64qi) __B,
1264 (__v64qi) __W,
1265 (__mmask64) __U);
1268 extern __inline __m512i
1269 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1270 _mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1272 return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1273 (__v64qi) __B,
1274 (__v64qi)
1275 _mm512_setzero_si512 (),
1276 (__mmask64) __U);
1279 extern __inline __m512i
1280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1281 _mm512_unpackhi_epi16 (__m512i __A, __m512i __B)
1283 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1284 (__v32hi) __B,
1285 (__v32hi)
1286 _mm512_setzero_hi (),
1287 (__mmask32) -1);
1290 extern __inline __m512i
1291 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1292 _mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1293 __m512i __B)
1295 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1296 (__v32hi) __B,
1297 (__v32hi) __W,
1298 (__mmask32) __U);
1301 extern __inline __m512i
1302 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1303 _mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1305 return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1306 (__v32hi) __B,
1307 (__v32hi)
1308 _mm512_setzero_si512 (),
1309 (__mmask32) __U);
1312 extern __inline __m512i
1313 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1314 _mm512_unpacklo_epi8 (__m512i __A, __m512i __B)
1316 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1317 (__v64qi) __B,
1318 (__v64qi)
1319 _mm512_setzero_qi (),
1320 (__mmask64) -1);
1323 extern __inline __m512i
1324 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1325 _mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1326 __m512i __B)
1328 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1329 (__v64qi) __B,
1330 (__v64qi) __W,
1331 (__mmask64) __U);
1334 extern __inline __m512i
1335 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1336 _mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1338 return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1339 (__v64qi) __B,
1340 (__v64qi)
1341 _mm512_setzero_si512 (),
1342 (__mmask64) __U);
1345 extern __inline __m512i
1346 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1347 _mm512_unpacklo_epi16 (__m512i __A, __m512i __B)
1349 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1350 (__v32hi) __B,
1351 (__v32hi)
1352 _mm512_setzero_hi (),
1353 (__mmask32) -1);
1356 extern __inline __m512i
1357 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1358 _mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1359 __m512i __B)
1361 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1362 (__v32hi) __B,
1363 (__v32hi) __W,
1364 (__mmask32) __U);
1367 extern __inline __m512i
1368 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1369 _mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1371 return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1372 (__v32hi) __B,
1373 (__v32hi)
1374 _mm512_setzero_si512 (),
1375 (__mmask32) __U);
1378 extern __inline __mmask64
1379 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1380 _mm512_cmpeq_epi8_mask (__m512i __A, __m512i __B)
1382 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1383 (__v64qi) __B,
1384 (__mmask64) -1);
1387 extern __inline __mmask64
1388 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1389 _mm512_mask_cmpeq_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1391 return (__mmask64) __builtin_ia32_pcmpeqb512_mask ((__v64qi) __A,
1392 (__v64qi) __B,
1393 __U);
1396 extern __inline __mmask32
1397 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1398 _mm512_cmpeq_epi16_mask (__m512i __A, __m512i __B)
1400 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1401 (__v32hi) __B,
1402 (__mmask32) -1);
1405 extern __inline __mmask32
1406 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1407 _mm512_mask_cmpeq_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1409 return (__mmask32) __builtin_ia32_pcmpeqw512_mask ((__v32hi) __A,
1410 (__v32hi) __B,
1411 __U);
1414 extern __inline __mmask64
1415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1416 _mm512_cmpgt_epi8_mask (__m512i __A, __m512i __B)
1418 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1419 (__v64qi) __B,
1420 (__mmask64) -1);
1423 extern __inline __mmask64
1424 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1425 _mm512_mask_cmpgt_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1427 return (__mmask64) __builtin_ia32_pcmpgtb512_mask ((__v64qi) __A,
1428 (__v64qi) __B,
1429 __U);
1432 extern __inline __mmask32
1433 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1434 _mm512_cmpgt_epi16_mask (__m512i __A, __m512i __B)
1436 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1437 (__v32hi) __B,
1438 (__mmask32) -1);
1441 extern __inline __mmask32
1442 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1443 _mm512_mask_cmpgt_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1445 return (__mmask32) __builtin_ia32_pcmpgtw512_mask ((__v32hi) __A,
1446 (__v32hi) __B,
1447 __U);
1450 extern __inline __mmask64
1451 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1452 _mm512_movepi8_mask (__m512i __A)
1454 return (__mmask64) __builtin_ia32_cvtb2mask512 ((__v64qi) __A);
1457 extern __inline __mmask32
1458 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1459 _mm512_movepi16_mask (__m512i __A)
1461 return (__mmask32) __builtin_ia32_cvtw2mask512 ((__v32hi) __A);
1464 extern __inline __m512i
1465 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1466 _mm512_movm_epi8 (__mmask64 __A)
1468 return (__m512i) __builtin_ia32_cvtmask2b512 (__A);
1471 extern __inline __m512i
1472 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1473 _mm512_movm_epi16 (__mmask32 __A)
1475 return (__m512i) __builtin_ia32_cvtmask2w512 (__A);
1478 extern __inline __mmask64
1479 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1480 _mm512_test_epi8_mask (__m512i __A, __m512i __B)
1482 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1483 (__v64qi) __B,
1484 (__mmask64) -1);
1487 extern __inline __mmask64
1488 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1489 _mm512_mask_test_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1491 return (__mmask64) __builtin_ia32_ptestmb512 ((__v64qi) __A,
1492 (__v64qi) __B, __U);
1495 extern __inline __mmask32
1496 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1497 _mm512_test_epi16_mask (__m512i __A, __m512i __B)
1499 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1500 (__v32hi) __B,
1501 (__mmask32) -1);
1504 extern __inline __mmask32
1505 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1506 _mm512_mask_test_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1508 return (__mmask32) __builtin_ia32_ptestmw512 ((__v32hi) __A,
1509 (__v32hi) __B, __U);
1512 extern __inline __mmask64
1513 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1514 _mm512_testn_epi8_mask (__m512i __A, __m512i __B)
1516 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1517 (__v64qi) __B,
1518 (__mmask64) -1);
1521 extern __inline __mmask64
1522 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1523 _mm512_mask_testn_epi8_mask (__mmask64 __U, __m512i __A, __m512i __B)
1525 return (__mmask64) __builtin_ia32_ptestnmb512 ((__v64qi) __A,
1526 (__v64qi) __B, __U);
1529 extern __inline __mmask32
1530 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1531 _mm512_testn_epi16_mask (__m512i __A, __m512i __B)
1533 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1534 (__v32hi) __B,
1535 (__mmask32) -1);
1538 extern __inline __mmask32
1539 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1540 _mm512_mask_testn_epi16_mask (__mmask32 __U, __m512i __A, __m512i __B)
1542 return (__mmask32) __builtin_ia32_ptestnmw512 ((__v32hi) __A,
1543 (__v32hi) __B, __U);
1546 extern __inline __m512i
1547 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1548 _mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1550 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1551 (__v64qi) __B,
1552 (__v64qi)
1553 _mm512_setzero_qi (),
1554 (__mmask64) -1);
1557 extern __inline __m512i
1558 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1559 _mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1560 __m512i __B)
1562 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1563 (__v64qi) __B,
1564 (__v64qi) __W,
1565 (__mmask64) __U);
1568 extern __inline __m512i
1569 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1570 _mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1572 return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1573 (__v64qi) __B,
1574 (__v64qi)
1575 _mm512_setzero_qi (),
1576 (__mmask64) __U);
1579 extern __inline __m512i
1580 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1581 _mm512_min_epu16 (__m512i __A, __m512i __B)
1583 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1584 (__v32hi) __B,
1585 (__v32hi)
1586 _mm512_setzero_hi (),
1587 (__mmask32) -1);
1590 extern __inline __m512i
1591 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1592 _mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1594 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1595 (__v32hi) __B,
1596 (__v32hi)
1597 _mm512_setzero_si512 (),
1598 (__mmask32) __M);
1601 extern __inline __m512i
1602 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1603 _mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1604 __m512i __B)
1606 return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1607 (__v32hi) __B,
1608 (__v32hi) __W,
1609 (__mmask32) __M);
1612 extern __inline __m512i
1613 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1614 _mm512_min_epi16 (__m512i __A, __m512i __B)
1616 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1617 (__v32hi) __B,
1618 (__v32hi)
1619 _mm512_setzero_hi (),
1620 (__mmask32) -1);
1623 extern __inline __m512i
1624 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1625 _mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1627 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1628 (__v32hi) __B,
1629 (__v32hi)
1630 _mm512_setzero_si512 (),
1631 (__mmask32) __M);
1634 extern __inline __m512i
1635 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1636 _mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1637 __m512i __B)
1639 return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
1640 (__v32hi) __B,
1641 (__v32hi) __W,
1642 (__mmask32) __M);
1645 extern __inline __m512i
1646 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1647 _mm512_max_epu8 (__m512i __A, __m512i __B)
1649 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1650 (__v64qi) __B,
1651 (__v64qi)
1652 _mm512_setzero_qi (),
1653 (__mmask64) -1);
1656 extern __inline __m512i
1657 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1658 _mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1660 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1661 (__v64qi) __B,
1662 (__v64qi)
1663 _mm512_setzero_si512 (),
1664 (__mmask64) __M);
1667 extern __inline __m512i
1668 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1669 _mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1670 __m512i __B)
1672 return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
1673 (__v64qi) __B,
1674 (__v64qi) __W,
1675 (__mmask64) __M);
1678 extern __inline __m512i
1679 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1680 _mm512_max_epi8 (__m512i __A, __m512i __B)
1682 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1683 (__v64qi) __B,
1684 (__v64qi)
1685 _mm512_setzero_qi (),
1686 (__mmask64) -1);
1689 extern __inline __m512i
1690 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1691 _mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1693 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1694 (__v64qi) __B,
1695 (__v64qi)
1696 _mm512_setzero_si512 (),
1697 (__mmask64) __M);
1700 extern __inline __m512i
1701 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1702 _mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1703 __m512i __B)
1705 return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
1706 (__v64qi) __B,
1707 (__v64qi) __W,
1708 (__mmask64) __M);
1711 extern __inline __m512i
1712 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1713 _mm512_min_epu8 (__m512i __A, __m512i __B)
1715 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1716 (__v64qi) __B,
1717 (__v64qi)
1718 _mm512_setzero_qi (),
1719 (__mmask64) -1);
1722 extern __inline __m512i
1723 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1724 _mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
1726 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1727 (__v64qi) __B,
1728 (__v64qi)
1729 _mm512_setzero_si512 (),
1730 (__mmask64) __M);
1733 extern __inline __m512i
1734 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1735 _mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
1736 __m512i __B)
1738 return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
1739 (__v64qi) __B,
1740 (__v64qi) __W,
1741 (__mmask64) __M);
1744 extern __inline __m512i
1745 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1746 _mm512_min_epi8 (__m512i __A, __m512i __B)
1748 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1749 (__v64qi) __B,
1750 (__v64qi)
1751 _mm512_setzero_qi (),
1752 (__mmask64) -1);
1755 extern __inline __m512i
1756 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1757 _mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
1759 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1760 (__v64qi) __B,
1761 (__v64qi)
1762 _mm512_setzero_si512 (),
1763 (__mmask64) __M);
1766 extern __inline __m512i
1767 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1768 _mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
1769 __m512i __B)
1771 return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
1772 (__v64qi) __B,
1773 (__v64qi) __W,
1774 (__mmask64) __M);
1777 extern __inline __m512i
1778 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1779 _mm512_max_epi16 (__m512i __A, __m512i __B)
1781 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1782 (__v32hi) __B,
1783 (__v32hi)
1784 _mm512_setzero_hi (),
1785 (__mmask32) -1);
1788 extern __inline __m512i
1789 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1790 _mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
1792 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1793 (__v32hi) __B,
1794 (__v32hi)
1795 _mm512_setzero_si512 (),
1796 (__mmask32) __M);
1799 extern __inline __m512i
1800 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1801 _mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
1802 __m512i __B)
1804 return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
1805 (__v32hi) __B,
1806 (__v32hi) __W,
1807 (__mmask32) __M);
1810 extern __inline __m512i
1811 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1812 _mm512_max_epu16 (__m512i __A, __m512i __B)
1814 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1815 (__v32hi) __B,
1816 (__v32hi)
1817 _mm512_setzero_hi (),
1818 (__mmask32) -1);
1821 extern __inline __m512i
1822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1823 _mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1825 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1826 (__v32hi) __B,
1827 (__v32hi)
1828 _mm512_setzero_si512 (),
1829 (__mmask32) __M);
1832 extern __inline __m512i
1833 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1834 _mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1835 __m512i __B)
1837 return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
1838 (__v32hi) __B,
1839 (__v32hi) __W,
1840 (__mmask32) __M);
1843 extern __inline __m512i
1844 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1845 _mm512_sra_epi16 (__m512i __A, __m128i __B)
1847 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1848 (__v8hi) __B,
1849 (__v32hi)
1850 _mm512_setzero_hi (),
1851 (__mmask32) -1);
1854 extern __inline __m512i
1855 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1856 _mm512_mask_sra_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1857 __m128i __B)
1859 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1860 (__v8hi) __B,
1861 (__v32hi) __W,
1862 (__mmask32) __U);
1865 extern __inline __m512i
1866 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1867 _mm512_maskz_sra_epi16 (__mmask32 __U, __m512i __A, __m128i __B)
1869 return (__m512i) __builtin_ia32_psraw512_mask ((__v32hi) __A,
1870 (__v8hi) __B,
1871 (__v32hi)
1872 _mm512_setzero_hi (),
1873 (__mmask32) __U);
1876 extern __inline __m512i
1877 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1878 _mm512_srav_epi16 (__m512i __A, __m512i __B)
1880 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1881 (__v32hi) __B,
1882 (__v32hi)
1883 _mm512_setzero_hi (),
1884 (__mmask32) -1);
1887 extern __inline __m512i
1888 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1889 _mm512_mask_srav_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1890 __m512i __B)
1892 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1893 (__v32hi) __B,
1894 (__v32hi) __W,
1895 (__mmask32) __U);
1898 extern __inline __m512i
1899 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1900 _mm512_maskz_srav_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1902 return (__m512i) __builtin_ia32_psrav32hi_mask ((__v32hi) __A,
1903 (__v32hi) __B,
1904 (__v32hi)
1905 _mm512_setzero_hi (),
1906 (__mmask32) __U);
1909 extern __inline __m512i
1910 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1911 _mm512_srlv_epi16 (__m512i __A, __m512i __B)
1913 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1914 (__v32hi) __B,
1915 (__v32hi)
1916 _mm512_setzero_hi (),
1917 (__mmask32) -1);
1920 extern __inline __m512i
1921 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1922 _mm512_mask_srlv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1923 __m512i __B)
1925 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1926 (__v32hi) __B,
1927 (__v32hi) __W,
1928 (__mmask32) __U);
1931 extern __inline __m512i
1932 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1933 _mm512_maskz_srlv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1935 return (__m512i) __builtin_ia32_psrlv32hi_mask ((__v32hi) __A,
1936 (__v32hi) __B,
1937 (__v32hi)
1938 _mm512_setzero_hi (),
1939 (__mmask32) __U);
1942 extern __inline __m512i
1943 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1944 _mm512_sllv_epi16 (__m512i __A, __m512i __B)
1946 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1947 (__v32hi) __B,
1948 (__v32hi)
1949 _mm512_setzero_hi (),
1950 (__mmask32) -1);
1953 extern __inline __m512i
1954 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1955 _mm512_mask_sllv_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1956 __m512i __B)
1958 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1959 (__v32hi) __B,
1960 (__v32hi) __W,
1961 (__mmask32) __U);
1964 extern __inline __m512i
1965 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1966 _mm512_maskz_sllv_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1968 return (__m512i) __builtin_ia32_psllv32hi_mask ((__v32hi) __A,
1969 (__v32hi) __B,
1970 (__v32hi)
1971 _mm512_setzero_hi (),
1972 (__mmask32) __U);
1975 extern __inline __m512i
1976 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1977 _mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
1978 __m512i __B)
1980 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1981 (__v32hi) __B,
1982 (__v64qi) __W,
1983 (__mmask64) __M);
1986 extern __inline __m512i
1987 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1988 _mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
1990 return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
1991 (__v32hi) __B,
1992 (__v64qi)
1993 _mm512_setzero_si512 (),
1994 __M);
1997 extern __inline __m512i
1998 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
1999 _mm512_packus_epi16 (__m512i __A, __m512i __B)
2001 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2002 (__v32hi) __B,
2003 (__v64qi)
2004 _mm512_setzero_qi (),
2005 (__mmask64) -1);
2008 extern __inline __m512i
2009 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2010 _mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
2011 __m512i __B)
2013 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2014 (__v32hi) __B,
2015 (__v64qi) __W,
2016 (__mmask64) __M);
2019 extern __inline __m512i
2020 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2021 _mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
2023 return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
2024 (__v32hi) __B,
2025 (__v64qi)
2026 _mm512_setzero_si512 (),
2027 (__mmask64) __M);
2030 extern __inline __m512i
2031 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2032 _mm512_abs_epi8 (__m512i __A)
2034 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2035 (__v64qi)
2036 _mm512_setzero_qi (),
2037 (__mmask64) -1);
2040 extern __inline __m512i
2041 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2042 _mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
2044 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2045 (__v64qi) __W,
2046 (__mmask64) __U);
2049 extern __inline __m512i
2050 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2051 _mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
2053 return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
2054 (__v64qi)
2055 _mm512_setzero_qi (),
2056 (__mmask64) __U);
2059 extern __inline __m512i
2060 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2061 _mm512_abs_epi16 (__m512i __A)
2063 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2064 (__v32hi)
2065 _mm512_setzero_hi (),
2066 (__mmask32) -1);
2069 extern __inline __m512i
2070 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2071 _mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
2073 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2074 (__v32hi) __W,
2075 (__mmask32) __U);
2078 extern __inline __m512i
2079 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2080 _mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
2082 return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
2083 (__v32hi)
2084 _mm512_setzero_hi (),
2085 (__mmask32) __U);
2088 #ifdef __OPTIMIZE__
2089 extern __inline __m512i
2090 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2091 _mm512_alignr_epi8 (__m512i __A, __m512i __B, const int __N)
2093 return (__m512i) __builtin_ia32_palignr512 ((__v8di) __A,
2094 (__v8di) __B, __N * 8);
2097 extern __inline __m512i
2098 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2099 _mm512_mask_alignr_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
2100 __m512i __B, const int __N)
2102 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2103 (__v8di) __B,
2104 __N * 8,
2105 (__v8di) __W,
2106 (__mmask64) __U);
2109 extern __inline __m512i
2110 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2111 _mm512_maskz_alignr_epi8 (__mmask64 __U, __m512i __A, __m512i __B,
2112 const int __N)
2114 return (__m512i) __builtin_ia32_palignr512_mask ((__v8di) __A,
2115 (__v8di) __B,
2116 __N * 8,
2117 (__v8di)
2118 _mm512_setzero_si512 (),
2119 (__mmask64) __U);
2122 extern __inline __m512i
2123 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2124 _mm512_dbsad_epu8 (__m512i __A, __m512i __B, const int __imm)
2126 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2127 (__v64qi) __B,
2128 __imm,
2129 (__v32hi)
2130 _mm512_setzero_hi (),
2131 (__mmask32) -1);
2134 extern __inline __m512i
2135 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2136 _mm512_mask_dbsad_epu8 (__m512i __W, __mmask32 __U, __m512i __A,
2137 __m512i __B, const int __imm)
2139 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2140 (__v64qi) __B,
2141 __imm,
2142 (__v32hi) __W,
2143 (__mmask32) __U);
2146 extern __inline __m512i
2147 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2148 _mm512_maskz_dbsad_epu8 (__mmask32 __U, __m512i __A, __m512i __B,
2149 const int __imm)
2151 return (__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi) __A,
2152 (__v64qi) __B,
2153 __imm,
2154 (__v32hi)
2155 _mm512_setzero_si512 (),
2156 (__mmask32) __U);
2159 extern __inline __m512i
2160 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2161 _mm512_srli_epi16 (__m512i __A, const int __imm)
2163 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2164 (__v32hi)
2165 _mm512_setzero_hi (),
2166 (__mmask32) -1);
2169 extern __inline __m512i
2170 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2171 _mm512_mask_srli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2172 const int __imm)
2174 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2175 (__v32hi) __W,
2176 (__mmask32) __U);
2179 extern __inline __m512i
2180 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2181 _mm512_maskz_srli_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2183 return (__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi) __A, __imm,
2184 (__v32hi)
2185 _mm512_setzero_hi (),
2186 (__mmask32) __U);
2189 extern __inline __m512i
2190 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2191 _mm512_slli_epi16 (__m512i __A, const int __B)
2193 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2194 (__v32hi)
2195 _mm512_setzero_hi (),
2196 (__mmask32) -1);
2199 extern __inline __m512i
2200 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2201 _mm512_mask_slli_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2202 const int __B)
2204 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2205 (__v32hi) __W,
2206 (__mmask32) __U);
2209 extern __inline __m512i
2210 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2211 _mm512_maskz_slli_epi16 (__mmask32 __U, __m512i __A, const int __B)
2213 return (__m512i) __builtin_ia32_psllwi512_mask ((__v32hi) __A, __B,
2214 (__v32hi)
2215 _mm512_setzero_hi (),
2216 (__mmask32) __U);
2219 extern __inline __m512i
2220 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2221 _mm512_shufflehi_epi16 (__m512i __A, const int __imm)
2223 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2224 __imm,
2225 (__v32hi)
2226 _mm512_setzero_hi (),
2227 (__mmask32) -1);
2230 extern __inline __m512i
2231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2232 _mm512_mask_shufflehi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2233 const int __imm)
2235 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2236 __imm,
2237 (__v32hi) __W,
2238 (__mmask32) __U);
2241 extern __inline __m512i
2242 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2243 _mm512_maskz_shufflehi_epi16 (__mmask32 __U, __m512i __A,
2244 const int __imm)
2246 return (__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi) __A,
2247 __imm,
2248 (__v32hi)
2249 _mm512_setzero_hi (),
2250 (__mmask32) __U);
2253 extern __inline __m512i
2254 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2255 _mm512_shufflelo_epi16 (__m512i __A, const int __imm)
2257 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2258 __imm,
2259 (__v32hi)
2260 _mm512_setzero_hi (),
2261 (__mmask32) -1);
2264 extern __inline __m512i
2265 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2266 _mm512_mask_shufflelo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2267 const int __imm)
2269 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2270 __imm,
2271 (__v32hi) __W,
2272 (__mmask32) __U);
2275 extern __inline __m512i
2276 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2277 _mm512_maskz_shufflelo_epi16 (__mmask32 __U, __m512i __A,
2278 const int __imm)
2280 return (__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi) __A,
2281 __imm,
2282 (__v32hi)
2283 _mm512_setzero_hi (),
2284 (__mmask32) __U);
2287 extern __inline __m512i
2288 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2289 _mm512_srai_epi16 (__m512i __A, const int __imm)
2291 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2292 (__v32hi)
2293 _mm512_setzero_hi (),
2294 (__mmask32) -1);
2297 extern __inline __m512i
2298 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2299 _mm512_mask_srai_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
2300 const int __imm)
2302 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2303 (__v32hi) __W,
2304 (__mmask32) __U);
2307 extern __inline __m512i
2308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2309 _mm512_maskz_srai_epi16 (__mmask32 __U, __m512i __A, const int __imm)
2311 return (__m512i) __builtin_ia32_psrawi512_mask ((__v32hi) __A, __imm,
2312 (__v32hi)
2313 _mm512_setzero_hi (),
2314 (__mmask32) __U);
2317 extern __inline __m512i
2318 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2319 _mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
2321 return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
2322 (__v32hi) __W,
2323 (__mmask32) __U);
2326 extern __inline __m512i
2327 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2328 _mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
2330 return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
2331 (__v64qi) __W,
2332 (__mmask64) __U);
2335 extern __inline __mmask32
2336 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2337 _mm512_mask_cmp_epi16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2338 const int __P)
2340 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2341 (__v32hi) __Y, __P,
2342 (__mmask32) __U);
2345 extern __inline __mmask32
2346 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2347 _mm512_cmp_epi16_mask (__m512i __X, __m512i __Y, const int __P)
2349 return (__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi) __X,
2350 (__v32hi) __Y, __P,
2351 (__mmask32) -1);
2354 extern __inline __mmask64
2355 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2356 _mm512_mask_cmp_epi8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2357 const int __P)
2359 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2360 (__v64qi) __Y, __P,
2361 (__mmask64) __U);
2364 extern __inline __mmask64
2365 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2366 _mm512_cmp_epi8_mask (__m512i __X, __m512i __Y, const int __P)
2368 return (__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi) __X,
2369 (__v64qi) __Y, __P,
2370 (__mmask64) -1);
2373 extern __inline __mmask32
2374 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2375 _mm512_mask_cmp_epu16_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2376 const int __P)
2378 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2379 (__v32hi) __Y, __P,
2380 (__mmask32) __U);
2383 extern __inline __mmask32
2384 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2385 _mm512_cmp_epu16_mask (__m512i __X, __m512i __Y, const int __P)
2387 return (__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi) __X,
2388 (__v32hi) __Y, __P,
2389 (__mmask32) -1);
2392 extern __inline __mmask64
2393 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2394 _mm512_mask_cmp_epu8_mask (__mmask32 __U, __m512i __X, __m512i __Y,
2395 const int __P)
2397 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2398 (__v64qi) __Y, __P,
2399 (__mmask64) __U);
2402 extern __inline __mmask64
2403 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2404 _mm512_cmp_epu8_mask (__m512i __X, __m512i __Y, const int __P)
2406 return (__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi) __X,
2407 (__v64qi) __Y, __P,
2408 (__mmask64) -1);
2411 extern __inline __m512i
2412 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2413 _mm512_packs_epi32 (__m512i __A, __m512i __B)
2415 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2416 (__v16si) __B,
2417 (__v32hi)
2418 _mm512_setzero_hi (),
2419 (__mmask32) -1);
2422 extern __inline __m512i
2423 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2424 _mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2426 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2427 (__v16si) __B,
2428 (__v32hi)
2429 _mm512_setzero_si512 (),
2430 __M);
2433 extern __inline __m512i
2434 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2435 _mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2436 __m512i __B)
2438 return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
2439 (__v16si) __B,
2440 (__v32hi) __W,
2441 __M);
2444 extern __inline __m512i
2445 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2446 _mm512_packus_epi32 (__m512i __A, __m512i __B)
2448 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2449 (__v16si) __B,
2450 (__v32hi)
2451 _mm512_setzero_hi (),
2452 (__mmask32) -1);
2455 extern __inline __m512i
2456 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2457 _mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
2459 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2460 (__v16si) __B,
2461 (__v32hi)
2462 _mm512_setzero_si512 (),
2463 __M);
2466 extern __inline __m512i
2467 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2468 _mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
2469 __m512i __B)
2471 return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
2472 (__v16si) __B,
2473 (__v32hi) __W,
2474 __M);
2477 extern __inline __m512i
2478 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2479 _mm512_bslli_epi128 (__m512i __A, const int __N)
2481 return (__m512i) __builtin_ia32_pslldq512 (__A, __N * 8);
2484 extern __inline __m512i
2485 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
2486 _mm512_bsrli_epi128 (__m512i __A, const int __N)
2488 return (__m512i) __builtin_ia32_psrldq512 (__A, __N * 8);
2491 #else
2492 #define _mm512_alignr_epi8(X, Y, N) \
2493 ((__m512i) __builtin_ia32_palignr512 ((__v8di)(__m512i)(X), \
2494 (__v8di)(__m512i)(Y), \
2495 (int)(N * 8)))
2497 #define _mm512_mask_alignr_epi8(W, U, X, Y, N) \
2498 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2499 (__v8di)(__m512i)(Y), (int)(N * 8), \
2500 (__v8di)(__m512i)(X), (__mmask64)(U)))
2502 #define _mm512_maskz_alignr_epi8(U, X, Y, N) \
2503 ((__m512i) __builtin_ia32_palignr512_mask ((__v8di)(__m512i)(X), \
2504 (__v8di)(__m512i)(Y), (int)(N * 8), \
2505 (__v8di)(__m512i)_mm512_setzero_si512 (), \
2506 (__mmask64)(U)))
2508 #define _mm512_dbsad_epu8(X, Y, C) \
2509 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2510 (__v64qi)(__m512i) (Y), (int) (C), \
2511 (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2512 (__mmask32)-1))
2514 #define _mm512_mask_dbsad_epu8(W, U, X, Y, C) \
2515 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2516 (__v64qi)(__m512i) (Y), (int) (C), \
2517 (__v32hi)(__m512i)(W), \
2518 (__mmask32)(U)))
2520 #define _mm512_maskz_dbsad_epu8(U, X, Y, C) \
2521 ((__m512i) __builtin_ia32_dbpsadbw512_mask ((__v64qi)(__m512i) (X), \
2522 (__v64qi)(__m512i) (Y), (int) (C), \
2523 (__v32hi)(__m512i)_mm512_setzero_si512 (),\
2524 (__mmask32)(U)))
2526 #define _mm512_srli_epi16(A, B) \
2527 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2528 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2530 #define _mm512_mask_srli_epi16(W, U, A, B) \
2531 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2532 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2534 #define _mm512_maskz_srli_epi16(U, A, B) \
2535 ((__m512i) __builtin_ia32_psrlwi512_mask ((__v32hi)(__m512i)(A), \
2536 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2538 #define _mm512_slli_epi16(X, C) \
2539 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2540 (__v32hi)(__m512i)_mm512_setzero_hi(),\
2541 (__mmask32)-1))
2543 #define _mm512_mask_slli_epi16(W, U, X, C) \
2544 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2545 (__v32hi)(__m512i)(W),\
2546 (__mmask32)(U)))
2548 #define _mm512_maskz_slli_epi16(U, X, C) \
2549 ((__m512i)__builtin_ia32_psllwi512_mask ((__v32hi)(__m512i)(X), (int)(C),\
2550 (__v32hi)(__m512i)_mm512_setzero_hi(),\
2551 (__mmask32)(U)))
2553 #define _mm512_shufflehi_epi16(A, B) \
2554 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2555 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2556 (__mmask32)-1))
2558 #define _mm512_mask_shufflehi_epi16(W, U, A, B) \
2559 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2560 (__v32hi)(__m512i)(W), \
2561 (__mmask32)(U)))
2563 #define _mm512_maskz_shufflehi_epi16(U, A, B) \
2564 ((__m512i) __builtin_ia32_pshufhw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2565 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2566 (__mmask32)(U)))
2568 #define _mm512_shufflelo_epi16(A, B) \
2569 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2570 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2571 (__mmask32)-1))
2573 #define _mm512_mask_shufflelo_epi16(W, U, A, B) \
2574 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2575 (__v32hi)(__m512i)(W), \
2576 (__mmask32)(U)))
2578 #define _mm512_maskz_shufflelo_epi16(U, A, B) \
2579 ((__m512i) __builtin_ia32_pshuflw512_mask ((__v32hi)(__m512i)(A), (int)(B), \
2580 (__v32hi)(__m512i)_mm512_setzero_hi(), \
2581 (__mmask32)(U)))
2583 #define _mm512_srai_epi16(A, B) \
2584 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2585 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)-1))
2587 #define _mm512_mask_srai_epi16(W, U, A, B) \
2588 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2589 (int)(B), (__v32hi)(__m512i)(W), (__mmask32)(U)))
2591 #define _mm512_maskz_srai_epi16(U, A, B) \
2592 ((__m512i) __builtin_ia32_psrawi512_mask ((__v32hi)(__m512i)(A), \
2593 (int)(B), (__v32hi)_mm512_setzero_hi(), (__mmask32)(U)))
2595 #define _mm512_mask_blend_epi16(__U, __A, __W) \
2596 ((__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) (__A), \
2597 (__v32hi) (__W), \
2598 (__mmask32) (__U)))
2600 #define _mm512_mask_blend_epi8(__U, __A, __W) \
2601 ((__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) (__A), \
2602 (__v64qi) (__W), \
2603 (__mmask64) (__U)))
2605 #define _mm512_cmp_epi16_mask(X, Y, P) \
2606 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2607 (__v32hi)(__m512i)(Y), (int)(P),\
2608 (__mmask32)(-1)))
2610 #define _mm512_cmp_epi8_mask(X, Y, P) \
2611 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2612 (__v64qi)(__m512i)(Y), (int)(P),\
2613 (__mmask64)(-1)))
2615 #define _mm512_cmp_epu16_mask(X, Y, P) \
2616 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2617 (__v32hi)(__m512i)(Y), (int)(P),\
2618 (__mmask32)(-1)))
2620 #define _mm512_cmp_epu8_mask(X, Y, P) \
2621 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2622 (__v64qi)(__m512i)(Y), (int)(P),\
2623 (__mmask64)(-1)))
2625 #define _mm512_mask_cmp_epi16_mask(M, X, Y, P) \
2626 ((__mmask32) __builtin_ia32_cmpw512_mask ((__v32hi)(__m512i)(X), \
2627 (__v32hi)(__m512i)(Y), (int)(P),\
2628 (__mmask32)(M)))
2630 #define _mm512_mask_cmp_epi8_mask(M, X, Y, P) \
2631 ((__mmask64) __builtin_ia32_cmpb512_mask ((__v64qi)(__m512i)(X), \
2632 (__v64qi)(__m512i)(Y), (int)(P),\
2633 (__mmask64)(M)))
2635 #define _mm512_mask_cmp_epu16_mask(M, X, Y, P) \
2636 ((__mmask32) __builtin_ia32_ucmpw512_mask ((__v32hi)(__m512i)(X), \
2637 (__v32hi)(__m512i)(Y), (int)(P),\
2638 (__mmask32)(M)))
2640 #define _mm512_mask_cmp_epu8_mask(M, X, Y, P) \
2641 ((__mmask64) __builtin_ia32_ucmpb512_mask ((__v64qi)(__m512i)(X), \
2642 (__v64qi)(__m512i)(Y), (int)(P),\
2643 (__mmask64)(M)))
2645 #define _mm512_bslli_epi128(A, N) \
2646 ((__m512i)__builtin_ia32_pslldq512 ((__m512i)(A), (int)(N) * 8))
2648 #define _mm512_bsrli_epi128(A, N) \
2649 ((__m512i)__builtin_ia32_psrldq512 ((__m512i)(A), (int)(N) * 8))
2651 #endif
2653 #ifdef __DISABLE_AVX512BW__
2654 #undef __DISABLE_AVX512BW__
2655 #pragma GCC pop_options
2656 #endif /* __DISABLE_AVX512BW__ */
2658 #endif /* _AVX512BWINTRIN_H_INCLUDED */