1176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines/*===------------- avx512bwintrin.h - AVX512BW intrinsics ------------------===
2176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *
3176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *
4176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * Permission is hereby granted, free of charge, to any person obtaining a copy
5176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * of this software and associated documentation files (the "Software"), to deal
6176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * in the Software without restriction, including without limitation the rights
7176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * copies of the Software, and to permit persons to whom the Software is
9176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * furnished to do so, subject to the following conditions:
10176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *
11176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * The above copyright notice and this permission notice shall be included in
12176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * all copies or substantial portions of the Software.
13176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *
14176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines * THE SOFTWARE.
21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *
22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines *===-----------------------------------------------------------------------===
23176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines */
240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#ifndef __IMMINTRIN_H
250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#error "Never use <avx512bwintrin.h> directly; include <immintrin.h> instead."
260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#endif
27176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
28176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#ifndef __AVX512BWINTRIN_H
29176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#define __AVX512BWINTRIN_H
30176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef unsigned int __mmask32;
32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef unsigned long long __mmask64;
330e2c34f92f00628d48968dfea096d36381f494cbStephen Hinestypedef char __v64qi __attribute__ ((__vector_size__ (64)));
34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinestypedef short __v32hi __attribute__ ((__vector_size__ (64)));
35176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
36176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
37176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines/* Integer compare */
38176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
39176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
40176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines_mm512_cmpeq_epi8_mask(__m512i __a, __m512i __b) {
41176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
42176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines                                                   (__mmask64)-1);
43176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}
44176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
45176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
46176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines_mm512_mask_cmpeq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
47176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines  return (__mmask64)__builtin_ia32_pcmpeqb512_mask((__v64qi)__a, (__v64qi)__b,
48176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines                                                   __u);
49176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}
50176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
510e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpeq_epu8_mask(__m512i __a, __m512i __b) {
530e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
560e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
570e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpeq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
590e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 0,
600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
610e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
63176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
64176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines_mm512_cmpeq_epi16_mask(__m512i __a, __m512i __b) {
65176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
66176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines                                                   (__mmask32)-1);
67176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}
68176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
69176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
70176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines_mm512_mask_cmpeq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
71176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines  return (__mmask32)__builtin_ia32_pcmpeqw512_mask((__v32hi)__a, (__v32hi)__b,
72176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines                                                   __u);
73176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines}
74176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines
750e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
760e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpeq_epu16_mask(__m512i __a, __m512i __b) {
770e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
780e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
790e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
800e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
810e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpeq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
830e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 0,
840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
850e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
860e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
870e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
880e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpge_epi8_mask(__m512i __a, __m512i __b) {
890e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
900e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask64)-1);
910e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
920e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
930e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
940e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpge_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
950e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
960e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
970e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
980e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
990e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1000e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpge_epu8_mask(__m512i __a, __m512i __b) {
1010e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
1020e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
1030e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1040e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1050e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1060e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpge_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
1070e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 5,
1080e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
1090e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1110e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpge_epi16_mask(__m512i __a, __m512i __b) {
1130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
1140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask32)-1);
1150e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1170e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpge_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
1190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
1200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
1210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1230e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpge_epu16_mask(__m512i __a, __m512i __b) {
1250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
1260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
1270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1290e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpge_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
1310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 5,
1320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
1330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1350e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpgt_epi8_mask(__m512i __a, __m512i __b) {
1370e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
1380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                   (__mmask64)-1);
1390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1410e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpgt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
1430e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_pcmpgtb512_mask((__v64qi)__a, (__v64qi)__b,
1440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                   __u);
1450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1470e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpgt_epu8_mask(__m512i __a, __m512i __b) {
1490e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
1500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
1510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1530e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpgt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
1550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 6,
1560e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
1570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1590e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpgt_epi16_mask(__m512i __a, __m512i __b) {
1610e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
1620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                   (__mmask32)-1);
1630e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1640e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1650e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpgt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
1670e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_pcmpgtw512_mask((__v32hi)__a, (__v32hi)__b,
1680e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                   __u);
1690e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1700e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1710e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1720e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpgt_epu16_mask(__m512i __a, __m512i __b) {
1730e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
1740e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
1750e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1760e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1770e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
1780e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpgt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
1790e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 6,
1800e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
1810e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1830e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmple_epi8_mask(__m512i __a, __m512i __b) {
1850e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
1860e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask64)-1);
1870e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1880e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1890e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1900e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmple_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
1910e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
1920e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
1930e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
1940e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
1950e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
1960e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmple_epu8_mask(__m512i __a, __m512i __b) {
1970e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
1980e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
1990e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2000e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2010e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2020e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmple_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
2030e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 2,
2040e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
2050e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2060e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2070e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2080e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmple_epi16_mask(__m512i __a, __m512i __b) {
2090e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
2100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask32)-1);
2110e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2130e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmple_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
2150e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
2160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
2170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2190e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmple_epu16_mask(__m512i __a, __m512i __b) {
2210e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
2220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
2230e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2250e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmple_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
2270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 2,
2280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
2290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2310e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmplt_epi8_mask(__m512i __a, __m512i __b) {
2330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
2340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask64)-1);
2350e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2370e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmplt_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
2390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
2400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
2410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2430e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmplt_epu8_mask(__m512i __a, __m512i __b) {
2450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
2460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
2470e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2490e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmplt_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
2510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 1,
2520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
2530e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2550e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2560e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmplt_epi16_mask(__m512i __a, __m512i __b) {
2570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
2580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask32)-1);
2590e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2610e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmplt_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
2630e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
2640e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
2650e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2670e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2680e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmplt_epu16_mask(__m512i __a, __m512i __b) {
2690e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
2700e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
2710e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2720e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2730e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
2740e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmplt_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
2750e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 1,
2760e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
2770e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2780e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2790e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2800e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpneq_epi8_mask(__m512i __a, __m512i __b) {
2810e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
2820e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask64)-1);
2830e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2840e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2850e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2860e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpneq_epi8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
2870e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_cmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
2880e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
2890e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2900e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2910e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2920e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpneq_epu8_mask(__m512i __a, __m512i __b) {
2930e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
2940e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask64)-1);
2950e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
2960e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
2970e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask64 __attribute__((__always_inline__, __nodebug__))
2980e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpneq_epu8_mask(__mmask64 __u, __m512i __a, __m512i __b) {
2990e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask64)__builtin_ia32_ucmpb512_mask((__v64qi)__a, (__v64qi)__b, 4,
3000e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
3010e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
3020e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3030e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
3040e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpneq_epi16_mask(__m512i __a, __m512i __b) {
3050e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
3060e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                (__mmask32)-1);
3070e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
3080e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3090e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
3100e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpneq_epi16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
3110e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_cmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
3120e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                __u);
3130e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
3140e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3150e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
3160e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_cmpneq_epu16_mask(__m512i __a, __m512i __b) {
3170e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
3180e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 (__mmask32)-1);
3190e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
3200e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3210e2c34f92f00628d48968dfea096d36381f494cbStephen Hinesstatic __inline__ __mmask32 __attribute__((__always_inline__, __nodebug__))
3220e2c34f92f00628d48968dfea096d36381f494cbStephen Hines_mm512_mask_cmpneq_epu16_mask(__mmask32 __u, __m512i __a, __m512i __b) {
3230e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  return (__mmask32)__builtin_ia32_ucmpw512_mask((__v32hi)__a, (__v32hi)__b, 4,
3240e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                                 __u);
3250e2c34f92f00628d48968dfea096d36381f494cbStephen Hines}
3260e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3270e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_cmp_epi8_mask(a, b, p) __extension__ ({ \
3280e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
3290e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (__v64qi)(__m512i)(b), \
3300e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (p), (__mmask64)-1); })
3310e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3320e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
3330e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_cmpb512_mask((__v64qi)(__m512i)(a), \
3340e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (__v64qi)(__m512i)(b), \
3350e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (p), (__mmask64)(m)); })
3360e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3370e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_cmp_epu8_mask(a, b, p) __extension__ ({ \
3380e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
3390e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (__v64qi)(__m512i)(b), \
3400e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (p), (__mmask64)-1); })
3410e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3420e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
3430e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_ucmpb512_mask((__v64qi)(__m512i)(a), \
3440e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (__v64qi)(__m512i)(b), \
3450e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (p), (__mmask64)(m)); })
3460e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3470e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_cmp_epi16_mask(a, b, p) __extension__ ({ \
3480e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
3490e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (__v32hi)(__m512i)(b), \
3500e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (p), (__mmask32)-1); })
3510e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3520e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
3530e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_cmpw512_mask((__v32hi)(__m512i)(a), \
3540e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (__v32hi)(__m512i)(b), \
3550e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                         (p), (__mmask32)(m)); })
3560e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3570e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_cmp_epu16_mask(a, b, p) __extension__ ({ \
3580e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
3590e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (__v32hi)(__m512i)(b), \
3600e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (p), (__mmask32)-1); })
3610e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
3620e2c34f92f00628d48968dfea096d36381f494cbStephen Hines#define _mm512_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
3630e2c34f92f00628d48968dfea096d36381f494cbStephen Hines  (__mmask16)__builtin_ia32_ucmpw512_mask((__v32hi)(__m512i)(a), \
3640e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (__v32hi)(__m512i)(b), \
3650e2c34f92f00628d48968dfea096d36381f494cbStephen Hines                                          (p), (__mmask32)(m)); })
3660e2c34f92f00628d48968dfea096d36381f494cbStephen Hines
367176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines#endif
368