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