1*67e74705SXin Li /*===---- avx512vlbwintrin.h - AVX512VL and AVX512BW intrinsics ------------===
2*67e74705SXin Li *
3*67e74705SXin Li * Permission is hereby granted, free of charge, to any person obtaining a copy
4*67e74705SXin Li * of this software and associated documentation files (the "Software"), to deal
5*67e74705SXin Li * in the Software without restriction, including without limitation the rights
6*67e74705SXin Li * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7*67e74705SXin Li * copies of the Software, and to permit persons to whom the Software is
8*67e74705SXin Li * furnished to do so, subject to the following conditions:
9*67e74705SXin Li *
10*67e74705SXin Li * The above copyright notice and this permission notice shall be included in
11*67e74705SXin Li * all copies or substantial portions of the Software.
12*67e74705SXin Li *
13*67e74705SXin Li * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14*67e74705SXin Li * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15*67e74705SXin Li * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16*67e74705SXin Li * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17*67e74705SXin Li * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18*67e74705SXin Li * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19*67e74705SXin Li * THE SOFTWARE.
20*67e74705SXin Li *
21*67e74705SXin Li *===-----------------------------------------------------------------------===
22*67e74705SXin Li */
23*67e74705SXin Li
24*67e74705SXin Li #ifndef __IMMINTRIN_H
25*67e74705SXin Li #error "Never use <avx512vlbwintrin.h> directly; include <immintrin.h> instead."
26*67e74705SXin Li #endif
27*67e74705SXin Li
28*67e74705SXin Li #ifndef __AVX512VLBWINTRIN_H
29*67e74705SXin Li #define __AVX512VLBWINTRIN_H
30*67e74705SXin Li
31*67e74705SXin Li /* Define the default attributes for the functions in this file. */
32*67e74705SXin Li #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512bw")))
33*67e74705SXin Li
34*67e74705SXin Li static __inline __m128i __DEFAULT_FN_ATTRS
_mm_setzero_hi(void)35*67e74705SXin Li _mm_setzero_hi(void){
36*67e74705SXin Li return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
37*67e74705SXin Li }
38*67e74705SXin Li
39*67e74705SXin Li /* Integer compare */
40*67e74705SXin Li
41*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpeq_epi8_mask(__m128i __a,__m128i __b)42*67e74705SXin Li _mm_cmpeq_epi8_mask(__m128i __a, __m128i __b) {
43*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
44*67e74705SXin Li (__mmask16)-1);
45*67e74705SXin Li }
46*67e74705SXin Li
47*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)48*67e74705SXin Li _mm_mask_cmpeq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
49*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpeqb128_mask((__v16qi)__a, (__v16qi)__b,
50*67e74705SXin Li __u);
51*67e74705SXin Li }
52*67e74705SXin Li
53*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpeq_epu8_mask(__m128i __a,__m128i __b)54*67e74705SXin Li _mm_cmpeq_epu8_mask(__m128i __a, __m128i __b) {
55*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
56*67e74705SXin Li (__mmask16)-1);
57*67e74705SXin Li }
58*67e74705SXin Li
59*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)60*67e74705SXin Li _mm_mask_cmpeq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
61*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 0,
62*67e74705SXin Li __u);
63*67e74705SXin Li }
64*67e74705SXin Li
65*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi8_mask(__m256i __a,__m256i __b)66*67e74705SXin Li _mm256_cmpeq_epi8_mask(__m256i __a, __m256i __b) {
67*67e74705SXin Li return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
68*67e74705SXin Li (__mmask32)-1);
69*67e74705SXin Li }
70*67e74705SXin Li
71*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)72*67e74705SXin Li _mm256_mask_cmpeq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
73*67e74705SXin Li return (__mmask32)__builtin_ia32_pcmpeqb256_mask((__v32qi)__a, (__v32qi)__b,
74*67e74705SXin Li __u);
75*67e74705SXin Li }
76*67e74705SXin Li
77*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epu8_mask(__m256i __a,__m256i __b)78*67e74705SXin Li _mm256_cmpeq_epu8_mask(__m256i __a, __m256i __b) {
79*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
80*67e74705SXin Li (__mmask32)-1);
81*67e74705SXin Li }
82*67e74705SXin Li
83*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)84*67e74705SXin Li _mm256_mask_cmpeq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
85*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 0,
86*67e74705SXin Li __u);
87*67e74705SXin Li }
88*67e74705SXin Li
89*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epi16_mask(__m128i __a,__m128i __b)90*67e74705SXin Li _mm_cmpeq_epi16_mask(__m128i __a, __m128i __b) {
91*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
92*67e74705SXin Li (__mmask8)-1);
93*67e74705SXin Li }
94*67e74705SXin Li
95*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)96*67e74705SXin Li _mm_mask_cmpeq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
97*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqw128_mask((__v8hi)__a, (__v8hi)__b,
98*67e74705SXin Li __u);
99*67e74705SXin Li }
100*67e74705SXin Li
101*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epu16_mask(__m128i __a,__m128i __b)102*67e74705SXin Li _mm_cmpeq_epu16_mask(__m128i __a, __m128i __b) {
103*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
104*67e74705SXin Li (__mmask8)-1);
105*67e74705SXin Li }
106*67e74705SXin Li
107*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)108*67e74705SXin Li _mm_mask_cmpeq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
109*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 0,
110*67e74705SXin Li __u);
111*67e74705SXin Li }
112*67e74705SXin Li
113*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi16_mask(__m256i __a,__m256i __b)114*67e74705SXin Li _mm256_cmpeq_epi16_mask(__m256i __a, __m256i __b) {
115*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
116*67e74705SXin Li (__mmask16)-1);
117*67e74705SXin Li }
118*67e74705SXin Li
119*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)120*67e74705SXin Li _mm256_mask_cmpeq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
121*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpeqw256_mask((__v16hi)__a, (__v16hi)__b,
122*67e74705SXin Li __u);
123*67e74705SXin Li }
124*67e74705SXin Li
125*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epu16_mask(__m256i __a,__m256i __b)126*67e74705SXin Li _mm256_cmpeq_epu16_mask(__m256i __a, __m256i __b) {
127*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
128*67e74705SXin Li (__mmask16)-1);
129*67e74705SXin Li }
130*67e74705SXin Li
131*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)132*67e74705SXin Li _mm256_mask_cmpeq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
133*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 0,
134*67e74705SXin Li __u);
135*67e74705SXin Li }
136*67e74705SXin Li
137*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpge_epi8_mask(__m128i __a,__m128i __b)138*67e74705SXin Li _mm_cmpge_epi8_mask(__m128i __a, __m128i __b) {
139*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
140*67e74705SXin Li (__mmask16)-1);
141*67e74705SXin Li }
142*67e74705SXin Li
143*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)144*67e74705SXin Li _mm_mask_cmpge_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
145*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
146*67e74705SXin Li __u);
147*67e74705SXin Li }
148*67e74705SXin Li
149*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpge_epu8_mask(__m128i __a,__m128i __b)150*67e74705SXin Li _mm_cmpge_epu8_mask(__m128i __a, __m128i __b) {
151*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
152*67e74705SXin Li (__mmask16)-1);
153*67e74705SXin Li }
154*67e74705SXin Li
155*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)156*67e74705SXin Li _mm_mask_cmpge_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
157*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 5,
158*67e74705SXin Li __u);
159*67e74705SXin Li }
160*67e74705SXin Li
161*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpge_epi8_mask(__m256i __a,__m256i __b)162*67e74705SXin Li _mm256_cmpge_epi8_mask(__m256i __a, __m256i __b) {
163*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
164*67e74705SXin Li (__mmask32)-1);
165*67e74705SXin Li }
166*67e74705SXin Li
167*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)168*67e74705SXin Li _mm256_mask_cmpge_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
169*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
170*67e74705SXin Li __u);
171*67e74705SXin Li }
172*67e74705SXin Li
173*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpge_epu8_mask(__m256i __a,__m256i __b)174*67e74705SXin Li _mm256_cmpge_epu8_mask(__m256i __a, __m256i __b) {
175*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
176*67e74705SXin Li (__mmask32)-1);
177*67e74705SXin Li }
178*67e74705SXin Li
179*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)180*67e74705SXin Li _mm256_mask_cmpge_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
181*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 5,
182*67e74705SXin Li __u);
183*67e74705SXin Li }
184*67e74705SXin Li
185*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epi16_mask(__m128i __a,__m128i __b)186*67e74705SXin Li _mm_cmpge_epi16_mask(__m128i __a, __m128i __b) {
187*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
188*67e74705SXin Li (__mmask8)-1);
189*67e74705SXin Li }
190*67e74705SXin Li
191*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)192*67e74705SXin Li _mm_mask_cmpge_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
193*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
194*67e74705SXin Li __u);
195*67e74705SXin Li }
196*67e74705SXin Li
197*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epu16_mask(__m128i __a,__m128i __b)198*67e74705SXin Li _mm_cmpge_epu16_mask(__m128i __a, __m128i __b) {
199*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
200*67e74705SXin Li (__mmask8)-1);
201*67e74705SXin Li }
202*67e74705SXin Li
203*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)204*67e74705SXin Li _mm_mask_cmpge_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
205*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 5,
206*67e74705SXin Li __u);
207*67e74705SXin Li }
208*67e74705SXin Li
209*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpge_epi16_mask(__m256i __a,__m256i __b)210*67e74705SXin Li _mm256_cmpge_epi16_mask(__m256i __a, __m256i __b) {
211*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
212*67e74705SXin Li (__mmask16)-1);
213*67e74705SXin Li }
214*67e74705SXin Li
215*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)216*67e74705SXin Li _mm256_mask_cmpge_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
217*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
218*67e74705SXin Li __u);
219*67e74705SXin Li }
220*67e74705SXin Li
221*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpge_epu16_mask(__m256i __a,__m256i __b)222*67e74705SXin Li _mm256_cmpge_epu16_mask(__m256i __a, __m256i __b) {
223*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
224*67e74705SXin Li (__mmask16)-1);
225*67e74705SXin Li }
226*67e74705SXin Li
227*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)228*67e74705SXin Li _mm256_mask_cmpge_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
229*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 5,
230*67e74705SXin Li __u);
231*67e74705SXin Li }
232*67e74705SXin Li
233*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpgt_epi8_mask(__m128i __a,__m128i __b)234*67e74705SXin Li _mm_cmpgt_epi8_mask(__m128i __a, __m128i __b) {
235*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
236*67e74705SXin Li (__mmask16)-1);
237*67e74705SXin Li }
238*67e74705SXin Li
239*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)240*67e74705SXin Li _mm_mask_cmpgt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
241*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpgtb128_mask((__v16qi)__a, (__v16qi)__b,
242*67e74705SXin Li __u);
243*67e74705SXin Li }
244*67e74705SXin Li
245*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpgt_epu8_mask(__m128i __a,__m128i __b)246*67e74705SXin Li _mm_cmpgt_epu8_mask(__m128i __a, __m128i __b) {
247*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
248*67e74705SXin Li (__mmask16)-1);
249*67e74705SXin Li }
250*67e74705SXin Li
251*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)252*67e74705SXin Li _mm_mask_cmpgt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
253*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 6,
254*67e74705SXin Li __u);
255*67e74705SXin Li }
256*67e74705SXin Li
257*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi8_mask(__m256i __a,__m256i __b)258*67e74705SXin Li _mm256_cmpgt_epi8_mask(__m256i __a, __m256i __b) {
259*67e74705SXin Li return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
260*67e74705SXin Li (__mmask32)-1);
261*67e74705SXin Li }
262*67e74705SXin Li
263*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)264*67e74705SXin Li _mm256_mask_cmpgt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
265*67e74705SXin Li return (__mmask32)__builtin_ia32_pcmpgtb256_mask((__v32qi)__a, (__v32qi)__b,
266*67e74705SXin Li __u);
267*67e74705SXin Li }
268*67e74705SXin Li
269*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epu8_mask(__m256i __a,__m256i __b)270*67e74705SXin Li _mm256_cmpgt_epu8_mask(__m256i __a, __m256i __b) {
271*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
272*67e74705SXin Li (__mmask32)-1);
273*67e74705SXin Li }
274*67e74705SXin Li
275*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)276*67e74705SXin Li _mm256_mask_cmpgt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
277*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 6,
278*67e74705SXin Li __u);
279*67e74705SXin Li }
280*67e74705SXin Li
281*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epi16_mask(__m128i __a,__m128i __b)282*67e74705SXin Li _mm_cmpgt_epi16_mask(__m128i __a, __m128i __b) {
283*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
284*67e74705SXin Li (__mmask8)-1);
285*67e74705SXin Li }
286*67e74705SXin Li
287*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)288*67e74705SXin Li _mm_mask_cmpgt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
289*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtw128_mask((__v8hi)__a, (__v8hi)__b,
290*67e74705SXin Li __u);
291*67e74705SXin Li }
292*67e74705SXin Li
293*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epu16_mask(__m128i __a,__m128i __b)294*67e74705SXin Li _mm_cmpgt_epu16_mask(__m128i __a, __m128i __b) {
295*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
296*67e74705SXin Li (__mmask8)-1);
297*67e74705SXin Li }
298*67e74705SXin Li
299*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)300*67e74705SXin Li _mm_mask_cmpgt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
301*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 6,
302*67e74705SXin Li __u);
303*67e74705SXin Li }
304*67e74705SXin Li
305*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi16_mask(__m256i __a,__m256i __b)306*67e74705SXin Li _mm256_cmpgt_epi16_mask(__m256i __a, __m256i __b) {
307*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
308*67e74705SXin Li (__mmask16)-1);
309*67e74705SXin Li }
310*67e74705SXin Li
311*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)312*67e74705SXin Li _mm256_mask_cmpgt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
313*67e74705SXin Li return (__mmask16)__builtin_ia32_pcmpgtw256_mask((__v16hi)__a, (__v16hi)__b,
314*67e74705SXin Li __u);
315*67e74705SXin Li }
316*67e74705SXin Li
317*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epu16_mask(__m256i __a,__m256i __b)318*67e74705SXin Li _mm256_cmpgt_epu16_mask(__m256i __a, __m256i __b) {
319*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
320*67e74705SXin Li (__mmask16)-1);
321*67e74705SXin Li }
322*67e74705SXin Li
323*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)324*67e74705SXin Li _mm256_mask_cmpgt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
325*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 6,
326*67e74705SXin Li __u);
327*67e74705SXin Li }
328*67e74705SXin Li
329*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmple_epi8_mask(__m128i __a,__m128i __b)330*67e74705SXin Li _mm_cmple_epi8_mask(__m128i __a, __m128i __b) {
331*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
332*67e74705SXin Li (__mmask16)-1);
333*67e74705SXin Li }
334*67e74705SXin Li
335*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)336*67e74705SXin Li _mm_mask_cmple_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
337*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
338*67e74705SXin Li __u);
339*67e74705SXin Li }
340*67e74705SXin Li
341*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmple_epu8_mask(__m128i __a,__m128i __b)342*67e74705SXin Li _mm_cmple_epu8_mask(__m128i __a, __m128i __b) {
343*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
344*67e74705SXin Li (__mmask16)-1);
345*67e74705SXin Li }
346*67e74705SXin Li
347*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)348*67e74705SXin Li _mm_mask_cmple_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
349*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 2,
350*67e74705SXin Li __u);
351*67e74705SXin Li }
352*67e74705SXin Li
353*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmple_epi8_mask(__m256i __a,__m256i __b)354*67e74705SXin Li _mm256_cmple_epi8_mask(__m256i __a, __m256i __b) {
355*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
356*67e74705SXin Li (__mmask32)-1);
357*67e74705SXin Li }
358*67e74705SXin Li
359*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)360*67e74705SXin Li _mm256_mask_cmple_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
361*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
362*67e74705SXin Li __u);
363*67e74705SXin Li }
364*67e74705SXin Li
365*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmple_epu8_mask(__m256i __a,__m256i __b)366*67e74705SXin Li _mm256_cmple_epu8_mask(__m256i __a, __m256i __b) {
367*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
368*67e74705SXin Li (__mmask32)-1);
369*67e74705SXin Li }
370*67e74705SXin Li
371*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)372*67e74705SXin Li _mm256_mask_cmple_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
373*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 2,
374*67e74705SXin Li __u);
375*67e74705SXin Li }
376*67e74705SXin Li
377*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epi16_mask(__m128i __a,__m128i __b)378*67e74705SXin Li _mm_cmple_epi16_mask(__m128i __a, __m128i __b) {
379*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
380*67e74705SXin Li (__mmask8)-1);
381*67e74705SXin Li }
382*67e74705SXin Li
383*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)384*67e74705SXin Li _mm_mask_cmple_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
385*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
386*67e74705SXin Li __u);
387*67e74705SXin Li }
388*67e74705SXin Li
389*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epu16_mask(__m128i __a,__m128i __b)390*67e74705SXin Li _mm_cmple_epu16_mask(__m128i __a, __m128i __b) {
391*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
392*67e74705SXin Li (__mmask8)-1);
393*67e74705SXin Li }
394*67e74705SXin Li
395*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)396*67e74705SXin Li _mm_mask_cmple_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
397*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 2,
398*67e74705SXin Li __u);
399*67e74705SXin Li }
400*67e74705SXin Li
401*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmple_epi16_mask(__m256i __a,__m256i __b)402*67e74705SXin Li _mm256_cmple_epi16_mask(__m256i __a, __m256i __b) {
403*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
404*67e74705SXin Li (__mmask16)-1);
405*67e74705SXin Li }
406*67e74705SXin Li
407*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)408*67e74705SXin Li _mm256_mask_cmple_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
409*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
410*67e74705SXin Li __u);
411*67e74705SXin Li }
412*67e74705SXin Li
413*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmple_epu16_mask(__m256i __a,__m256i __b)414*67e74705SXin Li _mm256_cmple_epu16_mask(__m256i __a, __m256i __b) {
415*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
416*67e74705SXin Li (__mmask16)-1);
417*67e74705SXin Li }
418*67e74705SXin Li
419*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)420*67e74705SXin Li _mm256_mask_cmple_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
421*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 2,
422*67e74705SXin Li __u);
423*67e74705SXin Li }
424*67e74705SXin Li
425*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmplt_epi8_mask(__m128i __a,__m128i __b)426*67e74705SXin Li _mm_cmplt_epi8_mask(__m128i __a, __m128i __b) {
427*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
428*67e74705SXin Li (__mmask16)-1);
429*67e74705SXin Li }
430*67e74705SXin Li
431*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)432*67e74705SXin Li _mm_mask_cmplt_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
433*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
434*67e74705SXin Li __u);
435*67e74705SXin Li }
436*67e74705SXin Li
437*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmplt_epu8_mask(__m128i __a,__m128i __b)438*67e74705SXin Li _mm_cmplt_epu8_mask(__m128i __a, __m128i __b) {
439*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
440*67e74705SXin Li (__mmask16)-1);
441*67e74705SXin Li }
442*67e74705SXin Li
443*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)444*67e74705SXin Li _mm_mask_cmplt_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
445*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 1,
446*67e74705SXin Li __u);
447*67e74705SXin Li }
448*67e74705SXin Li
449*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmplt_epi8_mask(__m256i __a,__m256i __b)450*67e74705SXin Li _mm256_cmplt_epi8_mask(__m256i __a, __m256i __b) {
451*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
452*67e74705SXin Li (__mmask32)-1);
453*67e74705SXin Li }
454*67e74705SXin Li
455*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)456*67e74705SXin Li _mm256_mask_cmplt_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
457*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
458*67e74705SXin Li __u);
459*67e74705SXin Li }
460*67e74705SXin Li
461*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmplt_epu8_mask(__m256i __a,__m256i __b)462*67e74705SXin Li _mm256_cmplt_epu8_mask(__m256i __a, __m256i __b) {
463*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
464*67e74705SXin Li (__mmask32)-1);
465*67e74705SXin Li }
466*67e74705SXin Li
467*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)468*67e74705SXin Li _mm256_mask_cmplt_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
469*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 1,
470*67e74705SXin Li __u);
471*67e74705SXin Li }
472*67e74705SXin Li
473*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epi16_mask(__m128i __a,__m128i __b)474*67e74705SXin Li _mm_cmplt_epi16_mask(__m128i __a, __m128i __b) {
475*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
476*67e74705SXin Li (__mmask8)-1);
477*67e74705SXin Li }
478*67e74705SXin Li
479*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)480*67e74705SXin Li _mm_mask_cmplt_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
481*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
482*67e74705SXin Li __u);
483*67e74705SXin Li }
484*67e74705SXin Li
485*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epu16_mask(__m128i __a,__m128i __b)486*67e74705SXin Li _mm_cmplt_epu16_mask(__m128i __a, __m128i __b) {
487*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
488*67e74705SXin Li (__mmask8)-1);
489*67e74705SXin Li }
490*67e74705SXin Li
491*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)492*67e74705SXin Li _mm_mask_cmplt_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
493*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 1,
494*67e74705SXin Li __u);
495*67e74705SXin Li }
496*67e74705SXin Li
497*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmplt_epi16_mask(__m256i __a,__m256i __b)498*67e74705SXin Li _mm256_cmplt_epi16_mask(__m256i __a, __m256i __b) {
499*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
500*67e74705SXin Li (__mmask16)-1);
501*67e74705SXin Li }
502*67e74705SXin Li
503*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)504*67e74705SXin Li _mm256_mask_cmplt_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
505*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
506*67e74705SXin Li __u);
507*67e74705SXin Li }
508*67e74705SXin Li
509*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmplt_epu16_mask(__m256i __a,__m256i __b)510*67e74705SXin Li _mm256_cmplt_epu16_mask(__m256i __a, __m256i __b) {
511*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
512*67e74705SXin Li (__mmask16)-1);
513*67e74705SXin Li }
514*67e74705SXin Li
515*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)516*67e74705SXin Li _mm256_mask_cmplt_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
517*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 1,
518*67e74705SXin Li __u);
519*67e74705SXin Li }
520*67e74705SXin Li
521*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpneq_epi8_mask(__m128i __a,__m128i __b)522*67e74705SXin Li _mm_cmpneq_epi8_mask(__m128i __a, __m128i __b) {
523*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
524*67e74705SXin Li (__mmask16)-1);
525*67e74705SXin Li }
526*67e74705SXin Li
527*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epi8_mask(__mmask16 __u,__m128i __a,__m128i __b)528*67e74705SXin Li _mm_mask_cmpneq_epi8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
529*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
530*67e74705SXin Li __u);
531*67e74705SXin Li }
532*67e74705SXin Li
533*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_cmpneq_epu8_mask(__m128i __a,__m128i __b)534*67e74705SXin Li _mm_cmpneq_epu8_mask(__m128i __a, __m128i __b) {
535*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
536*67e74705SXin Li (__mmask16)-1);
537*67e74705SXin Li }
538*67e74705SXin Li
539*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epu8_mask(__mmask16 __u,__m128i __a,__m128i __b)540*67e74705SXin Li _mm_mask_cmpneq_epu8_mask(__mmask16 __u, __m128i __a, __m128i __b) {
541*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)__a, (__v16qi)__b, 4,
542*67e74705SXin Li __u);
543*67e74705SXin Li }
544*67e74705SXin Li
545*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epi8_mask(__m256i __a,__m256i __b)546*67e74705SXin Li _mm256_cmpneq_epi8_mask(__m256i __a, __m256i __b) {
547*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
548*67e74705SXin Li (__mmask32)-1);
549*67e74705SXin Li }
550*67e74705SXin Li
551*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epi8_mask(__mmask32 __u,__m256i __a,__m256i __b)552*67e74705SXin Li _mm256_mask_cmpneq_epi8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
553*67e74705SXin Li return (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
554*67e74705SXin Li __u);
555*67e74705SXin Li }
556*67e74705SXin Li
557*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epu8_mask(__m256i __a,__m256i __b)558*67e74705SXin Li _mm256_cmpneq_epu8_mask(__m256i __a, __m256i __b) {
559*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
560*67e74705SXin Li (__mmask32)-1);
561*67e74705SXin Li }
562*67e74705SXin Li
563*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epu8_mask(__mmask32 __u,__m256i __a,__m256i __b)564*67e74705SXin Li _mm256_mask_cmpneq_epu8_mask(__mmask32 __u, __m256i __a, __m256i __b) {
565*67e74705SXin Li return (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)__a, (__v32qi)__b, 4,
566*67e74705SXin Li __u);
567*67e74705SXin Li }
568*67e74705SXin Li
569*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epi16_mask(__m128i __a,__m128i __b)570*67e74705SXin Li _mm_cmpneq_epi16_mask(__m128i __a, __m128i __b) {
571*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
572*67e74705SXin Li (__mmask8)-1);
573*67e74705SXin Li }
574*67e74705SXin Li
575*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epi16_mask(__mmask8 __u,__m128i __a,__m128i __b)576*67e74705SXin Li _mm_mask_cmpneq_epi16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
577*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
578*67e74705SXin Li __u);
579*67e74705SXin Li }
580*67e74705SXin Li
581*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epu16_mask(__m128i __a,__m128i __b)582*67e74705SXin Li _mm_cmpneq_epu16_mask(__m128i __a, __m128i __b) {
583*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
584*67e74705SXin Li (__mmask8)-1);
585*67e74705SXin Li }
586*67e74705SXin Li
587*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epu16_mask(__mmask8 __u,__m128i __a,__m128i __b)588*67e74705SXin Li _mm_mask_cmpneq_epu16_mask(__mmask8 __u, __m128i __a, __m128i __b) {
589*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)__a, (__v8hi)__b, 4,
590*67e74705SXin Li __u);
591*67e74705SXin Li }
592*67e74705SXin Li
593*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epi16_mask(__m256i __a,__m256i __b)594*67e74705SXin Li _mm256_cmpneq_epi16_mask(__m256i __a, __m256i __b) {
595*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
596*67e74705SXin Li (__mmask16)-1);
597*67e74705SXin Li }
598*67e74705SXin Li
599*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epi16_mask(__mmask16 __u,__m256i __a,__m256i __b)600*67e74705SXin Li _mm256_mask_cmpneq_epi16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
601*67e74705SXin Li return (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
602*67e74705SXin Li __u);
603*67e74705SXin Li }
604*67e74705SXin Li
605*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epu16_mask(__m256i __a,__m256i __b)606*67e74705SXin Li _mm256_cmpneq_epu16_mask(__m256i __a, __m256i __b) {
607*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
608*67e74705SXin Li (__mmask16)-1);
609*67e74705SXin Li }
610*67e74705SXin Li
611*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epu16_mask(__mmask16 __u,__m256i __a,__m256i __b)612*67e74705SXin Li _mm256_mask_cmpneq_epu16_mask(__mmask16 __u, __m256i __a, __m256i __b) {
613*67e74705SXin Li return (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)__a, (__v16hi)__b, 4,
614*67e74705SXin Li __u);
615*67e74705SXin Li }
616*67e74705SXin Li
617*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_add_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)618*67e74705SXin Li _mm256_mask_add_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B){
619*67e74705SXin Li return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
620*67e74705SXin Li (__v32qi) __B,
621*67e74705SXin Li (__v32qi) __W,
622*67e74705SXin Li (__mmask32) __U);
623*67e74705SXin Li }
624*67e74705SXin Li
625*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_add_epi8(__mmask32 __U,__m256i __A,__m256i __B)626*67e74705SXin Li _mm256_maskz_add_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
627*67e74705SXin Li return (__m256i) __builtin_ia32_paddb256_mask ((__v32qi) __A,
628*67e74705SXin Li (__v32qi) __B,
629*67e74705SXin Li (__v32qi)
630*67e74705SXin Li _mm256_setzero_si256 (),
631*67e74705SXin Li (__mmask32) __U);
632*67e74705SXin Li }
633*67e74705SXin Li
634*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_add_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)635*67e74705SXin Li _mm256_mask_add_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
636*67e74705SXin Li return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
637*67e74705SXin Li (__v16hi) __B,
638*67e74705SXin Li (__v16hi) __W,
639*67e74705SXin Li (__mmask16) __U);
640*67e74705SXin Li }
641*67e74705SXin Li
642*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_add_epi16(__mmask16 __U,__m256i __A,__m256i __B)643*67e74705SXin Li _mm256_maskz_add_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
644*67e74705SXin Li return (__m256i) __builtin_ia32_paddw256_mask ((__v16hi) __A,
645*67e74705SXin Li (__v16hi) __B,
646*67e74705SXin Li (__v16hi)
647*67e74705SXin Li _mm256_setzero_si256 (),
648*67e74705SXin Li (__mmask16) __U);
649*67e74705SXin Li }
650*67e74705SXin Li
651*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sub_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)652*67e74705SXin Li _mm256_mask_sub_epi8 (__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
653*67e74705SXin Li return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
654*67e74705SXin Li (__v32qi) __B,
655*67e74705SXin Li (__v32qi) __W,
656*67e74705SXin Li (__mmask32) __U);
657*67e74705SXin Li }
658*67e74705SXin Li
659*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sub_epi8(__mmask32 __U,__m256i __A,__m256i __B)660*67e74705SXin Li _mm256_maskz_sub_epi8 (__mmask32 __U, __m256i __A, __m256i __B) {
661*67e74705SXin Li return (__m256i) __builtin_ia32_psubb256_mask ((__v32qi) __A,
662*67e74705SXin Li (__v32qi) __B,
663*67e74705SXin Li (__v32qi)
664*67e74705SXin Li _mm256_setzero_si256 (),
665*67e74705SXin Li (__mmask32) __U);
666*67e74705SXin Li }
667*67e74705SXin Li
668*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sub_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)669*67e74705SXin Li _mm256_mask_sub_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
670*67e74705SXin Li return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
671*67e74705SXin Li (__v16hi) __B,
672*67e74705SXin Li (__v16hi) __W,
673*67e74705SXin Li (__mmask16) __U);
674*67e74705SXin Li }
675*67e74705SXin Li
676*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sub_epi16(__mmask16 __U,__m256i __A,__m256i __B)677*67e74705SXin Li _mm256_maskz_sub_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
678*67e74705SXin Li return (__m256i) __builtin_ia32_psubw256_mask ((__v16hi) __A,
679*67e74705SXin Li (__v16hi) __B,
680*67e74705SXin Li (__v16hi)
681*67e74705SXin Li _mm256_setzero_si256 (),
682*67e74705SXin Li (__mmask16) __U);
683*67e74705SXin Li }
684*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_add_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)685*67e74705SXin Li _mm_mask_add_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
686*67e74705SXin Li return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
687*67e74705SXin Li (__v16qi) __B,
688*67e74705SXin Li (__v16qi) __W,
689*67e74705SXin Li (__mmask16) __U);
690*67e74705SXin Li }
691*67e74705SXin Li
692*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_add_epi8(__mmask16 __U,__m128i __A,__m128i __B)693*67e74705SXin Li _mm_maskz_add_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
694*67e74705SXin Li return (__m128i) __builtin_ia32_paddb128_mask ((__v16qi) __A,
695*67e74705SXin Li (__v16qi) __B,
696*67e74705SXin Li (__v16qi)
697*67e74705SXin Li _mm_setzero_si128 (),
698*67e74705SXin Li (__mmask16) __U);
699*67e74705SXin Li }
700*67e74705SXin Li
701*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_add_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)702*67e74705SXin Li _mm_mask_add_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
703*67e74705SXin Li return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
704*67e74705SXin Li (__v8hi) __B,
705*67e74705SXin Li (__v8hi) __W,
706*67e74705SXin Li (__mmask8) __U);
707*67e74705SXin Li }
708*67e74705SXin Li
709*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_add_epi16(__mmask8 __U,__m128i __A,__m128i __B)710*67e74705SXin Li _mm_maskz_add_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
711*67e74705SXin Li return (__m128i) __builtin_ia32_paddw128_mask ((__v8hi) __A,
712*67e74705SXin Li (__v8hi) __B,
713*67e74705SXin Li (__v8hi)
714*67e74705SXin Li _mm_setzero_si128 (),
715*67e74705SXin Li (__mmask8) __U);
716*67e74705SXin Li }
717*67e74705SXin Li
718*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sub_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)719*67e74705SXin Li _mm_mask_sub_epi8 (__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
720*67e74705SXin Li return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
721*67e74705SXin Li (__v16qi) __B,
722*67e74705SXin Li (__v16qi) __W,
723*67e74705SXin Li (__mmask16) __U);
724*67e74705SXin Li }
725*67e74705SXin Li
726*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sub_epi8(__mmask16 __U,__m128i __A,__m128i __B)727*67e74705SXin Li _mm_maskz_sub_epi8 (__mmask16 __U, __m128i __A, __m128i __B) {
728*67e74705SXin Li return (__m128i) __builtin_ia32_psubb128_mask ((__v16qi) __A,
729*67e74705SXin Li (__v16qi) __B,
730*67e74705SXin Li (__v16qi)
731*67e74705SXin Li _mm_setzero_si128 (),
732*67e74705SXin Li (__mmask16) __U);
733*67e74705SXin Li }
734*67e74705SXin Li
735*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sub_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)736*67e74705SXin Li _mm_mask_sub_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
737*67e74705SXin Li return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
738*67e74705SXin Li (__v8hi) __B,
739*67e74705SXin Li (__v8hi) __W,
740*67e74705SXin Li (__mmask8) __U);
741*67e74705SXin Li }
742*67e74705SXin Li
743*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sub_epi16(__mmask8 __U,__m128i __A,__m128i __B)744*67e74705SXin Li _mm_maskz_sub_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
745*67e74705SXin Li return (__m128i) __builtin_ia32_psubw128_mask ((__v8hi) __A,
746*67e74705SXin Li (__v8hi) __B,
747*67e74705SXin Li (__v8hi)
748*67e74705SXin Li _mm_setzero_si128 (),
749*67e74705SXin Li (__mmask8) __U);
750*67e74705SXin Li }
751*67e74705SXin Li
752*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mullo_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)753*67e74705SXin Li _mm256_mask_mullo_epi16 (__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
754*67e74705SXin Li return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
755*67e74705SXin Li (__v16hi) __B,
756*67e74705SXin Li (__v16hi) __W,
757*67e74705SXin Li (__mmask16) __U);
758*67e74705SXin Li }
759*67e74705SXin Li
760*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mullo_epi16(__mmask16 __U,__m256i __A,__m256i __B)761*67e74705SXin Li _mm256_maskz_mullo_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
762*67e74705SXin Li return (__m256i) __builtin_ia32_pmullw256_mask ((__v16hi) __A,
763*67e74705SXin Li (__v16hi) __B,
764*67e74705SXin Li (__v16hi)
765*67e74705SXin Li _mm256_setzero_si256 (),
766*67e74705SXin Li (__mmask16) __U);
767*67e74705SXin Li }
768*67e74705SXin Li
769*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mullo_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)770*67e74705SXin Li _mm_mask_mullo_epi16 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
771*67e74705SXin Li return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
772*67e74705SXin Li (__v8hi) __B,
773*67e74705SXin Li (__v8hi) __W,
774*67e74705SXin Li (__mmask8) __U);
775*67e74705SXin Li }
776*67e74705SXin Li
777*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mullo_epi16(__mmask8 __U,__m128i __A,__m128i __B)778*67e74705SXin Li _mm_maskz_mullo_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
779*67e74705SXin Li return (__m128i) __builtin_ia32_pmullw128_mask ((__v8hi) __A,
780*67e74705SXin Li (__v8hi) __B,
781*67e74705SXin Li (__v8hi)
782*67e74705SXin Li _mm_setzero_si128 (),
783*67e74705SXin Li (__mmask8) __U);
784*67e74705SXin Li }
785*67e74705SXin Li
786*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_blend_epi8(__mmask16 __U,__m128i __A,__m128i __W)787*67e74705SXin Li _mm_mask_blend_epi8 (__mmask16 __U, __m128i __A, __m128i __W)
788*67e74705SXin Li {
789*67e74705SXin Li return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
790*67e74705SXin Li (__v16qi) __W,
791*67e74705SXin Li (__v16qi) __A);
792*67e74705SXin Li }
793*67e74705SXin Li
794*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_blend_epi8(__mmask32 __U,__m256i __A,__m256i __W)795*67e74705SXin Li _mm256_mask_blend_epi8 (__mmask32 __U, __m256i __A, __m256i __W)
796*67e74705SXin Li {
797*67e74705SXin Li return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
798*67e74705SXin Li (__v32qi) __W,
799*67e74705SXin Li (__v32qi) __A);
800*67e74705SXin Li }
801*67e74705SXin Li
802*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_blend_epi16(__mmask8 __U,__m128i __A,__m128i __W)803*67e74705SXin Li _mm_mask_blend_epi16 (__mmask8 __U, __m128i __A, __m128i __W)
804*67e74705SXin Li {
805*67e74705SXin Li return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
806*67e74705SXin Li (__v8hi) __W,
807*67e74705SXin Li (__v8hi) __A);
808*67e74705SXin Li }
809*67e74705SXin Li
810*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_blend_epi16(__mmask16 __U,__m256i __A,__m256i __W)811*67e74705SXin Li _mm256_mask_blend_epi16 (__mmask16 __U, __m256i __A, __m256i __W)
812*67e74705SXin Li {
813*67e74705SXin Li return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
814*67e74705SXin Li (__v16hi) __W,
815*67e74705SXin Li (__v16hi) __A);
816*67e74705SXin Li }
817*67e74705SXin Li
818*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_abs_epi8(__m128i __W,__mmask16 __U,__m128i __A)819*67e74705SXin Li _mm_mask_abs_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
820*67e74705SXin Li {
821*67e74705SXin Li return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
822*67e74705SXin Li (__v16qi) __W,
823*67e74705SXin Li (__mmask16) __U);
824*67e74705SXin Li }
825*67e74705SXin Li
826*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_abs_epi8(__mmask16 __U,__m128i __A)827*67e74705SXin Li _mm_maskz_abs_epi8 (__mmask16 __U, __m128i __A)
828*67e74705SXin Li {
829*67e74705SXin Li return (__m128i) __builtin_ia32_pabsb128_mask ((__v16qi) __A,
830*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
831*67e74705SXin Li (__mmask16) __U);
832*67e74705SXin Li }
833*67e74705SXin Li
834*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_abs_epi8(__m256i __W,__mmask32 __U,__m256i __A)835*67e74705SXin Li _mm256_mask_abs_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
836*67e74705SXin Li {
837*67e74705SXin Li return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
838*67e74705SXin Li (__v32qi) __W,
839*67e74705SXin Li (__mmask32) __U);
840*67e74705SXin Li }
841*67e74705SXin Li
842*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_abs_epi8(__mmask32 __U,__m256i __A)843*67e74705SXin Li _mm256_maskz_abs_epi8 (__mmask32 __U, __m256i __A)
844*67e74705SXin Li {
845*67e74705SXin Li return (__m256i) __builtin_ia32_pabsb256_mask ((__v32qi) __A,
846*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
847*67e74705SXin Li (__mmask32) __U);
848*67e74705SXin Li }
849*67e74705SXin Li
850*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_abs_epi16(__m128i __W,__mmask8 __U,__m128i __A)851*67e74705SXin Li _mm_mask_abs_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
852*67e74705SXin Li {
853*67e74705SXin Li return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
854*67e74705SXin Li (__v8hi) __W,
855*67e74705SXin Li (__mmask8) __U);
856*67e74705SXin Li }
857*67e74705SXin Li
858*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_abs_epi16(__mmask8 __U,__m128i __A)859*67e74705SXin Li _mm_maskz_abs_epi16 (__mmask8 __U, __m128i __A)
860*67e74705SXin Li {
861*67e74705SXin Li return (__m128i) __builtin_ia32_pabsw128_mask ((__v8hi) __A,
862*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
863*67e74705SXin Li (__mmask8) __U);
864*67e74705SXin Li }
865*67e74705SXin Li
866*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_abs_epi16(__m256i __W,__mmask16 __U,__m256i __A)867*67e74705SXin Li _mm256_mask_abs_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
868*67e74705SXin Li {
869*67e74705SXin Li return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
870*67e74705SXin Li (__v16hi) __W,
871*67e74705SXin Li (__mmask16) __U);
872*67e74705SXin Li }
873*67e74705SXin Li
874*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_abs_epi16(__mmask16 __U,__m256i __A)875*67e74705SXin Li _mm256_maskz_abs_epi16 (__mmask16 __U, __m256i __A)
876*67e74705SXin Li {
877*67e74705SXin Li return (__m256i) __builtin_ia32_pabsw256_mask ((__v16hi) __A,
878*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
879*67e74705SXin Li (__mmask16) __U);
880*67e74705SXin Li }
881*67e74705SXin Li
882*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_packs_epi32(__mmask8 __M,__m128i __A,__m128i __B)883*67e74705SXin Li _mm_maskz_packs_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
884*67e74705SXin Li {
885*67e74705SXin Li return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
886*67e74705SXin Li (__v4si) __B,
887*67e74705SXin Li (__v8hi) _mm_setzero_si128 (), __M);
888*67e74705SXin Li }
889*67e74705SXin Li
890*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_packs_epi32(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)891*67e74705SXin Li _mm_mask_packs_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
892*67e74705SXin Li __m128i __B)
893*67e74705SXin Li {
894*67e74705SXin Li return (__m128i) __builtin_ia32_packssdw128_mask ((__v4si) __A,
895*67e74705SXin Li (__v4si) __B,
896*67e74705SXin Li (__v8hi) __W, __M);
897*67e74705SXin Li }
898*67e74705SXin Li
899*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_packs_epi32(__mmask16 __M,__m256i __A,__m256i __B)900*67e74705SXin Li _mm256_maskz_packs_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
901*67e74705SXin Li {
902*67e74705SXin Li return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
903*67e74705SXin Li (__v8si) __B,
904*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
905*67e74705SXin Li __M);
906*67e74705SXin Li }
907*67e74705SXin Li
908*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_packs_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)909*67e74705SXin Li _mm256_mask_packs_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
910*67e74705SXin Li __m256i __B)
911*67e74705SXin Li {
912*67e74705SXin Li return (__m256i) __builtin_ia32_packssdw256_mask ((__v8si) __A,
913*67e74705SXin Li (__v8si) __B,
914*67e74705SXin Li (__v16hi) __W, __M);
915*67e74705SXin Li }
916*67e74705SXin Li
917*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_packs_epi16(__mmask16 __M,__m128i __A,__m128i __B)918*67e74705SXin Li _mm_maskz_packs_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
919*67e74705SXin Li {
920*67e74705SXin Li return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
921*67e74705SXin Li (__v8hi) __B,
922*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
923*67e74705SXin Li __M);
924*67e74705SXin Li }
925*67e74705SXin Li
926*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_packs_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)927*67e74705SXin Li _mm_mask_packs_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
928*67e74705SXin Li __m128i __B)
929*67e74705SXin Li {
930*67e74705SXin Li return (__m128i) __builtin_ia32_packsswb128_mask ((__v8hi) __A,
931*67e74705SXin Li (__v8hi) __B,
932*67e74705SXin Li (__v16qi) __W,
933*67e74705SXin Li __M);
934*67e74705SXin Li }
935*67e74705SXin Li
936*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_packs_epi16(__mmask32 __M,__m256i __A,__m256i __B)937*67e74705SXin Li _mm256_maskz_packs_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
938*67e74705SXin Li {
939*67e74705SXin Li return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
940*67e74705SXin Li (__v16hi) __B,
941*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
942*67e74705SXin Li __M);
943*67e74705SXin Li }
944*67e74705SXin Li
945*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_packs_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)946*67e74705SXin Li _mm256_mask_packs_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
947*67e74705SXin Li __m256i __B)
948*67e74705SXin Li {
949*67e74705SXin Li return (__m256i) __builtin_ia32_packsswb256_mask ((__v16hi) __A,
950*67e74705SXin Li (__v16hi) __B,
951*67e74705SXin Li (__v32qi) __W,
952*67e74705SXin Li __M);
953*67e74705SXin Li }
954*67e74705SXin Li
955*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_packus_epi32(__mmask8 __M,__m128i __A,__m128i __B)956*67e74705SXin Li _mm_maskz_packus_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
957*67e74705SXin Li {
958*67e74705SXin Li return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
959*67e74705SXin Li (__v4si) __B,
960*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
961*67e74705SXin Li __M);
962*67e74705SXin Li }
963*67e74705SXin Li
964*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_packus_epi32(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)965*67e74705SXin Li _mm_mask_packus_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
966*67e74705SXin Li __m128i __B)
967*67e74705SXin Li {
968*67e74705SXin Li return (__m128i) __builtin_ia32_packusdw128_mask ((__v4si) __A,
969*67e74705SXin Li (__v4si) __B,
970*67e74705SXin Li (__v8hi) __W, __M);
971*67e74705SXin Li }
972*67e74705SXin Li
973*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_packus_epi32(__mmask16 __M,__m256i __A,__m256i __B)974*67e74705SXin Li _mm256_maskz_packus_epi32 (__mmask16 __M, __m256i __A, __m256i __B)
975*67e74705SXin Li {
976*67e74705SXin Li return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
977*67e74705SXin Li (__v8si) __B,
978*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
979*67e74705SXin Li __M);
980*67e74705SXin Li }
981*67e74705SXin Li
982*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_packus_epi32(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)983*67e74705SXin Li _mm256_mask_packus_epi32 (__m256i __W, __mmask16 __M, __m256i __A,
984*67e74705SXin Li __m256i __B)
985*67e74705SXin Li {
986*67e74705SXin Li return (__m256i) __builtin_ia32_packusdw256_mask ((__v8si) __A,
987*67e74705SXin Li (__v8si) __B,
988*67e74705SXin Li (__v16hi) __W,
989*67e74705SXin Li __M);
990*67e74705SXin Li }
991*67e74705SXin Li
992*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_packus_epi16(__mmask16 __M,__m128i __A,__m128i __B)993*67e74705SXin Li _mm_maskz_packus_epi16 (__mmask16 __M, __m128i __A, __m128i __B)
994*67e74705SXin Li {
995*67e74705SXin Li return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
996*67e74705SXin Li (__v8hi) __B,
997*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
998*67e74705SXin Li __M);
999*67e74705SXin Li }
1000*67e74705SXin Li
1001*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_packus_epi16(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1002*67e74705SXin Li _mm_mask_packus_epi16 (__m128i __W, __mmask16 __M, __m128i __A,
1003*67e74705SXin Li __m128i __B)
1004*67e74705SXin Li {
1005*67e74705SXin Li return (__m128i) __builtin_ia32_packuswb128_mask ((__v8hi) __A,
1006*67e74705SXin Li (__v8hi) __B,
1007*67e74705SXin Li (__v16qi) __W,
1008*67e74705SXin Li __M);
1009*67e74705SXin Li }
1010*67e74705SXin Li
1011*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_packus_epi16(__mmask32 __M,__m256i __A,__m256i __B)1012*67e74705SXin Li _mm256_maskz_packus_epi16 (__mmask32 __M, __m256i __A, __m256i __B)
1013*67e74705SXin Li {
1014*67e74705SXin Li return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1015*67e74705SXin Li (__v16hi) __B,
1016*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1017*67e74705SXin Li __M);
1018*67e74705SXin Li }
1019*67e74705SXin Li
1020*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_packus_epi16(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1021*67e74705SXin Li _mm256_mask_packus_epi16 (__m256i __W, __mmask32 __M, __m256i __A,
1022*67e74705SXin Li __m256i __B)
1023*67e74705SXin Li {
1024*67e74705SXin Li return (__m256i) __builtin_ia32_packuswb256_mask ((__v16hi) __A,
1025*67e74705SXin Li (__v16hi) __B,
1026*67e74705SXin Li (__v32qi) __W,
1027*67e74705SXin Li __M);
1028*67e74705SXin Li }
1029*67e74705SXin Li
1030*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_adds_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1031*67e74705SXin Li _mm_mask_adds_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1032*67e74705SXin Li __m128i __B)
1033*67e74705SXin Li {
1034*67e74705SXin Li return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1035*67e74705SXin Li (__v16qi) __B,
1036*67e74705SXin Li (__v16qi) __W,
1037*67e74705SXin Li (__mmask16) __U);
1038*67e74705SXin Li }
1039*67e74705SXin Li
1040*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_adds_epi8(__mmask16 __U,__m128i __A,__m128i __B)1041*67e74705SXin Li _mm_maskz_adds_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1042*67e74705SXin Li {
1043*67e74705SXin Li return (__m128i) __builtin_ia32_paddsb128_mask ((__v16qi) __A,
1044*67e74705SXin Li (__v16qi) __B,
1045*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1046*67e74705SXin Li (__mmask16) __U);
1047*67e74705SXin Li }
1048*67e74705SXin Li
1049*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_adds_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1050*67e74705SXin Li _mm256_mask_adds_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1051*67e74705SXin Li __m256i __B)
1052*67e74705SXin Li {
1053*67e74705SXin Li return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1054*67e74705SXin Li (__v32qi) __B,
1055*67e74705SXin Li (__v32qi) __W,
1056*67e74705SXin Li (__mmask32) __U);
1057*67e74705SXin Li }
1058*67e74705SXin Li
1059*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_adds_epi8(__mmask32 __U,__m256i __A,__m256i __B)1060*67e74705SXin Li _mm256_maskz_adds_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1061*67e74705SXin Li {
1062*67e74705SXin Li return (__m256i) __builtin_ia32_paddsb256_mask ((__v32qi) __A,
1063*67e74705SXin Li (__v32qi) __B,
1064*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1065*67e74705SXin Li (__mmask32) __U);
1066*67e74705SXin Li }
1067*67e74705SXin Li
1068*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_adds_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1069*67e74705SXin Li _mm_mask_adds_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1070*67e74705SXin Li __m128i __B)
1071*67e74705SXin Li {
1072*67e74705SXin Li return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1073*67e74705SXin Li (__v8hi) __B,
1074*67e74705SXin Li (__v8hi) __W,
1075*67e74705SXin Li (__mmask8) __U);
1076*67e74705SXin Li }
1077*67e74705SXin Li
1078*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_adds_epi16(__mmask8 __U,__m128i __A,__m128i __B)1079*67e74705SXin Li _mm_maskz_adds_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1080*67e74705SXin Li {
1081*67e74705SXin Li return (__m128i) __builtin_ia32_paddsw128_mask ((__v8hi) __A,
1082*67e74705SXin Li (__v8hi) __B,
1083*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1084*67e74705SXin Li (__mmask8) __U);
1085*67e74705SXin Li }
1086*67e74705SXin Li
1087*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_adds_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1088*67e74705SXin Li _mm256_mask_adds_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1089*67e74705SXin Li __m256i __B)
1090*67e74705SXin Li {
1091*67e74705SXin Li return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1092*67e74705SXin Li (__v16hi) __B,
1093*67e74705SXin Li (__v16hi) __W,
1094*67e74705SXin Li (__mmask16) __U);
1095*67e74705SXin Li }
1096*67e74705SXin Li
1097*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_adds_epi16(__mmask16 __U,__m256i __A,__m256i __B)1098*67e74705SXin Li _mm256_maskz_adds_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1099*67e74705SXin Li {
1100*67e74705SXin Li return (__m256i) __builtin_ia32_paddsw256_mask ((__v16hi) __A,
1101*67e74705SXin Li (__v16hi) __B,
1102*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1103*67e74705SXin Li (__mmask16) __U);
1104*67e74705SXin Li }
1105*67e74705SXin Li
1106*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_adds_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1107*67e74705SXin Li _mm_mask_adds_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1108*67e74705SXin Li __m128i __B)
1109*67e74705SXin Li {
1110*67e74705SXin Li return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1111*67e74705SXin Li (__v16qi) __B,
1112*67e74705SXin Li (__v16qi) __W,
1113*67e74705SXin Li (__mmask16) __U);
1114*67e74705SXin Li }
1115*67e74705SXin Li
1116*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_adds_epu8(__mmask16 __U,__m128i __A,__m128i __B)1117*67e74705SXin Li _mm_maskz_adds_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1118*67e74705SXin Li {
1119*67e74705SXin Li return (__m128i) __builtin_ia32_paddusb128_mask ((__v16qi) __A,
1120*67e74705SXin Li (__v16qi) __B,
1121*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1122*67e74705SXin Li (__mmask16) __U);
1123*67e74705SXin Li }
1124*67e74705SXin Li
1125*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_adds_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1126*67e74705SXin Li _mm256_mask_adds_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1127*67e74705SXin Li __m256i __B)
1128*67e74705SXin Li {
1129*67e74705SXin Li return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1130*67e74705SXin Li (__v32qi) __B,
1131*67e74705SXin Li (__v32qi) __W,
1132*67e74705SXin Li (__mmask32) __U);
1133*67e74705SXin Li }
1134*67e74705SXin Li
1135*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_adds_epu8(__mmask32 __U,__m256i __A,__m256i __B)1136*67e74705SXin Li _mm256_maskz_adds_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1137*67e74705SXin Li {
1138*67e74705SXin Li return (__m256i) __builtin_ia32_paddusb256_mask ((__v32qi) __A,
1139*67e74705SXin Li (__v32qi) __B,
1140*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1141*67e74705SXin Li (__mmask32) __U);
1142*67e74705SXin Li }
1143*67e74705SXin Li
1144*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_adds_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1145*67e74705SXin Li _mm_mask_adds_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1146*67e74705SXin Li __m128i __B)
1147*67e74705SXin Li {
1148*67e74705SXin Li return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1149*67e74705SXin Li (__v8hi) __B,
1150*67e74705SXin Li (__v8hi) __W,
1151*67e74705SXin Li (__mmask8) __U);
1152*67e74705SXin Li }
1153*67e74705SXin Li
1154*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_adds_epu16(__mmask8 __U,__m128i __A,__m128i __B)1155*67e74705SXin Li _mm_maskz_adds_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1156*67e74705SXin Li {
1157*67e74705SXin Li return (__m128i) __builtin_ia32_paddusw128_mask ((__v8hi) __A,
1158*67e74705SXin Li (__v8hi) __B,
1159*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1160*67e74705SXin Li (__mmask8) __U);
1161*67e74705SXin Li }
1162*67e74705SXin Li
1163*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_adds_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1164*67e74705SXin Li _mm256_mask_adds_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1165*67e74705SXin Li __m256i __B)
1166*67e74705SXin Li {
1167*67e74705SXin Li return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1168*67e74705SXin Li (__v16hi) __B,
1169*67e74705SXin Li (__v16hi) __W,
1170*67e74705SXin Li (__mmask16) __U);
1171*67e74705SXin Li }
1172*67e74705SXin Li
1173*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_adds_epu16(__mmask16 __U,__m256i __A,__m256i __B)1174*67e74705SXin Li _mm256_maskz_adds_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1175*67e74705SXin Li {
1176*67e74705SXin Li return (__m256i) __builtin_ia32_paddusw256_mask ((__v16hi) __A,
1177*67e74705SXin Li (__v16hi) __B,
1178*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1179*67e74705SXin Li (__mmask16) __U);
1180*67e74705SXin Li }
1181*67e74705SXin Li
1182*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_avg_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1183*67e74705SXin Li _mm_mask_avg_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1184*67e74705SXin Li __m128i __B)
1185*67e74705SXin Li {
1186*67e74705SXin Li return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1187*67e74705SXin Li (__v16qi) __B,
1188*67e74705SXin Li (__v16qi) __W,
1189*67e74705SXin Li (__mmask16) __U);
1190*67e74705SXin Li }
1191*67e74705SXin Li
1192*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_avg_epu8(__mmask16 __U,__m128i __A,__m128i __B)1193*67e74705SXin Li _mm_maskz_avg_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1194*67e74705SXin Li {
1195*67e74705SXin Li return (__m128i) __builtin_ia32_pavgb128_mask ((__v16qi) __A,
1196*67e74705SXin Li (__v16qi) __B,
1197*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1198*67e74705SXin Li (__mmask16) __U);
1199*67e74705SXin Li }
1200*67e74705SXin Li
1201*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_avg_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1202*67e74705SXin Li _mm256_mask_avg_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1203*67e74705SXin Li __m256i __B)
1204*67e74705SXin Li {
1205*67e74705SXin Li return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1206*67e74705SXin Li (__v32qi) __B,
1207*67e74705SXin Li (__v32qi) __W,
1208*67e74705SXin Li (__mmask32) __U);
1209*67e74705SXin Li }
1210*67e74705SXin Li
1211*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_avg_epu8(__mmask32 __U,__m256i __A,__m256i __B)1212*67e74705SXin Li _mm256_maskz_avg_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1213*67e74705SXin Li {
1214*67e74705SXin Li return (__m256i) __builtin_ia32_pavgb256_mask ((__v32qi) __A,
1215*67e74705SXin Li (__v32qi) __B,
1216*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1217*67e74705SXin Li (__mmask32) __U);
1218*67e74705SXin Li }
1219*67e74705SXin Li
1220*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_avg_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1221*67e74705SXin Li _mm_mask_avg_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1222*67e74705SXin Li __m128i __B)
1223*67e74705SXin Li {
1224*67e74705SXin Li return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1225*67e74705SXin Li (__v8hi) __B,
1226*67e74705SXin Li (__v8hi) __W,
1227*67e74705SXin Li (__mmask8) __U);
1228*67e74705SXin Li }
1229*67e74705SXin Li
1230*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_avg_epu16(__mmask8 __U,__m128i __A,__m128i __B)1231*67e74705SXin Li _mm_maskz_avg_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1232*67e74705SXin Li {
1233*67e74705SXin Li return (__m128i) __builtin_ia32_pavgw128_mask ((__v8hi) __A,
1234*67e74705SXin Li (__v8hi) __B,
1235*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1236*67e74705SXin Li (__mmask8) __U);
1237*67e74705SXin Li }
1238*67e74705SXin Li
1239*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_avg_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1240*67e74705SXin Li _mm256_mask_avg_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1241*67e74705SXin Li __m256i __B)
1242*67e74705SXin Li {
1243*67e74705SXin Li return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1244*67e74705SXin Li (__v16hi) __B,
1245*67e74705SXin Li (__v16hi) __W,
1246*67e74705SXin Li (__mmask16) __U);
1247*67e74705SXin Li }
1248*67e74705SXin Li
1249*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_avg_epu16(__mmask16 __U,__m256i __A,__m256i __B)1250*67e74705SXin Li _mm256_maskz_avg_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1251*67e74705SXin Li {
1252*67e74705SXin Li return (__m256i) __builtin_ia32_pavgw256_mask ((__v16hi) __A,
1253*67e74705SXin Li (__v16hi) __B,
1254*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1255*67e74705SXin Li (__mmask16) __U);
1256*67e74705SXin Li }
1257*67e74705SXin Li
1258*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epi8(__mmask16 __M,__m128i __A,__m128i __B)1259*67e74705SXin Li _mm_maskz_max_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1260*67e74705SXin Li {
1261*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1262*67e74705SXin Li (__v16qi) __B,
1263*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1264*67e74705SXin Li (__mmask16) __M);
1265*67e74705SXin Li }
1266*67e74705SXin Li
1267*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1268*67e74705SXin Li _mm_mask_max_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1269*67e74705SXin Li __m128i __B)
1270*67e74705SXin Li {
1271*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsb128_mask ((__v16qi) __A,
1272*67e74705SXin Li (__v16qi) __B,
1273*67e74705SXin Li (__v16qi) __W,
1274*67e74705SXin Li (__mmask16) __M);
1275*67e74705SXin Li }
1276*67e74705SXin Li
1277*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epi8(__mmask32 __M,__m256i __A,__m256i __B)1278*67e74705SXin Li _mm256_maskz_max_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1279*67e74705SXin Li {
1280*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1281*67e74705SXin Li (__v32qi) __B,
1282*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1283*67e74705SXin Li (__mmask32) __M);
1284*67e74705SXin Li }
1285*67e74705SXin Li
1286*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1287*67e74705SXin Li _mm256_mask_max_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1288*67e74705SXin Li __m256i __B)
1289*67e74705SXin Li {
1290*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsb256_mask ((__v32qi) __A,
1291*67e74705SXin Li (__v32qi) __B,
1292*67e74705SXin Li (__v32qi) __W,
1293*67e74705SXin Li (__mmask32) __M);
1294*67e74705SXin Li }
1295*67e74705SXin Li
1296*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epi16(__mmask8 __M,__m128i __A,__m128i __B)1297*67e74705SXin Li _mm_maskz_max_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1298*67e74705SXin Li {
1299*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1300*67e74705SXin Li (__v8hi) __B,
1301*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1302*67e74705SXin Li (__mmask8) __M);
1303*67e74705SXin Li }
1304*67e74705SXin Li
1305*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1306*67e74705SXin Li _mm_mask_max_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1307*67e74705SXin Li __m128i __B)
1308*67e74705SXin Li {
1309*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsw128_mask ((__v8hi) __A,
1310*67e74705SXin Li (__v8hi) __B,
1311*67e74705SXin Li (__v8hi) __W,
1312*67e74705SXin Li (__mmask8) __M);
1313*67e74705SXin Li }
1314*67e74705SXin Li
1315*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epi16(__mmask16 __M,__m256i __A,__m256i __B)1316*67e74705SXin Li _mm256_maskz_max_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1317*67e74705SXin Li {
1318*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1319*67e74705SXin Li (__v16hi) __B,
1320*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1321*67e74705SXin Li (__mmask16) __M);
1322*67e74705SXin Li }
1323*67e74705SXin Li
1324*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1325*67e74705SXin Li _mm256_mask_max_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1326*67e74705SXin Li __m256i __B)
1327*67e74705SXin Li {
1328*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsw256_mask ((__v16hi) __A,
1329*67e74705SXin Li (__v16hi) __B,
1330*67e74705SXin Li (__v16hi) __W,
1331*67e74705SXin Li (__mmask16) __M);
1332*67e74705SXin Li }
1333*67e74705SXin Li
1334*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epu8(__mmask16 __M,__m128i __A,__m128i __B)1335*67e74705SXin Li _mm_maskz_max_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1336*67e74705SXin Li {
1337*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1338*67e74705SXin Li (__v16qi) __B,
1339*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1340*67e74705SXin Li (__mmask16) __M);
1341*67e74705SXin Li }
1342*67e74705SXin Li
1343*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1344*67e74705SXin Li _mm_mask_max_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1345*67e74705SXin Li __m128i __B)
1346*67e74705SXin Li {
1347*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxub128_mask ((__v16qi) __A,
1348*67e74705SXin Li (__v16qi) __B,
1349*67e74705SXin Li (__v16qi) __W,
1350*67e74705SXin Li (__mmask16) __M);
1351*67e74705SXin Li }
1352*67e74705SXin Li
1353*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epu8(__mmask32 __M,__m256i __A,__m256i __B)1354*67e74705SXin Li _mm256_maskz_max_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1355*67e74705SXin Li {
1356*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1357*67e74705SXin Li (__v32qi) __B,
1358*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1359*67e74705SXin Li (__mmask32) __M);
1360*67e74705SXin Li }
1361*67e74705SXin Li
1362*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1363*67e74705SXin Li _mm256_mask_max_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1364*67e74705SXin Li __m256i __B)
1365*67e74705SXin Li {
1366*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxub256_mask ((__v32qi) __A,
1367*67e74705SXin Li (__v32qi) __B,
1368*67e74705SXin Li (__v32qi) __W,
1369*67e74705SXin Li (__mmask32) __M);
1370*67e74705SXin Li }
1371*67e74705SXin Li
1372*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epu16(__mmask8 __M,__m128i __A,__m128i __B)1373*67e74705SXin Li _mm_maskz_max_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1374*67e74705SXin Li {
1375*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1376*67e74705SXin Li (__v8hi) __B,
1377*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1378*67e74705SXin Li (__mmask8) __M);
1379*67e74705SXin Li }
1380*67e74705SXin Li
1381*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1382*67e74705SXin Li _mm_mask_max_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1383*67e74705SXin Li __m128i __B)
1384*67e74705SXin Li {
1385*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxuw128_mask ((__v8hi) __A,
1386*67e74705SXin Li (__v8hi) __B,
1387*67e74705SXin Li (__v8hi) __W,
1388*67e74705SXin Li (__mmask8) __M);
1389*67e74705SXin Li }
1390*67e74705SXin Li
1391*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epu16(__mmask16 __M,__m256i __A,__m256i __B)1392*67e74705SXin Li _mm256_maskz_max_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1393*67e74705SXin Li {
1394*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1395*67e74705SXin Li (__v16hi) __B,
1396*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1397*67e74705SXin Li (__mmask16) __M);
1398*67e74705SXin Li }
1399*67e74705SXin Li
1400*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1401*67e74705SXin Li _mm256_mask_max_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1402*67e74705SXin Li __m256i __B)
1403*67e74705SXin Li {
1404*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxuw256_mask ((__v16hi) __A,
1405*67e74705SXin Li (__v16hi) __B,
1406*67e74705SXin Li (__v16hi) __W,
1407*67e74705SXin Li (__mmask16) __M);
1408*67e74705SXin Li }
1409*67e74705SXin Li
1410*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epi8(__mmask16 __M,__m128i __A,__m128i __B)1411*67e74705SXin Li _mm_maskz_min_epi8 (__mmask16 __M, __m128i __A, __m128i __B)
1412*67e74705SXin Li {
1413*67e74705SXin Li return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1414*67e74705SXin Li (__v16qi) __B,
1415*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1416*67e74705SXin Li (__mmask16) __M);
1417*67e74705SXin Li }
1418*67e74705SXin Li
1419*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epi8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1420*67e74705SXin Li _mm_mask_min_epi8 (__m128i __W, __mmask16 __M, __m128i __A,
1421*67e74705SXin Li __m128i __B)
1422*67e74705SXin Li {
1423*67e74705SXin Li return (__m128i) __builtin_ia32_pminsb128_mask ((__v16qi) __A,
1424*67e74705SXin Li (__v16qi) __B,
1425*67e74705SXin Li (__v16qi) __W,
1426*67e74705SXin Li (__mmask16) __M);
1427*67e74705SXin Li }
1428*67e74705SXin Li
1429*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epi8(__mmask32 __M,__m256i __A,__m256i __B)1430*67e74705SXin Li _mm256_maskz_min_epi8 (__mmask32 __M, __m256i __A, __m256i __B)
1431*67e74705SXin Li {
1432*67e74705SXin Li return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1433*67e74705SXin Li (__v32qi) __B,
1434*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1435*67e74705SXin Li (__mmask32) __M);
1436*67e74705SXin Li }
1437*67e74705SXin Li
1438*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epi8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1439*67e74705SXin Li _mm256_mask_min_epi8 (__m256i __W, __mmask32 __M, __m256i __A,
1440*67e74705SXin Li __m256i __B)
1441*67e74705SXin Li {
1442*67e74705SXin Li return (__m256i) __builtin_ia32_pminsb256_mask ((__v32qi) __A,
1443*67e74705SXin Li (__v32qi) __B,
1444*67e74705SXin Li (__v32qi) __W,
1445*67e74705SXin Li (__mmask32) __M);
1446*67e74705SXin Li }
1447*67e74705SXin Li
1448*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epi16(__mmask8 __M,__m128i __A,__m128i __B)1449*67e74705SXin Li _mm_maskz_min_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
1450*67e74705SXin Li {
1451*67e74705SXin Li return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1452*67e74705SXin Li (__v8hi) __B,
1453*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1454*67e74705SXin Li (__mmask8) __M);
1455*67e74705SXin Li }
1456*67e74705SXin Li
1457*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1458*67e74705SXin Li _mm_mask_min_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
1459*67e74705SXin Li __m128i __B)
1460*67e74705SXin Li {
1461*67e74705SXin Li return (__m128i) __builtin_ia32_pminsw128_mask ((__v8hi) __A,
1462*67e74705SXin Li (__v8hi) __B,
1463*67e74705SXin Li (__v8hi) __W,
1464*67e74705SXin Li (__mmask8) __M);
1465*67e74705SXin Li }
1466*67e74705SXin Li
1467*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epi16(__mmask16 __M,__m256i __A,__m256i __B)1468*67e74705SXin Li _mm256_maskz_min_epi16 (__mmask16 __M, __m256i __A, __m256i __B)
1469*67e74705SXin Li {
1470*67e74705SXin Li return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1471*67e74705SXin Li (__v16hi) __B,
1472*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1473*67e74705SXin Li (__mmask16) __M);
1474*67e74705SXin Li }
1475*67e74705SXin Li
1476*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1477*67e74705SXin Li _mm256_mask_min_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
1478*67e74705SXin Li __m256i __B)
1479*67e74705SXin Li {
1480*67e74705SXin Li return (__m256i) __builtin_ia32_pminsw256_mask ((__v16hi) __A,
1481*67e74705SXin Li (__v16hi) __B,
1482*67e74705SXin Li (__v16hi) __W,
1483*67e74705SXin Li (__mmask16) __M);
1484*67e74705SXin Li }
1485*67e74705SXin Li
1486*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epu8(__mmask16 __M,__m128i __A,__m128i __B)1487*67e74705SXin Li _mm_maskz_min_epu8 (__mmask16 __M, __m128i __A, __m128i __B)
1488*67e74705SXin Li {
1489*67e74705SXin Li return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1490*67e74705SXin Li (__v16qi) __B,
1491*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1492*67e74705SXin Li (__mmask16) __M);
1493*67e74705SXin Li }
1494*67e74705SXin Li
1495*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epu8(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)1496*67e74705SXin Li _mm_mask_min_epu8 (__m128i __W, __mmask16 __M, __m128i __A,
1497*67e74705SXin Li __m128i __B)
1498*67e74705SXin Li {
1499*67e74705SXin Li return (__m128i) __builtin_ia32_pminub128_mask ((__v16qi) __A,
1500*67e74705SXin Li (__v16qi) __B,
1501*67e74705SXin Li (__v16qi) __W,
1502*67e74705SXin Li (__mmask16) __M);
1503*67e74705SXin Li }
1504*67e74705SXin Li
1505*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epu8(__mmask32 __M,__m256i __A,__m256i __B)1506*67e74705SXin Li _mm256_maskz_min_epu8 (__mmask32 __M, __m256i __A, __m256i __B)
1507*67e74705SXin Li {
1508*67e74705SXin Li return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1509*67e74705SXin Li (__v32qi) __B,
1510*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1511*67e74705SXin Li (__mmask32) __M);
1512*67e74705SXin Li }
1513*67e74705SXin Li
1514*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epu8(__m256i __W,__mmask32 __M,__m256i __A,__m256i __B)1515*67e74705SXin Li _mm256_mask_min_epu8 (__m256i __W, __mmask32 __M, __m256i __A,
1516*67e74705SXin Li __m256i __B)
1517*67e74705SXin Li {
1518*67e74705SXin Li return (__m256i) __builtin_ia32_pminub256_mask ((__v32qi) __A,
1519*67e74705SXin Li (__v32qi) __B,
1520*67e74705SXin Li (__v32qi) __W,
1521*67e74705SXin Li (__mmask32) __M);
1522*67e74705SXin Li }
1523*67e74705SXin Li
1524*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epu16(__mmask8 __M,__m128i __A,__m128i __B)1525*67e74705SXin Li _mm_maskz_min_epu16 (__mmask8 __M, __m128i __A, __m128i __B)
1526*67e74705SXin Li {
1527*67e74705SXin Li return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1528*67e74705SXin Li (__v8hi) __B,
1529*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1530*67e74705SXin Li (__mmask8) __M);
1531*67e74705SXin Li }
1532*67e74705SXin Li
1533*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epu16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)1534*67e74705SXin Li _mm_mask_min_epu16 (__m128i __W, __mmask8 __M, __m128i __A,
1535*67e74705SXin Li __m128i __B)
1536*67e74705SXin Li {
1537*67e74705SXin Li return (__m128i) __builtin_ia32_pminuw128_mask ((__v8hi) __A,
1538*67e74705SXin Li (__v8hi) __B,
1539*67e74705SXin Li (__v8hi) __W,
1540*67e74705SXin Li (__mmask8) __M);
1541*67e74705SXin Li }
1542*67e74705SXin Li
1543*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epu16(__mmask16 __M,__m256i __A,__m256i __B)1544*67e74705SXin Li _mm256_maskz_min_epu16 (__mmask16 __M, __m256i __A, __m256i __B)
1545*67e74705SXin Li {
1546*67e74705SXin Li return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1547*67e74705SXin Li (__v16hi) __B,
1548*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1549*67e74705SXin Li (__mmask16) __M);
1550*67e74705SXin Li }
1551*67e74705SXin Li
1552*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epu16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)1553*67e74705SXin Li _mm256_mask_min_epu16 (__m256i __W, __mmask16 __M, __m256i __A,
1554*67e74705SXin Li __m256i __B)
1555*67e74705SXin Li {
1556*67e74705SXin Li return (__m256i) __builtin_ia32_pminuw256_mask ((__v16hi) __A,
1557*67e74705SXin Li (__v16hi) __B,
1558*67e74705SXin Li (__v16hi) __W,
1559*67e74705SXin Li (__mmask16) __M);
1560*67e74705SXin Li }
1561*67e74705SXin Li
1562*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_shuffle_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1563*67e74705SXin Li _mm_mask_shuffle_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1564*67e74705SXin Li __m128i __B)
1565*67e74705SXin Li {
1566*67e74705SXin Li return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1567*67e74705SXin Li (__v16qi) __B,
1568*67e74705SXin Li (__v16qi) __W,
1569*67e74705SXin Li (__mmask16) __U);
1570*67e74705SXin Li }
1571*67e74705SXin Li
1572*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_shuffle_epi8(__mmask16 __U,__m128i __A,__m128i __B)1573*67e74705SXin Li _mm_maskz_shuffle_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1574*67e74705SXin Li {
1575*67e74705SXin Li return (__m128i) __builtin_ia32_pshufb128_mask ((__v16qi) __A,
1576*67e74705SXin Li (__v16qi) __B,
1577*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1578*67e74705SXin Li (__mmask16) __U);
1579*67e74705SXin Li }
1580*67e74705SXin Li
1581*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_shuffle_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1582*67e74705SXin Li _mm256_mask_shuffle_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1583*67e74705SXin Li __m256i __B)
1584*67e74705SXin Li {
1585*67e74705SXin Li return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1586*67e74705SXin Li (__v32qi) __B,
1587*67e74705SXin Li (__v32qi) __W,
1588*67e74705SXin Li (__mmask32) __U);
1589*67e74705SXin Li }
1590*67e74705SXin Li
1591*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_shuffle_epi8(__mmask32 __U,__m256i __A,__m256i __B)1592*67e74705SXin Li _mm256_maskz_shuffle_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1593*67e74705SXin Li {
1594*67e74705SXin Li return (__m256i) __builtin_ia32_pshufb256_mask ((__v32qi) __A,
1595*67e74705SXin Li (__v32qi) __B,
1596*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1597*67e74705SXin Li (__mmask32) __U);
1598*67e74705SXin Li }
1599*67e74705SXin Li
1600*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_subs_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1601*67e74705SXin Li _mm_mask_subs_epi8 (__m128i __W, __mmask16 __U, __m128i __A,
1602*67e74705SXin Li __m128i __B)
1603*67e74705SXin Li {
1604*67e74705SXin Li return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1605*67e74705SXin Li (__v16qi) __B,
1606*67e74705SXin Li (__v16qi) __W,
1607*67e74705SXin Li (__mmask16) __U);
1608*67e74705SXin Li }
1609*67e74705SXin Li
1610*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_subs_epi8(__mmask16 __U,__m128i __A,__m128i __B)1611*67e74705SXin Li _mm_maskz_subs_epi8 (__mmask16 __U, __m128i __A, __m128i __B)
1612*67e74705SXin Li {
1613*67e74705SXin Li return (__m128i) __builtin_ia32_psubsb128_mask ((__v16qi) __A,
1614*67e74705SXin Li (__v16qi) __B,
1615*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1616*67e74705SXin Li (__mmask16) __U);
1617*67e74705SXin Li }
1618*67e74705SXin Li
1619*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_subs_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1620*67e74705SXin Li _mm256_mask_subs_epi8 (__m256i __W, __mmask32 __U, __m256i __A,
1621*67e74705SXin Li __m256i __B)
1622*67e74705SXin Li {
1623*67e74705SXin Li return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1624*67e74705SXin Li (__v32qi) __B,
1625*67e74705SXin Li (__v32qi) __W,
1626*67e74705SXin Li (__mmask32) __U);
1627*67e74705SXin Li }
1628*67e74705SXin Li
1629*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_subs_epi8(__mmask32 __U,__m256i __A,__m256i __B)1630*67e74705SXin Li _mm256_maskz_subs_epi8 (__mmask32 __U, __m256i __A, __m256i __B)
1631*67e74705SXin Li {
1632*67e74705SXin Li return (__m256i) __builtin_ia32_psubsb256_mask ((__v32qi) __A,
1633*67e74705SXin Li (__v32qi) __B,
1634*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1635*67e74705SXin Li (__mmask32) __U);
1636*67e74705SXin Li }
1637*67e74705SXin Li
1638*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_subs_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1639*67e74705SXin Li _mm_mask_subs_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1640*67e74705SXin Li __m128i __B)
1641*67e74705SXin Li {
1642*67e74705SXin Li return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1643*67e74705SXin Li (__v8hi) __B,
1644*67e74705SXin Li (__v8hi) __W,
1645*67e74705SXin Li (__mmask8) __U);
1646*67e74705SXin Li }
1647*67e74705SXin Li
1648*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_subs_epi16(__mmask8 __U,__m128i __A,__m128i __B)1649*67e74705SXin Li _mm_maskz_subs_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
1650*67e74705SXin Li {
1651*67e74705SXin Li return (__m128i) __builtin_ia32_psubsw128_mask ((__v8hi) __A,
1652*67e74705SXin Li (__v8hi) __B,
1653*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1654*67e74705SXin Li (__mmask8) __U);
1655*67e74705SXin Li }
1656*67e74705SXin Li
1657*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_subs_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1658*67e74705SXin Li _mm256_mask_subs_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
1659*67e74705SXin Li __m256i __B)
1660*67e74705SXin Li {
1661*67e74705SXin Li return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1662*67e74705SXin Li (__v16hi) __B,
1663*67e74705SXin Li (__v16hi) __W,
1664*67e74705SXin Li (__mmask16) __U);
1665*67e74705SXin Li }
1666*67e74705SXin Li
1667*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_subs_epi16(__mmask16 __U,__m256i __A,__m256i __B)1668*67e74705SXin Li _mm256_maskz_subs_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
1669*67e74705SXin Li {
1670*67e74705SXin Li return (__m256i) __builtin_ia32_psubsw256_mask ((__v16hi) __A,
1671*67e74705SXin Li (__v16hi) __B,
1672*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1673*67e74705SXin Li (__mmask16) __U);
1674*67e74705SXin Li }
1675*67e74705SXin Li
1676*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_subs_epu8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)1677*67e74705SXin Li _mm_mask_subs_epu8 (__m128i __W, __mmask16 __U, __m128i __A,
1678*67e74705SXin Li __m128i __B)
1679*67e74705SXin Li {
1680*67e74705SXin Li return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1681*67e74705SXin Li (__v16qi) __B,
1682*67e74705SXin Li (__v16qi) __W,
1683*67e74705SXin Li (__mmask16) __U);
1684*67e74705SXin Li }
1685*67e74705SXin Li
1686*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_subs_epu8(__mmask16 __U,__m128i __A,__m128i __B)1687*67e74705SXin Li _mm_maskz_subs_epu8 (__mmask16 __U, __m128i __A, __m128i __B)
1688*67e74705SXin Li {
1689*67e74705SXin Li return (__m128i) __builtin_ia32_psubusb128_mask ((__v16qi) __A,
1690*67e74705SXin Li (__v16qi) __B,
1691*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
1692*67e74705SXin Li (__mmask16) __U);
1693*67e74705SXin Li }
1694*67e74705SXin Li
1695*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_subs_epu8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)1696*67e74705SXin Li _mm256_mask_subs_epu8 (__m256i __W, __mmask32 __U, __m256i __A,
1697*67e74705SXin Li __m256i __B)
1698*67e74705SXin Li {
1699*67e74705SXin Li return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1700*67e74705SXin Li (__v32qi) __B,
1701*67e74705SXin Li (__v32qi) __W,
1702*67e74705SXin Li (__mmask32) __U);
1703*67e74705SXin Li }
1704*67e74705SXin Li
1705*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_subs_epu8(__mmask32 __U,__m256i __A,__m256i __B)1706*67e74705SXin Li _mm256_maskz_subs_epu8 (__mmask32 __U, __m256i __A, __m256i __B)
1707*67e74705SXin Li {
1708*67e74705SXin Li return (__m256i) __builtin_ia32_psubusb256_mask ((__v32qi) __A,
1709*67e74705SXin Li (__v32qi) __B,
1710*67e74705SXin Li (__v32qi) _mm256_setzero_si256 (),
1711*67e74705SXin Li (__mmask32) __U);
1712*67e74705SXin Li }
1713*67e74705SXin Li
1714*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_subs_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1715*67e74705SXin Li _mm_mask_subs_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
1716*67e74705SXin Li __m128i __B)
1717*67e74705SXin Li {
1718*67e74705SXin Li return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1719*67e74705SXin Li (__v8hi) __B,
1720*67e74705SXin Li (__v8hi) __W,
1721*67e74705SXin Li (__mmask8) __U);
1722*67e74705SXin Li }
1723*67e74705SXin Li
1724*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_subs_epu16(__mmask8 __U,__m128i __A,__m128i __B)1725*67e74705SXin Li _mm_maskz_subs_epu16 (__mmask8 __U, __m128i __A, __m128i __B)
1726*67e74705SXin Li {
1727*67e74705SXin Li return (__m128i) __builtin_ia32_psubusw128_mask ((__v8hi) __A,
1728*67e74705SXin Li (__v8hi) __B,
1729*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
1730*67e74705SXin Li (__mmask8) __U);
1731*67e74705SXin Li }
1732*67e74705SXin Li
1733*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_subs_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)1734*67e74705SXin Li _mm256_mask_subs_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
1735*67e74705SXin Li __m256i __B)
1736*67e74705SXin Li {
1737*67e74705SXin Li return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1738*67e74705SXin Li (__v16hi) __B,
1739*67e74705SXin Li (__v16hi) __W,
1740*67e74705SXin Li (__mmask16) __U);
1741*67e74705SXin Li }
1742*67e74705SXin Li
1743*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_subs_epu16(__mmask16 __U,__m256i __A,__m256i __B)1744*67e74705SXin Li _mm256_maskz_subs_epu16 (__mmask16 __U, __m256i __A, __m256i __B)
1745*67e74705SXin Li {
1746*67e74705SXin Li return (__m256i) __builtin_ia32_psubusw256_mask ((__v16hi) __A,
1747*67e74705SXin Li (__v16hi) __B,
1748*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
1749*67e74705SXin Li (__mmask16) __U);
1750*67e74705SXin Li }
1751*67e74705SXin Li
1752*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask2_permutex2var_epi16(__m128i __A,__m128i __I,__mmask8 __U,__m128i __B)1753*67e74705SXin Li _mm_mask2_permutex2var_epi16 (__m128i __A, __m128i __I, __mmask8 __U,
1754*67e74705SXin Li __m128i __B)
1755*67e74705SXin Li {
1756*67e74705SXin Li return (__m128i) __builtin_ia32_vpermi2varhi128_mask ((__v8hi) __A,
1757*67e74705SXin Li (__v8hi) __I /* idx */ ,
1758*67e74705SXin Li (__v8hi) __B,
1759*67e74705SXin Li (__mmask8) __U);
1760*67e74705SXin Li }
1761*67e74705SXin Li
1762*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask2_permutex2var_epi16(__m256i __A,__m256i __I,__mmask16 __U,__m256i __B)1763*67e74705SXin Li _mm256_mask2_permutex2var_epi16 (__m256i __A, __m256i __I,
1764*67e74705SXin Li __mmask16 __U, __m256i __B)
1765*67e74705SXin Li {
1766*67e74705SXin Li return (__m256i) __builtin_ia32_vpermi2varhi256_mask ((__v16hi) __A,
1767*67e74705SXin Li (__v16hi) __I /* idx */ ,
1768*67e74705SXin Li (__v16hi) __B,
1769*67e74705SXin Li (__mmask16) __U);
1770*67e74705SXin Li }
1771*67e74705SXin Li
1772*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_permutex2var_epi16(__m128i __A,__m128i __I,__m128i __B)1773*67e74705SXin Li _mm_permutex2var_epi16 (__m128i __A, __m128i __I, __m128i __B)
1774*67e74705SXin Li {
1775*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1776*67e74705SXin Li (__v8hi) __A,
1777*67e74705SXin Li (__v8hi) __B,
1778*67e74705SXin Li (__mmask8) -1);
1779*67e74705SXin Li }
1780*67e74705SXin Li
1781*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_permutex2var_epi16(__m128i __A,__mmask8 __U,__m128i __I,__m128i __B)1782*67e74705SXin Li _mm_mask_permutex2var_epi16 (__m128i __A, __mmask8 __U, __m128i __I,
1783*67e74705SXin Li __m128i __B)
1784*67e74705SXin Li {
1785*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varhi128_mask ((__v8hi) __I/* idx */,
1786*67e74705SXin Li (__v8hi) __A,
1787*67e74705SXin Li (__v8hi) __B,
1788*67e74705SXin Li (__mmask8) __U);
1789*67e74705SXin Li }
1790*67e74705SXin Li
1791*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_permutex2var_epi16(__mmask8 __U,__m128i __A,__m128i __I,__m128i __B)1792*67e74705SXin Li _mm_maskz_permutex2var_epi16 (__mmask8 __U, __m128i __A, __m128i __I,
1793*67e74705SXin Li __m128i __B)
1794*67e74705SXin Li {
1795*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varhi128_maskz ((__v8hi) __I/* idx */,
1796*67e74705SXin Li (__v8hi) __A,
1797*67e74705SXin Li (__v8hi) __B,
1798*67e74705SXin Li (__mmask8) __U);
1799*67e74705SXin Li }
1800*67e74705SXin Li
1801*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutex2var_epi16(__m256i __A,__m256i __I,__m256i __B)1802*67e74705SXin Li _mm256_permutex2var_epi16 (__m256i __A, __m256i __I, __m256i __B)
1803*67e74705SXin Li {
1804*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1805*67e74705SXin Li (__v16hi) __A,
1806*67e74705SXin Li (__v16hi) __B,
1807*67e74705SXin Li (__mmask16) -1);
1808*67e74705SXin Li }
1809*67e74705SXin Li
1810*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutex2var_epi16(__m256i __A,__mmask16 __U,__m256i __I,__m256i __B)1811*67e74705SXin Li _mm256_mask_permutex2var_epi16 (__m256i __A, __mmask16 __U,
1812*67e74705SXin Li __m256i __I, __m256i __B)
1813*67e74705SXin Li {
1814*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varhi256_mask ((__v16hi) __I/* idx */,
1815*67e74705SXin Li (__v16hi) __A,
1816*67e74705SXin Li (__v16hi) __B,
1817*67e74705SXin Li (__mmask16) __U);
1818*67e74705SXin Li }
1819*67e74705SXin Li
1820*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutex2var_epi16(__mmask16 __U,__m256i __A,__m256i __I,__m256i __B)1821*67e74705SXin Li _mm256_maskz_permutex2var_epi16 (__mmask16 __U, __m256i __A,
1822*67e74705SXin Li __m256i __I, __m256i __B)
1823*67e74705SXin Li {
1824*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varhi256_maskz ((__v16hi) __I/* idx */,
1825*67e74705SXin Li (__v16hi) __A,
1826*67e74705SXin Li (__v16hi) __B,
1827*67e74705SXin Li (__mmask16) __U);
1828*67e74705SXin Li }
1829*67e74705SXin Li
1830*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_maddubs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)1831*67e74705SXin Li _mm_mask_maddubs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
1832*67e74705SXin Li return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1833*67e74705SXin Li (__v16qi) __Y,
1834*67e74705SXin Li (__v8hi) __W,
1835*67e74705SXin Li (__mmask8) __U);
1836*67e74705SXin Li }
1837*67e74705SXin Li
1838*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_maddubs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)1839*67e74705SXin Li _mm_maskz_maddubs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
1840*67e74705SXin Li return (__m128i) __builtin_ia32_pmaddubsw128_mask ((__v16qi) __X,
1841*67e74705SXin Li (__v16qi) __Y,
1842*67e74705SXin Li (__v8hi) _mm_setzero_si128(),
1843*67e74705SXin Li (__mmask8) __U);
1844*67e74705SXin Li }
1845*67e74705SXin Li
1846*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_maddubs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)1847*67e74705SXin Li _mm256_mask_maddubs_epi16 (__m256i __W, __mmask16 __U, __m256i __X,
1848*67e74705SXin Li __m256i __Y) {
1849*67e74705SXin Li return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1850*67e74705SXin Li (__v32qi) __Y,
1851*67e74705SXin Li (__v16hi) __W,
1852*67e74705SXin Li (__mmask16) __U);
1853*67e74705SXin Li }
1854*67e74705SXin Li
1855*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_maddubs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)1856*67e74705SXin Li _mm256_maskz_maddubs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
1857*67e74705SXin Li return (__m256i) __builtin_ia32_pmaddubsw256_mask ((__v32qi) __X,
1858*67e74705SXin Li (__v32qi) __Y,
1859*67e74705SXin Li (__v16hi) _mm256_setzero_si256(),
1860*67e74705SXin Li (__mmask16) __U);
1861*67e74705SXin Li }
1862*67e74705SXin Li
1863*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_madd_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1864*67e74705SXin Li _mm_mask_madd_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
1865*67e74705SXin Li __m128i __B) {
1866*67e74705SXin Li return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1867*67e74705SXin Li (__v8hi) __B,
1868*67e74705SXin Li (__v4si) __W,
1869*67e74705SXin Li (__mmask8) __U);
1870*67e74705SXin Li }
1871*67e74705SXin Li
1872*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_madd_epi16(__mmask8 __U,__m128i __A,__m128i __B)1873*67e74705SXin Li _mm_maskz_madd_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
1874*67e74705SXin Li return (__m128i) __builtin_ia32_pmaddwd128_mask ((__v8hi) __A,
1875*67e74705SXin Li (__v8hi) __B,
1876*67e74705SXin Li (__v4si) _mm_setzero_si128(),
1877*67e74705SXin Li (__mmask8) __U);
1878*67e74705SXin Li }
1879*67e74705SXin Li
1880*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_madd_epi16(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1881*67e74705SXin Li _mm256_mask_madd_epi16 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
1882*67e74705SXin Li return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1883*67e74705SXin Li (__v16hi) __B,
1884*67e74705SXin Li (__v8si) __W,
1885*67e74705SXin Li (__mmask8) __U);
1886*67e74705SXin Li }
1887*67e74705SXin Li
1888*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_madd_epi16(__mmask8 __U,__m256i __A,__m256i __B)1889*67e74705SXin Li _mm256_maskz_madd_epi16 (__mmask8 __U, __m256i __A, __m256i __B) {
1890*67e74705SXin Li return (__m256i) __builtin_ia32_pmaddwd256_mask ((__v16hi) __A,
1891*67e74705SXin Li (__v16hi) __B,
1892*67e74705SXin Li (__v8si) _mm256_setzero_si256(),
1893*67e74705SXin Li (__mmask8) __U);
1894*67e74705SXin Li }
1895*67e74705SXin Li
1896*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi16_epi8(__m128i __A)1897*67e74705SXin Li _mm_cvtsepi16_epi8 (__m128i __A) {
1898*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1899*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1900*67e74705SXin Li (__mmask8) -1);
1901*67e74705SXin Li }
1902*67e74705SXin Li
1903*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1904*67e74705SXin Li _mm_mask_cvtsepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1905*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1906*67e74705SXin Li (__v16qi) __O,
1907*67e74705SXin Li __M);
1908*67e74705SXin Li }
1909*67e74705SXin Li
1910*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi16_epi8(__mmask8 __M,__m128i __A)1911*67e74705SXin Li _mm_maskz_cvtsepi16_epi8 (__mmask8 __M, __m128i __A) {
1912*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb128_mask ((__v8hi) __A,
1913*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1914*67e74705SXin Li __M);
1915*67e74705SXin Li }
1916*67e74705SXin Li
1917*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi16_epi8(__m256i __A)1918*67e74705SXin Li _mm256_cvtsepi16_epi8 (__m256i __A) {
1919*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1920*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1921*67e74705SXin Li (__mmask16) -1);
1922*67e74705SXin Li }
1923*67e74705SXin Li
1924*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1925*67e74705SXin Li _mm256_mask_cvtsepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1926*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1927*67e74705SXin Li (__v16qi) __O,
1928*67e74705SXin Li __M);
1929*67e74705SXin Li }
1930*67e74705SXin Li
1931*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi16_epi8(__mmask16 __M,__m256i __A)1932*67e74705SXin Li _mm256_maskz_cvtsepi16_epi8 (__mmask16 __M, __m256i __A) {
1933*67e74705SXin Li return (__m128i) __builtin_ia32_pmovswb256_mask ((__v16hi) __A,
1934*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1935*67e74705SXin Li __M);
1936*67e74705SXin Li }
1937*67e74705SXin Li
1938*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi16_epi8(__m128i __A)1939*67e74705SXin Li _mm_cvtusepi16_epi8 (__m128i __A) {
1940*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1941*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1942*67e74705SXin Li (__mmask8) -1);
1943*67e74705SXin Li }
1944*67e74705SXin Li
1945*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1946*67e74705SXin Li _mm_mask_cvtusepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1947*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1948*67e74705SXin Li (__v16qi) __O,
1949*67e74705SXin Li __M);
1950*67e74705SXin Li }
1951*67e74705SXin Li
1952*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi16_epi8(__mmask8 __M,__m128i __A)1953*67e74705SXin Li _mm_maskz_cvtusepi16_epi8 (__mmask8 __M, __m128i __A) {
1954*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb128_mask ((__v8hi) __A,
1955*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1956*67e74705SXin Li __M);
1957*67e74705SXin Li }
1958*67e74705SXin Li
1959*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi16_epi8(__m256i __A)1960*67e74705SXin Li _mm256_cvtusepi16_epi8 (__m256i __A) {
1961*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1962*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1963*67e74705SXin Li (__mmask16) -1);
1964*67e74705SXin Li }
1965*67e74705SXin Li
1966*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)1967*67e74705SXin Li _mm256_mask_cvtusepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
1968*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1969*67e74705SXin Li (__v16qi) __O,
1970*67e74705SXin Li __M);
1971*67e74705SXin Li }
1972*67e74705SXin Li
1973*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi16_epi8(__mmask16 __M,__m256i __A)1974*67e74705SXin Li _mm256_maskz_cvtusepi16_epi8 (__mmask16 __M, __m256i __A) {
1975*67e74705SXin Li return (__m128i) __builtin_ia32_pmovuswb256_mask ((__v16hi) __A,
1976*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1977*67e74705SXin Li __M);
1978*67e74705SXin Li }
1979*67e74705SXin Li
1980*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi16_epi8(__m128i __A)1981*67e74705SXin Li _mm_cvtepi16_epi8 (__m128i __A) {
1982*67e74705SXin Li
1983*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1984*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1985*67e74705SXin Li (__mmask8) -1);
1986*67e74705SXin Li }
1987*67e74705SXin Li
1988*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi16_epi8(__m128i __O,__mmask8 __M,__m128i __A)1989*67e74705SXin Li _mm_mask_cvtepi16_epi8 (__m128i __O, __mmask8 __M, __m128i __A) {
1990*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1991*67e74705SXin Li (__v16qi) __O,
1992*67e74705SXin Li __M);
1993*67e74705SXin Li }
1994*67e74705SXin Li
1995*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi16_epi8(__mmask8 __M,__m128i __A)1996*67e74705SXin Li _mm_maskz_cvtepi16_epi8 (__mmask8 __M, __m128i __A) {
1997*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb128_mask ((__v8hi) __A,
1998*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
1999*67e74705SXin Li __M);
2000*67e74705SXin Li }
2001*67e74705SXin Li
2002*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)2003*67e74705SXin Li _mm_mask_cvtepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2004*67e74705SXin Li {
2005*67e74705SXin Li __builtin_ia32_pmovwb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2006*67e74705SXin Li }
2007*67e74705SXin Li
2008*67e74705SXin Li
2009*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)2010*67e74705SXin Li _mm_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2011*67e74705SXin Li {
2012*67e74705SXin Li __builtin_ia32_pmovswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2013*67e74705SXin Li }
2014*67e74705SXin Li
2015*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi16_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)2016*67e74705SXin Li _mm_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
2017*67e74705SXin Li {
2018*67e74705SXin Li __builtin_ia32_pmovuswb128mem_mask ((__v16qi *) __P, (__v8hi) __A, __M);
2019*67e74705SXin Li }
2020*67e74705SXin Li
2021*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi16_epi8(__m256i __A)2022*67e74705SXin Li _mm256_cvtepi16_epi8 (__m256i __A) {
2023*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2024*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
2025*67e74705SXin Li (__mmask16) -1);
2026*67e74705SXin Li }
2027*67e74705SXin Li
2028*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi16_epi8(__m128i __O,__mmask16 __M,__m256i __A)2029*67e74705SXin Li _mm256_mask_cvtepi16_epi8 (__m128i __O, __mmask16 __M, __m256i __A) {
2030*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2031*67e74705SXin Li (__v16qi) __O,
2032*67e74705SXin Li __M);
2033*67e74705SXin Li }
2034*67e74705SXin Li
2035*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi16_epi8(__mmask16 __M,__m256i __A)2036*67e74705SXin Li _mm256_maskz_cvtepi16_epi8 (__mmask16 __M, __m256i __A) {
2037*67e74705SXin Li return (__m128i) __builtin_ia32_pmovwb256_mask ((__v16hi) __A,
2038*67e74705SXin Li (__v16qi) _mm_setzero_si128(),
2039*67e74705SXin Li __M);
2040*67e74705SXin Li }
2041*67e74705SXin Li
2042*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)2043*67e74705SXin Li _mm256_mask_cvtepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
2044*67e74705SXin Li {
2045*67e74705SXin Li __builtin_ia32_pmovwb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
2046*67e74705SXin Li }
2047*67e74705SXin Li
2048*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi16_storeu_epi8(void * __P,__mmask16 __M,__m256i __A)2049*67e74705SXin Li _mm256_mask_cvtsepi16_storeu_epi8 (void * __P, __mmask16 __M, __m256i __A)
2050*67e74705SXin Li {
2051*67e74705SXin Li __builtin_ia32_pmovswb256mem_mask ((__v16qi *) __P, (__v16hi) __A, __M);
2052*67e74705SXin Li }
2053*67e74705SXin Li
2054*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi16_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)2055*67e74705SXin Li _mm256_mask_cvtusepi16_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
2056*67e74705SXin Li {
2057*67e74705SXin Li __builtin_ia32_pmovuswb256mem_mask ((__v16qi*) __P, (__v16hi) __A, __M);
2058*67e74705SXin Li }
2059*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mulhrs_epi16(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)2060*67e74705SXin Li _mm_mask_mulhrs_epi16 (__m128i __W, __mmask8 __U, __m128i __X, __m128i __Y) {
2061*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2062*67e74705SXin Li (__v8hi) __Y,
2063*67e74705SXin Li (__v8hi) __W,
2064*67e74705SXin Li (__mmask8) __U);
2065*67e74705SXin Li }
2066*67e74705SXin Li
2067*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mulhrs_epi16(__mmask8 __U,__m128i __X,__m128i __Y)2068*67e74705SXin Li _mm_maskz_mulhrs_epi16 (__mmask8 __U, __m128i __X, __m128i __Y) {
2069*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhrsw128_mask ((__v8hi) __X,
2070*67e74705SXin Li (__v8hi) __Y,
2071*67e74705SXin Li (__v8hi) _mm_setzero_si128(),
2072*67e74705SXin Li (__mmask8) __U);
2073*67e74705SXin Li }
2074*67e74705SXin Li
2075*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mulhrs_epi16(__m256i __W,__mmask16 __U,__m256i __X,__m256i __Y)2076*67e74705SXin Li _mm256_mask_mulhrs_epi16 (__m256i __W, __mmask16 __U, __m256i __X, __m256i __Y) {
2077*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2078*67e74705SXin Li (__v16hi) __Y,
2079*67e74705SXin Li (__v16hi) __W,
2080*67e74705SXin Li (__mmask16) __U);
2081*67e74705SXin Li }
2082*67e74705SXin Li
2083*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mulhrs_epi16(__mmask16 __U,__m256i __X,__m256i __Y)2084*67e74705SXin Li _mm256_maskz_mulhrs_epi16 (__mmask16 __U, __m256i __X, __m256i __Y) {
2085*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhrsw256_mask ((__v16hi) __X,
2086*67e74705SXin Li (__v16hi) __Y,
2087*67e74705SXin Li (__v16hi) _mm256_setzero_si256(),
2088*67e74705SXin Li (__mmask16) __U);
2089*67e74705SXin Li }
2090*67e74705SXin Li
2091*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mulhi_epu16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2092*67e74705SXin Li _mm_mask_mulhi_epu16 (__m128i __W, __mmask8 __U, __m128i __A,
2093*67e74705SXin Li __m128i __B) {
2094*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2095*67e74705SXin Li (__v8hi) __B,
2096*67e74705SXin Li (__v8hi) __W,
2097*67e74705SXin Li (__mmask8) __U);
2098*67e74705SXin Li }
2099*67e74705SXin Li
2100*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mulhi_epu16(__mmask8 __U,__m128i __A,__m128i __B)2101*67e74705SXin Li _mm_maskz_mulhi_epu16 (__mmask8 __U, __m128i __A, __m128i __B) {
2102*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhuw128_mask ((__v8hi) __A,
2103*67e74705SXin Li (__v8hi) __B,
2104*67e74705SXin Li (__v8hi) _mm_setzero_si128(),
2105*67e74705SXin Li (__mmask8) __U);
2106*67e74705SXin Li }
2107*67e74705SXin Li
2108*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mulhi_epu16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2109*67e74705SXin Li _mm256_mask_mulhi_epu16 (__m256i __W, __mmask16 __U, __m256i __A,
2110*67e74705SXin Li __m256i __B) {
2111*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2112*67e74705SXin Li (__v16hi) __B,
2113*67e74705SXin Li (__v16hi) __W,
2114*67e74705SXin Li (__mmask16) __U);
2115*67e74705SXin Li }
2116*67e74705SXin Li
2117*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mulhi_epu16(__mmask16 __U,__m256i __A,__m256i __B)2118*67e74705SXin Li _mm256_maskz_mulhi_epu16 (__mmask16 __U, __m256i __A, __m256i __B) {
2119*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhuw256_mask ((__v16hi) __A,
2120*67e74705SXin Li (__v16hi) __B,
2121*67e74705SXin Li (__v16hi) _mm256_setzero_si256(),
2122*67e74705SXin Li (__mmask16) __U);
2123*67e74705SXin Li }
2124*67e74705SXin Li
2125*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mulhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2126*67e74705SXin Li _mm_mask_mulhi_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2127*67e74705SXin Li __m128i __B) {
2128*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2129*67e74705SXin Li (__v8hi) __B,
2130*67e74705SXin Li (__v8hi) __W,
2131*67e74705SXin Li (__mmask8) __U);
2132*67e74705SXin Li }
2133*67e74705SXin Li
2134*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mulhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)2135*67e74705SXin Li _mm_maskz_mulhi_epi16 (__mmask8 __U, __m128i __A, __m128i __B) {
2136*67e74705SXin Li return (__m128i) __builtin_ia32_pmulhw128_mask ((__v8hi) __A,
2137*67e74705SXin Li (__v8hi) __B,
2138*67e74705SXin Li (__v8hi) _mm_setzero_si128(),
2139*67e74705SXin Li (__mmask8) __U);
2140*67e74705SXin Li }
2141*67e74705SXin Li
2142*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mulhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2143*67e74705SXin Li _mm256_mask_mulhi_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2144*67e74705SXin Li __m256i __B) {
2145*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2146*67e74705SXin Li (__v16hi) __B,
2147*67e74705SXin Li (__v16hi) __W,
2148*67e74705SXin Li (__mmask16) __U);
2149*67e74705SXin Li }
2150*67e74705SXin Li
2151*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mulhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)2152*67e74705SXin Li _mm256_maskz_mulhi_epi16 (__mmask16 __U, __m256i __A, __m256i __B) {
2153*67e74705SXin Li return (__m256i) __builtin_ia32_pmulhw256_mask ((__v16hi) __A,
2154*67e74705SXin Li (__v16hi) __B,
2155*67e74705SXin Li (__v16hi) _mm256_setzero_si256(),
2156*67e74705SXin Li (__mmask16) __U);
2157*67e74705SXin Li }
2158*67e74705SXin Li
2159*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)2160*67e74705SXin Li _mm_mask_unpackhi_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
2161*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2162*67e74705SXin Li (__v16qi)_mm_unpackhi_epi8(__A, __B),
2163*67e74705SXin Li (__v16qi)__W);
2164*67e74705SXin Li }
2165*67e74705SXin Li
2166*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_epi8(__mmask16 __U,__m128i __A,__m128i __B)2167*67e74705SXin Li _mm_maskz_unpackhi_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
2168*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2169*67e74705SXin Li (__v16qi)_mm_unpackhi_epi8(__A, __B),
2170*67e74705SXin Li (__v16qi)_mm_setzero_si128());
2171*67e74705SXin Li }
2172*67e74705SXin Li
2173*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)2174*67e74705SXin Li _mm256_mask_unpackhi_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2175*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2176*67e74705SXin Li (__v32qi)_mm256_unpackhi_epi8(__A, __B),
2177*67e74705SXin Li (__v32qi)__W);
2178*67e74705SXin Li }
2179*67e74705SXin Li
2180*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_epi8(__mmask32 __U,__m256i __A,__m256i __B)2181*67e74705SXin Li _mm256_maskz_unpackhi_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2182*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2183*67e74705SXin Li (__v32qi)_mm256_unpackhi_epi8(__A, __B),
2184*67e74705SXin Li (__v32qi)_mm256_setzero_si256());
2185*67e74705SXin Li }
2186*67e74705SXin Li
2187*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2188*67e74705SXin Li _mm_mask_unpackhi_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2189*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2190*67e74705SXin Li (__v8hi)_mm_unpackhi_epi16(__A, __B),
2191*67e74705SXin Li (__v8hi)__W);
2192*67e74705SXin Li }
2193*67e74705SXin Li
2194*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_epi16(__mmask8 __U,__m128i __A,__m128i __B)2195*67e74705SXin Li _mm_maskz_unpackhi_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2196*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2197*67e74705SXin Li (__v8hi)_mm_unpackhi_epi16(__A, __B),
2198*67e74705SXin Li (__v8hi) _mm_setzero_si128());
2199*67e74705SXin Li }
2200*67e74705SXin Li
2201*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2202*67e74705SXin Li _mm256_mask_unpackhi_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2203*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2204*67e74705SXin Li (__v16hi)_mm256_unpackhi_epi16(__A, __B),
2205*67e74705SXin Li (__v16hi)__W);
2206*67e74705SXin Li }
2207*67e74705SXin Li
2208*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_epi16(__mmask16 __U,__m256i __A,__m256i __B)2209*67e74705SXin Li _mm256_maskz_unpackhi_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2210*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2211*67e74705SXin Li (__v16hi)_mm256_unpackhi_epi16(__A, __B),
2212*67e74705SXin Li (__v16hi)_mm256_setzero_si256());
2213*67e74705SXin Li }
2214*67e74705SXin Li
2215*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_epi8(__m128i __W,__mmask16 __U,__m128i __A,__m128i __B)2216*67e74705SXin Li _mm_mask_unpacklo_epi8(__m128i __W, __mmask16 __U, __m128i __A, __m128i __B) {
2217*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2218*67e74705SXin Li (__v16qi)_mm_unpacklo_epi8(__A, __B),
2219*67e74705SXin Li (__v16qi)__W);
2220*67e74705SXin Li }
2221*67e74705SXin Li
2222*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_epi8(__mmask16 __U,__m128i __A,__m128i __B)2223*67e74705SXin Li _mm_maskz_unpacklo_epi8(__mmask16 __U, __m128i __A, __m128i __B) {
2224*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128((__mmask16)__U,
2225*67e74705SXin Li (__v16qi)_mm_unpacklo_epi8(__A, __B),
2226*67e74705SXin Li (__v16qi)_mm_setzero_si128());
2227*67e74705SXin Li }
2228*67e74705SXin Li
2229*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_epi8(__m256i __W,__mmask32 __U,__m256i __A,__m256i __B)2230*67e74705SXin Li _mm256_mask_unpacklo_epi8(__m256i __W, __mmask32 __U, __m256i __A, __m256i __B) {
2231*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2232*67e74705SXin Li (__v32qi)_mm256_unpacklo_epi8(__A, __B),
2233*67e74705SXin Li (__v32qi)__W);
2234*67e74705SXin Li }
2235*67e74705SXin Li
2236*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_epi8(__mmask32 __U,__m256i __A,__m256i __B)2237*67e74705SXin Li _mm256_maskz_unpacklo_epi8(__mmask32 __U, __m256i __A, __m256i __B) {
2238*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256((__mmask32)__U,
2239*67e74705SXin Li (__v32qi)_mm256_unpacklo_epi8(__A, __B),
2240*67e74705SXin Li (__v32qi)_mm256_setzero_si256());
2241*67e74705SXin Li }
2242*67e74705SXin Li
2243*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2244*67e74705SXin Li _mm_mask_unpacklo_epi16(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
2245*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2246*67e74705SXin Li (__v8hi)_mm_unpacklo_epi16(__A, __B),
2247*67e74705SXin Li (__v8hi)__W);
2248*67e74705SXin Li }
2249*67e74705SXin Li
2250*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_epi16(__mmask8 __U,__m128i __A,__m128i __B)2251*67e74705SXin Li _mm_maskz_unpacklo_epi16(__mmask8 __U, __m128i __A, __m128i __B) {
2252*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128((__mmask8)__U,
2253*67e74705SXin Li (__v8hi)_mm_unpacklo_epi16(__A, __B),
2254*67e74705SXin Li (__v8hi) _mm_setzero_si128());
2255*67e74705SXin Li }
2256*67e74705SXin Li
2257*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2258*67e74705SXin Li _mm256_mask_unpacklo_epi16(__m256i __W, __mmask16 __U, __m256i __A, __m256i __B) {
2259*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2260*67e74705SXin Li (__v16hi)_mm256_unpacklo_epi16(__A, __B),
2261*67e74705SXin Li (__v16hi)__W);
2262*67e74705SXin Li }
2263*67e74705SXin Li
2264*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_epi16(__mmask16 __U,__m256i __A,__m256i __B)2265*67e74705SXin Li _mm256_maskz_unpacklo_epi16(__mmask16 __U, __m256i __A, __m256i __B) {
2266*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256((__mmask16)__U,
2267*67e74705SXin Li (__v16hi)_mm256_unpacklo_epi16(__A, __B),
2268*67e74705SXin Li (__v16hi)_mm256_setzero_si256());
2269*67e74705SXin Li }
2270*67e74705SXin Li
2271*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi8_epi16(__m128i __W,__mmask32 __U,__m128i __A)2272*67e74705SXin Li _mm_mask_cvtepi8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2273*67e74705SXin Li {
2274*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2275*67e74705SXin Li (__v8hi) __W,
2276*67e74705SXin Li (__mmask8) __U);
2277*67e74705SXin Li }
2278*67e74705SXin Li
2279*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi8_epi16(__mmask8 __U,__m128i __A)2280*67e74705SXin Li _mm_maskz_cvtepi8_epi16 (__mmask8 __U, __m128i __A)
2281*67e74705SXin Li {
2282*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbw128_mask ((__v16qi) __A,
2283*67e74705SXin Li (__v8hi)
2284*67e74705SXin Li _mm_setzero_si128 (),
2285*67e74705SXin Li (__mmask8) __U);
2286*67e74705SXin Li }
2287*67e74705SXin Li
2288*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi8_epi16(__m256i __W,__mmask32 __U,__m128i __A)2289*67e74705SXin Li _mm256_mask_cvtepi8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2290*67e74705SXin Li {
2291*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2292*67e74705SXin Li (__v16hi) __W,
2293*67e74705SXin Li (__mmask16) __U);
2294*67e74705SXin Li }
2295*67e74705SXin Li
2296*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi8_epi16(__mmask16 __U,__m128i __A)2297*67e74705SXin Li _mm256_maskz_cvtepi8_epi16 (__mmask16 __U, __m128i __A)
2298*67e74705SXin Li {
2299*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbw256_mask ((__v16qi) __A,
2300*67e74705SXin Li (__v16hi)
2301*67e74705SXin Li _mm256_setzero_si256 (),
2302*67e74705SXin Li (__mmask16) __U);
2303*67e74705SXin Li }
2304*67e74705SXin Li
2305*67e74705SXin Li
2306*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu8_epi16(__m128i __W,__mmask32 __U,__m128i __A)2307*67e74705SXin Li _mm_mask_cvtepu8_epi16 (__m128i __W, __mmask32 __U, __m128i __A)
2308*67e74705SXin Li {
2309*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2310*67e74705SXin Li (__v8hi) __W,
2311*67e74705SXin Li (__mmask8) __U);
2312*67e74705SXin Li }
2313*67e74705SXin Li
2314*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu8_epi16(__mmask8 __U,__m128i __A)2315*67e74705SXin Li _mm_maskz_cvtepu8_epi16 (__mmask8 __U, __m128i __A)
2316*67e74705SXin Li {
2317*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbw128_mask ((__v16qi) __A,
2318*67e74705SXin Li (__v8hi)
2319*67e74705SXin Li _mm_setzero_si128 (),
2320*67e74705SXin Li (__mmask8) __U);
2321*67e74705SXin Li }
2322*67e74705SXin Li
2323*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu8_epi16(__m256i __W,__mmask32 __U,__m128i __A)2324*67e74705SXin Li _mm256_mask_cvtepu8_epi16 (__m256i __W, __mmask32 __U, __m128i __A)
2325*67e74705SXin Li {
2326*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2327*67e74705SXin Li (__v16hi) __W,
2328*67e74705SXin Li (__mmask16) __U);
2329*67e74705SXin Li }
2330*67e74705SXin Li
2331*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu8_epi16(__mmask16 __U,__m128i __A)2332*67e74705SXin Li _mm256_maskz_cvtepu8_epi16 (__mmask16 __U, __m128i __A)
2333*67e74705SXin Li {
2334*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbw256_mask ((__v16qi) __A,
2335*67e74705SXin Li (__v16hi)
2336*67e74705SXin Li _mm256_setzero_si256 (),
2337*67e74705SXin Li (__mmask16) __U);
2338*67e74705SXin Li }
2339*67e74705SXin Li
2340*67e74705SXin Li
2341*67e74705SXin Li #define _mm_cmp_epi8_mask(a, b, p) __extension__ ({ \
2342*67e74705SXin Li (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2343*67e74705SXin Li (__v16qi)(__m128i)(b), (int)(p), \
2344*67e74705SXin Li (__mmask16)-1); })
2345*67e74705SXin Li
2346*67e74705SXin Li #define _mm_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2347*67e74705SXin Li (__mmask16)__builtin_ia32_cmpb128_mask((__v16qi)(__m128i)(a), \
2348*67e74705SXin Li (__v16qi)(__m128i)(b), (int)(p), \
2349*67e74705SXin Li (__mmask16)(m)); })
2350*67e74705SXin Li
2351*67e74705SXin Li #define _mm_cmp_epu8_mask(a, b, p) __extension__ ({ \
2352*67e74705SXin Li (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2353*67e74705SXin Li (__v16qi)(__m128i)(b), (int)(p), \
2354*67e74705SXin Li (__mmask16)-1); })
2355*67e74705SXin Li
2356*67e74705SXin Li #define _mm_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2357*67e74705SXin Li (__mmask16)__builtin_ia32_ucmpb128_mask((__v16qi)(__m128i)(a), \
2358*67e74705SXin Li (__v16qi)(__m128i)(b), (int)(p), \
2359*67e74705SXin Li (__mmask16)(m)); })
2360*67e74705SXin Li
2361*67e74705SXin Li #define _mm256_cmp_epi8_mask(a, b, p) __extension__ ({ \
2362*67e74705SXin Li (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2363*67e74705SXin Li (__v32qi)(__m256i)(b), (int)(p), \
2364*67e74705SXin Li (__mmask32)-1); })
2365*67e74705SXin Li
2366*67e74705SXin Li #define _mm256_mask_cmp_epi8_mask(m, a, b, p) __extension__ ({ \
2367*67e74705SXin Li (__mmask32)__builtin_ia32_cmpb256_mask((__v32qi)(__m256i)(a), \
2368*67e74705SXin Li (__v32qi)(__m256i)(b), (int)(p), \
2369*67e74705SXin Li (__mmask32)(m)); })
2370*67e74705SXin Li
2371*67e74705SXin Li #define _mm256_cmp_epu8_mask(a, b, p) __extension__ ({ \
2372*67e74705SXin Li (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2373*67e74705SXin Li (__v32qi)(__m256i)(b), (int)(p), \
2374*67e74705SXin Li (__mmask32)-1); })
2375*67e74705SXin Li
2376*67e74705SXin Li #define _mm256_mask_cmp_epu8_mask(m, a, b, p) __extension__ ({ \
2377*67e74705SXin Li (__mmask32)__builtin_ia32_ucmpb256_mask((__v32qi)(__m256i)(a), \
2378*67e74705SXin Li (__v32qi)(__m256i)(b), (int)(p), \
2379*67e74705SXin Li (__mmask32)(m)); })
2380*67e74705SXin Li
2381*67e74705SXin Li #define _mm_cmp_epi16_mask(a, b, p) __extension__ ({ \
2382*67e74705SXin Li (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2383*67e74705SXin Li (__v8hi)(__m128i)(b), (int)(p), \
2384*67e74705SXin Li (__mmask8)-1); })
2385*67e74705SXin Li
2386*67e74705SXin Li #define _mm_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2387*67e74705SXin Li (__mmask8)__builtin_ia32_cmpw128_mask((__v8hi)(__m128i)(a), \
2388*67e74705SXin Li (__v8hi)(__m128i)(b), (int)(p), \
2389*67e74705SXin Li (__mmask8)(m)); })
2390*67e74705SXin Li
2391*67e74705SXin Li #define _mm_cmp_epu16_mask(a, b, p) __extension__ ({ \
2392*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2393*67e74705SXin Li (__v8hi)(__m128i)(b), (int)(p), \
2394*67e74705SXin Li (__mmask8)-1); })
2395*67e74705SXin Li
2396*67e74705SXin Li #define _mm_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2397*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpw128_mask((__v8hi)(__m128i)(a), \
2398*67e74705SXin Li (__v8hi)(__m128i)(b), (int)(p), \
2399*67e74705SXin Li (__mmask8)(m)); })
2400*67e74705SXin Li
2401*67e74705SXin Li #define _mm256_cmp_epi16_mask(a, b, p) __extension__ ({ \
2402*67e74705SXin Li (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2403*67e74705SXin Li (__v16hi)(__m256i)(b), (int)(p), \
2404*67e74705SXin Li (__mmask16)-1); })
2405*67e74705SXin Li
2406*67e74705SXin Li #define _mm256_mask_cmp_epi16_mask(m, a, b, p) __extension__ ({ \
2407*67e74705SXin Li (__mmask16)__builtin_ia32_cmpw256_mask((__v16hi)(__m256i)(a), \
2408*67e74705SXin Li (__v16hi)(__m256i)(b), (int)(p), \
2409*67e74705SXin Li (__mmask16)(m)); })
2410*67e74705SXin Li
2411*67e74705SXin Li #define _mm256_cmp_epu16_mask(a, b, p) __extension__ ({ \
2412*67e74705SXin Li (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2413*67e74705SXin Li (__v16hi)(__m256i)(b), (int)(p), \
2414*67e74705SXin Li (__mmask16)-1); })
2415*67e74705SXin Li
2416*67e74705SXin Li #define _mm256_mask_cmp_epu16_mask(m, a, b, p) __extension__ ({ \
2417*67e74705SXin Li (__mmask16)__builtin_ia32_ucmpw256_mask((__v16hi)(__m256i)(a), \
2418*67e74705SXin Li (__v16hi)(__m256i)(b), (int)(p), \
2419*67e74705SXin Li (__mmask16)(m)); })
2420*67e74705SXin Li
2421*67e74705SXin Li #define _mm_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
2422*67e74705SXin Li (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2423*67e74705SXin Li (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
2424*67e74705SXin Li (__v8hi)(__m128i)(W)); })
2425*67e74705SXin Li
2426*67e74705SXin Li #define _mm_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
2427*67e74705SXin Li (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2428*67e74705SXin Li (__v8hi)_mm_shufflehi_epi16((A), (imm)), \
2429*67e74705SXin Li (__v8hi)_mm_setzero_hi()); })
2430*67e74705SXin Li
2431*67e74705SXin Li #define _mm256_mask_shufflehi_epi16(W, U, A, imm) __extension__ ({ \
2432*67e74705SXin Li (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2433*67e74705SXin Li (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
2434*67e74705SXin Li (__v16hi)(__m256i)(W)); })
2435*67e74705SXin Li
2436*67e74705SXin Li #define _mm256_maskz_shufflehi_epi16(U, A, imm) __extension__ ({ \
2437*67e74705SXin Li (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2438*67e74705SXin Li (__v16hi)_mm256_shufflehi_epi16((A), (imm)), \
2439*67e74705SXin Li (__v16hi)_mm256_setzero_si256()); })
2440*67e74705SXin Li
2441*67e74705SXin Li #define _mm_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
2442*67e74705SXin Li (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2443*67e74705SXin Li (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
2444*67e74705SXin Li (__v8hi)(__m128i)(W)); })
2445*67e74705SXin Li
2446*67e74705SXin Li #define _mm_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
2447*67e74705SXin Li (__m128i)__builtin_ia32_selectw_128((__mmask8)(U), \
2448*67e74705SXin Li (__v8hi)_mm_shufflelo_epi16((A), (imm)), \
2449*67e74705SXin Li (__v8hi)_mm_setzero_hi()); })
2450*67e74705SXin Li
2451*67e74705SXin Li #define _mm256_mask_shufflelo_epi16(W, U, A, imm) __extension__ ({ \
2452*67e74705SXin Li (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2453*67e74705SXin Li (__v16hi)_mm256_shufflelo_epi16((A), \
2454*67e74705SXin Li (imm)), \
2455*67e74705SXin Li (__v16hi)(__m256i)(W)); })
2456*67e74705SXin Li
2457*67e74705SXin Li #define _mm256_maskz_shufflelo_epi16(U, A, imm) __extension__ ({ \
2458*67e74705SXin Li (__m256i)__builtin_ia32_selectw_256((__mmask16)(U), \
2459*67e74705SXin Li (__v16hi)_mm256_shufflelo_epi16((A), \
2460*67e74705SXin Li (imm)), \
2461*67e74705SXin Li (__v16hi)_mm256_setzero_si256()); })
2462*67e74705SXin Li
2463*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sllv_epi16(__m256i __A,__m256i __B)2464*67e74705SXin Li _mm256_sllv_epi16 (__m256i __A, __m256i __B)
2465*67e74705SXin Li {
2466*67e74705SXin Li return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2467*67e74705SXin Li (__v16hi) __B,
2468*67e74705SXin Li (__v16hi)
2469*67e74705SXin Li _mm256_setzero_si256 (),
2470*67e74705SXin Li (__mmask16) -1);
2471*67e74705SXin Li }
2472*67e74705SXin Li
2473*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sllv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2474*67e74705SXin Li _mm256_mask_sllv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2475*67e74705SXin Li __m256i __B)
2476*67e74705SXin Li {
2477*67e74705SXin Li return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2478*67e74705SXin Li (__v16hi) __B,
2479*67e74705SXin Li (__v16hi) __W,
2480*67e74705SXin Li (__mmask16) __U);
2481*67e74705SXin Li }
2482*67e74705SXin Li
2483*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sllv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2484*67e74705SXin Li _mm256_maskz_sllv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2485*67e74705SXin Li {
2486*67e74705SXin Li return (__m256i) __builtin_ia32_psllv16hi_mask ((__v16hi) __A,
2487*67e74705SXin Li (__v16hi) __B,
2488*67e74705SXin Li (__v16hi)
2489*67e74705SXin Li _mm256_setzero_si256 (),
2490*67e74705SXin Li (__mmask16) __U);
2491*67e74705SXin Li }
2492*67e74705SXin Li
2493*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_sllv_epi16(__m128i __A,__m128i __B)2494*67e74705SXin Li _mm_sllv_epi16 (__m128i __A, __m128i __B)
2495*67e74705SXin Li {
2496*67e74705SXin Li return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2497*67e74705SXin Li (__v8hi) __B,
2498*67e74705SXin Li (__v8hi)
2499*67e74705SXin Li _mm_setzero_hi (),
2500*67e74705SXin Li (__mmask8) -1);
2501*67e74705SXin Li }
2502*67e74705SXin Li
2503*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sllv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2504*67e74705SXin Li _mm_mask_sllv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2505*67e74705SXin Li __m128i __B)
2506*67e74705SXin Li {
2507*67e74705SXin Li return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2508*67e74705SXin Li (__v8hi) __B,
2509*67e74705SXin Li (__v8hi) __W,
2510*67e74705SXin Li (__mmask8) __U);
2511*67e74705SXin Li }
2512*67e74705SXin Li
2513*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sllv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2514*67e74705SXin Li _mm_maskz_sllv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2515*67e74705SXin Li {
2516*67e74705SXin Li return (__m128i) __builtin_ia32_psllv8hi_mask ((__v8hi) __A,
2517*67e74705SXin Li (__v8hi) __B,
2518*67e74705SXin Li (__v8hi)
2519*67e74705SXin Li _mm_setzero_si128 (),
2520*67e74705SXin Li (__mmask8) __U);
2521*67e74705SXin Li }
2522*67e74705SXin Li
2523*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sll_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2524*67e74705SXin Li _mm_mask_sll_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2525*67e74705SXin Li __m128i __B)
2526*67e74705SXin Li {
2527*67e74705SXin Li return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2528*67e74705SXin Li (__v8hi) __B,
2529*67e74705SXin Li (__v8hi) __W,
2530*67e74705SXin Li (__mmask8) __U);
2531*67e74705SXin Li }
2532*67e74705SXin Li
2533*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sll_epi16(__mmask8 __U,__m128i __A,__m128i __B)2534*67e74705SXin Li _mm_maskz_sll_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2535*67e74705SXin Li {
2536*67e74705SXin Li return (__m128i) __builtin_ia32_psllw128_mask ((__v8hi) __A,
2537*67e74705SXin Li (__v8hi) __B,
2538*67e74705SXin Li (__v8hi)
2539*67e74705SXin Li _mm_setzero_si128 (),
2540*67e74705SXin Li (__mmask8) __U);
2541*67e74705SXin Li }
2542*67e74705SXin Li
2543*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sll_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2544*67e74705SXin Li _mm256_mask_sll_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2545*67e74705SXin Li __m128i __B)
2546*67e74705SXin Li {
2547*67e74705SXin Li return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2548*67e74705SXin Li (__v8hi) __B,
2549*67e74705SXin Li (__v16hi) __W,
2550*67e74705SXin Li (__mmask16) __U);
2551*67e74705SXin Li }
2552*67e74705SXin Li
2553*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sll_epi16(__mmask16 __U,__m256i __A,__m128i __B)2554*67e74705SXin Li _mm256_maskz_sll_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2555*67e74705SXin Li {
2556*67e74705SXin Li return (__m256i) __builtin_ia32_psllw256_mask ((__v16hi) __A,
2557*67e74705SXin Li (__v8hi) __B,
2558*67e74705SXin Li (__v16hi)
2559*67e74705SXin Li _mm256_setzero_si256 (),
2560*67e74705SXin Li (__mmask16) __U);
2561*67e74705SXin Li }
2562*67e74705SXin Li
2563*67e74705SXin Li #define _mm_mask_slli_epi16(W, U, A, B) __extension__ ({ \
2564*67e74705SXin Li (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \
2565*67e74705SXin Li (__v8hi)(__m128i)(W), \
2566*67e74705SXin Li (__mmask8)(U)); })
2567*67e74705SXin Li
2568*67e74705SXin Li #define _mm_maskz_slli_epi16(U, A, B) __extension__ ({ \
2569*67e74705SXin Li (__m128i)__builtin_ia32_psllwi128_mask((__v8hi)(__m128i)(A), (int)(B), \
2570*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
2571*67e74705SXin Li (__mmask8)(U)); })
2572*67e74705SXin Li
2573*67e74705SXin Li #define _mm256_mask_slli_epi16(W, U, A, B) __extension__ ({ \
2574*67e74705SXin Li (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \
2575*67e74705SXin Li (__v16hi)(__m256i)(W), \
2576*67e74705SXin Li (__mmask16)(U)); })
2577*67e74705SXin Li
2578*67e74705SXin Li #define _mm256_maskz_slli_epi16(U, A, B) __extension__ ({ \
2579*67e74705SXin Li (__m256i)__builtin_ia32_psllwi256_mask((__v16hi)(__m256i)(A), (int)(B), \
2580*67e74705SXin Li (__v16hi)_mm256_setzero_si256(), \
2581*67e74705SXin Li (__mmask16)(U)); })
2582*67e74705SXin Li
2583*67e74705SXin Li
2584*67e74705SXin Li
2585*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srlv_epi16(__m256i __A,__m256i __B)2586*67e74705SXin Li _mm256_srlv_epi16 (__m256i __A, __m256i __B)
2587*67e74705SXin Li {
2588*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2589*67e74705SXin Li (__v16hi) __B,
2590*67e74705SXin Li (__v16hi)
2591*67e74705SXin Li _mm256_setzero_si256 (),
2592*67e74705SXin Li (__mmask16) -1);
2593*67e74705SXin Li }
2594*67e74705SXin Li
2595*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srlv_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2596*67e74705SXin Li _mm256_mask_srlv_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2597*67e74705SXin Li __m256i __B)
2598*67e74705SXin Li {
2599*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2600*67e74705SXin Li (__v16hi) __B,
2601*67e74705SXin Li (__v16hi) __W,
2602*67e74705SXin Li (__mmask16) __U);
2603*67e74705SXin Li }
2604*67e74705SXin Li
2605*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srlv_epi16(__mmask16 __U,__m256i __A,__m256i __B)2606*67e74705SXin Li _mm256_maskz_srlv_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2607*67e74705SXin Li {
2608*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv16hi_mask ((__v16hi) __A,
2609*67e74705SXin Li (__v16hi) __B,
2610*67e74705SXin Li (__v16hi)
2611*67e74705SXin Li _mm256_setzero_si256 (),
2612*67e74705SXin Li (__mmask16) __U);
2613*67e74705SXin Li }
2614*67e74705SXin Li
2615*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srlv_epi16(__m128i __A,__m128i __B)2616*67e74705SXin Li _mm_srlv_epi16 (__m128i __A, __m128i __B)
2617*67e74705SXin Li {
2618*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2619*67e74705SXin Li (__v8hi) __B,
2620*67e74705SXin Li (__v8hi)
2621*67e74705SXin Li _mm_setzero_hi (),
2622*67e74705SXin Li (__mmask8) -1);
2623*67e74705SXin Li }
2624*67e74705SXin Li
2625*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srlv_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2626*67e74705SXin Li _mm_mask_srlv_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2627*67e74705SXin Li __m128i __B)
2628*67e74705SXin Li {
2629*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2630*67e74705SXin Li (__v8hi) __B,
2631*67e74705SXin Li (__v8hi) __W,
2632*67e74705SXin Li (__mmask8) __U);
2633*67e74705SXin Li }
2634*67e74705SXin Li
2635*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srlv_epi16(__mmask8 __U,__m128i __A,__m128i __B)2636*67e74705SXin Li _mm_maskz_srlv_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2637*67e74705SXin Li {
2638*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv8hi_mask ((__v8hi) __A,
2639*67e74705SXin Li (__v8hi) __B,
2640*67e74705SXin Li (__v8hi)
2641*67e74705SXin Li _mm_setzero_si128 (),
2642*67e74705SXin Li (__mmask8) __U);
2643*67e74705SXin Li }
2644*67e74705SXin Li
2645*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srav_epi16(__m256i __A,__m256i __B)2646*67e74705SXin Li _mm256_srav_epi16 (__m256i __A, __m256i __B)
2647*67e74705SXin Li {
2648*67e74705SXin Li return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2649*67e74705SXin Li (__v16hi) __B,
2650*67e74705SXin Li (__v16hi)
2651*67e74705SXin Li _mm256_setzero_si256 (),
2652*67e74705SXin Li (__mmask16) -1);
2653*67e74705SXin Li }
2654*67e74705SXin Li
2655*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srav_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m256i __B)2656*67e74705SXin Li _mm256_mask_srav_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2657*67e74705SXin Li __m256i __B)
2658*67e74705SXin Li {
2659*67e74705SXin Li return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2660*67e74705SXin Li (__v16hi) __B,
2661*67e74705SXin Li (__v16hi) __W,
2662*67e74705SXin Li (__mmask16) __U);
2663*67e74705SXin Li }
2664*67e74705SXin Li
2665*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srav_epi16(__mmask16 __U,__m256i __A,__m256i __B)2666*67e74705SXin Li _mm256_maskz_srav_epi16 (__mmask16 __U, __m256i __A, __m256i __B)
2667*67e74705SXin Li {
2668*67e74705SXin Li return (__m256i) __builtin_ia32_psrav16hi_mask ((__v16hi) __A,
2669*67e74705SXin Li (__v16hi) __B,
2670*67e74705SXin Li (__v16hi)
2671*67e74705SXin Li _mm256_setzero_si256 (),
2672*67e74705SXin Li (__mmask16) __U);
2673*67e74705SXin Li }
2674*67e74705SXin Li
2675*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srav_epi16(__m128i __A,__m128i __B)2676*67e74705SXin Li _mm_srav_epi16 (__m128i __A, __m128i __B)
2677*67e74705SXin Li {
2678*67e74705SXin Li return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2679*67e74705SXin Li (__v8hi) __B,
2680*67e74705SXin Li (__v8hi)
2681*67e74705SXin Li _mm_setzero_hi (),
2682*67e74705SXin Li (__mmask8) -1);
2683*67e74705SXin Li }
2684*67e74705SXin Li
2685*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srav_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2686*67e74705SXin Li _mm_mask_srav_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2687*67e74705SXin Li __m128i __B)
2688*67e74705SXin Li {
2689*67e74705SXin Li return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2690*67e74705SXin Li (__v8hi) __B,
2691*67e74705SXin Li (__v8hi) __W,
2692*67e74705SXin Li (__mmask8) __U);
2693*67e74705SXin Li }
2694*67e74705SXin Li
2695*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srav_epi16(__mmask8 __U,__m128i __A,__m128i __B)2696*67e74705SXin Li _mm_maskz_srav_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2697*67e74705SXin Li {
2698*67e74705SXin Li return (__m128i) __builtin_ia32_psrav8hi_mask ((__v8hi) __A,
2699*67e74705SXin Li (__v8hi) __B,
2700*67e74705SXin Li (__v8hi)
2701*67e74705SXin Li _mm_setzero_si128 (),
2702*67e74705SXin Li (__mmask8) __U);
2703*67e74705SXin Li }
2704*67e74705SXin Li
2705*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sra_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2706*67e74705SXin Li _mm_mask_sra_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2707*67e74705SXin Li __m128i __B)
2708*67e74705SXin Li {
2709*67e74705SXin Li return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2710*67e74705SXin Li (__v8hi) __B,
2711*67e74705SXin Li (__v8hi) __W,
2712*67e74705SXin Li (__mmask8) __U);
2713*67e74705SXin Li }
2714*67e74705SXin Li
2715*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sra_epi16(__mmask8 __U,__m128i __A,__m128i __B)2716*67e74705SXin Li _mm_maskz_sra_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2717*67e74705SXin Li {
2718*67e74705SXin Li return (__m128i) __builtin_ia32_psraw128_mask ((__v8hi) __A,
2719*67e74705SXin Li (__v8hi) __B,
2720*67e74705SXin Li (__v8hi)
2721*67e74705SXin Li _mm_setzero_si128 (),
2722*67e74705SXin Li (__mmask8) __U);
2723*67e74705SXin Li }
2724*67e74705SXin Li
2725*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sra_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2726*67e74705SXin Li _mm256_mask_sra_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2727*67e74705SXin Li __m128i __B)
2728*67e74705SXin Li {
2729*67e74705SXin Li return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2730*67e74705SXin Li (__v8hi) __B,
2731*67e74705SXin Li (__v16hi) __W,
2732*67e74705SXin Li (__mmask16) __U);
2733*67e74705SXin Li }
2734*67e74705SXin Li
2735*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sra_epi16(__mmask16 __U,__m256i __A,__m128i __B)2736*67e74705SXin Li _mm256_maskz_sra_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2737*67e74705SXin Li {
2738*67e74705SXin Li return (__m256i) __builtin_ia32_psraw256_mask ((__v16hi) __A,
2739*67e74705SXin Li (__v8hi) __B,
2740*67e74705SXin Li (__v16hi)
2741*67e74705SXin Li _mm256_setzero_si256 (),
2742*67e74705SXin Li (__mmask16) __U);
2743*67e74705SXin Li }
2744*67e74705SXin Li
2745*67e74705SXin Li #define _mm_mask_srai_epi16(W, U, A, imm) __extension__ ({ \
2746*67e74705SXin Li (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2747*67e74705SXin Li (__v8hi)(__m128i)(W), \
2748*67e74705SXin Li (__mmask8)(U)); })
2749*67e74705SXin Li
2750*67e74705SXin Li #define _mm_maskz_srai_epi16(U, A, imm) __extension__ ({ \
2751*67e74705SXin Li (__m128i)__builtin_ia32_psrawi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2752*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
2753*67e74705SXin Li (__mmask8)(U)); })
2754*67e74705SXin Li
2755*67e74705SXin Li #define _mm256_mask_srai_epi16(W, U, A, imm) __extension__ ({ \
2756*67e74705SXin Li (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2757*67e74705SXin Li (__v16hi)(__m256i)(W), \
2758*67e74705SXin Li (__mmask16)(U)); })
2759*67e74705SXin Li
2760*67e74705SXin Li #define _mm256_maskz_srai_epi16(U, A, imm) __extension__ ({ \
2761*67e74705SXin Li (__m256i)__builtin_ia32_psrawi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2762*67e74705SXin Li (__v16hi)_mm256_setzero_si256(), \
2763*67e74705SXin Li (__mmask16)(U)); })
2764*67e74705SXin Li
2765*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srl_epi16(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)2766*67e74705SXin Li _mm_mask_srl_epi16 (__m128i __W, __mmask8 __U, __m128i __A,
2767*67e74705SXin Li __m128i __B)
2768*67e74705SXin Li {
2769*67e74705SXin Li return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2770*67e74705SXin Li (__v8hi) __B,
2771*67e74705SXin Li (__v8hi) __W,
2772*67e74705SXin Li (__mmask8) __U);
2773*67e74705SXin Li }
2774*67e74705SXin Li
2775*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srl_epi16(__mmask8 __U,__m128i __A,__m128i __B)2776*67e74705SXin Li _mm_maskz_srl_epi16 (__mmask8 __U, __m128i __A, __m128i __B)
2777*67e74705SXin Li {
2778*67e74705SXin Li return (__m128i) __builtin_ia32_psrlw128_mask ((__v8hi) __A,
2779*67e74705SXin Li (__v8hi) __B,
2780*67e74705SXin Li (__v8hi)
2781*67e74705SXin Li _mm_setzero_si128 (),
2782*67e74705SXin Li (__mmask8) __U);
2783*67e74705SXin Li }
2784*67e74705SXin Li
2785*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srl_epi16(__m256i __W,__mmask16 __U,__m256i __A,__m128i __B)2786*67e74705SXin Li _mm256_mask_srl_epi16 (__m256i __W, __mmask16 __U, __m256i __A,
2787*67e74705SXin Li __m128i __B)
2788*67e74705SXin Li {
2789*67e74705SXin Li return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2790*67e74705SXin Li (__v8hi) __B,
2791*67e74705SXin Li (__v16hi) __W,
2792*67e74705SXin Li (__mmask16) __U);
2793*67e74705SXin Li }
2794*67e74705SXin Li
2795*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srl_epi16(__mmask16 __U,__m256i __A,__m128i __B)2796*67e74705SXin Li _mm256_maskz_srl_epi16 (__mmask16 __U, __m256i __A, __m128i __B)
2797*67e74705SXin Li {
2798*67e74705SXin Li return (__m256i) __builtin_ia32_psrlw256_mask ((__v16hi) __A,
2799*67e74705SXin Li (__v8hi) __B,
2800*67e74705SXin Li (__v16hi)
2801*67e74705SXin Li _mm256_setzero_si256 (),
2802*67e74705SXin Li (__mmask16) __U);
2803*67e74705SXin Li }
2804*67e74705SXin Li
2805*67e74705SXin Li #define _mm_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
2806*67e74705SXin Li (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2807*67e74705SXin Li (__v8hi)(__m128i)(W), \
2808*67e74705SXin Li (__mmask8)(U)); })
2809*67e74705SXin Li
2810*67e74705SXin Li #define _mm_maskz_srli_epi16(U, A, imm) __extension__ ({ \
2811*67e74705SXin Li (__m128i)__builtin_ia32_psrlwi128_mask((__v8hi)(__m128i)(A), (int)(imm), \
2812*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
2813*67e74705SXin Li (__mmask8)(U)); })
2814*67e74705SXin Li
2815*67e74705SXin Li #define _mm256_mask_srli_epi16(W, U, A, imm) __extension__ ({ \
2816*67e74705SXin Li (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2817*67e74705SXin Li (__v16hi)(__m256i)(W), \
2818*67e74705SXin Li (__mmask16)(U)); })
2819*67e74705SXin Li
2820*67e74705SXin Li #define _mm256_maskz_srli_epi16(U, A, imm) __extension__ ({ \
2821*67e74705SXin Li (__m256i)__builtin_ia32_psrlwi256_mask((__v16hi)(__m256i)(A), (int)(imm), \
2822*67e74705SXin Li (__v16hi)_mm256_setzero_si256(), \
2823*67e74705SXin Li (__mmask16)(U)); })
2824*67e74705SXin Li
2825*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mov_epi16(__m128i __W,__mmask8 __U,__m128i __A)2826*67e74705SXin Li _mm_mask_mov_epi16 (__m128i __W, __mmask8 __U, __m128i __A)
2827*67e74705SXin Li {
2828*67e74705SXin Li return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2829*67e74705SXin Li (__v8hi) __A,
2830*67e74705SXin Li (__v8hi) __W);
2831*67e74705SXin Li }
2832*67e74705SXin Li
2833*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mov_epi16(__mmask8 __U,__m128i __A)2834*67e74705SXin Li _mm_maskz_mov_epi16 (__mmask8 __U, __m128i __A)
2835*67e74705SXin Li {
2836*67e74705SXin Li return (__m128i) __builtin_ia32_selectw_128 ((__mmask8) __U,
2837*67e74705SXin Li (__v8hi) __A,
2838*67e74705SXin Li (__v8hi) _mm_setzero_hi ());
2839*67e74705SXin Li }
2840*67e74705SXin Li
2841*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mov_epi16(__m256i __W,__mmask16 __U,__m256i __A)2842*67e74705SXin Li _mm256_mask_mov_epi16 (__m256i __W, __mmask16 __U, __m256i __A)
2843*67e74705SXin Li {
2844*67e74705SXin Li return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2845*67e74705SXin Li (__v16hi) __A,
2846*67e74705SXin Li (__v16hi) __W);
2847*67e74705SXin Li }
2848*67e74705SXin Li
2849*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mov_epi16(__mmask16 __U,__m256i __A)2850*67e74705SXin Li _mm256_maskz_mov_epi16 (__mmask16 __U, __m256i __A)
2851*67e74705SXin Li {
2852*67e74705SXin Li return (__m256i) __builtin_ia32_selectw_256 ((__mmask16) __U,
2853*67e74705SXin Li (__v16hi) __A,
2854*67e74705SXin Li (__v16hi) _mm256_setzero_si256 ());
2855*67e74705SXin Li }
2856*67e74705SXin Li
2857*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mov_epi8(__m128i __W,__mmask16 __U,__m128i __A)2858*67e74705SXin Li _mm_mask_mov_epi8 (__m128i __W, __mmask16 __U, __m128i __A)
2859*67e74705SXin Li {
2860*67e74705SXin Li return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2861*67e74705SXin Li (__v16qi) __A,
2862*67e74705SXin Li (__v16qi) __W);
2863*67e74705SXin Li }
2864*67e74705SXin Li
2865*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mov_epi8(__mmask16 __U,__m128i __A)2866*67e74705SXin Li _mm_maskz_mov_epi8 (__mmask16 __U, __m128i __A)
2867*67e74705SXin Li {
2868*67e74705SXin Li return (__m128i) __builtin_ia32_selectb_128 ((__mmask16) __U,
2869*67e74705SXin Li (__v16qi) __A,
2870*67e74705SXin Li (__v16qi) _mm_setzero_hi ());
2871*67e74705SXin Li }
2872*67e74705SXin Li
2873*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mov_epi8(__m256i __W,__mmask32 __U,__m256i __A)2874*67e74705SXin Li _mm256_mask_mov_epi8 (__m256i __W, __mmask32 __U, __m256i __A)
2875*67e74705SXin Li {
2876*67e74705SXin Li return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2877*67e74705SXin Li (__v32qi) __A,
2878*67e74705SXin Li (__v32qi) __W);
2879*67e74705SXin Li }
2880*67e74705SXin Li
2881*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mov_epi8(__mmask32 __U,__m256i __A)2882*67e74705SXin Li _mm256_maskz_mov_epi8 (__mmask32 __U, __m256i __A)
2883*67e74705SXin Li {
2884*67e74705SXin Li return (__m256i) __builtin_ia32_selectb_256 ((__mmask32) __U,
2885*67e74705SXin Li (__v32qi) __A,
2886*67e74705SXin Li (__v32qi) _mm256_setzero_si256 ());
2887*67e74705SXin Li }
2888*67e74705SXin Li
2889*67e74705SXin Li
2890*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_set1_epi8(__m128i __O,__mmask16 __M,char __A)2891*67e74705SXin Li _mm_mask_set1_epi8 (__m128i __O, __mmask16 __M, char __A)
2892*67e74705SXin Li {
2893*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2894*67e74705SXin Li (__v16qi) __O,
2895*67e74705SXin Li __M);
2896*67e74705SXin Li }
2897*67e74705SXin Li
2898*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_set1_epi8(__mmask16 __M,char __A)2899*67e74705SXin Li _mm_maskz_set1_epi8 (__mmask16 __M, char __A)
2900*67e74705SXin Li {
2901*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastb128_gpr_mask (__A,
2902*67e74705SXin Li (__v16qi)
2903*67e74705SXin Li _mm_setzero_si128 (),
2904*67e74705SXin Li __M);
2905*67e74705SXin Li }
2906*67e74705SXin Li
2907*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_set1_epi8(__m256i __O,__mmask32 __M,char __A)2908*67e74705SXin Li _mm256_mask_set1_epi8 (__m256i __O, __mmask32 __M, char __A)
2909*67e74705SXin Li {
2910*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2911*67e74705SXin Li (__v32qi) __O,
2912*67e74705SXin Li __M);
2913*67e74705SXin Li }
2914*67e74705SXin Li
2915*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_set1_epi8(__mmask32 __M,char __A)2916*67e74705SXin Li _mm256_maskz_set1_epi8 (__mmask32 __M, char __A)
2917*67e74705SXin Li {
2918*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastb256_gpr_mask (__A,
2919*67e74705SXin Li (__v32qi)
2920*67e74705SXin Li _mm256_setzero_si256 (),
2921*67e74705SXin Li __M);
2922*67e74705SXin Li }
2923*67e74705SXin Li
2924*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_loadu_epi16(__m128i __W,__mmask8 __U,void const * __P)2925*67e74705SXin Li _mm_mask_loadu_epi16 (__m128i __W, __mmask8 __U, void const *__P)
2926*67e74705SXin Li {
2927*67e74705SXin Li return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2928*67e74705SXin Li (__v8hi) __W,
2929*67e74705SXin Li (__mmask8) __U);
2930*67e74705SXin Li }
2931*67e74705SXin Li
2932*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_loadu_epi16(__mmask8 __U,void const * __P)2933*67e74705SXin Li _mm_maskz_loadu_epi16 (__mmask8 __U, void const *__P)
2934*67e74705SXin Li {
2935*67e74705SXin Li return (__m128i) __builtin_ia32_loaddquhi128_mask ((__v8hi *) __P,
2936*67e74705SXin Li (__v8hi)
2937*67e74705SXin Li _mm_setzero_hi (),
2938*67e74705SXin Li (__mmask8) __U);
2939*67e74705SXin Li }
2940*67e74705SXin Li
2941*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_loadu_epi16(__m256i __W,__mmask16 __U,void const * __P)2942*67e74705SXin Li _mm256_mask_loadu_epi16 (__m256i __W, __mmask16 __U, void const *__P)
2943*67e74705SXin Li {
2944*67e74705SXin Li return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2945*67e74705SXin Li (__v16hi) __W,
2946*67e74705SXin Li (__mmask16) __U);
2947*67e74705SXin Li }
2948*67e74705SXin Li
2949*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_epi16(__mmask16 __U,void const * __P)2950*67e74705SXin Li _mm256_maskz_loadu_epi16 (__mmask16 __U, void const *__P)
2951*67e74705SXin Li {
2952*67e74705SXin Li return (__m256i) __builtin_ia32_loaddquhi256_mask ((__v16hi *) __P,
2953*67e74705SXin Li (__v16hi)
2954*67e74705SXin Li _mm256_setzero_si256 (),
2955*67e74705SXin Li (__mmask16) __U);
2956*67e74705SXin Li }
2957*67e74705SXin Li
2958*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_loadu_epi8(__m128i __W,__mmask16 __U,void const * __P)2959*67e74705SXin Li _mm_mask_loadu_epi8 (__m128i __W, __mmask16 __U, void const *__P)
2960*67e74705SXin Li {
2961*67e74705SXin Li return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2962*67e74705SXin Li (__v16qi) __W,
2963*67e74705SXin Li (__mmask16) __U);
2964*67e74705SXin Li }
2965*67e74705SXin Li
2966*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_loadu_epi8(__mmask16 __U,void const * __P)2967*67e74705SXin Li _mm_maskz_loadu_epi8 (__mmask16 __U, void const *__P)
2968*67e74705SXin Li {
2969*67e74705SXin Li return (__m128i) __builtin_ia32_loaddquqi128_mask ((__v16qi *) __P,
2970*67e74705SXin Li (__v16qi)
2971*67e74705SXin Li _mm_setzero_si128 (),
2972*67e74705SXin Li (__mmask16) __U);
2973*67e74705SXin Li }
2974*67e74705SXin Li
2975*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_loadu_epi8(__m256i __W,__mmask32 __U,void const * __P)2976*67e74705SXin Li _mm256_mask_loadu_epi8 (__m256i __W, __mmask32 __U, void const *__P)
2977*67e74705SXin Li {
2978*67e74705SXin Li return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2979*67e74705SXin Li (__v32qi) __W,
2980*67e74705SXin Li (__mmask32) __U);
2981*67e74705SXin Li }
2982*67e74705SXin Li
2983*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_epi8(__mmask32 __U,void const * __P)2984*67e74705SXin Li _mm256_maskz_loadu_epi8 (__mmask32 __U, void const *__P)
2985*67e74705SXin Li {
2986*67e74705SXin Li return (__m256i) __builtin_ia32_loaddquqi256_mask ((__v32qi *) __P,
2987*67e74705SXin Li (__v32qi)
2988*67e74705SXin Li _mm256_setzero_si256 (),
2989*67e74705SXin Li (__mmask32) __U);
2990*67e74705SXin Li }
2991*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_epi16(void * __P,__mmask8 __U,__m128i __A)2992*67e74705SXin Li _mm_mask_storeu_epi16 (void *__P, __mmask8 __U, __m128i __A)
2993*67e74705SXin Li {
2994*67e74705SXin Li __builtin_ia32_storedquhi128_mask ((__v8hi *) __P,
2995*67e74705SXin Li (__v8hi) __A,
2996*67e74705SXin Li (__mmask8) __U);
2997*67e74705SXin Li }
2998*67e74705SXin Li
2999*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_epi16(void * __P,__mmask16 __U,__m256i __A)3000*67e74705SXin Li _mm256_mask_storeu_epi16 (void *__P, __mmask16 __U, __m256i __A)
3001*67e74705SXin Li {
3002*67e74705SXin Li __builtin_ia32_storedquhi256_mask ((__v16hi *) __P,
3003*67e74705SXin Li (__v16hi) __A,
3004*67e74705SXin Li (__mmask16) __U);
3005*67e74705SXin Li }
3006*67e74705SXin Li
3007*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_epi8(void * __P,__mmask16 __U,__m128i __A)3008*67e74705SXin Li _mm_mask_storeu_epi8 (void *__P, __mmask16 __U, __m128i __A)
3009*67e74705SXin Li {
3010*67e74705SXin Li __builtin_ia32_storedquqi128_mask ((__v16qi *) __P,
3011*67e74705SXin Li (__v16qi) __A,
3012*67e74705SXin Li (__mmask16) __U);
3013*67e74705SXin Li }
3014*67e74705SXin Li
3015*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_epi8(void * __P,__mmask32 __U,__m256i __A)3016*67e74705SXin Li _mm256_mask_storeu_epi8 (void *__P, __mmask32 __U, __m256i __A)
3017*67e74705SXin Li {
3018*67e74705SXin Li __builtin_ia32_storedquqi256_mask ((__v32qi *) __P,
3019*67e74705SXin Li (__v32qi) __A,
3020*67e74705SXin Li (__mmask32) __U);
3021*67e74705SXin Li }
3022*67e74705SXin Li
3023*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_test_epi8_mask(__m128i __A,__m128i __B)3024*67e74705SXin Li _mm_test_epi8_mask (__m128i __A, __m128i __B)
3025*67e74705SXin Li {
3026*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3027*67e74705SXin Li (__v16qi) __B,
3028*67e74705SXin Li (__mmask16) -1);
3029*67e74705SXin Li }
3030*67e74705SXin Li
3031*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_test_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)3032*67e74705SXin Li _mm_mask_test_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3033*67e74705SXin Li {
3034*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestmb128 ((__v16qi) __A,
3035*67e74705SXin Li (__v16qi) __B, __U);
3036*67e74705SXin Li }
3037*67e74705SXin Li
3038*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_test_epi8_mask(__m256i __A,__m256i __B)3039*67e74705SXin Li _mm256_test_epi8_mask (__m256i __A, __m256i __B)
3040*67e74705SXin Li {
3041*67e74705SXin Li return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3042*67e74705SXin Li (__v32qi) __B,
3043*67e74705SXin Li (__mmask32) -1);
3044*67e74705SXin Li }
3045*67e74705SXin Li
3046*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_test_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)3047*67e74705SXin Li _mm256_mask_test_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3048*67e74705SXin Li {
3049*67e74705SXin Li return (__mmask32) __builtin_ia32_ptestmb256 ((__v32qi) __A,
3050*67e74705SXin Li (__v32qi) __B, __U);
3051*67e74705SXin Li }
3052*67e74705SXin Li
3053*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_test_epi16_mask(__m128i __A,__m128i __B)3054*67e74705SXin Li _mm_test_epi16_mask (__m128i __A, __m128i __B)
3055*67e74705SXin Li {
3056*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3057*67e74705SXin Li (__v8hi) __B,
3058*67e74705SXin Li (__mmask8) -1);
3059*67e74705SXin Li }
3060*67e74705SXin Li
3061*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_test_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)3062*67e74705SXin Li _mm_mask_test_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3063*67e74705SXin Li {
3064*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmw128 ((__v8hi) __A,
3065*67e74705SXin Li (__v8hi) __B, __U);
3066*67e74705SXin Li }
3067*67e74705SXin Li
3068*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_test_epi16_mask(__m256i __A,__m256i __B)3069*67e74705SXin Li _mm256_test_epi16_mask (__m256i __A, __m256i __B)
3070*67e74705SXin Li {
3071*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3072*67e74705SXin Li (__v16hi) __B,
3073*67e74705SXin Li (__mmask16) -1);
3074*67e74705SXin Li }
3075*67e74705SXin Li
3076*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_test_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)3077*67e74705SXin Li _mm256_mask_test_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3078*67e74705SXin Li {
3079*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestmw256 ((__v16hi) __A,
3080*67e74705SXin Li (__v16hi) __B, __U);
3081*67e74705SXin Li }
3082*67e74705SXin Li
3083*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_testn_epi8_mask(__m128i __A,__m128i __B)3084*67e74705SXin Li _mm_testn_epi8_mask (__m128i __A, __m128i __B)
3085*67e74705SXin Li {
3086*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3087*67e74705SXin Li (__v16qi) __B,
3088*67e74705SXin Li (__mmask16) -1);
3089*67e74705SXin Li }
3090*67e74705SXin Li
3091*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_mask_testn_epi8_mask(__mmask16 __U,__m128i __A,__m128i __B)3092*67e74705SXin Li _mm_mask_testn_epi8_mask (__mmask16 __U, __m128i __A, __m128i __B)
3093*67e74705SXin Li {
3094*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestnmb128 ((__v16qi) __A,
3095*67e74705SXin Li (__v16qi) __B, __U);
3096*67e74705SXin Li }
3097*67e74705SXin Li
3098*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_testn_epi8_mask(__m256i __A,__m256i __B)3099*67e74705SXin Li _mm256_testn_epi8_mask (__m256i __A, __m256i __B)
3100*67e74705SXin Li {
3101*67e74705SXin Li return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3102*67e74705SXin Li (__v32qi) __B,
3103*67e74705SXin Li (__mmask32) -1);
3104*67e74705SXin Li }
3105*67e74705SXin Li
3106*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_mask_testn_epi8_mask(__mmask32 __U,__m256i __A,__m256i __B)3107*67e74705SXin Li _mm256_mask_testn_epi8_mask (__mmask32 __U, __m256i __A, __m256i __B)
3108*67e74705SXin Li {
3109*67e74705SXin Li return (__mmask32) __builtin_ia32_ptestnmb256 ((__v32qi) __A,
3110*67e74705SXin Li (__v32qi) __B, __U);
3111*67e74705SXin Li }
3112*67e74705SXin Li
3113*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_testn_epi16_mask(__m128i __A,__m128i __B)3114*67e74705SXin Li _mm_testn_epi16_mask (__m128i __A, __m128i __B)
3115*67e74705SXin Li {
3116*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3117*67e74705SXin Li (__v8hi) __B,
3118*67e74705SXin Li (__mmask8) -1);
3119*67e74705SXin Li }
3120*67e74705SXin Li
3121*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_testn_epi16_mask(__mmask8 __U,__m128i __A,__m128i __B)3122*67e74705SXin Li _mm_mask_testn_epi16_mask (__mmask8 __U, __m128i __A, __m128i __B)
3123*67e74705SXin Li {
3124*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmw128 ((__v8hi) __A,
3125*67e74705SXin Li (__v8hi) __B, __U);
3126*67e74705SXin Li }
3127*67e74705SXin Li
3128*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_testn_epi16_mask(__m256i __A,__m256i __B)3129*67e74705SXin Li _mm256_testn_epi16_mask (__m256i __A, __m256i __B)
3130*67e74705SXin Li {
3131*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3132*67e74705SXin Li (__v16hi) __B,
3133*67e74705SXin Li (__mmask16) -1);
3134*67e74705SXin Li }
3135*67e74705SXin Li
3136*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_mask_testn_epi16_mask(__mmask16 __U,__m256i __A,__m256i __B)3137*67e74705SXin Li _mm256_mask_testn_epi16_mask (__mmask16 __U, __m256i __A, __m256i __B)
3138*67e74705SXin Li {
3139*67e74705SXin Li return (__mmask16) __builtin_ia32_ptestnmw256 ((__v16hi) __A,
3140*67e74705SXin Li (__v16hi) __B, __U);
3141*67e74705SXin Li }
3142*67e74705SXin Li
3143*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm_movepi8_mask(__m128i __A)3144*67e74705SXin Li _mm_movepi8_mask (__m128i __A)
3145*67e74705SXin Li {
3146*67e74705SXin Li return (__mmask16) __builtin_ia32_cvtb2mask128 ((__v16qi) __A);
3147*67e74705SXin Li }
3148*67e74705SXin Li
3149*67e74705SXin Li static __inline__ __mmask32 __DEFAULT_FN_ATTRS
_mm256_movepi8_mask(__m256i __A)3150*67e74705SXin Li _mm256_movepi8_mask (__m256i __A)
3151*67e74705SXin Li {
3152*67e74705SXin Li return (__mmask32) __builtin_ia32_cvtb2mask256 ((__v32qi) __A);
3153*67e74705SXin Li }
3154*67e74705SXin Li
3155*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_movepi16_mask(__m128i __A)3156*67e74705SXin Li _mm_movepi16_mask (__m128i __A)
3157*67e74705SXin Li {
3158*67e74705SXin Li return (__mmask8) __builtin_ia32_cvtw2mask128 ((__v8hi) __A);
3159*67e74705SXin Li }
3160*67e74705SXin Li
3161*67e74705SXin Li static __inline__ __mmask16 __DEFAULT_FN_ATTRS
_mm256_movepi16_mask(__m256i __A)3162*67e74705SXin Li _mm256_movepi16_mask (__m256i __A)
3163*67e74705SXin Li {
3164*67e74705SXin Li return (__mmask16) __builtin_ia32_cvtw2mask256 ((__v16hi) __A);
3165*67e74705SXin Li }
3166*67e74705SXin Li
3167*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_movm_epi8(__mmask16 __A)3168*67e74705SXin Li _mm_movm_epi8 (__mmask16 __A)
3169*67e74705SXin Li {
3170*67e74705SXin Li return (__m128i) __builtin_ia32_cvtmask2b128 (__A);
3171*67e74705SXin Li }
3172*67e74705SXin Li
3173*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_movm_epi8(__mmask32 __A)3174*67e74705SXin Li _mm256_movm_epi8 (__mmask32 __A)
3175*67e74705SXin Li {
3176*67e74705SXin Li return (__m256i) __builtin_ia32_cvtmask2b256 (__A);
3177*67e74705SXin Li }
3178*67e74705SXin Li
3179*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_movm_epi16(__mmask8 __A)3180*67e74705SXin Li _mm_movm_epi16 (__mmask8 __A)
3181*67e74705SXin Li {
3182*67e74705SXin Li return (__m128i) __builtin_ia32_cvtmask2w128 (__A);
3183*67e74705SXin Li }
3184*67e74705SXin Li
3185*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_movm_epi16(__mmask16 __A)3186*67e74705SXin Li _mm256_movm_epi16 (__mmask16 __A)
3187*67e74705SXin Li {
3188*67e74705SXin Li return (__m256i) __builtin_ia32_cvtmask2w256 (__A);
3189*67e74705SXin Li }
3190*67e74705SXin Li
3191*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_broadcastb_epi8(__m128i __O,__mmask16 __M,__m128i __A)3192*67e74705SXin Li _mm_mask_broadcastb_epi8 (__m128i __O, __mmask16 __M, __m128i __A)
3193*67e74705SXin Li {
3194*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128(__M,
3195*67e74705SXin Li (__v16qi) _mm_broadcastb_epi8(__A),
3196*67e74705SXin Li (__v16qi) __O);
3197*67e74705SXin Li }
3198*67e74705SXin Li
3199*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_broadcastb_epi8(__mmask16 __M,__m128i __A)3200*67e74705SXin Li _mm_maskz_broadcastb_epi8 (__mmask16 __M, __m128i __A)
3201*67e74705SXin Li {
3202*67e74705SXin Li return (__m128i)__builtin_ia32_selectb_128(__M,
3203*67e74705SXin Li (__v16qi) _mm_broadcastb_epi8(__A),
3204*67e74705SXin Li (__v16qi) _mm_setzero_si128());
3205*67e74705SXin Li }
3206*67e74705SXin Li
3207*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcastb_epi8(__m256i __O,__mmask32 __M,__m128i __A)3208*67e74705SXin Li _mm256_mask_broadcastb_epi8 (__m256i __O, __mmask32 __M, __m128i __A)
3209*67e74705SXin Li {
3210*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256(__M,
3211*67e74705SXin Li (__v32qi) _mm256_broadcastb_epi8(__A),
3212*67e74705SXin Li (__v32qi) __O);
3213*67e74705SXin Li }
3214*67e74705SXin Li
3215*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastb_epi8(__mmask32 __M,__m128i __A)3216*67e74705SXin Li _mm256_maskz_broadcastb_epi8 (__mmask32 __M, __m128i __A)
3217*67e74705SXin Li {
3218*67e74705SXin Li return (__m256i)__builtin_ia32_selectb_256(__M,
3219*67e74705SXin Li (__v32qi) _mm256_broadcastb_epi8(__A),
3220*67e74705SXin Li (__v32qi) _mm256_setzero_si256());
3221*67e74705SXin Li }
3222*67e74705SXin Li
3223*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_broadcastw_epi16(__m128i __O,__mmask8 __M,__m128i __A)3224*67e74705SXin Li _mm_mask_broadcastw_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
3225*67e74705SXin Li {
3226*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128(__M,
3227*67e74705SXin Li (__v8hi) _mm_broadcastw_epi16(__A),
3228*67e74705SXin Li (__v8hi) __O);
3229*67e74705SXin Li }
3230*67e74705SXin Li
3231*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_broadcastw_epi16(__mmask8 __M,__m128i __A)3232*67e74705SXin Li _mm_maskz_broadcastw_epi16 (__mmask8 __M, __m128i __A)
3233*67e74705SXin Li {
3234*67e74705SXin Li return (__m128i)__builtin_ia32_selectw_128(__M,
3235*67e74705SXin Li (__v8hi) _mm_broadcastw_epi16(__A),
3236*67e74705SXin Li (__v8hi) _mm_setzero_si128());
3237*67e74705SXin Li }
3238*67e74705SXin Li
3239*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcastw_epi16(__m256i __O,__mmask16 __M,__m128i __A)3240*67e74705SXin Li _mm256_mask_broadcastw_epi16 (__m256i __O, __mmask16 __M, __m128i __A)
3241*67e74705SXin Li {
3242*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256(__M,
3243*67e74705SXin Li (__v16hi) _mm256_broadcastw_epi16(__A),
3244*67e74705SXin Li (__v16hi) __O);
3245*67e74705SXin Li }
3246*67e74705SXin Li
3247*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastw_epi16(__mmask16 __M,__m128i __A)3248*67e74705SXin Li _mm256_maskz_broadcastw_epi16 (__mmask16 __M, __m128i __A)
3249*67e74705SXin Li {
3250*67e74705SXin Li return (__m256i)__builtin_ia32_selectw_256(__M,
3251*67e74705SXin Li (__v16hi) _mm256_broadcastw_epi16(__A),
3252*67e74705SXin Li (__v16hi) _mm256_setzero_si256());
3253*67e74705SXin Li }
3254*67e74705SXin Li
3255*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_set1_epi16(__m256i __O,__mmask16 __M,short __A)3256*67e74705SXin Li _mm256_mask_set1_epi16 (__m256i __O, __mmask16 __M, short __A)
3257*67e74705SXin Li {
3258*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3259*67e74705SXin Li (__v16hi) __O,
3260*67e74705SXin Li __M);
3261*67e74705SXin Li }
3262*67e74705SXin Li
3263*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_set1_epi16(__mmask16 __M,short __A)3264*67e74705SXin Li _mm256_maskz_set1_epi16 (__mmask16 __M, short __A)
3265*67e74705SXin Li {
3266*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastw256_gpr_mask (__A,
3267*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
3268*67e74705SXin Li __M);
3269*67e74705SXin Li }
3270*67e74705SXin Li
3271*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_set1_epi16(__m128i __O,__mmask8 __M,short __A)3272*67e74705SXin Li _mm_mask_set1_epi16 (__m128i __O, __mmask8 __M, short __A)
3273*67e74705SXin Li {
3274*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3275*67e74705SXin Li (__v8hi) __O,
3276*67e74705SXin Li __M);
3277*67e74705SXin Li }
3278*67e74705SXin Li
3279*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_set1_epi16(__mmask8 __M,short __A)3280*67e74705SXin Li _mm_maskz_set1_epi16 (__mmask8 __M, short __A)
3281*67e74705SXin Li {
3282*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastw128_gpr_mask (__A,
3283*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
3284*67e74705SXin Li __M);
3285*67e74705SXin Li }
3286*67e74705SXin Li
3287*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_permutexvar_epi16(__m128i __A,__m128i __B)3288*67e74705SXin Li _mm_permutexvar_epi16 (__m128i __A, __m128i __B)
3289*67e74705SXin Li {
3290*67e74705SXin Li return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3291*67e74705SXin Li (__v8hi) __A,
3292*67e74705SXin Li (__v8hi) _mm_undefined_si128 (),
3293*67e74705SXin Li (__mmask8) -1);
3294*67e74705SXin Li }
3295*67e74705SXin Li
3296*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_permutexvar_epi16(__mmask8 __M,__m128i __A,__m128i __B)3297*67e74705SXin Li _mm_maskz_permutexvar_epi16 (__mmask8 __M, __m128i __A, __m128i __B)
3298*67e74705SXin Li {
3299*67e74705SXin Li return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3300*67e74705SXin Li (__v8hi) __A,
3301*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
3302*67e74705SXin Li (__mmask8) __M);
3303*67e74705SXin Li }
3304*67e74705SXin Li
3305*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_permutexvar_epi16(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3306*67e74705SXin Li _mm_mask_permutexvar_epi16 (__m128i __W, __mmask8 __M, __m128i __A,
3307*67e74705SXin Li __m128i __B)
3308*67e74705SXin Li {
3309*67e74705SXin Li return (__m128i) __builtin_ia32_permvarhi128_mask ((__v8hi) __B,
3310*67e74705SXin Li (__v8hi) __A,
3311*67e74705SXin Li (__v8hi) __W,
3312*67e74705SXin Li (__mmask8) __M);
3313*67e74705SXin Li }
3314*67e74705SXin Li
3315*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutexvar_epi16(__m256i __A,__m256i __B)3316*67e74705SXin Li _mm256_permutexvar_epi16 (__m256i __A, __m256i __B)
3317*67e74705SXin Li {
3318*67e74705SXin Li return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3319*67e74705SXin Li (__v16hi) __A,
3320*67e74705SXin Li (__v16hi) _mm256_undefined_si256 (),
3321*67e74705SXin Li (__mmask16) -1);
3322*67e74705SXin Li }
3323*67e74705SXin Li
3324*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutexvar_epi16(__mmask16 __M,__m256i __A,__m256i __B)3325*67e74705SXin Li _mm256_maskz_permutexvar_epi16 (__mmask16 __M, __m256i __A,
3326*67e74705SXin Li __m256i __B)
3327*67e74705SXin Li {
3328*67e74705SXin Li return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3329*67e74705SXin Li (__v16hi) __A,
3330*67e74705SXin Li (__v16hi) _mm256_setzero_si256 (),
3331*67e74705SXin Li (__mmask16) __M);
3332*67e74705SXin Li }
3333*67e74705SXin Li
3334*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutexvar_epi16(__m256i __W,__mmask16 __M,__m256i __A,__m256i __B)3335*67e74705SXin Li _mm256_mask_permutexvar_epi16 (__m256i __W, __mmask16 __M, __m256i __A,
3336*67e74705SXin Li __m256i __B)
3337*67e74705SXin Li {
3338*67e74705SXin Li return (__m256i) __builtin_ia32_permvarhi256_mask ((__v16hi) __B,
3339*67e74705SXin Li (__v16hi) __A,
3340*67e74705SXin Li (__v16hi) __W,
3341*67e74705SXin Li (__mmask16) __M);
3342*67e74705SXin Li }
3343*67e74705SXin Li
3344*67e74705SXin Li #define _mm_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
3345*67e74705SXin Li (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \
3346*67e74705SXin Li (__v16qi)(__m128i)(B), (int)(N), \
3347*67e74705SXin Li (__v16qi)(__m128i)(W), \
3348*67e74705SXin Li (__mmask16)(U)); })
3349*67e74705SXin Li
3350*67e74705SXin Li #define _mm_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
3351*67e74705SXin Li (__m128i)__builtin_ia32_palignr128_mask((__v16qi)(__m128i)(A), \
3352*67e74705SXin Li (__v16qi)(__m128i)(B), (int)(N), \
3353*67e74705SXin Li (__v16qi)_mm_setzero_si128(), \
3354*67e74705SXin Li (__mmask16)(U)); })
3355*67e74705SXin Li
3356*67e74705SXin Li #define _mm256_mask_alignr_epi8(W, U, A, B, N) __extension__ ({ \
3357*67e74705SXin Li (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \
3358*67e74705SXin Li (__v32qi)(__m256i)(B), (int)(N), \
3359*67e74705SXin Li (__v32qi)(__m256i)(W), \
3360*67e74705SXin Li (__mmask32)(U)); })
3361*67e74705SXin Li
3362*67e74705SXin Li #define _mm256_maskz_alignr_epi8(U, A, B, N) __extension__ ({ \
3363*67e74705SXin Li (__m256i)__builtin_ia32_palignr256_mask((__v32qi)(__m256i)(A), \
3364*67e74705SXin Li (__v32qi)(__m256i)(B), (int)(N), \
3365*67e74705SXin Li (__v32qi)_mm256_setzero_si256(), \
3366*67e74705SXin Li (__mmask32)(U)); })
3367*67e74705SXin Li
3368*67e74705SXin Li #define _mm_dbsad_epu8(A, B, imm) __extension__ ({ \
3369*67e74705SXin Li (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3370*67e74705SXin Li (__v16qi)(__m128i)(B), (int)(imm), \
3371*67e74705SXin Li (__v8hi)_mm_setzero_hi(), \
3372*67e74705SXin Li (__mmask8)-1); })
3373*67e74705SXin Li
3374*67e74705SXin Li #define _mm_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
3375*67e74705SXin Li (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3376*67e74705SXin Li (__v16qi)(__m128i)(B), (int)(imm), \
3377*67e74705SXin Li (__v8hi)(__m128i)(W), \
3378*67e74705SXin Li (__mmask8)(U)); })
3379*67e74705SXin Li
3380*67e74705SXin Li #define _mm_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
3381*67e74705SXin Li (__m128i)__builtin_ia32_dbpsadbw128_mask((__v16qi)(__m128i)(A), \
3382*67e74705SXin Li (__v16qi)(__m128i)(B), (int)(imm), \
3383*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
3384*67e74705SXin Li (__mmask8)(U)); })
3385*67e74705SXin Li
3386*67e74705SXin Li #define _mm256_dbsad_epu8(A, B, imm) __extension__ ({ \
3387*67e74705SXin Li (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3388*67e74705SXin Li (__v32qi)(__m256i)(B), (int)(imm), \
3389*67e74705SXin Li (__v16hi)_mm256_setzero_si256(), \
3390*67e74705SXin Li (__mmask16)-1); })
3391*67e74705SXin Li
3392*67e74705SXin Li #define _mm256_mask_dbsad_epu8(W, U, A, B, imm) __extension__ ({ \
3393*67e74705SXin Li (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3394*67e74705SXin Li (__v32qi)(__m256i)(B), (int)(imm), \
3395*67e74705SXin Li (__v16hi)(__m256i)(W), \
3396*67e74705SXin Li (__mmask16)(U)); })
3397*67e74705SXin Li
3398*67e74705SXin Li #define _mm256_maskz_dbsad_epu8(U, A, B, imm) __extension__ ({ \
3399*67e74705SXin Li (__m256i)__builtin_ia32_dbpsadbw256_mask((__v32qi)(__m256i)(A), \
3400*67e74705SXin Li (__v32qi)(__m256i)(B), (int)(imm), \
3401*67e74705SXin Li (__v16hi)_mm256_setzero_si256(), \
3402*67e74705SXin Li (__mmask16)(U)); })
3403*67e74705SXin Li
3404*67e74705SXin Li #undef __DEFAULT_FN_ATTRS
3405*67e74705SXin Li
3406*67e74705SXin Li #endif /* __AVX512VLBWINTRIN_H */
3407