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