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