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