avx512bwintrin.h revision 296417
190792Sgshapiro/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2261363Sgshapiro *
390792Sgshapiro *
490792Sgshapiro * Permission is hereby granted, free of charge, to any person obtaining a copy
590792Sgshapiro * of this software and associated documentation files (the "Software"), to deal
690792Sgshapiro * in the Software without restriction, including without limitation the rights
790792Sgshapiro * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
890792Sgshapiro * copies of the Software, and to permit persons to whom the Software is
990792Sgshapiro * furnished to do so, subject to the following conditions:
1090792Sgshapiro *
1190792Sgshapiro * The above copyright notice and this permission notice shall be included in
1290792Sgshapiro * all copies or substantial portions of the Software.
1390792Sgshapiro *
1490792Sgshapiro * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1590792Sgshapiro * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16266692Sgshapiro * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1790792Sgshapiro * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1890792Sgshapiro * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19157001Sgshapiro * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2090792Sgshapiro * THE SOFTWARE.
2190792Sgshapiro *
2290792Sgshapiro *===-----------------------------------------------------------------------===
2390792Sgshapiro */
2490792Sgshapiro#ifndef __IMMINTRIN_H
2590792Sgshapiro#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
2690792Sgshapiro#endif
27141858Sgshapiro
2890792Sgshapiro#ifndef __AVX512BWINTRIN_H
2990792Sgshapiro#define __AVX512BWINTRIN_H
3090792Sgshapiro
3190792Sgshapirotypedef unsigned int __mmask32;
3290792Sgshapirotypedef unsigned long long __mmask64;
3390792Sgshapirotypedef char __v64qi __attribute__ ((__vector_size__ (64)));
3490792Sgshapirotypedef short __v32hi __attribute__ ((__vector_size__ (64)));
3590792Sgshapiro
3690792Sgshapiro/* Define the default attributes for the functions in this file. */
3790792Sgshapiro#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bw")))
3890792Sgshapiro
3990792Sgshapirostatic  __inline __v64qi __DEFAULT_FN_ATTRS
4090792Sgshapiro_mm512_setzero_qi(void) {
4190792Sgshapiro  return (__v64qi){ 0, 0, 0, 0, 0, 0, 0, 0,
4290792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4390792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4490792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4590792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4690792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4790792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
4890792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0 };
4990792Sgshapiro}
5090792Sgshapiro
5190792Sgshapirostatic  __inline __v32hi __DEFAULT_FN_ATTRS
5290792Sgshapiro_mm512_setzero_hi(void) {
5390792Sgshapiro  return (__v32hi){ 0, 0, 0, 0, 0, 0, 0, 0,
5490792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
5590792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0,
5690792Sgshapiro                       0, 0, 0, 0, 0, 0, 0, 0 };
5790792Sgshapiro}
5890792Sgshapiro
5990792Sgshapiro/* Integer compare */
6090792Sgshapiro
6190792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
6290792Sgshapiro_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
6390792Sgshapiro  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
6490792Sgshapiro                                                   (__mmask64)-1);
6590792Sgshapiro}
6690792Sgshapiro
6790792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
6890792Sgshapiro_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
6990792Sgshapiro  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
7090792Sgshapiro                                                   __u);
7190792Sgshapiro}
7290792Sgshapiro
7390792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
7490792Sgshapiro_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
7590792Sgshapiro  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
7690792Sgshapiro                                                 (__mmask64)-1);
7790792Sgshapiro}
7890792Sgshapiro
7990792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
8090792Sgshapiro_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
8190792Sgshapiro  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
8290792Sgshapiro                                                 __u);
8390792Sgshapiro}
8490792Sgshapiro
8590792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
8690792Sgshapiro_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
8790792Sgshapiro  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
8890792Sgshapiro                                                   (__mmask32)-1);
8990792Sgshapiro}
9090792Sgshapiro
9190792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
9290792Sgshapiro_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
9390792Sgshapiro  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
9490792Sgshapiro                                                   __u);
9590792Sgshapiro}
9690792Sgshapiro
9790792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
9890792Sgshapiro_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
9990792Sgshapiro  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
10090792Sgshapiro                                                 (__mmask32)-1);
10190792Sgshapiro}
10290792Sgshapiro
10390792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
10490792Sgshapiro_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
10590792Sgshapiro  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
10690792Sgshapiro                                                 __u);
10790792Sgshapiro}
10890792Sgshapiro
10990792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
11090792Sgshapiro_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
11190792Sgshapiro  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
11290792Sgshapiro                                                (__mmask64)-1);
11390792Sgshapiro}
11490792Sgshapiro
11590792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
11690792Sgshapiro_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
11790792Sgshapiro  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
11890792Sgshapiro                                                __u);
11990792Sgshapiro}
12090792Sgshapiro
12190792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
12290792Sgshapiro_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
12390792Sgshapiro  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
12490792Sgshapiro                                                 (__mmask64)-1);
12590792Sgshapiro}
12690792Sgshapiro
12790792Sgshapirostatic __inline__ __mmask64 __DEFAULT_FN_ATTRS
12890792Sgshapiro_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
12990792Sgshapiro  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
13090792Sgshapiro                                                 __u);
13190792Sgshapiro}
13290792Sgshapiro
13390792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
13490792Sgshapiro_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
13590792Sgshapiro  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
13690792Sgshapiro                                                (__mmask32)-1);
13790792Sgshapiro}
13890792Sgshapiro
13990792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
14090792Sgshapiro_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
14190792Sgshapiro  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
14290792Sgshapiro                                                __u);
14390792Sgshapiro}
14490792Sgshapiro
14590792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
14690792Sgshapiro_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
14790792Sgshapiro  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
14890792Sgshapiro                                                 (__mmask32)-1);
14990792Sgshapiro}
15090792Sgshapiro
15190792Sgshapirostatic __inline__ __mmask32 __DEFAULT_FN_ATTRS
15290792Sgshapiro_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
15390792Sgshapiro  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) _mm512_setzero_qi(),
367             (__mmask64) __U);
368}
369
370static __inline__ __m512i __DEFAULT_FN_ATTRS
371_mm512_sub_epi8 (__m512i __A, __m512i __B) {
372  return (__m512i) ((__v64qi) __A - (__v64qi) __B);
373}
374
375static __inline__ __m512i __DEFAULT_FN_ATTRS
376_mm512_mask_sub_epi8 (__m512i __W, __mmask64 __U, __m512i __A, __m512i __B) {
377  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
378             (__v64qi) __B,
379             (__v64qi) __W,
380             (__mmask64) __U);
381}
382
383static __inline__ __m512i __DEFAULT_FN_ATTRS
384_mm512_maskz_sub_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
385  return (__m512i) __builtin_ia32_psubb512_mask ((__v64qi) __A,
386             (__v64qi) __B,
387             (__v64qi) _mm512_setzero_qi(),
388             (__mmask64) __U);
389}
390
391static __inline__ __m512i __DEFAULT_FN_ATTRS
392_mm512_add_epi16 (__m512i __A, __m512i __B) {
393  return (__m512i) ((__v32hi) __A + (__v32hi) __B);
394}
395
396static __inline__ __m512i __DEFAULT_FN_ATTRS
397_mm512_mask_add_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
398  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
399             (__v32hi) __B,
400             (__v32hi) __W,
401             (__mmask32) __U);
402}
403
404static __inline__ __m512i __DEFAULT_FN_ATTRS
405_mm512_maskz_add_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
406  return (__m512i) __builtin_ia32_paddw512_mask ((__v32hi) __A,
407             (__v32hi) __B,
408             (__v32hi) _mm512_setzero_hi(),
409             (__mmask32) __U);
410}
411
412static __inline__ __m512i __DEFAULT_FN_ATTRS
413_mm512_sub_epi16 (__m512i __A, __m512i __B) {
414  return (__m512i) ((__v32hi) __A - (__v32hi) __B);
415}
416
417static __inline__ __m512i __DEFAULT_FN_ATTRS
418_mm512_mask_sub_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
419  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
420             (__v32hi) __B,
421             (__v32hi) __W,
422             (__mmask32) __U);
423}
424
425static __inline__ __m512i __DEFAULT_FN_ATTRS
426_mm512_maskz_sub_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
427  return (__m512i) __builtin_ia32_psubw512_mask ((__v32hi) __A,
428             (__v32hi) __B,
429             (__v32hi) _mm512_setzero_hi(),
430             (__mmask32) __U);
431}
432
433static __inline__ __m512i __DEFAULT_FN_ATTRS
434_mm512_mullo_epi16 (__m512i __A, __m512i __B) {
435  return (__m512i) ((__v32hi) __A * (__v32hi) __B);
436}
437
438static __inline__ __m512i __DEFAULT_FN_ATTRS
439_mm512_mask_mullo_epi16 (__m512i __W, __mmask32 __U, __m512i __A, __m512i __B) {
440  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
441              (__v32hi) __B,
442              (__v32hi) __W,
443              (__mmask32) __U);
444}
445
446static __inline__ __m512i __DEFAULT_FN_ATTRS
447_mm512_maskz_mullo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
448  return (__m512i) __builtin_ia32_pmullw512_mask ((__v32hi) __A,
449              (__v32hi) __B,
450              (__v32hi) _mm512_setzero_hi(),
451              (__mmask32) __U);
452}
453
454static __inline__ __m512i __DEFAULT_FN_ATTRS
455_mm512_mask_blend_epi8 (__mmask64 __U, __m512i __A, __m512i __W)
456{
457  return (__m512i) __builtin_ia32_blendmb_512_mask ((__v64qi) __A,
458              (__v64qi) __W,
459              (__mmask64) __U);
460}
461
462static __inline__ __m512i __DEFAULT_FN_ATTRS
463_mm512_mask_blend_epi16 (__mmask32 __U, __m512i __A, __m512i __W)
464{
465  return (__m512i) __builtin_ia32_blendmw_512_mask ((__v32hi) __A,
466              (__v32hi) __W,
467              (__mmask32) __U);
468}
469
470static __inline__ __m512i __DEFAULT_FN_ATTRS
471_mm512_abs_epi8 (__m512i __A)
472{
473  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
474              (__v64qi) _mm512_setzero_qi(),
475              (__mmask64) -1);
476}
477
478static __inline__ __m512i __DEFAULT_FN_ATTRS
479_mm512_mask_abs_epi8 (__m512i __W, __mmask64 __U, __m512i __A)
480{
481  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
482              (__v64qi) __W,
483              (__mmask64) __U);
484}
485
486static __inline__ __m512i __DEFAULT_FN_ATTRS
487_mm512_maskz_abs_epi8 (__mmask64 __U, __m512i __A)
488{
489  return (__m512i) __builtin_ia32_pabsb512_mask ((__v64qi) __A,
490              (__v64qi) _mm512_setzero_qi(),
491              (__mmask64) __U);
492}
493
494static __inline__ __m512i __DEFAULT_FN_ATTRS
495_mm512_abs_epi16 (__m512i __A)
496{
497  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
498              (__v32hi) _mm512_setzero_hi(),
499              (__mmask32) -1);
500}
501
502static __inline__ __m512i __DEFAULT_FN_ATTRS
503_mm512_mask_abs_epi16 (__m512i __W, __mmask32 __U, __m512i __A)
504{
505  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
506              (__v32hi) __W,
507              (__mmask32) __U);
508}
509
510static __inline__ __m512i __DEFAULT_FN_ATTRS
511_mm512_maskz_abs_epi16 (__mmask32 __U, __m512i __A)
512{
513  return (__m512i) __builtin_ia32_pabsw512_mask ((__v32hi) __A,
514              (__v32hi) _mm512_setzero_hi(),
515              (__mmask32) __U);
516}
517
518static __inline__ __m512i __DEFAULT_FN_ATTRS
519_mm512_packs_epi32 (__m512i __A, __m512i __B)
520{
521  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
522              (__v16si) __B,
523              (__v32hi) _mm512_setzero_hi(),
524              (__mmask32) -1);
525}
526
527static __inline__ __m512i __DEFAULT_FN_ATTRS
528_mm512_maskz_packs_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
529{
530  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
531              (__v16si) __B,
532              (__v32hi) _mm512_setzero_hi(),
533              __M);
534}
535
536static __inline__ __m512i __DEFAULT_FN_ATTRS
537_mm512_mask_packs_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
538       __m512i __B)
539{
540  return (__m512i) __builtin_ia32_packssdw512_mask ((__v16si) __A,
541              (__v16si) __B,
542              (__v32hi) __W,
543              __M);
544}
545
546static __inline__ __m512i __DEFAULT_FN_ATTRS
547_mm512_packs_epi16 (__m512i __A, __m512i __B)
548{
549  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
550              (__v32hi) __B,
551              (__v64qi) _mm512_setzero_qi(),
552              (__mmask64) -1);
553}
554
555static __inline__ __m512i __DEFAULT_FN_ATTRS
556_mm512_mask_packs_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
557       __m512i __B)
558{
559  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
560              (__v32hi) __B,
561              (__v64qi) __W,
562              (__mmask64) __M);
563}
564
565static __inline__ __m512i __DEFAULT_FN_ATTRS
566_mm512_maskz_packs_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
567{
568  return (__m512i) __builtin_ia32_packsswb512_mask ((__v32hi) __A,
569              (__v32hi) __B,
570              (__v64qi) _mm512_setzero_qi(),
571              __M);
572}
573
574static __inline__ __m512i __DEFAULT_FN_ATTRS
575_mm512_packus_epi32 (__m512i __A, __m512i __B)
576{
577  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
578              (__v16si) __B,
579              (__v32hi) _mm512_setzero_hi(),
580              (__mmask32) -1);
581}
582
583static __inline__ __m512i __DEFAULT_FN_ATTRS
584_mm512_maskz_packus_epi32 (__mmask32 __M, __m512i __A, __m512i __B)
585{
586  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
587              (__v16si) __B,
588              (__v32hi) _mm512_setzero_hi(),
589              __M);
590}
591
592static __inline__ __m512i __DEFAULT_FN_ATTRS
593_mm512_mask_packus_epi32 (__m512i __W, __mmask32 __M, __m512i __A,
594        __m512i __B)
595{
596  return (__m512i) __builtin_ia32_packusdw512_mask ((__v16si) __A,
597              (__v16si) __B,
598              (__v32hi) __W,
599              __M);
600}
601
602static __inline__ __m512i __DEFAULT_FN_ATTRS
603_mm512_packus_epi16 (__m512i __A, __m512i __B)
604{
605  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
606              (__v32hi) __B,
607              (__v64qi) _mm512_setzero_qi(),
608              (__mmask64) -1);
609}
610
611static __inline__ __m512i __DEFAULT_FN_ATTRS
612_mm512_mask_packus_epi16 (__m512i __W, __mmask64 __M, __m512i __A,
613        __m512i __B)
614{
615  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
616              (__v32hi) __B,
617              (__v64qi) __W,
618              (__mmask64) __M);
619}
620
621static __inline__ __m512i __DEFAULT_FN_ATTRS
622_mm512_maskz_packus_epi16 (__mmask64 __M, __m512i __A, __m512i __B)
623{
624  return (__m512i) __builtin_ia32_packuswb512_mask ((__v32hi) __A,
625              (__v32hi) __B,
626              (__v64qi) _mm512_setzero_qi(),
627              (__mmask64) __M);
628}
629
630static __inline__ __m512i __DEFAULT_FN_ATTRS
631_mm512_adds_epi8 (__m512i __A, __m512i __B)
632{
633  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
634              (__v64qi) __B,
635              (__v64qi) _mm512_setzero_qi(),
636              (__mmask64) -1);
637}
638
639static __inline__ __m512i __DEFAULT_FN_ATTRS
640_mm512_mask_adds_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
641           __m512i __B)
642{
643  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
644              (__v64qi) __B,
645              (__v64qi) __W,
646              (__mmask64) __U);
647}
648
649static __inline__ __m512i __DEFAULT_FN_ATTRS
650_mm512_maskz_adds_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
651{
652  return (__m512i) __builtin_ia32_paddsb512_mask ((__v64qi) __A,
653              (__v64qi) __B,
654              (__v64qi) _mm512_setzero_qi(),
655              (__mmask64) __U);
656}
657
658static __inline__ __m512i __DEFAULT_FN_ATTRS
659_mm512_adds_epi16 (__m512i __A, __m512i __B)
660{
661  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
662              (__v32hi) __B,
663              (__v32hi) _mm512_setzero_hi(),
664              (__mmask32) -1);
665}
666
667static __inline__ __m512i __DEFAULT_FN_ATTRS
668_mm512_mask_adds_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
669      __m512i __B)
670{
671  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
672              (__v32hi) __B,
673              (__v32hi) __W,
674              (__mmask32) __U);
675}
676
677static __inline__ __m512i __DEFAULT_FN_ATTRS
678_mm512_maskz_adds_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
679{
680  return (__m512i) __builtin_ia32_paddsw512_mask ((__v32hi) __A,
681              (__v32hi) __B,
682              (__v32hi) _mm512_setzero_hi(),
683              (__mmask32) __U);
684}
685
686static __inline__ __m512i __DEFAULT_FN_ATTRS
687_mm512_adds_epu8 (__m512i __A, __m512i __B)
688{
689  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
690              (__v64qi) __B,
691              (__v64qi) _mm512_setzero_qi(),
692              (__mmask64) -1);
693}
694
695static __inline__ __m512i __DEFAULT_FN_ATTRS
696_mm512_mask_adds_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
697           __m512i __B)
698{
699  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
700              (__v64qi) __B,
701              (__v64qi) __W,
702              (__mmask64) __U);
703}
704
705static __inline__ __m512i __DEFAULT_FN_ATTRS
706_mm512_maskz_adds_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
707{
708  return (__m512i) __builtin_ia32_paddusb512_mask ((__v64qi) __A,
709              (__v64qi) __B,
710              (__v64qi) _mm512_setzero_qi(),
711              (__mmask64) __U);
712}
713
714static __inline__ __m512i __DEFAULT_FN_ATTRS
715_mm512_adds_epu16 (__m512i __A, __m512i __B)
716{
717  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
718              (__v32hi) __B,
719              (__v32hi) _mm512_setzero_hi(),
720              (__mmask32) -1);
721}
722
723static __inline__ __m512i __DEFAULT_FN_ATTRS
724_mm512_mask_adds_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
725      __m512i __B)
726{
727  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
728              (__v32hi) __B,
729              (__v32hi) __W,
730              (__mmask32) __U);
731}
732
733static __inline__ __m512i __DEFAULT_FN_ATTRS
734_mm512_maskz_adds_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
735{
736  return (__m512i) __builtin_ia32_paddusw512_mask ((__v32hi) __A,
737              (__v32hi) __B,
738              (__v32hi) _mm512_setzero_hi(),
739              (__mmask32) __U);
740}
741
742static __inline__ __m512i __DEFAULT_FN_ATTRS
743_mm512_avg_epu8 (__m512i __A, __m512i __B)
744{
745  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
746              (__v64qi) __B,
747              (__v64qi) _mm512_setzero_qi(),
748              (__mmask64) -1);
749}
750
751static __inline__ __m512i __DEFAULT_FN_ATTRS
752_mm512_mask_avg_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
753          __m512i __B)
754{
755  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
756              (__v64qi) __B,
757              (__v64qi) __W,
758              (__mmask64) __U);
759}
760
761static __inline__ __m512i __DEFAULT_FN_ATTRS
762_mm512_maskz_avg_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
763{
764  return (__m512i) __builtin_ia32_pavgb512_mask ((__v64qi) __A,
765              (__v64qi) __B,
766              (__v64qi) _mm512_setzero_qi(),
767              (__mmask64) __U);
768}
769
770static __inline__ __m512i __DEFAULT_FN_ATTRS
771_mm512_avg_epu16 (__m512i __A, __m512i __B)
772{
773  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
774              (__v32hi) __B,
775              (__v32hi) _mm512_setzero_hi(),
776              (__mmask32) -1);
777}
778
779static __inline__ __m512i __DEFAULT_FN_ATTRS
780_mm512_mask_avg_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
781           __m512i __B)
782{
783  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
784              (__v32hi) __B,
785              (__v32hi) __W,
786              (__mmask32) __U);
787}
788
789static __inline__ __m512i __DEFAULT_FN_ATTRS
790_mm512_maskz_avg_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
791{
792  return (__m512i) __builtin_ia32_pavgw512_mask ((__v32hi) __A,
793              (__v32hi) __B,
794              (__v32hi) _mm512_setzero_hi(),
795              (__mmask32) __U);
796}
797
798static __inline__ __m512i __DEFAULT_FN_ATTRS
799_mm512_max_epi8 (__m512i __A, __m512i __B)
800{
801  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
802              (__v64qi) __B,
803              (__v64qi) _mm512_setzero_qi(),
804              (__mmask64) -1);
805}
806
807static __inline__ __m512i __DEFAULT_FN_ATTRS
808_mm512_maskz_max_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
809{
810  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
811              (__v64qi) __B,
812              (__v64qi) _mm512_setzero_qi(),
813              (__mmask64) __M);
814}
815
816static __inline__ __m512i __DEFAULT_FN_ATTRS
817_mm512_mask_max_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
818          __m512i __B)
819{
820  return (__m512i) __builtin_ia32_pmaxsb512_mask ((__v64qi) __A,
821              (__v64qi) __B,
822              (__v64qi) __W,
823              (__mmask64) __M);
824}
825
826static __inline__ __m512i __DEFAULT_FN_ATTRS
827_mm512_max_epi16 (__m512i __A, __m512i __B)
828{
829  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
830              (__v32hi) __B,
831              (__v32hi) _mm512_setzero_hi(),
832              (__mmask32) -1);
833}
834
835static __inline__ __m512i __DEFAULT_FN_ATTRS
836_mm512_maskz_max_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
837{
838  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
839              (__v32hi) __B,
840              (__v32hi) _mm512_setzero_hi(),
841              (__mmask32) __M);
842}
843
844static __inline__ __m512i __DEFAULT_FN_ATTRS
845_mm512_mask_max_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
846           __m512i __B)
847{
848  return (__m512i) __builtin_ia32_pmaxsw512_mask ((__v32hi) __A,
849              (__v32hi) __B,
850              (__v32hi) __W,
851              (__mmask32) __M);
852}
853
854static __inline__ __m512i __DEFAULT_FN_ATTRS
855_mm512_max_epu8 (__m512i __A, __m512i __B)
856{
857  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
858              (__v64qi) __B,
859              (__v64qi) _mm512_setzero_qi(),
860              (__mmask64) -1);
861}
862
863static __inline__ __m512i __DEFAULT_FN_ATTRS
864_mm512_maskz_max_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
865{
866  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
867              (__v64qi) __B,
868              (__v64qi) _mm512_setzero_qi(),
869              (__mmask64) __M);
870}
871
872static __inline__ __m512i __DEFAULT_FN_ATTRS
873_mm512_mask_max_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
874          __m512i __B)
875{
876  return (__m512i) __builtin_ia32_pmaxub512_mask ((__v64qi) __A,
877              (__v64qi) __B,
878              (__v64qi) __W,
879              (__mmask64) __M);
880}
881
882static __inline__ __m512i __DEFAULT_FN_ATTRS
883_mm512_max_epu16 (__m512i __A, __m512i __B)
884{
885  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
886              (__v32hi) __B,
887              (__v32hi) _mm512_setzero_hi(),
888              (__mmask32) -1);
889}
890
891static __inline__ __m512i __DEFAULT_FN_ATTRS
892_mm512_maskz_max_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
893{
894  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
895              (__v32hi) __B,
896              (__v32hi) _mm512_setzero_hi(),
897              (__mmask32) __M);
898}
899
900static __inline__ __m512i __DEFAULT_FN_ATTRS
901_mm512_mask_max_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
902           __m512i __B)
903{
904  return (__m512i) __builtin_ia32_pmaxuw512_mask ((__v32hi) __A,
905              (__v32hi) __B,
906              (__v32hi) __W,
907              (__mmask32) __M);
908}
909
910static __inline__ __m512i __DEFAULT_FN_ATTRS
911_mm512_min_epi8 (__m512i __A, __m512i __B)
912{
913  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
914              (__v64qi) __B,
915              (__v64qi) _mm512_setzero_qi(),
916              (__mmask64) -1);
917}
918
919static __inline__ __m512i __DEFAULT_FN_ATTRS
920_mm512_maskz_min_epi8 (__mmask64 __M, __m512i __A, __m512i __B)
921{
922  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
923              (__v64qi) __B,
924              (__v64qi) _mm512_setzero_qi(),
925              (__mmask64) __M);
926}
927
928static __inline__ __m512i __DEFAULT_FN_ATTRS
929_mm512_mask_min_epi8 (__m512i __W, __mmask64 __M, __m512i __A,
930          __m512i __B)
931{
932  return (__m512i) __builtin_ia32_pminsb512_mask ((__v64qi) __A,
933              (__v64qi) __B,
934              (__v64qi) __W,
935              (__mmask64) __M);
936}
937
938static __inline__ __m512i __DEFAULT_FN_ATTRS
939_mm512_min_epi16 (__m512i __A, __m512i __B)
940{
941  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
942              (__v32hi) __B,
943              (__v32hi) _mm512_setzero_hi(),
944              (__mmask32) -1);
945}
946
947static __inline__ __m512i __DEFAULT_FN_ATTRS
948_mm512_maskz_min_epi16 (__mmask32 __M, __m512i __A, __m512i __B)
949{
950  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
951              (__v32hi) __B,
952              (__v32hi) _mm512_setzero_hi(),
953              (__mmask32) __M);
954}
955
956static __inline__ __m512i __DEFAULT_FN_ATTRS
957_mm512_mask_min_epi16 (__m512i __W, __mmask32 __M, __m512i __A,
958           __m512i __B)
959{
960  return (__m512i) __builtin_ia32_pminsw512_mask ((__v32hi) __A,
961              (__v32hi) __B,
962              (__v32hi) __W,
963              (__mmask32) __M);
964}
965
966static __inline__ __m512i __DEFAULT_FN_ATTRS
967_mm512_min_epu8 (__m512i __A, __m512i __B)
968{
969  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
970              (__v64qi) __B,
971              (__v64qi) _mm512_setzero_qi(),
972              (__mmask64) -1);
973}
974
975static __inline__ __m512i __DEFAULT_FN_ATTRS
976_mm512_maskz_min_epu8 (__mmask64 __M, __m512i __A, __m512i __B)
977{
978  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
979              (__v64qi) __B,
980              (__v64qi) _mm512_setzero_qi(),
981              (__mmask64) __M);
982}
983
984static __inline__ __m512i __DEFAULT_FN_ATTRS
985_mm512_mask_min_epu8 (__m512i __W, __mmask64 __M, __m512i __A,
986          __m512i __B)
987{
988  return (__m512i) __builtin_ia32_pminub512_mask ((__v64qi) __A,
989              (__v64qi) __B,
990              (__v64qi) __W,
991              (__mmask64) __M);
992}
993
994static __inline__ __m512i __DEFAULT_FN_ATTRS
995_mm512_min_epu16 (__m512i __A, __m512i __B)
996{
997  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
998              (__v32hi) __B,
999              (__v32hi) _mm512_setzero_hi(),
1000              (__mmask32) -1);
1001}
1002
1003static __inline__ __m512i __DEFAULT_FN_ATTRS
1004_mm512_maskz_min_epu16 (__mmask32 __M, __m512i __A, __m512i __B)
1005{
1006  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1007              (__v32hi) __B,
1008              (__v32hi) _mm512_setzero_hi(),
1009              (__mmask32) __M);
1010}
1011
1012static __inline__ __m512i __DEFAULT_FN_ATTRS
1013_mm512_mask_min_epu16 (__m512i __W, __mmask32 __M, __m512i __A,
1014           __m512i __B)
1015{
1016  return (__m512i) __builtin_ia32_pminuw512_mask ((__v32hi) __A,
1017              (__v32hi) __B,
1018              (__v32hi) __W,
1019              (__mmask32) __M);
1020}
1021
1022static __inline__ __m512i __DEFAULT_FN_ATTRS
1023_mm512_shuffle_epi8 (__m512i __A, __m512i __B)
1024{
1025  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1026              (__v64qi) __B,
1027              (__v64qi) _mm512_setzero_qi(),
1028              (__mmask64) -1);
1029}
1030
1031static __inline__ __m512i __DEFAULT_FN_ATTRS
1032_mm512_mask_shuffle_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1033        __m512i __B)
1034{
1035  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1036              (__v64qi) __B,
1037              (__v64qi) __W,
1038              (__mmask64) __U);
1039}
1040
1041static __inline__ __m512i __DEFAULT_FN_ATTRS
1042_mm512_maskz_shuffle_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1043{
1044  return (__m512i) __builtin_ia32_pshufb512_mask ((__v64qi) __A,
1045              (__v64qi) __B,
1046              (__v64qi) _mm512_setzero_qi(),
1047              (__mmask64) __U);
1048}
1049
1050static __inline__ __m512i __DEFAULT_FN_ATTRS
1051_mm512_subs_epi8 (__m512i __A, __m512i __B)
1052{
1053  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1054              (__v64qi) __B,
1055              (__v64qi) _mm512_setzero_qi(),
1056              (__mmask64) -1);
1057}
1058
1059static __inline__ __m512i __DEFAULT_FN_ATTRS
1060_mm512_mask_subs_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1061           __m512i __B)
1062{
1063  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1064              (__v64qi) __B,
1065              (__v64qi) __W,
1066              (__mmask64) __U);
1067}
1068
1069static __inline__ __m512i __DEFAULT_FN_ATTRS
1070_mm512_maskz_subs_epi8 (__mmask64 __U, __m512i __A, __m512i __B)
1071{
1072  return (__m512i) __builtin_ia32_psubsb512_mask ((__v64qi) __A,
1073              (__v64qi) __B,
1074              (__v64qi) _mm512_setzero_qi(),
1075              (__mmask64) __U);
1076}
1077
1078static __inline__ __m512i __DEFAULT_FN_ATTRS
1079_mm512_subs_epi16 (__m512i __A, __m512i __B)
1080{
1081  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1082              (__v32hi) __B,
1083              (__v32hi) _mm512_setzero_hi(),
1084              (__mmask32) -1);
1085}
1086
1087static __inline__ __m512i __DEFAULT_FN_ATTRS
1088_mm512_mask_subs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1089      __m512i __B)
1090{
1091  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1092              (__v32hi) __B,
1093              (__v32hi) __W,
1094              (__mmask32) __U);
1095}
1096
1097static __inline__ __m512i __DEFAULT_FN_ATTRS
1098_mm512_maskz_subs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1099{
1100  return (__m512i) __builtin_ia32_psubsw512_mask ((__v32hi) __A,
1101              (__v32hi) __B,
1102              (__v32hi) _mm512_setzero_hi(),
1103              (__mmask32) __U);
1104}
1105
1106static __inline__ __m512i __DEFAULT_FN_ATTRS
1107_mm512_subs_epu8 (__m512i __A, __m512i __B)
1108{
1109  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1110              (__v64qi) __B,
1111              (__v64qi) _mm512_setzero_qi(),
1112              (__mmask64) -1);
1113}
1114
1115static __inline__ __m512i __DEFAULT_FN_ATTRS
1116_mm512_mask_subs_epu8 (__m512i __W, __mmask64 __U, __m512i __A,
1117           __m512i __B)
1118{
1119  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1120              (__v64qi) __B,
1121              (__v64qi) __W,
1122              (__mmask64) __U);
1123}
1124
1125static __inline__ __m512i __DEFAULT_FN_ATTRS
1126_mm512_maskz_subs_epu8 (__mmask64 __U, __m512i __A, __m512i __B)
1127{
1128  return (__m512i) __builtin_ia32_psubusb512_mask ((__v64qi) __A,
1129              (__v64qi) __B,
1130              (__v64qi) _mm512_setzero_qi(),
1131              (__mmask64) __U);
1132}
1133
1134static __inline__ __m512i __DEFAULT_FN_ATTRS
1135_mm512_subs_epu16 (__m512i __A, __m512i __B)
1136{
1137  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1138              (__v32hi) __B,
1139              (__v32hi) _mm512_setzero_hi(),
1140              (__mmask32) -1);
1141}
1142
1143static __inline__ __m512i __DEFAULT_FN_ATTRS
1144_mm512_mask_subs_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1145      __m512i __B)
1146{
1147  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1148              (__v32hi) __B,
1149              (__v32hi) __W,
1150              (__mmask32) __U);
1151}
1152
1153static __inline__ __m512i __DEFAULT_FN_ATTRS
1154_mm512_maskz_subs_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1155{
1156  return (__m512i) __builtin_ia32_psubusw512_mask ((__v32hi) __A,
1157              (__v32hi) __B,
1158              (__v32hi) _mm512_setzero_hi(),
1159              (__mmask32) __U);
1160}
1161
1162static __inline__ __m512i __DEFAULT_FN_ATTRS
1163_mm512_mask2_permutex2var_epi16 (__m512i __A, __m512i __I,
1164         __mmask32 __U, __m512i __B)
1165{
1166  return (__m512i) __builtin_ia32_vpermi2varhi512_mask ((__v32hi) __A,
1167              (__v32hi) __I /* idx */ ,
1168              (__v32hi) __B,
1169              (__mmask32) __U);
1170}
1171
1172static __inline__ __m512i __DEFAULT_FN_ATTRS
1173_mm512_permutex2var_epi16 (__m512i __A, __m512i __I, __m512i __B)
1174{
1175  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1176              (__v32hi) __A,
1177              (__v32hi) __B,
1178              (__mmask32) -1);
1179}
1180
1181static __inline__ __m512i __DEFAULT_FN_ATTRS
1182_mm512_mask_permutex2var_epi16 (__m512i __A, __mmask32 __U,
1183        __m512i __I, __m512i __B)
1184{
1185  return (__m512i) __builtin_ia32_vpermt2varhi512_mask ((__v32hi) __I /* idx */,
1186              (__v32hi) __A,
1187              (__v32hi) __B,
1188              (__mmask32) __U);
1189}
1190
1191static __inline__ __m512i __DEFAULT_FN_ATTRS
1192_mm512_maskz_permutex2var_epi16 (__mmask32 __U, __m512i __A,
1193         __m512i __I, __m512i __B)
1194{
1195  return (__m512i) __builtin_ia32_vpermt2varhi512_maskz ((__v32hi) __I
1196              /* idx */ ,
1197              (__v32hi) __A,
1198              (__v32hi) __B,
1199              (__mmask32) __U);
1200}
1201
1202static __inline__ __m512i __DEFAULT_FN_ATTRS
1203_mm512_mulhrs_epi16 (__m512i __A, __m512i __B)
1204{
1205  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1206                (__v32hi) __B,
1207                (__v32hi) _mm512_setzero_hi(),
1208                (__mmask32) -1);
1209}
1210
1211static __inline__ __m512i __DEFAULT_FN_ATTRS
1212_mm512_mask_mulhrs_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1213        __m512i __B)
1214{
1215  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1216                (__v32hi) __B,
1217                (__v32hi) __W,
1218                (__mmask32) __U);
1219}
1220
1221static __inline__ __m512i __DEFAULT_FN_ATTRS
1222_mm512_maskz_mulhrs_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1223{
1224  return (__m512i) __builtin_ia32_pmulhrsw512_mask ((__v32hi) __A,
1225                (__v32hi) __B,
1226                (__v32hi) _mm512_setzero_hi(),
1227                (__mmask32) __U);
1228}
1229
1230static __inline__ __m512i __DEFAULT_FN_ATTRS
1231_mm512_mulhi_epi16 (__m512i __A, __m512i __B)
1232{
1233  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1234              (__v32hi) __B,
1235              (__v32hi) _mm512_setzero_hi(),
1236              (__mmask32) -1);
1237}
1238
1239static __inline__ __m512i __DEFAULT_FN_ATTRS
1240_mm512_mask_mulhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1241       __m512i __B)
1242{
1243  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1244              (__v32hi) __B,
1245              (__v32hi) __W,
1246              (__mmask32) __U);
1247}
1248
1249static __inline__ __m512i __DEFAULT_FN_ATTRS
1250_mm512_maskz_mulhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B)
1251{
1252  return (__m512i) __builtin_ia32_pmulhw512_mask ((__v32hi) __A,
1253              (__v32hi) __B,
1254              (__v32hi) _mm512_setzero_hi(),
1255              (__mmask32) __U);
1256}
1257
1258static __inline__ __m512i __DEFAULT_FN_ATTRS
1259_mm512_mulhi_epu16 (__m512i __A, __m512i __B)
1260{
1261  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1262               (__v32hi) __B,
1263               (__v32hi) _mm512_setzero_hi(),
1264               (__mmask32) -1);
1265}
1266
1267static __inline__ __m512i __DEFAULT_FN_ATTRS
1268_mm512_mask_mulhi_epu16 (__m512i __W, __mmask32 __U, __m512i __A,
1269       __m512i __B)
1270{
1271  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1272               (__v32hi) __B,
1273               (__v32hi) __W,
1274               (__mmask32) __U);
1275}
1276
1277static __inline__ __m512i __DEFAULT_FN_ATTRS
1278_mm512_maskz_mulhi_epu16 (__mmask32 __U, __m512i __A, __m512i __B)
1279{
1280  return (__m512i) __builtin_ia32_pmulhuw512_mask ((__v32hi) __A,
1281               (__v32hi) __B,
1282               (__v32hi) _mm512_setzero_hi(),
1283               (__mmask32) __U);
1284}
1285
1286static __inline__ __m512i __DEFAULT_FN_ATTRS
1287_mm512_maddubs_epi16 (__m512i __X, __m512i __Y) {
1288  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1289                 (__v64qi) __Y,
1290                 (__v32hi) _mm512_setzero_hi(),
1291                 (__mmask32) -1);
1292}
1293
1294static __inline__ __m512i __DEFAULT_FN_ATTRS
1295_mm512_mask_maddubs_epi16 (__m512i __W, __mmask32 __U, __m512i __X,
1296         __m512i __Y) {
1297  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1298                 (__v64qi) __Y,
1299                 (__v32hi) __W,
1300                 (__mmask32) __U);
1301}
1302
1303static __inline__ __m512i __DEFAULT_FN_ATTRS
1304_mm512_maskz_maddubs_epi16 (__mmask32 __U, __m512i __X, __m512i __Y) {
1305  return (__m512i) __builtin_ia32_pmaddubsw512_mask ((__v64qi) __X,
1306                 (__v64qi) __Y,
1307                 (__v32hi) _mm512_setzero_hi(),
1308                 (__mmask32) __U);
1309}
1310
1311static __inline__ __m512i __DEFAULT_FN_ATTRS
1312_mm512_madd_epi16 (__m512i __A, __m512i __B) {
1313  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1314               (__v32hi) __B,
1315               (__v16si) _mm512_setzero_si512(),
1316               (__mmask16) -1);
1317}
1318
1319static __inline__ __m512i __DEFAULT_FN_ATTRS
1320_mm512_mask_madd_epi16 (__m512i __W, __mmask16 __U, __m512i __A,
1321      __m512i __B) {
1322  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1323               (__v32hi) __B,
1324               (__v16si) __W,
1325               (__mmask16) __U);
1326}
1327
1328static __inline__ __m512i __DEFAULT_FN_ATTRS
1329_mm512_maskz_madd_epi16 (__mmask16 __U, __m512i __A, __m512i __B) {
1330  return (__m512i) __builtin_ia32_pmaddwd512_mask ((__v32hi) __A,
1331               (__v32hi) __B,
1332               (__v16si) _mm512_setzero_si512(),
1333               (__mmask16) __U);
1334}
1335
1336static __inline__ __m256i __DEFAULT_FN_ATTRS
1337_mm512_cvtsepi16_epi8 (__m512i __A) {
1338  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1339               (__v32qi)_mm256_setzero_si256(),
1340               (__mmask32) -1);
1341}
1342
1343static __inline__ __m256i __DEFAULT_FN_ATTRS
1344_mm512_mask_cvtsepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1345  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1346               (__v32qi)__O,
1347               __M);
1348}
1349
1350static __inline__ __m256i __DEFAULT_FN_ATTRS
1351_mm512_maskz_cvtsepi16_epi8 (__mmask32 __M, __m512i __A) {
1352  return (__m256i) __builtin_ia32_pmovswb512_mask ((__v32hi) __A,
1353               (__v32qi) _mm256_setzero_si256(),
1354               __M);
1355}
1356
1357static __inline__ __m256i __DEFAULT_FN_ATTRS
1358_mm512_cvtusepi16_epi8 (__m512i __A) {
1359  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1360                (__v32qi) _mm256_setzero_si256(),
1361                (__mmask32) -1);
1362}
1363
1364static __inline__ __m256i __DEFAULT_FN_ATTRS
1365_mm512_mask_cvtusepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1366  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1367                (__v32qi) __O,
1368                __M);
1369}
1370
1371static __inline__ __m256i __DEFAULT_FN_ATTRS
1372_mm512_maskz_cvtusepi16_epi8 (__mmask32 __M, __m512i __A) {
1373  return (__m256i) __builtin_ia32_pmovuswb512_mask ((__v32hi) __A,
1374                (__v32qi) _mm256_setzero_si256(),
1375                __M);
1376}
1377
1378static __inline__ __m256i __DEFAULT_FN_ATTRS
1379_mm512_cvtepi16_epi8 (__m512i __A) {
1380  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1381              (__v32qi) _mm256_setzero_si256(),
1382              (__mmask32) -1);
1383}
1384
1385static __inline__ __m256i __DEFAULT_FN_ATTRS
1386_mm512_mask_cvtepi16_epi8 (__m256i __O, __mmask32 __M, __m512i __A) {
1387  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1388              (__v32qi) __O,
1389              __M);
1390}
1391
1392static __inline__ __m256i __DEFAULT_FN_ATTRS
1393_mm512_maskz_cvtepi16_epi8 (__mmask32 __M, __m512i __A) {
1394  return (__m256i) __builtin_ia32_pmovwb512_mask ((__v32hi) __A,
1395              (__v32qi) _mm256_setzero_si256(),
1396              __M);
1397}
1398
1399static __inline__ __m512i __DEFAULT_FN_ATTRS
1400_mm512_unpackhi_epi8 (__m512i __A, __m512i __B) {
1401  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1402                 (__v64qi) __B,
1403                 (__v64qi) _mm512_setzero_qi(),
1404                 (__mmask64) -1);
1405}
1406
1407static __inline__ __m512i __DEFAULT_FN_ATTRS
1408_mm512_mask_unpackhi_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1409         __m512i __B) {
1410  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1411                 (__v64qi) __B,
1412                 (__v64qi) __W,
1413                 (__mmask64) __U);
1414}
1415
1416static __inline__ __m512i __DEFAULT_FN_ATTRS
1417_mm512_maskz_unpackhi_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
1418  return (__m512i) __builtin_ia32_punpckhbw512_mask ((__v64qi) __A,
1419                 (__v64qi) __B,
1420                 (__v64qi) _mm512_setzero_qi(),
1421                 (__mmask64) __U);
1422}
1423
1424static __inline__ __m512i __DEFAULT_FN_ATTRS
1425_mm512_unpackhi_epi16 (__m512i __A, __m512i __B) {
1426  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1427                 (__v32hi) __B,
1428                 (__v32hi) _mm512_setzero_hi(),
1429                 (__mmask32) -1);
1430}
1431
1432static __inline__ __m512i __DEFAULT_FN_ATTRS
1433_mm512_mask_unpackhi_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1434          __m512i __B) {
1435  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1436                 (__v32hi) __B,
1437                 (__v32hi) __W,
1438                 (__mmask32) __U);
1439}
1440
1441static __inline__ __m512i __DEFAULT_FN_ATTRS
1442_mm512_maskz_unpackhi_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
1443  return (__m512i) __builtin_ia32_punpckhwd512_mask ((__v32hi) __A,
1444                 (__v32hi) __B,
1445                 (__v32hi) _mm512_setzero_hi(),
1446                 (__mmask32) __U);
1447}
1448
1449static __inline__ __m512i __DEFAULT_FN_ATTRS
1450_mm512_unpacklo_epi8 (__m512i __A, __m512i __B) {
1451  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1452                 (__v64qi) __B,
1453                 (__v64qi) _mm512_setzero_qi(),
1454                 (__mmask64) -1);
1455}
1456
1457static __inline__ __m512i __DEFAULT_FN_ATTRS
1458_mm512_mask_unpacklo_epi8 (__m512i __W, __mmask64 __U, __m512i __A,
1459         __m512i __B) {
1460  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1461                 (__v64qi) __B,
1462                 (__v64qi) __W,
1463                 (__mmask64) __U);
1464}
1465
1466static __inline__ __m512i __DEFAULT_FN_ATTRS
1467_mm512_maskz_unpacklo_epi8 (__mmask64 __U, __m512i __A, __m512i __B) {
1468  return (__m512i) __builtin_ia32_punpcklbw512_mask ((__v64qi) __A,
1469                 (__v64qi) __B,
1470                 (__v64qi) _mm512_setzero_qi(),
1471                 (__mmask64) __U);
1472}
1473
1474static __inline__ __m512i __DEFAULT_FN_ATTRS
1475_mm512_unpacklo_epi16 (__m512i __A, __m512i __B) {
1476  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1477                 (__v32hi) __B,
1478                 (__v32hi) _mm512_setzero_hi(),
1479                 (__mmask32) -1);
1480}
1481
1482static __inline__ __m512i __DEFAULT_FN_ATTRS
1483_mm512_mask_unpacklo_epi16 (__m512i __W, __mmask32 __U, __m512i __A,
1484          __m512i __B) {
1485  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1486                 (__v32hi) __B,
1487                 (__v32hi) __W,
1488                 (__mmask32) __U);
1489}
1490
1491static __inline__ __m512i __DEFAULT_FN_ATTRS
1492_mm512_maskz_unpacklo_epi16 (__mmask32 __U, __m512i __A, __m512i __B) {
1493  return (__m512i) __builtin_ia32_punpcklwd512_mask ((__v32hi) __A,
1494                 (__v32hi) __B,
1495                 (__v32hi) _mm512_setzero_hi(),
1496                 (__mmask32) __U);
1497}
1498
1499#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
1500  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1501                                         (__v64qi)(__m512i)(b), \
1502                                         (p), (__mmask64)-1); })
1503
1504#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
1505  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
1506                                         (__v64qi)(__m512i)(b), \
1507                                         (p), (__mmask64)(m)); })
1508
1509#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
1510  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1511                                          (__v64qi)(__m512i)(b), \
1512                                          (p), (__mmask64)-1); })
1513
1514#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
1515  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
1516                                          (__v64qi)(__m512i)(b), \
1517                                          (p), (__mmask64)(m)); })
1518
1519#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
1520  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1521                                         (__v32hi)(__m512i)(b), \
1522                                         (p), (__mmask32)-1); })
1523
1524#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
1525  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
1526                                         (__v32hi)(__m512i)(b), \
1527                                         (p), (__mmask32)(m)); })
1528
1529#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
1530  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1531                                          (__v32hi)(__m512i)(b), \
1532                                          (p), (__mmask32)-1); })
1533
1534#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
1535  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
1536                                          (__v32hi)(__m512i)(b), \
1537                                          (p), (__mmask32)(m)); })
1538
1539
1540#undef __DEFAULT_FN_ATTRS
1541
1542#endif
1543