avx512bwintrin.h revision 288943
1/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2 *
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 *
22 *===-----------------------------------------------------------------------===
23 */
24#ifndef __IMMINTRIN_H
25#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
26#endif
27
28#ifndef __AVX512BWINTRIN_H
29#define __AVX512BWINTRIN_H
30
31typedef unsigned int __mmask32;
32typedef unsigned long long __mmask64;
33typedef char __v64qi __attribute__ ((__vector_size__ (64)));
34typedef short __v32hi __attribute__ ((__vector_size__ (64)));
35
36/* Define the default attributes for the functions in this file. */
37#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
38
39static  __inline __v64qi __DEFAULT_FN_ATTRS
40_mm512_setzero_qi (void) {
41  return (__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
42                       0, 0, 0, 0, 0, 0, 0, 0,
43                       0, 0, 0, 0, 0, 0, 0, 0,
44                       0, 0, 0, 0, 0, 0, 0, 0,
45                       0, 0, 0, 0, 0, 0, 0, 0,
46                       0, 0, 0, 0, 0, 0, 0, 0,
47                       0, 0, 0, 0, 0, 0, 0, 0,
48                       0, 0, 0, 0, 0, 0, 0, 0 };
49}
50
51static  __inline __v32hi __DEFAULT_FN_ATTRS
52_mm512_setzero_hi (void) {
53  return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
54                       0, 0, 0, 0, 0, 0, 0, 0,
55                       0, 0, 0, 0, 0, 0, 0, 0,
56                       0, 0, 0, 0, 0, 0, 0, 0 };
57}
58
59/* Integer compare */
60
61static __inline__ __mmask64 __DEFAULT_FN_ATTRS
62_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
63  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
64                                                   (__mmask64)-1);
65}
66
67static __inline__ __mmask64 __DEFAULT_FN_ATTRS
68_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
69  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
70                                                   __u);
71}
72
73static __inline__ __mmask64 __DEFAULT_FN_ATTRS
74_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
75  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
76                                                 (__mmask64)-1);
77}
78
79static __inline__ __mmask64 __DEFAULT_FN_ATTRS
80_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
81  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
82                                                 __u);
83}
84
85static __inline__ __mmask32 __DEFAULT_FN_ATTRS
86_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
87  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
88                                                   (__mmask32)-1);
89}
90
91static __inline__ __mmask32 __DEFAULT_FN_ATTRS
92_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
93  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
94                                                   __u);
95}
96
97static __inline__ __mmask32 __DEFAULT_FN_ATTRS
98_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
99  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
100                                                 (__mmask32)-1);
101}
102
103static __inline__ __mmask32 __DEFAULT_FN_ATTRS
104_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
105  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
106                                                 __u);
107}
108
109static __inline__ __mmask64 __DEFAULT_FN_ATTRS
110_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
111  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
112                                                (__mmask64)-1);
113}
114
115static __inline__ __mmask64 __DEFAULT_FN_ATTRS
116_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
117  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
118                                                __u);
119}
120
121static __inline__ __mmask64 __DEFAULT_FN_ATTRS
122_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
123  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
124                                                 (__mmask64)-1);
125}
126
127static __inline__ __mmask64 __DEFAULT_FN_ATTRS
128_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
129  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
130                                                 __u);
131}
132
133static __inline__ __mmask32 __DEFAULT_FN_ATTRS
134_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
135  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
136                                                (__mmask32)-1);
137}
138
139static __inline__ __mmask32 __DEFAULT_FN_ATTRS
140_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
141  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
142                                                __u);
143}
144
145static __inline__ __mmask32 __DEFAULT_FN_ATTRS
146_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
147  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
148                                                 (__mmask32)-1);
149}
150
151static __inline__ __mmask32 __DEFAULT_FN_ATTRS
152_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
153  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
154                                                 __u);
155}
156
157static __inline__ __mmask64 __DEFAULT_FN_ATTRS
158_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
159  return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
160                                                   (__mmask64)-1);
161}
162
163static __inline__ __mmask64 __DEFAULT_FN_ATTRS
164_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
165  return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
166                                                   __u);
167}
168
169static __inline__ __mmask64 __DEFAULT_FN_ATTRS
170_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
171  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
172                                                 (__mmask64)-1);
173}
174
175static __inline__ __mmask64 __DEFAULT_FN_ATTRS
176_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
177  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
178                                                 __u);
179}
180
181static __inline__ __mmask32 __DEFAULT_FN_ATTRS
182_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
183  return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
184                                                   (__mmask32)-1);
185}
186
187static __inline__ __mmask32 __DEFAULT_FN_ATTRS
188_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
189  return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
190                                                   __u);
191}
192
193static __inline__ __mmask32 __DEFAULT_FN_ATTRS
194_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
195  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
196                                                 (__mmask32)-1);
197}
198
199static __inline__ __mmask32 __DEFAULT_FN_ATTRS
200_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
201  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
202                                                 __u);
203}
204
205static __inline__ __mmask64 __DEFAULT_FN_ATTRS
206_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
207  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
208                                                (__mmask64)-1);
209}
210
211static __inline__ __mmask64 __DEFAULT_FN_ATTRS
212_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
213  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
214                                                __u);
215}
216
217static __inline__ __mmask64 __DEFAULT_FN_ATTRS
218_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
219  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
220                                                 (__mmask64)-1);
221}
222
223static __inline__ __mmask64 __DEFAULT_FN_ATTRS
224_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
225  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
226                                                 __u);
227}
228
229static __inline__ __mmask32 __DEFAULT_FN_ATTRS
230_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
231  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
232                                                (__mmask32)-1);
233}
234
235static __inline__ __mmask32 __DEFAULT_FN_ATTRS
236_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
237  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
238                                                __u);
239}
240
241static __inline__ __mmask32 __DEFAULT_FN_ATTRS
242_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
243  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
244                                                 (__mmask32)-1);
245}
246
247static __inline__ __mmask32 __DEFAULT_FN_ATTRS
248_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
249  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
250                                                 __u);
251}
252
253static __inline__ __mmask64 __DEFAULT_FN_ATTRS
254_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
255  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
256                                                (__mmask64)-1);
257}
258
259static __inline__ __mmask64 __DEFAULT_FN_ATTRS
260_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
261  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
262                                                __u);
263}
264
265static __inline__ __mmask64 __DEFAULT_FN_ATTRS
266_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
267  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
268                                                 (__mmask64)-1);
269}
270
271static __inline__ __mmask64 __DEFAULT_FN_ATTRS
272_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
273  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
274                                                 __u);
275}
276
277static __inline__ __mmask32 __DEFAULT_FN_ATTRS
278_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
279  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
280                                                (__mmask32)-1);
281}
282
283static __inline__ __mmask32 __DEFAULT_FN_ATTRS
284_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
285  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
286                                                __u);
287}
288
289static __inline__ __mmask32 __DEFAULT_FN_ATTRS
290_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
291  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
292                                                 (__mmask32)-1);
293}
294
295static __inline__ __mmask32 __DEFAULT_FN_ATTRS
296_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
297  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
298                                                 __u);
299}
300
301static __inline__ __mmask64 __DEFAULT_FN_ATTRS
302_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
303  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
304                                                (__mmask64)-1);
305}
306
307static __inline__ __mmask64 __DEFAULT_FN_ATTRS
308_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
309  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
310                                                __u);
311}
312
313static __inline__ __mmask64 __DEFAULT_FN_ATTRS
314_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
315  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
316                                                 (__mmask64)-1);
317}
318
319static __inline__ __mmask64 __DEFAULT_FN_ATTRS
320_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
321  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
322                                                 __u);
323}
324
325static __inline__ __mmask32 __DEFAULT_FN_ATTRS
326_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
327  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
328                                                (__mmask32)-1);
329}
330
331static __inline__ __mmask32 __DEFAULT_FN_ATTRS
332_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
333  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
334                                                __u);
335}
336
337static __inline__ __mmask32 __DEFAULT_FN_ATTRS
338_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
339  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
340                                                 (__mmask32)-1);
341}
342
343static __inline__ __mmask32 __DEFAULT_FN_ATTRS
344_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
345  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
346                                                 __u);
347}
348
349static __inline__ __m512i __DEFAULT_FN_ATTRS
350_mm512_add_epi8 (__m512i __A, __m512i __B) {
351  return (__m512i) ((__v64qi) __A + (__v64qi) __B);
352}
353
354static __inline__ __m512i __DEFAULT_FN_ATTRS
355_mm512_mask_add_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
356  return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
357             (__v64qi) __B,
358             (__v64qi) __W,
359             (__mmask64) __U);
360}
361
362static __inline__ __m512i __DEFAULT_FN_ATTRS
363_mm512_maskz_add_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
364  return (__m512i) __builtin_ia32_paddb512_mask ((__v64qi) __A,
365             (__v64qi) __B,
366             (__v64qi)
367             _mm512_setzero_qi (),
368             (__mmask64) __U);
369}
370
371static __inline__ __m512i __DEFAULT_FN_ATTRS
372_mm512_sub_epi8 (__m512i __A, __m512i __B) {
373  return (__m512i) ((__v64qi) __A - (__v64qi) __B);
374}
375
376static __inline__ __m512i __DEFAULT_FN_ATTRS
377_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
378  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
379             (__v64qi) __B,
380             (__v64qi) __W,
381             (__mmask64) __U);
382}
383
384static __inline__ __m512i __DEFAULT_FN_ATTRS
385_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
386  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
387             (__v64qi) __B,
388             (__v64qi)
389             _mm512_setzero_qi (),
390             (__mmask64) __U);
391}
392
393static __inline__ __m512i __DEFAULT_FN_ATTRS
394_mm512_add_epi16 (__m512i __A, __m512i __B) {
395  return (__m512i) ((__v32hi) __A + (__v32hi) __B);
396}
397
398static __inline__ __m512i __DEFAULT_FN_ATTRS
399_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
400  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
401             (__v32hi) __B,
402             (__v32hi) __W,
403             (__mmask32) __U);
404}
405
406static __inline__ __m512i __DEFAULT_FN_ATTRS
407_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
408  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
409             (__v32hi) __B,
410             (__v32hi)
411             _mm512_setzero_hi (),
412             (__mmask32) __U);
413}
414
415static __inline__ __m512i __DEFAULT_FN_ATTRS
416_mm512_sub_epi16 (__m512i __A, __m512i __B) {
417  return (__m512i) ((__v32hi) __A - (__v32hi) __B);
418}
419
420static __inline__ __m512i __DEFAULT_FN_ATTRS
421_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
422  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
423             (__v32hi) __B,
424             (__v32hi) __W,
425             (__mmask32) __U);
426}
427
428static __inline__ __m512i __DEFAULT_FN_ATTRS
429_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
430  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
431             (__v32hi) __B,
432             (__v32hi)
433             _mm512_setzero_hi (),
434             (__mmask32) __U);
435}
436
437static __inline__ __m512i __DEFAULT_FN_ATTRS
438_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
439  return (__m512i) ((__v32hi) __A * (__v32hi) __B);
440}
441
442static __inline__ __m512i __DEFAULT_FN_ATTRS
443_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
444  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
445              (__v32hi) __B,
446              (__v32hi) __W,
447              (__mmask32) __U);
448}
449
450static __inline__ __m512i __DEFAULT_FN_ATTRS
451_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
452  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
453              (__v32hi) __B,
454              (__v32hi)
455              _mm512_setzero_hi (),
456              (__mmask32) __U);
457}
458
459static __inline__ __m512i __DEFAULT_FN_ATTRS
460_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
461{
462  return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
463              (__v64qi) __W,
464              (__mmask64) __U);
465}
466
467static __inline__ __m512i __DEFAULT_FN_ATTRS
468_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
469{
470  return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
471              (__v32hi) __W,
472              (__mmask32) __U);
473}
474
475static __inline__ __m512i __DEFAULT_FN_ATTRS
476_mm512_abs_epi8 (__m512i __A)
477{
478  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
479              (__v64qi) _mm512_setzero_qi (),
480              (__mmask64) -1);
481}
482
483static __inline__ __m512i __DEFAULT_FN_ATTRS
484_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
485{
486  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
487              (__v64qi) __W,
488              (__mmask64) __U);
489}
490
491static __inline__ __m512i __DEFAULT_FN_ATTRS
492_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
493{
494  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
495              (__v64qi) _mm512_setzero_qi (),
496              (__mmask64) __U);
497}
498
499static __inline__ __m512i __DEFAULT_FN_ATTRS
500_mm512_abs_epi16 (__m512i __A)
501{
502  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
503              (__v32hi) _mm512_setzero_hi (),
504              (__mmask32) -1);
505}
506
507static __inline__ __m512i __DEFAULT_FN_ATTRS
508_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
509{
510  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
511              (__v32hi) __W,
512              (__mmask32) __U);
513}
514
515static __inline__ __m512i __DEFAULT_FN_ATTRS
516_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
517{
518  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
519              (__v32hi) _mm512_setzero_hi (),
520              (__mmask32) __U);
521}
522
523static __inline__ __m512i __DEFAULT_FN_ATTRS
524_mm512_packs_epi32 (__m512i __A, __m512i __B)
525{
526  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
527              (__v16si) __B,
528              (__v32hi) _mm512_setzero_hi (),
529              (__mmask32) -1);
530}
531
532static __inline__ __m512i __DEFAULT_FN_ATTRS
533_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
534{
535  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
536              (__v16si) __B,
537              (__v32hi) _mm512_setzero_hi(),
538              __M);
539}
540
541static __inline__ __m512i __DEFAULT_FN_ATTRS
542_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
543       __m512i __B)
544{
545  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
546              (__v16si) __B,
547              (__v32hi) __W,
548              __M);
549}
550
551static __inline__ __m512i __DEFAULT_FN_ATTRS
552_mm512_packs_epi16 (__m512i __A, __m512i __B)
553{
554  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
555              (__v32hi) __B,
556              (__v64qi) _mm512_setzero_qi (),
557              (__mmask64) -1);
558}
559
560static __inline__ __m512i __DEFAULT_FN_ATTRS
561_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
562       __m512i __B)
563{
564  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
565              (__v32hi) __B,
566              (__v64qi) __W,
567              (__mmask64) __M);
568}
569
570static __inline__ __m512i __DEFAULT_FN_ATTRS
571_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
572{
573  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
574              (__v32hi) __B,
575              (__v64qi) _mm512_setzero_qi(),
576              __M);
577}
578
579static __inline__ __m512i __DEFAULT_FN_ATTRS
580_mm512_packus_epi32 (__m512i __A, __m512i __B)
581{
582  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
583              (__v16si) __B,
584              (__v32hi) _mm512_setzero_hi (),
585              (__mmask32) -1);
586}
587
588static __inline__ __m512i __DEFAULT_FN_ATTRS
589_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
590{
591  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
592              (__v16si) __B,
593              (__v32hi) _mm512_setzero_hi(),
594              __M);
595}
596
597static __inline__ __m512i __DEFAULT_FN_ATTRS
598_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
599        __m512i __B)
600{
601  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
602              (__v16si) __B,
603              (__v32hi) __W,
604              __M);
605}
606
607static __inline__ __m512i __DEFAULT_FN_ATTRS
608_mm512_packus_epi16 (__m512i __A, __m512i __B)
609{
610  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
611              (__v32hi) __B,
612              (__v64qi) _mm512_setzero_qi (),
613              (__mmask64) -1);
614}
615
616static __inline__ __m512i __DEFAULT_FN_ATTRS
617_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
618        __m512i __B)
619{
620  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
621              (__v32hi) __B,
622              (__v64qi) __W,
623              (__mmask64) __M);
624}
625
626static __inline__ __m512i __DEFAULT_FN_ATTRS
627_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
628{
629  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
630              (__v32hi) __B,
631              (__v64qi) _mm512_setzero_qi(),
632              (__mmask64) __M);
633}
634
635static __inline__ __m512i __DEFAULT_FN_ATTRS
636_mm512_adds_epi8 (__m512i __A, __m512i __B)
637{
638  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
639              (__v64qi) __B,
640              (__v64qi) _mm512_setzero_qi (),
641              (__mmask64) -1);
642}
643
644static __inline__ __m512i __DEFAULT_FN_ATTRS
645_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
646           __m512i __B)
647{
648  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
649              (__v64qi) __B,
650              (__v64qi) __W,
651              (__mmask64) __U);
652}
653
654static __inline__ __m512i __DEFAULT_FN_ATTRS
655_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
656{
657  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
658              (__v64qi) __B,
659              (__v64qi) _mm512_setzero_qi (),
660              (__mmask64) __U);
661}
662
663static __inline__ __m512i __DEFAULT_FN_ATTRS
664_mm512_adds_epi16 (__m512i __A, __m512i __B)
665{
666  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
667              (__v32hi) __B,
668              (__v32hi) _mm512_setzero_hi (),
669              (__mmask32) -1);
670}
671
672static __inline__ __m512i __DEFAULT_FN_ATTRS
673_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
674      __m512i __B)
675{
676  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
677              (__v32hi) __B,
678              (__v32hi) __W,
679              (__mmask32) __U);
680}
681
682static __inline__ __m512i __DEFAULT_FN_ATTRS
683_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
684{
685  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
686              (__v32hi) __B,
687              (__v32hi) _mm512_setzero_hi (),
688              (__mmask32) __U);
689}
690
691static __inline__ __m512i __DEFAULT_FN_ATTRS
692_mm512_adds_epu8 (__m512i __A, __m512i __B)
693{
694  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
695              (__v64qi) __B,
696              (__v64qi) _mm512_setzero_qi (),
697              (__mmask64) -1);
698}
699
700static __inline__ __m512i __DEFAULT_FN_ATTRS
701_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
702           __m512i __B)
703{
704  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
705              (__v64qi) __B,
706              (__v64qi) __W,
707              (__mmask64) __U);
708}
709
710static __inline__ __m512i __DEFAULT_FN_ATTRS
711_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
712{
713  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
714              (__v64qi) __B,
715              (__v64qi) _mm512_setzero_qi (),
716              (__mmask64) __U);
717}
718
719static __inline__ __m512i __DEFAULT_FN_ATTRS
720_mm512_adds_epu16 (__m512i __A, __m512i __B)
721{
722  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
723              (__v32hi) __B,
724              (__v32hi) _mm512_setzero_hi (),
725              (__mmask32) -1);
726}
727
728static __inline__ __m512i __DEFAULT_FN_ATTRS
729_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
730      __m512i __B)
731{
732  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
733              (__v32hi) __B,
734              (__v32hi) __W,
735              (__mmask32) __U);
736}
737
738static __inline__ __m512i __DEFAULT_FN_ATTRS
739_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
740{
741  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
742              (__v32hi) __B,
743              (__v32hi) _mm512_setzero_hi (),
744              (__mmask32) __U);
745}
746
747static __inline__ __m512i __DEFAULT_FN_ATTRS
748_mm512_avg_epu8 (__m512i __A, __m512i __B)
749{
750  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
751              (__v64qi) __B,
752              (__v64qi) _mm512_setzero_qi (),
753              (__mmask64) -1);
754}
755
756static __inline__ __m512i __DEFAULT_FN_ATTRS
757_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
758          __m512i __B)
759{
760  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
761              (__v64qi) __B,
762              (__v64qi) __W,
763              (__mmask64) __U);
764}
765
766static __inline__ __m512i __DEFAULT_FN_ATTRS
767_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
768{
769  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
770              (__v64qi) __B,
771              (__v64qi) _mm512_setzero_qi(),
772              (__mmask64) __U);
773}
774
775static __inline__ __m512i __DEFAULT_FN_ATTRS
776_mm512_avg_epu16 (__m512i __A, __m512i __B)
777{
778  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
779              (__v32hi) __B,
780              (__v32hi) _mm512_setzero_hi (),
781              (__mmask32) -1);
782}
783
784static __inline__ __m512i __DEFAULT_FN_ATTRS
785_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
786           __m512i __B)
787{
788  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
789              (__v32hi) __B,
790              (__v32hi) __W,
791              (__mmask32) __U);
792}
793
794static __inline__ __m512i __DEFAULT_FN_ATTRS
795_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
796{
797  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
798              (__v32hi) __B,
799              (__v32hi) _mm512_setzero_hi(),
800              (__mmask32) __U);
801}
802
803static __inline__ __m512i __DEFAULT_FN_ATTRS
804_mm512_max_epi8 (__m512i __A, __m512i __B)
805{
806  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
807              (__v64qi) __B,
808              (__v64qi) _mm512_setzero_qi (),
809              (__mmask64) -1);
810}
811
812static __inline__ __m512i __DEFAULT_FN_ATTRS
813_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
814{
815  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
816              (__v64qi) __B,
817              (__v64qi) _mm512_setzero_qi(),
818              (__mmask64) __M);
819}
820
821static __inline__ __m512i __DEFAULT_FN_ATTRS
822_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
823          __m512i __B)
824{
825  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
826              (__v64qi) __B,
827              (__v64qi) __W,
828              (__mmask64) __M);
829}
830
831static __inline__ __m512i __DEFAULT_FN_ATTRS
832_mm512_max_epi16 (__m512i __A, __m512i __B)
833{
834  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
835              (__v32hi) __B,
836              (__v32hi) _mm512_setzero_hi (),
837              (__mmask32) -1);
838}
839
840static __inline__ __m512i __DEFAULT_FN_ATTRS
841_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
842{
843  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
844              (__v32hi) __B,
845              (__v32hi) _mm512_setzero_hi(),
846              (__mmask32) __M);
847}
848
849static __inline__ __m512i __DEFAULT_FN_ATTRS
850_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
851           __m512i __B)
852{
853  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
854              (__v32hi) __B,
855              (__v32hi) __W,
856              (__mmask32) __M);
857}
858
859static __inline__ __m512i __DEFAULT_FN_ATTRS
860_mm512_max_epu8 (__m512i __A, __m512i __B)
861{
862  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
863              (__v64qi) __B,
864              (__v64qi) _mm512_setzero_qi (),
865              (__mmask64) -1);
866}
867
868static __inline__ __m512i __DEFAULT_FN_ATTRS
869_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
870{
871  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
872              (__v64qi) __B,
873              (__v64qi) _mm512_setzero_qi(),
874              (__mmask64) __M);
875}
876
877static __inline__ __m512i __DEFAULT_FN_ATTRS
878_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
879          __m512i __B)
880{
881  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
882              (__v64qi) __B,
883              (__v64qi) __W,
884              (__mmask64) __M);
885}
886
887static __inline__ __m512i __DEFAULT_FN_ATTRS
888_mm512_max_epu16 (__m512i __A, __m512i __B)
889{
890  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
891              (__v32hi) __B,
892              (__v32hi) _mm512_setzero_hi (),
893              (__mmask32) -1);
894}
895
896static __inline__ __m512i __DEFAULT_FN_ATTRS
897_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
898{
899  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
900              (__v32hi) __B,
901              (__v32hi) _mm512_setzero_hi(),
902              (__mmask32) __M);
903}
904
905static __inline__ __m512i __DEFAULT_FN_ATTRS
906_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
907           __m512i __B)
908{
909  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
910              (__v32hi) __B,
911              (__v32hi) __W,
912              (__mmask32) __M);
913}
914
915static __inline__ __m512i __DEFAULT_FN_ATTRS
916_mm512_min_epi8 (__m512i __A, __m512i __B)
917{
918  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
919              (__v64qi) __B,
920              (__v64qi) _mm512_setzero_qi (),
921              (__mmask64) -1);
922}
923
924static __inline__ __m512i __DEFAULT_FN_ATTRS
925_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
926{
927  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
928              (__v64qi) __B,
929              (__v64qi) _mm512_setzero_qi(),
930              (__mmask64) __M);
931}
932
933static __inline__ __m512i __DEFAULT_FN_ATTRS
934_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
935          __m512i __B)
936{
937  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
938              (__v64qi) __B,
939              (__v64qi) __W,
940              (__mmask64) __M);
941}
942
943static __inline__ __m512i __DEFAULT_FN_ATTRS
944_mm512_min_epi16 (__m512i __A, __m512i __B)
945{
946  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
947              (__v32hi) __B,
948              (__v32hi) _mm512_setzero_hi (),
949              (__mmask32) -1);
950}
951
952static __inline__ __m512i __DEFAULT_FN_ATTRS
953_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
954{
955  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
956              (__v32hi) __B,
957              (__v32hi) _mm512_setzero_hi(),
958              (__mmask32) __M);
959}
960
961static __inline__ __m512i __DEFAULT_FN_ATTRS
962_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
963           __m512i __B)
964{
965  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
966              (__v32hi) __B,
967              (__v32hi) __W,
968              (__mmask32) __M);
969}
970
971static __inline__ __m512i __DEFAULT_FN_ATTRS
972_mm512_min_epu8 (__m512i __A, __m512i __B)
973{
974  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
975              (__v64qi) __B,
976              (__v64qi) _mm512_setzero_qi (),
977              (__mmask64) -1);
978}
979
980static __inline__ __m512i __DEFAULT_FN_ATTRS
981_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
982{
983  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
984              (__v64qi) __B,
985              (__v64qi) _mm512_setzero_qi(),
986              (__mmask64) __M);
987}
988
989static __inline__ __m512i __DEFAULT_FN_ATTRS
990_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
991          __m512i __B)
992{
993  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
994              (__v64qi) __B,
995              (__v64qi) __W,
996              (__mmask64) __M);
997}
998
999static __inline__ __m512i __DEFAULT_FN_ATTRS
1000_mm512_min_epu16 (__m512i __A, __m512i __B)
1001{
1002  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1003              (__v32hi) __B,
1004              (__v32hi) _mm512_setzero_hi (),
1005              (__mmask32) -1);
1006}
1007
1008static __inline__ __m512i __DEFAULT_FN_ATTRS
1009_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1010{
1011  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1012              (__v32hi) __B,
1013              (__v32hi) _mm512_setzero_hi(),
1014              (__mmask32) __M);
1015}
1016
1017static __inline__ __m512i __DEFAULT_FN_ATTRS
1018_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1019           __m512i __B)
1020{
1021  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1022              (__v32hi) __B,
1023              (__v32hi) __W,
1024              (__mmask32) __M);
1025}
1026
1027static __inline__ __m512i __DEFAULT_FN_ATTRS
1028_mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1029{
1030  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1031              (__v64qi) __B,
1032              (__v64qi) _mm512_setzero_qi (),
1033              (__mmask64) -1);
1034}
1035
1036static __inline__ __m512i __DEFAULT_FN_ATTRS
1037_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1038        __m512i __B)
1039{
1040  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1041              (__v64qi) __B,
1042              (__v64qi) __W,
1043              (__mmask64) __U);
1044}
1045
1046static __inline__ __m512i __DEFAULT_FN_ATTRS
1047_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1048{
1049  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1050              (__v64qi) __B,
1051              (__v64qi) _mm512_setzero_qi (),
1052              (__mmask64) __U);
1053}
1054
1055static __inline__ __m512i __DEFAULT_FN_ATTRS
1056_mm512_subs_epi8 (__m512i __A, __m512i __B)
1057{
1058  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1059              (__v64qi) __B,
1060              (__v64qi) _mm512_setzero_qi (),
1061              (__mmask64) -1);
1062}
1063
1064static __inline__ __m512i __DEFAULT_FN_ATTRS
1065_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1066           __m512i __B)
1067{
1068  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1069              (__v64qi) __B,
1070              (__v64qi) __W,
1071              (__mmask64) __U);
1072}
1073
1074static __inline__ __m512i __DEFAULT_FN_ATTRS
1075_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1076{
1077  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1078              (__v64qi) __B,
1079              (__v64qi) _mm512_setzero_qi (),
1080              (__mmask64) __U);
1081}
1082
1083static __inline__ __m512i __DEFAULT_FN_ATTRS
1084_mm512_subs_epi16 (__m512i __A, __m512i __B)
1085{
1086  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1087              (__v32hi) __B,
1088              (__v32hi) _mm512_setzero_hi (),
1089              (__mmask32) -1);
1090}
1091
1092static __inline__ __m512i __DEFAULT_FN_ATTRS
1093_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1094      __m512i __B)
1095{
1096  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1097              (__v32hi) __B,
1098              (__v32hi) __W,
1099              (__mmask32) __U);
1100}
1101
1102static __inline__ __m512i __DEFAULT_FN_ATTRS
1103_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1104{
1105  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1106              (__v32hi) __B,
1107              (__v32hi) _mm512_setzero_hi (),
1108              (__mmask32) __U);
1109}
1110
1111static __inline__ __m512i __DEFAULT_FN_ATTRS
1112_mm512_subs_epu8 (__m512i __A, __m512i __B)
1113{
1114  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1115              (__v64qi) __B,
1116              (__v64qi) _mm512_setzero_qi (),
1117              (__mmask64) -1);
1118}
1119
1120static __inline__ __m512i __DEFAULT_FN_ATTRS
1121_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1122           __m512i __B)
1123{
1124  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1125              (__v64qi) __B,
1126              (__v64qi) __W,
1127              (__mmask64) __U);
1128}
1129
1130static __inline__ __m512i __DEFAULT_FN_ATTRS
1131_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1132{
1133  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1134              (__v64qi) __B,
1135              (__v64qi) _mm512_setzero_qi (),
1136              (__mmask64) __U);
1137}
1138
1139static __inline__ __m512i __DEFAULT_FN_ATTRS
1140_mm512_subs_epu16 (__m512i __A, __m512i __B)
1141{
1142  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1143              (__v32hi) __B,
1144              (__v32hi) _mm512_setzero_hi (),
1145              (__mmask32) -1);
1146}
1147
1148static __inline__ __m512i __DEFAULT_FN_ATTRS
1149_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1150      __m512i __B)
1151{
1152  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1153              (__v32hi) __B,
1154              (__v32hi) __W,
1155              (__mmask32) __U);
1156}
1157
1158static __inline__ __m512i __DEFAULT_FN_ATTRS
1159_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1160{
1161  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1162              (__v32hi) __B,
1163              (__v32hi) _mm512_setzero_hi (),
1164              (__mmask32) __U);
1165}
1166
1167static __inline__ __m512i __DEFAULT_FN_ATTRS
1168_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1169         __mmask32 __U, __m512i __B)
1170{
1171  return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1172              (__v32hi) __I /* idx */ ,
1173              (__v32hi) __B,
1174              (__mmask32) __U);
1175}
1176
1177static __inline__ __m512i __DEFAULT_FN_ATTRS
1178_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1179{
1180  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1181              (__v32hi) __A,
1182              (__v32hi) __B,
1183              (__mmask32) -1);
1184}
1185
1186static __inline__ __m512i __DEFAULT_FN_ATTRS
1187_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1188        __m512i __I, __m512i __B)
1189{
1190  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1191              (__v32hi) __A,
1192              (__v32hi) __B,
1193              (__mmask32) __U);
1194}
1195
1196static __inline__ __m512i __DEFAULT_FN_ATTRS
1197_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1198         __m512i __I, __m512i __B)
1199{
1200  return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1201              /* idx */ ,
1202              (__v32hi) __A,
1203              (__v32hi) __B,
1204              (__mmask32) __U);
1205}
1206
1207#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1208  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1209                                         (__v64qi)(__m512i)(b), \
1210                                         (p), (__mmask64)-1); })
1211
1212#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1213  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1214                                         (__v64qi)(__m512i)(b), \
1215                                         (p), (__mmask64)(m)); })
1216
1217#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1218  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1219                                          (__v64qi)(__m512i)(b), \
1220                                          (p), (__mmask64)-1); })
1221
1222#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1223  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1224                                          (__v64qi)(__m512i)(b), \
1225                                          (p), (__mmask64)(m)); })
1226
1227#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1228  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1229                                         (__v32hi)(__m512i)(b), \
1230                                         (p), (__mmask32)-1); })
1231
1232#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1233  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1234                                         (__v32hi)(__m512i)(b), \
1235                                         (p), (__mmask32)(m)); })
1236
1237#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1238  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1239                                          (__v32hi)(__m512i)(b), \
1240                                          (p), (__mmask32)-1); })
1241
1242#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1243  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1244                                          (__v32hi)(__m512i)(b), \
1245                                          (p), (__mmask32)(m)); })
1246
1247
1248#undef __DEFAULT_FN_ATTRS
1249
1250#endif
1251