File Coverage

/usr/lib/gcc/x86_64-linux-gnu/13/include/avx512bwintrin.h
Criterion Covered Total %
statement 0 3 0.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 0 3 0.0


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