1*67e74705SXin Li /*===---- avx512vlintrin.h - AVX512VL 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 <avx512vlintrin.h> directly; include <immintrin.h> instead."
26*67e74705SXin Li #endif
27*67e74705SXin Li
28*67e74705SXin Li #ifndef __AVX512VLINTRIN_H
29*67e74705SXin Li #define __AVX512VLINTRIN_H
30*67e74705SXin Li
31*67e74705SXin Li #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl")))
32*67e74705SXin Li
33*67e74705SXin Li /* Doesn't require avx512vl, used in avx512dqintrin.h */
34*67e74705SXin Li static __inline __m128i __attribute__((__always_inline__, __nodebug__, __target__("avx512f")))
_mm_setzero_di(void)35*67e74705SXin Li _mm_setzero_di(void) {
36*67e74705SXin Li return (__m128i)(__v2di){ 0LL, 0LL};
37*67e74705SXin Li }
38*67e74705SXin Li
39*67e74705SXin Li /* Integer compare */
40*67e74705SXin Li
41*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epi32_mask(__m128i __a,__m128i __b)42*67e74705SXin Li _mm_cmpeq_epi32_mask(__m128i __a, __m128i __b) {
43*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
44*67e74705SXin Li (__mmask8)-1);
45*67e74705SXin Li }
46*67e74705SXin Li
47*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)48*67e74705SXin Li _mm_mask_cmpeq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
49*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqd128_mask((__v4si)__a, (__v4si)__b,
50*67e74705SXin Li __u);
51*67e74705SXin Li }
52*67e74705SXin Li
53*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epu32_mask(__m128i __a,__m128i __b)54*67e74705SXin Li _mm_cmpeq_epu32_mask(__m128i __a, __m128i __b) {
55*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
56*67e74705SXin Li (__mmask8)-1);
57*67e74705SXin Li }
58*67e74705SXin Li
59*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)60*67e74705SXin Li _mm_mask_cmpeq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
61*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 0,
62*67e74705SXin Li __u);
63*67e74705SXin Li }
64*67e74705SXin Li
65*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi32_mask(__m256i __a,__m256i __b)66*67e74705SXin Li _mm256_cmpeq_epi32_mask(__m256i __a, __m256i __b) {
67*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
68*67e74705SXin Li (__mmask8)-1);
69*67e74705SXin Li }
70*67e74705SXin Li
71*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)72*67e74705SXin Li _mm256_mask_cmpeq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
73*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqd256_mask((__v8si)__a, (__v8si)__b,
74*67e74705SXin Li __u);
75*67e74705SXin Li }
76*67e74705SXin Li
77*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epu32_mask(__m256i __a,__m256i __b)78*67e74705SXin Li _mm256_cmpeq_epu32_mask(__m256i __a, __m256i __b) {
79*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
80*67e74705SXin Li (__mmask8)-1);
81*67e74705SXin Li }
82*67e74705SXin Li
83*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)84*67e74705SXin Li _mm256_mask_cmpeq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
85*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 0,
86*67e74705SXin Li __u);
87*67e74705SXin Li }
88*67e74705SXin Li
89*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epi64_mask(__m128i __a,__m128i __b)90*67e74705SXin Li _mm_cmpeq_epi64_mask(__m128i __a, __m128i __b) {
91*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
92*67e74705SXin Li (__mmask8)-1);
93*67e74705SXin Li }
94*67e74705SXin Li
95*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpeq_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)96*67e74705SXin Li _mm_mask_cmpeq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
97*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqq128_mask((__v2di)__a, (__v2di)__b,
98*67e74705SXin Li __u);
99*67e74705SXin Li }
100*67e74705SXin Li
101*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpeq_epu64_mask(__m128i __a,__m128i __b)102*67e74705SXin Li _mm_cmpeq_epu64_mask(__m128i __a, __m128i __b) {
103*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__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_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)108*67e74705SXin Li _mm_mask_cmpeq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
109*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 0,
110*67e74705SXin Li __u);
111*67e74705SXin Li }
112*67e74705SXin Li
113*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi64_mask(__m256i __a,__m256i __b)114*67e74705SXin Li _mm256_cmpeq_epi64_mask(__m256i __a, __m256i __b) {
115*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
116*67e74705SXin Li (__mmask8)-1);
117*67e74705SXin Li }
118*67e74705SXin Li
119*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)120*67e74705SXin Li _mm256_mask_cmpeq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
121*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpeqq256_mask((__v4di)__a, (__v4di)__b,
122*67e74705SXin Li __u);
123*67e74705SXin Li }
124*67e74705SXin Li
125*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpeq_epu64_mask(__m256i __a,__m256i __b)126*67e74705SXin Li _mm256_cmpeq_epu64_mask(__m256i __a, __m256i __b) {
127*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
128*67e74705SXin Li (__mmask8)-1);
129*67e74705SXin Li }
130*67e74705SXin Li
131*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpeq_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)132*67e74705SXin Li _mm256_mask_cmpeq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
133*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 0,
134*67e74705SXin Li __u);
135*67e74705SXin Li }
136*67e74705SXin Li
137*67e74705SXin Li
138*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epi32_mask(__m128i __a,__m128i __b)139*67e74705SXin Li _mm_cmpge_epi32_mask(__m128i __a, __m128i __b) {
140*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
141*67e74705SXin Li (__mmask8)-1);
142*67e74705SXin Li }
143*67e74705SXin Li
144*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)145*67e74705SXin Li _mm_mask_cmpge_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
146*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 5,
147*67e74705SXin Li __u);
148*67e74705SXin Li }
149*67e74705SXin Li
150*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epu32_mask(__m128i __a,__m128i __b)151*67e74705SXin Li _mm_cmpge_epu32_mask(__m128i __a, __m128i __b) {
152*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
153*67e74705SXin Li (__mmask8)-1);
154*67e74705SXin Li }
155*67e74705SXin Li
156*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)157*67e74705SXin Li _mm_mask_cmpge_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
158*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 5,
159*67e74705SXin Li __u);
160*67e74705SXin Li }
161*67e74705SXin Li
162*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpge_epi32_mask(__m256i __a,__m256i __b)163*67e74705SXin Li _mm256_cmpge_epi32_mask(__m256i __a, __m256i __b) {
164*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
165*67e74705SXin Li (__mmask8)-1);
166*67e74705SXin Li }
167*67e74705SXin Li
168*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)169*67e74705SXin Li _mm256_mask_cmpge_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
170*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 5,
171*67e74705SXin Li __u);
172*67e74705SXin Li }
173*67e74705SXin Li
174*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpge_epu32_mask(__m256i __a,__m256i __b)175*67e74705SXin Li _mm256_cmpge_epu32_mask(__m256i __a, __m256i __b) {
176*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
177*67e74705SXin Li (__mmask8)-1);
178*67e74705SXin Li }
179*67e74705SXin Li
180*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)181*67e74705SXin Li _mm256_mask_cmpge_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
182*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 5,
183*67e74705SXin Li __u);
184*67e74705SXin Li }
185*67e74705SXin Li
186*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epi64_mask(__m128i __a,__m128i __b)187*67e74705SXin Li _mm_cmpge_epi64_mask(__m128i __a, __m128i __b) {
188*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
189*67e74705SXin Li (__mmask8)-1);
190*67e74705SXin Li }
191*67e74705SXin Li
192*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)193*67e74705SXin Li _mm_mask_cmpge_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
194*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 5,
195*67e74705SXin Li __u);
196*67e74705SXin Li }
197*67e74705SXin Li
198*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpge_epu64_mask(__m128i __a,__m128i __b)199*67e74705SXin Li _mm_cmpge_epu64_mask(__m128i __a, __m128i __b) {
200*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
201*67e74705SXin Li (__mmask8)-1);
202*67e74705SXin Li }
203*67e74705SXin Li
204*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpge_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)205*67e74705SXin Li _mm_mask_cmpge_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
206*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 5,
207*67e74705SXin Li __u);
208*67e74705SXin Li }
209*67e74705SXin Li
210*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpge_epi64_mask(__m256i __a,__m256i __b)211*67e74705SXin Li _mm256_cmpge_epi64_mask(__m256i __a, __m256i __b) {
212*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
213*67e74705SXin Li (__mmask8)-1);
214*67e74705SXin Li }
215*67e74705SXin Li
216*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)217*67e74705SXin Li _mm256_mask_cmpge_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
218*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 5,
219*67e74705SXin Li __u);
220*67e74705SXin Li }
221*67e74705SXin Li
222*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpge_epu64_mask(__m256i __a,__m256i __b)223*67e74705SXin Li _mm256_cmpge_epu64_mask(__m256i __a, __m256i __b) {
224*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
225*67e74705SXin Li (__mmask8)-1);
226*67e74705SXin Li }
227*67e74705SXin Li
228*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpge_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)229*67e74705SXin Li _mm256_mask_cmpge_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
230*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 5,
231*67e74705SXin Li __u);
232*67e74705SXin Li }
233*67e74705SXin Li
234*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epi32_mask(__m128i __a,__m128i __b)235*67e74705SXin Li _mm_cmpgt_epi32_mask(__m128i __a, __m128i __b) {
236*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
237*67e74705SXin Li (__mmask8)-1);
238*67e74705SXin Li }
239*67e74705SXin Li
240*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)241*67e74705SXin Li _mm_mask_cmpgt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
242*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtd128_mask((__v4si)__a, (__v4si)__b,
243*67e74705SXin Li __u);
244*67e74705SXin Li }
245*67e74705SXin Li
246*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epu32_mask(__m128i __a,__m128i __b)247*67e74705SXin Li _mm_cmpgt_epu32_mask(__m128i __a, __m128i __b) {
248*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
249*67e74705SXin Li (__mmask8)-1);
250*67e74705SXin Li }
251*67e74705SXin Li
252*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)253*67e74705SXin Li _mm_mask_cmpgt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
254*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 6,
255*67e74705SXin Li __u);
256*67e74705SXin Li }
257*67e74705SXin Li
258*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi32_mask(__m256i __a,__m256i __b)259*67e74705SXin Li _mm256_cmpgt_epi32_mask(__m256i __a, __m256i __b) {
260*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
261*67e74705SXin Li (__mmask8)-1);
262*67e74705SXin Li }
263*67e74705SXin Li
264*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)265*67e74705SXin Li _mm256_mask_cmpgt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
266*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtd256_mask((__v8si)__a, (__v8si)__b,
267*67e74705SXin Li __u);
268*67e74705SXin Li }
269*67e74705SXin Li
270*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epu32_mask(__m256i __a,__m256i __b)271*67e74705SXin Li _mm256_cmpgt_epu32_mask(__m256i __a, __m256i __b) {
272*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
273*67e74705SXin Li (__mmask8)-1);
274*67e74705SXin Li }
275*67e74705SXin Li
276*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)277*67e74705SXin Li _mm256_mask_cmpgt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
278*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 6,
279*67e74705SXin Li __u);
280*67e74705SXin Li }
281*67e74705SXin Li
282*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epi64_mask(__m128i __a,__m128i __b)283*67e74705SXin Li _mm_cmpgt_epi64_mask(__m128i __a, __m128i __b) {
284*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
285*67e74705SXin Li (__mmask8)-1);
286*67e74705SXin Li }
287*67e74705SXin Li
288*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)289*67e74705SXin Li _mm_mask_cmpgt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
290*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtq128_mask((__v2di)__a, (__v2di)__b,
291*67e74705SXin Li __u);
292*67e74705SXin Li }
293*67e74705SXin Li
294*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpgt_epu64_mask(__m128i __a,__m128i __b)295*67e74705SXin Li _mm_cmpgt_epu64_mask(__m128i __a, __m128i __b) {
296*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
297*67e74705SXin Li (__mmask8)-1);
298*67e74705SXin Li }
299*67e74705SXin Li
300*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpgt_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)301*67e74705SXin Li _mm_mask_cmpgt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
302*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 6,
303*67e74705SXin Li __u);
304*67e74705SXin Li }
305*67e74705SXin Li
306*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi64_mask(__m256i __a,__m256i __b)307*67e74705SXin Li _mm256_cmpgt_epi64_mask(__m256i __a, __m256i __b) {
308*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
309*67e74705SXin Li (__mmask8)-1);
310*67e74705SXin Li }
311*67e74705SXin Li
312*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)313*67e74705SXin Li _mm256_mask_cmpgt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
314*67e74705SXin Li return (__mmask8)__builtin_ia32_pcmpgtq256_mask((__v4di)__a, (__v4di)__b,
315*67e74705SXin Li __u);
316*67e74705SXin Li }
317*67e74705SXin Li
318*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpgt_epu64_mask(__m256i __a,__m256i __b)319*67e74705SXin Li _mm256_cmpgt_epu64_mask(__m256i __a, __m256i __b) {
320*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
321*67e74705SXin Li (__mmask8)-1);
322*67e74705SXin Li }
323*67e74705SXin Li
324*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpgt_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)325*67e74705SXin Li _mm256_mask_cmpgt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
326*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 6,
327*67e74705SXin Li __u);
328*67e74705SXin Li }
329*67e74705SXin Li
330*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epi32_mask(__m128i __a,__m128i __b)331*67e74705SXin Li _mm_cmple_epi32_mask(__m128i __a, __m128i __b) {
332*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
333*67e74705SXin Li (__mmask8)-1);
334*67e74705SXin Li }
335*67e74705SXin Li
336*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)337*67e74705SXin Li _mm_mask_cmple_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
338*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 2,
339*67e74705SXin Li __u);
340*67e74705SXin Li }
341*67e74705SXin Li
342*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epu32_mask(__m128i __a,__m128i __b)343*67e74705SXin Li _mm_cmple_epu32_mask(__m128i __a, __m128i __b) {
344*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
345*67e74705SXin Li (__mmask8)-1);
346*67e74705SXin Li }
347*67e74705SXin Li
348*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)349*67e74705SXin Li _mm_mask_cmple_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
350*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 2,
351*67e74705SXin Li __u);
352*67e74705SXin Li }
353*67e74705SXin Li
354*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmple_epi32_mask(__m256i __a,__m256i __b)355*67e74705SXin Li _mm256_cmple_epi32_mask(__m256i __a, __m256i __b) {
356*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
357*67e74705SXin Li (__mmask8)-1);
358*67e74705SXin Li }
359*67e74705SXin Li
360*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)361*67e74705SXin Li _mm256_mask_cmple_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
362*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 2,
363*67e74705SXin Li __u);
364*67e74705SXin Li }
365*67e74705SXin Li
366*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmple_epu32_mask(__m256i __a,__m256i __b)367*67e74705SXin Li _mm256_cmple_epu32_mask(__m256i __a, __m256i __b) {
368*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
369*67e74705SXin Li (__mmask8)-1);
370*67e74705SXin Li }
371*67e74705SXin Li
372*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)373*67e74705SXin Li _mm256_mask_cmple_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
374*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 2,
375*67e74705SXin Li __u);
376*67e74705SXin Li }
377*67e74705SXin Li
378*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epi64_mask(__m128i __a,__m128i __b)379*67e74705SXin Li _mm_cmple_epi64_mask(__m128i __a, __m128i __b) {
380*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
381*67e74705SXin Li (__mmask8)-1);
382*67e74705SXin Li }
383*67e74705SXin Li
384*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)385*67e74705SXin Li _mm_mask_cmple_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
386*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 2,
387*67e74705SXin Li __u);
388*67e74705SXin Li }
389*67e74705SXin Li
390*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmple_epu64_mask(__m128i __a,__m128i __b)391*67e74705SXin Li _mm_cmple_epu64_mask(__m128i __a, __m128i __b) {
392*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
393*67e74705SXin Li (__mmask8)-1);
394*67e74705SXin Li }
395*67e74705SXin Li
396*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmple_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)397*67e74705SXin Li _mm_mask_cmple_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
398*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 2,
399*67e74705SXin Li __u);
400*67e74705SXin Li }
401*67e74705SXin Li
402*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmple_epi64_mask(__m256i __a,__m256i __b)403*67e74705SXin Li _mm256_cmple_epi64_mask(__m256i __a, __m256i __b) {
404*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
405*67e74705SXin Li (__mmask8)-1);
406*67e74705SXin Li }
407*67e74705SXin Li
408*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)409*67e74705SXin Li _mm256_mask_cmple_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
410*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 2,
411*67e74705SXin Li __u);
412*67e74705SXin Li }
413*67e74705SXin Li
414*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmple_epu64_mask(__m256i __a,__m256i __b)415*67e74705SXin Li _mm256_cmple_epu64_mask(__m256i __a, __m256i __b) {
416*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
417*67e74705SXin Li (__mmask8)-1);
418*67e74705SXin Li }
419*67e74705SXin Li
420*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmple_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)421*67e74705SXin Li _mm256_mask_cmple_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
422*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 2,
423*67e74705SXin Li __u);
424*67e74705SXin Li }
425*67e74705SXin Li
426*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epi32_mask(__m128i __a,__m128i __b)427*67e74705SXin Li _mm_cmplt_epi32_mask(__m128i __a, __m128i __b) {
428*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
429*67e74705SXin Li (__mmask8)-1);
430*67e74705SXin Li }
431*67e74705SXin Li
432*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)433*67e74705SXin Li _mm_mask_cmplt_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
434*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 1,
435*67e74705SXin Li __u);
436*67e74705SXin Li }
437*67e74705SXin Li
438*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epu32_mask(__m128i __a,__m128i __b)439*67e74705SXin Li _mm_cmplt_epu32_mask(__m128i __a, __m128i __b) {
440*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
441*67e74705SXin Li (__mmask8)-1);
442*67e74705SXin Li }
443*67e74705SXin Li
444*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)445*67e74705SXin Li _mm_mask_cmplt_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
446*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 1,
447*67e74705SXin Li __u);
448*67e74705SXin Li }
449*67e74705SXin Li
450*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmplt_epi32_mask(__m256i __a,__m256i __b)451*67e74705SXin Li _mm256_cmplt_epi32_mask(__m256i __a, __m256i __b) {
452*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
453*67e74705SXin Li (__mmask8)-1);
454*67e74705SXin Li }
455*67e74705SXin Li
456*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)457*67e74705SXin Li _mm256_mask_cmplt_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
458*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 1,
459*67e74705SXin Li __u);
460*67e74705SXin Li }
461*67e74705SXin Li
462*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmplt_epu32_mask(__m256i __a,__m256i __b)463*67e74705SXin Li _mm256_cmplt_epu32_mask(__m256i __a, __m256i __b) {
464*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
465*67e74705SXin Li (__mmask8)-1);
466*67e74705SXin Li }
467*67e74705SXin Li
468*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)469*67e74705SXin Li _mm256_mask_cmplt_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
470*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 1,
471*67e74705SXin Li __u);
472*67e74705SXin Li }
473*67e74705SXin Li
474*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epi64_mask(__m128i __a,__m128i __b)475*67e74705SXin Li _mm_cmplt_epi64_mask(__m128i __a, __m128i __b) {
476*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
477*67e74705SXin Li (__mmask8)-1);
478*67e74705SXin Li }
479*67e74705SXin Li
480*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)481*67e74705SXin Li _mm_mask_cmplt_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
482*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 1,
483*67e74705SXin Li __u);
484*67e74705SXin Li }
485*67e74705SXin Li
486*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmplt_epu64_mask(__m128i __a,__m128i __b)487*67e74705SXin Li _mm_cmplt_epu64_mask(__m128i __a, __m128i __b) {
488*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
489*67e74705SXin Li (__mmask8)-1);
490*67e74705SXin Li }
491*67e74705SXin Li
492*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmplt_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)493*67e74705SXin Li _mm_mask_cmplt_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
494*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 1,
495*67e74705SXin Li __u);
496*67e74705SXin Li }
497*67e74705SXin Li
498*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmplt_epi64_mask(__m256i __a,__m256i __b)499*67e74705SXin Li _mm256_cmplt_epi64_mask(__m256i __a, __m256i __b) {
500*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
501*67e74705SXin Li (__mmask8)-1);
502*67e74705SXin Li }
503*67e74705SXin Li
504*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)505*67e74705SXin Li _mm256_mask_cmplt_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
506*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 1,
507*67e74705SXin Li __u);
508*67e74705SXin Li }
509*67e74705SXin Li
510*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmplt_epu64_mask(__m256i __a,__m256i __b)511*67e74705SXin Li _mm256_cmplt_epu64_mask(__m256i __a, __m256i __b) {
512*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
513*67e74705SXin Li (__mmask8)-1);
514*67e74705SXin Li }
515*67e74705SXin Li
516*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmplt_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)517*67e74705SXin Li _mm256_mask_cmplt_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
518*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 1,
519*67e74705SXin Li __u);
520*67e74705SXin Li }
521*67e74705SXin Li
522*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epi32_mask(__m128i __a,__m128i __b)523*67e74705SXin Li _mm_cmpneq_epi32_mask(__m128i __a, __m128i __b) {
524*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
525*67e74705SXin Li (__mmask8)-1);
526*67e74705SXin Li }
527*67e74705SXin Li
528*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epi32_mask(__mmask8 __u,__m128i __a,__m128i __b)529*67e74705SXin Li _mm_mask_cmpneq_epi32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
530*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)__a, (__v4si)__b, 4,
531*67e74705SXin Li __u);
532*67e74705SXin Li }
533*67e74705SXin Li
534*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epu32_mask(__m128i __a,__m128i __b)535*67e74705SXin Li _mm_cmpneq_epu32_mask(__m128i __a, __m128i __b) {
536*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
537*67e74705SXin Li (__mmask8)-1);
538*67e74705SXin Li }
539*67e74705SXin Li
540*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epu32_mask(__mmask8 __u,__m128i __a,__m128i __b)541*67e74705SXin Li _mm_mask_cmpneq_epu32_mask(__mmask8 __u, __m128i __a, __m128i __b) {
542*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)__a, (__v4si)__b, 4,
543*67e74705SXin Li __u);
544*67e74705SXin Li }
545*67e74705SXin Li
546*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epi32_mask(__m256i __a,__m256i __b)547*67e74705SXin Li _mm256_cmpneq_epi32_mask(__m256i __a, __m256i __b) {
548*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
549*67e74705SXin Li (__mmask8)-1);
550*67e74705SXin Li }
551*67e74705SXin Li
552*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epi32_mask(__mmask8 __u,__m256i __a,__m256i __b)553*67e74705SXin Li _mm256_mask_cmpneq_epi32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
554*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)__a, (__v8si)__b, 4,
555*67e74705SXin Li __u);
556*67e74705SXin Li }
557*67e74705SXin Li
558*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epu32_mask(__m256i __a,__m256i __b)559*67e74705SXin Li _mm256_cmpneq_epu32_mask(__m256i __a, __m256i __b) {
560*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
561*67e74705SXin Li (__mmask8)-1);
562*67e74705SXin Li }
563*67e74705SXin Li
564*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epu32_mask(__mmask8 __u,__m256i __a,__m256i __b)565*67e74705SXin Li _mm256_mask_cmpneq_epu32_mask(__mmask8 __u, __m256i __a, __m256i __b) {
566*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)__a, (__v8si)__b, 4,
567*67e74705SXin Li __u);
568*67e74705SXin Li }
569*67e74705SXin Li
570*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epi64_mask(__m128i __a,__m128i __b)571*67e74705SXin Li _mm_cmpneq_epi64_mask(__m128i __a, __m128i __b) {
572*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
573*67e74705SXin Li (__mmask8)-1);
574*67e74705SXin Li }
575*67e74705SXin Li
576*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epi64_mask(__mmask8 __u,__m128i __a,__m128i __b)577*67e74705SXin Li _mm_mask_cmpneq_epi64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
578*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)__a, (__v2di)__b, 4,
579*67e74705SXin Li __u);
580*67e74705SXin Li }
581*67e74705SXin Li
582*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_cmpneq_epu64_mask(__m128i __a,__m128i __b)583*67e74705SXin Li _mm_cmpneq_epu64_mask(__m128i __a, __m128i __b) {
584*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
585*67e74705SXin Li (__mmask8)-1);
586*67e74705SXin Li }
587*67e74705SXin Li
588*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_cmpneq_epu64_mask(__mmask8 __u,__m128i __a,__m128i __b)589*67e74705SXin Li _mm_mask_cmpneq_epu64_mask(__mmask8 __u, __m128i __a, __m128i __b) {
590*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)__a, (__v2di)__b, 4,
591*67e74705SXin Li __u);
592*67e74705SXin Li }
593*67e74705SXin Li
594*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epi64_mask(__m256i __a,__m256i __b)595*67e74705SXin Li _mm256_cmpneq_epi64_mask(__m256i __a, __m256i __b) {
596*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
597*67e74705SXin Li (__mmask8)-1);
598*67e74705SXin Li }
599*67e74705SXin Li
600*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epi64_mask(__mmask8 __u,__m256i __a,__m256i __b)601*67e74705SXin Li _mm256_mask_cmpneq_epi64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
602*67e74705SXin Li return (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)__a, (__v4di)__b, 4,
603*67e74705SXin Li __u);
604*67e74705SXin Li }
605*67e74705SXin Li
606*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_cmpneq_epu64_mask(__m256i __a,__m256i __b)607*67e74705SXin Li _mm256_cmpneq_epu64_mask(__m256i __a, __m256i __b) {
608*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
609*67e74705SXin Li (__mmask8)-1);
610*67e74705SXin Li }
611*67e74705SXin Li
612*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_cmpneq_epu64_mask(__mmask8 __u,__m256i __a,__m256i __b)613*67e74705SXin Li _mm256_mask_cmpneq_epu64_mask(__mmask8 __u, __m256i __a, __m256i __b) {
614*67e74705SXin Li return (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)__a, (__v4di)__b, 4,
615*67e74705SXin Li __u);
616*67e74705SXin Li }
617*67e74705SXin Li
618*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_add_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)619*67e74705SXin Li _mm256_mask_add_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
620*67e74705SXin Li __m256i __B)
621*67e74705SXin Li {
622*67e74705SXin Li return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
623*67e74705SXin Li (__v8si) __B,
624*67e74705SXin Li (__v8si) __W,
625*67e74705SXin Li (__mmask8) __U);
626*67e74705SXin Li }
627*67e74705SXin Li
628*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_add_epi32(__mmask8 __U,__m256i __A,__m256i __B)629*67e74705SXin Li _mm256_maskz_add_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
630*67e74705SXin Li {
631*67e74705SXin Li return (__m256i) __builtin_ia32_paddd256_mask ((__v8si) __A,
632*67e74705SXin Li (__v8si) __B,
633*67e74705SXin Li (__v8si)
634*67e74705SXin Li _mm256_setzero_si256 (),
635*67e74705SXin Li (__mmask8) __U);
636*67e74705SXin Li }
637*67e74705SXin Li
638*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_add_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)639*67e74705SXin Li _mm256_mask_add_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
640*67e74705SXin Li __m256i __B)
641*67e74705SXin Li {
642*67e74705SXin Li return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
643*67e74705SXin Li (__v4di) __B,
644*67e74705SXin Li (__v4di) __W,
645*67e74705SXin Li (__mmask8) __U);
646*67e74705SXin Li }
647*67e74705SXin Li
648*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_add_epi64(__mmask8 __U,__m256i __A,__m256i __B)649*67e74705SXin Li _mm256_maskz_add_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
650*67e74705SXin Li {
651*67e74705SXin Li return (__m256i) __builtin_ia32_paddq256_mask ((__v4di) __A,
652*67e74705SXin Li (__v4di) __B,
653*67e74705SXin Li (__v4di)
654*67e74705SXin Li _mm256_setzero_si256 (),
655*67e74705SXin Li (__mmask8) __U);
656*67e74705SXin Li }
657*67e74705SXin Li
658*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sub_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)659*67e74705SXin Li _mm256_mask_sub_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
660*67e74705SXin Li __m256i __B)
661*67e74705SXin Li {
662*67e74705SXin Li return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
663*67e74705SXin Li (__v8si) __B,
664*67e74705SXin Li (__v8si) __W,
665*67e74705SXin Li (__mmask8) __U);
666*67e74705SXin Li }
667*67e74705SXin Li
668*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sub_epi32(__mmask8 __U,__m256i __A,__m256i __B)669*67e74705SXin Li _mm256_maskz_sub_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
670*67e74705SXin Li {
671*67e74705SXin Li return (__m256i) __builtin_ia32_psubd256_mask ((__v8si) __A,
672*67e74705SXin Li (__v8si) __B,
673*67e74705SXin Li (__v8si)
674*67e74705SXin Li _mm256_setzero_si256 (),
675*67e74705SXin Li (__mmask8) __U);
676*67e74705SXin Li }
677*67e74705SXin Li
678*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sub_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)679*67e74705SXin Li _mm256_mask_sub_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
680*67e74705SXin Li __m256i __B)
681*67e74705SXin Li {
682*67e74705SXin Li return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
683*67e74705SXin Li (__v4di) __B,
684*67e74705SXin Li (__v4di) __W,
685*67e74705SXin Li (__mmask8) __U);
686*67e74705SXin Li }
687*67e74705SXin Li
688*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sub_epi64(__mmask8 __U,__m256i __A,__m256i __B)689*67e74705SXin Li _mm256_maskz_sub_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
690*67e74705SXin Li {
691*67e74705SXin Li return (__m256i) __builtin_ia32_psubq256_mask ((__v4di) __A,
692*67e74705SXin Li (__v4di) __B,
693*67e74705SXin Li (__v4di)
694*67e74705SXin Li _mm256_setzero_si256 (),
695*67e74705SXin Li (__mmask8) __U);
696*67e74705SXin Li }
697*67e74705SXin Li
698*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_add_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)699*67e74705SXin Li _mm_mask_add_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
700*67e74705SXin Li __m128i __B)
701*67e74705SXin Li {
702*67e74705SXin Li return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
703*67e74705SXin Li (__v4si) __B,
704*67e74705SXin Li (__v4si) __W,
705*67e74705SXin Li (__mmask8) __U);
706*67e74705SXin Li }
707*67e74705SXin Li
708*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_add_epi32(__mmask8 __U,__m128i __A,__m128i __B)709*67e74705SXin Li _mm_maskz_add_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
710*67e74705SXin Li {
711*67e74705SXin Li return (__m128i) __builtin_ia32_paddd128_mask ((__v4si) __A,
712*67e74705SXin Li (__v4si) __B,
713*67e74705SXin Li (__v4si)
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_add_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)719*67e74705SXin Li _mm_mask_add_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
720*67e74705SXin Li __m128i __B)
721*67e74705SXin Li {
722*67e74705SXin Li return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
723*67e74705SXin Li (__v2di) __B,
724*67e74705SXin Li (__v2di) __W,
725*67e74705SXin Li (__mmask8) __U);
726*67e74705SXin Li }
727*67e74705SXin Li
728*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_add_epi64(__mmask8 __U,__m128i __A,__m128i __B)729*67e74705SXin Li _mm_maskz_add_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
730*67e74705SXin Li {
731*67e74705SXin Li return (__m128i) __builtin_ia32_paddq128_mask ((__v2di) __A,
732*67e74705SXin Li (__v2di) __B,
733*67e74705SXin Li (__v2di)
734*67e74705SXin Li _mm_setzero_si128 (),
735*67e74705SXin Li (__mmask8) __U);
736*67e74705SXin Li }
737*67e74705SXin Li
738*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sub_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)739*67e74705SXin Li _mm_mask_sub_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
740*67e74705SXin Li __m128i __B)
741*67e74705SXin Li {
742*67e74705SXin Li return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
743*67e74705SXin Li (__v4si) __B,
744*67e74705SXin Li (__v4si) __W,
745*67e74705SXin Li (__mmask8) __U);
746*67e74705SXin Li }
747*67e74705SXin Li
748*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sub_epi32(__mmask8 __U,__m128i __A,__m128i __B)749*67e74705SXin Li _mm_maskz_sub_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
750*67e74705SXin Li {
751*67e74705SXin Li return (__m128i) __builtin_ia32_psubd128_mask ((__v4si) __A,
752*67e74705SXin Li (__v4si) __B,
753*67e74705SXin Li (__v4si)
754*67e74705SXin Li _mm_setzero_si128 (),
755*67e74705SXin Li (__mmask8) __U);
756*67e74705SXin Li }
757*67e74705SXin Li
758*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sub_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)759*67e74705SXin Li _mm_mask_sub_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
760*67e74705SXin Li __m128i __B)
761*67e74705SXin Li {
762*67e74705SXin Li return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
763*67e74705SXin Li (__v2di) __B,
764*67e74705SXin Li (__v2di) __W,
765*67e74705SXin Li (__mmask8) __U);
766*67e74705SXin Li }
767*67e74705SXin Li
768*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sub_epi64(__mmask8 __U,__m128i __A,__m128i __B)769*67e74705SXin Li _mm_maskz_sub_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
770*67e74705SXin Li {
771*67e74705SXin Li return (__m128i) __builtin_ia32_psubq128_mask ((__v2di) __A,
772*67e74705SXin Li (__v2di) __B,
773*67e74705SXin Li (__v2di)
774*67e74705SXin Li _mm_setzero_si128 (),
775*67e74705SXin Li (__mmask8) __U);
776*67e74705SXin Li }
777*67e74705SXin Li
778*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mul_epi32(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)779*67e74705SXin Li _mm256_mask_mul_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
780*67e74705SXin Li __m256i __Y)
781*67e74705SXin Li {
782*67e74705SXin Li return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
783*67e74705SXin Li (__v8si) __Y,
784*67e74705SXin Li (__v4di) __W, __M);
785*67e74705SXin Li }
786*67e74705SXin Li
787*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mul_epi32(__mmask8 __M,__m256i __X,__m256i __Y)788*67e74705SXin Li _mm256_maskz_mul_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
789*67e74705SXin Li {
790*67e74705SXin Li return (__m256i) __builtin_ia32_pmuldq256_mask ((__v8si) __X,
791*67e74705SXin Li (__v8si) __Y,
792*67e74705SXin Li (__v4di)
793*67e74705SXin Li _mm256_setzero_si256 (),
794*67e74705SXin Li __M);
795*67e74705SXin Li }
796*67e74705SXin Li
797*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mul_epi32(__m128i __W,__mmask8 __M,__m128i __X,__m128i __Y)798*67e74705SXin Li _mm_mask_mul_epi32 (__m128i __W, __mmask8 __M, __m128i __X,
799*67e74705SXin Li __m128i __Y)
800*67e74705SXin Li {
801*67e74705SXin Li return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
802*67e74705SXin Li (__v4si) __Y,
803*67e74705SXin Li (__v2di) __W, __M);
804*67e74705SXin Li }
805*67e74705SXin Li
806*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mul_epi32(__mmask8 __M,__m128i __X,__m128i __Y)807*67e74705SXin Li _mm_maskz_mul_epi32 (__mmask8 __M, __m128i __X, __m128i __Y)
808*67e74705SXin Li {
809*67e74705SXin Li return (__m128i) __builtin_ia32_pmuldq128_mask ((__v4si) __X,
810*67e74705SXin Li (__v4si) __Y,
811*67e74705SXin Li (__v2di)
812*67e74705SXin Li _mm_setzero_si128 (),
813*67e74705SXin Li __M);
814*67e74705SXin Li }
815*67e74705SXin Li
816*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mul_epu32(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)817*67e74705SXin Li _mm256_mask_mul_epu32 (__m256i __W, __mmask8 __M, __m256i __X,
818*67e74705SXin Li __m256i __Y)
819*67e74705SXin Li {
820*67e74705SXin Li return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
821*67e74705SXin Li (__v8si) __Y,
822*67e74705SXin Li (__v4di) __W, __M);
823*67e74705SXin Li }
824*67e74705SXin Li
825*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mul_epu32(__mmask8 __M,__m256i __X,__m256i __Y)826*67e74705SXin Li _mm256_maskz_mul_epu32 (__mmask8 __M, __m256i __X, __m256i __Y)
827*67e74705SXin Li {
828*67e74705SXin Li return (__m256i) __builtin_ia32_pmuludq256_mask ((__v8si) __X,
829*67e74705SXin Li (__v8si) __Y,
830*67e74705SXin Li (__v4di)
831*67e74705SXin Li _mm256_setzero_si256 (),
832*67e74705SXin Li __M);
833*67e74705SXin Li }
834*67e74705SXin Li
835*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mul_epu32(__m128i __W,__mmask8 __M,__m128i __X,__m128i __Y)836*67e74705SXin Li _mm_mask_mul_epu32 (__m128i __W, __mmask8 __M, __m128i __X,
837*67e74705SXin Li __m128i __Y)
838*67e74705SXin Li {
839*67e74705SXin Li return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
840*67e74705SXin Li (__v4si) __Y,
841*67e74705SXin Li (__v2di) __W, __M);
842*67e74705SXin Li }
843*67e74705SXin Li
844*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mul_epu32(__mmask8 __M,__m128i __X,__m128i __Y)845*67e74705SXin Li _mm_maskz_mul_epu32 (__mmask8 __M, __m128i __X, __m128i __Y)
846*67e74705SXin Li {
847*67e74705SXin Li return (__m128i) __builtin_ia32_pmuludq128_mask ((__v4si) __X,
848*67e74705SXin Li (__v4si) __Y,
849*67e74705SXin Li (__v2di)
850*67e74705SXin Li _mm_setzero_si128 (),
851*67e74705SXin Li __M);
852*67e74705SXin Li }
853*67e74705SXin Li
854*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mullo_epi32(__mmask8 __M,__m256i __A,__m256i __B)855*67e74705SXin Li _mm256_maskz_mullo_epi32 (__mmask8 __M, __m256i __A, __m256i __B)
856*67e74705SXin Li {
857*67e74705SXin Li return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
858*67e74705SXin Li (__v8si) __B,
859*67e74705SXin Li (__v8si)
860*67e74705SXin Li _mm256_setzero_si256 (),
861*67e74705SXin Li __M);
862*67e74705SXin Li }
863*67e74705SXin Li
864*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mullo_epi32(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)865*67e74705SXin Li _mm256_mask_mullo_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
866*67e74705SXin Li __m256i __B)
867*67e74705SXin Li {
868*67e74705SXin Li return (__m256i) __builtin_ia32_pmulld256_mask ((__v8si) __A,
869*67e74705SXin Li (__v8si) __B,
870*67e74705SXin Li (__v8si) __W, __M);
871*67e74705SXin Li }
872*67e74705SXin Li
873*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mullo_epi32(__mmask8 __M,__m128i __A,__m128i __B)874*67e74705SXin Li _mm_maskz_mullo_epi32 (__mmask8 __M, __m128i __A, __m128i __B)
875*67e74705SXin Li {
876*67e74705SXin Li return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
877*67e74705SXin Li (__v4si) __B,
878*67e74705SXin Li (__v4si)
879*67e74705SXin Li _mm_setzero_si128 (),
880*67e74705SXin Li __M);
881*67e74705SXin Li }
882*67e74705SXin Li
883*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mullo_epi32(__m128i __W,__mmask16 __M,__m128i __A,__m128i __B)884*67e74705SXin Li _mm_mask_mullo_epi32 (__m128i __W, __mmask16 __M, __m128i __A,
885*67e74705SXin Li __m128i __B)
886*67e74705SXin Li {
887*67e74705SXin Li return (__m128i) __builtin_ia32_pmulld128_mask ((__v4si) __A,
888*67e74705SXin Li (__v4si) __B,
889*67e74705SXin Li (__v4si) __W, __M);
890*67e74705SXin Li }
891*67e74705SXin Li
892*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_and_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)893*67e74705SXin Li _mm256_mask_and_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
894*67e74705SXin Li {
895*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
896*67e74705SXin Li (__v8si)_mm256_and_si256(__A, __B),
897*67e74705SXin Li (__v8si)__W);
898*67e74705SXin Li }
899*67e74705SXin Li
900*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_and_epi32(__mmask8 __U,__m256i __A,__m256i __B)901*67e74705SXin Li _mm256_maskz_and_epi32(__mmask8 __U, __m256i __A, __m256i __B)
902*67e74705SXin Li {
903*67e74705SXin Li return (__m256i)_mm256_mask_and_epi32(_mm256_setzero_si256(), __U, __A, __B);
904*67e74705SXin Li }
905*67e74705SXin Li
906*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_and_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)907*67e74705SXin Li _mm_mask_and_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
908*67e74705SXin Li {
909*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
910*67e74705SXin Li (__v4si)_mm_and_si128(__A, __B),
911*67e74705SXin Li (__v4si)__W);
912*67e74705SXin Li }
913*67e74705SXin Li
914*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_and_epi32(__mmask8 __U,__m128i __A,__m128i __B)915*67e74705SXin Li _mm_maskz_and_epi32(__mmask8 __U, __m128i __A, __m128i __B)
916*67e74705SXin Li {
917*67e74705SXin Li return (__m128i)_mm_mask_and_epi32(_mm_setzero_si128(), __U, __A, __B);
918*67e74705SXin Li }
919*67e74705SXin Li
920*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_andnot_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)921*67e74705SXin Li _mm256_mask_andnot_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
922*67e74705SXin Li {
923*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
924*67e74705SXin Li (__v8si)_mm256_andnot_si256(__A, __B),
925*67e74705SXin Li (__v8si)__W);
926*67e74705SXin Li }
927*67e74705SXin Li
928*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_andnot_epi32(__mmask8 __U,__m256i __A,__m256i __B)929*67e74705SXin Li _mm256_maskz_andnot_epi32(__mmask8 __U, __m256i __A, __m256i __B)
930*67e74705SXin Li {
931*67e74705SXin Li return (__m256i)_mm256_mask_andnot_epi32(_mm256_setzero_si256(),
932*67e74705SXin Li __U, __A, __B);
933*67e74705SXin Li }
934*67e74705SXin Li
935*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_andnot_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)936*67e74705SXin Li _mm_mask_andnot_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
937*67e74705SXin Li {
938*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
939*67e74705SXin Li (__v4si)_mm_andnot_si128(__A, __B),
940*67e74705SXin Li (__v4si)__W);
941*67e74705SXin Li }
942*67e74705SXin Li
943*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_andnot_epi32(__mmask8 __U,__m128i __A,__m128i __B)944*67e74705SXin Li _mm_maskz_andnot_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
945*67e74705SXin Li {
946*67e74705SXin Li return (__m128i)_mm_mask_andnot_epi32(_mm_setzero_si128(), __U, __A, __B);
947*67e74705SXin Li }
948*67e74705SXin Li
949*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_or_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)950*67e74705SXin Li _mm256_mask_or_epi32 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
951*67e74705SXin Li {
952*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
953*67e74705SXin Li (__v8si)_mm256_or_si256(__A, __B),
954*67e74705SXin Li (__v8si)__W);
955*67e74705SXin Li }
956*67e74705SXin Li
957*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_or_epi32(__mmask8 __U,__m256i __A,__m256i __B)958*67e74705SXin Li _mm256_maskz_or_epi32(__mmask8 __U, __m256i __A, __m256i __B)
959*67e74705SXin Li {
960*67e74705SXin Li return (__m256i)_mm256_mask_or_epi32(_mm256_setzero_si256(), __U, __A, __B);
961*67e74705SXin Li }
962*67e74705SXin Li
963*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_or_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)964*67e74705SXin Li _mm_mask_or_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
965*67e74705SXin Li {
966*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
967*67e74705SXin Li (__v4si)_mm_or_si128(__A, __B),
968*67e74705SXin Li (__v4si)__W);
969*67e74705SXin Li }
970*67e74705SXin Li
971*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_or_epi32(__mmask8 __U,__m128i __A,__m128i __B)972*67e74705SXin Li _mm_maskz_or_epi32(__mmask8 __U, __m128i __A, __m128i __B)
973*67e74705SXin Li {
974*67e74705SXin Li return (__m128i)_mm_mask_or_epi32(_mm_setzero_si128(), __U, __A, __B);
975*67e74705SXin Li }
976*67e74705SXin Li
977*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_xor_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)978*67e74705SXin Li _mm256_mask_xor_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
979*67e74705SXin Li {
980*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
981*67e74705SXin Li (__v8si)_mm256_xor_si256(__A, __B),
982*67e74705SXin Li (__v8si)__W);
983*67e74705SXin Li }
984*67e74705SXin Li
985*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_xor_epi32(__mmask8 __U,__m256i __A,__m256i __B)986*67e74705SXin Li _mm256_maskz_xor_epi32(__mmask8 __U, __m256i __A, __m256i __B)
987*67e74705SXin Li {
988*67e74705SXin Li return (__m256i)_mm256_mask_xor_epi32(_mm256_setzero_si256(), __U, __A, __B);
989*67e74705SXin Li }
990*67e74705SXin Li
991*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_xor_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)992*67e74705SXin Li _mm_mask_xor_epi32(__m128i __W, __mmask8 __U, __m128i __A,
993*67e74705SXin Li __m128i __B)
994*67e74705SXin Li {
995*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
996*67e74705SXin Li (__v4si)_mm_xor_si128(__A, __B),
997*67e74705SXin Li (__v4si)__W);
998*67e74705SXin Li }
999*67e74705SXin Li
1000*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_xor_epi32(__mmask8 __U,__m128i __A,__m128i __B)1001*67e74705SXin Li _mm_maskz_xor_epi32(__mmask8 __U, __m128i __A, __m128i __B)
1002*67e74705SXin Li {
1003*67e74705SXin Li return (__m128i)_mm_mask_xor_epi32(_mm_setzero_si128(), __U, __A, __B);
1004*67e74705SXin Li }
1005*67e74705SXin Li
1006*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_and_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1007*67e74705SXin Li _mm256_mask_and_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1008*67e74705SXin Li {
1009*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1010*67e74705SXin Li (__v4di)_mm256_and_si256(__A, __B),
1011*67e74705SXin Li (__v4di)__W);
1012*67e74705SXin Li }
1013*67e74705SXin Li
1014*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_and_epi64(__mmask8 __U,__m256i __A,__m256i __B)1015*67e74705SXin Li _mm256_maskz_and_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1016*67e74705SXin Li {
1017*67e74705SXin Li return (__m256i)_mm256_mask_and_epi64(_mm256_setzero_si256(), __U, __A, __B);
1018*67e74705SXin Li }
1019*67e74705SXin Li
1020*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_and_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1021*67e74705SXin Li _mm_mask_and_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1022*67e74705SXin Li {
1023*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1024*67e74705SXin Li (__v2di)_mm_and_si128(__A, __B),
1025*67e74705SXin Li (__v2di)__W);
1026*67e74705SXin Li }
1027*67e74705SXin Li
1028*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_and_epi64(__mmask8 __U,__m128i __A,__m128i __B)1029*67e74705SXin Li _mm_maskz_and_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1030*67e74705SXin Li {
1031*67e74705SXin Li return (__m128i)_mm_mask_and_epi64(_mm_setzero_si128(), __U, __A, __B);
1032*67e74705SXin Li }
1033*67e74705SXin Li
1034*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_andnot_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1035*67e74705SXin Li _mm256_mask_andnot_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1036*67e74705SXin Li {
1037*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1038*67e74705SXin Li (__v4di)_mm256_andnot_si256(__A, __B),
1039*67e74705SXin Li (__v4di)__W);
1040*67e74705SXin Li }
1041*67e74705SXin Li
1042*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_andnot_epi64(__mmask8 __U,__m256i __A,__m256i __B)1043*67e74705SXin Li _mm256_maskz_andnot_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1044*67e74705SXin Li {
1045*67e74705SXin Li return (__m256i)_mm256_mask_andnot_epi64(_mm256_setzero_si256(),
1046*67e74705SXin Li __U, __A, __B);
1047*67e74705SXin Li }
1048*67e74705SXin Li
1049*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_andnot_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1050*67e74705SXin Li _mm_mask_andnot_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1051*67e74705SXin Li {
1052*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1053*67e74705SXin Li (__v2di)_mm_andnot_si128(__A, __B),
1054*67e74705SXin Li (__v2di)__W);
1055*67e74705SXin Li }
1056*67e74705SXin Li
1057*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_andnot_epi64(__mmask8 __U,__m128i __A,__m128i __B)1058*67e74705SXin Li _mm_maskz_andnot_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1059*67e74705SXin Li {
1060*67e74705SXin Li return (__m128i)_mm_mask_andnot_epi64(_mm_setzero_si128(), __U, __A, __B);
1061*67e74705SXin Li }
1062*67e74705SXin Li
1063*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_or_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1064*67e74705SXin Li _mm256_mask_or_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1065*67e74705SXin Li {
1066*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1067*67e74705SXin Li (__v4di)_mm256_or_si256(__A, __B),
1068*67e74705SXin Li (__v4di)__W);
1069*67e74705SXin Li }
1070*67e74705SXin Li
1071*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_or_epi64(__mmask8 __U,__m256i __A,__m256i __B)1072*67e74705SXin Li _mm256_maskz_or_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1073*67e74705SXin Li {
1074*67e74705SXin Li return (__m256i)_mm256_mask_or_epi64(_mm256_setzero_si256(), __U, __A, __B);
1075*67e74705SXin Li }
1076*67e74705SXin Li
1077*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_or_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1078*67e74705SXin Li _mm_mask_or_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
1079*67e74705SXin Li {
1080*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1081*67e74705SXin Li (__v2di)_mm_or_si128(__A, __B),
1082*67e74705SXin Li (__v2di)__W);
1083*67e74705SXin Li }
1084*67e74705SXin Li
1085*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_or_epi64(__mmask8 __U,__m128i __A,__m128i __B)1086*67e74705SXin Li _mm_maskz_or_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1087*67e74705SXin Li {
1088*67e74705SXin Li return (__m128i)_mm_mask_or_epi64(_mm_setzero_si128(), __U, __A, __B);
1089*67e74705SXin Li }
1090*67e74705SXin Li
1091*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_xor_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)1092*67e74705SXin Li _mm256_mask_xor_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
1093*67e74705SXin Li {
1094*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
1095*67e74705SXin Li (__v4di)_mm256_xor_si256(__A, __B),
1096*67e74705SXin Li (__v4di)__W);
1097*67e74705SXin Li }
1098*67e74705SXin Li
1099*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_xor_epi64(__mmask8 __U,__m256i __A,__m256i __B)1100*67e74705SXin Li _mm256_maskz_xor_epi64(__mmask8 __U, __m256i __A, __m256i __B)
1101*67e74705SXin Li {
1102*67e74705SXin Li return (__m256i)_mm256_mask_xor_epi64(_mm256_setzero_si256(), __U, __A, __B);
1103*67e74705SXin Li }
1104*67e74705SXin Li
1105*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_xor_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)1106*67e74705SXin Li _mm_mask_xor_epi64(__m128i __W, __mmask8 __U, __m128i __A,
1107*67e74705SXin Li __m128i __B)
1108*67e74705SXin Li {
1109*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
1110*67e74705SXin Li (__v2di)_mm_xor_si128(__A, __B),
1111*67e74705SXin Li (__v2di)__W);
1112*67e74705SXin Li }
1113*67e74705SXin Li
1114*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_xor_epi64(__mmask8 __U,__m128i __A,__m128i __B)1115*67e74705SXin Li _mm_maskz_xor_epi64(__mmask8 __U, __m128i __A, __m128i __B)
1116*67e74705SXin Li {
1117*67e74705SXin Li return (__m128i)_mm_mask_xor_epi64(_mm_setzero_si128(), __U, __A, __B);
1118*67e74705SXin Li }
1119*67e74705SXin Li
1120*67e74705SXin Li #define _mm_cmp_epi32_mask(a, b, p) __extension__ ({ \
1121*67e74705SXin Li (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
1122*67e74705SXin Li (__v4si)(__m128i)(b), (int)(p), \
1123*67e74705SXin Li (__mmask8)-1); })
1124*67e74705SXin Li
1125*67e74705SXin Li #define _mm_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1126*67e74705SXin Li (__mmask8)__builtin_ia32_cmpd128_mask((__v4si)(__m128i)(a), \
1127*67e74705SXin Li (__v4si)(__m128i)(b), (int)(p), \
1128*67e74705SXin Li (__mmask8)(m)); })
1129*67e74705SXin Li
1130*67e74705SXin Li #define _mm_cmp_epu32_mask(a, b, p) __extension__ ({ \
1131*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
1132*67e74705SXin Li (__v4si)(__m128i)(b), (int)(p), \
1133*67e74705SXin Li (__mmask8)-1); })
1134*67e74705SXin Li
1135*67e74705SXin Li #define _mm_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1136*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpd128_mask((__v4si)(__m128i)(a), \
1137*67e74705SXin Li (__v4si)(__m128i)(b), (int)(p), \
1138*67e74705SXin Li (__mmask8)(m)); })
1139*67e74705SXin Li
1140*67e74705SXin Li #define _mm256_cmp_epi32_mask(a, b, p) __extension__ ({ \
1141*67e74705SXin Li (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
1142*67e74705SXin Li (__v8si)(__m256i)(b), (int)(p), \
1143*67e74705SXin Li (__mmask8)-1); })
1144*67e74705SXin Li
1145*67e74705SXin Li #define _mm256_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1146*67e74705SXin Li (__mmask8)__builtin_ia32_cmpd256_mask((__v8si)(__m256i)(a), \
1147*67e74705SXin Li (__v8si)(__m256i)(b), (int)(p), \
1148*67e74705SXin Li (__mmask8)(m)); })
1149*67e74705SXin Li
1150*67e74705SXin Li #define _mm256_cmp_epu32_mask(a, b, p) __extension__ ({ \
1151*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
1152*67e74705SXin Li (__v8si)(__m256i)(b), (int)(p), \
1153*67e74705SXin Li (__mmask8)-1); })
1154*67e74705SXin Li
1155*67e74705SXin Li #define _mm256_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1156*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpd256_mask((__v8si)(__m256i)(a), \
1157*67e74705SXin Li (__v8si)(__m256i)(b), (int)(p), \
1158*67e74705SXin Li (__mmask8)(m)); })
1159*67e74705SXin Li
1160*67e74705SXin Li #define _mm_cmp_epi64_mask(a, b, p) __extension__ ({ \
1161*67e74705SXin Li (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
1162*67e74705SXin Li (__v2di)(__m128i)(b), (int)(p), \
1163*67e74705SXin Li (__mmask8)-1); })
1164*67e74705SXin Li
1165*67e74705SXin Li #define _mm_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1166*67e74705SXin Li (__mmask8)__builtin_ia32_cmpq128_mask((__v2di)(__m128i)(a), \
1167*67e74705SXin Li (__v2di)(__m128i)(b), (int)(p), \
1168*67e74705SXin Li (__mmask8)(m)); })
1169*67e74705SXin Li
1170*67e74705SXin Li #define _mm_cmp_epu64_mask(a, b, p) __extension__ ({ \
1171*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
1172*67e74705SXin Li (__v2di)(__m128i)(b), (int)(p), \
1173*67e74705SXin Li (__mmask8)-1); })
1174*67e74705SXin Li
1175*67e74705SXin Li #define _mm_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1176*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpq128_mask((__v2di)(__m128i)(a), \
1177*67e74705SXin Li (__v2di)(__m128i)(b), (int)(p), \
1178*67e74705SXin Li (__mmask8)(m)); })
1179*67e74705SXin Li
1180*67e74705SXin Li #define _mm256_cmp_epi64_mask(a, b, p) __extension__ ({ \
1181*67e74705SXin Li (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
1182*67e74705SXin Li (__v4di)(__m256i)(b), (int)(p), \
1183*67e74705SXin Li (__mmask8)-1); })
1184*67e74705SXin Li
1185*67e74705SXin Li #define _mm256_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1186*67e74705SXin Li (__mmask8)__builtin_ia32_cmpq256_mask((__v4di)(__m256i)(a), \
1187*67e74705SXin Li (__v4di)(__m256i)(b), (int)(p), \
1188*67e74705SXin Li (__mmask8)(m)); })
1189*67e74705SXin Li
1190*67e74705SXin Li #define _mm256_cmp_epu64_mask(a, b, p) __extension__ ({ \
1191*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
1192*67e74705SXin Li (__v4di)(__m256i)(b), (int)(p), \
1193*67e74705SXin Li (__mmask8)-1); })
1194*67e74705SXin Li
1195*67e74705SXin Li #define _mm256_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1196*67e74705SXin Li (__mmask8)__builtin_ia32_ucmpq256_mask((__v4di)(__m256i)(a), \
1197*67e74705SXin Li (__v4di)(__m256i)(b), (int)(p), \
1198*67e74705SXin Li (__mmask8)(m)); })
1199*67e74705SXin Li
1200*67e74705SXin Li #define _mm256_cmp_ps_mask(a, b, p) __extension__ ({ \
1201*67e74705SXin Li (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
1202*67e74705SXin Li (__v8sf)(__m256)(b), (int)(p), \
1203*67e74705SXin Li (__mmask8)-1); })
1204*67e74705SXin Li
1205*67e74705SXin Li #define _mm256_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
1206*67e74705SXin Li (__mmask8)__builtin_ia32_cmpps256_mask((__v8sf)(__m256)(a), \
1207*67e74705SXin Li (__v8sf)(__m256)(b), (int)(p), \
1208*67e74705SXin Li (__mmask8)(m)); })
1209*67e74705SXin Li
1210*67e74705SXin Li #define _mm256_cmp_pd_mask(a, b, p) __extension__ ({ \
1211*67e74705SXin Li (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
1212*67e74705SXin Li (__v4df)(__m256d)(b), (int)(p), \
1213*67e74705SXin Li (__mmask8)-1); })
1214*67e74705SXin Li
1215*67e74705SXin Li #define _mm256_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
1216*67e74705SXin Li (__mmask8)__builtin_ia32_cmppd256_mask((__v4df)(__m256d)(a), \
1217*67e74705SXin Li (__v4df)(__m256d)(b), (int)(p), \
1218*67e74705SXin Li (__mmask8)(m)); })
1219*67e74705SXin Li
1220*67e74705SXin Li #define _mm_cmp_ps_mask(a, b, p) __extension__ ({ \
1221*67e74705SXin Li (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
1222*67e74705SXin Li (__v4sf)(__m128)(b), (int)(p), \
1223*67e74705SXin Li (__mmask8)-1); })
1224*67e74705SXin Li
1225*67e74705SXin Li #define _mm_mask_cmp_ps_mask(m, a, b, p) __extension__ ({ \
1226*67e74705SXin Li (__mmask8)__builtin_ia32_cmpps128_mask((__v4sf)(__m128)(a), \
1227*67e74705SXin Li (__v4sf)(__m128)(b), (int)(p), \
1228*67e74705SXin Li (__mmask8)(m)); })
1229*67e74705SXin Li
1230*67e74705SXin Li #define _mm_cmp_pd_mask(a, b, p) __extension__ ({ \
1231*67e74705SXin Li (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
1232*67e74705SXin Li (__v2df)(__m128d)(b), (int)(p), \
1233*67e74705SXin Li (__mmask8)-1); })
1234*67e74705SXin Li
1235*67e74705SXin Li #define _mm_mask_cmp_pd_mask(m, a, b, p) __extension__ ({ \
1236*67e74705SXin Li (__mmask8)__builtin_ia32_cmppd128_mask((__v2df)(__m128d)(a), \
1237*67e74705SXin Li (__v2df)(__m128d)(b), (int)(p), \
1238*67e74705SXin Li (__mmask8)(m)); })
1239*67e74705SXin Li
1240*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fmadd_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1241*67e74705SXin Li _mm_mask_fmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1242*67e74705SXin Li {
1243*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
1244*67e74705SXin Li (__v2df) __B,
1245*67e74705SXin Li (__v2df) __C,
1246*67e74705SXin Li (__mmask8) __U);
1247*67e74705SXin Li }
1248*67e74705SXin Li
1249*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fmadd_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1250*67e74705SXin Li _mm_mask3_fmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1251*67e74705SXin Li {
1252*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_mask3 ((__v2df) __A,
1253*67e74705SXin Li (__v2df) __B,
1254*67e74705SXin Li (__v2df) __C,
1255*67e74705SXin Li (__mmask8) __U);
1256*67e74705SXin Li }
1257*67e74705SXin Li
1258*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fmadd_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1259*67e74705SXin Li _mm_maskz_fmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1260*67e74705SXin Li {
1261*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
1262*67e74705SXin Li (__v2df) __B,
1263*67e74705SXin Li (__v2df) __C,
1264*67e74705SXin Li (__mmask8) __U);
1265*67e74705SXin Li }
1266*67e74705SXin Li
1267*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fmsub_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1268*67e74705SXin Li _mm_mask_fmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1269*67e74705SXin Li {
1270*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_mask ((__v2df) __A,
1271*67e74705SXin Li (__v2df) __B,
1272*67e74705SXin Li -(__v2df) __C,
1273*67e74705SXin Li (__mmask8) __U);
1274*67e74705SXin Li }
1275*67e74705SXin Li
1276*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fmsub_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1277*67e74705SXin Li _mm_maskz_fmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1278*67e74705SXin Li {
1279*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_maskz ((__v2df) __A,
1280*67e74705SXin Li (__v2df) __B,
1281*67e74705SXin Li -(__v2df) __C,
1282*67e74705SXin Li (__mmask8) __U);
1283*67e74705SXin Li }
1284*67e74705SXin Li
1285*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fnmadd_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1286*67e74705SXin Li _mm_mask3_fnmadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1287*67e74705SXin Li {
1288*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_mask3 (-(__v2df) __A,
1289*67e74705SXin Li (__v2df) __B,
1290*67e74705SXin Li (__v2df) __C,
1291*67e74705SXin Li (__mmask8) __U);
1292*67e74705SXin Li }
1293*67e74705SXin Li
1294*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fnmadd_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1295*67e74705SXin Li _mm_maskz_fnmadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1296*67e74705SXin Li {
1297*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
1298*67e74705SXin Li (__v2df) __B,
1299*67e74705SXin Li (__v2df) __C,
1300*67e74705SXin Li (__mmask8) __U);
1301*67e74705SXin Li }
1302*67e74705SXin Li
1303*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fnmsub_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1304*67e74705SXin Li _mm_maskz_fnmsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1305*67e74705SXin Li {
1306*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddpd128_maskz (-(__v2df) __A,
1307*67e74705SXin Li (__v2df) __B,
1308*67e74705SXin Li -(__v2df) __C,
1309*67e74705SXin Li (__mmask8) __U);
1310*67e74705SXin Li }
1311*67e74705SXin Li
1312*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fmadd_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1313*67e74705SXin Li _mm256_mask_fmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1314*67e74705SXin Li {
1315*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
1316*67e74705SXin Li (__v4df) __B,
1317*67e74705SXin Li (__v4df) __C,
1318*67e74705SXin Li (__mmask8) __U);
1319*67e74705SXin Li }
1320*67e74705SXin Li
1321*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fmadd_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1322*67e74705SXin Li _mm256_mask3_fmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1323*67e74705SXin Li {
1324*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_mask3 ((__v4df) __A,
1325*67e74705SXin Li (__v4df) __B,
1326*67e74705SXin Li (__v4df) __C,
1327*67e74705SXin Li (__mmask8) __U);
1328*67e74705SXin Li }
1329*67e74705SXin Li
1330*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fmadd_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1331*67e74705SXin Li _mm256_maskz_fmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1332*67e74705SXin Li {
1333*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
1334*67e74705SXin Li (__v4df) __B,
1335*67e74705SXin Li (__v4df) __C,
1336*67e74705SXin Li (__mmask8) __U);
1337*67e74705SXin Li }
1338*67e74705SXin Li
1339*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fmsub_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1340*67e74705SXin Li _mm256_mask_fmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1341*67e74705SXin Li {
1342*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_mask ((__v4df) __A,
1343*67e74705SXin Li (__v4df) __B,
1344*67e74705SXin Li -(__v4df) __C,
1345*67e74705SXin Li (__mmask8) __U);
1346*67e74705SXin Li }
1347*67e74705SXin Li
1348*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fmsub_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1349*67e74705SXin Li _mm256_maskz_fmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1350*67e74705SXin Li {
1351*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_maskz ((__v4df) __A,
1352*67e74705SXin Li (__v4df) __B,
1353*67e74705SXin Li -(__v4df) __C,
1354*67e74705SXin Li (__mmask8) __U);
1355*67e74705SXin Li }
1356*67e74705SXin Li
1357*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fnmadd_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1358*67e74705SXin Li _mm256_mask3_fnmadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1359*67e74705SXin Li {
1360*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_mask3 (-(__v4df) __A,
1361*67e74705SXin Li (__v4df) __B,
1362*67e74705SXin Li (__v4df) __C,
1363*67e74705SXin Li (__mmask8) __U);
1364*67e74705SXin Li }
1365*67e74705SXin Li
1366*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fnmadd_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1367*67e74705SXin Li _mm256_maskz_fnmadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1368*67e74705SXin Li {
1369*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
1370*67e74705SXin Li (__v4df) __B,
1371*67e74705SXin Li (__v4df) __C,
1372*67e74705SXin Li (__mmask8) __U);
1373*67e74705SXin Li }
1374*67e74705SXin Li
1375*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fnmsub_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1376*67e74705SXin Li _mm256_maskz_fnmsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1377*67e74705SXin Li {
1378*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddpd256_maskz (-(__v4df) __A,
1379*67e74705SXin Li (__v4df) __B,
1380*67e74705SXin Li -(__v4df) __C,
1381*67e74705SXin Li (__mmask8) __U);
1382*67e74705SXin Li }
1383*67e74705SXin Li
1384*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fmadd_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1385*67e74705SXin Li _mm_mask_fmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1386*67e74705SXin Li {
1387*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
1388*67e74705SXin Li (__v4sf) __B,
1389*67e74705SXin Li (__v4sf) __C,
1390*67e74705SXin Li (__mmask8) __U);
1391*67e74705SXin Li }
1392*67e74705SXin Li
1393*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fmadd_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1394*67e74705SXin Li _mm_mask3_fmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1395*67e74705SXin Li {
1396*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_mask3 ((__v4sf) __A,
1397*67e74705SXin Li (__v4sf) __B,
1398*67e74705SXin Li (__v4sf) __C,
1399*67e74705SXin Li (__mmask8) __U);
1400*67e74705SXin Li }
1401*67e74705SXin Li
1402*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fmadd_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1403*67e74705SXin Li _mm_maskz_fmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1404*67e74705SXin Li {
1405*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
1406*67e74705SXin Li (__v4sf) __B,
1407*67e74705SXin Li (__v4sf) __C,
1408*67e74705SXin Li (__mmask8) __U);
1409*67e74705SXin Li }
1410*67e74705SXin Li
1411*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fmsub_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1412*67e74705SXin Li _mm_mask_fmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1413*67e74705SXin Li {
1414*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_mask ((__v4sf) __A,
1415*67e74705SXin Li (__v4sf) __B,
1416*67e74705SXin Li -(__v4sf) __C,
1417*67e74705SXin Li (__mmask8) __U);
1418*67e74705SXin Li }
1419*67e74705SXin Li
1420*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fmsub_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1421*67e74705SXin Li _mm_maskz_fmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1422*67e74705SXin Li {
1423*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_maskz ((__v4sf) __A,
1424*67e74705SXin Li (__v4sf) __B,
1425*67e74705SXin Li -(__v4sf) __C,
1426*67e74705SXin Li (__mmask8) __U);
1427*67e74705SXin Li }
1428*67e74705SXin Li
1429*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fnmadd_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1430*67e74705SXin Li _mm_mask3_fnmadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1431*67e74705SXin Li {
1432*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_mask3 (-(__v4sf) __A,
1433*67e74705SXin Li (__v4sf) __B,
1434*67e74705SXin Li (__v4sf) __C,
1435*67e74705SXin Li (__mmask8) __U);
1436*67e74705SXin Li }
1437*67e74705SXin Li
1438*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fnmadd_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1439*67e74705SXin Li _mm_maskz_fnmadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1440*67e74705SXin Li {
1441*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1442*67e74705SXin Li (__v4sf) __B,
1443*67e74705SXin Li (__v4sf) __C,
1444*67e74705SXin Li (__mmask8) __U);
1445*67e74705SXin Li }
1446*67e74705SXin Li
1447*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fnmsub_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1448*67e74705SXin Li _mm_maskz_fnmsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1449*67e74705SXin Li {
1450*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddps128_maskz (-(__v4sf) __A,
1451*67e74705SXin Li (__v4sf) __B,
1452*67e74705SXin Li -(__v4sf) __C,
1453*67e74705SXin Li (__mmask8) __U);
1454*67e74705SXin Li }
1455*67e74705SXin Li
1456*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fmadd_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1457*67e74705SXin Li _mm256_mask_fmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1458*67e74705SXin Li {
1459*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1460*67e74705SXin Li (__v8sf) __B,
1461*67e74705SXin Li (__v8sf) __C,
1462*67e74705SXin Li (__mmask8) __U);
1463*67e74705SXin Li }
1464*67e74705SXin Li
1465*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fmadd_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1466*67e74705SXin Li _mm256_mask3_fmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1467*67e74705SXin Li {
1468*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_mask3 ((__v8sf) __A,
1469*67e74705SXin Li (__v8sf) __B,
1470*67e74705SXin Li (__v8sf) __C,
1471*67e74705SXin Li (__mmask8) __U);
1472*67e74705SXin Li }
1473*67e74705SXin Li
1474*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fmadd_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1475*67e74705SXin Li _mm256_maskz_fmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1476*67e74705SXin Li {
1477*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1478*67e74705SXin Li (__v8sf) __B,
1479*67e74705SXin Li (__v8sf) __C,
1480*67e74705SXin Li (__mmask8) __U);
1481*67e74705SXin Li }
1482*67e74705SXin Li
1483*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fmsub_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1484*67e74705SXin Li _mm256_mask_fmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1485*67e74705SXin Li {
1486*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_mask ((__v8sf) __A,
1487*67e74705SXin Li (__v8sf) __B,
1488*67e74705SXin Li -(__v8sf) __C,
1489*67e74705SXin Li (__mmask8) __U);
1490*67e74705SXin Li }
1491*67e74705SXin Li
1492*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fmsub_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1493*67e74705SXin Li _mm256_maskz_fmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1494*67e74705SXin Li {
1495*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_maskz ((__v8sf) __A,
1496*67e74705SXin Li (__v8sf) __B,
1497*67e74705SXin Li -(__v8sf) __C,
1498*67e74705SXin Li (__mmask8) __U);
1499*67e74705SXin Li }
1500*67e74705SXin Li
1501*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fnmadd_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1502*67e74705SXin Li _mm256_mask3_fnmadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1503*67e74705SXin Li {
1504*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_mask3 (-(__v8sf) __A,
1505*67e74705SXin Li (__v8sf) __B,
1506*67e74705SXin Li (__v8sf) __C,
1507*67e74705SXin Li (__mmask8) __U);
1508*67e74705SXin Li }
1509*67e74705SXin Li
1510*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fnmadd_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1511*67e74705SXin Li _mm256_maskz_fnmadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1512*67e74705SXin Li {
1513*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1514*67e74705SXin Li (__v8sf) __B,
1515*67e74705SXin Li (__v8sf) __C,
1516*67e74705SXin Li (__mmask8) __U);
1517*67e74705SXin Li }
1518*67e74705SXin Li
1519*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fnmsub_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1520*67e74705SXin Li _mm256_maskz_fnmsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1521*67e74705SXin Li {
1522*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddps256_maskz (-(__v8sf) __A,
1523*67e74705SXin Li (__v8sf) __B,
1524*67e74705SXin Li -(__v8sf) __C,
1525*67e74705SXin Li (__mmask8) __U);
1526*67e74705SXin Li }
1527*67e74705SXin Li
1528*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fmaddsub_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1529*67e74705SXin Li _mm_mask_fmaddsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1530*67e74705SXin Li {
1531*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1532*67e74705SXin Li (__v2df) __B,
1533*67e74705SXin Li (__v2df) __C,
1534*67e74705SXin Li (__mmask8) __U);
1535*67e74705SXin Li }
1536*67e74705SXin Li
1537*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fmaddsub_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1538*67e74705SXin Li _mm_mask3_fmaddsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1539*67e74705SXin Li {
1540*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddsubpd128_mask3 ((__v2df) __A,
1541*67e74705SXin Li (__v2df) __B,
1542*67e74705SXin Li (__v2df) __C,
1543*67e74705SXin Li (__mmask8)
1544*67e74705SXin Li __U);
1545*67e74705SXin Li }
1546*67e74705SXin Li
1547*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fmaddsub_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1548*67e74705SXin Li _mm_maskz_fmaddsub_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1549*67e74705SXin Li {
1550*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1551*67e74705SXin Li (__v2df) __B,
1552*67e74705SXin Li (__v2df) __C,
1553*67e74705SXin Li (__mmask8)
1554*67e74705SXin Li __U);
1555*67e74705SXin Li }
1556*67e74705SXin Li
1557*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fmsubadd_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1558*67e74705SXin Li _mm_mask_fmsubadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1559*67e74705SXin Li {
1560*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddsubpd128_mask ((__v2df) __A,
1561*67e74705SXin Li (__v2df) __B,
1562*67e74705SXin Li -(__v2df) __C,
1563*67e74705SXin Li (__mmask8) __U);
1564*67e74705SXin Li }
1565*67e74705SXin Li
1566*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_fmsubadd_pd(__mmask8 __U,__m128d __A,__m128d __B,__m128d __C)1567*67e74705SXin Li _mm_maskz_fmsubadd_pd(__mmask8 __U, __m128d __A, __m128d __B, __m128d __C)
1568*67e74705SXin Li {
1569*67e74705SXin Li return (__m128d) __builtin_ia32_vfmaddsubpd128_maskz ((__v2df) __A,
1570*67e74705SXin Li (__v2df) __B,
1571*67e74705SXin Li -(__v2df) __C,
1572*67e74705SXin Li (__mmask8)
1573*67e74705SXin Li __U);
1574*67e74705SXin Li }
1575*67e74705SXin Li
1576*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fmaddsub_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1577*67e74705SXin Li _mm256_mask_fmaddsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1578*67e74705SXin Li {
1579*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1580*67e74705SXin Li (__v4df) __B,
1581*67e74705SXin Li (__v4df) __C,
1582*67e74705SXin Li (__mmask8) __U);
1583*67e74705SXin Li }
1584*67e74705SXin Li
1585*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fmaddsub_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1586*67e74705SXin Li _mm256_mask3_fmaddsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1587*67e74705SXin Li {
1588*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddsubpd256_mask3 ((__v4df) __A,
1589*67e74705SXin Li (__v4df) __B,
1590*67e74705SXin Li (__v4df) __C,
1591*67e74705SXin Li (__mmask8)
1592*67e74705SXin Li __U);
1593*67e74705SXin Li }
1594*67e74705SXin Li
1595*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fmaddsub_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1596*67e74705SXin Li _mm256_maskz_fmaddsub_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1597*67e74705SXin Li {
1598*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1599*67e74705SXin Li (__v4df) __B,
1600*67e74705SXin Li (__v4df) __C,
1601*67e74705SXin Li (__mmask8)
1602*67e74705SXin Li __U);
1603*67e74705SXin Li }
1604*67e74705SXin Li
1605*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fmsubadd_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1606*67e74705SXin Li _mm256_mask_fmsubadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1607*67e74705SXin Li {
1608*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddsubpd256_mask ((__v4df) __A,
1609*67e74705SXin Li (__v4df) __B,
1610*67e74705SXin Li -(__v4df) __C,
1611*67e74705SXin Li (__mmask8) __U);
1612*67e74705SXin Li }
1613*67e74705SXin Li
1614*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_fmsubadd_pd(__mmask8 __U,__m256d __A,__m256d __B,__m256d __C)1615*67e74705SXin Li _mm256_maskz_fmsubadd_pd(__mmask8 __U, __m256d __A, __m256d __B, __m256d __C)
1616*67e74705SXin Li {
1617*67e74705SXin Li return (__m256d) __builtin_ia32_vfmaddsubpd256_maskz ((__v4df) __A,
1618*67e74705SXin Li (__v4df) __B,
1619*67e74705SXin Li -(__v4df) __C,
1620*67e74705SXin Li (__mmask8)
1621*67e74705SXin Li __U);
1622*67e74705SXin Li }
1623*67e74705SXin Li
1624*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fmaddsub_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1625*67e74705SXin Li _mm_mask_fmaddsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1626*67e74705SXin Li {
1627*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1628*67e74705SXin Li (__v4sf) __B,
1629*67e74705SXin Li (__v4sf) __C,
1630*67e74705SXin Li (__mmask8) __U);
1631*67e74705SXin Li }
1632*67e74705SXin Li
1633*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fmaddsub_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1634*67e74705SXin Li _mm_mask3_fmaddsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1635*67e74705SXin Li {
1636*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddsubps128_mask3 ((__v4sf) __A,
1637*67e74705SXin Li (__v4sf) __B,
1638*67e74705SXin Li (__v4sf) __C,
1639*67e74705SXin Li (__mmask8) __U);
1640*67e74705SXin Li }
1641*67e74705SXin Li
1642*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fmaddsub_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1643*67e74705SXin Li _mm_maskz_fmaddsub_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1644*67e74705SXin Li {
1645*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1646*67e74705SXin Li (__v4sf) __B,
1647*67e74705SXin Li (__v4sf) __C,
1648*67e74705SXin Li (__mmask8) __U);
1649*67e74705SXin Li }
1650*67e74705SXin Li
1651*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fmsubadd_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1652*67e74705SXin Li _mm_mask_fmsubadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1653*67e74705SXin Li {
1654*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddsubps128_mask ((__v4sf) __A,
1655*67e74705SXin Li (__v4sf) __B,
1656*67e74705SXin Li -(__v4sf) __C,
1657*67e74705SXin Li (__mmask8) __U);
1658*67e74705SXin Li }
1659*67e74705SXin Li
1660*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_fmsubadd_ps(__mmask8 __U,__m128 __A,__m128 __B,__m128 __C)1661*67e74705SXin Li _mm_maskz_fmsubadd_ps(__mmask8 __U, __m128 __A, __m128 __B, __m128 __C)
1662*67e74705SXin Li {
1663*67e74705SXin Li return (__m128) __builtin_ia32_vfmaddsubps128_maskz ((__v4sf) __A,
1664*67e74705SXin Li (__v4sf) __B,
1665*67e74705SXin Li -(__v4sf) __C,
1666*67e74705SXin Li (__mmask8) __U);
1667*67e74705SXin Li }
1668*67e74705SXin Li
1669*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fmaddsub_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1670*67e74705SXin Li _mm256_mask_fmaddsub_ps(__m256 __A, __mmask8 __U, __m256 __B,
1671*67e74705SXin Li __m256 __C)
1672*67e74705SXin Li {
1673*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1674*67e74705SXin Li (__v8sf) __B,
1675*67e74705SXin Li (__v8sf) __C,
1676*67e74705SXin Li (__mmask8) __U);
1677*67e74705SXin Li }
1678*67e74705SXin Li
1679*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fmaddsub_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1680*67e74705SXin Li _mm256_mask3_fmaddsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1681*67e74705SXin Li {
1682*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddsubps256_mask3 ((__v8sf) __A,
1683*67e74705SXin Li (__v8sf) __B,
1684*67e74705SXin Li (__v8sf) __C,
1685*67e74705SXin Li (__mmask8) __U);
1686*67e74705SXin Li }
1687*67e74705SXin Li
1688*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fmaddsub_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1689*67e74705SXin Li _mm256_maskz_fmaddsub_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1690*67e74705SXin Li {
1691*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1692*67e74705SXin Li (__v8sf) __B,
1693*67e74705SXin Li (__v8sf) __C,
1694*67e74705SXin Li (__mmask8) __U);
1695*67e74705SXin Li }
1696*67e74705SXin Li
1697*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fmsubadd_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1698*67e74705SXin Li _mm256_mask_fmsubadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1699*67e74705SXin Li {
1700*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddsubps256_mask ((__v8sf) __A,
1701*67e74705SXin Li (__v8sf) __B,
1702*67e74705SXin Li -(__v8sf) __C,
1703*67e74705SXin Li (__mmask8) __U);
1704*67e74705SXin Li }
1705*67e74705SXin Li
1706*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_fmsubadd_ps(__mmask8 __U,__m256 __A,__m256 __B,__m256 __C)1707*67e74705SXin Li _mm256_maskz_fmsubadd_ps(__mmask8 __U, __m256 __A, __m256 __B, __m256 __C)
1708*67e74705SXin Li {
1709*67e74705SXin Li return (__m256) __builtin_ia32_vfmaddsubps256_maskz ((__v8sf) __A,
1710*67e74705SXin Li (__v8sf) __B,
1711*67e74705SXin Li -(__v8sf) __C,
1712*67e74705SXin Li (__mmask8) __U);
1713*67e74705SXin Li }
1714*67e74705SXin Li
1715*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fmsub_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1716*67e74705SXin Li _mm_mask3_fmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1717*67e74705SXin Li {
1718*67e74705SXin Li return (__m128d) __builtin_ia32_vfmsubpd128_mask3 ((__v2df) __A,
1719*67e74705SXin Li (__v2df) __B,
1720*67e74705SXin Li (__v2df) __C,
1721*67e74705SXin Li (__mmask8) __U);
1722*67e74705SXin Li }
1723*67e74705SXin Li
1724*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fmsub_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1725*67e74705SXin Li _mm256_mask3_fmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1726*67e74705SXin Li {
1727*67e74705SXin Li return (__m256d) __builtin_ia32_vfmsubpd256_mask3 ((__v4df) __A,
1728*67e74705SXin Li (__v4df) __B,
1729*67e74705SXin Li (__v4df) __C,
1730*67e74705SXin Li (__mmask8) __U);
1731*67e74705SXin Li }
1732*67e74705SXin Li
1733*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fmsub_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1734*67e74705SXin Li _mm_mask3_fmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1735*67e74705SXin Li {
1736*67e74705SXin Li return (__m128) __builtin_ia32_vfmsubps128_mask3 ((__v4sf) __A,
1737*67e74705SXin Li (__v4sf) __B,
1738*67e74705SXin Li (__v4sf) __C,
1739*67e74705SXin Li (__mmask8) __U);
1740*67e74705SXin Li }
1741*67e74705SXin Li
1742*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fmsub_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1743*67e74705SXin Li _mm256_mask3_fmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1744*67e74705SXin Li {
1745*67e74705SXin Li return (__m256) __builtin_ia32_vfmsubps256_mask3 ((__v8sf) __A,
1746*67e74705SXin Li (__v8sf) __B,
1747*67e74705SXin Li (__v8sf) __C,
1748*67e74705SXin Li (__mmask8) __U);
1749*67e74705SXin Li }
1750*67e74705SXin Li
1751*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fmsubadd_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1752*67e74705SXin Li _mm_mask3_fmsubadd_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1753*67e74705SXin Li {
1754*67e74705SXin Li return (__m128d) __builtin_ia32_vfmsubaddpd128_mask3 ((__v2df) __A,
1755*67e74705SXin Li (__v2df) __B,
1756*67e74705SXin Li (__v2df) __C,
1757*67e74705SXin Li (__mmask8)
1758*67e74705SXin Li __U);
1759*67e74705SXin Li }
1760*67e74705SXin Li
1761*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fmsubadd_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1762*67e74705SXin Li _mm256_mask3_fmsubadd_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1763*67e74705SXin Li {
1764*67e74705SXin Li return (__m256d) __builtin_ia32_vfmsubaddpd256_mask3 ((__v4df) __A,
1765*67e74705SXin Li (__v4df) __B,
1766*67e74705SXin Li (__v4df) __C,
1767*67e74705SXin Li (__mmask8)
1768*67e74705SXin Li __U);
1769*67e74705SXin Li }
1770*67e74705SXin Li
1771*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fmsubadd_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1772*67e74705SXin Li _mm_mask3_fmsubadd_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1773*67e74705SXin Li {
1774*67e74705SXin Li return (__m128) __builtin_ia32_vfmsubaddps128_mask3 ((__v4sf) __A,
1775*67e74705SXin Li (__v4sf) __B,
1776*67e74705SXin Li (__v4sf) __C,
1777*67e74705SXin Li (__mmask8) __U);
1778*67e74705SXin Li }
1779*67e74705SXin Li
1780*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fmsubadd_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1781*67e74705SXin Li _mm256_mask3_fmsubadd_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1782*67e74705SXin Li {
1783*67e74705SXin Li return (__m256) __builtin_ia32_vfmsubaddps256_mask3 ((__v8sf) __A,
1784*67e74705SXin Li (__v8sf) __B,
1785*67e74705SXin Li (__v8sf) __C,
1786*67e74705SXin Li (__mmask8) __U);
1787*67e74705SXin Li }
1788*67e74705SXin Li
1789*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fnmadd_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1790*67e74705SXin Li _mm_mask_fnmadd_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1791*67e74705SXin Li {
1792*67e74705SXin Li return (__m128d) __builtin_ia32_vfnmaddpd128_mask ((__v2df) __A,
1793*67e74705SXin Li (__v2df) __B,
1794*67e74705SXin Li (__v2df) __C,
1795*67e74705SXin Li (__mmask8) __U);
1796*67e74705SXin Li }
1797*67e74705SXin Li
1798*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fnmadd_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1799*67e74705SXin Li _mm256_mask_fnmadd_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1800*67e74705SXin Li {
1801*67e74705SXin Li return (__m256d) __builtin_ia32_vfnmaddpd256_mask ((__v4df) __A,
1802*67e74705SXin Li (__v4df) __B,
1803*67e74705SXin Li (__v4df) __C,
1804*67e74705SXin Li (__mmask8) __U);
1805*67e74705SXin Li }
1806*67e74705SXin Li
1807*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fnmadd_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1808*67e74705SXin Li _mm_mask_fnmadd_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1809*67e74705SXin Li {
1810*67e74705SXin Li return (__m128) __builtin_ia32_vfnmaddps128_mask ((__v4sf) __A,
1811*67e74705SXin Li (__v4sf) __B,
1812*67e74705SXin Li (__v4sf) __C,
1813*67e74705SXin Li (__mmask8) __U);
1814*67e74705SXin Li }
1815*67e74705SXin Li
1816*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fnmadd_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1817*67e74705SXin Li _mm256_mask_fnmadd_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1818*67e74705SXin Li {
1819*67e74705SXin Li return (__m256) __builtin_ia32_vfnmaddps256_mask ((__v8sf) __A,
1820*67e74705SXin Li (__v8sf) __B,
1821*67e74705SXin Li (__v8sf) __C,
1822*67e74705SXin Li (__mmask8) __U);
1823*67e74705SXin Li }
1824*67e74705SXin Li
1825*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_fnmsub_pd(__m128d __A,__mmask8 __U,__m128d __B,__m128d __C)1826*67e74705SXin Li _mm_mask_fnmsub_pd(__m128d __A, __mmask8 __U, __m128d __B, __m128d __C)
1827*67e74705SXin Li {
1828*67e74705SXin Li return (__m128d) __builtin_ia32_vfnmsubpd128_mask ((__v2df) __A,
1829*67e74705SXin Li (__v2df) __B,
1830*67e74705SXin Li (__v2df) __C,
1831*67e74705SXin Li (__mmask8) __U);
1832*67e74705SXin Li }
1833*67e74705SXin Li
1834*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask3_fnmsub_pd(__m128d __A,__m128d __B,__m128d __C,__mmask8 __U)1835*67e74705SXin Li _mm_mask3_fnmsub_pd(__m128d __A, __m128d __B, __m128d __C, __mmask8 __U)
1836*67e74705SXin Li {
1837*67e74705SXin Li return (__m128d) __builtin_ia32_vfnmsubpd128_mask3 ((__v2df) __A,
1838*67e74705SXin Li (__v2df) __B,
1839*67e74705SXin Li (__v2df) __C,
1840*67e74705SXin Li (__mmask8) __U);
1841*67e74705SXin Li }
1842*67e74705SXin Li
1843*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_fnmsub_pd(__m256d __A,__mmask8 __U,__m256d __B,__m256d __C)1844*67e74705SXin Li _mm256_mask_fnmsub_pd(__m256d __A, __mmask8 __U, __m256d __B, __m256d __C)
1845*67e74705SXin Li {
1846*67e74705SXin Li return (__m256d) __builtin_ia32_vfnmsubpd256_mask ((__v4df) __A,
1847*67e74705SXin Li (__v4df) __B,
1848*67e74705SXin Li (__v4df) __C,
1849*67e74705SXin Li (__mmask8) __U);
1850*67e74705SXin Li }
1851*67e74705SXin Li
1852*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask3_fnmsub_pd(__m256d __A,__m256d __B,__m256d __C,__mmask8 __U)1853*67e74705SXin Li _mm256_mask3_fnmsub_pd(__m256d __A, __m256d __B, __m256d __C, __mmask8 __U)
1854*67e74705SXin Li {
1855*67e74705SXin Li return (__m256d) __builtin_ia32_vfnmsubpd256_mask3 ((__v4df) __A,
1856*67e74705SXin Li (__v4df) __B,
1857*67e74705SXin Li (__v4df) __C,
1858*67e74705SXin Li (__mmask8) __U);
1859*67e74705SXin Li }
1860*67e74705SXin Li
1861*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_fnmsub_ps(__m128 __A,__mmask8 __U,__m128 __B,__m128 __C)1862*67e74705SXin Li _mm_mask_fnmsub_ps(__m128 __A, __mmask8 __U, __m128 __B, __m128 __C)
1863*67e74705SXin Li {
1864*67e74705SXin Li return (__m128) __builtin_ia32_vfnmsubps128_mask ((__v4sf) __A,
1865*67e74705SXin Li (__v4sf) __B,
1866*67e74705SXin Li (__v4sf) __C,
1867*67e74705SXin Li (__mmask8) __U);
1868*67e74705SXin Li }
1869*67e74705SXin Li
1870*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask3_fnmsub_ps(__m128 __A,__m128 __B,__m128 __C,__mmask8 __U)1871*67e74705SXin Li _mm_mask3_fnmsub_ps(__m128 __A, __m128 __B, __m128 __C, __mmask8 __U)
1872*67e74705SXin Li {
1873*67e74705SXin Li return (__m128) __builtin_ia32_vfnmsubps128_mask3 ((__v4sf) __A,
1874*67e74705SXin Li (__v4sf) __B,
1875*67e74705SXin Li (__v4sf) __C,
1876*67e74705SXin Li (__mmask8) __U);
1877*67e74705SXin Li }
1878*67e74705SXin Li
1879*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_fnmsub_ps(__m256 __A,__mmask8 __U,__m256 __B,__m256 __C)1880*67e74705SXin Li _mm256_mask_fnmsub_ps(__m256 __A, __mmask8 __U, __m256 __B, __m256 __C)
1881*67e74705SXin Li {
1882*67e74705SXin Li return (__m256) __builtin_ia32_vfnmsubps256_mask ((__v8sf) __A,
1883*67e74705SXin Li (__v8sf) __B,
1884*67e74705SXin Li (__v8sf) __C,
1885*67e74705SXin Li (__mmask8) __U);
1886*67e74705SXin Li }
1887*67e74705SXin Li
1888*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask3_fnmsub_ps(__m256 __A,__m256 __B,__m256 __C,__mmask8 __U)1889*67e74705SXin Li _mm256_mask3_fnmsub_ps(__m256 __A, __m256 __B, __m256 __C, __mmask8 __U)
1890*67e74705SXin Li {
1891*67e74705SXin Li return (__m256) __builtin_ia32_vfnmsubps256_mask3 ((__v8sf) __A,
1892*67e74705SXin Li (__v8sf) __B,
1893*67e74705SXin Li (__v8sf) __C,
1894*67e74705SXin Li (__mmask8) __U);
1895*67e74705SXin Li }
1896*67e74705SXin Li
1897*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_add_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)1898*67e74705SXin Li _mm_mask_add_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
1899*67e74705SXin Li return (__m128d) __builtin_ia32_addpd128_mask ((__v2df) __A,
1900*67e74705SXin Li (__v2df) __B,
1901*67e74705SXin Li (__v2df) __W,
1902*67e74705SXin Li (__mmask8) __U);
1903*67e74705SXin Li }
1904*67e74705SXin Li
1905*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_add_pd(__mmask8 __U,__m128d __A,__m128d __B)1906*67e74705SXin Li _mm_maskz_add_pd (__mmask8 __U, __m128d __A, __m128d __B) {
1907*67e74705SXin Li return (__m128d) __builtin_ia32_addpd128_mask ((__v2df) __A,
1908*67e74705SXin Li (__v2df) __B,
1909*67e74705SXin Li (__v2df)
1910*67e74705SXin Li _mm_setzero_pd (),
1911*67e74705SXin Li (__mmask8) __U);
1912*67e74705SXin Li }
1913*67e74705SXin Li
1914*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_add_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)1915*67e74705SXin Li _mm256_mask_add_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
1916*67e74705SXin Li return (__m256d) __builtin_ia32_addpd256_mask ((__v4df) __A,
1917*67e74705SXin Li (__v4df) __B,
1918*67e74705SXin Li (__v4df) __W,
1919*67e74705SXin Li (__mmask8) __U);
1920*67e74705SXin Li }
1921*67e74705SXin Li
1922*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_add_pd(__mmask8 __U,__m256d __A,__m256d __B)1923*67e74705SXin Li _mm256_maskz_add_pd (__mmask8 __U, __m256d __A, __m256d __B) {
1924*67e74705SXin Li return (__m256d) __builtin_ia32_addpd256_mask ((__v4df) __A,
1925*67e74705SXin Li (__v4df) __B,
1926*67e74705SXin Li (__v4df)
1927*67e74705SXin Li _mm256_setzero_pd (),
1928*67e74705SXin Li (__mmask8) __U);
1929*67e74705SXin Li }
1930*67e74705SXin Li
1931*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_add_ps(__m128 __W,__mmask16 __U,__m128 __A,__m128 __B)1932*67e74705SXin Li _mm_mask_add_ps (__m128 __W, __mmask16 __U, __m128 __A, __m128 __B) {
1933*67e74705SXin Li return (__m128) __builtin_ia32_addps128_mask ((__v4sf) __A,
1934*67e74705SXin Li (__v4sf) __B,
1935*67e74705SXin Li (__v4sf) __W,
1936*67e74705SXin Li (__mmask8) __U);
1937*67e74705SXin Li }
1938*67e74705SXin Li
1939*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_add_ps(__mmask16 __U,__m128 __A,__m128 __B)1940*67e74705SXin Li _mm_maskz_add_ps (__mmask16 __U, __m128 __A, __m128 __B) {
1941*67e74705SXin Li return (__m128) __builtin_ia32_addps128_mask ((__v4sf) __A,
1942*67e74705SXin Li (__v4sf) __B,
1943*67e74705SXin Li (__v4sf)
1944*67e74705SXin Li _mm_setzero_ps (),
1945*67e74705SXin Li (__mmask8) __U);
1946*67e74705SXin Li }
1947*67e74705SXin Li
1948*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_add_ps(__m256 __W,__mmask16 __U,__m256 __A,__m256 __B)1949*67e74705SXin Li _mm256_mask_add_ps (__m256 __W, __mmask16 __U, __m256 __A, __m256 __B) {
1950*67e74705SXin Li return (__m256) __builtin_ia32_addps256_mask ((__v8sf) __A,
1951*67e74705SXin Li (__v8sf) __B,
1952*67e74705SXin Li (__v8sf) __W,
1953*67e74705SXin Li (__mmask8) __U);
1954*67e74705SXin Li }
1955*67e74705SXin Li
1956*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_add_ps(__mmask16 __U,__m256 __A,__m256 __B)1957*67e74705SXin Li _mm256_maskz_add_ps (__mmask16 __U, __m256 __A, __m256 __B) {
1958*67e74705SXin Li return (__m256) __builtin_ia32_addps256_mask ((__v8sf) __A,
1959*67e74705SXin Li (__v8sf) __B,
1960*67e74705SXin Li (__v8sf)
1961*67e74705SXin Li _mm256_setzero_ps (),
1962*67e74705SXin Li (__mmask8) __U);
1963*67e74705SXin Li }
1964*67e74705SXin Li
1965*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_blend_epi32(__mmask8 __U,__m128i __A,__m128i __W)1966*67e74705SXin Li _mm_mask_blend_epi32 (__mmask8 __U, __m128i __A, __m128i __W) {
1967*67e74705SXin Li return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
1968*67e74705SXin Li (__v4si) __W,
1969*67e74705SXin Li (__v4si) __A);
1970*67e74705SXin Li }
1971*67e74705SXin Li
1972*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_blend_epi32(__mmask8 __U,__m256i __A,__m256i __W)1973*67e74705SXin Li _mm256_mask_blend_epi32 (__mmask8 __U, __m256i __A, __m256i __W) {
1974*67e74705SXin Li return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
1975*67e74705SXin Li (__v8si) __W,
1976*67e74705SXin Li (__v8si) __A);
1977*67e74705SXin Li }
1978*67e74705SXin Li
1979*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_blend_pd(__mmask8 __U,__m128d __A,__m128d __W)1980*67e74705SXin Li _mm_mask_blend_pd (__mmask8 __U, __m128d __A, __m128d __W) {
1981*67e74705SXin Li return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
1982*67e74705SXin Li (__v2df) __W,
1983*67e74705SXin Li (__v2df) __A);
1984*67e74705SXin Li }
1985*67e74705SXin Li
1986*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_blend_pd(__mmask8 __U,__m256d __A,__m256d __W)1987*67e74705SXin Li _mm256_mask_blend_pd (__mmask8 __U, __m256d __A, __m256d __W) {
1988*67e74705SXin Li return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
1989*67e74705SXin Li (__v4df) __W,
1990*67e74705SXin Li (__v4df) __A);
1991*67e74705SXin Li }
1992*67e74705SXin Li
1993*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_blend_ps(__mmask8 __U,__m128 __A,__m128 __W)1994*67e74705SXin Li _mm_mask_blend_ps (__mmask8 __U, __m128 __A, __m128 __W) {
1995*67e74705SXin Li return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
1996*67e74705SXin Li (__v4sf) __W,
1997*67e74705SXin Li (__v4sf) __A);
1998*67e74705SXin Li }
1999*67e74705SXin Li
2000*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_blend_ps(__mmask8 __U,__m256 __A,__m256 __W)2001*67e74705SXin Li _mm256_mask_blend_ps (__mmask8 __U, __m256 __A, __m256 __W) {
2002*67e74705SXin Li return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
2003*67e74705SXin Li (__v8sf) __W,
2004*67e74705SXin Li (__v8sf) __A);
2005*67e74705SXin Li }
2006*67e74705SXin Li
2007*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_blend_epi64(__mmask8 __U,__m128i __A,__m128i __W)2008*67e74705SXin Li _mm_mask_blend_epi64 (__mmask8 __U, __m128i __A, __m128i __W) {
2009*67e74705SXin Li return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
2010*67e74705SXin Li (__v2di) __W,
2011*67e74705SXin Li (__v2di) __A);
2012*67e74705SXin Li }
2013*67e74705SXin Li
2014*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_blend_epi64(__mmask8 __U,__m256i __A,__m256i __W)2015*67e74705SXin Li _mm256_mask_blend_epi64 (__mmask8 __U, __m256i __A, __m256i __W) {
2016*67e74705SXin Li return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
2017*67e74705SXin Li (__v4di) __W,
2018*67e74705SXin Li (__v4di) __A);
2019*67e74705SXin Li }
2020*67e74705SXin Li
2021*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_compress_pd(__m128d __W,__mmask8 __U,__m128d __A)2022*67e74705SXin Li _mm_mask_compress_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2023*67e74705SXin Li return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
2024*67e74705SXin Li (__v2df) __W,
2025*67e74705SXin Li (__mmask8) __U);
2026*67e74705SXin Li }
2027*67e74705SXin Li
2028*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_compress_pd(__mmask8 __U,__m128d __A)2029*67e74705SXin Li _mm_maskz_compress_pd (__mmask8 __U, __m128d __A) {
2030*67e74705SXin Li return (__m128d) __builtin_ia32_compressdf128_mask ((__v2df) __A,
2031*67e74705SXin Li (__v2df)
2032*67e74705SXin Li _mm_setzero_pd (),
2033*67e74705SXin Li (__mmask8) __U);
2034*67e74705SXin Li }
2035*67e74705SXin Li
2036*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_compress_pd(__m256d __W,__mmask8 __U,__m256d __A)2037*67e74705SXin Li _mm256_mask_compress_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2038*67e74705SXin Li return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
2039*67e74705SXin Li (__v4df) __W,
2040*67e74705SXin Li (__mmask8) __U);
2041*67e74705SXin Li }
2042*67e74705SXin Li
2043*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_compress_pd(__mmask8 __U,__m256d __A)2044*67e74705SXin Li _mm256_maskz_compress_pd (__mmask8 __U, __m256d __A) {
2045*67e74705SXin Li return (__m256d) __builtin_ia32_compressdf256_mask ((__v4df) __A,
2046*67e74705SXin Li (__v4df)
2047*67e74705SXin Li _mm256_setzero_pd (),
2048*67e74705SXin Li (__mmask8) __U);
2049*67e74705SXin Li }
2050*67e74705SXin Li
2051*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_compress_epi64(__m128i __W,__mmask8 __U,__m128i __A)2052*67e74705SXin Li _mm_mask_compress_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2053*67e74705SXin Li return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
2054*67e74705SXin Li (__v2di) __W,
2055*67e74705SXin Li (__mmask8) __U);
2056*67e74705SXin Li }
2057*67e74705SXin Li
2058*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_compress_epi64(__mmask8 __U,__m128i __A)2059*67e74705SXin Li _mm_maskz_compress_epi64 (__mmask8 __U, __m128i __A) {
2060*67e74705SXin Li return (__m128i) __builtin_ia32_compressdi128_mask ((__v2di) __A,
2061*67e74705SXin Li (__v2di)
2062*67e74705SXin Li _mm_setzero_si128 (),
2063*67e74705SXin Li (__mmask8) __U);
2064*67e74705SXin Li }
2065*67e74705SXin Li
2066*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_compress_epi64(__m256i __W,__mmask8 __U,__m256i __A)2067*67e74705SXin Li _mm256_mask_compress_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2068*67e74705SXin Li return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
2069*67e74705SXin Li (__v4di) __W,
2070*67e74705SXin Li (__mmask8) __U);
2071*67e74705SXin Li }
2072*67e74705SXin Li
2073*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_compress_epi64(__mmask8 __U,__m256i __A)2074*67e74705SXin Li _mm256_maskz_compress_epi64 (__mmask8 __U, __m256i __A) {
2075*67e74705SXin Li return (__m256i) __builtin_ia32_compressdi256_mask ((__v4di) __A,
2076*67e74705SXin Li (__v4di)
2077*67e74705SXin Li _mm256_setzero_si256 (),
2078*67e74705SXin Li (__mmask8) __U);
2079*67e74705SXin Li }
2080*67e74705SXin Li
2081*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_compress_ps(__m128 __W,__mmask8 __U,__m128 __A)2082*67e74705SXin Li _mm_mask_compress_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2083*67e74705SXin Li return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
2084*67e74705SXin Li (__v4sf) __W,
2085*67e74705SXin Li (__mmask8) __U);
2086*67e74705SXin Li }
2087*67e74705SXin Li
2088*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_compress_ps(__mmask8 __U,__m128 __A)2089*67e74705SXin Li _mm_maskz_compress_ps (__mmask8 __U, __m128 __A) {
2090*67e74705SXin Li return (__m128) __builtin_ia32_compresssf128_mask ((__v4sf) __A,
2091*67e74705SXin Li (__v4sf)
2092*67e74705SXin Li _mm_setzero_ps (),
2093*67e74705SXin Li (__mmask8) __U);
2094*67e74705SXin Li }
2095*67e74705SXin Li
2096*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_compress_ps(__m256 __W,__mmask8 __U,__m256 __A)2097*67e74705SXin Li _mm256_mask_compress_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2098*67e74705SXin Li return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
2099*67e74705SXin Li (__v8sf) __W,
2100*67e74705SXin Li (__mmask8) __U);
2101*67e74705SXin Li }
2102*67e74705SXin Li
2103*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_compress_ps(__mmask8 __U,__m256 __A)2104*67e74705SXin Li _mm256_maskz_compress_ps (__mmask8 __U, __m256 __A) {
2105*67e74705SXin Li return (__m256) __builtin_ia32_compresssf256_mask ((__v8sf) __A,
2106*67e74705SXin Li (__v8sf)
2107*67e74705SXin Li _mm256_setzero_ps (),
2108*67e74705SXin Li (__mmask8) __U);
2109*67e74705SXin Li }
2110*67e74705SXin Li
2111*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_compress_epi32(__m128i __W,__mmask8 __U,__m128i __A)2112*67e74705SXin Li _mm_mask_compress_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
2113*67e74705SXin Li return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
2114*67e74705SXin Li (__v4si) __W,
2115*67e74705SXin Li (__mmask8) __U);
2116*67e74705SXin Li }
2117*67e74705SXin Li
2118*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_compress_epi32(__mmask8 __U,__m128i __A)2119*67e74705SXin Li _mm_maskz_compress_epi32 (__mmask8 __U, __m128i __A) {
2120*67e74705SXin Li return (__m128i) __builtin_ia32_compresssi128_mask ((__v4si) __A,
2121*67e74705SXin Li (__v4si)
2122*67e74705SXin Li _mm_setzero_si128 (),
2123*67e74705SXin Li (__mmask8) __U);
2124*67e74705SXin Li }
2125*67e74705SXin Li
2126*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_compress_epi32(__m256i __W,__mmask8 __U,__m256i __A)2127*67e74705SXin Li _mm256_mask_compress_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
2128*67e74705SXin Li return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
2129*67e74705SXin Li (__v8si) __W,
2130*67e74705SXin Li (__mmask8) __U);
2131*67e74705SXin Li }
2132*67e74705SXin Li
2133*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_compress_epi32(__mmask8 __U,__m256i __A)2134*67e74705SXin Li _mm256_maskz_compress_epi32 (__mmask8 __U, __m256i __A) {
2135*67e74705SXin Li return (__m256i) __builtin_ia32_compresssi256_mask ((__v8si) __A,
2136*67e74705SXin Li (__v8si)
2137*67e74705SXin Li _mm256_setzero_si256 (),
2138*67e74705SXin Li (__mmask8) __U);
2139*67e74705SXin Li }
2140*67e74705SXin Li
2141*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m128d __A)2142*67e74705SXin Li _mm_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m128d __A) {
2143*67e74705SXin Li __builtin_ia32_compressstoredf128_mask ((__v2df *) __P,
2144*67e74705SXin Li (__v2df) __A,
2145*67e74705SXin Li (__mmask8) __U);
2146*67e74705SXin Li }
2147*67e74705SXin Li
2148*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_compressstoreu_pd(void * __P,__mmask8 __U,__m256d __A)2149*67e74705SXin Li _mm256_mask_compressstoreu_pd (void *__P, __mmask8 __U, __m256d __A) {
2150*67e74705SXin Li __builtin_ia32_compressstoredf256_mask ((__v4df *) __P,
2151*67e74705SXin Li (__v4df) __A,
2152*67e74705SXin Li (__mmask8) __U);
2153*67e74705SXin Li }
2154*67e74705SXin Li
2155*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m128i __A)2156*67e74705SXin Li _mm_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m128i __A) {
2157*67e74705SXin Li __builtin_ia32_compressstoredi128_mask ((__v2di *) __P,
2158*67e74705SXin Li (__v2di) __A,
2159*67e74705SXin Li (__mmask8) __U);
2160*67e74705SXin Li }
2161*67e74705SXin Li
2162*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_compressstoreu_epi64(void * __P,__mmask8 __U,__m256i __A)2163*67e74705SXin Li _mm256_mask_compressstoreu_epi64 (void *__P, __mmask8 __U, __m256i __A) {
2164*67e74705SXin Li __builtin_ia32_compressstoredi256_mask ((__v4di *) __P,
2165*67e74705SXin Li (__v4di) __A,
2166*67e74705SXin Li (__mmask8) __U);
2167*67e74705SXin Li }
2168*67e74705SXin Li
2169*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_compressstoreu_ps(void * __P,__mmask8 __U,__m128 __A)2170*67e74705SXin Li _mm_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m128 __A) {
2171*67e74705SXin Li __builtin_ia32_compressstoresf128_mask ((__v4sf *) __P,
2172*67e74705SXin Li (__v4sf) __A,
2173*67e74705SXin Li (__mmask8) __U);
2174*67e74705SXin Li }
2175*67e74705SXin Li
2176*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_compressstoreu_ps(void * __P,__mmask8 __U,__m256 __A)2177*67e74705SXin Li _mm256_mask_compressstoreu_ps (void *__P, __mmask8 __U, __m256 __A) {
2178*67e74705SXin Li __builtin_ia32_compressstoresf256_mask ((__v8sf *) __P,
2179*67e74705SXin Li (__v8sf) __A,
2180*67e74705SXin Li (__mmask8) __U);
2181*67e74705SXin Li }
2182*67e74705SXin Li
2183*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_compressstoreu_epi32(void * __P,__mmask8 __U,__m128i __A)2184*67e74705SXin Li _mm_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m128i __A) {
2185*67e74705SXin Li __builtin_ia32_compressstoresi128_mask ((__v4si *) __P,
2186*67e74705SXin Li (__v4si) __A,
2187*67e74705SXin Li (__mmask8) __U);
2188*67e74705SXin Li }
2189*67e74705SXin Li
2190*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_compressstoreu_epi32(void * __P,__mmask8 __U,__m256i __A)2191*67e74705SXin Li _mm256_mask_compressstoreu_epi32 (void *__P, __mmask8 __U, __m256i __A) {
2192*67e74705SXin Li __builtin_ia32_compressstoresi256_mask ((__v8si *) __P,
2193*67e74705SXin Li (__v8si) __A,
2194*67e74705SXin Li (__mmask8) __U);
2195*67e74705SXin Li }
2196*67e74705SXin Li
2197*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_pd(__m128d __W,__mmask8 __U,__m128i __A)2198*67e74705SXin Li _mm_mask_cvtepi32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
2199*67e74705SXin Li return (__m128d) __builtin_ia32_cvtdq2pd128_mask ((__v4si) __A,
2200*67e74705SXin Li (__v2df) __W,
2201*67e74705SXin Li (__mmask8) __U);
2202*67e74705SXin Li }
2203*67e74705SXin Li
2204*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi32_pd(__mmask8 __U,__m128i __A)2205*67e74705SXin Li _mm_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
2206*67e74705SXin Li return (__m128d) __builtin_ia32_cvtdq2pd128_mask ((__v4si) __A,
2207*67e74705SXin Li (__v2df)
2208*67e74705SXin Li _mm_setzero_pd (),
2209*67e74705SXin Li (__mmask8) __U);
2210*67e74705SXin Li }
2211*67e74705SXin Li
2212*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_pd(__m256d __W,__mmask8 __U,__m128i __A)2213*67e74705SXin Li _mm256_mask_cvtepi32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
2214*67e74705SXin Li return (__m256d) __builtin_ia32_cvtdq2pd256_mask ((__v4si) __A,
2215*67e74705SXin Li (__v4df) __W,
2216*67e74705SXin Li (__mmask8) __U);
2217*67e74705SXin Li }
2218*67e74705SXin Li
2219*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi32_pd(__mmask8 __U,__m128i __A)2220*67e74705SXin Li _mm256_maskz_cvtepi32_pd (__mmask8 __U, __m128i __A) {
2221*67e74705SXin Li return (__m256d) __builtin_ia32_cvtdq2pd256_mask ((__v4si) __A,
2222*67e74705SXin Li (__v4df)
2223*67e74705SXin Li _mm256_setzero_pd (),
2224*67e74705SXin Li (__mmask8) __U);
2225*67e74705SXin Li }
2226*67e74705SXin Li
2227*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_ps(__m128 __W,__mmask8 __U,__m128i __A)2228*67e74705SXin Li _mm_mask_cvtepi32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2229*67e74705SXin Li return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
2230*67e74705SXin Li (__v4sf) __W,
2231*67e74705SXin Li (__mmask8) __U);
2232*67e74705SXin Li }
2233*67e74705SXin Li
2234*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi32_ps(__mmask16 __U,__m128i __A)2235*67e74705SXin Li _mm_maskz_cvtepi32_ps (__mmask16 __U, __m128i __A) {
2236*67e74705SXin Li return (__m128) __builtin_ia32_cvtdq2ps128_mask ((__v4si) __A,
2237*67e74705SXin Li (__v4sf)
2238*67e74705SXin Li _mm_setzero_ps (),
2239*67e74705SXin Li (__mmask8) __U);
2240*67e74705SXin Li }
2241*67e74705SXin Li
2242*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_ps(__m256 __W,__mmask8 __U,__m256i __A)2243*67e74705SXin Li _mm256_mask_cvtepi32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2244*67e74705SXin Li return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
2245*67e74705SXin Li (__v8sf) __W,
2246*67e74705SXin Li (__mmask8) __U);
2247*67e74705SXin Li }
2248*67e74705SXin Li
2249*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi32_ps(__mmask16 __U,__m256i __A)2250*67e74705SXin Li _mm256_maskz_cvtepi32_ps (__mmask16 __U, __m256i __A) {
2251*67e74705SXin Li return (__m256) __builtin_ia32_cvtdq2ps256_mask ((__v8si) __A,
2252*67e74705SXin Li (__v8sf)
2253*67e74705SXin Li _mm256_setzero_ps (),
2254*67e74705SXin Li (__mmask8) __U);
2255*67e74705SXin Li }
2256*67e74705SXin Li
2257*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtpd_epi32(__m128i __W,__mmask8 __U,__m128d __A)2258*67e74705SXin Li _mm_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2259*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
2260*67e74705SXin Li (__v4si) __W,
2261*67e74705SXin Li (__mmask8) __U);
2262*67e74705SXin Li }
2263*67e74705SXin Li
2264*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtpd_epi32(__mmask8 __U,__m128d __A)2265*67e74705SXin Li _mm_maskz_cvtpd_epi32 (__mmask8 __U, __m128d __A) {
2266*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2dq128_mask ((__v2df) __A,
2267*67e74705SXin Li (__v4si)
2268*67e74705SXin Li _mm_setzero_si128 (),
2269*67e74705SXin Li (__mmask8) __U);
2270*67e74705SXin Li }
2271*67e74705SXin Li
2272*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtpd_epi32(__m128i __W,__mmask8 __U,__m256d __A)2273*67e74705SXin Li _mm256_mask_cvtpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
2274*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
2275*67e74705SXin Li (__v4si) __W,
2276*67e74705SXin Li (__mmask8) __U);
2277*67e74705SXin Li }
2278*67e74705SXin Li
2279*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtpd_epi32(__mmask8 __U,__m256d __A)2280*67e74705SXin Li _mm256_maskz_cvtpd_epi32 (__mmask8 __U, __m256d __A) {
2281*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2dq256_mask ((__v4df) __A,
2282*67e74705SXin Li (__v4si)
2283*67e74705SXin Li _mm_setzero_si128 (),
2284*67e74705SXin Li (__mmask8) __U);
2285*67e74705SXin Li }
2286*67e74705SXin Li
2287*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtpd_ps(__m128 __W,__mmask8 __U,__m128d __A)2288*67e74705SXin Li _mm_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m128d __A) {
2289*67e74705SXin Li return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
2290*67e74705SXin Li (__v4sf) __W,
2291*67e74705SXin Li (__mmask8) __U);
2292*67e74705SXin Li }
2293*67e74705SXin Li
2294*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtpd_ps(__mmask8 __U,__m128d __A)2295*67e74705SXin Li _mm_maskz_cvtpd_ps (__mmask8 __U, __m128d __A) {
2296*67e74705SXin Li return (__m128) __builtin_ia32_cvtpd2ps_mask ((__v2df) __A,
2297*67e74705SXin Li (__v4sf)
2298*67e74705SXin Li _mm_setzero_ps (),
2299*67e74705SXin Li (__mmask8) __U);
2300*67e74705SXin Li }
2301*67e74705SXin Li
2302*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_mask_cvtpd_ps(__m128 __W,__mmask8 __U,__m256d __A)2303*67e74705SXin Li _mm256_mask_cvtpd_ps (__m128 __W, __mmask8 __U, __m256d __A) {
2304*67e74705SXin Li return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
2305*67e74705SXin Li (__v4sf) __W,
2306*67e74705SXin Li (__mmask8) __U);
2307*67e74705SXin Li }
2308*67e74705SXin Li
2309*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtpd_ps(__mmask8 __U,__m256d __A)2310*67e74705SXin Li _mm256_maskz_cvtpd_ps (__mmask8 __U, __m256d __A) {
2311*67e74705SXin Li return (__m128) __builtin_ia32_cvtpd2ps256_mask ((__v4df) __A,
2312*67e74705SXin Li (__v4sf)
2313*67e74705SXin Li _mm_setzero_ps (),
2314*67e74705SXin Li (__mmask8) __U);
2315*67e74705SXin Li }
2316*67e74705SXin Li
2317*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtpd_epu32(__m128d __A)2318*67e74705SXin Li _mm_cvtpd_epu32 (__m128d __A) {
2319*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2320*67e74705SXin Li (__v4si)
2321*67e74705SXin Li _mm_setzero_si128 (),
2322*67e74705SXin Li (__mmask8) -1);
2323*67e74705SXin Li }
2324*67e74705SXin Li
2325*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtpd_epu32(__m128i __W,__mmask8 __U,__m128d __A)2326*67e74705SXin Li _mm_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2327*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2328*67e74705SXin Li (__v4si) __W,
2329*67e74705SXin Li (__mmask8) __U);
2330*67e74705SXin Li }
2331*67e74705SXin Li
2332*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtpd_epu32(__mmask8 __U,__m128d __A)2333*67e74705SXin Li _mm_maskz_cvtpd_epu32 (__mmask8 __U, __m128d __A) {
2334*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq128_mask ((__v2df) __A,
2335*67e74705SXin Li (__v4si)
2336*67e74705SXin Li _mm_setzero_si128 (),
2337*67e74705SXin Li (__mmask8) __U);
2338*67e74705SXin Li }
2339*67e74705SXin Li
2340*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtpd_epu32(__m256d __A)2341*67e74705SXin Li _mm256_cvtpd_epu32 (__m256d __A) {
2342*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2343*67e74705SXin Li (__v4si)
2344*67e74705SXin Li _mm_setzero_si128 (),
2345*67e74705SXin Li (__mmask8) -1);
2346*67e74705SXin Li }
2347*67e74705SXin Li
2348*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtpd_epu32(__m128i __W,__mmask8 __U,__m256d __A)2349*67e74705SXin Li _mm256_mask_cvtpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2350*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2351*67e74705SXin Li (__v4si) __W,
2352*67e74705SXin Li (__mmask8) __U);
2353*67e74705SXin Li }
2354*67e74705SXin Li
2355*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtpd_epu32(__mmask8 __U,__m256d __A)2356*67e74705SXin Li _mm256_maskz_cvtpd_epu32 (__mmask8 __U, __m256d __A) {
2357*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2udq256_mask ((__v4df) __A,
2358*67e74705SXin Li (__v4si)
2359*67e74705SXin Li _mm_setzero_si128 (),
2360*67e74705SXin Li (__mmask8) __U);
2361*67e74705SXin Li }
2362*67e74705SXin Li
2363*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtps_epi32(__m128i __W,__mmask8 __U,__m128 __A)2364*67e74705SXin Li _mm_mask_cvtps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
2365*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
2366*67e74705SXin Li (__v4si) __W,
2367*67e74705SXin Li (__mmask8) __U);
2368*67e74705SXin Li }
2369*67e74705SXin Li
2370*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_epi32(__mmask8 __U,__m128 __A)2371*67e74705SXin Li _mm_maskz_cvtps_epi32 (__mmask8 __U, __m128 __A) {
2372*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2dq128_mask ((__v4sf) __A,
2373*67e74705SXin Li (__v4si)
2374*67e74705SXin Li _mm_setzero_si128 (),
2375*67e74705SXin Li (__mmask8) __U);
2376*67e74705SXin Li }
2377*67e74705SXin Li
2378*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_epi32(__m256i __W,__mmask8 __U,__m256 __A)2379*67e74705SXin Li _mm256_mask_cvtps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
2380*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
2381*67e74705SXin Li (__v8si) __W,
2382*67e74705SXin Li (__mmask8) __U);
2383*67e74705SXin Li }
2384*67e74705SXin Li
2385*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_epi32(__mmask8 __U,__m256 __A)2386*67e74705SXin Li _mm256_maskz_cvtps_epi32 (__mmask8 __U, __m256 __A) {
2387*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2dq256_mask ((__v8sf) __A,
2388*67e74705SXin Li (__v8si)
2389*67e74705SXin Li _mm256_setzero_si256 (),
2390*67e74705SXin Li (__mmask8) __U);
2391*67e74705SXin Li }
2392*67e74705SXin Li
2393*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_cvtps_pd(__m128d __W,__mmask8 __U,__m128 __A)2394*67e74705SXin Li _mm_mask_cvtps_pd (__m128d __W, __mmask8 __U, __m128 __A) {
2395*67e74705SXin Li return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
2396*67e74705SXin Li (__v2df) __W,
2397*67e74705SXin Li (__mmask8) __U);
2398*67e74705SXin Li }
2399*67e74705SXin Li
2400*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_pd(__mmask8 __U,__m128 __A)2401*67e74705SXin Li _mm_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
2402*67e74705SXin Li return (__m128d) __builtin_ia32_cvtps2pd128_mask ((__v4sf) __A,
2403*67e74705SXin Li (__v2df)
2404*67e74705SXin Li _mm_setzero_pd (),
2405*67e74705SXin Li (__mmask8) __U);
2406*67e74705SXin Li }
2407*67e74705SXin Li
2408*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_pd(__m256d __W,__mmask8 __U,__m128 __A)2409*67e74705SXin Li _mm256_mask_cvtps_pd (__m256d __W, __mmask8 __U, __m128 __A) {
2410*67e74705SXin Li return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
2411*67e74705SXin Li (__v4df) __W,
2412*67e74705SXin Li (__mmask8) __U);
2413*67e74705SXin Li }
2414*67e74705SXin Li
2415*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_pd(__mmask8 __U,__m128 __A)2416*67e74705SXin Li _mm256_maskz_cvtps_pd (__mmask8 __U, __m128 __A) {
2417*67e74705SXin Li return (__m256d) __builtin_ia32_cvtps2pd256_mask ((__v4sf) __A,
2418*67e74705SXin Li (__v4df)
2419*67e74705SXin Li _mm256_setzero_pd (),
2420*67e74705SXin Li (__mmask8) __U);
2421*67e74705SXin Li }
2422*67e74705SXin Li
2423*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtps_epu32(__m128 __A)2424*67e74705SXin Li _mm_cvtps_epu32 (__m128 __A) {
2425*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2426*67e74705SXin Li (__v4si)
2427*67e74705SXin Li _mm_setzero_si128 (),
2428*67e74705SXin Li (__mmask8) -1);
2429*67e74705SXin Li }
2430*67e74705SXin Li
2431*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtps_epu32(__m128i __W,__mmask8 __U,__m128 __A)2432*67e74705SXin Li _mm_mask_cvtps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2433*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2434*67e74705SXin Li (__v4si) __W,
2435*67e74705SXin Li (__mmask8) __U);
2436*67e74705SXin Li }
2437*67e74705SXin Li
2438*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_epu32(__mmask8 __U,__m128 __A)2439*67e74705SXin Li _mm_maskz_cvtps_epu32 (__mmask8 __U, __m128 __A) {
2440*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2udq128_mask ((__v4sf) __A,
2441*67e74705SXin Li (__v4si)
2442*67e74705SXin Li _mm_setzero_si128 (),
2443*67e74705SXin Li (__mmask8) __U);
2444*67e74705SXin Li }
2445*67e74705SXin Li
2446*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtps_epu32(__m256 __A)2447*67e74705SXin Li _mm256_cvtps_epu32 (__m256 __A) {
2448*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2449*67e74705SXin Li (__v8si)
2450*67e74705SXin Li _mm256_setzero_si256 (),
2451*67e74705SXin Li (__mmask8) -1);
2452*67e74705SXin Li }
2453*67e74705SXin Li
2454*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_epu32(__m256i __W,__mmask8 __U,__m256 __A)2455*67e74705SXin Li _mm256_mask_cvtps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2456*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2457*67e74705SXin Li (__v8si) __W,
2458*67e74705SXin Li (__mmask8) __U);
2459*67e74705SXin Li }
2460*67e74705SXin Li
2461*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_epu32(__mmask8 __U,__m256 __A)2462*67e74705SXin Li _mm256_maskz_cvtps_epu32 (__mmask8 __U, __m256 __A) {
2463*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2udq256_mask ((__v8sf) __A,
2464*67e74705SXin Li (__v8si)
2465*67e74705SXin Li _mm256_setzero_si256 (),
2466*67e74705SXin Li (__mmask8) __U);
2467*67e74705SXin Li }
2468*67e74705SXin Li
2469*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttpd_epi32(__m128i __W,__mmask8 __U,__m128d __A)2470*67e74705SXin Li _mm_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m128d __A) {
2471*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2472*67e74705SXin Li (__v4si) __W,
2473*67e74705SXin Li (__mmask8) __U);
2474*67e74705SXin Li }
2475*67e74705SXin Li
2476*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttpd_epi32(__mmask8 __U,__m128d __A)2477*67e74705SXin Li _mm_maskz_cvttpd_epi32 (__mmask8 __U, __m128d __A) {
2478*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2dq128_mask ((__v2df) __A,
2479*67e74705SXin Li (__v4si)
2480*67e74705SXin Li _mm_setzero_si128 (),
2481*67e74705SXin Li (__mmask8) __U);
2482*67e74705SXin Li }
2483*67e74705SXin Li
2484*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvttpd_epi32(__m128i __W,__mmask8 __U,__m256d __A)2485*67e74705SXin Li _mm256_mask_cvttpd_epi32 (__m128i __W, __mmask8 __U, __m256d __A) {
2486*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2487*67e74705SXin Li (__v4si) __W,
2488*67e74705SXin Li (__mmask8) __U);
2489*67e74705SXin Li }
2490*67e74705SXin Li
2491*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttpd_epi32(__mmask8 __U,__m256d __A)2492*67e74705SXin Li _mm256_maskz_cvttpd_epi32 (__mmask8 __U, __m256d __A) {
2493*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2dq256_mask ((__v4df) __A,
2494*67e74705SXin Li (__v4si)
2495*67e74705SXin Li _mm_setzero_si128 (),
2496*67e74705SXin Li (__mmask8) __U);
2497*67e74705SXin Li }
2498*67e74705SXin Li
2499*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttpd_epu32(__m128d __A)2500*67e74705SXin Li _mm_cvttpd_epu32 (__m128d __A) {
2501*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2502*67e74705SXin Li (__v4si)
2503*67e74705SXin Li _mm_setzero_si128 (),
2504*67e74705SXin Li (__mmask8) -1);
2505*67e74705SXin Li }
2506*67e74705SXin Li
2507*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttpd_epu32(__m128i __W,__mmask8 __U,__m128d __A)2508*67e74705SXin Li _mm_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m128d __A) {
2509*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2510*67e74705SXin Li (__v4si) __W,
2511*67e74705SXin Li (__mmask8) __U);
2512*67e74705SXin Li }
2513*67e74705SXin Li
2514*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttpd_epu32(__mmask8 __U,__m128d __A)2515*67e74705SXin Li _mm_maskz_cvttpd_epu32 (__mmask8 __U, __m128d __A) {
2516*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq128_mask ((__v2df) __A,
2517*67e74705SXin Li (__v4si)
2518*67e74705SXin Li _mm_setzero_si128 (),
2519*67e74705SXin Li (__mmask8) __U);
2520*67e74705SXin Li }
2521*67e74705SXin Li
2522*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvttpd_epu32(__m256d __A)2523*67e74705SXin Li _mm256_cvttpd_epu32 (__m256d __A) {
2524*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2525*67e74705SXin Li (__v4si)
2526*67e74705SXin Li _mm_setzero_si128 (),
2527*67e74705SXin Li (__mmask8) -1);
2528*67e74705SXin Li }
2529*67e74705SXin Li
2530*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvttpd_epu32(__m128i __W,__mmask8 __U,__m256d __A)2531*67e74705SXin Li _mm256_mask_cvttpd_epu32 (__m128i __W, __mmask8 __U, __m256d __A) {
2532*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2533*67e74705SXin Li (__v4si) __W,
2534*67e74705SXin Li (__mmask8) __U);
2535*67e74705SXin Li }
2536*67e74705SXin Li
2537*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttpd_epu32(__mmask8 __U,__m256d __A)2538*67e74705SXin Li _mm256_maskz_cvttpd_epu32 (__mmask8 __U, __m256d __A) {
2539*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2udq256_mask ((__v4df) __A,
2540*67e74705SXin Li (__v4si)
2541*67e74705SXin Li _mm_setzero_si128 (),
2542*67e74705SXin Li (__mmask8) __U);
2543*67e74705SXin Li }
2544*67e74705SXin Li
2545*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttps_epi32(__m128i __W,__mmask8 __U,__m128 __A)2546*67e74705SXin Li _mm_mask_cvttps_epi32 (__m128i __W, __mmask8 __U, __m128 __A) {
2547*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2548*67e74705SXin Li (__v4si) __W,
2549*67e74705SXin Li (__mmask8) __U);
2550*67e74705SXin Li }
2551*67e74705SXin Li
2552*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttps_epi32(__mmask8 __U,__m128 __A)2553*67e74705SXin Li _mm_maskz_cvttps_epi32 (__mmask8 __U, __m128 __A) {
2554*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2dq128_mask ((__v4sf) __A,
2555*67e74705SXin Li (__v4si)
2556*67e74705SXin Li _mm_setzero_si128 (),
2557*67e74705SXin Li (__mmask8) __U);
2558*67e74705SXin Li }
2559*67e74705SXin Li
2560*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttps_epi32(__m256i __W,__mmask8 __U,__m256 __A)2561*67e74705SXin Li _mm256_mask_cvttps_epi32 (__m256i __W, __mmask8 __U, __m256 __A) {
2562*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2563*67e74705SXin Li (__v8si) __W,
2564*67e74705SXin Li (__mmask8) __U);
2565*67e74705SXin Li }
2566*67e74705SXin Li
2567*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttps_epi32(__mmask8 __U,__m256 __A)2568*67e74705SXin Li _mm256_maskz_cvttps_epi32 (__mmask8 __U, __m256 __A) {
2569*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2dq256_mask ((__v8sf) __A,
2570*67e74705SXin Li (__v8si)
2571*67e74705SXin Li _mm256_setzero_si256 (),
2572*67e74705SXin Li (__mmask8) __U);
2573*67e74705SXin Li }
2574*67e74705SXin Li
2575*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttps_epu32(__m128 __A)2576*67e74705SXin Li _mm_cvttps_epu32 (__m128 __A) {
2577*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2578*67e74705SXin Li (__v4si)
2579*67e74705SXin Li _mm_setzero_si128 (),
2580*67e74705SXin Li (__mmask8) -1);
2581*67e74705SXin Li }
2582*67e74705SXin Li
2583*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttps_epu32(__m128i __W,__mmask8 __U,__m128 __A)2584*67e74705SXin Li _mm_mask_cvttps_epu32 (__m128i __W, __mmask8 __U, __m128 __A) {
2585*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2586*67e74705SXin Li (__v4si) __W,
2587*67e74705SXin Li (__mmask8) __U);
2588*67e74705SXin Li }
2589*67e74705SXin Li
2590*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttps_epu32(__mmask8 __U,__m128 __A)2591*67e74705SXin Li _mm_maskz_cvttps_epu32 (__mmask8 __U, __m128 __A) {
2592*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2udq128_mask ((__v4sf) __A,
2593*67e74705SXin Li (__v4si)
2594*67e74705SXin Li _mm_setzero_si128 (),
2595*67e74705SXin Li (__mmask8) __U);
2596*67e74705SXin Li }
2597*67e74705SXin Li
2598*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvttps_epu32(__m256 __A)2599*67e74705SXin Li _mm256_cvttps_epu32 (__m256 __A) {
2600*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2601*67e74705SXin Li (__v8si)
2602*67e74705SXin Li _mm256_setzero_si256 (),
2603*67e74705SXin Li (__mmask8) -1);
2604*67e74705SXin Li }
2605*67e74705SXin Li
2606*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttps_epu32(__m256i __W,__mmask8 __U,__m256 __A)2607*67e74705SXin Li _mm256_mask_cvttps_epu32 (__m256i __W, __mmask8 __U, __m256 __A) {
2608*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2609*67e74705SXin Li (__v8si) __W,
2610*67e74705SXin Li (__mmask8) __U);
2611*67e74705SXin Li }
2612*67e74705SXin Li
2613*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttps_epu32(__mmask8 __U,__m256 __A)2614*67e74705SXin Li _mm256_maskz_cvttps_epu32 (__mmask8 __U, __m256 __A) {
2615*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2udq256_mask ((__v8sf) __A,
2616*67e74705SXin Li (__v8si)
2617*67e74705SXin Li _mm256_setzero_si256 (),
2618*67e74705SXin Li (__mmask8) __U);
2619*67e74705SXin Li }
2620*67e74705SXin Li
2621*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_cvtepu32_pd(__m128i __A)2622*67e74705SXin Li _mm_cvtepu32_pd (__m128i __A) {
2623*67e74705SXin Li return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
2624*67e74705SXin Li (__v2df)
2625*67e74705SXin Li _mm_setzero_pd (),
2626*67e74705SXin Li (__mmask8) -1);
2627*67e74705SXin Li }
2628*67e74705SXin Li
2629*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_cvtepu32_pd(__m128d __W,__mmask8 __U,__m128i __A)2630*67e74705SXin Li _mm_mask_cvtepu32_pd (__m128d __W, __mmask8 __U, __m128i __A) {
2631*67e74705SXin Li return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
2632*67e74705SXin Li (__v2df) __W,
2633*67e74705SXin Li (__mmask8) __U);
2634*67e74705SXin Li }
2635*67e74705SXin Li
2636*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu32_pd(__mmask8 __U,__m128i __A)2637*67e74705SXin Li _mm_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
2638*67e74705SXin Li return (__m128d) __builtin_ia32_cvtudq2pd128_mask ((__v4si) __A,
2639*67e74705SXin Li (__v2df)
2640*67e74705SXin Li _mm_setzero_pd (),
2641*67e74705SXin Li (__mmask8) __U);
2642*67e74705SXin Li }
2643*67e74705SXin Li
2644*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_cvtepu32_pd(__m128i __A)2645*67e74705SXin Li _mm256_cvtepu32_pd (__m128i __A) {
2646*67e74705SXin Li return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
2647*67e74705SXin Li (__v4df)
2648*67e74705SXin Li _mm256_setzero_pd (),
2649*67e74705SXin Li (__mmask8) -1);
2650*67e74705SXin Li }
2651*67e74705SXin Li
2652*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu32_pd(__m256d __W,__mmask8 __U,__m128i __A)2653*67e74705SXin Li _mm256_mask_cvtepu32_pd (__m256d __W, __mmask8 __U, __m128i __A) {
2654*67e74705SXin Li return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
2655*67e74705SXin Li (__v4df) __W,
2656*67e74705SXin Li (__mmask8) __U);
2657*67e74705SXin Li }
2658*67e74705SXin Li
2659*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu32_pd(__mmask8 __U,__m128i __A)2660*67e74705SXin Li _mm256_maskz_cvtepu32_pd (__mmask8 __U, __m128i __A) {
2661*67e74705SXin Li return (__m256d) __builtin_ia32_cvtudq2pd256_mask ((__v4si) __A,
2662*67e74705SXin Li (__v4df)
2663*67e74705SXin Li _mm256_setzero_pd (),
2664*67e74705SXin Li (__mmask8) __U);
2665*67e74705SXin Li }
2666*67e74705SXin Li
2667*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_cvtepu32_ps(__m128i __A)2668*67e74705SXin Li _mm_cvtepu32_ps (__m128i __A) {
2669*67e74705SXin Li return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2670*67e74705SXin Li (__v4sf)
2671*67e74705SXin Li _mm_setzero_ps (),
2672*67e74705SXin Li (__mmask8) -1);
2673*67e74705SXin Li }
2674*67e74705SXin Li
2675*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtepu32_ps(__m128 __W,__mmask8 __U,__m128i __A)2676*67e74705SXin Li _mm_mask_cvtepu32_ps (__m128 __W, __mmask8 __U, __m128i __A) {
2677*67e74705SXin Li return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2678*67e74705SXin Li (__v4sf) __W,
2679*67e74705SXin Li (__mmask8) __U);
2680*67e74705SXin Li }
2681*67e74705SXin Li
2682*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu32_ps(__mmask8 __U,__m128i __A)2683*67e74705SXin Li _mm_maskz_cvtepu32_ps (__mmask8 __U, __m128i __A) {
2684*67e74705SXin Li return (__m128) __builtin_ia32_cvtudq2ps128_mask ((__v4si) __A,
2685*67e74705SXin Li (__v4sf)
2686*67e74705SXin Li _mm_setzero_ps (),
2687*67e74705SXin Li (__mmask8) __U);
2688*67e74705SXin Li }
2689*67e74705SXin Li
2690*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_cvtepu32_ps(__m256i __A)2691*67e74705SXin Li _mm256_cvtepu32_ps (__m256i __A) {
2692*67e74705SXin Li return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2693*67e74705SXin Li (__v8sf)
2694*67e74705SXin Li _mm256_setzero_ps (),
2695*67e74705SXin Li (__mmask8) -1);
2696*67e74705SXin Li }
2697*67e74705SXin Li
2698*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu32_ps(__m256 __W,__mmask8 __U,__m256i __A)2699*67e74705SXin Li _mm256_mask_cvtepu32_ps (__m256 __W, __mmask8 __U, __m256i __A) {
2700*67e74705SXin Li return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2701*67e74705SXin Li (__v8sf) __W,
2702*67e74705SXin Li (__mmask8) __U);
2703*67e74705SXin Li }
2704*67e74705SXin Li
2705*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu32_ps(__mmask8 __U,__m256i __A)2706*67e74705SXin Li _mm256_maskz_cvtepu32_ps (__mmask8 __U, __m256i __A) {
2707*67e74705SXin Li return (__m256) __builtin_ia32_cvtudq2ps256_mask ((__v8si) __A,
2708*67e74705SXin Li (__v8sf)
2709*67e74705SXin Li _mm256_setzero_ps (),
2710*67e74705SXin Li (__mmask8) __U);
2711*67e74705SXin Li }
2712*67e74705SXin Li
2713*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_div_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)2714*67e74705SXin Li _mm_mask_div_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
2715*67e74705SXin Li return (__m128d) __builtin_ia32_divpd_mask ((__v2df) __A,
2716*67e74705SXin Li (__v2df) __B,
2717*67e74705SXin Li (__v2df) __W,
2718*67e74705SXin Li (__mmask8) __U);
2719*67e74705SXin Li }
2720*67e74705SXin Li
2721*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_div_pd(__mmask8 __U,__m128d __A,__m128d __B)2722*67e74705SXin Li _mm_maskz_div_pd (__mmask8 __U, __m128d __A, __m128d __B) {
2723*67e74705SXin Li return (__m128d) __builtin_ia32_divpd_mask ((__v2df) __A,
2724*67e74705SXin Li (__v2df) __B,
2725*67e74705SXin Li (__v2df)
2726*67e74705SXin Li _mm_setzero_pd (),
2727*67e74705SXin Li (__mmask8) __U);
2728*67e74705SXin Li }
2729*67e74705SXin Li
2730*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_div_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)2731*67e74705SXin Li _mm256_mask_div_pd (__m256d __W, __mmask8 __U, __m256d __A,
2732*67e74705SXin Li __m256d __B) {
2733*67e74705SXin Li return (__m256d) __builtin_ia32_divpd256_mask ((__v4df) __A,
2734*67e74705SXin Li (__v4df) __B,
2735*67e74705SXin Li (__v4df) __W,
2736*67e74705SXin Li (__mmask8) __U);
2737*67e74705SXin Li }
2738*67e74705SXin Li
2739*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_div_pd(__mmask8 __U,__m256d __A,__m256d __B)2740*67e74705SXin Li _mm256_maskz_div_pd (__mmask8 __U, __m256d __A, __m256d __B) {
2741*67e74705SXin Li return (__m256d) __builtin_ia32_divpd256_mask ((__v4df) __A,
2742*67e74705SXin Li (__v4df) __B,
2743*67e74705SXin Li (__v4df)
2744*67e74705SXin Li _mm256_setzero_pd (),
2745*67e74705SXin Li (__mmask8) __U);
2746*67e74705SXin Li }
2747*67e74705SXin Li
2748*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_div_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)2749*67e74705SXin Li _mm_mask_div_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
2750*67e74705SXin Li return (__m128) __builtin_ia32_divps_mask ((__v4sf) __A,
2751*67e74705SXin Li (__v4sf) __B,
2752*67e74705SXin Li (__v4sf) __W,
2753*67e74705SXin Li (__mmask8) __U);
2754*67e74705SXin Li }
2755*67e74705SXin Li
2756*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_div_ps(__mmask8 __U,__m128 __A,__m128 __B)2757*67e74705SXin Li _mm_maskz_div_ps (__mmask8 __U, __m128 __A, __m128 __B) {
2758*67e74705SXin Li return (__m128) __builtin_ia32_divps_mask ((__v4sf) __A,
2759*67e74705SXin Li (__v4sf) __B,
2760*67e74705SXin Li (__v4sf)
2761*67e74705SXin Li _mm_setzero_ps (),
2762*67e74705SXin Li (__mmask8) __U);
2763*67e74705SXin Li }
2764*67e74705SXin Li
2765*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_div_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)2766*67e74705SXin Li _mm256_mask_div_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
2767*67e74705SXin Li return (__m256) __builtin_ia32_divps256_mask ((__v8sf) __A,
2768*67e74705SXin Li (__v8sf) __B,
2769*67e74705SXin Li (__v8sf) __W,
2770*67e74705SXin Li (__mmask8) __U);
2771*67e74705SXin Li }
2772*67e74705SXin Li
2773*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_div_ps(__mmask8 __U,__m256 __A,__m256 __B)2774*67e74705SXin Li _mm256_maskz_div_ps (__mmask8 __U, __m256 __A, __m256 __B) {
2775*67e74705SXin Li return (__m256) __builtin_ia32_divps256_mask ((__v8sf) __A,
2776*67e74705SXin Li (__v8sf) __B,
2777*67e74705SXin Li (__v8sf)
2778*67e74705SXin Li _mm256_setzero_ps (),
2779*67e74705SXin Li (__mmask8) __U);
2780*67e74705SXin Li }
2781*67e74705SXin Li
2782*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_expand_pd(__m128d __W,__mmask8 __U,__m128d __A)2783*67e74705SXin Li _mm_mask_expand_pd (__m128d __W, __mmask8 __U, __m128d __A) {
2784*67e74705SXin Li return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2785*67e74705SXin Li (__v2df) __W,
2786*67e74705SXin Li (__mmask8) __U);
2787*67e74705SXin Li }
2788*67e74705SXin Li
2789*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_expand_pd(__mmask8 __U,__m128d __A)2790*67e74705SXin Li _mm_maskz_expand_pd (__mmask8 __U, __m128d __A) {
2791*67e74705SXin Li return (__m128d) __builtin_ia32_expanddf128_mask ((__v2df) __A,
2792*67e74705SXin Li (__v2df)
2793*67e74705SXin Li _mm_setzero_pd (),
2794*67e74705SXin Li (__mmask8) __U);
2795*67e74705SXin Li }
2796*67e74705SXin Li
2797*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_expand_pd(__m256d __W,__mmask8 __U,__m256d __A)2798*67e74705SXin Li _mm256_mask_expand_pd (__m256d __W, __mmask8 __U, __m256d __A) {
2799*67e74705SXin Li return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2800*67e74705SXin Li (__v4df) __W,
2801*67e74705SXin Li (__mmask8) __U);
2802*67e74705SXin Li }
2803*67e74705SXin Li
2804*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_expand_pd(__mmask8 __U,__m256d __A)2805*67e74705SXin Li _mm256_maskz_expand_pd (__mmask8 __U, __m256d __A) {
2806*67e74705SXin Li return (__m256d) __builtin_ia32_expanddf256_mask ((__v4df) __A,
2807*67e74705SXin Li (__v4df)
2808*67e74705SXin Li _mm256_setzero_pd (),
2809*67e74705SXin Li (__mmask8) __U);
2810*67e74705SXin Li }
2811*67e74705SXin Li
2812*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_expand_epi64(__m128i __W,__mmask8 __U,__m128i __A)2813*67e74705SXin Li _mm_mask_expand_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
2814*67e74705SXin Li return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2815*67e74705SXin Li (__v2di) __W,
2816*67e74705SXin Li (__mmask8) __U);
2817*67e74705SXin Li }
2818*67e74705SXin Li
2819*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_expand_epi64(__mmask8 __U,__m128i __A)2820*67e74705SXin Li _mm_maskz_expand_epi64 (__mmask8 __U, __m128i __A) {
2821*67e74705SXin Li return (__m128i) __builtin_ia32_expanddi128_mask ((__v2di) __A,
2822*67e74705SXin Li (__v2di)
2823*67e74705SXin Li _mm_setzero_si128 (),
2824*67e74705SXin Li (__mmask8) __U);
2825*67e74705SXin Li }
2826*67e74705SXin Li
2827*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_expand_epi64(__m256i __W,__mmask8 __U,__m256i __A)2828*67e74705SXin Li _mm256_mask_expand_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
2829*67e74705SXin Li return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2830*67e74705SXin Li (__v4di) __W,
2831*67e74705SXin Li (__mmask8) __U);
2832*67e74705SXin Li }
2833*67e74705SXin Li
2834*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_expand_epi64(__mmask8 __U,__m256i __A)2835*67e74705SXin Li _mm256_maskz_expand_epi64 (__mmask8 __U, __m256i __A) {
2836*67e74705SXin Li return (__m256i) __builtin_ia32_expanddi256_mask ((__v4di) __A,
2837*67e74705SXin Li (__v4di)
2838*67e74705SXin Li _mm256_setzero_si256 (),
2839*67e74705SXin Li (__mmask8) __U);
2840*67e74705SXin Li }
2841*67e74705SXin Li
2842*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_expandloadu_pd(__m128d __W,__mmask8 __U,void const * __P)2843*67e74705SXin Li _mm_mask_expandloadu_pd (__m128d __W, __mmask8 __U, void const *__P) {
2844*67e74705SXin Li return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2845*67e74705SXin Li (__v2df) __W,
2846*67e74705SXin Li (__mmask8)
2847*67e74705SXin Li __U);
2848*67e74705SXin Li }
2849*67e74705SXin Li
2850*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_expandloadu_pd(__mmask8 __U,void const * __P)2851*67e74705SXin Li _mm_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2852*67e74705SXin Li return (__m128d) __builtin_ia32_expandloaddf128_mask ((__v2df *) __P,
2853*67e74705SXin Li (__v2df)
2854*67e74705SXin Li _mm_setzero_pd (),
2855*67e74705SXin Li (__mmask8)
2856*67e74705SXin Li __U);
2857*67e74705SXin Li }
2858*67e74705SXin Li
2859*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_expandloadu_pd(__m256d __W,__mmask8 __U,void const * __P)2860*67e74705SXin Li _mm256_mask_expandloadu_pd (__m256d __W, __mmask8 __U, void const *__P) {
2861*67e74705SXin Li return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2862*67e74705SXin Li (__v4df) __W,
2863*67e74705SXin Li (__mmask8)
2864*67e74705SXin Li __U);
2865*67e74705SXin Li }
2866*67e74705SXin Li
2867*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_expandloadu_pd(__mmask8 __U,void const * __P)2868*67e74705SXin Li _mm256_maskz_expandloadu_pd (__mmask8 __U, void const *__P) {
2869*67e74705SXin Li return (__m256d) __builtin_ia32_expandloaddf256_mask ((__v4df *) __P,
2870*67e74705SXin Li (__v4df)
2871*67e74705SXin Li _mm256_setzero_pd (),
2872*67e74705SXin Li (__mmask8)
2873*67e74705SXin Li __U);
2874*67e74705SXin Li }
2875*67e74705SXin Li
2876*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_expandloadu_epi64(__m128i __W,__mmask8 __U,void const * __P)2877*67e74705SXin Li _mm_mask_expandloadu_epi64 (__m128i __W, __mmask8 __U, void const *__P) {
2878*67e74705SXin Li return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2879*67e74705SXin Li (__v2di) __W,
2880*67e74705SXin Li (__mmask8)
2881*67e74705SXin Li __U);
2882*67e74705SXin Li }
2883*67e74705SXin Li
2884*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)2885*67e74705SXin Li _mm_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2886*67e74705SXin Li return (__m128i) __builtin_ia32_expandloaddi128_mask ((__v2di *) __P,
2887*67e74705SXin Li (__v2di)
2888*67e74705SXin Li _mm_setzero_si128 (),
2889*67e74705SXin Li (__mmask8)
2890*67e74705SXin Li __U);
2891*67e74705SXin Li }
2892*67e74705SXin Li
2893*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_expandloadu_epi64(__m256i __W,__mmask8 __U,void const * __P)2894*67e74705SXin Li _mm256_mask_expandloadu_epi64 (__m256i __W, __mmask8 __U,
2895*67e74705SXin Li void const *__P) {
2896*67e74705SXin Li return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2897*67e74705SXin Li (__v4di) __W,
2898*67e74705SXin Li (__mmask8)
2899*67e74705SXin Li __U);
2900*67e74705SXin Li }
2901*67e74705SXin Li
2902*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_expandloadu_epi64(__mmask8 __U,void const * __P)2903*67e74705SXin Li _mm256_maskz_expandloadu_epi64 (__mmask8 __U, void const *__P) {
2904*67e74705SXin Li return (__m256i) __builtin_ia32_expandloaddi256_mask ((__v4di *) __P,
2905*67e74705SXin Li (__v4di)
2906*67e74705SXin Li _mm256_setzero_si256 (),
2907*67e74705SXin Li (__mmask8)
2908*67e74705SXin Li __U);
2909*67e74705SXin Li }
2910*67e74705SXin Li
2911*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_expandloadu_ps(__m128 __W,__mmask8 __U,void const * __P)2912*67e74705SXin Li _mm_mask_expandloadu_ps (__m128 __W, __mmask8 __U, void const *__P) {
2913*67e74705SXin Li return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2914*67e74705SXin Li (__v4sf) __W,
2915*67e74705SXin Li (__mmask8) __U);
2916*67e74705SXin Li }
2917*67e74705SXin Li
2918*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_expandloadu_ps(__mmask8 __U,void const * __P)2919*67e74705SXin Li _mm_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2920*67e74705SXin Li return (__m128) __builtin_ia32_expandloadsf128_mask ((__v4sf *) __P,
2921*67e74705SXin Li (__v4sf)
2922*67e74705SXin Li _mm_setzero_ps (),
2923*67e74705SXin Li (__mmask8)
2924*67e74705SXin Li __U);
2925*67e74705SXin Li }
2926*67e74705SXin Li
2927*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_expandloadu_ps(__m256 __W,__mmask8 __U,void const * __P)2928*67e74705SXin Li _mm256_mask_expandloadu_ps (__m256 __W, __mmask8 __U, void const *__P) {
2929*67e74705SXin Li return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2930*67e74705SXin Li (__v8sf) __W,
2931*67e74705SXin Li (__mmask8) __U);
2932*67e74705SXin Li }
2933*67e74705SXin Li
2934*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_expandloadu_ps(__mmask8 __U,void const * __P)2935*67e74705SXin Li _mm256_maskz_expandloadu_ps (__mmask8 __U, void const *__P) {
2936*67e74705SXin Li return (__m256) __builtin_ia32_expandloadsf256_mask ((__v8sf *) __P,
2937*67e74705SXin Li (__v8sf)
2938*67e74705SXin Li _mm256_setzero_ps (),
2939*67e74705SXin Li (__mmask8)
2940*67e74705SXin Li __U);
2941*67e74705SXin Li }
2942*67e74705SXin Li
2943*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_expandloadu_epi32(__m128i __W,__mmask8 __U,void const * __P)2944*67e74705SXin Li _mm_mask_expandloadu_epi32 (__m128i __W, __mmask8 __U, void const *__P) {
2945*67e74705SXin Li return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2946*67e74705SXin Li (__v4si) __W,
2947*67e74705SXin Li (__mmask8)
2948*67e74705SXin Li __U);
2949*67e74705SXin Li }
2950*67e74705SXin Li
2951*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_expandloadu_epi32(__mmask8 __U,void const * __P)2952*67e74705SXin Li _mm_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2953*67e74705SXin Li return (__m128i) __builtin_ia32_expandloadsi128_mask ((__v4si *) __P,
2954*67e74705SXin Li (__v4si)
2955*67e74705SXin Li _mm_setzero_si128 (),
2956*67e74705SXin Li (__mmask8) __U);
2957*67e74705SXin Li }
2958*67e74705SXin Li
2959*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_expandloadu_epi32(__m256i __W,__mmask8 __U,void const * __P)2960*67e74705SXin Li _mm256_mask_expandloadu_epi32 (__m256i __W, __mmask8 __U,
2961*67e74705SXin Li void const *__P) {
2962*67e74705SXin Li return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2963*67e74705SXin Li (__v8si) __W,
2964*67e74705SXin Li (__mmask8)
2965*67e74705SXin Li __U);
2966*67e74705SXin Li }
2967*67e74705SXin Li
2968*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_expandloadu_epi32(__mmask8 __U,void const * __P)2969*67e74705SXin Li _mm256_maskz_expandloadu_epi32 (__mmask8 __U, void const *__P) {
2970*67e74705SXin Li return (__m256i) __builtin_ia32_expandloadsi256_mask ((__v8si *) __P,
2971*67e74705SXin Li (__v8si)
2972*67e74705SXin Li _mm256_setzero_si256 (),
2973*67e74705SXin Li (__mmask8)
2974*67e74705SXin Li __U);
2975*67e74705SXin Li }
2976*67e74705SXin Li
2977*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_expand_ps(__m128 __W,__mmask8 __U,__m128 __A)2978*67e74705SXin Li _mm_mask_expand_ps (__m128 __W, __mmask8 __U, __m128 __A) {
2979*67e74705SXin Li return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2980*67e74705SXin Li (__v4sf) __W,
2981*67e74705SXin Li (__mmask8) __U);
2982*67e74705SXin Li }
2983*67e74705SXin Li
2984*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_expand_ps(__mmask8 __U,__m128 __A)2985*67e74705SXin Li _mm_maskz_expand_ps (__mmask8 __U, __m128 __A) {
2986*67e74705SXin Li return (__m128) __builtin_ia32_expandsf128_mask ((__v4sf) __A,
2987*67e74705SXin Li (__v4sf)
2988*67e74705SXin Li _mm_setzero_ps (),
2989*67e74705SXin Li (__mmask8) __U);
2990*67e74705SXin Li }
2991*67e74705SXin Li
2992*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_expand_ps(__m256 __W,__mmask8 __U,__m256 __A)2993*67e74705SXin Li _mm256_mask_expand_ps (__m256 __W, __mmask8 __U, __m256 __A) {
2994*67e74705SXin Li return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
2995*67e74705SXin Li (__v8sf) __W,
2996*67e74705SXin Li (__mmask8) __U);
2997*67e74705SXin Li }
2998*67e74705SXin Li
2999*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_expand_ps(__mmask8 __U,__m256 __A)3000*67e74705SXin Li _mm256_maskz_expand_ps (__mmask8 __U, __m256 __A) {
3001*67e74705SXin Li return (__m256) __builtin_ia32_expandsf256_mask ((__v8sf) __A,
3002*67e74705SXin Li (__v8sf)
3003*67e74705SXin Li _mm256_setzero_ps (),
3004*67e74705SXin Li (__mmask8) __U);
3005*67e74705SXin Li }
3006*67e74705SXin Li
3007*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_expand_epi32(__m128i __W,__mmask8 __U,__m128i __A)3008*67e74705SXin Li _mm_mask_expand_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
3009*67e74705SXin Li return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
3010*67e74705SXin Li (__v4si) __W,
3011*67e74705SXin Li (__mmask8) __U);
3012*67e74705SXin Li }
3013*67e74705SXin Li
3014*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_expand_epi32(__mmask8 __U,__m128i __A)3015*67e74705SXin Li _mm_maskz_expand_epi32 (__mmask8 __U, __m128i __A) {
3016*67e74705SXin Li return (__m128i) __builtin_ia32_expandsi128_mask ((__v4si) __A,
3017*67e74705SXin Li (__v4si)
3018*67e74705SXin Li _mm_setzero_si128 (),
3019*67e74705SXin Li (__mmask8) __U);
3020*67e74705SXin Li }
3021*67e74705SXin Li
3022*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_expand_epi32(__m256i __W,__mmask8 __U,__m256i __A)3023*67e74705SXin Li _mm256_mask_expand_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
3024*67e74705SXin Li return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
3025*67e74705SXin Li (__v8si) __W,
3026*67e74705SXin Li (__mmask8) __U);
3027*67e74705SXin Li }
3028*67e74705SXin Li
3029*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_expand_epi32(__mmask8 __U,__m256i __A)3030*67e74705SXin Li _mm256_maskz_expand_epi32 (__mmask8 __U, __m256i __A) {
3031*67e74705SXin Li return (__m256i) __builtin_ia32_expandsi256_mask ((__v8si) __A,
3032*67e74705SXin Li (__v8si)
3033*67e74705SXin Li _mm256_setzero_si256 (),
3034*67e74705SXin Li (__mmask8) __U);
3035*67e74705SXin Li }
3036*67e74705SXin Li
3037*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_getexp_pd(__m128d __A)3038*67e74705SXin Li _mm_getexp_pd (__m128d __A) {
3039*67e74705SXin Li return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
3040*67e74705SXin Li (__v2df)
3041*67e74705SXin Li _mm_setzero_pd (),
3042*67e74705SXin Li (__mmask8) -1);
3043*67e74705SXin Li }
3044*67e74705SXin Li
3045*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_getexp_pd(__m128d __W,__mmask8 __U,__m128d __A)3046*67e74705SXin Li _mm_mask_getexp_pd (__m128d __W, __mmask8 __U, __m128d __A) {
3047*67e74705SXin Li return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
3048*67e74705SXin Li (__v2df) __W,
3049*67e74705SXin Li (__mmask8) __U);
3050*67e74705SXin Li }
3051*67e74705SXin Li
3052*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_getexp_pd(__mmask8 __U,__m128d __A)3053*67e74705SXin Li _mm_maskz_getexp_pd (__mmask8 __U, __m128d __A) {
3054*67e74705SXin Li return (__m128d) __builtin_ia32_getexppd128_mask ((__v2df) __A,
3055*67e74705SXin Li (__v2df)
3056*67e74705SXin Li _mm_setzero_pd (),
3057*67e74705SXin Li (__mmask8) __U);
3058*67e74705SXin Li }
3059*67e74705SXin Li
3060*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_getexp_pd(__m256d __A)3061*67e74705SXin Li _mm256_getexp_pd (__m256d __A) {
3062*67e74705SXin Li return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
3063*67e74705SXin Li (__v4df)
3064*67e74705SXin Li _mm256_setzero_pd (),
3065*67e74705SXin Li (__mmask8) -1);
3066*67e74705SXin Li }
3067*67e74705SXin Li
3068*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_getexp_pd(__m256d __W,__mmask8 __U,__m256d __A)3069*67e74705SXin Li _mm256_mask_getexp_pd (__m256d __W, __mmask8 __U, __m256d __A) {
3070*67e74705SXin Li return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
3071*67e74705SXin Li (__v4df) __W,
3072*67e74705SXin Li (__mmask8) __U);
3073*67e74705SXin Li }
3074*67e74705SXin Li
3075*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_getexp_pd(__mmask8 __U,__m256d __A)3076*67e74705SXin Li _mm256_maskz_getexp_pd (__mmask8 __U, __m256d __A) {
3077*67e74705SXin Li return (__m256d) __builtin_ia32_getexppd256_mask ((__v4df) __A,
3078*67e74705SXin Li (__v4df)
3079*67e74705SXin Li _mm256_setzero_pd (),
3080*67e74705SXin Li (__mmask8) __U);
3081*67e74705SXin Li }
3082*67e74705SXin Li
3083*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_getexp_ps(__m128 __A)3084*67e74705SXin Li _mm_getexp_ps (__m128 __A) {
3085*67e74705SXin Li return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3086*67e74705SXin Li (__v4sf)
3087*67e74705SXin Li _mm_setzero_ps (),
3088*67e74705SXin Li (__mmask8) -1);
3089*67e74705SXin Li }
3090*67e74705SXin Li
3091*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_getexp_ps(__m128 __W,__mmask8 __U,__m128 __A)3092*67e74705SXin Li _mm_mask_getexp_ps (__m128 __W, __mmask8 __U, __m128 __A) {
3093*67e74705SXin Li return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3094*67e74705SXin Li (__v4sf) __W,
3095*67e74705SXin Li (__mmask8) __U);
3096*67e74705SXin Li }
3097*67e74705SXin Li
3098*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_getexp_ps(__mmask8 __U,__m128 __A)3099*67e74705SXin Li _mm_maskz_getexp_ps (__mmask8 __U, __m128 __A) {
3100*67e74705SXin Li return (__m128) __builtin_ia32_getexpps128_mask ((__v4sf) __A,
3101*67e74705SXin Li (__v4sf)
3102*67e74705SXin Li _mm_setzero_ps (),
3103*67e74705SXin Li (__mmask8) __U);
3104*67e74705SXin Li }
3105*67e74705SXin Li
3106*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_getexp_ps(__m256 __A)3107*67e74705SXin Li _mm256_getexp_ps (__m256 __A) {
3108*67e74705SXin Li return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3109*67e74705SXin Li (__v8sf)
3110*67e74705SXin Li _mm256_setzero_ps (),
3111*67e74705SXin Li (__mmask8) -1);
3112*67e74705SXin Li }
3113*67e74705SXin Li
3114*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_getexp_ps(__m256 __W,__mmask8 __U,__m256 __A)3115*67e74705SXin Li _mm256_mask_getexp_ps (__m256 __W, __mmask8 __U, __m256 __A) {
3116*67e74705SXin Li return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3117*67e74705SXin Li (__v8sf) __W,
3118*67e74705SXin Li (__mmask8) __U);
3119*67e74705SXin Li }
3120*67e74705SXin Li
3121*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_getexp_ps(__mmask8 __U,__m256 __A)3122*67e74705SXin Li _mm256_maskz_getexp_ps (__mmask8 __U, __m256 __A) {
3123*67e74705SXin Li return (__m256) __builtin_ia32_getexpps256_mask ((__v8sf) __A,
3124*67e74705SXin Li (__v8sf)
3125*67e74705SXin Li _mm256_setzero_ps (),
3126*67e74705SXin Li (__mmask8) __U);
3127*67e74705SXin Li }
3128*67e74705SXin Li
3129*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_max_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3130*67e74705SXin Li _mm_mask_max_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3131*67e74705SXin Li return (__m128d) __builtin_ia32_maxpd_mask ((__v2df) __A,
3132*67e74705SXin Li (__v2df) __B,
3133*67e74705SXin Li (__v2df) __W,
3134*67e74705SXin Li (__mmask8) __U);
3135*67e74705SXin Li }
3136*67e74705SXin Li
3137*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_max_pd(__mmask8 __U,__m128d __A,__m128d __B)3138*67e74705SXin Li _mm_maskz_max_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3139*67e74705SXin Li return (__m128d) __builtin_ia32_maxpd_mask ((__v2df) __A,
3140*67e74705SXin Li (__v2df) __B,
3141*67e74705SXin Li (__v2df)
3142*67e74705SXin Li _mm_setzero_pd (),
3143*67e74705SXin Li (__mmask8) __U);
3144*67e74705SXin Li }
3145*67e74705SXin Li
3146*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_max_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)3147*67e74705SXin Li _mm256_mask_max_pd (__m256d __W, __mmask8 __U, __m256d __A,
3148*67e74705SXin Li __m256d __B) {
3149*67e74705SXin Li return (__m256d) __builtin_ia32_maxpd256_mask ((__v4df) __A,
3150*67e74705SXin Li (__v4df) __B,
3151*67e74705SXin Li (__v4df) __W,
3152*67e74705SXin Li (__mmask8) __U);
3153*67e74705SXin Li }
3154*67e74705SXin Li
3155*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_max_pd(__mmask8 __U,__m256d __A,__m256d __B)3156*67e74705SXin Li _mm256_maskz_max_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3157*67e74705SXin Li return (__m256d) __builtin_ia32_maxpd256_mask ((__v4df) __A,
3158*67e74705SXin Li (__v4df) __B,
3159*67e74705SXin Li (__v4df)
3160*67e74705SXin Li _mm256_setzero_pd (),
3161*67e74705SXin Li (__mmask8) __U);
3162*67e74705SXin Li }
3163*67e74705SXin Li
3164*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_max_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3165*67e74705SXin Li _mm_mask_max_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3166*67e74705SXin Li return (__m128) __builtin_ia32_maxps_mask ((__v4sf) __A,
3167*67e74705SXin Li (__v4sf) __B,
3168*67e74705SXin Li (__v4sf) __W,
3169*67e74705SXin Li (__mmask8) __U);
3170*67e74705SXin Li }
3171*67e74705SXin Li
3172*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_max_ps(__mmask8 __U,__m128 __A,__m128 __B)3173*67e74705SXin Li _mm_maskz_max_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3174*67e74705SXin Li return (__m128) __builtin_ia32_maxps_mask ((__v4sf) __A,
3175*67e74705SXin Li (__v4sf) __B,
3176*67e74705SXin Li (__v4sf)
3177*67e74705SXin Li _mm_setzero_ps (),
3178*67e74705SXin Li (__mmask8) __U);
3179*67e74705SXin Li }
3180*67e74705SXin Li
3181*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_max_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)3182*67e74705SXin Li _mm256_mask_max_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3183*67e74705SXin Li return (__m256) __builtin_ia32_maxps256_mask ((__v8sf) __A,
3184*67e74705SXin Li (__v8sf) __B,
3185*67e74705SXin Li (__v8sf) __W,
3186*67e74705SXin Li (__mmask8) __U);
3187*67e74705SXin Li }
3188*67e74705SXin Li
3189*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_max_ps(__mmask8 __U,__m256 __A,__m256 __B)3190*67e74705SXin Li _mm256_maskz_max_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3191*67e74705SXin Li return (__m256) __builtin_ia32_maxps256_mask ((__v8sf) __A,
3192*67e74705SXin Li (__v8sf) __B,
3193*67e74705SXin Li (__v8sf)
3194*67e74705SXin Li _mm256_setzero_ps (),
3195*67e74705SXin Li (__mmask8) __U);
3196*67e74705SXin Li }
3197*67e74705SXin Li
3198*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_min_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3199*67e74705SXin Li _mm_mask_min_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3200*67e74705SXin Li return (__m128d) __builtin_ia32_minpd_mask ((__v2df) __A,
3201*67e74705SXin Li (__v2df) __B,
3202*67e74705SXin Li (__v2df) __W,
3203*67e74705SXin Li (__mmask8) __U);
3204*67e74705SXin Li }
3205*67e74705SXin Li
3206*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_min_pd(__mmask8 __U,__m128d __A,__m128d __B)3207*67e74705SXin Li _mm_maskz_min_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3208*67e74705SXin Li return (__m128d) __builtin_ia32_minpd_mask ((__v2df) __A,
3209*67e74705SXin Li (__v2df) __B,
3210*67e74705SXin Li (__v2df)
3211*67e74705SXin Li _mm_setzero_pd (),
3212*67e74705SXin Li (__mmask8) __U);
3213*67e74705SXin Li }
3214*67e74705SXin Li
3215*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_min_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)3216*67e74705SXin Li _mm256_mask_min_pd (__m256d __W, __mmask8 __U, __m256d __A,
3217*67e74705SXin Li __m256d __B) {
3218*67e74705SXin Li return (__m256d) __builtin_ia32_minpd256_mask ((__v4df) __A,
3219*67e74705SXin Li (__v4df) __B,
3220*67e74705SXin Li (__v4df) __W,
3221*67e74705SXin Li (__mmask8) __U);
3222*67e74705SXin Li }
3223*67e74705SXin Li
3224*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_min_pd(__mmask8 __U,__m256d __A,__m256d __B)3225*67e74705SXin Li _mm256_maskz_min_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3226*67e74705SXin Li return (__m256d) __builtin_ia32_minpd256_mask ((__v4df) __A,
3227*67e74705SXin Li (__v4df) __B,
3228*67e74705SXin Li (__v4df)
3229*67e74705SXin Li _mm256_setzero_pd (),
3230*67e74705SXin Li (__mmask8) __U);
3231*67e74705SXin Li }
3232*67e74705SXin Li
3233*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_min_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3234*67e74705SXin Li _mm_mask_min_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3235*67e74705SXin Li return (__m128) __builtin_ia32_minps_mask ((__v4sf) __A,
3236*67e74705SXin Li (__v4sf) __B,
3237*67e74705SXin Li (__v4sf) __W,
3238*67e74705SXin Li (__mmask8) __U);
3239*67e74705SXin Li }
3240*67e74705SXin Li
3241*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_min_ps(__mmask8 __U,__m128 __A,__m128 __B)3242*67e74705SXin Li _mm_maskz_min_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3243*67e74705SXin Li return (__m128) __builtin_ia32_minps_mask ((__v4sf) __A,
3244*67e74705SXin Li (__v4sf) __B,
3245*67e74705SXin Li (__v4sf)
3246*67e74705SXin Li _mm_setzero_ps (),
3247*67e74705SXin Li (__mmask8) __U);
3248*67e74705SXin Li }
3249*67e74705SXin Li
3250*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_min_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)3251*67e74705SXin Li _mm256_mask_min_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3252*67e74705SXin Li return (__m256) __builtin_ia32_minps256_mask ((__v8sf) __A,
3253*67e74705SXin Li (__v8sf) __B,
3254*67e74705SXin Li (__v8sf) __W,
3255*67e74705SXin Li (__mmask8) __U);
3256*67e74705SXin Li }
3257*67e74705SXin Li
3258*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_min_ps(__mmask8 __U,__m256 __A,__m256 __B)3259*67e74705SXin Li _mm256_maskz_min_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3260*67e74705SXin Li return (__m256) __builtin_ia32_minps256_mask ((__v8sf) __A,
3261*67e74705SXin Li (__v8sf) __B,
3262*67e74705SXin Li (__v8sf)
3263*67e74705SXin Li _mm256_setzero_ps (),
3264*67e74705SXin Li (__mmask8) __U);
3265*67e74705SXin Li }
3266*67e74705SXin Li
3267*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_mul_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3268*67e74705SXin Li _mm_mask_mul_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
3269*67e74705SXin Li return (__m128d) __builtin_ia32_mulpd_mask ((__v2df) __A,
3270*67e74705SXin Li (__v2df) __B,
3271*67e74705SXin Li (__v2df) __W,
3272*67e74705SXin Li (__mmask8) __U);
3273*67e74705SXin Li }
3274*67e74705SXin Li
3275*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_mul_pd(__mmask8 __U,__m128d __A,__m128d __B)3276*67e74705SXin Li _mm_maskz_mul_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3277*67e74705SXin Li return (__m128d) __builtin_ia32_mulpd_mask ((__v2df) __A,
3278*67e74705SXin Li (__v2df) __B,
3279*67e74705SXin Li (__v2df)
3280*67e74705SXin Li _mm_setzero_pd (),
3281*67e74705SXin Li (__mmask8) __U);
3282*67e74705SXin Li }
3283*67e74705SXin Li
3284*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_mul_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)3285*67e74705SXin Li _mm256_mask_mul_pd (__m256d __W, __mmask8 __U, __m256d __A,
3286*67e74705SXin Li __m256d __B) {
3287*67e74705SXin Li return (__m256d) __builtin_ia32_mulpd256_mask ((__v4df) __A,
3288*67e74705SXin Li (__v4df) __B,
3289*67e74705SXin Li (__v4df) __W,
3290*67e74705SXin Li (__mmask8) __U);
3291*67e74705SXin Li }
3292*67e74705SXin Li
3293*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_mul_pd(__mmask8 __U,__m256d __A,__m256d __B)3294*67e74705SXin Li _mm256_maskz_mul_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3295*67e74705SXin Li return (__m256d) __builtin_ia32_mulpd256_mask ((__v4df) __A,
3296*67e74705SXin Li (__v4df) __B,
3297*67e74705SXin Li (__v4df)
3298*67e74705SXin Li _mm256_setzero_pd (),
3299*67e74705SXin Li (__mmask8) __U);
3300*67e74705SXin Li }
3301*67e74705SXin Li
3302*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_mul_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3303*67e74705SXin Li _mm_mask_mul_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3304*67e74705SXin Li return (__m128) __builtin_ia32_mulps_mask ((__v4sf) __A,
3305*67e74705SXin Li (__v4sf) __B,
3306*67e74705SXin Li (__v4sf) __W,
3307*67e74705SXin Li (__mmask8) __U);
3308*67e74705SXin Li }
3309*67e74705SXin Li
3310*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_mul_ps(__mmask8 __U,__m128 __A,__m128 __B)3311*67e74705SXin Li _mm_maskz_mul_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3312*67e74705SXin Li return (__m128) __builtin_ia32_mulps_mask ((__v4sf) __A,
3313*67e74705SXin Li (__v4sf) __B,
3314*67e74705SXin Li (__v4sf)
3315*67e74705SXin Li _mm_setzero_ps (),
3316*67e74705SXin Li (__mmask8) __U);
3317*67e74705SXin Li }
3318*67e74705SXin Li
3319*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_mul_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)3320*67e74705SXin Li _mm256_mask_mul_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
3321*67e74705SXin Li return (__m256) __builtin_ia32_mulps256_mask ((__v8sf) __A,
3322*67e74705SXin Li (__v8sf) __B,
3323*67e74705SXin Li (__v8sf) __W,
3324*67e74705SXin Li (__mmask8) __U);
3325*67e74705SXin Li }
3326*67e74705SXin Li
3327*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_mul_ps(__mmask8 __U,__m256 __A,__m256 __B)3328*67e74705SXin Li _mm256_maskz_mul_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3329*67e74705SXin Li return (__m256) __builtin_ia32_mulps256_mask ((__v8sf) __A,
3330*67e74705SXin Li (__v8sf) __B,
3331*67e74705SXin Li (__v8sf)
3332*67e74705SXin Li _mm256_setzero_ps (),
3333*67e74705SXin Li (__mmask8) __U);
3334*67e74705SXin Li }
3335*67e74705SXin Li
3336*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_abs_epi32(__m128i __W,__mmask8 __U,__m128i __A)3337*67e74705SXin Li _mm_mask_abs_epi32 (__m128i __W, __mmask8 __U, __m128i __A) {
3338*67e74705SXin Li return (__m128i) __builtin_ia32_pabsd128_mask ((__v4si) __A,
3339*67e74705SXin Li (__v4si) __W,
3340*67e74705SXin Li (__mmask8) __U);
3341*67e74705SXin Li }
3342*67e74705SXin Li
3343*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_abs_epi32(__mmask8 __U,__m128i __A)3344*67e74705SXin Li _mm_maskz_abs_epi32 (__mmask8 __U, __m128i __A) {
3345*67e74705SXin Li return (__m128i) __builtin_ia32_pabsd128_mask ((__v4si) __A,
3346*67e74705SXin Li (__v4si)
3347*67e74705SXin Li _mm_setzero_si128 (),
3348*67e74705SXin Li (__mmask8) __U);
3349*67e74705SXin Li }
3350*67e74705SXin Li
3351*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_abs_epi32(__m256i __W,__mmask8 __U,__m256i __A)3352*67e74705SXin Li _mm256_mask_abs_epi32 (__m256i __W, __mmask8 __U, __m256i __A) {
3353*67e74705SXin Li return (__m256i) __builtin_ia32_pabsd256_mask ((__v8si) __A,
3354*67e74705SXin Li (__v8si) __W,
3355*67e74705SXin Li (__mmask8) __U);
3356*67e74705SXin Li }
3357*67e74705SXin Li
3358*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_abs_epi32(__mmask8 __U,__m256i __A)3359*67e74705SXin Li _mm256_maskz_abs_epi32 (__mmask8 __U, __m256i __A) {
3360*67e74705SXin Li return (__m256i) __builtin_ia32_pabsd256_mask ((__v8si) __A,
3361*67e74705SXin Li (__v8si)
3362*67e74705SXin Li _mm256_setzero_si256 (),
3363*67e74705SXin Li (__mmask8) __U);
3364*67e74705SXin Li }
3365*67e74705SXin Li
3366*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_abs_epi64(__m128i __A)3367*67e74705SXin Li _mm_abs_epi64 (__m128i __A) {
3368*67e74705SXin Li return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3369*67e74705SXin Li (__v2di)
3370*67e74705SXin Li _mm_setzero_si128 (),
3371*67e74705SXin Li (__mmask8) -1);
3372*67e74705SXin Li }
3373*67e74705SXin Li
3374*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_abs_epi64(__m128i __W,__mmask8 __U,__m128i __A)3375*67e74705SXin Li _mm_mask_abs_epi64 (__m128i __W, __mmask8 __U, __m128i __A) {
3376*67e74705SXin Li return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3377*67e74705SXin Li (__v2di) __W,
3378*67e74705SXin Li (__mmask8) __U);
3379*67e74705SXin Li }
3380*67e74705SXin Li
3381*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_abs_epi64(__mmask8 __U,__m128i __A)3382*67e74705SXin Li _mm_maskz_abs_epi64 (__mmask8 __U, __m128i __A) {
3383*67e74705SXin Li return (__m128i) __builtin_ia32_pabsq128_mask ((__v2di) __A,
3384*67e74705SXin Li (__v2di)
3385*67e74705SXin Li _mm_setzero_si128 (),
3386*67e74705SXin Li (__mmask8) __U);
3387*67e74705SXin Li }
3388*67e74705SXin Li
3389*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_abs_epi64(__m256i __A)3390*67e74705SXin Li _mm256_abs_epi64 (__m256i __A) {
3391*67e74705SXin Li return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3392*67e74705SXin Li (__v4di)
3393*67e74705SXin Li _mm256_setzero_si256 (),
3394*67e74705SXin Li (__mmask8) -1);
3395*67e74705SXin Li }
3396*67e74705SXin Li
3397*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_abs_epi64(__m256i __W,__mmask8 __U,__m256i __A)3398*67e74705SXin Li _mm256_mask_abs_epi64 (__m256i __W, __mmask8 __U, __m256i __A) {
3399*67e74705SXin Li return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3400*67e74705SXin Li (__v4di) __W,
3401*67e74705SXin Li (__mmask8) __U);
3402*67e74705SXin Li }
3403*67e74705SXin Li
3404*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_abs_epi64(__mmask8 __U,__m256i __A)3405*67e74705SXin Li _mm256_maskz_abs_epi64 (__mmask8 __U, __m256i __A) {
3406*67e74705SXin Li return (__m256i) __builtin_ia32_pabsq256_mask ((__v4di) __A,
3407*67e74705SXin Li (__v4di)
3408*67e74705SXin Li _mm256_setzero_si256 (),
3409*67e74705SXin Li (__mmask8) __U);
3410*67e74705SXin Li }
3411*67e74705SXin Li
3412*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epi32(__mmask8 __M,__m128i __A,__m128i __B)3413*67e74705SXin Li _mm_maskz_max_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {
3414*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsd128_mask ((__v4si) __A,
3415*67e74705SXin Li (__v4si) __B,
3416*67e74705SXin Li (__v4si)
3417*67e74705SXin Li _mm_setzero_si128 (),
3418*67e74705SXin Li __M);
3419*67e74705SXin Li }
3420*67e74705SXin Li
3421*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3422*67e74705SXin Li _mm_mask_max_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
3423*67e74705SXin Li __m128i __B) {
3424*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsd128_mask ((__v4si) __A,
3425*67e74705SXin Li (__v4si) __B,
3426*67e74705SXin Li (__v4si) __W, __M);
3427*67e74705SXin Li }
3428*67e74705SXin Li
3429*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epi32(__mmask8 __M,__m256i __A,__m256i __B)3430*67e74705SXin Li _mm256_maskz_max_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {
3431*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsd256_mask ((__v8si) __A,
3432*67e74705SXin Li (__v8si) __B,
3433*67e74705SXin Li (__v8si)
3434*67e74705SXin Li _mm256_setzero_si256 (),
3435*67e74705SXin Li __M);
3436*67e74705SXin Li }
3437*67e74705SXin Li
3438*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epi32(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3439*67e74705SXin Li _mm256_mask_max_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
3440*67e74705SXin Li __m256i __B) {
3441*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsd256_mask ((__v8si) __A,
3442*67e74705SXin Li (__v8si) __B,
3443*67e74705SXin Li (__v8si) __W, __M);
3444*67e74705SXin Li }
3445*67e74705SXin Li
3446*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epi64(__mmask8 __M,__m128i __A,__m128i __B)3447*67e74705SXin Li _mm_maskz_max_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3448*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3449*67e74705SXin Li (__v2di) __B,
3450*67e74705SXin Li (__v2di)
3451*67e74705SXin Li _mm_setzero_si128 (),
3452*67e74705SXin Li __M);
3453*67e74705SXin Li }
3454*67e74705SXin Li
3455*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epi64(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3456*67e74705SXin Li _mm_mask_max_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3457*67e74705SXin Li __m128i __B) {
3458*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3459*67e74705SXin Li (__v2di) __B,
3460*67e74705SXin Li (__v2di) __W, __M);
3461*67e74705SXin Li }
3462*67e74705SXin Li
3463*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_max_epi64(__m128i __A,__m128i __B)3464*67e74705SXin Li _mm_max_epi64 (__m128i __A, __m128i __B) {
3465*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxsq128_mask ((__v2di) __A,
3466*67e74705SXin Li (__v2di) __B,
3467*67e74705SXin Li (__v2di)
3468*67e74705SXin Li _mm_setzero_si128 (),
3469*67e74705SXin Li (__mmask8) -1);
3470*67e74705SXin Li }
3471*67e74705SXin Li
3472*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epi64(__mmask8 __M,__m256i __A,__m256i __B)3473*67e74705SXin Li _mm256_maskz_max_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3474*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3475*67e74705SXin Li (__v4di) __B,
3476*67e74705SXin Li (__v4di)
3477*67e74705SXin Li _mm256_setzero_si256 (),
3478*67e74705SXin Li __M);
3479*67e74705SXin Li }
3480*67e74705SXin Li
3481*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epi64(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3482*67e74705SXin Li _mm256_mask_max_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3483*67e74705SXin Li __m256i __B) {
3484*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3485*67e74705SXin Li (__v4di) __B,
3486*67e74705SXin Li (__v4di) __W, __M);
3487*67e74705SXin Li }
3488*67e74705SXin Li
3489*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epi64(__m256i __A,__m256i __B)3490*67e74705SXin Li _mm256_max_epi64 (__m256i __A, __m256i __B) {
3491*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxsq256_mask ((__v4di) __A,
3492*67e74705SXin Li (__v4di) __B,
3493*67e74705SXin Li (__v4di)
3494*67e74705SXin Li _mm256_setzero_si256 (),
3495*67e74705SXin Li (__mmask8) -1);
3496*67e74705SXin Li }
3497*67e74705SXin Li
3498*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epu32(__mmask8 __M,__m128i __A,__m128i __B)3499*67e74705SXin Li _mm_maskz_max_epu32 (__mmask8 __M, __m128i __A, __m128i __B) {
3500*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxud128_mask ((__v4si) __A,
3501*67e74705SXin Li (__v4si) __B,
3502*67e74705SXin Li (__v4si)
3503*67e74705SXin Li _mm_setzero_si128 (),
3504*67e74705SXin Li __M);
3505*67e74705SXin Li }
3506*67e74705SXin Li
3507*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epu32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3508*67e74705SXin Li _mm_mask_max_epu32 (__m128i __W, __mmask8 __M, __m128i __A,
3509*67e74705SXin Li __m128i __B) {
3510*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxud128_mask ((__v4si) __A,
3511*67e74705SXin Li (__v4si) __B,
3512*67e74705SXin Li (__v4si) __W, __M);
3513*67e74705SXin Li }
3514*67e74705SXin Li
3515*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epu32(__mmask8 __M,__m256i __A,__m256i __B)3516*67e74705SXin Li _mm256_maskz_max_epu32 (__mmask8 __M, __m256i __A, __m256i __B) {
3517*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxud256_mask ((__v8si) __A,
3518*67e74705SXin Li (__v8si) __B,
3519*67e74705SXin Li (__v8si)
3520*67e74705SXin Li _mm256_setzero_si256 (),
3521*67e74705SXin Li __M);
3522*67e74705SXin Li }
3523*67e74705SXin Li
3524*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epu32(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3525*67e74705SXin Li _mm256_mask_max_epu32 (__m256i __W, __mmask8 __M, __m256i __A,
3526*67e74705SXin Li __m256i __B) {
3527*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxud256_mask ((__v8si) __A,
3528*67e74705SXin Li (__v8si) __B,
3529*67e74705SXin Li (__v8si) __W, __M);
3530*67e74705SXin Li }
3531*67e74705SXin Li
3532*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_max_epu64(__mmask8 __M,__m128i __A,__m128i __B)3533*67e74705SXin Li _mm_maskz_max_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3534*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3535*67e74705SXin Li (__v2di) __B,
3536*67e74705SXin Li (__v2di)
3537*67e74705SXin Li _mm_setzero_si128 (),
3538*67e74705SXin Li __M);
3539*67e74705SXin Li }
3540*67e74705SXin Li
3541*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_max_epu64(__m128i __A,__m128i __B)3542*67e74705SXin Li _mm_max_epu64 (__m128i __A, __m128i __B) {
3543*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3544*67e74705SXin Li (__v2di) __B,
3545*67e74705SXin Li (__v2di)
3546*67e74705SXin Li _mm_setzero_si128 (),
3547*67e74705SXin Li (__mmask8) -1);
3548*67e74705SXin Li }
3549*67e74705SXin Li
3550*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_max_epu64(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3551*67e74705SXin Li _mm_mask_max_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3552*67e74705SXin Li __m128i __B) {
3553*67e74705SXin Li return (__m128i) __builtin_ia32_pmaxuq128_mask ((__v2di) __A,
3554*67e74705SXin Li (__v2di) __B,
3555*67e74705SXin Li (__v2di) __W, __M);
3556*67e74705SXin Li }
3557*67e74705SXin Li
3558*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_max_epu64(__mmask8 __M,__m256i __A,__m256i __B)3559*67e74705SXin Li _mm256_maskz_max_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3560*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3561*67e74705SXin Li (__v4di) __B,
3562*67e74705SXin Li (__v4di)
3563*67e74705SXin Li _mm256_setzero_si256 (),
3564*67e74705SXin Li __M);
3565*67e74705SXin Li }
3566*67e74705SXin Li
3567*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epu64(__m256i __A,__m256i __B)3568*67e74705SXin Li _mm256_max_epu64 (__m256i __A, __m256i __B) {
3569*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3570*67e74705SXin Li (__v4di) __B,
3571*67e74705SXin Li (__v4di)
3572*67e74705SXin Li _mm256_setzero_si256 (),
3573*67e74705SXin Li (__mmask8) -1);
3574*67e74705SXin Li }
3575*67e74705SXin Li
3576*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_max_epu64(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3577*67e74705SXin Li _mm256_mask_max_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3578*67e74705SXin Li __m256i __B) {
3579*67e74705SXin Li return (__m256i) __builtin_ia32_pmaxuq256_mask ((__v4di) __A,
3580*67e74705SXin Li (__v4di) __B,
3581*67e74705SXin Li (__v4di) __W, __M);
3582*67e74705SXin Li }
3583*67e74705SXin Li
3584*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epi32(__mmask8 __M,__m128i __A,__m128i __B)3585*67e74705SXin Li _mm_maskz_min_epi32 (__mmask8 __M, __m128i __A, __m128i __B) {
3586*67e74705SXin Li return (__m128i) __builtin_ia32_pminsd128_mask ((__v4si) __A,
3587*67e74705SXin Li (__v4si) __B,
3588*67e74705SXin Li (__v4si)
3589*67e74705SXin Li _mm_setzero_si128 (),
3590*67e74705SXin Li __M);
3591*67e74705SXin Li }
3592*67e74705SXin Li
3593*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epi32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3594*67e74705SXin Li _mm_mask_min_epi32 (__m128i __W, __mmask8 __M, __m128i __A,
3595*67e74705SXin Li __m128i __B) {
3596*67e74705SXin Li return (__m128i) __builtin_ia32_pminsd128_mask ((__v4si) __A,
3597*67e74705SXin Li (__v4si) __B,
3598*67e74705SXin Li (__v4si) __W, __M);
3599*67e74705SXin Li }
3600*67e74705SXin Li
3601*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epi32(__mmask8 __M,__m256i __A,__m256i __B)3602*67e74705SXin Li _mm256_maskz_min_epi32 (__mmask8 __M, __m256i __A, __m256i __B) {
3603*67e74705SXin Li return (__m256i) __builtin_ia32_pminsd256_mask ((__v8si) __A,
3604*67e74705SXin Li (__v8si) __B,
3605*67e74705SXin Li (__v8si)
3606*67e74705SXin Li _mm256_setzero_si256 (),
3607*67e74705SXin Li __M);
3608*67e74705SXin Li }
3609*67e74705SXin Li
3610*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epi32(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3611*67e74705SXin Li _mm256_mask_min_epi32 (__m256i __W, __mmask8 __M, __m256i __A,
3612*67e74705SXin Li __m256i __B) {
3613*67e74705SXin Li return (__m256i) __builtin_ia32_pminsd256_mask ((__v8si) __A,
3614*67e74705SXin Li (__v8si) __B,
3615*67e74705SXin Li (__v8si) __W, __M);
3616*67e74705SXin Li }
3617*67e74705SXin Li
3618*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_min_epi64(__m128i __A,__m128i __B)3619*67e74705SXin Li _mm_min_epi64 (__m128i __A, __m128i __B) {
3620*67e74705SXin Li return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3621*67e74705SXin Li (__v2di) __B,
3622*67e74705SXin Li (__v2di)
3623*67e74705SXin Li _mm_setzero_si128 (),
3624*67e74705SXin Li (__mmask8) -1);
3625*67e74705SXin Li }
3626*67e74705SXin Li
3627*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epi64(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3628*67e74705SXin Li _mm_mask_min_epi64 (__m128i __W, __mmask8 __M, __m128i __A,
3629*67e74705SXin Li __m128i __B) {
3630*67e74705SXin Li return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3631*67e74705SXin Li (__v2di) __B,
3632*67e74705SXin Li (__v2di) __W, __M);
3633*67e74705SXin Li }
3634*67e74705SXin Li
3635*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epi64(__mmask8 __M,__m128i __A,__m128i __B)3636*67e74705SXin Li _mm_maskz_min_epi64 (__mmask8 __M, __m128i __A, __m128i __B) {
3637*67e74705SXin Li return (__m128i) __builtin_ia32_pminsq128_mask ((__v2di) __A,
3638*67e74705SXin Li (__v2di) __B,
3639*67e74705SXin Li (__v2di)
3640*67e74705SXin Li _mm_setzero_si128 (),
3641*67e74705SXin Li __M);
3642*67e74705SXin Li }
3643*67e74705SXin Li
3644*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epi64(__m256i __A,__m256i __B)3645*67e74705SXin Li _mm256_min_epi64 (__m256i __A, __m256i __B) {
3646*67e74705SXin Li return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3647*67e74705SXin Li (__v4di) __B,
3648*67e74705SXin Li (__v4di)
3649*67e74705SXin Li _mm256_setzero_si256 (),
3650*67e74705SXin Li (__mmask8) -1);
3651*67e74705SXin Li }
3652*67e74705SXin Li
3653*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epi64(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3654*67e74705SXin Li _mm256_mask_min_epi64 (__m256i __W, __mmask8 __M, __m256i __A,
3655*67e74705SXin Li __m256i __B) {
3656*67e74705SXin Li return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3657*67e74705SXin Li (__v4di) __B,
3658*67e74705SXin Li (__v4di) __W, __M);
3659*67e74705SXin Li }
3660*67e74705SXin Li
3661*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epi64(__mmask8 __M,__m256i __A,__m256i __B)3662*67e74705SXin Li _mm256_maskz_min_epi64 (__mmask8 __M, __m256i __A, __m256i __B) {
3663*67e74705SXin Li return (__m256i) __builtin_ia32_pminsq256_mask ((__v4di) __A,
3664*67e74705SXin Li (__v4di) __B,
3665*67e74705SXin Li (__v4di)
3666*67e74705SXin Li _mm256_setzero_si256 (),
3667*67e74705SXin Li __M);
3668*67e74705SXin Li }
3669*67e74705SXin Li
3670*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epu32(__mmask8 __M,__m128i __A,__m128i __B)3671*67e74705SXin Li _mm_maskz_min_epu32 (__mmask8 __M, __m128i __A, __m128i __B) {
3672*67e74705SXin Li return (__m128i) __builtin_ia32_pminud128_mask ((__v4si) __A,
3673*67e74705SXin Li (__v4si) __B,
3674*67e74705SXin Li (__v4si)
3675*67e74705SXin Li _mm_setzero_si128 (),
3676*67e74705SXin Li __M);
3677*67e74705SXin Li }
3678*67e74705SXin Li
3679*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epu32(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3680*67e74705SXin Li _mm_mask_min_epu32 (__m128i __W, __mmask8 __M, __m128i __A,
3681*67e74705SXin Li __m128i __B) {
3682*67e74705SXin Li return (__m128i) __builtin_ia32_pminud128_mask ((__v4si) __A,
3683*67e74705SXin Li (__v4si) __B,
3684*67e74705SXin Li (__v4si) __W, __M);
3685*67e74705SXin Li }
3686*67e74705SXin Li
3687*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epu32(__mmask8 __M,__m256i __A,__m256i __B)3688*67e74705SXin Li _mm256_maskz_min_epu32 (__mmask8 __M, __m256i __A, __m256i __B) {
3689*67e74705SXin Li return (__m256i) __builtin_ia32_pminud256_mask ((__v8si) __A,
3690*67e74705SXin Li (__v8si) __B,
3691*67e74705SXin Li (__v8si)
3692*67e74705SXin Li _mm256_setzero_si256 (),
3693*67e74705SXin Li __M);
3694*67e74705SXin Li }
3695*67e74705SXin Li
3696*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epu32(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3697*67e74705SXin Li _mm256_mask_min_epu32 (__m256i __W, __mmask8 __M, __m256i __A,
3698*67e74705SXin Li __m256i __B) {
3699*67e74705SXin Li return (__m256i) __builtin_ia32_pminud256_mask ((__v8si) __A,
3700*67e74705SXin Li (__v8si) __B,
3701*67e74705SXin Li (__v8si) __W, __M);
3702*67e74705SXin Li }
3703*67e74705SXin Li
3704*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_min_epu64(__m128i __A,__m128i __B)3705*67e74705SXin Li _mm_min_epu64 (__m128i __A, __m128i __B) {
3706*67e74705SXin Li return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3707*67e74705SXin Li (__v2di) __B,
3708*67e74705SXin Li (__v2di)
3709*67e74705SXin Li _mm_setzero_si128 (),
3710*67e74705SXin Li (__mmask8) -1);
3711*67e74705SXin Li }
3712*67e74705SXin Li
3713*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_min_epu64(__m128i __W,__mmask8 __M,__m128i __A,__m128i __B)3714*67e74705SXin Li _mm_mask_min_epu64 (__m128i __W, __mmask8 __M, __m128i __A,
3715*67e74705SXin Li __m128i __B) {
3716*67e74705SXin Li return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3717*67e74705SXin Li (__v2di) __B,
3718*67e74705SXin Li (__v2di) __W, __M);
3719*67e74705SXin Li }
3720*67e74705SXin Li
3721*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_min_epu64(__mmask8 __M,__m128i __A,__m128i __B)3722*67e74705SXin Li _mm_maskz_min_epu64 (__mmask8 __M, __m128i __A, __m128i __B) {
3723*67e74705SXin Li return (__m128i) __builtin_ia32_pminuq128_mask ((__v2di) __A,
3724*67e74705SXin Li (__v2di) __B,
3725*67e74705SXin Li (__v2di)
3726*67e74705SXin Li _mm_setzero_si128 (),
3727*67e74705SXin Li __M);
3728*67e74705SXin Li }
3729*67e74705SXin Li
3730*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epu64(__m256i __A,__m256i __B)3731*67e74705SXin Li _mm256_min_epu64 (__m256i __A, __m256i __B) {
3732*67e74705SXin Li return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3733*67e74705SXin Li (__v4di) __B,
3734*67e74705SXin Li (__v4di)
3735*67e74705SXin Li _mm256_setzero_si256 (),
3736*67e74705SXin Li (__mmask8) -1);
3737*67e74705SXin Li }
3738*67e74705SXin Li
3739*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_min_epu64(__m256i __W,__mmask8 __M,__m256i __A,__m256i __B)3740*67e74705SXin Li _mm256_mask_min_epu64 (__m256i __W, __mmask8 __M, __m256i __A,
3741*67e74705SXin Li __m256i __B) {
3742*67e74705SXin Li return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3743*67e74705SXin Li (__v4di) __B,
3744*67e74705SXin Li (__v4di) __W, __M);
3745*67e74705SXin Li }
3746*67e74705SXin Li
3747*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_min_epu64(__mmask8 __M,__m256i __A,__m256i __B)3748*67e74705SXin Li _mm256_maskz_min_epu64 (__mmask8 __M, __m256i __A, __m256i __B) {
3749*67e74705SXin Li return (__m256i) __builtin_ia32_pminuq256_mask ((__v4di) __A,
3750*67e74705SXin Li (__v4di) __B,
3751*67e74705SXin Li (__v4di)
3752*67e74705SXin Li _mm256_setzero_si256 (),
3753*67e74705SXin Li __M);
3754*67e74705SXin Li }
3755*67e74705SXin Li
3756*67e74705SXin Li #define _mm_roundscale_pd(A, imm) __extension__ ({ \
3757*67e74705SXin Li (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3758*67e74705SXin Li (int)(imm), \
3759*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
3760*67e74705SXin Li (__mmask8)-1); })
3761*67e74705SXin Li
3762*67e74705SXin Li
3763*67e74705SXin Li #define _mm_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3764*67e74705SXin Li (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3765*67e74705SXin Li (int)(imm), \
3766*67e74705SXin Li (__v2df)(__m128d)(W), \
3767*67e74705SXin Li (__mmask8)(U)); })
3768*67e74705SXin Li
3769*67e74705SXin Li
3770*67e74705SXin Li #define _mm_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3771*67e74705SXin Li (__m128d)__builtin_ia32_rndscalepd_128_mask((__v2df)(__m128d)(A), \
3772*67e74705SXin Li (int)(imm), \
3773*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
3774*67e74705SXin Li (__mmask8)(U)); })
3775*67e74705SXin Li
3776*67e74705SXin Li
3777*67e74705SXin Li #define _mm256_roundscale_pd(A, imm) __extension__ ({ \
3778*67e74705SXin Li (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3779*67e74705SXin Li (int)(imm), \
3780*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
3781*67e74705SXin Li (__mmask8)-1); })
3782*67e74705SXin Li
3783*67e74705SXin Li
3784*67e74705SXin Li #define _mm256_mask_roundscale_pd(W, U, A, imm) __extension__ ({ \
3785*67e74705SXin Li (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3786*67e74705SXin Li (int)(imm), \
3787*67e74705SXin Li (__v4df)(__m256d)(W), \
3788*67e74705SXin Li (__mmask8)(U)); })
3789*67e74705SXin Li
3790*67e74705SXin Li
3791*67e74705SXin Li #define _mm256_maskz_roundscale_pd(U, A, imm) __extension__ ({ \
3792*67e74705SXin Li (__m256d)__builtin_ia32_rndscalepd_256_mask((__v4df)(__m256d)(A), \
3793*67e74705SXin Li (int)(imm), \
3794*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
3795*67e74705SXin Li (__mmask8)(U)); })
3796*67e74705SXin Li
3797*67e74705SXin Li #define _mm_roundscale_ps(A, imm) __extension__ ({ \
3798*67e74705SXin Li (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3799*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
3800*67e74705SXin Li (__mmask8)-1); })
3801*67e74705SXin Li
3802*67e74705SXin Li
3803*67e74705SXin Li #define _mm_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3804*67e74705SXin Li (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3805*67e74705SXin Li (__v4sf)(__m128)(W), \
3806*67e74705SXin Li (__mmask8)(U)); })
3807*67e74705SXin Li
3808*67e74705SXin Li
3809*67e74705SXin Li #define _mm_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3810*67e74705SXin Li (__m128)__builtin_ia32_rndscaleps_128_mask((__v4sf)(__m128)(A), (int)(imm), \
3811*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
3812*67e74705SXin Li (__mmask8)(U)); })
3813*67e74705SXin Li
3814*67e74705SXin Li #define _mm256_roundscale_ps(A, imm) __extension__ ({ \
3815*67e74705SXin Li (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3816*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
3817*67e74705SXin Li (__mmask8)-1); })
3818*67e74705SXin Li
3819*67e74705SXin Li #define _mm256_mask_roundscale_ps(W, U, A, imm) __extension__ ({ \
3820*67e74705SXin Li (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3821*67e74705SXin Li (__v8sf)(__m256)(W), \
3822*67e74705SXin Li (__mmask8)(U)); })
3823*67e74705SXin Li
3824*67e74705SXin Li
3825*67e74705SXin Li #define _mm256_maskz_roundscale_ps(U, A, imm) __extension__ ({ \
3826*67e74705SXin Li (__m256)__builtin_ia32_rndscaleps_256_mask((__v8sf)(__m256)(A), (int)(imm), \
3827*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
3828*67e74705SXin Li (__mmask8)(U)); })
3829*67e74705SXin Li
3830*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_scalef_pd(__m128d __A,__m128d __B)3831*67e74705SXin Li _mm_scalef_pd (__m128d __A, __m128d __B) {
3832*67e74705SXin Li return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3833*67e74705SXin Li (__v2df) __B,
3834*67e74705SXin Li (__v2df)
3835*67e74705SXin Li _mm_setzero_pd (),
3836*67e74705SXin Li (__mmask8) -1);
3837*67e74705SXin Li }
3838*67e74705SXin Li
3839*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_scalef_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)3840*67e74705SXin Li _mm_mask_scalef_pd (__m128d __W, __mmask8 __U, __m128d __A,
3841*67e74705SXin Li __m128d __B) {
3842*67e74705SXin Li return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3843*67e74705SXin Li (__v2df) __B,
3844*67e74705SXin Li (__v2df) __W,
3845*67e74705SXin Li (__mmask8) __U);
3846*67e74705SXin Li }
3847*67e74705SXin Li
3848*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_scalef_pd(__mmask8 __U,__m128d __A,__m128d __B)3849*67e74705SXin Li _mm_maskz_scalef_pd (__mmask8 __U, __m128d __A, __m128d __B) {
3850*67e74705SXin Li return (__m128d) __builtin_ia32_scalefpd128_mask ((__v2df) __A,
3851*67e74705SXin Li (__v2df) __B,
3852*67e74705SXin Li (__v2df)
3853*67e74705SXin Li _mm_setzero_pd (),
3854*67e74705SXin Li (__mmask8) __U);
3855*67e74705SXin Li }
3856*67e74705SXin Li
3857*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_scalef_pd(__m256d __A,__m256d __B)3858*67e74705SXin Li _mm256_scalef_pd (__m256d __A, __m256d __B) {
3859*67e74705SXin Li return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3860*67e74705SXin Li (__v4df) __B,
3861*67e74705SXin Li (__v4df)
3862*67e74705SXin Li _mm256_setzero_pd (),
3863*67e74705SXin Li (__mmask8) -1);
3864*67e74705SXin Li }
3865*67e74705SXin Li
3866*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_scalef_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)3867*67e74705SXin Li _mm256_mask_scalef_pd (__m256d __W, __mmask8 __U, __m256d __A,
3868*67e74705SXin Li __m256d __B) {
3869*67e74705SXin Li return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3870*67e74705SXin Li (__v4df) __B,
3871*67e74705SXin Li (__v4df) __W,
3872*67e74705SXin Li (__mmask8) __U);
3873*67e74705SXin Li }
3874*67e74705SXin Li
3875*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_scalef_pd(__mmask8 __U,__m256d __A,__m256d __B)3876*67e74705SXin Li _mm256_maskz_scalef_pd (__mmask8 __U, __m256d __A, __m256d __B) {
3877*67e74705SXin Li return (__m256d) __builtin_ia32_scalefpd256_mask ((__v4df) __A,
3878*67e74705SXin Li (__v4df) __B,
3879*67e74705SXin Li (__v4df)
3880*67e74705SXin Li _mm256_setzero_pd (),
3881*67e74705SXin Li (__mmask8) __U);
3882*67e74705SXin Li }
3883*67e74705SXin Li
3884*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_scalef_ps(__m128 __A,__m128 __B)3885*67e74705SXin Li _mm_scalef_ps (__m128 __A, __m128 __B) {
3886*67e74705SXin Li return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3887*67e74705SXin Li (__v4sf) __B,
3888*67e74705SXin Li (__v4sf)
3889*67e74705SXin Li _mm_setzero_ps (),
3890*67e74705SXin Li (__mmask8) -1);
3891*67e74705SXin Li }
3892*67e74705SXin Li
3893*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_scalef_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)3894*67e74705SXin Li _mm_mask_scalef_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
3895*67e74705SXin Li return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3896*67e74705SXin Li (__v4sf) __B,
3897*67e74705SXin Li (__v4sf) __W,
3898*67e74705SXin Li (__mmask8) __U);
3899*67e74705SXin Li }
3900*67e74705SXin Li
3901*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_scalef_ps(__mmask8 __U,__m128 __A,__m128 __B)3902*67e74705SXin Li _mm_maskz_scalef_ps (__mmask8 __U, __m128 __A, __m128 __B) {
3903*67e74705SXin Li return (__m128) __builtin_ia32_scalefps128_mask ((__v4sf) __A,
3904*67e74705SXin Li (__v4sf) __B,
3905*67e74705SXin Li (__v4sf)
3906*67e74705SXin Li _mm_setzero_ps (),
3907*67e74705SXin Li (__mmask8) __U);
3908*67e74705SXin Li }
3909*67e74705SXin Li
3910*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_scalef_ps(__m256 __A,__m256 __B)3911*67e74705SXin Li _mm256_scalef_ps (__m256 __A, __m256 __B) {
3912*67e74705SXin Li return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3913*67e74705SXin Li (__v8sf) __B,
3914*67e74705SXin Li (__v8sf)
3915*67e74705SXin Li _mm256_setzero_ps (),
3916*67e74705SXin Li (__mmask8) -1);
3917*67e74705SXin Li }
3918*67e74705SXin Li
3919*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_scalef_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)3920*67e74705SXin Li _mm256_mask_scalef_ps (__m256 __W, __mmask8 __U, __m256 __A,
3921*67e74705SXin Li __m256 __B) {
3922*67e74705SXin Li return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3923*67e74705SXin Li (__v8sf) __B,
3924*67e74705SXin Li (__v8sf) __W,
3925*67e74705SXin Li (__mmask8) __U);
3926*67e74705SXin Li }
3927*67e74705SXin Li
3928*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_scalef_ps(__mmask8 __U,__m256 __A,__m256 __B)3929*67e74705SXin Li _mm256_maskz_scalef_ps (__mmask8 __U, __m256 __A, __m256 __B) {
3930*67e74705SXin Li return (__m256) __builtin_ia32_scalefps256_mask ((__v8sf) __A,
3931*67e74705SXin Li (__v8sf) __B,
3932*67e74705SXin Li (__v8sf)
3933*67e74705SXin Li _mm256_setzero_ps (),
3934*67e74705SXin Li (__mmask8) __U);
3935*67e74705SXin Li }
3936*67e74705SXin Li
3937*67e74705SXin Li #define _mm_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3938*67e74705SXin Li __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)-1, \
3939*67e74705SXin Li (__v2di)(__m128i)(index), \
3940*67e74705SXin Li (__v2df)(__m128d)(v1), (int)(scale)); })
3941*67e74705SXin Li
3942*67e74705SXin Li #define _mm_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3943*67e74705SXin Li __builtin_ia32_scatterdiv2df((double *)(addr), (__mmask8)(mask), \
3944*67e74705SXin Li (__v2di)(__m128i)(index), \
3945*67e74705SXin Li (__v2df)(__m128d)(v1), (int)(scale)); })
3946*67e74705SXin Li
3947*67e74705SXin Li #define _mm_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3948*67e74705SXin Li __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)-1, \
3949*67e74705SXin Li (__v2di)(__m128i)(index), \
3950*67e74705SXin Li (__v2di)(__m128i)(v1), (int)(scale)); })
3951*67e74705SXin Li
3952*67e74705SXin Li #define _mm_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3953*67e74705SXin Li __builtin_ia32_scatterdiv2di((long long *)(addr), (__mmask8)(mask), \
3954*67e74705SXin Li (__v2di)(__m128i)(index), \
3955*67e74705SXin Li (__v2di)(__m128i)(v1), (int)(scale)); })
3956*67e74705SXin Li
3957*67e74705SXin Li #define _mm256_i64scatter_pd(addr, index, v1, scale) __extension__ ({ \
3958*67e74705SXin Li __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)-1, \
3959*67e74705SXin Li (__v4di)(__m256i)(index), \
3960*67e74705SXin Li (__v4df)(__m256d)(v1), (int)(scale)); })
3961*67e74705SXin Li
3962*67e74705SXin Li #define _mm256_mask_i64scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
3963*67e74705SXin Li __builtin_ia32_scatterdiv4df((double *)(addr), (__mmask8)(mask), \
3964*67e74705SXin Li (__v4di)(__m256i)(index), \
3965*67e74705SXin Li (__v4df)(__m256d)(v1), (int)(scale)); })
3966*67e74705SXin Li
3967*67e74705SXin Li #define _mm256_i64scatter_epi64(addr, index, v1, scale) __extension__ ({ \
3968*67e74705SXin Li __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)-1, \
3969*67e74705SXin Li (__v4di)(__m256i)(index), \
3970*67e74705SXin Li (__v4di)(__m256i)(v1), (int)(scale)); })
3971*67e74705SXin Li
3972*67e74705SXin Li #define _mm256_mask_i64scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
3973*67e74705SXin Li __builtin_ia32_scatterdiv4di((long long *)(addr), (__mmask8)(mask), \
3974*67e74705SXin Li (__v4di)(__m256i)(index), \
3975*67e74705SXin Li (__v4di)(__m256i)(v1), (int)(scale)); })
3976*67e74705SXin Li
3977*67e74705SXin Li #define _mm_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3978*67e74705SXin Li __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)-1, \
3979*67e74705SXin Li (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3980*67e74705SXin Li (int)(scale)); })
3981*67e74705SXin Li
3982*67e74705SXin Li #define _mm_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
3983*67e74705SXin Li __builtin_ia32_scatterdiv4sf((float *)(addr), (__mmask8)(mask), \
3984*67e74705SXin Li (__v2di)(__m128i)(index), (__v4sf)(__m128)(v1), \
3985*67e74705SXin Li (int)(scale)); })
3986*67e74705SXin Li
3987*67e74705SXin Li #define _mm_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
3988*67e74705SXin Li __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)-1, \
3989*67e74705SXin Li (__v2di)(__m128i)(index), \
3990*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
3991*67e74705SXin Li
3992*67e74705SXin Li #define _mm_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
3993*67e74705SXin Li __builtin_ia32_scatterdiv4si((int *)(addr), (__mmask8)(mask), \
3994*67e74705SXin Li (__v2di)(__m128i)(index), \
3995*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
3996*67e74705SXin Li
3997*67e74705SXin Li #define _mm256_i64scatter_ps(addr, index, v1, scale) __extension__ ({ \
3998*67e74705SXin Li __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)-1, \
3999*67e74705SXin Li (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
4000*67e74705SXin Li (int)(scale)); })
4001*67e74705SXin Li
4002*67e74705SXin Li #define _mm256_mask_i64scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
4003*67e74705SXin Li __builtin_ia32_scatterdiv8sf((float *)(addr), (__mmask8)(mask), \
4004*67e74705SXin Li (__v4di)(__m256i)(index), (__v4sf)(__m128)(v1), \
4005*67e74705SXin Li (int)(scale)); })
4006*67e74705SXin Li
4007*67e74705SXin Li #define _mm256_i64scatter_epi32(addr, index, v1, scale) __extension__ ({ \
4008*67e74705SXin Li __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)-1, \
4009*67e74705SXin Li (__v4di)(__m256i)(index), \
4010*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
4011*67e74705SXin Li
4012*67e74705SXin Li #define _mm256_mask_i64scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
4013*67e74705SXin Li __builtin_ia32_scatterdiv8si((int *)(addr), (__mmask8)(mask), \
4014*67e74705SXin Li (__v4di)(__m256i)(index), \
4015*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
4016*67e74705SXin Li
4017*67e74705SXin Li #define _mm_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
4018*67e74705SXin Li __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)-1, \
4019*67e74705SXin Li (__v4si)(__m128i)(index), \
4020*67e74705SXin Li (__v2df)(__m128d)(v1), (int)(scale)); })
4021*67e74705SXin Li
4022*67e74705SXin Li #define _mm_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
4023*67e74705SXin Li __builtin_ia32_scattersiv2df((double *)(addr), (__mmask8)(mask), \
4024*67e74705SXin Li (__v4si)(__m128i)(index), \
4025*67e74705SXin Li (__v2df)(__m128d)(v1), (int)(scale)); })
4026*67e74705SXin Li
4027*67e74705SXin Li #define _mm_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
4028*67e74705SXin Li __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)-1, \
4029*67e74705SXin Li (__v4si)(__m128i)(index), \
4030*67e74705SXin Li (__v2di)(__m128i)(v1), (int)(scale)); })
4031*67e74705SXin Li
4032*67e74705SXin Li #define _mm_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
4033*67e74705SXin Li __builtin_ia32_scattersiv2di((long long *)(addr), (__mmask8)(mask), \
4034*67e74705SXin Li (__v4si)(__m128i)(index), \
4035*67e74705SXin Li (__v2di)(__m128i)(v1), (int)(scale)); })
4036*67e74705SXin Li
4037*67e74705SXin Li #define _mm256_i32scatter_pd(addr, index, v1, scale) __extension__ ({ \
4038*67e74705SXin Li __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)-1, \
4039*67e74705SXin Li (__v4si)(__m128i)(index), \
4040*67e74705SXin Li (__v4df)(__m256d)(v1), (int)(scale)); })
4041*67e74705SXin Li
4042*67e74705SXin Li #define _mm256_mask_i32scatter_pd(addr, mask, index, v1, scale) __extension__ ({ \
4043*67e74705SXin Li __builtin_ia32_scattersiv4df((double *)(addr), (__mmask8)(mask), \
4044*67e74705SXin Li (__v4si)(__m128i)(index), \
4045*67e74705SXin Li (__v4df)(__m256d)(v1), (int)(scale)); })
4046*67e74705SXin Li
4047*67e74705SXin Li #define _mm256_i32scatter_epi64(addr, index, v1, scale) __extension__ ({ \
4048*67e74705SXin Li __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)-1, \
4049*67e74705SXin Li (__v4si)(__m128i)(index), \
4050*67e74705SXin Li (__v4di)(__m256i)(v1), (int)(scale)); })
4051*67e74705SXin Li
4052*67e74705SXin Li #define _mm256_mask_i32scatter_epi64(addr, mask, index, v1, scale) __extension__ ({ \
4053*67e74705SXin Li __builtin_ia32_scattersiv4di((long long *)(addr), (__mmask8)(mask), \
4054*67e74705SXin Li (__v4si)(__m128i)(index), \
4055*67e74705SXin Li (__v4di)(__m256i)(v1), (int)(scale)); })
4056*67e74705SXin Li
4057*67e74705SXin Li #define _mm_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
4058*67e74705SXin Li __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)-1, \
4059*67e74705SXin Li (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
4060*67e74705SXin Li (int)(scale)); })
4061*67e74705SXin Li
4062*67e74705SXin Li #define _mm_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
4063*67e74705SXin Li __builtin_ia32_scattersiv4sf((float *)(addr), (__mmask8)(mask), \
4064*67e74705SXin Li (__v4si)(__m128i)(index), (__v4sf)(__m128)(v1), \
4065*67e74705SXin Li (int)(scale)); })
4066*67e74705SXin Li
4067*67e74705SXin Li #define _mm_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
4068*67e74705SXin Li __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)-1, \
4069*67e74705SXin Li (__v4si)(__m128i)(index), \
4070*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
4071*67e74705SXin Li
4072*67e74705SXin Li #define _mm_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
4073*67e74705SXin Li __builtin_ia32_scattersiv4si((int *)(addr), (__mmask8)(mask), \
4074*67e74705SXin Li (__v4si)(__m128i)(index), \
4075*67e74705SXin Li (__v4si)(__m128i)(v1), (int)(scale)); })
4076*67e74705SXin Li
4077*67e74705SXin Li #define _mm256_i32scatter_ps(addr, index, v1, scale) __extension__ ({ \
4078*67e74705SXin Li __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)-1, \
4079*67e74705SXin Li (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
4080*67e74705SXin Li (int)(scale)); })
4081*67e74705SXin Li
4082*67e74705SXin Li #define _mm256_mask_i32scatter_ps(addr, mask, index, v1, scale) __extension__ ({ \
4083*67e74705SXin Li __builtin_ia32_scattersiv8sf((float *)(addr), (__mmask8)(mask), \
4084*67e74705SXin Li (__v8si)(__m256i)(index), (__v8sf)(__m256)(v1), \
4085*67e74705SXin Li (int)(scale)); })
4086*67e74705SXin Li
4087*67e74705SXin Li #define _mm256_i32scatter_epi32(addr, index, v1, scale) __extension__ ({ \
4088*67e74705SXin Li __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)-1, \
4089*67e74705SXin Li (__v8si)(__m256i)(index), \
4090*67e74705SXin Li (__v8si)(__m256i)(v1), (int)(scale)); })
4091*67e74705SXin Li
4092*67e74705SXin Li #define _mm256_mask_i32scatter_epi32(addr, mask, index, v1, scale) __extension__ ({ \
4093*67e74705SXin Li __builtin_ia32_scattersiv8si((int *)(addr), (__mmask8)(mask), \
4094*67e74705SXin Li (__v8si)(__m256i)(index), \
4095*67e74705SXin Li (__v8si)(__m256i)(v1), (int)(scale)); })
4096*67e74705SXin Li
4097*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_sqrt_pd(__m128d __W,__mmask8 __U,__m128d __A)4098*67e74705SXin Li _mm_mask_sqrt_pd (__m128d __W, __mmask8 __U, __m128d __A) {
4099*67e74705SXin Li return (__m128d) __builtin_ia32_sqrtpd128_mask ((__v2df) __A,
4100*67e74705SXin Li (__v2df) __W,
4101*67e74705SXin Li (__mmask8) __U);
4102*67e74705SXin Li }
4103*67e74705SXin Li
4104*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_sqrt_pd(__mmask8 __U,__m128d __A)4105*67e74705SXin Li _mm_maskz_sqrt_pd (__mmask8 __U, __m128d __A) {
4106*67e74705SXin Li return (__m128d) __builtin_ia32_sqrtpd128_mask ((__v2df) __A,
4107*67e74705SXin Li (__v2df)
4108*67e74705SXin Li _mm_setzero_pd (),
4109*67e74705SXin Li (__mmask8) __U);
4110*67e74705SXin Li }
4111*67e74705SXin Li
4112*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_sqrt_pd(__m256d __W,__mmask8 __U,__m256d __A)4113*67e74705SXin Li _mm256_mask_sqrt_pd (__m256d __W, __mmask8 __U, __m256d __A) {
4114*67e74705SXin Li return (__m256d) __builtin_ia32_sqrtpd256_mask ((__v4df) __A,
4115*67e74705SXin Li (__v4df) __W,
4116*67e74705SXin Li (__mmask8) __U);
4117*67e74705SXin Li }
4118*67e74705SXin Li
4119*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_sqrt_pd(__mmask8 __U,__m256d __A)4120*67e74705SXin Li _mm256_maskz_sqrt_pd (__mmask8 __U, __m256d __A) {
4121*67e74705SXin Li return (__m256d) __builtin_ia32_sqrtpd256_mask ((__v4df) __A,
4122*67e74705SXin Li (__v4df)
4123*67e74705SXin Li _mm256_setzero_pd (),
4124*67e74705SXin Li (__mmask8) __U);
4125*67e74705SXin Li }
4126*67e74705SXin Li
4127*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_sqrt_ps(__m128 __W,__mmask8 __U,__m128 __A)4128*67e74705SXin Li _mm_mask_sqrt_ps (__m128 __W, __mmask8 __U, __m128 __A) {
4129*67e74705SXin Li return (__m128) __builtin_ia32_sqrtps128_mask ((__v4sf) __A,
4130*67e74705SXin Li (__v4sf) __W,
4131*67e74705SXin Li (__mmask8) __U);
4132*67e74705SXin Li }
4133*67e74705SXin Li
4134*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_sqrt_ps(__mmask8 __U,__m128 __A)4135*67e74705SXin Li _mm_maskz_sqrt_ps (__mmask8 __U, __m128 __A) {
4136*67e74705SXin Li return (__m128) __builtin_ia32_sqrtps128_mask ((__v4sf) __A,
4137*67e74705SXin Li (__v4sf)
4138*67e74705SXin Li _mm_setzero_ps (),
4139*67e74705SXin Li (__mmask8) __U);
4140*67e74705SXin Li }
4141*67e74705SXin Li
4142*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_sqrt_ps(__m256 __W,__mmask8 __U,__m256 __A)4143*67e74705SXin Li _mm256_mask_sqrt_ps (__m256 __W, __mmask8 __U, __m256 __A) {
4144*67e74705SXin Li return (__m256) __builtin_ia32_sqrtps256_mask ((__v8sf) __A,
4145*67e74705SXin Li (__v8sf) __W,
4146*67e74705SXin Li (__mmask8) __U);
4147*67e74705SXin Li }
4148*67e74705SXin Li
4149*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_sqrt_ps(__mmask8 __U,__m256 __A)4150*67e74705SXin Li _mm256_maskz_sqrt_ps (__mmask8 __U, __m256 __A) {
4151*67e74705SXin Li return (__m256) __builtin_ia32_sqrtps256_mask ((__v8sf) __A,
4152*67e74705SXin Li (__v8sf)
4153*67e74705SXin Li _mm256_setzero_ps (),
4154*67e74705SXin Li (__mmask8) __U);
4155*67e74705SXin Li }
4156*67e74705SXin Li
4157*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_sub_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)4158*67e74705SXin Li _mm_mask_sub_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
4159*67e74705SXin Li return (__m128d) __builtin_ia32_subpd128_mask ((__v2df) __A,
4160*67e74705SXin Li (__v2df) __B,
4161*67e74705SXin Li (__v2df) __W,
4162*67e74705SXin Li (__mmask8) __U);
4163*67e74705SXin Li }
4164*67e74705SXin Li
4165*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_sub_pd(__mmask8 __U,__m128d __A,__m128d __B)4166*67e74705SXin Li _mm_maskz_sub_pd (__mmask8 __U, __m128d __A, __m128d __B) {
4167*67e74705SXin Li return (__m128d) __builtin_ia32_subpd128_mask ((__v2df) __A,
4168*67e74705SXin Li (__v2df) __B,
4169*67e74705SXin Li (__v2df)
4170*67e74705SXin Li _mm_setzero_pd (),
4171*67e74705SXin Li (__mmask8) __U);
4172*67e74705SXin Li }
4173*67e74705SXin Li
4174*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_sub_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)4175*67e74705SXin Li _mm256_mask_sub_pd (__m256d __W, __mmask8 __U, __m256d __A,
4176*67e74705SXin Li __m256d __B) {
4177*67e74705SXin Li return (__m256d) __builtin_ia32_subpd256_mask ((__v4df) __A,
4178*67e74705SXin Li (__v4df) __B,
4179*67e74705SXin Li (__v4df) __W,
4180*67e74705SXin Li (__mmask8) __U);
4181*67e74705SXin Li }
4182*67e74705SXin Li
4183*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_sub_pd(__mmask8 __U,__m256d __A,__m256d __B)4184*67e74705SXin Li _mm256_maskz_sub_pd (__mmask8 __U, __m256d __A, __m256d __B) {
4185*67e74705SXin Li return (__m256d) __builtin_ia32_subpd256_mask ((__v4df) __A,
4186*67e74705SXin Li (__v4df) __B,
4187*67e74705SXin Li (__v4df)
4188*67e74705SXin Li _mm256_setzero_pd (),
4189*67e74705SXin Li (__mmask8) __U);
4190*67e74705SXin Li }
4191*67e74705SXin Li
4192*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_sub_ps(__m128 __W,__mmask16 __U,__m128 __A,__m128 __B)4193*67e74705SXin Li _mm_mask_sub_ps (__m128 __W, __mmask16 __U, __m128 __A, __m128 __B) {
4194*67e74705SXin Li return (__m128) __builtin_ia32_subps128_mask ((__v4sf) __A,
4195*67e74705SXin Li (__v4sf) __B,
4196*67e74705SXin Li (__v4sf) __W,
4197*67e74705SXin Li (__mmask8) __U);
4198*67e74705SXin Li }
4199*67e74705SXin Li
4200*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_sub_ps(__mmask16 __U,__m128 __A,__m128 __B)4201*67e74705SXin Li _mm_maskz_sub_ps (__mmask16 __U, __m128 __A, __m128 __B) {
4202*67e74705SXin Li return (__m128) __builtin_ia32_subps128_mask ((__v4sf) __A,
4203*67e74705SXin Li (__v4sf) __B,
4204*67e74705SXin Li (__v4sf)
4205*67e74705SXin Li _mm_setzero_ps (),
4206*67e74705SXin Li (__mmask8) __U);
4207*67e74705SXin Li }
4208*67e74705SXin Li
4209*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_sub_ps(__m256 __W,__mmask16 __U,__m256 __A,__m256 __B)4210*67e74705SXin Li _mm256_mask_sub_ps (__m256 __W, __mmask16 __U, __m256 __A, __m256 __B) {
4211*67e74705SXin Li return (__m256) __builtin_ia32_subps256_mask ((__v8sf) __A,
4212*67e74705SXin Li (__v8sf) __B,
4213*67e74705SXin Li (__v8sf) __W,
4214*67e74705SXin Li (__mmask8) __U);
4215*67e74705SXin Li }
4216*67e74705SXin Li
4217*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_sub_ps(__mmask16 __U,__m256 __A,__m256 __B)4218*67e74705SXin Li _mm256_maskz_sub_ps (__mmask16 __U, __m256 __A, __m256 __B) {
4219*67e74705SXin Li return (__m256) __builtin_ia32_subps256_mask ((__v8sf) __A,
4220*67e74705SXin Li (__v8sf) __B,
4221*67e74705SXin Li (__v8sf)
4222*67e74705SXin Li _mm256_setzero_ps (),
4223*67e74705SXin Li (__mmask8) __U);
4224*67e74705SXin Li }
4225*67e74705SXin Li
4226*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask2_permutex2var_epi32(__m128i __A,__m128i __I,__mmask8 __U,__m128i __B)4227*67e74705SXin Li _mm_mask2_permutex2var_epi32 (__m128i __A, __m128i __I, __mmask8 __U,
4228*67e74705SXin Li __m128i __B) {
4229*67e74705SXin Li return (__m128i) __builtin_ia32_vpermi2vard128_mask ((__v4si) __A,
4230*67e74705SXin Li (__v4si) __I
4231*67e74705SXin Li /* idx */ ,
4232*67e74705SXin Li (__v4si) __B,
4233*67e74705SXin Li (__mmask8) __U);
4234*67e74705SXin Li }
4235*67e74705SXin Li
4236*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask2_permutex2var_epi32(__m256i __A,__m256i __I,__mmask8 __U,__m256i __B)4237*67e74705SXin Li _mm256_mask2_permutex2var_epi32 (__m256i __A, __m256i __I,
4238*67e74705SXin Li __mmask8 __U, __m256i __B) {
4239*67e74705SXin Li return (__m256i) __builtin_ia32_vpermi2vard256_mask ((__v8si) __A,
4240*67e74705SXin Li (__v8si) __I
4241*67e74705SXin Li /* idx */ ,
4242*67e74705SXin Li (__v8si) __B,
4243*67e74705SXin Li (__mmask8) __U);
4244*67e74705SXin Li }
4245*67e74705SXin Li
4246*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask2_permutex2var_pd(__m128d __A,__m128i __I,__mmask8 __U,__m128d __B)4247*67e74705SXin Li _mm_mask2_permutex2var_pd (__m128d __A, __m128i __I, __mmask8 __U,
4248*67e74705SXin Li __m128d __B) {
4249*67e74705SXin Li return (__m128d) __builtin_ia32_vpermi2varpd128_mask ((__v2df) __A,
4250*67e74705SXin Li (__v2di) __I
4251*67e74705SXin Li /* idx */ ,
4252*67e74705SXin Li (__v2df) __B,
4253*67e74705SXin Li (__mmask8)
4254*67e74705SXin Li __U);
4255*67e74705SXin Li }
4256*67e74705SXin Li
4257*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask2_permutex2var_pd(__m256d __A,__m256i __I,__mmask8 __U,__m256d __B)4258*67e74705SXin Li _mm256_mask2_permutex2var_pd (__m256d __A, __m256i __I, __mmask8 __U,
4259*67e74705SXin Li __m256d __B) {
4260*67e74705SXin Li return (__m256d) __builtin_ia32_vpermi2varpd256_mask ((__v4df) __A,
4261*67e74705SXin Li (__v4di) __I
4262*67e74705SXin Li /* idx */ ,
4263*67e74705SXin Li (__v4df) __B,
4264*67e74705SXin Li (__mmask8)
4265*67e74705SXin Li __U);
4266*67e74705SXin Li }
4267*67e74705SXin Li
4268*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask2_permutex2var_ps(__m128 __A,__m128i __I,__mmask8 __U,__m128 __B)4269*67e74705SXin Li _mm_mask2_permutex2var_ps (__m128 __A, __m128i __I, __mmask8 __U,
4270*67e74705SXin Li __m128 __B) {
4271*67e74705SXin Li return (__m128) __builtin_ia32_vpermi2varps128_mask ((__v4sf) __A,
4272*67e74705SXin Li (__v4si) __I
4273*67e74705SXin Li /* idx */ ,
4274*67e74705SXin Li (__v4sf) __B,
4275*67e74705SXin Li (__mmask8) __U);
4276*67e74705SXin Li }
4277*67e74705SXin Li
4278*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask2_permutex2var_ps(__m256 __A,__m256i __I,__mmask8 __U,__m256 __B)4279*67e74705SXin Li _mm256_mask2_permutex2var_ps (__m256 __A, __m256i __I, __mmask8 __U,
4280*67e74705SXin Li __m256 __B) {
4281*67e74705SXin Li return (__m256) __builtin_ia32_vpermi2varps256_mask ((__v8sf) __A,
4282*67e74705SXin Li (__v8si) __I
4283*67e74705SXin Li /* idx */ ,
4284*67e74705SXin Li (__v8sf) __B,
4285*67e74705SXin Li (__mmask8) __U);
4286*67e74705SXin Li }
4287*67e74705SXin Li
4288*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask2_permutex2var_epi64(__m128i __A,__m128i __I,__mmask8 __U,__m128i __B)4289*67e74705SXin Li _mm_mask2_permutex2var_epi64 (__m128i __A, __m128i __I, __mmask8 __U,
4290*67e74705SXin Li __m128i __B) {
4291*67e74705SXin Li return (__m128i) __builtin_ia32_vpermi2varq128_mask ((__v2di) __A,
4292*67e74705SXin Li (__v2di) __I
4293*67e74705SXin Li /* idx */ ,
4294*67e74705SXin Li (__v2di) __B,
4295*67e74705SXin Li (__mmask8) __U);
4296*67e74705SXin Li }
4297*67e74705SXin Li
4298*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask2_permutex2var_epi64(__m256i __A,__m256i __I,__mmask8 __U,__m256i __B)4299*67e74705SXin Li _mm256_mask2_permutex2var_epi64 (__m256i __A, __m256i __I,
4300*67e74705SXin Li __mmask8 __U, __m256i __B) {
4301*67e74705SXin Li return (__m256i) __builtin_ia32_vpermi2varq256_mask ((__v4di) __A,
4302*67e74705SXin Li (__v4di) __I
4303*67e74705SXin Li /* idx */ ,
4304*67e74705SXin Li (__v4di) __B,
4305*67e74705SXin Li (__mmask8) __U);
4306*67e74705SXin Li }
4307*67e74705SXin Li
4308*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_permutex2var_epi32(__m128i __A,__m128i __I,__m128i __B)4309*67e74705SXin Li _mm_permutex2var_epi32 (__m128i __A, __m128i __I, __m128i __B) {
4310*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
4311*67e74705SXin Li /* idx */ ,
4312*67e74705SXin Li (__v4si) __A,
4313*67e74705SXin Li (__v4si) __B,
4314*67e74705SXin Li (__mmask8) -1);
4315*67e74705SXin Li }
4316*67e74705SXin Li
4317*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_permutex2var_epi32(__m128i __A,__mmask8 __U,__m128i __I,__m128i __B)4318*67e74705SXin Li _mm_mask_permutex2var_epi32 (__m128i __A, __mmask8 __U, __m128i __I,
4319*67e74705SXin Li __m128i __B) {
4320*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2vard128_mask ((__v4si) __I
4321*67e74705SXin Li /* idx */ ,
4322*67e74705SXin Li (__v4si) __A,
4323*67e74705SXin Li (__v4si) __B,
4324*67e74705SXin Li (__mmask8) __U);
4325*67e74705SXin Li }
4326*67e74705SXin Li
4327*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_permutex2var_epi32(__mmask8 __U,__m128i __A,__m128i __I,__m128i __B)4328*67e74705SXin Li _mm_maskz_permutex2var_epi32 (__mmask8 __U, __m128i __A, __m128i __I,
4329*67e74705SXin Li __m128i __B) {
4330*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2vard128_maskz ((__v4si) __I
4331*67e74705SXin Li /* idx */ ,
4332*67e74705SXin Li (__v4si) __A,
4333*67e74705SXin Li (__v4si) __B,
4334*67e74705SXin Li (__mmask8)
4335*67e74705SXin Li __U);
4336*67e74705SXin Li }
4337*67e74705SXin Li
4338*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutex2var_epi32(__m256i __A,__m256i __I,__m256i __B)4339*67e74705SXin Li _mm256_permutex2var_epi32 (__m256i __A, __m256i __I, __m256i __B) {
4340*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
4341*67e74705SXin Li /* idx */ ,
4342*67e74705SXin Li (__v8si) __A,
4343*67e74705SXin Li (__v8si) __B,
4344*67e74705SXin Li (__mmask8) -1);
4345*67e74705SXin Li }
4346*67e74705SXin Li
4347*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutex2var_epi32(__m256i __A,__mmask8 __U,__m256i __I,__m256i __B)4348*67e74705SXin Li _mm256_mask_permutex2var_epi32 (__m256i __A, __mmask8 __U, __m256i __I,
4349*67e74705SXin Li __m256i __B) {
4350*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2vard256_mask ((__v8si) __I
4351*67e74705SXin Li /* idx */ ,
4352*67e74705SXin Li (__v8si) __A,
4353*67e74705SXin Li (__v8si) __B,
4354*67e74705SXin Li (__mmask8) __U);
4355*67e74705SXin Li }
4356*67e74705SXin Li
4357*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutex2var_epi32(__mmask8 __U,__m256i __A,__m256i __I,__m256i __B)4358*67e74705SXin Li _mm256_maskz_permutex2var_epi32 (__mmask8 __U, __m256i __A,
4359*67e74705SXin Li __m256i __I, __m256i __B) {
4360*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2vard256_maskz ((__v8si) __I
4361*67e74705SXin Li /* idx */ ,
4362*67e74705SXin Li (__v8si) __A,
4363*67e74705SXin Li (__v8si) __B,
4364*67e74705SXin Li (__mmask8)
4365*67e74705SXin Li __U);
4366*67e74705SXin Li }
4367*67e74705SXin Li
4368*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_permutex2var_pd(__m128d __A,__m128i __I,__m128d __B)4369*67e74705SXin Li _mm_permutex2var_pd (__m128d __A, __m128i __I, __m128d __B) {
4370*67e74705SXin Li return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
4371*67e74705SXin Li /* idx */ ,
4372*67e74705SXin Li (__v2df) __A,
4373*67e74705SXin Li (__v2df) __B,
4374*67e74705SXin Li (__mmask8) -
4375*67e74705SXin Li 1);
4376*67e74705SXin Li }
4377*67e74705SXin Li
4378*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_permutex2var_pd(__m128d __A,__mmask8 __U,__m128i __I,__m128d __B)4379*67e74705SXin Li _mm_mask_permutex2var_pd (__m128d __A, __mmask8 __U, __m128i __I,
4380*67e74705SXin Li __m128d __B) {
4381*67e74705SXin Li return (__m128d) __builtin_ia32_vpermt2varpd128_mask ((__v2di) __I
4382*67e74705SXin Li /* idx */ ,
4383*67e74705SXin Li (__v2df) __A,
4384*67e74705SXin Li (__v2df) __B,
4385*67e74705SXin Li (__mmask8)
4386*67e74705SXin Li __U);
4387*67e74705SXin Li }
4388*67e74705SXin Li
4389*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_permutex2var_pd(__mmask8 __U,__m128d __A,__m128i __I,__m128d __B)4390*67e74705SXin Li _mm_maskz_permutex2var_pd (__mmask8 __U, __m128d __A, __m128i __I,
4391*67e74705SXin Li __m128d __B) {
4392*67e74705SXin Li return (__m128d) __builtin_ia32_vpermt2varpd128_maskz ((__v2di) __I
4393*67e74705SXin Li /* idx */ ,
4394*67e74705SXin Li (__v2df) __A,
4395*67e74705SXin Li (__v2df) __B,
4396*67e74705SXin Li (__mmask8)
4397*67e74705SXin Li __U);
4398*67e74705SXin Li }
4399*67e74705SXin Li
4400*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_permutex2var_pd(__m256d __A,__m256i __I,__m256d __B)4401*67e74705SXin Li _mm256_permutex2var_pd (__m256d __A, __m256i __I, __m256d __B) {
4402*67e74705SXin Li return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
4403*67e74705SXin Li /* idx */ ,
4404*67e74705SXin Li (__v4df) __A,
4405*67e74705SXin Li (__v4df) __B,
4406*67e74705SXin Li (__mmask8) -
4407*67e74705SXin Li 1);
4408*67e74705SXin Li }
4409*67e74705SXin Li
4410*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_permutex2var_pd(__m256d __A,__mmask8 __U,__m256i __I,__m256d __B)4411*67e74705SXin Li _mm256_mask_permutex2var_pd (__m256d __A, __mmask8 __U, __m256i __I,
4412*67e74705SXin Li __m256d __B) {
4413*67e74705SXin Li return (__m256d) __builtin_ia32_vpermt2varpd256_mask ((__v4di) __I
4414*67e74705SXin Li /* idx */ ,
4415*67e74705SXin Li (__v4df) __A,
4416*67e74705SXin Li (__v4df) __B,
4417*67e74705SXin Li (__mmask8)
4418*67e74705SXin Li __U);
4419*67e74705SXin Li }
4420*67e74705SXin Li
4421*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_permutex2var_pd(__mmask8 __U,__m256d __A,__m256i __I,__m256d __B)4422*67e74705SXin Li _mm256_maskz_permutex2var_pd (__mmask8 __U, __m256d __A, __m256i __I,
4423*67e74705SXin Li __m256d __B) {
4424*67e74705SXin Li return (__m256d) __builtin_ia32_vpermt2varpd256_maskz ((__v4di) __I
4425*67e74705SXin Li /* idx */ ,
4426*67e74705SXin Li (__v4df) __A,
4427*67e74705SXin Li (__v4df) __B,
4428*67e74705SXin Li (__mmask8)
4429*67e74705SXin Li __U);
4430*67e74705SXin Li }
4431*67e74705SXin Li
4432*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_permutex2var_ps(__m128 __A,__m128i __I,__m128 __B)4433*67e74705SXin Li _mm_permutex2var_ps (__m128 __A, __m128i __I, __m128 __B) {
4434*67e74705SXin Li return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
4435*67e74705SXin Li /* idx */ ,
4436*67e74705SXin Li (__v4sf) __A,
4437*67e74705SXin Li (__v4sf) __B,
4438*67e74705SXin Li (__mmask8) -1);
4439*67e74705SXin Li }
4440*67e74705SXin Li
4441*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_permutex2var_ps(__m128 __A,__mmask8 __U,__m128i __I,__m128 __B)4442*67e74705SXin Li _mm_mask_permutex2var_ps (__m128 __A, __mmask8 __U, __m128i __I,
4443*67e74705SXin Li __m128 __B) {
4444*67e74705SXin Li return (__m128) __builtin_ia32_vpermt2varps128_mask ((__v4si) __I
4445*67e74705SXin Li /* idx */ ,
4446*67e74705SXin Li (__v4sf) __A,
4447*67e74705SXin Li (__v4sf) __B,
4448*67e74705SXin Li (__mmask8) __U);
4449*67e74705SXin Li }
4450*67e74705SXin Li
4451*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_permutex2var_ps(__mmask8 __U,__m128 __A,__m128i __I,__m128 __B)4452*67e74705SXin Li _mm_maskz_permutex2var_ps (__mmask8 __U, __m128 __A, __m128i __I,
4453*67e74705SXin Li __m128 __B) {
4454*67e74705SXin Li return (__m128) __builtin_ia32_vpermt2varps128_maskz ((__v4si) __I
4455*67e74705SXin Li /* idx */ ,
4456*67e74705SXin Li (__v4sf) __A,
4457*67e74705SXin Li (__v4sf) __B,
4458*67e74705SXin Li (__mmask8)
4459*67e74705SXin Li __U);
4460*67e74705SXin Li }
4461*67e74705SXin Li
4462*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_permutex2var_ps(__m256 __A,__m256i __I,__m256 __B)4463*67e74705SXin Li _mm256_permutex2var_ps (__m256 __A, __m256i __I, __m256 __B) {
4464*67e74705SXin Li return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
4465*67e74705SXin Li /* idx */ ,
4466*67e74705SXin Li (__v8sf) __A,
4467*67e74705SXin Li (__v8sf) __B,
4468*67e74705SXin Li (__mmask8) -1);
4469*67e74705SXin Li }
4470*67e74705SXin Li
4471*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_permutex2var_ps(__m256 __A,__mmask8 __U,__m256i __I,__m256 __B)4472*67e74705SXin Li _mm256_mask_permutex2var_ps (__m256 __A, __mmask8 __U, __m256i __I,
4473*67e74705SXin Li __m256 __B) {
4474*67e74705SXin Li return (__m256) __builtin_ia32_vpermt2varps256_mask ((__v8si) __I
4475*67e74705SXin Li /* idx */ ,
4476*67e74705SXin Li (__v8sf) __A,
4477*67e74705SXin Li (__v8sf) __B,
4478*67e74705SXin Li (__mmask8) __U);
4479*67e74705SXin Li }
4480*67e74705SXin Li
4481*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_permutex2var_ps(__mmask8 __U,__m256 __A,__m256i __I,__m256 __B)4482*67e74705SXin Li _mm256_maskz_permutex2var_ps (__mmask8 __U, __m256 __A, __m256i __I,
4483*67e74705SXin Li __m256 __B) {
4484*67e74705SXin Li return (__m256) __builtin_ia32_vpermt2varps256_maskz ((__v8si) __I
4485*67e74705SXin Li /* idx */ ,
4486*67e74705SXin Li (__v8sf) __A,
4487*67e74705SXin Li (__v8sf) __B,
4488*67e74705SXin Li (__mmask8)
4489*67e74705SXin Li __U);
4490*67e74705SXin Li }
4491*67e74705SXin Li
4492*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_permutex2var_epi64(__m128i __A,__m128i __I,__m128i __B)4493*67e74705SXin Li _mm_permutex2var_epi64 (__m128i __A, __m128i __I, __m128i __B) {
4494*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
4495*67e74705SXin Li /* idx */ ,
4496*67e74705SXin Li (__v2di) __A,
4497*67e74705SXin Li (__v2di) __B,
4498*67e74705SXin Li (__mmask8) -1);
4499*67e74705SXin Li }
4500*67e74705SXin Li
4501*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_permutex2var_epi64(__m128i __A,__mmask8 __U,__m128i __I,__m128i __B)4502*67e74705SXin Li _mm_mask_permutex2var_epi64 (__m128i __A, __mmask8 __U, __m128i __I,
4503*67e74705SXin Li __m128i __B) {
4504*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varq128_mask ((__v2di) __I
4505*67e74705SXin Li /* idx */ ,
4506*67e74705SXin Li (__v2di) __A,
4507*67e74705SXin Li (__v2di) __B,
4508*67e74705SXin Li (__mmask8) __U);
4509*67e74705SXin Li }
4510*67e74705SXin Li
4511*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_permutex2var_epi64(__mmask8 __U,__m128i __A,__m128i __I,__m128i __B)4512*67e74705SXin Li _mm_maskz_permutex2var_epi64 (__mmask8 __U, __m128i __A, __m128i __I,
4513*67e74705SXin Li __m128i __B) {
4514*67e74705SXin Li return (__m128i) __builtin_ia32_vpermt2varq128_maskz ((__v2di) __I
4515*67e74705SXin Li /* idx */ ,
4516*67e74705SXin Li (__v2di) __A,
4517*67e74705SXin Li (__v2di) __B,
4518*67e74705SXin Li (__mmask8)
4519*67e74705SXin Li __U);
4520*67e74705SXin Li }
4521*67e74705SXin Li
4522*67e74705SXin Li
4523*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutex2var_epi64(__m256i __A,__m256i __I,__m256i __B)4524*67e74705SXin Li _mm256_permutex2var_epi64 (__m256i __A, __m256i __I, __m256i __B) {
4525*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
4526*67e74705SXin Li /* idx */ ,
4527*67e74705SXin Li (__v4di) __A,
4528*67e74705SXin Li (__v4di) __B,
4529*67e74705SXin Li (__mmask8) -1);
4530*67e74705SXin Li }
4531*67e74705SXin Li
4532*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutex2var_epi64(__m256i __A,__mmask8 __U,__m256i __I,__m256i __B)4533*67e74705SXin Li _mm256_mask_permutex2var_epi64 (__m256i __A, __mmask8 __U, __m256i __I,
4534*67e74705SXin Li __m256i __B) {
4535*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varq256_mask ((__v4di) __I
4536*67e74705SXin Li /* idx */ ,
4537*67e74705SXin Li (__v4di) __A,
4538*67e74705SXin Li (__v4di) __B,
4539*67e74705SXin Li (__mmask8) __U);
4540*67e74705SXin Li }
4541*67e74705SXin Li
4542*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutex2var_epi64(__mmask8 __U,__m256i __A,__m256i __I,__m256i __B)4543*67e74705SXin Li _mm256_maskz_permutex2var_epi64 (__mmask8 __U, __m256i __A,
4544*67e74705SXin Li __m256i __I, __m256i __B) {
4545*67e74705SXin Li return (__m256i) __builtin_ia32_vpermt2varq256_maskz ((__v4di) __I
4546*67e74705SXin Li /* idx */ ,
4547*67e74705SXin Li (__v4di) __A,
4548*67e74705SXin Li (__v4di) __B,
4549*67e74705SXin Li (__mmask8)
4550*67e74705SXin Li __U);
4551*67e74705SXin Li }
4552*67e74705SXin Li
4553*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi8_epi32(__m128i __W,__mmask8 __U,__m128i __A)4554*67e74705SXin Li _mm_mask_cvtepi8_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4555*67e74705SXin Li {
4556*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbd128_mask ((__v16qi) __A,
4557*67e74705SXin Li (__v4si) __W,
4558*67e74705SXin Li (__mmask8) __U);
4559*67e74705SXin Li }
4560*67e74705SXin Li
4561*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi8_epi32(__mmask8 __U,__m128i __A)4562*67e74705SXin Li _mm_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
4563*67e74705SXin Li {
4564*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbd128_mask ((__v16qi) __A,
4565*67e74705SXin Li (__v4si)
4566*67e74705SXin Li _mm_setzero_si128 (),
4567*67e74705SXin Li (__mmask8) __U);
4568*67e74705SXin Li }
4569*67e74705SXin Li
4570*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi8_epi32(__m256i __W,__mmask8 __U,__m128i __A)4571*67e74705SXin Li _mm256_mask_cvtepi8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4572*67e74705SXin Li {
4573*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbd256_mask ((__v16qi) __A,
4574*67e74705SXin Li (__v8si) __W,
4575*67e74705SXin Li (__mmask8) __U);
4576*67e74705SXin Li }
4577*67e74705SXin Li
4578*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi8_epi32(__mmask8 __U,__m128i __A)4579*67e74705SXin Li _mm256_maskz_cvtepi8_epi32 (__mmask8 __U, __m128i __A)
4580*67e74705SXin Li {
4581*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbd256_mask ((__v16qi) __A,
4582*67e74705SXin Li (__v8si)
4583*67e74705SXin Li _mm256_setzero_si256 (),
4584*67e74705SXin Li (__mmask8) __U);
4585*67e74705SXin Li }
4586*67e74705SXin Li
4587*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi8_epi64(__m128i __W,__mmask8 __U,__m128i __A)4588*67e74705SXin Li _mm_mask_cvtepi8_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
4589*67e74705SXin Li {
4590*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbq128_mask ((__v16qi) __A,
4591*67e74705SXin Li (__v2di) __W,
4592*67e74705SXin Li (__mmask8) __U);
4593*67e74705SXin Li }
4594*67e74705SXin Li
4595*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)4596*67e74705SXin Li _mm_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4597*67e74705SXin Li {
4598*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxbq128_mask ((__v16qi) __A,
4599*67e74705SXin Li (__v2di)
4600*67e74705SXin Li _mm_setzero_si128 (),
4601*67e74705SXin Li (__mmask8) __U);
4602*67e74705SXin Li }
4603*67e74705SXin Li
4604*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi8_epi64(__m256i __W,__mmask8 __U,__m128i __A)4605*67e74705SXin Li _mm256_mask_cvtepi8_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
4606*67e74705SXin Li {
4607*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbq256_mask ((__v16qi) __A,
4608*67e74705SXin Li (__v4di) __W,
4609*67e74705SXin Li (__mmask8) __U);
4610*67e74705SXin Li }
4611*67e74705SXin Li
4612*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi8_epi64(__mmask8 __U,__m128i __A)4613*67e74705SXin Li _mm256_maskz_cvtepi8_epi64 (__mmask8 __U, __m128i __A)
4614*67e74705SXin Li {
4615*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxbq256_mask ((__v16qi) __A,
4616*67e74705SXin Li (__v4di)
4617*67e74705SXin Li _mm256_setzero_si256 (),
4618*67e74705SXin Li (__mmask8) __U);
4619*67e74705SXin Li }
4620*67e74705SXin Li
4621*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_epi64(__m128i __W,__mmask8 __U,__m128i __X)4622*67e74705SXin Li _mm_mask_cvtepi32_epi64 (__m128i __W, __mmask8 __U, __m128i __X)
4623*67e74705SXin Li {
4624*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxdq128_mask ((__v4si) __X,
4625*67e74705SXin Li (__v2di) __W,
4626*67e74705SXin Li (__mmask8) __U);
4627*67e74705SXin Li }
4628*67e74705SXin Li
4629*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi32_epi64(__mmask8 __U,__m128i __X)4630*67e74705SXin Li _mm_maskz_cvtepi32_epi64 (__mmask8 __U, __m128i __X)
4631*67e74705SXin Li {
4632*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxdq128_mask ((__v4si) __X,
4633*67e74705SXin Li (__v2di)
4634*67e74705SXin Li _mm_setzero_si128 (),
4635*67e74705SXin Li (__mmask8) __U);
4636*67e74705SXin Li }
4637*67e74705SXin Li
4638*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_epi64(__m256i __W,__mmask8 __U,__m128i __X)4639*67e74705SXin Li _mm256_mask_cvtepi32_epi64 (__m256i __W, __mmask8 __U, __m128i __X)
4640*67e74705SXin Li {
4641*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxdq256_mask ((__v4si) __X,
4642*67e74705SXin Li (__v4di) __W,
4643*67e74705SXin Li (__mmask8) __U);
4644*67e74705SXin Li }
4645*67e74705SXin Li
4646*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi32_epi64(__mmask8 __U,__m128i __X)4647*67e74705SXin Li _mm256_maskz_cvtepi32_epi64 (__mmask8 __U, __m128i __X)
4648*67e74705SXin Li {
4649*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxdq256_mask ((__v4si) __X,
4650*67e74705SXin Li (__v4di)
4651*67e74705SXin Li _mm256_setzero_si256 (),
4652*67e74705SXin Li (__mmask8) __U);
4653*67e74705SXin Li }
4654*67e74705SXin Li
4655*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi16_epi32(__m128i __W,__mmask8 __U,__m128i __A)4656*67e74705SXin Li _mm_mask_cvtepi16_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4657*67e74705SXin Li {
4658*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxwd128_mask ((__v8hi) __A,
4659*67e74705SXin Li (__v4si) __W,
4660*67e74705SXin Li (__mmask8) __U);
4661*67e74705SXin Li }
4662*67e74705SXin Li
4663*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi16_epi32(__mmask8 __U,__m128i __A)4664*67e74705SXin Li _mm_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4665*67e74705SXin Li {
4666*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxwd128_mask ((__v8hi) __A,
4667*67e74705SXin Li (__v4si)
4668*67e74705SXin Li _mm_setzero_si128 (),
4669*67e74705SXin Li (__mmask8) __U);
4670*67e74705SXin Li }
4671*67e74705SXin Li
4672*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi16_epi32(__m256i __W,__mmask8 __U,__m128i __A)4673*67e74705SXin Li _mm256_mask_cvtepi16_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4674*67e74705SXin Li {
4675*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxwd256_mask ((__v8hi) __A,
4676*67e74705SXin Li (__v8si) __W,
4677*67e74705SXin Li (__mmask8) __U);
4678*67e74705SXin Li }
4679*67e74705SXin Li
4680*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi16_epi32(__mmask8 __U,__m128i __A)4681*67e74705SXin Li _mm256_maskz_cvtepi16_epi32 (__mmask8 __U, __m128i __A)
4682*67e74705SXin Li {
4683*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxwd256_mask ((__v8hi) __A,
4684*67e74705SXin Li (__v8si)
4685*67e74705SXin Li _mm256_setzero_si256 (),
4686*67e74705SXin Li (__mmask8) __U);
4687*67e74705SXin Li }
4688*67e74705SXin Li
4689*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi16_epi64(__m128i __W,__mmask8 __U,__m128i __A)4690*67e74705SXin Li _mm_mask_cvtepi16_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
4691*67e74705SXin Li {
4692*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxwq128_mask ((__v8hi) __A,
4693*67e74705SXin Li (__v2di) __W,
4694*67e74705SXin Li (__mmask8) __U);
4695*67e74705SXin Li }
4696*67e74705SXin Li
4697*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)4698*67e74705SXin Li _mm_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4699*67e74705SXin Li {
4700*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsxwq128_mask ((__v8hi) __A,
4701*67e74705SXin Li (__v2di)
4702*67e74705SXin Li _mm_setzero_si128 (),
4703*67e74705SXin Li (__mmask8) __U);
4704*67e74705SXin Li }
4705*67e74705SXin Li
4706*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi16_epi64(__m256i __W,__mmask8 __U,__m128i __A)4707*67e74705SXin Li _mm256_mask_cvtepi16_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
4708*67e74705SXin Li {
4709*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxwq256_mask ((__v8hi) __A,
4710*67e74705SXin Li (__v4di) __W,
4711*67e74705SXin Li (__mmask8) __U);
4712*67e74705SXin Li }
4713*67e74705SXin Li
4714*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi16_epi64(__mmask8 __U,__m128i __A)4715*67e74705SXin Li _mm256_maskz_cvtepi16_epi64 (__mmask8 __U, __m128i __A)
4716*67e74705SXin Li {
4717*67e74705SXin Li return (__m256i) __builtin_ia32_pmovsxwq256_mask ((__v8hi) __A,
4718*67e74705SXin Li (__v4di)
4719*67e74705SXin Li _mm256_setzero_si256 (),
4720*67e74705SXin Li (__mmask8) __U);
4721*67e74705SXin Li }
4722*67e74705SXin Li
4723*67e74705SXin Li
4724*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu8_epi32(__m128i __W,__mmask8 __U,__m128i __A)4725*67e74705SXin Li _mm_mask_cvtepu8_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4726*67e74705SXin Li {
4727*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbd128_mask ((__v16qi) __A,
4728*67e74705SXin Li (__v4si) __W,
4729*67e74705SXin Li (__mmask8) __U);
4730*67e74705SXin Li }
4731*67e74705SXin Li
4732*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu8_epi32(__mmask8 __U,__m128i __A)4733*67e74705SXin Li _mm_maskz_cvtepu8_epi32 (__mmask8 __U, __m128i __A)
4734*67e74705SXin Li {
4735*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbd128_mask ((__v16qi) __A,
4736*67e74705SXin Li (__v4si)
4737*67e74705SXin Li _mm_setzero_si128 (),
4738*67e74705SXin Li (__mmask8) __U);
4739*67e74705SXin Li }
4740*67e74705SXin Li
4741*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu8_epi32(__m256i __W,__mmask8 __U,__m128i __A)4742*67e74705SXin Li _mm256_mask_cvtepu8_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4743*67e74705SXin Li {
4744*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbd256_mask ((__v16qi) __A,
4745*67e74705SXin Li (__v8si) __W,
4746*67e74705SXin Li (__mmask8) __U);
4747*67e74705SXin Li }
4748*67e74705SXin Li
4749*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu8_epi32(__mmask8 __U,__m128i __A)4750*67e74705SXin Li _mm256_maskz_cvtepu8_epi32 (__mmask8 __U, __m128i __A)
4751*67e74705SXin Li {
4752*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbd256_mask ((__v16qi) __A,
4753*67e74705SXin Li (__v8si)
4754*67e74705SXin Li _mm256_setzero_si256 (),
4755*67e74705SXin Li (__mmask8) __U);
4756*67e74705SXin Li }
4757*67e74705SXin Li
4758*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu8_epi64(__m128i __W,__mmask8 __U,__m128i __A)4759*67e74705SXin Li _mm_mask_cvtepu8_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
4760*67e74705SXin Li {
4761*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbq128_mask ((__v16qi) __A,
4762*67e74705SXin Li (__v2di) __W,
4763*67e74705SXin Li (__mmask8) __U);
4764*67e74705SXin Li }
4765*67e74705SXin Li
4766*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)4767*67e74705SXin Li _mm_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4768*67e74705SXin Li {
4769*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxbq128_mask ((__v16qi) __A,
4770*67e74705SXin Li (__v2di)
4771*67e74705SXin Li _mm_setzero_si128 (),
4772*67e74705SXin Li (__mmask8) __U);
4773*67e74705SXin Li }
4774*67e74705SXin Li
4775*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu8_epi64(__m256i __W,__mmask8 __U,__m128i __A)4776*67e74705SXin Li _mm256_mask_cvtepu8_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
4777*67e74705SXin Li {
4778*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbq256_mask ((__v16qi) __A,
4779*67e74705SXin Li (__v4di) __W,
4780*67e74705SXin Li (__mmask8) __U);
4781*67e74705SXin Li }
4782*67e74705SXin Li
4783*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu8_epi64(__mmask8 __U,__m128i __A)4784*67e74705SXin Li _mm256_maskz_cvtepu8_epi64 (__mmask8 __U, __m128i __A)
4785*67e74705SXin Li {
4786*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxbq256_mask ((__v16qi) __A,
4787*67e74705SXin Li (__v4di)
4788*67e74705SXin Li _mm256_setzero_si256 (),
4789*67e74705SXin Li (__mmask8) __U);
4790*67e74705SXin Li }
4791*67e74705SXin Li
4792*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu32_epi64(__m128i __W,__mmask8 __U,__m128i __X)4793*67e74705SXin Li _mm_mask_cvtepu32_epi64 (__m128i __W, __mmask8 __U, __m128i __X)
4794*67e74705SXin Li {
4795*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxdq128_mask ((__v4si) __X,
4796*67e74705SXin Li (__v2di) __W,
4797*67e74705SXin Li (__mmask8) __U);
4798*67e74705SXin Li }
4799*67e74705SXin Li
4800*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu32_epi64(__mmask8 __U,__m128i __X)4801*67e74705SXin Li _mm_maskz_cvtepu32_epi64 (__mmask8 __U, __m128i __X)
4802*67e74705SXin Li {
4803*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxdq128_mask ((__v4si) __X,
4804*67e74705SXin Li (__v2di)
4805*67e74705SXin Li _mm_setzero_si128 (),
4806*67e74705SXin Li (__mmask8) __U);
4807*67e74705SXin Li }
4808*67e74705SXin Li
4809*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu32_epi64(__m256i __W,__mmask8 __U,__m128i __X)4810*67e74705SXin Li _mm256_mask_cvtepu32_epi64 (__m256i __W, __mmask8 __U, __m128i __X)
4811*67e74705SXin Li {
4812*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxdq256_mask ((__v4si) __X,
4813*67e74705SXin Li (__v4di) __W,
4814*67e74705SXin Li (__mmask8) __U);
4815*67e74705SXin Li }
4816*67e74705SXin Li
4817*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu32_epi64(__mmask8 __U,__m128i __X)4818*67e74705SXin Li _mm256_maskz_cvtepu32_epi64 (__mmask8 __U, __m128i __X)
4819*67e74705SXin Li {
4820*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxdq256_mask ((__v4si) __X,
4821*67e74705SXin Li (__v4di)
4822*67e74705SXin Li _mm256_setzero_si256 (),
4823*67e74705SXin Li (__mmask8) __U);
4824*67e74705SXin Li }
4825*67e74705SXin Li
4826*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu16_epi32(__m128i __W,__mmask8 __U,__m128i __A)4827*67e74705SXin Li _mm_mask_cvtepu16_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
4828*67e74705SXin Li {
4829*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxwd128_mask ((__v8hi) __A,
4830*67e74705SXin Li (__v4si) __W,
4831*67e74705SXin Li (__mmask8) __U);
4832*67e74705SXin Li }
4833*67e74705SXin Li
4834*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu16_epi32(__mmask8 __U,__m128i __A)4835*67e74705SXin Li _mm_maskz_cvtepu16_epi32 (__mmask8 __U, __m128i __A)
4836*67e74705SXin Li {
4837*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxwd128_mask ((__v8hi) __A,
4838*67e74705SXin Li (__v4si)
4839*67e74705SXin Li _mm_setzero_si128 (),
4840*67e74705SXin Li (__mmask8) __U);
4841*67e74705SXin Li }
4842*67e74705SXin Li
4843*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu16_epi32(__m256i __W,__mmask8 __U,__m128i __A)4844*67e74705SXin Li _mm256_mask_cvtepu16_epi32 (__m256i __W, __mmask8 __U, __m128i __A)
4845*67e74705SXin Li {
4846*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxwd256_mask ((__v8hi) __A,
4847*67e74705SXin Li (__v8si) __W,
4848*67e74705SXin Li (__mmask8) __U);
4849*67e74705SXin Li }
4850*67e74705SXin Li
4851*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu16_epi32(__mmask8 __U,__m128i __A)4852*67e74705SXin Li _mm256_maskz_cvtepu16_epi32 (__mmask8 __U, __m128i __A)
4853*67e74705SXin Li {
4854*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxwd256_mask ((__v8hi) __A,
4855*67e74705SXin Li (__v8si)
4856*67e74705SXin Li _mm256_setzero_si256 (),
4857*67e74705SXin Li (__mmask8) __U);
4858*67e74705SXin Li }
4859*67e74705SXin Li
4860*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepu16_epi64(__m128i __W,__mmask8 __U,__m128i __A)4861*67e74705SXin Li _mm_mask_cvtepu16_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
4862*67e74705SXin Li {
4863*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxwq128_mask ((__v8hi) __A,
4864*67e74705SXin Li (__v2di) __W,
4865*67e74705SXin Li (__mmask8) __U);
4866*67e74705SXin Li }
4867*67e74705SXin Li
4868*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)4869*67e74705SXin Li _mm_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4870*67e74705SXin Li {
4871*67e74705SXin Li return (__m128i) __builtin_ia32_pmovzxwq128_mask ((__v8hi) __A,
4872*67e74705SXin Li (__v2di)
4873*67e74705SXin Li _mm_setzero_si128 (),
4874*67e74705SXin Li (__mmask8) __U);
4875*67e74705SXin Li }
4876*67e74705SXin Li
4877*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu16_epi64(__m256i __W,__mmask8 __U,__m128i __A)4878*67e74705SXin Li _mm256_mask_cvtepu16_epi64 (__m256i __W, __mmask8 __U, __m128i __A)
4879*67e74705SXin Li {
4880*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxwq256_mask ((__v8hi) __A,
4881*67e74705SXin Li (__v4di) __W,
4882*67e74705SXin Li (__mmask8) __U);
4883*67e74705SXin Li }
4884*67e74705SXin Li
4885*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu16_epi64(__mmask8 __U,__m128i __A)4886*67e74705SXin Li _mm256_maskz_cvtepu16_epi64 (__mmask8 __U, __m128i __A)
4887*67e74705SXin Li {
4888*67e74705SXin Li return (__m256i) __builtin_ia32_pmovzxwq256_mask ((__v8hi) __A,
4889*67e74705SXin Li (__v4di)
4890*67e74705SXin Li _mm256_setzero_si256 (),
4891*67e74705SXin Li (__mmask8) __U);
4892*67e74705SXin Li }
4893*67e74705SXin Li
4894*67e74705SXin Li
4895*67e74705SXin Li #define _mm_rol_epi32(a, b) __extension__ ({\
4896*67e74705SXin Li (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4897*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
4898*67e74705SXin Li (__mmask8)-1); })
4899*67e74705SXin Li
4900*67e74705SXin Li #define _mm_mask_rol_epi32(w, u, a, b) __extension__ ({\
4901*67e74705SXin Li (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4902*67e74705SXin Li (__v4si)(__m128i)(w), (__mmask8)(u)); })
4903*67e74705SXin Li
4904*67e74705SXin Li #define _mm_maskz_rol_epi32(u, a, b) __extension__ ({\
4905*67e74705SXin Li (__m128i)__builtin_ia32_prold128_mask((__v4si)(__m128i)(a), (int)(b), \
4906*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
4907*67e74705SXin Li (__mmask8)(u)); })
4908*67e74705SXin Li
4909*67e74705SXin Li #define _mm256_rol_epi32(a, b) __extension__ ({\
4910*67e74705SXin Li (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4911*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
4912*67e74705SXin Li (__mmask8)-1); })
4913*67e74705SXin Li
4914*67e74705SXin Li #define _mm256_mask_rol_epi32(w, u, a, b) __extension__ ({\
4915*67e74705SXin Li (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4916*67e74705SXin Li (__v8si)(__m256i)(w), (__mmask8)(u)); })
4917*67e74705SXin Li
4918*67e74705SXin Li #define _mm256_maskz_rol_epi32(u, a, b) __extension__ ({\
4919*67e74705SXin Li (__m256i)__builtin_ia32_prold256_mask((__v8si)(__m256i)(a), (int)(b), \
4920*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
4921*67e74705SXin Li (__mmask8)(u)); })
4922*67e74705SXin Li
4923*67e74705SXin Li #define _mm_rol_epi64(a, b) __extension__ ({\
4924*67e74705SXin Li (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4925*67e74705SXin Li (__v2di)_mm_setzero_di(), \
4926*67e74705SXin Li (__mmask8)-1); })
4927*67e74705SXin Li
4928*67e74705SXin Li #define _mm_mask_rol_epi64(w, u, a, b) __extension__ ({\
4929*67e74705SXin Li (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4930*67e74705SXin Li (__v2di)(__m128i)(w), (__mmask8)(u)); })
4931*67e74705SXin Li
4932*67e74705SXin Li #define _mm_maskz_rol_epi64(u, a, b) __extension__ ({\
4933*67e74705SXin Li (__m128i)__builtin_ia32_prolq128_mask((__v2di)(__m128i)(a), (int)(b), \
4934*67e74705SXin Li (__v2di)_mm_setzero_di(), \
4935*67e74705SXin Li (__mmask8)(u)); })
4936*67e74705SXin Li
4937*67e74705SXin Li #define _mm256_rol_epi64(a, b) __extension__ ({\
4938*67e74705SXin Li (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4939*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
4940*67e74705SXin Li (__mmask8)-1); })
4941*67e74705SXin Li
4942*67e74705SXin Li #define _mm256_mask_rol_epi64(w, u, a, b) __extension__ ({\
4943*67e74705SXin Li (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4944*67e74705SXin Li (__v4di)(__m256i)(w), (__mmask8)(u)); })
4945*67e74705SXin Li
4946*67e74705SXin Li #define _mm256_maskz_rol_epi64(u, a, b) __extension__ ({\
4947*67e74705SXin Li (__m256i)__builtin_ia32_prolq256_mask((__v4di)(__m256i)(a), (int)(b), \
4948*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
4949*67e74705SXin Li (__mmask8)(u)); })
4950*67e74705SXin Li
4951*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_rolv_epi32(__m128i __A,__m128i __B)4952*67e74705SXin Li _mm_rolv_epi32 (__m128i __A, __m128i __B)
4953*67e74705SXin Li {
4954*67e74705SXin Li return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4955*67e74705SXin Li (__v4si) __B,
4956*67e74705SXin Li (__v4si)
4957*67e74705SXin Li _mm_setzero_si128 (),
4958*67e74705SXin Li (__mmask8) -1);
4959*67e74705SXin Li }
4960*67e74705SXin Li
4961*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_rolv_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)4962*67e74705SXin Li _mm_mask_rolv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
4963*67e74705SXin Li __m128i __B)
4964*67e74705SXin Li {
4965*67e74705SXin Li return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4966*67e74705SXin Li (__v4si) __B,
4967*67e74705SXin Li (__v4si) __W,
4968*67e74705SXin Li (__mmask8) __U);
4969*67e74705SXin Li }
4970*67e74705SXin Li
4971*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_rolv_epi32(__mmask8 __U,__m128i __A,__m128i __B)4972*67e74705SXin Li _mm_maskz_rolv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
4973*67e74705SXin Li {
4974*67e74705SXin Li return (__m128i) __builtin_ia32_prolvd128_mask ((__v4si) __A,
4975*67e74705SXin Li (__v4si) __B,
4976*67e74705SXin Li (__v4si)
4977*67e74705SXin Li _mm_setzero_si128 (),
4978*67e74705SXin Li (__mmask8) __U);
4979*67e74705SXin Li }
4980*67e74705SXin Li
4981*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_rolv_epi32(__m256i __A,__m256i __B)4982*67e74705SXin Li _mm256_rolv_epi32 (__m256i __A, __m256i __B)
4983*67e74705SXin Li {
4984*67e74705SXin Li return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4985*67e74705SXin Li (__v8si) __B,
4986*67e74705SXin Li (__v8si)
4987*67e74705SXin Li _mm256_setzero_si256 (),
4988*67e74705SXin Li (__mmask8) -1);
4989*67e74705SXin Li }
4990*67e74705SXin Li
4991*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_rolv_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)4992*67e74705SXin Li _mm256_mask_rolv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
4993*67e74705SXin Li __m256i __B)
4994*67e74705SXin Li {
4995*67e74705SXin Li return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
4996*67e74705SXin Li (__v8si) __B,
4997*67e74705SXin Li (__v8si) __W,
4998*67e74705SXin Li (__mmask8) __U);
4999*67e74705SXin Li }
5000*67e74705SXin Li
5001*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_rolv_epi32(__mmask8 __U,__m256i __A,__m256i __B)5002*67e74705SXin Li _mm256_maskz_rolv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
5003*67e74705SXin Li {
5004*67e74705SXin Li return (__m256i) __builtin_ia32_prolvd256_mask ((__v8si) __A,
5005*67e74705SXin Li (__v8si) __B,
5006*67e74705SXin Li (__v8si)
5007*67e74705SXin Li _mm256_setzero_si256 (),
5008*67e74705SXin Li (__mmask8) __U);
5009*67e74705SXin Li }
5010*67e74705SXin Li
5011*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_rolv_epi64(__m128i __A,__m128i __B)5012*67e74705SXin Li _mm_rolv_epi64 (__m128i __A, __m128i __B)
5013*67e74705SXin Li {
5014*67e74705SXin Li return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
5015*67e74705SXin Li (__v2di) __B,
5016*67e74705SXin Li (__v2di)
5017*67e74705SXin Li _mm_setzero_di (),
5018*67e74705SXin Li (__mmask8) -1);
5019*67e74705SXin Li }
5020*67e74705SXin Li
5021*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_rolv_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5022*67e74705SXin Li _mm_mask_rolv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
5023*67e74705SXin Li __m128i __B)
5024*67e74705SXin Li {
5025*67e74705SXin Li return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
5026*67e74705SXin Li (__v2di) __B,
5027*67e74705SXin Li (__v2di) __W,
5028*67e74705SXin Li (__mmask8) __U);
5029*67e74705SXin Li }
5030*67e74705SXin Li
5031*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_rolv_epi64(__mmask8 __U,__m128i __A,__m128i __B)5032*67e74705SXin Li _mm_maskz_rolv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
5033*67e74705SXin Li {
5034*67e74705SXin Li return (__m128i) __builtin_ia32_prolvq128_mask ((__v2di) __A,
5035*67e74705SXin Li (__v2di) __B,
5036*67e74705SXin Li (__v2di)
5037*67e74705SXin Li _mm_setzero_di (),
5038*67e74705SXin Li (__mmask8) __U);
5039*67e74705SXin Li }
5040*67e74705SXin Li
5041*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_rolv_epi64(__m256i __A,__m256i __B)5042*67e74705SXin Li _mm256_rolv_epi64 (__m256i __A, __m256i __B)
5043*67e74705SXin Li {
5044*67e74705SXin Li return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
5045*67e74705SXin Li (__v4di) __B,
5046*67e74705SXin Li (__v4di)
5047*67e74705SXin Li _mm256_setzero_si256 (),
5048*67e74705SXin Li (__mmask8) -1);
5049*67e74705SXin Li }
5050*67e74705SXin Li
5051*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_rolv_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)5052*67e74705SXin Li _mm256_mask_rolv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
5053*67e74705SXin Li __m256i __B)
5054*67e74705SXin Li {
5055*67e74705SXin Li return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
5056*67e74705SXin Li (__v4di) __B,
5057*67e74705SXin Li (__v4di) __W,
5058*67e74705SXin Li (__mmask8) __U);
5059*67e74705SXin Li }
5060*67e74705SXin Li
5061*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_rolv_epi64(__mmask8 __U,__m256i __A,__m256i __B)5062*67e74705SXin Li _mm256_maskz_rolv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
5063*67e74705SXin Li {
5064*67e74705SXin Li return (__m256i) __builtin_ia32_prolvq256_mask ((__v4di) __A,
5065*67e74705SXin Li (__v4di) __B,
5066*67e74705SXin Li (__v4di)
5067*67e74705SXin Li _mm256_setzero_si256 (),
5068*67e74705SXin Li (__mmask8) __U);
5069*67e74705SXin Li }
5070*67e74705SXin Li
5071*67e74705SXin Li #define _mm_ror_epi32(A, B) __extension__ ({ \
5072*67e74705SXin Li (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
5073*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
5074*67e74705SXin Li (__mmask8)-1); })
5075*67e74705SXin Li
5076*67e74705SXin Li #define _mm_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5077*67e74705SXin Li (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
5078*67e74705SXin Li (__v4si)(__m128i)(W), (__mmask8)(U)); })
5079*67e74705SXin Li
5080*67e74705SXin Li #define _mm_maskz_ror_epi32(U, A, B) __extension__ ({ \
5081*67e74705SXin Li (__m128i)__builtin_ia32_prord128_mask((__v4si)(__m128i)(A), (int)(B), \
5082*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
5083*67e74705SXin Li (__mmask8)(U)); })
5084*67e74705SXin Li
5085*67e74705SXin Li #define _mm256_ror_epi32(A, B) __extension__ ({ \
5086*67e74705SXin Li (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
5087*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
5088*67e74705SXin Li (__mmask8)-1); })
5089*67e74705SXin Li
5090*67e74705SXin Li #define _mm256_mask_ror_epi32(W, U, A, B) __extension__ ({ \
5091*67e74705SXin Li (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
5092*67e74705SXin Li (__v8si)(__m256i)(W), (__mmask8)(U)); })
5093*67e74705SXin Li
5094*67e74705SXin Li #define _mm256_maskz_ror_epi32(U, A, B) __extension__ ({ \
5095*67e74705SXin Li (__m256i)__builtin_ia32_prord256_mask((__v8si)(__m256i)(A), (int)(B), \
5096*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
5097*67e74705SXin Li (__mmask8)(U)); })
5098*67e74705SXin Li
5099*67e74705SXin Li #define _mm_ror_epi64(A, B) __extension__ ({ \
5100*67e74705SXin Li (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
5101*67e74705SXin Li (__v2di)_mm_setzero_di(), \
5102*67e74705SXin Li (__mmask8)-1); })
5103*67e74705SXin Li
5104*67e74705SXin Li #define _mm_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5105*67e74705SXin Li (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
5106*67e74705SXin Li (__v2di)(__m128i)(W), (__mmask8)(U)); })
5107*67e74705SXin Li
5108*67e74705SXin Li #define _mm_maskz_ror_epi64(U, A, B) __extension__ ({ \
5109*67e74705SXin Li (__m128i)__builtin_ia32_prorq128_mask((__v2di)(__m128i)(A), (int)(B), \
5110*67e74705SXin Li (__v2di)_mm_setzero_di(), \
5111*67e74705SXin Li (__mmask8)(U)); })
5112*67e74705SXin Li
5113*67e74705SXin Li #define _mm256_ror_epi64(A, B) __extension__ ({ \
5114*67e74705SXin Li (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
5115*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
5116*67e74705SXin Li (__mmask8)-1); })
5117*67e74705SXin Li
5118*67e74705SXin Li #define _mm256_mask_ror_epi64(W, U, A, B) __extension__ ({ \
5119*67e74705SXin Li (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
5120*67e74705SXin Li (__v4di)(__m256i)(W), (__mmask8)(U)); })
5121*67e74705SXin Li
5122*67e74705SXin Li #define _mm256_maskz_ror_epi64(U, A, B) __extension__ ({ \
5123*67e74705SXin Li (__m256i)__builtin_ia32_prorq256_mask((__v4di)(__m256i)(A), (int)(B), \
5124*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
5125*67e74705SXin Li (__mmask8)(U)); })
5126*67e74705SXin Li
5127*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sll_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5128*67e74705SXin Li _mm_mask_sll_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
5129*67e74705SXin Li __m128i __B)
5130*67e74705SXin Li {
5131*67e74705SXin Li return (__m128i) __builtin_ia32_pslld128_mask ((__v4si) __A,
5132*67e74705SXin Li (__v4si) __B,
5133*67e74705SXin Li (__v4si) __W,
5134*67e74705SXin Li (__mmask8) __U);
5135*67e74705SXin Li }
5136*67e74705SXin Li
5137*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sll_epi32(__mmask8 __U,__m128i __A,__m128i __B)5138*67e74705SXin Li _mm_maskz_sll_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
5139*67e74705SXin Li {
5140*67e74705SXin Li return (__m128i) __builtin_ia32_pslld128_mask ((__v4si) __A,
5141*67e74705SXin Li (__v4si) __B,
5142*67e74705SXin Li (__v4si)
5143*67e74705SXin Li _mm_setzero_si128 (),
5144*67e74705SXin Li (__mmask8) __U);
5145*67e74705SXin Li }
5146*67e74705SXin Li
5147*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sll_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)5148*67e74705SXin Li _mm256_mask_sll_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
5149*67e74705SXin Li __m128i __B)
5150*67e74705SXin Li {
5151*67e74705SXin Li return (__m256i) __builtin_ia32_pslld256_mask ((__v8si) __A,
5152*67e74705SXin Li (__v4si) __B,
5153*67e74705SXin Li (__v8si) __W,
5154*67e74705SXin Li (__mmask8) __U);
5155*67e74705SXin Li }
5156*67e74705SXin Li
5157*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sll_epi32(__mmask8 __U,__m256i __A,__m128i __B)5158*67e74705SXin Li _mm256_maskz_sll_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
5159*67e74705SXin Li {
5160*67e74705SXin Li return (__m256i) __builtin_ia32_pslld256_mask ((__v8si) __A,
5161*67e74705SXin Li (__v4si) __B,
5162*67e74705SXin Li (__v8si)
5163*67e74705SXin Li _mm256_setzero_si256 (),
5164*67e74705SXin Li (__mmask8) __U);
5165*67e74705SXin Li }
5166*67e74705SXin Li
5167*67e74705SXin Li #define _mm_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5168*67e74705SXin Li (__m128i)__builtin_ia32_pslldi128_mask((__v4si)(__m128i)(A), (int)(B), \
5169*67e74705SXin Li (__v4si)(__m128i)(W), \
5170*67e74705SXin Li (__mmask8)(U)); })
5171*67e74705SXin Li
5172*67e74705SXin Li #define _mm_maskz_slli_epi32(U, A, B) __extension__ ({ \
5173*67e74705SXin Li (__m128i)__builtin_ia32_pslldi128_mask((__v4si)(__m128i)(A), (int)(B), \
5174*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
5175*67e74705SXin Li (__mmask8)(U)); })
5176*67e74705SXin Li
5177*67e74705SXin Li #define _mm256_mask_slli_epi32(W, U, A, B) __extension__ ({ \
5178*67e74705SXin Li (__m256i)__builtin_ia32_pslldi256_mask((__v8si)(__m256i)(A), (int)(B), \
5179*67e74705SXin Li (__v8si)(__m256i)(W), \
5180*67e74705SXin Li (__mmask8)(U)); })
5181*67e74705SXin Li
5182*67e74705SXin Li #define _mm256_maskz_slli_epi32(U, A, B) __extension__ ({ \
5183*67e74705SXin Li (__m256i)__builtin_ia32_pslldi256_mask((__v8si)(__m256i)(A), (int)(B), \
5184*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
5185*67e74705SXin Li (__mmask8)(U)); })
5186*67e74705SXin Li
5187*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sll_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5188*67e74705SXin Li _mm_mask_sll_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
5189*67e74705SXin Li __m128i __B)
5190*67e74705SXin Li {
5191*67e74705SXin Li return (__m128i) __builtin_ia32_psllq128_mask ((__v2di) __A,
5192*67e74705SXin Li (__v2di) __B,
5193*67e74705SXin Li (__v2di) __W,
5194*67e74705SXin Li (__mmask8) __U);
5195*67e74705SXin Li }
5196*67e74705SXin Li
5197*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sll_epi64(__mmask8 __U,__m128i __A,__m128i __B)5198*67e74705SXin Li _mm_maskz_sll_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
5199*67e74705SXin Li {
5200*67e74705SXin Li return (__m128i) __builtin_ia32_psllq128_mask ((__v2di) __A,
5201*67e74705SXin Li (__v2di) __B,
5202*67e74705SXin Li (__v2di)
5203*67e74705SXin Li _mm_setzero_di (),
5204*67e74705SXin Li (__mmask8) __U);
5205*67e74705SXin Li }
5206*67e74705SXin Li
5207*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sll_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)5208*67e74705SXin Li _mm256_mask_sll_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
5209*67e74705SXin Li __m128i __B)
5210*67e74705SXin Li {
5211*67e74705SXin Li return (__m256i) __builtin_ia32_psllq256_mask ((__v4di) __A,
5212*67e74705SXin Li (__v2di) __B,
5213*67e74705SXin Li (__v4di) __W,
5214*67e74705SXin Li (__mmask8) __U);
5215*67e74705SXin Li }
5216*67e74705SXin Li
5217*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sll_epi64(__mmask8 __U,__m256i __A,__m128i __B)5218*67e74705SXin Li _mm256_maskz_sll_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
5219*67e74705SXin Li {
5220*67e74705SXin Li return (__m256i) __builtin_ia32_psllq256_mask ((__v4di) __A,
5221*67e74705SXin Li (__v2di) __B,
5222*67e74705SXin Li (__v4di)
5223*67e74705SXin Li _mm256_setzero_si256 (),
5224*67e74705SXin Li (__mmask8) __U);
5225*67e74705SXin Li }
5226*67e74705SXin Li
5227*67e74705SXin Li #define _mm_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5228*67e74705SXin Li (__m128i)__builtin_ia32_psllqi128_mask((__v2di)(__m128i)(A), (int)(B), \
5229*67e74705SXin Li (__v2di)(__m128i)(W), \
5230*67e74705SXin Li (__mmask8)(U)); })
5231*67e74705SXin Li
5232*67e74705SXin Li #define _mm_maskz_slli_epi64(U, A, B) __extension__ ({ \
5233*67e74705SXin Li (__m128i)__builtin_ia32_psllqi128_mask((__v2di)(__m128i)(A), (int)(B), \
5234*67e74705SXin Li (__v2di)_mm_setzero_di(), \
5235*67e74705SXin Li (__mmask8)(U)); })
5236*67e74705SXin Li
5237*67e74705SXin Li #define _mm256_mask_slli_epi64(W, U, A, B) __extension__ ({ \
5238*67e74705SXin Li (__m256i)__builtin_ia32_psllqi256_mask((__v4di)(__m256i)(A), (int)(B), \
5239*67e74705SXin Li (__v4di)(__m256i)(W), \
5240*67e74705SXin Li (__mmask8)(U)); })
5241*67e74705SXin Li
5242*67e74705SXin Li #define _mm256_maskz_slli_epi64(U, A, B) __extension__ ({ \
5243*67e74705SXin Li (__m256i)__builtin_ia32_psllqi256_mask((__v4di)(__m256i)(A), (int)(B), \
5244*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
5245*67e74705SXin Li (__mmask8)(U)); })
5246*67e74705SXin Li
5247*67e74705SXin Li
5248*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_rorv_epi32(__m128i __A,__m128i __B)5249*67e74705SXin Li _mm_rorv_epi32 (__m128i __A, __m128i __B)
5250*67e74705SXin Li {
5251*67e74705SXin Li return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5252*67e74705SXin Li (__v4si) __B,
5253*67e74705SXin Li (__v4si)
5254*67e74705SXin Li _mm_setzero_si128 (),
5255*67e74705SXin Li (__mmask8) -1);
5256*67e74705SXin Li }
5257*67e74705SXin Li
5258*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_rorv_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5259*67e74705SXin Li _mm_mask_rorv_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
5260*67e74705SXin Li __m128i __B)
5261*67e74705SXin Li {
5262*67e74705SXin Li return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5263*67e74705SXin Li (__v4si) __B,
5264*67e74705SXin Li (__v4si) __W,
5265*67e74705SXin Li (__mmask8) __U);
5266*67e74705SXin Li }
5267*67e74705SXin Li
5268*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_rorv_epi32(__mmask8 __U,__m128i __A,__m128i __B)5269*67e74705SXin Li _mm_maskz_rorv_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
5270*67e74705SXin Li {
5271*67e74705SXin Li return (__m128i) __builtin_ia32_prorvd128_mask ((__v4si) __A,
5272*67e74705SXin Li (__v4si) __B,
5273*67e74705SXin Li (__v4si)
5274*67e74705SXin Li _mm_setzero_si128 (),
5275*67e74705SXin Li (__mmask8) __U);
5276*67e74705SXin Li }
5277*67e74705SXin Li
5278*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_rorv_epi32(__m256i __A,__m256i __B)5279*67e74705SXin Li _mm256_rorv_epi32 (__m256i __A, __m256i __B)
5280*67e74705SXin Li {
5281*67e74705SXin Li return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5282*67e74705SXin Li (__v8si) __B,
5283*67e74705SXin Li (__v8si)
5284*67e74705SXin Li _mm256_setzero_si256 (),
5285*67e74705SXin Li (__mmask8) -1);
5286*67e74705SXin Li }
5287*67e74705SXin Li
5288*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_rorv_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)5289*67e74705SXin Li _mm256_mask_rorv_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
5290*67e74705SXin Li __m256i __B)
5291*67e74705SXin Li {
5292*67e74705SXin Li return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5293*67e74705SXin Li (__v8si) __B,
5294*67e74705SXin Li (__v8si) __W,
5295*67e74705SXin Li (__mmask8) __U);
5296*67e74705SXin Li }
5297*67e74705SXin Li
5298*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_rorv_epi32(__mmask8 __U,__m256i __A,__m256i __B)5299*67e74705SXin Li _mm256_maskz_rorv_epi32 (__mmask8 __U, __m256i __A, __m256i __B)
5300*67e74705SXin Li {
5301*67e74705SXin Li return (__m256i) __builtin_ia32_prorvd256_mask ((__v8si) __A,
5302*67e74705SXin Li (__v8si) __B,
5303*67e74705SXin Li (__v8si)
5304*67e74705SXin Li _mm256_setzero_si256 (),
5305*67e74705SXin Li (__mmask8) __U);
5306*67e74705SXin Li }
5307*67e74705SXin Li
5308*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_rorv_epi64(__m128i __A,__m128i __B)5309*67e74705SXin Li _mm_rorv_epi64 (__m128i __A, __m128i __B)
5310*67e74705SXin Li {
5311*67e74705SXin Li return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5312*67e74705SXin Li (__v2di) __B,
5313*67e74705SXin Li (__v2di)
5314*67e74705SXin Li _mm_setzero_di (),
5315*67e74705SXin Li (__mmask8) -1);
5316*67e74705SXin Li }
5317*67e74705SXin Li
5318*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_rorv_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5319*67e74705SXin Li _mm_mask_rorv_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
5320*67e74705SXin Li __m128i __B)
5321*67e74705SXin Li {
5322*67e74705SXin Li return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5323*67e74705SXin Li (__v2di) __B,
5324*67e74705SXin Li (__v2di) __W,
5325*67e74705SXin Li (__mmask8) __U);
5326*67e74705SXin Li }
5327*67e74705SXin Li
5328*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_rorv_epi64(__mmask8 __U,__m128i __A,__m128i __B)5329*67e74705SXin Li _mm_maskz_rorv_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
5330*67e74705SXin Li {
5331*67e74705SXin Li return (__m128i) __builtin_ia32_prorvq128_mask ((__v2di) __A,
5332*67e74705SXin Li (__v2di) __B,
5333*67e74705SXin Li (__v2di)
5334*67e74705SXin Li _mm_setzero_di (),
5335*67e74705SXin Li (__mmask8) __U);
5336*67e74705SXin Li }
5337*67e74705SXin Li
5338*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_rorv_epi64(__m256i __A,__m256i __B)5339*67e74705SXin Li _mm256_rorv_epi64 (__m256i __A, __m256i __B)
5340*67e74705SXin Li {
5341*67e74705SXin Li return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5342*67e74705SXin Li (__v4di) __B,
5343*67e74705SXin Li (__v4di)
5344*67e74705SXin Li _mm256_setzero_si256 (),
5345*67e74705SXin Li (__mmask8) -1);
5346*67e74705SXin Li }
5347*67e74705SXin Li
5348*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_rorv_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)5349*67e74705SXin Li _mm256_mask_rorv_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
5350*67e74705SXin Li __m256i __B)
5351*67e74705SXin Li {
5352*67e74705SXin Li return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5353*67e74705SXin Li (__v4di) __B,
5354*67e74705SXin Li (__v4di) __W,
5355*67e74705SXin Li (__mmask8) __U);
5356*67e74705SXin Li }
5357*67e74705SXin Li
5358*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_rorv_epi64(__mmask8 __U,__m256i __A,__m256i __B)5359*67e74705SXin Li _mm256_maskz_rorv_epi64 (__mmask8 __U, __m256i __A, __m256i __B)
5360*67e74705SXin Li {
5361*67e74705SXin Li return (__m256i) __builtin_ia32_prorvq256_mask ((__v4di) __A,
5362*67e74705SXin Li (__v4di) __B,
5363*67e74705SXin Li (__v4di)
5364*67e74705SXin Li _mm256_setzero_si256 (),
5365*67e74705SXin Li (__mmask8) __U);
5366*67e74705SXin Li }
5367*67e74705SXin Li
5368*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sllv_epi64(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5369*67e74705SXin Li _mm_mask_sllv_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
5370*67e74705SXin Li __m128i __Y)
5371*67e74705SXin Li {
5372*67e74705SXin Li return (__m128i) __builtin_ia32_psllv2di_mask ((__v2di) __X,
5373*67e74705SXin Li (__v2di) __Y,
5374*67e74705SXin Li (__v2di) __W,
5375*67e74705SXin Li (__mmask8) __U);
5376*67e74705SXin Li }
5377*67e74705SXin Li
5378*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sllv_epi64(__mmask8 __U,__m128i __X,__m128i __Y)5379*67e74705SXin Li _mm_maskz_sllv_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
5380*67e74705SXin Li {
5381*67e74705SXin Li return (__m128i) __builtin_ia32_psllv2di_mask ((__v2di) __X,
5382*67e74705SXin Li (__v2di) __Y,
5383*67e74705SXin Li (__v2di)
5384*67e74705SXin Li _mm_setzero_di (),
5385*67e74705SXin Li (__mmask8) __U);
5386*67e74705SXin Li }
5387*67e74705SXin Li
5388*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sllv_epi64(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5389*67e74705SXin Li _mm256_mask_sllv_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
5390*67e74705SXin Li __m256i __Y)
5391*67e74705SXin Li {
5392*67e74705SXin Li return (__m256i) __builtin_ia32_psllv4di_mask ((__v4di) __X,
5393*67e74705SXin Li (__v4di) __Y,
5394*67e74705SXin Li (__v4di) __W,
5395*67e74705SXin Li (__mmask8) __U);
5396*67e74705SXin Li }
5397*67e74705SXin Li
5398*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sllv_epi64(__mmask8 __U,__m256i __X,__m256i __Y)5399*67e74705SXin Li _mm256_maskz_sllv_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5400*67e74705SXin Li {
5401*67e74705SXin Li return (__m256i) __builtin_ia32_psllv4di_mask ((__v4di) __X,
5402*67e74705SXin Li (__v4di) __Y,
5403*67e74705SXin Li (__v4di)
5404*67e74705SXin Li _mm256_setzero_si256 (),
5405*67e74705SXin Li (__mmask8) __U);
5406*67e74705SXin Li }
5407*67e74705SXin Li
5408*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sllv_epi32(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5409*67e74705SXin Li _mm_mask_sllv_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
5410*67e74705SXin Li __m128i __Y)
5411*67e74705SXin Li {
5412*67e74705SXin Li return (__m128i) __builtin_ia32_psllv4si_mask ((__v4si) __X,
5413*67e74705SXin Li (__v4si) __Y,
5414*67e74705SXin Li (__v4si) __W,
5415*67e74705SXin Li (__mmask8) __U);
5416*67e74705SXin Li }
5417*67e74705SXin Li
5418*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sllv_epi32(__mmask8 __U,__m128i __X,__m128i __Y)5419*67e74705SXin Li _mm_maskz_sllv_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
5420*67e74705SXin Li {
5421*67e74705SXin Li return (__m128i) __builtin_ia32_psllv4si_mask ((__v4si) __X,
5422*67e74705SXin Li (__v4si) __Y,
5423*67e74705SXin Li (__v4si)
5424*67e74705SXin Li _mm_setzero_si128 (),
5425*67e74705SXin Li (__mmask8) __U);
5426*67e74705SXin Li }
5427*67e74705SXin Li
5428*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sllv_epi32(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5429*67e74705SXin Li _mm256_mask_sllv_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
5430*67e74705SXin Li __m256i __Y)
5431*67e74705SXin Li {
5432*67e74705SXin Li return (__m256i) __builtin_ia32_psllv8si_mask ((__v8si) __X,
5433*67e74705SXin Li (__v8si) __Y,
5434*67e74705SXin Li (__v8si) __W,
5435*67e74705SXin Li (__mmask8) __U);
5436*67e74705SXin Li }
5437*67e74705SXin Li
5438*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sllv_epi32(__mmask8 __U,__m256i __X,__m256i __Y)5439*67e74705SXin Li _mm256_maskz_sllv_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
5440*67e74705SXin Li {
5441*67e74705SXin Li return (__m256i) __builtin_ia32_psllv8si_mask ((__v8si) __X,
5442*67e74705SXin Li (__v8si) __Y,
5443*67e74705SXin Li (__v8si)
5444*67e74705SXin Li _mm256_setzero_si256 (),
5445*67e74705SXin Li (__mmask8) __U);
5446*67e74705SXin Li }
5447*67e74705SXin Li
5448*67e74705SXin Li
5449*67e74705SXin Li
5450*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srlv_epi64(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5451*67e74705SXin Li _mm_mask_srlv_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
5452*67e74705SXin Li __m128i __Y)
5453*67e74705SXin Li {
5454*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv2di_mask ((__v2di) __X,
5455*67e74705SXin Li (__v2di) __Y,
5456*67e74705SXin Li (__v2di) __W,
5457*67e74705SXin Li (__mmask8) __U);
5458*67e74705SXin Li }
5459*67e74705SXin Li
5460*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srlv_epi64(__mmask8 __U,__m128i __X,__m128i __Y)5461*67e74705SXin Li _mm_maskz_srlv_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
5462*67e74705SXin Li {
5463*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv2di_mask ((__v2di) __X,
5464*67e74705SXin Li (__v2di) __Y,
5465*67e74705SXin Li (__v2di)
5466*67e74705SXin Li _mm_setzero_di (),
5467*67e74705SXin Li (__mmask8) __U);
5468*67e74705SXin Li }
5469*67e74705SXin Li
5470*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srlv_epi64(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5471*67e74705SXin Li _mm256_mask_srlv_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
5472*67e74705SXin Li __m256i __Y)
5473*67e74705SXin Li {
5474*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv4di_mask ((__v4di) __X,
5475*67e74705SXin Li (__v4di) __Y,
5476*67e74705SXin Li (__v4di) __W,
5477*67e74705SXin Li (__mmask8) __U);
5478*67e74705SXin Li }
5479*67e74705SXin Li
5480*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srlv_epi64(__mmask8 __U,__m256i __X,__m256i __Y)5481*67e74705SXin Li _mm256_maskz_srlv_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5482*67e74705SXin Li {
5483*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv4di_mask ((__v4di) __X,
5484*67e74705SXin Li (__v4di) __Y,
5485*67e74705SXin Li (__v4di)
5486*67e74705SXin Li _mm256_setzero_si256 (),
5487*67e74705SXin Li (__mmask8) __U);
5488*67e74705SXin Li }
5489*67e74705SXin Li
5490*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srlv_epi32(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5491*67e74705SXin Li _mm_mask_srlv_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
5492*67e74705SXin Li __m128i __Y)
5493*67e74705SXin Li {
5494*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv4si_mask ((__v4si) __X,
5495*67e74705SXin Li (__v4si) __Y,
5496*67e74705SXin Li (__v4si) __W,
5497*67e74705SXin Li (__mmask8) __U);
5498*67e74705SXin Li }
5499*67e74705SXin Li
5500*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srlv_epi32(__mmask8 __U,__m128i __X,__m128i __Y)5501*67e74705SXin Li _mm_maskz_srlv_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
5502*67e74705SXin Li {
5503*67e74705SXin Li return (__m128i) __builtin_ia32_psrlv4si_mask ((__v4si) __X,
5504*67e74705SXin Li (__v4si) __Y,
5505*67e74705SXin Li (__v4si)
5506*67e74705SXin Li _mm_setzero_si128 (),
5507*67e74705SXin Li (__mmask8) __U);
5508*67e74705SXin Li }
5509*67e74705SXin Li
5510*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srlv_epi32(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5511*67e74705SXin Li _mm256_mask_srlv_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
5512*67e74705SXin Li __m256i __Y)
5513*67e74705SXin Li {
5514*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv8si_mask ((__v8si) __X,
5515*67e74705SXin Li (__v8si) __Y,
5516*67e74705SXin Li (__v8si) __W,
5517*67e74705SXin Li (__mmask8) __U);
5518*67e74705SXin Li }
5519*67e74705SXin Li
5520*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srlv_epi32(__mmask8 __U,__m256i __X,__m256i __Y)5521*67e74705SXin Li _mm256_maskz_srlv_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
5522*67e74705SXin Li {
5523*67e74705SXin Li return (__m256i) __builtin_ia32_psrlv8si_mask ((__v8si) __X,
5524*67e74705SXin Li (__v8si) __Y,
5525*67e74705SXin Li (__v8si)
5526*67e74705SXin Li _mm256_setzero_si256 (),
5527*67e74705SXin Li (__mmask8) __U);
5528*67e74705SXin Li }
5529*67e74705SXin Li
5530*67e74705SXin Li
5531*67e74705SXin Li
5532*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srl_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5533*67e74705SXin Li _mm_mask_srl_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
5534*67e74705SXin Li __m128i __B)
5535*67e74705SXin Li {
5536*67e74705SXin Li return (__m128i) __builtin_ia32_psrld128_mask ((__v4si) __A,
5537*67e74705SXin Li (__v4si) __B,
5538*67e74705SXin Li (__v4si) __W,
5539*67e74705SXin Li (__mmask8) __U);
5540*67e74705SXin Li }
5541*67e74705SXin Li
5542*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srl_epi32(__mmask8 __U,__m128i __A,__m128i __B)5543*67e74705SXin Li _mm_maskz_srl_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
5544*67e74705SXin Li {
5545*67e74705SXin Li return (__m128i) __builtin_ia32_psrld128_mask ((__v4si) __A,
5546*67e74705SXin Li (__v4si) __B,
5547*67e74705SXin Li (__v4si)
5548*67e74705SXin Li _mm_setzero_si128 (),
5549*67e74705SXin Li (__mmask8) __U);
5550*67e74705SXin Li }
5551*67e74705SXin Li
5552*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srl_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)5553*67e74705SXin Li _mm256_mask_srl_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
5554*67e74705SXin Li __m128i __B)
5555*67e74705SXin Li {
5556*67e74705SXin Li return (__m256i) __builtin_ia32_psrld256_mask ((__v8si) __A,
5557*67e74705SXin Li (__v4si) __B,
5558*67e74705SXin Li (__v8si) __W,
5559*67e74705SXin Li (__mmask8) __U);
5560*67e74705SXin Li }
5561*67e74705SXin Li
5562*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srl_epi32(__mmask8 __U,__m256i __A,__m128i __B)5563*67e74705SXin Li _mm256_maskz_srl_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
5564*67e74705SXin Li {
5565*67e74705SXin Li return (__m256i) __builtin_ia32_psrld256_mask ((__v8si) __A,
5566*67e74705SXin Li (__v4si) __B,
5567*67e74705SXin Li (__v8si)
5568*67e74705SXin Li _mm256_setzero_si256 (),
5569*67e74705SXin Li (__mmask8) __U);
5570*67e74705SXin Li }
5571*67e74705SXin Li
5572*67e74705SXin Li #define _mm_mask_srli_epi32(W, U, A, imm) __extension__ ({ \
5573*67e74705SXin Li (__m128i)__builtin_ia32_psrldi128_mask((__v4si)(__m128i)(A), (int)(imm), \
5574*67e74705SXin Li (__v4si)(__m128i)(W), \
5575*67e74705SXin Li (__mmask8)(U)); })
5576*67e74705SXin Li
5577*67e74705SXin Li #define _mm_maskz_srli_epi32(U, A, imm) __extension__ ({ \
5578*67e74705SXin Li (__m128i)__builtin_ia32_psrldi128_mask((__v4si)(__m128i)(A), (int)(imm), \
5579*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
5580*67e74705SXin Li (__mmask8)(U)); })
5581*67e74705SXin Li
5582*67e74705SXin Li #define _mm256_mask_srli_epi32(W, U, A, imm) __extension__ ({ \
5583*67e74705SXin Li (__m256i)__builtin_ia32_psrldi256_mask((__v8si)(__m256i)(A), (int)(imm), \
5584*67e74705SXin Li (__v8si)(__m256i)(W), \
5585*67e74705SXin Li (__mmask8)(U)); })
5586*67e74705SXin Li
5587*67e74705SXin Li #define _mm256_maskz_srli_epi32(U, A, imm) __extension__ ({ \
5588*67e74705SXin Li (__m256i)__builtin_ia32_psrldi256_mask((__v8si)(__m256i)(A), (int)(imm), \
5589*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
5590*67e74705SXin Li (__mmask8)(U)); })
5591*67e74705SXin Li
5592*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srl_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)5593*67e74705SXin Li _mm_mask_srl_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
5594*67e74705SXin Li __m128i __B)
5595*67e74705SXin Li {
5596*67e74705SXin Li return (__m128i) __builtin_ia32_psrlq128_mask ((__v2di) __A,
5597*67e74705SXin Li (__v2di) __B,
5598*67e74705SXin Li (__v2di) __W,
5599*67e74705SXin Li (__mmask8) __U);
5600*67e74705SXin Li }
5601*67e74705SXin Li
5602*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srl_epi64(__mmask8 __U,__m128i __A,__m128i __B)5603*67e74705SXin Li _mm_maskz_srl_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
5604*67e74705SXin Li {
5605*67e74705SXin Li return (__m128i) __builtin_ia32_psrlq128_mask ((__v2di) __A,
5606*67e74705SXin Li (__v2di) __B,
5607*67e74705SXin Li (__v2di)
5608*67e74705SXin Li _mm_setzero_di (),
5609*67e74705SXin Li (__mmask8) __U);
5610*67e74705SXin Li }
5611*67e74705SXin Li
5612*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srl_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)5613*67e74705SXin Li _mm256_mask_srl_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
5614*67e74705SXin Li __m128i __B)
5615*67e74705SXin Li {
5616*67e74705SXin Li return (__m256i) __builtin_ia32_psrlq256_mask ((__v4di) __A,
5617*67e74705SXin Li (__v2di) __B,
5618*67e74705SXin Li (__v4di) __W,
5619*67e74705SXin Li (__mmask8) __U);
5620*67e74705SXin Li }
5621*67e74705SXin Li
5622*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srl_epi64(__mmask8 __U,__m256i __A,__m128i __B)5623*67e74705SXin Li _mm256_maskz_srl_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
5624*67e74705SXin Li {
5625*67e74705SXin Li return (__m256i) __builtin_ia32_psrlq256_mask ((__v4di) __A,
5626*67e74705SXin Li (__v2di) __B,
5627*67e74705SXin Li (__v4di)
5628*67e74705SXin Li _mm256_setzero_si256 (),
5629*67e74705SXin Li (__mmask8) __U);
5630*67e74705SXin Li }
5631*67e74705SXin Li
5632*67e74705SXin Li #define _mm_mask_srli_epi64(W, U, A, imm) __extension__ ({ \
5633*67e74705SXin Li (__m128i)__builtin_ia32_psrlqi128_mask((__v2di)(__m128i)(A), (int)(imm), \
5634*67e74705SXin Li (__v2di)(__m128i)(W), \
5635*67e74705SXin Li (__mmask8)(U)); })
5636*67e74705SXin Li
5637*67e74705SXin Li #define _mm_maskz_srli_epi64(U, A, imm) __extension__ ({ \
5638*67e74705SXin Li (__m128i)__builtin_ia32_psrlqi128_mask((__v2di)(__m128i)(A), (int)(imm), \
5639*67e74705SXin Li (__v2di)_mm_setzero_si128(), \
5640*67e74705SXin Li (__mmask8)(U)); })
5641*67e74705SXin Li
5642*67e74705SXin Li #define _mm256_mask_srli_epi64(W, U, A, imm) __extension__ ({ \
5643*67e74705SXin Li (__m256i)__builtin_ia32_psrlqi256_mask((__v4di)(__m256i)(A), (int)(imm), \
5644*67e74705SXin Li (__v4di)(__m256i)(W), \
5645*67e74705SXin Li (__mmask8)(U)); })
5646*67e74705SXin Li
5647*67e74705SXin Li #define _mm256_maskz_srli_epi64(U, A, imm) __extension__ ({ \
5648*67e74705SXin Li (__m256i)__builtin_ia32_psrlqi256_mask((__v4di)(__m256i)(A), (int)(imm), \
5649*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
5650*67e74705SXin Li (__mmask8)(U)); })
5651*67e74705SXin Li
5652*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srav_epi32(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5653*67e74705SXin Li _mm_mask_srav_epi32 (__m128i __W, __mmask8 __U, __m128i __X,
5654*67e74705SXin Li __m128i __Y)
5655*67e74705SXin Li {
5656*67e74705SXin Li return (__m128i) __builtin_ia32_psrav4si_mask ((__v4si) __X,
5657*67e74705SXin Li (__v4si) __Y,
5658*67e74705SXin Li (__v4si) __W,
5659*67e74705SXin Li (__mmask8) __U);
5660*67e74705SXin Li }
5661*67e74705SXin Li
5662*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srav_epi32(__mmask8 __U,__m128i __X,__m128i __Y)5663*67e74705SXin Li _mm_maskz_srav_epi32 (__mmask8 __U, __m128i __X, __m128i __Y)
5664*67e74705SXin Li {
5665*67e74705SXin Li return (__m128i) __builtin_ia32_psrav4si_mask ((__v4si) __X,
5666*67e74705SXin Li (__v4si) __Y,
5667*67e74705SXin Li (__v4si)
5668*67e74705SXin Li _mm_setzero_si128 (),
5669*67e74705SXin Li (__mmask8) __U);
5670*67e74705SXin Li }
5671*67e74705SXin Li
5672*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srav_epi32(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5673*67e74705SXin Li _mm256_mask_srav_epi32 (__m256i __W, __mmask8 __U, __m256i __X,
5674*67e74705SXin Li __m256i __Y)
5675*67e74705SXin Li {
5676*67e74705SXin Li return (__m256i) __builtin_ia32_psrav8si_mask ((__v8si) __X,
5677*67e74705SXin Li (__v8si) __Y,
5678*67e74705SXin Li (__v8si) __W,
5679*67e74705SXin Li (__mmask8) __U);
5680*67e74705SXin Li }
5681*67e74705SXin Li
5682*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srav_epi32(__mmask8 __U,__m256i __X,__m256i __Y)5683*67e74705SXin Li _mm256_maskz_srav_epi32 (__mmask8 __U, __m256i __X, __m256i __Y)
5684*67e74705SXin Li {
5685*67e74705SXin Li return (__m256i) __builtin_ia32_psrav8si_mask ((__v8si) __X,
5686*67e74705SXin Li (__v8si) __Y,
5687*67e74705SXin Li (__v8si)
5688*67e74705SXin Li _mm256_setzero_si256 (),
5689*67e74705SXin Li (__mmask8) __U);
5690*67e74705SXin Li }
5691*67e74705SXin Li
5692*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srav_epi64(__m128i __X,__m128i __Y)5693*67e74705SXin Li _mm_srav_epi64 (__m128i __X, __m128i __Y)
5694*67e74705SXin Li {
5695*67e74705SXin Li return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
5696*67e74705SXin Li (__v2di) __Y,
5697*67e74705SXin Li (__v2di)
5698*67e74705SXin Li _mm_setzero_di (),
5699*67e74705SXin Li (__mmask8) -1);
5700*67e74705SXin Li }
5701*67e74705SXin Li
5702*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_srav_epi64(__m128i __W,__mmask8 __U,__m128i __X,__m128i __Y)5703*67e74705SXin Li _mm_mask_srav_epi64 (__m128i __W, __mmask8 __U, __m128i __X,
5704*67e74705SXin Li __m128i __Y)
5705*67e74705SXin Li {
5706*67e74705SXin Li return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
5707*67e74705SXin Li (__v2di) __Y,
5708*67e74705SXin Li (__v2di) __W,
5709*67e74705SXin Li (__mmask8) __U);
5710*67e74705SXin Li }
5711*67e74705SXin Li
5712*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_srav_epi64(__mmask8 __U,__m128i __X,__m128i __Y)5713*67e74705SXin Li _mm_maskz_srav_epi64 (__mmask8 __U, __m128i __X, __m128i __Y)
5714*67e74705SXin Li {
5715*67e74705SXin Li return (__m128i) __builtin_ia32_psravq128_mask ((__v2di) __X,
5716*67e74705SXin Li (__v2di) __Y,
5717*67e74705SXin Li (__v2di)
5718*67e74705SXin Li _mm_setzero_di (),
5719*67e74705SXin Li (__mmask8) __U);
5720*67e74705SXin Li }
5721*67e74705SXin Li
5722*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srav_epi64(__m256i __X,__m256i __Y)5723*67e74705SXin Li _mm256_srav_epi64 (__m256i __X, __m256i __Y)
5724*67e74705SXin Li {
5725*67e74705SXin Li return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
5726*67e74705SXin Li (__v4di) __Y,
5727*67e74705SXin Li (__v4di)
5728*67e74705SXin Li _mm256_setzero_si256 (),
5729*67e74705SXin Li (__mmask8) -1);
5730*67e74705SXin Li }
5731*67e74705SXin Li
5732*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_srav_epi64(__m256i __W,__mmask8 __U,__m256i __X,__m256i __Y)5733*67e74705SXin Li _mm256_mask_srav_epi64 (__m256i __W, __mmask8 __U, __m256i __X,
5734*67e74705SXin Li __m256i __Y)
5735*67e74705SXin Li {
5736*67e74705SXin Li return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
5737*67e74705SXin Li (__v4di) __Y,
5738*67e74705SXin Li (__v4di) __W,
5739*67e74705SXin Li (__mmask8) __U);
5740*67e74705SXin Li }
5741*67e74705SXin Li
5742*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_srav_epi64(__mmask8 __U,__m256i __X,__m256i __Y)5743*67e74705SXin Li _mm256_maskz_srav_epi64 (__mmask8 __U, __m256i __X, __m256i __Y)
5744*67e74705SXin Li {
5745*67e74705SXin Li return (__m256i) __builtin_ia32_psravq256_mask ((__v4di) __X,
5746*67e74705SXin Li (__v4di) __Y,
5747*67e74705SXin Li (__v4di)
5748*67e74705SXin Li _mm256_setzero_si256 (),
5749*67e74705SXin Li (__mmask8) __U);
5750*67e74705SXin Li }
5751*67e74705SXin Li
5752*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mov_epi32(__m128i __W,__mmask8 __U,__m128i __A)5753*67e74705SXin Li _mm_mask_mov_epi32 (__m128i __W, __mmask8 __U, __m128i __A)
5754*67e74705SXin Li {
5755*67e74705SXin Li return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5756*67e74705SXin Li (__v4si) __A,
5757*67e74705SXin Li (__v4si) __W);
5758*67e74705SXin Li }
5759*67e74705SXin Li
5760*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mov_epi32(__mmask8 __U,__m128i __A)5761*67e74705SXin Li _mm_maskz_mov_epi32 (__mmask8 __U, __m128i __A)
5762*67e74705SXin Li {
5763*67e74705SXin Li return (__m128i) __builtin_ia32_selectd_128 ((__mmask8) __U,
5764*67e74705SXin Li (__v4si) __A,
5765*67e74705SXin Li (__v4si) _mm_setzero_si128 ());
5766*67e74705SXin Li }
5767*67e74705SXin Li
5768*67e74705SXin Li
5769*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mov_epi32(__m256i __W,__mmask8 __U,__m256i __A)5770*67e74705SXin Li _mm256_mask_mov_epi32 (__m256i __W, __mmask8 __U, __m256i __A)
5771*67e74705SXin Li {
5772*67e74705SXin Li return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5773*67e74705SXin Li (__v8si) __A,
5774*67e74705SXin Li (__v8si) __W);
5775*67e74705SXin Li }
5776*67e74705SXin Li
5777*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mov_epi32(__mmask8 __U,__m256i __A)5778*67e74705SXin Li _mm256_maskz_mov_epi32 (__mmask8 __U, __m256i __A)
5779*67e74705SXin Li {
5780*67e74705SXin Li return (__m256i) __builtin_ia32_selectd_256 ((__mmask8) __U,
5781*67e74705SXin Li (__v8si) __A,
5782*67e74705SXin Li (__v8si) _mm256_setzero_si256 ());
5783*67e74705SXin Li }
5784*67e74705SXin Li
5785*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_load_epi32(__m128i __W,__mmask8 __U,void const * __P)5786*67e74705SXin Li _mm_mask_load_epi32 (__m128i __W, __mmask8 __U, void const *__P)
5787*67e74705SXin Li {
5788*67e74705SXin Li return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5789*67e74705SXin Li (__v4si) __W,
5790*67e74705SXin Li (__mmask8)
5791*67e74705SXin Li __U);
5792*67e74705SXin Li }
5793*67e74705SXin Li
5794*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_load_epi32(__mmask8 __U,void const * __P)5795*67e74705SXin Li _mm_maskz_load_epi32 (__mmask8 __U, void const *__P)
5796*67e74705SXin Li {
5797*67e74705SXin Li return (__m128i) __builtin_ia32_movdqa32load128_mask ((__v4si *) __P,
5798*67e74705SXin Li (__v4si)
5799*67e74705SXin Li _mm_setzero_si128 (),
5800*67e74705SXin Li (__mmask8)
5801*67e74705SXin Li __U);
5802*67e74705SXin Li }
5803*67e74705SXin Li
5804*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_load_epi32(__m256i __W,__mmask8 __U,void const * __P)5805*67e74705SXin Li _mm256_mask_load_epi32 (__m256i __W, __mmask8 __U, void const *__P)
5806*67e74705SXin Li {
5807*67e74705SXin Li return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5808*67e74705SXin Li (__v8si) __W,
5809*67e74705SXin Li (__mmask8)
5810*67e74705SXin Li __U);
5811*67e74705SXin Li }
5812*67e74705SXin Li
5813*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_load_epi32(__mmask8 __U,void const * __P)5814*67e74705SXin Li _mm256_maskz_load_epi32 (__mmask8 __U, void const *__P)
5815*67e74705SXin Li {
5816*67e74705SXin Li return (__m256i) __builtin_ia32_movdqa32load256_mask ((__v8si *) __P,
5817*67e74705SXin Li (__v8si)
5818*67e74705SXin Li _mm256_setzero_si256 (),
5819*67e74705SXin Li (__mmask8)
5820*67e74705SXin Li __U);
5821*67e74705SXin Li }
5822*67e74705SXin Li
5823*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_store_epi32(void * __P,__mmask8 __U,__m128i __A)5824*67e74705SXin Li _mm_mask_store_epi32 (void *__P, __mmask8 __U, __m128i __A)
5825*67e74705SXin Li {
5826*67e74705SXin Li __builtin_ia32_movdqa32store128_mask ((__v4si *) __P,
5827*67e74705SXin Li (__v4si) __A,
5828*67e74705SXin Li (__mmask8) __U);
5829*67e74705SXin Li }
5830*67e74705SXin Li
5831*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_store_epi32(void * __P,__mmask8 __U,__m256i __A)5832*67e74705SXin Li _mm256_mask_store_epi32 (void *__P, __mmask8 __U, __m256i __A)
5833*67e74705SXin Li {
5834*67e74705SXin Li __builtin_ia32_movdqa32store256_mask ((__v8si *) __P,
5835*67e74705SXin Li (__v8si) __A,
5836*67e74705SXin Li (__mmask8) __U);
5837*67e74705SXin Li }
5838*67e74705SXin Li
5839*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mov_epi64(__m128i __W,__mmask8 __U,__m128i __A)5840*67e74705SXin Li _mm_mask_mov_epi64 (__m128i __W, __mmask8 __U, __m128i __A)
5841*67e74705SXin Li {
5842*67e74705SXin Li return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5843*67e74705SXin Li (__v2di) __A,
5844*67e74705SXin Li (__v2di) __W);
5845*67e74705SXin Li }
5846*67e74705SXin Li
5847*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mov_epi64(__mmask8 __U,__m128i __A)5848*67e74705SXin Li _mm_maskz_mov_epi64 (__mmask8 __U, __m128i __A)
5849*67e74705SXin Li {
5850*67e74705SXin Li return (__m128i) __builtin_ia32_selectq_128 ((__mmask8) __U,
5851*67e74705SXin Li (__v2di) __A,
5852*67e74705SXin Li (__v2di) _mm_setzero_di ());
5853*67e74705SXin Li }
5854*67e74705SXin Li
5855*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mov_epi64(__m256i __W,__mmask8 __U,__m256i __A)5856*67e74705SXin Li _mm256_mask_mov_epi64 (__m256i __W, __mmask8 __U, __m256i __A)
5857*67e74705SXin Li {
5858*67e74705SXin Li return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5859*67e74705SXin Li (__v4di) __A,
5860*67e74705SXin Li (__v4di) __W);
5861*67e74705SXin Li }
5862*67e74705SXin Li
5863*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mov_epi64(__mmask8 __U,__m256i __A)5864*67e74705SXin Li _mm256_maskz_mov_epi64 (__mmask8 __U, __m256i __A)
5865*67e74705SXin Li {
5866*67e74705SXin Li return (__m256i) __builtin_ia32_selectq_256 ((__mmask8) __U,
5867*67e74705SXin Li (__v4di) __A,
5868*67e74705SXin Li (__v4di) _mm256_setzero_si256 ());
5869*67e74705SXin Li }
5870*67e74705SXin Li
5871*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_load_epi64(__m128i __W,__mmask8 __U,void const * __P)5872*67e74705SXin Li _mm_mask_load_epi64 (__m128i __W, __mmask8 __U, void const *__P)
5873*67e74705SXin Li {
5874*67e74705SXin Li return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5875*67e74705SXin Li (__v2di) __W,
5876*67e74705SXin Li (__mmask8)
5877*67e74705SXin Li __U);
5878*67e74705SXin Li }
5879*67e74705SXin Li
5880*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_load_epi64(__mmask8 __U,void const * __P)5881*67e74705SXin Li _mm_maskz_load_epi64 (__mmask8 __U, void const *__P)
5882*67e74705SXin Li {
5883*67e74705SXin Li return (__m128i) __builtin_ia32_movdqa64load128_mask ((__v2di *) __P,
5884*67e74705SXin Li (__v2di)
5885*67e74705SXin Li _mm_setzero_di (),
5886*67e74705SXin Li (__mmask8)
5887*67e74705SXin Li __U);
5888*67e74705SXin Li }
5889*67e74705SXin Li
5890*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_load_epi64(__m256i __W,__mmask8 __U,void const * __P)5891*67e74705SXin Li _mm256_mask_load_epi64 (__m256i __W, __mmask8 __U, void const *__P)
5892*67e74705SXin Li {
5893*67e74705SXin Li return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5894*67e74705SXin Li (__v4di) __W,
5895*67e74705SXin Li (__mmask8)
5896*67e74705SXin Li __U);
5897*67e74705SXin Li }
5898*67e74705SXin Li
5899*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_load_epi64(__mmask8 __U,void const * __P)5900*67e74705SXin Li _mm256_maskz_load_epi64 (__mmask8 __U, void const *__P)
5901*67e74705SXin Li {
5902*67e74705SXin Li return (__m256i) __builtin_ia32_movdqa64load256_mask ((__v4di *) __P,
5903*67e74705SXin Li (__v4di)
5904*67e74705SXin Li _mm256_setzero_si256 (),
5905*67e74705SXin Li (__mmask8)
5906*67e74705SXin Li __U);
5907*67e74705SXin Li }
5908*67e74705SXin Li
5909*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_store_epi64(void * __P,__mmask8 __U,__m128i __A)5910*67e74705SXin Li _mm_mask_store_epi64 (void *__P, __mmask8 __U, __m128i __A)
5911*67e74705SXin Li {
5912*67e74705SXin Li __builtin_ia32_movdqa64store128_mask ((__v2di *) __P,
5913*67e74705SXin Li (__v2di) __A,
5914*67e74705SXin Li (__mmask8) __U);
5915*67e74705SXin Li }
5916*67e74705SXin Li
5917*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_store_epi64(void * __P,__mmask8 __U,__m256i __A)5918*67e74705SXin Li _mm256_mask_store_epi64 (void *__P, __mmask8 __U, __m256i __A)
5919*67e74705SXin Li {
5920*67e74705SXin Li __builtin_ia32_movdqa64store256_mask ((__v4di *) __P,
5921*67e74705SXin Li (__v4di) __A,
5922*67e74705SXin Li (__mmask8) __U);
5923*67e74705SXin Li }
5924*67e74705SXin Li
5925*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_movedup_pd(__m128d __W,__mmask8 __U,__m128d __A)5926*67e74705SXin Li _mm_mask_movedup_pd (__m128d __W, __mmask8 __U, __m128d __A)
5927*67e74705SXin Li {
5928*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5929*67e74705SXin Li (__v2df)_mm_movedup_pd(__A),
5930*67e74705SXin Li (__v2df)__W);
5931*67e74705SXin Li }
5932*67e74705SXin Li
5933*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_movedup_pd(__mmask8 __U,__m128d __A)5934*67e74705SXin Li _mm_maskz_movedup_pd (__mmask8 __U, __m128d __A)
5935*67e74705SXin Li {
5936*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
5937*67e74705SXin Li (__v2df)_mm_movedup_pd(__A),
5938*67e74705SXin Li (__v2df)_mm_setzero_pd());
5939*67e74705SXin Li }
5940*67e74705SXin Li
5941*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_movedup_pd(__m256d __W,__mmask8 __U,__m256d __A)5942*67e74705SXin Li _mm256_mask_movedup_pd (__m256d __W, __mmask8 __U, __m256d __A)
5943*67e74705SXin Li {
5944*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5945*67e74705SXin Li (__v4df)_mm256_movedup_pd(__A),
5946*67e74705SXin Li (__v4df)__W);
5947*67e74705SXin Li }
5948*67e74705SXin Li
5949*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_movedup_pd(__mmask8 __U,__m256d __A)5950*67e74705SXin Li _mm256_maskz_movedup_pd (__mmask8 __U, __m256d __A)
5951*67e74705SXin Li {
5952*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
5953*67e74705SXin Li (__v4df)_mm256_movedup_pd(__A),
5954*67e74705SXin Li (__v4df)_mm256_setzero_pd());
5955*67e74705SXin Li }
5956*67e74705SXin Li
5957*67e74705SXin Li
5958*67e74705SXin Li #define _mm_mask_set1_epi32(O, M, A) __extension__ ({ \
5959*67e74705SXin Li (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \
5960*67e74705SXin Li (__v4si)(__m128i)(O), \
5961*67e74705SXin Li (__mmask8)(M)); })
5962*67e74705SXin Li
5963*67e74705SXin Li #define _mm_maskz_set1_epi32(M, A) __extension__ ({ \
5964*67e74705SXin Li (__m128i)__builtin_ia32_pbroadcastd128_gpr_mask((int)(A), \
5965*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
5966*67e74705SXin Li (__mmask8)(M)); })
5967*67e74705SXin Li
5968*67e74705SXin Li #define _mm256_mask_set1_epi32(O, M, A) __extension__ ({ \
5969*67e74705SXin Li (__m256i)__builtin_ia32_pbroadcastd256_gpr_mask((int)(A), \
5970*67e74705SXin Li (__v8si)(__m256i)(O), \
5971*67e74705SXin Li (__mmask8)(M)); })
5972*67e74705SXin Li
5973*67e74705SXin Li #define _mm256_maskz_set1_epi32(M, A) __extension__ ({ \
5974*67e74705SXin Li (__m256i)__builtin_ia32_pbroadcastd256_gpr_mask((int)(A), \
5975*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
5976*67e74705SXin Li (__mmask8)(M)); })
5977*67e74705SXin Li
5978*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_set1_epi64(__m128i __O,__mmask8 __M,long long __A)5979*67e74705SXin Li _mm_mask_set1_epi64 (__m128i __O, __mmask8 __M, long long __A)
5980*67e74705SXin Li {
5981*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A, (__v2di) __O,
5982*67e74705SXin Li __M);
5983*67e74705SXin Li }
5984*67e74705SXin Li
5985*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_set1_epi64(__mmask8 __M,long long __A)5986*67e74705SXin Li _mm_maskz_set1_epi64 (__mmask8 __M, long long __A)
5987*67e74705SXin Li {
5988*67e74705SXin Li return (__m128i) __builtin_ia32_pbroadcastq128_gpr_mask (__A,
5989*67e74705SXin Li (__v2di)
5990*67e74705SXin Li _mm_setzero_si128 (),
5991*67e74705SXin Li __M);
5992*67e74705SXin Li }
5993*67e74705SXin Li
5994*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_set1_epi64(__m256i __O,__mmask8 __M,long long __A)5995*67e74705SXin Li _mm256_mask_set1_epi64 (__m256i __O, __mmask8 __M, long long __A)
5996*67e74705SXin Li {
5997*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A, (__v4di) __O,
5998*67e74705SXin Li __M);
5999*67e74705SXin Li }
6000*67e74705SXin Li
6001*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_set1_epi64(__mmask8 __M,long long __A)6002*67e74705SXin Li _mm256_maskz_set1_epi64 (__mmask8 __M, long long __A)
6003*67e74705SXin Li {
6004*67e74705SXin Li return (__m256i) __builtin_ia32_pbroadcastq256_gpr_mask (__A,
6005*67e74705SXin Li (__v4di)
6006*67e74705SXin Li _mm256_setzero_si256 (),
6007*67e74705SXin Li __M);
6008*67e74705SXin Li }
6009*67e74705SXin Li
6010*67e74705SXin Li #define _mm_fixupimm_pd(A, B, C, imm) __extension__ ({ \
6011*67e74705SXin Li (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
6012*67e74705SXin Li (__v2df)(__m128d)(B), \
6013*67e74705SXin Li (__v2di)(__m128i)(C), (int)(imm), \
6014*67e74705SXin Li (__mmask8)-1); })
6015*67e74705SXin Li
6016*67e74705SXin Li #define _mm_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
6017*67e74705SXin Li (__m128d)__builtin_ia32_fixupimmpd128_mask((__v2df)(__m128d)(A), \
6018*67e74705SXin Li (__v2df)(__m128d)(B), \
6019*67e74705SXin Li (__v2di)(__m128i)(C), (int)(imm), \
6020*67e74705SXin Li (__mmask8)(U)); })
6021*67e74705SXin Li
6022*67e74705SXin Li #define _mm_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
6023*67e74705SXin Li (__m128d)__builtin_ia32_fixupimmpd128_maskz((__v2df)(__m128d)(A), \
6024*67e74705SXin Li (__v2df)(__m128d)(B), \
6025*67e74705SXin Li (__v2di)(__m128i)(C), \
6026*67e74705SXin Li (int)(imm), (__mmask8)(U)); })
6027*67e74705SXin Li
6028*67e74705SXin Li #define _mm256_fixupimm_pd(A, B, C, imm) __extension__ ({ \
6029*67e74705SXin Li (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
6030*67e74705SXin Li (__v4df)(__m256d)(B), \
6031*67e74705SXin Li (__v4di)(__m256i)(C), (int)(imm), \
6032*67e74705SXin Li (__mmask8)-1); })
6033*67e74705SXin Li
6034*67e74705SXin Li #define _mm256_mask_fixupimm_pd(A, U, B, C, imm) __extension__ ({ \
6035*67e74705SXin Li (__m256d)__builtin_ia32_fixupimmpd256_mask((__v4df)(__m256d)(A), \
6036*67e74705SXin Li (__v4df)(__m256d)(B), \
6037*67e74705SXin Li (__v4di)(__m256i)(C), (int)(imm), \
6038*67e74705SXin Li (__mmask8)(U)); })
6039*67e74705SXin Li
6040*67e74705SXin Li #define _mm256_maskz_fixupimm_pd(U, A, B, C, imm) __extension__ ({ \
6041*67e74705SXin Li (__m256d)__builtin_ia32_fixupimmpd256_maskz((__v4df)(__m256d)(A), \
6042*67e74705SXin Li (__v4df)(__m256d)(B), \
6043*67e74705SXin Li (__v4di)(__m256i)(C), \
6044*67e74705SXin Li (int)(imm), (__mmask8)(U)); })
6045*67e74705SXin Li
6046*67e74705SXin Li #define _mm_fixupimm_ps(A, B, C, imm) __extension__ ({ \
6047*67e74705SXin Li (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
6048*67e74705SXin Li (__v4sf)(__m128)(B), \
6049*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
6050*67e74705SXin Li (__mmask8)-1); })
6051*67e74705SXin Li
6052*67e74705SXin Li #define _mm_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
6053*67e74705SXin Li (__m128)__builtin_ia32_fixupimmps128_mask((__v4sf)(__m128)(A), \
6054*67e74705SXin Li (__v4sf)(__m128)(B), \
6055*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
6056*67e74705SXin Li (__mmask8)(U)); })
6057*67e74705SXin Li
6058*67e74705SXin Li #define _mm_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
6059*67e74705SXin Li (__m128)__builtin_ia32_fixupimmps128_maskz((__v4sf)(__m128)(A), \
6060*67e74705SXin Li (__v4sf)(__m128)(B), \
6061*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
6062*67e74705SXin Li (__mmask8)(U)); })
6063*67e74705SXin Li
6064*67e74705SXin Li #define _mm256_fixupimm_ps(A, B, C, imm) __extension__ ({ \
6065*67e74705SXin Li (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
6066*67e74705SXin Li (__v8sf)(__m256)(B), \
6067*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
6068*67e74705SXin Li (__mmask8)-1); })
6069*67e74705SXin Li
6070*67e74705SXin Li #define _mm256_mask_fixupimm_ps(A, U, B, C, imm) __extension__ ({ \
6071*67e74705SXin Li (__m256)__builtin_ia32_fixupimmps256_mask((__v8sf)(__m256)(A), \
6072*67e74705SXin Li (__v8sf)(__m256)(B), \
6073*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
6074*67e74705SXin Li (__mmask8)(U)); })
6075*67e74705SXin Li
6076*67e74705SXin Li #define _mm256_maskz_fixupimm_ps(U, A, B, C, imm) __extension__ ({ \
6077*67e74705SXin Li (__m256)__builtin_ia32_fixupimmps256_maskz((__v8sf)(__m256)(A), \
6078*67e74705SXin Li (__v8sf)(__m256)(B), \
6079*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
6080*67e74705SXin Li (__mmask8)(U)); })
6081*67e74705SXin Li
6082*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_load_pd(__m128d __W,__mmask8 __U,void const * __P)6083*67e74705SXin Li _mm_mask_load_pd (__m128d __W, __mmask8 __U, void const *__P)
6084*67e74705SXin Li {
6085*67e74705SXin Li return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
6086*67e74705SXin Li (__v2df) __W,
6087*67e74705SXin Li (__mmask8) __U);
6088*67e74705SXin Li }
6089*67e74705SXin Li
6090*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_load_pd(__mmask8 __U,void const * __P)6091*67e74705SXin Li _mm_maskz_load_pd (__mmask8 __U, void const *__P)
6092*67e74705SXin Li {
6093*67e74705SXin Li return (__m128d) __builtin_ia32_loadapd128_mask ((__v2df *) __P,
6094*67e74705SXin Li (__v2df)
6095*67e74705SXin Li _mm_setzero_pd (),
6096*67e74705SXin Li (__mmask8) __U);
6097*67e74705SXin Li }
6098*67e74705SXin Li
6099*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_load_pd(__m256d __W,__mmask8 __U,void const * __P)6100*67e74705SXin Li _mm256_mask_load_pd (__m256d __W, __mmask8 __U, void const *__P)
6101*67e74705SXin Li {
6102*67e74705SXin Li return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
6103*67e74705SXin Li (__v4df) __W,
6104*67e74705SXin Li (__mmask8) __U);
6105*67e74705SXin Li }
6106*67e74705SXin Li
6107*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_load_pd(__mmask8 __U,void const * __P)6108*67e74705SXin Li _mm256_maskz_load_pd (__mmask8 __U, void const *__P)
6109*67e74705SXin Li {
6110*67e74705SXin Li return (__m256d) __builtin_ia32_loadapd256_mask ((__v4df *) __P,
6111*67e74705SXin Li (__v4df)
6112*67e74705SXin Li _mm256_setzero_pd (),
6113*67e74705SXin Li (__mmask8) __U);
6114*67e74705SXin Li }
6115*67e74705SXin Li
6116*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_load_ps(__m128 __W,__mmask8 __U,void const * __P)6117*67e74705SXin Li _mm_mask_load_ps (__m128 __W, __mmask8 __U, void const *__P)
6118*67e74705SXin Li {
6119*67e74705SXin Li return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
6120*67e74705SXin Li (__v4sf) __W,
6121*67e74705SXin Li (__mmask8) __U);
6122*67e74705SXin Li }
6123*67e74705SXin Li
6124*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_load_ps(__mmask8 __U,void const * __P)6125*67e74705SXin Li _mm_maskz_load_ps (__mmask8 __U, void const *__P)
6126*67e74705SXin Li {
6127*67e74705SXin Li return (__m128) __builtin_ia32_loadaps128_mask ((__v4sf *) __P,
6128*67e74705SXin Li (__v4sf)
6129*67e74705SXin Li _mm_setzero_ps (),
6130*67e74705SXin Li (__mmask8) __U);
6131*67e74705SXin Li }
6132*67e74705SXin Li
6133*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_load_ps(__m256 __W,__mmask8 __U,void const * __P)6134*67e74705SXin Li _mm256_mask_load_ps (__m256 __W, __mmask8 __U, void const *__P)
6135*67e74705SXin Li {
6136*67e74705SXin Li return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
6137*67e74705SXin Li (__v8sf) __W,
6138*67e74705SXin Li (__mmask8) __U);
6139*67e74705SXin Li }
6140*67e74705SXin Li
6141*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_load_ps(__mmask8 __U,void const * __P)6142*67e74705SXin Li _mm256_maskz_load_ps (__mmask8 __U, void const *__P)
6143*67e74705SXin Li {
6144*67e74705SXin Li return (__m256) __builtin_ia32_loadaps256_mask ((__v8sf *) __P,
6145*67e74705SXin Li (__v8sf)
6146*67e74705SXin Li _mm256_setzero_ps (),
6147*67e74705SXin Li (__mmask8) __U);
6148*67e74705SXin Li }
6149*67e74705SXin Li
6150*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_loadu_epi64(__m128i __W,__mmask8 __U,void const * __P)6151*67e74705SXin Li _mm_mask_loadu_epi64 (__m128i __W, __mmask8 __U, void const *__P)
6152*67e74705SXin Li {
6153*67e74705SXin Li return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
6154*67e74705SXin Li (__v2di) __W,
6155*67e74705SXin Li (__mmask8) __U);
6156*67e74705SXin Li }
6157*67e74705SXin Li
6158*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_loadu_epi64(__mmask8 __U,void const * __P)6159*67e74705SXin Li _mm_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
6160*67e74705SXin Li {
6161*67e74705SXin Li return (__m128i) __builtin_ia32_loaddqudi128_mask ((__v2di *) __P,
6162*67e74705SXin Li (__v2di)
6163*67e74705SXin Li _mm_setzero_si128 (),
6164*67e74705SXin Li (__mmask8) __U);
6165*67e74705SXin Li }
6166*67e74705SXin Li
6167*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_loadu_epi64(__m256i __W,__mmask8 __U,void const * __P)6168*67e74705SXin Li _mm256_mask_loadu_epi64 (__m256i __W, __mmask8 __U, void const *__P)
6169*67e74705SXin Li {
6170*67e74705SXin Li return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
6171*67e74705SXin Li (__v4di) __W,
6172*67e74705SXin Li (__mmask8) __U);
6173*67e74705SXin Li }
6174*67e74705SXin Li
6175*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_epi64(__mmask8 __U,void const * __P)6176*67e74705SXin Li _mm256_maskz_loadu_epi64 (__mmask8 __U, void const *__P)
6177*67e74705SXin Li {
6178*67e74705SXin Li return (__m256i) __builtin_ia32_loaddqudi256_mask ((__v4di *) __P,
6179*67e74705SXin Li (__v4di)
6180*67e74705SXin Li _mm256_setzero_si256 (),
6181*67e74705SXin Li (__mmask8) __U);
6182*67e74705SXin Li }
6183*67e74705SXin Li
6184*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_loadu_epi32(__m128i __W,__mmask8 __U,void const * __P)6185*67e74705SXin Li _mm_mask_loadu_epi32 (__m128i __W, __mmask8 __U, void const *__P)
6186*67e74705SXin Li {
6187*67e74705SXin Li return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
6188*67e74705SXin Li (__v4si) __W,
6189*67e74705SXin Li (__mmask8) __U);
6190*67e74705SXin Li }
6191*67e74705SXin Li
6192*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_loadu_epi32(__mmask8 __U,void const * __P)6193*67e74705SXin Li _mm_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
6194*67e74705SXin Li {
6195*67e74705SXin Li return (__m128i) __builtin_ia32_loaddqusi128_mask ((__v4si *) __P,
6196*67e74705SXin Li (__v4si)
6197*67e74705SXin Li _mm_setzero_si128 (),
6198*67e74705SXin Li (__mmask8) __U);
6199*67e74705SXin Li }
6200*67e74705SXin Li
6201*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_loadu_epi32(__m256i __W,__mmask8 __U,void const * __P)6202*67e74705SXin Li _mm256_mask_loadu_epi32 (__m256i __W, __mmask8 __U, void const *__P)
6203*67e74705SXin Li {
6204*67e74705SXin Li return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
6205*67e74705SXin Li (__v8si) __W,
6206*67e74705SXin Li (__mmask8) __U);
6207*67e74705SXin Li }
6208*67e74705SXin Li
6209*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_epi32(__mmask8 __U,void const * __P)6210*67e74705SXin Li _mm256_maskz_loadu_epi32 (__mmask8 __U, void const *__P)
6211*67e74705SXin Li {
6212*67e74705SXin Li return (__m256i) __builtin_ia32_loaddqusi256_mask ((__v8si *) __P,
6213*67e74705SXin Li (__v8si)
6214*67e74705SXin Li _mm256_setzero_si256 (),
6215*67e74705SXin Li (__mmask8) __U);
6216*67e74705SXin Li }
6217*67e74705SXin Li
6218*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_loadu_pd(__m128d __W,__mmask8 __U,void const * __P)6219*67e74705SXin Li _mm_mask_loadu_pd (__m128d __W, __mmask8 __U, void const *__P)
6220*67e74705SXin Li {
6221*67e74705SXin Li return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
6222*67e74705SXin Li (__v2df) __W,
6223*67e74705SXin Li (__mmask8) __U);
6224*67e74705SXin Li }
6225*67e74705SXin Li
6226*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_loadu_pd(__mmask8 __U,void const * __P)6227*67e74705SXin Li _mm_maskz_loadu_pd (__mmask8 __U, void const *__P)
6228*67e74705SXin Li {
6229*67e74705SXin Li return (__m128d) __builtin_ia32_loadupd128_mask ((__v2df *) __P,
6230*67e74705SXin Li (__v2df)
6231*67e74705SXin Li _mm_setzero_pd (),
6232*67e74705SXin Li (__mmask8) __U);
6233*67e74705SXin Li }
6234*67e74705SXin Li
6235*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_loadu_pd(__m256d __W,__mmask8 __U,void const * __P)6236*67e74705SXin Li _mm256_mask_loadu_pd (__m256d __W, __mmask8 __U, void const *__P)
6237*67e74705SXin Li {
6238*67e74705SXin Li return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
6239*67e74705SXin Li (__v4df) __W,
6240*67e74705SXin Li (__mmask8) __U);
6241*67e74705SXin Li }
6242*67e74705SXin Li
6243*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_pd(__mmask8 __U,void const * __P)6244*67e74705SXin Li _mm256_maskz_loadu_pd (__mmask8 __U, void const *__P)
6245*67e74705SXin Li {
6246*67e74705SXin Li return (__m256d) __builtin_ia32_loadupd256_mask ((__v4df *) __P,
6247*67e74705SXin Li (__v4df)
6248*67e74705SXin Li _mm256_setzero_pd (),
6249*67e74705SXin Li (__mmask8) __U);
6250*67e74705SXin Li }
6251*67e74705SXin Li
6252*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_loadu_ps(__m128 __W,__mmask8 __U,void const * __P)6253*67e74705SXin Li _mm_mask_loadu_ps (__m128 __W, __mmask8 __U, void const *__P)
6254*67e74705SXin Li {
6255*67e74705SXin Li return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
6256*67e74705SXin Li (__v4sf) __W,
6257*67e74705SXin Li (__mmask8) __U);
6258*67e74705SXin Li }
6259*67e74705SXin Li
6260*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_loadu_ps(__mmask8 __U,void const * __P)6261*67e74705SXin Li _mm_maskz_loadu_ps (__mmask8 __U, void const *__P)
6262*67e74705SXin Li {
6263*67e74705SXin Li return (__m128) __builtin_ia32_loadups128_mask ((__v4sf *) __P,
6264*67e74705SXin Li (__v4sf)
6265*67e74705SXin Li _mm_setzero_ps (),
6266*67e74705SXin Li (__mmask8) __U);
6267*67e74705SXin Li }
6268*67e74705SXin Li
6269*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_loadu_ps(__m256 __W,__mmask8 __U,void const * __P)6270*67e74705SXin Li _mm256_mask_loadu_ps (__m256 __W, __mmask8 __U, void const *__P)
6271*67e74705SXin Li {
6272*67e74705SXin Li return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
6273*67e74705SXin Li (__v8sf) __W,
6274*67e74705SXin Li (__mmask8) __U);
6275*67e74705SXin Li }
6276*67e74705SXin Li
6277*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_loadu_ps(__mmask8 __U,void const * __P)6278*67e74705SXin Li _mm256_maskz_loadu_ps (__mmask8 __U, void const *__P)
6279*67e74705SXin Li {
6280*67e74705SXin Li return (__m256) __builtin_ia32_loadups256_mask ((__v8sf *) __P,
6281*67e74705SXin Li (__v8sf)
6282*67e74705SXin Li _mm256_setzero_ps (),
6283*67e74705SXin Li (__mmask8) __U);
6284*67e74705SXin Li }
6285*67e74705SXin Li
6286*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_store_pd(void * __P,__mmask8 __U,__m128d __A)6287*67e74705SXin Li _mm_mask_store_pd (void *__P, __mmask8 __U, __m128d __A)
6288*67e74705SXin Li {
6289*67e74705SXin Li __builtin_ia32_storeapd128_mask ((__v2df *) __P,
6290*67e74705SXin Li (__v2df) __A,
6291*67e74705SXin Li (__mmask8) __U);
6292*67e74705SXin Li }
6293*67e74705SXin Li
6294*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_store_pd(void * __P,__mmask8 __U,__m256d __A)6295*67e74705SXin Li _mm256_mask_store_pd (void *__P, __mmask8 __U, __m256d __A)
6296*67e74705SXin Li {
6297*67e74705SXin Li __builtin_ia32_storeapd256_mask ((__v4df *) __P,
6298*67e74705SXin Li (__v4df) __A,
6299*67e74705SXin Li (__mmask8) __U);
6300*67e74705SXin Li }
6301*67e74705SXin Li
6302*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_store_ps(void * __P,__mmask8 __U,__m128 __A)6303*67e74705SXin Li _mm_mask_store_ps (void *__P, __mmask8 __U, __m128 __A)
6304*67e74705SXin Li {
6305*67e74705SXin Li __builtin_ia32_storeaps128_mask ((__v4sf *) __P,
6306*67e74705SXin Li (__v4sf) __A,
6307*67e74705SXin Li (__mmask8) __U);
6308*67e74705SXin Li }
6309*67e74705SXin Li
6310*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_store_ps(void * __P,__mmask8 __U,__m256 __A)6311*67e74705SXin Li _mm256_mask_store_ps (void *__P, __mmask8 __U, __m256 __A)
6312*67e74705SXin Li {
6313*67e74705SXin Li __builtin_ia32_storeaps256_mask ((__v8sf *) __P,
6314*67e74705SXin Li (__v8sf) __A,
6315*67e74705SXin Li (__mmask8) __U);
6316*67e74705SXin Li }
6317*67e74705SXin Li
6318*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_epi64(void * __P,__mmask8 __U,__m128i __A)6319*67e74705SXin Li _mm_mask_storeu_epi64 (void *__P, __mmask8 __U, __m128i __A)
6320*67e74705SXin Li {
6321*67e74705SXin Li __builtin_ia32_storedqudi128_mask ((__v2di *) __P,
6322*67e74705SXin Li (__v2di) __A,
6323*67e74705SXin Li (__mmask8) __U);
6324*67e74705SXin Li }
6325*67e74705SXin Li
6326*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_epi64(void * __P,__mmask8 __U,__m256i __A)6327*67e74705SXin Li _mm256_mask_storeu_epi64 (void *__P, __mmask8 __U, __m256i __A)
6328*67e74705SXin Li {
6329*67e74705SXin Li __builtin_ia32_storedqudi256_mask ((__v4di *) __P,
6330*67e74705SXin Li (__v4di) __A,
6331*67e74705SXin Li (__mmask8) __U);
6332*67e74705SXin Li }
6333*67e74705SXin Li
6334*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_epi32(void * __P,__mmask8 __U,__m128i __A)6335*67e74705SXin Li _mm_mask_storeu_epi32 (void *__P, __mmask8 __U, __m128i __A)
6336*67e74705SXin Li {
6337*67e74705SXin Li __builtin_ia32_storedqusi128_mask ((__v4si *) __P,
6338*67e74705SXin Li (__v4si) __A,
6339*67e74705SXin Li (__mmask8) __U);
6340*67e74705SXin Li }
6341*67e74705SXin Li
6342*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_epi32(void * __P,__mmask8 __U,__m256i __A)6343*67e74705SXin Li _mm256_mask_storeu_epi32 (void *__P, __mmask8 __U, __m256i __A)
6344*67e74705SXin Li {
6345*67e74705SXin Li __builtin_ia32_storedqusi256_mask ((__v8si *) __P,
6346*67e74705SXin Li (__v8si) __A,
6347*67e74705SXin Li (__mmask8) __U);
6348*67e74705SXin Li }
6349*67e74705SXin Li
6350*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_pd(void * __P,__mmask8 __U,__m128d __A)6351*67e74705SXin Li _mm_mask_storeu_pd (void *__P, __mmask8 __U, __m128d __A)
6352*67e74705SXin Li {
6353*67e74705SXin Li __builtin_ia32_storeupd128_mask ((__v2df *) __P,
6354*67e74705SXin Li (__v2df) __A,
6355*67e74705SXin Li (__mmask8) __U);
6356*67e74705SXin Li }
6357*67e74705SXin Li
6358*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_pd(void * __P,__mmask8 __U,__m256d __A)6359*67e74705SXin Li _mm256_mask_storeu_pd (void *__P, __mmask8 __U, __m256d __A)
6360*67e74705SXin Li {
6361*67e74705SXin Li __builtin_ia32_storeupd256_mask ((__v4df *) __P,
6362*67e74705SXin Li (__v4df) __A,
6363*67e74705SXin Li (__mmask8) __U);
6364*67e74705SXin Li }
6365*67e74705SXin Li
6366*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_storeu_ps(void * __P,__mmask8 __U,__m128 __A)6367*67e74705SXin Li _mm_mask_storeu_ps (void *__P, __mmask8 __U, __m128 __A)
6368*67e74705SXin Li {
6369*67e74705SXin Li __builtin_ia32_storeups128_mask ((__v4sf *) __P,
6370*67e74705SXin Li (__v4sf) __A,
6371*67e74705SXin Li (__mmask8) __U);
6372*67e74705SXin Li }
6373*67e74705SXin Li
6374*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_storeu_ps(void * __P,__mmask8 __U,__m256 __A)6375*67e74705SXin Li _mm256_mask_storeu_ps (void *__P, __mmask8 __U, __m256 __A)
6376*67e74705SXin Li {
6377*67e74705SXin Li __builtin_ia32_storeups256_mask ((__v8sf *) __P,
6378*67e74705SXin Li (__v8sf) __A,
6379*67e74705SXin Li (__mmask8) __U);
6380*67e74705SXin Li }
6381*67e74705SXin Li
6382*67e74705SXin Li
6383*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6384*67e74705SXin Li _mm_mask_unpackhi_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6385*67e74705SXin Li {
6386*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6387*67e74705SXin Li (__v2df)_mm_unpackhi_pd(__A, __B),
6388*67e74705SXin Li (__v2df)__W);
6389*67e74705SXin Li }
6390*67e74705SXin Li
6391*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_pd(__mmask8 __U,__m128d __A,__m128d __B)6392*67e74705SXin Li _mm_maskz_unpackhi_pd(__mmask8 __U, __m128d __A, __m128d __B)
6393*67e74705SXin Li {
6394*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6395*67e74705SXin Li (__v2df)_mm_unpackhi_pd(__A, __B),
6396*67e74705SXin Li (__v2df)_mm_setzero_pd());
6397*67e74705SXin Li }
6398*67e74705SXin Li
6399*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)6400*67e74705SXin Li _mm256_mask_unpackhi_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
6401*67e74705SXin Li {
6402*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6403*67e74705SXin Li (__v4df)_mm256_unpackhi_pd(__A, __B),
6404*67e74705SXin Li (__v4df)__W);
6405*67e74705SXin Li }
6406*67e74705SXin Li
6407*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_pd(__mmask8 __U,__m256d __A,__m256d __B)6408*67e74705SXin Li _mm256_maskz_unpackhi_pd(__mmask8 __U, __m256d __A, __m256d __B)
6409*67e74705SXin Li {
6410*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6411*67e74705SXin Li (__v4df)_mm256_unpackhi_pd(__A, __B),
6412*67e74705SXin Li (__v4df)_mm256_setzero_pd());
6413*67e74705SXin Li }
6414*67e74705SXin Li
6415*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6416*67e74705SXin Li _mm_mask_unpackhi_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6417*67e74705SXin Li {
6418*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6419*67e74705SXin Li (__v4sf)_mm_unpackhi_ps(__A, __B),
6420*67e74705SXin Li (__v4sf)__W);
6421*67e74705SXin Li }
6422*67e74705SXin Li
6423*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_ps(__mmask8 __U,__m128 __A,__m128 __B)6424*67e74705SXin Li _mm_maskz_unpackhi_ps(__mmask8 __U, __m128 __A, __m128 __B)
6425*67e74705SXin Li {
6426*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6427*67e74705SXin Li (__v4sf)_mm_unpackhi_ps(__A, __B),
6428*67e74705SXin Li (__v4sf)_mm_setzero_ps());
6429*67e74705SXin Li }
6430*67e74705SXin Li
6431*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)6432*67e74705SXin Li _mm256_mask_unpackhi_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
6433*67e74705SXin Li {
6434*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6435*67e74705SXin Li (__v8sf)_mm256_unpackhi_ps(__A, __B),
6436*67e74705SXin Li (__v8sf)__W);
6437*67e74705SXin Li }
6438*67e74705SXin Li
6439*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_ps(__mmask8 __U,__m256 __A,__m256 __B)6440*67e74705SXin Li _mm256_maskz_unpackhi_ps(__mmask8 __U, __m256 __A, __m256 __B)
6441*67e74705SXin Li {
6442*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6443*67e74705SXin Li (__v8sf)_mm256_unpackhi_ps(__A, __B),
6444*67e74705SXin Li (__v8sf)_mm256_setzero_ps());
6445*67e74705SXin Li }
6446*67e74705SXin Li
6447*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)6448*67e74705SXin Li _mm_mask_unpacklo_pd(__m128d __W, __mmask8 __U, __m128d __A, __m128d __B)
6449*67e74705SXin Li {
6450*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6451*67e74705SXin Li (__v2df)_mm_unpacklo_pd(__A, __B),
6452*67e74705SXin Li (__v2df)__W);
6453*67e74705SXin Li }
6454*67e74705SXin Li
6455*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_pd(__mmask8 __U,__m128d __A,__m128d __B)6456*67e74705SXin Li _mm_maskz_unpacklo_pd(__mmask8 __U, __m128d __A, __m128d __B)
6457*67e74705SXin Li {
6458*67e74705SXin Li return (__m128d)__builtin_ia32_selectpd_128((__mmask8)__U,
6459*67e74705SXin Li (__v2df)_mm_unpacklo_pd(__A, __B),
6460*67e74705SXin Li (__v2df)_mm_setzero_pd());
6461*67e74705SXin Li }
6462*67e74705SXin Li
6463*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)6464*67e74705SXin Li _mm256_mask_unpacklo_pd(__m256d __W, __mmask8 __U, __m256d __A, __m256d __B)
6465*67e74705SXin Li {
6466*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6467*67e74705SXin Li (__v4df)_mm256_unpacklo_pd(__A, __B),
6468*67e74705SXin Li (__v4df)__W);
6469*67e74705SXin Li }
6470*67e74705SXin Li
6471*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_pd(__mmask8 __U,__m256d __A,__m256d __B)6472*67e74705SXin Li _mm256_maskz_unpacklo_pd(__mmask8 __U, __m256d __A, __m256d __B)
6473*67e74705SXin Li {
6474*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256((__mmask8)__U,
6475*67e74705SXin Li (__v4df)_mm256_unpacklo_pd(__A, __B),
6476*67e74705SXin Li (__v4df)_mm256_setzero_pd());
6477*67e74705SXin Li }
6478*67e74705SXin Li
6479*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)6480*67e74705SXin Li _mm_mask_unpacklo_ps(__m128 __W, __mmask8 __U, __m128 __A, __m128 __B)
6481*67e74705SXin Li {
6482*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6483*67e74705SXin Li (__v4sf)_mm_unpacklo_ps(__A, __B),
6484*67e74705SXin Li (__v4sf)__W);
6485*67e74705SXin Li }
6486*67e74705SXin Li
6487*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_ps(__mmask8 __U,__m128 __A,__m128 __B)6488*67e74705SXin Li _mm_maskz_unpacklo_ps(__mmask8 __U, __m128 __A, __m128 __B)
6489*67e74705SXin Li {
6490*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
6491*67e74705SXin Li (__v4sf)_mm_unpacklo_ps(__A, __B),
6492*67e74705SXin Li (__v4sf)_mm_setzero_ps());
6493*67e74705SXin Li }
6494*67e74705SXin Li
6495*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)6496*67e74705SXin Li _mm256_mask_unpacklo_ps(__m256 __W, __mmask8 __U, __m256 __A, __m256 __B)
6497*67e74705SXin Li {
6498*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6499*67e74705SXin Li (__v8sf)_mm256_unpacklo_ps(__A, __B),
6500*67e74705SXin Li (__v8sf)__W);
6501*67e74705SXin Li }
6502*67e74705SXin Li
6503*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_ps(__mmask8 __U,__m256 __A,__m256 __B)6504*67e74705SXin Li _mm256_maskz_unpacklo_ps(__mmask8 __U, __m256 __A, __m256 __B)
6505*67e74705SXin Li {
6506*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
6507*67e74705SXin Li (__v8sf)_mm256_unpacklo_ps(__A, __B),
6508*67e74705SXin Li (__v8sf)_mm256_setzero_ps());
6509*67e74705SXin Li }
6510*67e74705SXin Li
6511*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_rcp14_pd(__m128d __A)6512*67e74705SXin Li _mm_rcp14_pd (__m128d __A)
6513*67e74705SXin Li {
6514*67e74705SXin Li return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6515*67e74705SXin Li (__v2df)
6516*67e74705SXin Li _mm_setzero_pd (),
6517*67e74705SXin Li (__mmask8) -1);
6518*67e74705SXin Li }
6519*67e74705SXin Li
6520*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_rcp14_pd(__m128d __W,__mmask8 __U,__m128d __A)6521*67e74705SXin Li _mm_mask_rcp14_pd (__m128d __W, __mmask8 __U, __m128d __A)
6522*67e74705SXin Li {
6523*67e74705SXin Li return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6524*67e74705SXin Li (__v2df) __W,
6525*67e74705SXin Li (__mmask8) __U);
6526*67e74705SXin Li }
6527*67e74705SXin Li
6528*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_rcp14_pd(__mmask8 __U,__m128d __A)6529*67e74705SXin Li _mm_maskz_rcp14_pd (__mmask8 __U, __m128d __A)
6530*67e74705SXin Li {
6531*67e74705SXin Li return (__m128d) __builtin_ia32_rcp14pd128_mask ((__v2df) __A,
6532*67e74705SXin Li (__v2df)
6533*67e74705SXin Li _mm_setzero_pd (),
6534*67e74705SXin Li (__mmask8) __U);
6535*67e74705SXin Li }
6536*67e74705SXin Li
6537*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_rcp14_pd(__m256d __A)6538*67e74705SXin Li _mm256_rcp14_pd (__m256d __A)
6539*67e74705SXin Li {
6540*67e74705SXin Li return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6541*67e74705SXin Li (__v4df)
6542*67e74705SXin Li _mm256_setzero_pd (),
6543*67e74705SXin Li (__mmask8) -1);
6544*67e74705SXin Li }
6545*67e74705SXin Li
6546*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_rcp14_pd(__m256d __W,__mmask8 __U,__m256d __A)6547*67e74705SXin Li _mm256_mask_rcp14_pd (__m256d __W, __mmask8 __U, __m256d __A)
6548*67e74705SXin Li {
6549*67e74705SXin Li return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6550*67e74705SXin Li (__v4df) __W,
6551*67e74705SXin Li (__mmask8) __U);
6552*67e74705SXin Li }
6553*67e74705SXin Li
6554*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_rcp14_pd(__mmask8 __U,__m256d __A)6555*67e74705SXin Li _mm256_maskz_rcp14_pd (__mmask8 __U, __m256d __A)
6556*67e74705SXin Li {
6557*67e74705SXin Li return (__m256d) __builtin_ia32_rcp14pd256_mask ((__v4df) __A,
6558*67e74705SXin Li (__v4df)
6559*67e74705SXin Li _mm256_setzero_pd (),
6560*67e74705SXin Li (__mmask8) __U);
6561*67e74705SXin Li }
6562*67e74705SXin Li
6563*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_rcp14_ps(__m128 __A)6564*67e74705SXin Li _mm_rcp14_ps (__m128 __A)
6565*67e74705SXin Li {
6566*67e74705SXin Li return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6567*67e74705SXin Li (__v4sf)
6568*67e74705SXin Li _mm_setzero_ps (),
6569*67e74705SXin Li (__mmask8) -1);
6570*67e74705SXin Li }
6571*67e74705SXin Li
6572*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_rcp14_ps(__m128 __W,__mmask8 __U,__m128 __A)6573*67e74705SXin Li _mm_mask_rcp14_ps (__m128 __W, __mmask8 __U, __m128 __A)
6574*67e74705SXin Li {
6575*67e74705SXin Li return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6576*67e74705SXin Li (__v4sf) __W,
6577*67e74705SXin Li (__mmask8) __U);
6578*67e74705SXin Li }
6579*67e74705SXin Li
6580*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_rcp14_ps(__mmask8 __U,__m128 __A)6581*67e74705SXin Li _mm_maskz_rcp14_ps (__mmask8 __U, __m128 __A)
6582*67e74705SXin Li {
6583*67e74705SXin Li return (__m128) __builtin_ia32_rcp14ps128_mask ((__v4sf) __A,
6584*67e74705SXin Li (__v4sf)
6585*67e74705SXin Li _mm_setzero_ps (),
6586*67e74705SXin Li (__mmask8) __U);
6587*67e74705SXin Li }
6588*67e74705SXin Li
6589*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_rcp14_ps(__m256 __A)6590*67e74705SXin Li _mm256_rcp14_ps (__m256 __A)
6591*67e74705SXin Li {
6592*67e74705SXin Li return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6593*67e74705SXin Li (__v8sf)
6594*67e74705SXin Li _mm256_setzero_ps (),
6595*67e74705SXin Li (__mmask8) -1);
6596*67e74705SXin Li }
6597*67e74705SXin Li
6598*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_rcp14_ps(__m256 __W,__mmask8 __U,__m256 __A)6599*67e74705SXin Li _mm256_mask_rcp14_ps (__m256 __W, __mmask8 __U, __m256 __A)
6600*67e74705SXin Li {
6601*67e74705SXin Li return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6602*67e74705SXin Li (__v8sf) __W,
6603*67e74705SXin Li (__mmask8) __U);
6604*67e74705SXin Li }
6605*67e74705SXin Li
6606*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_rcp14_ps(__mmask8 __U,__m256 __A)6607*67e74705SXin Li _mm256_maskz_rcp14_ps (__mmask8 __U, __m256 __A)
6608*67e74705SXin Li {
6609*67e74705SXin Li return (__m256) __builtin_ia32_rcp14ps256_mask ((__v8sf) __A,
6610*67e74705SXin Li (__v8sf)
6611*67e74705SXin Li _mm256_setzero_ps (),
6612*67e74705SXin Li (__mmask8) __U);
6613*67e74705SXin Li }
6614*67e74705SXin Li
6615*67e74705SXin Li #define _mm_mask_permute_pd(W, U, X, C) __extension__ ({ \
6616*67e74705SXin Li (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6617*67e74705SXin Li (__v2df)_mm_permute_pd((X), (C)), \
6618*67e74705SXin Li (__v2df)(__m128d)(W)); })
6619*67e74705SXin Li
6620*67e74705SXin Li #define _mm_maskz_permute_pd(U, X, C) __extension__ ({ \
6621*67e74705SXin Li (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
6622*67e74705SXin Li (__v2df)_mm_permute_pd((X), (C)), \
6623*67e74705SXin Li (__v2df)_mm_setzero_pd()); })
6624*67e74705SXin Li
6625*67e74705SXin Li #define _mm256_mask_permute_pd(W, U, X, C) __extension__ ({ \
6626*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6627*67e74705SXin Li (__v4df)_mm256_permute_pd((X), (C)), \
6628*67e74705SXin Li (__v4df)(__m256d)(W)); })
6629*67e74705SXin Li
6630*67e74705SXin Li #define _mm256_maskz_permute_pd(U, X, C) __extension__ ({ \
6631*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
6632*67e74705SXin Li (__v4df)_mm256_permute_pd((X), (C)), \
6633*67e74705SXin Li (__v4df)_mm256_setzero_pd()); })
6634*67e74705SXin Li
6635*67e74705SXin Li #define _mm_mask_permute_ps(W, U, X, C) __extension__ ({ \
6636*67e74705SXin Li (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6637*67e74705SXin Li (__v4sf)_mm_permute_ps((X), (C)), \
6638*67e74705SXin Li (__v4sf)(__m128)(W)); })
6639*67e74705SXin Li
6640*67e74705SXin Li #define _mm_maskz_permute_ps(U, X, C) __extension__ ({ \
6641*67e74705SXin Li (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
6642*67e74705SXin Li (__v4sf)_mm_permute_ps((X), (C)), \
6643*67e74705SXin Li (__v4sf)_mm_setzero_ps()); })
6644*67e74705SXin Li
6645*67e74705SXin Li #define _mm256_mask_permute_ps(W, U, X, C) __extension__ ({ \
6646*67e74705SXin Li (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6647*67e74705SXin Li (__v8sf)_mm256_permute_ps((X), (C)), \
6648*67e74705SXin Li (__v8sf)(__m256)(W)); })
6649*67e74705SXin Li
6650*67e74705SXin Li #define _mm256_maskz_permute_ps(U, X, C) __extension__ ({ \
6651*67e74705SXin Li (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
6652*67e74705SXin Li (__v8sf)_mm256_permute_ps((X), (C)), \
6653*67e74705SXin Li (__v8sf)_mm256_setzero_ps()); })
6654*67e74705SXin Li
6655*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_permutevar_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128i __C)6656*67e74705SXin Li _mm_mask_permutevar_pd (__m128d __W, __mmask8 __U, __m128d __A,
6657*67e74705SXin Li __m128i __C)
6658*67e74705SXin Li {
6659*67e74705SXin Li return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
6660*67e74705SXin Li (__v2di) __C,
6661*67e74705SXin Li (__v2df) __W,
6662*67e74705SXin Li (__mmask8) __U);
6663*67e74705SXin Li }
6664*67e74705SXin Li
6665*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_permutevar_pd(__mmask8 __U,__m128d __A,__m128i __C)6666*67e74705SXin Li _mm_maskz_permutevar_pd (__mmask8 __U, __m128d __A, __m128i __C)
6667*67e74705SXin Li {
6668*67e74705SXin Li return (__m128d) __builtin_ia32_vpermilvarpd_mask ((__v2df) __A,
6669*67e74705SXin Li (__v2di) __C,
6670*67e74705SXin Li (__v2df)
6671*67e74705SXin Li _mm_setzero_pd (),
6672*67e74705SXin Li (__mmask8) __U);
6673*67e74705SXin Li }
6674*67e74705SXin Li
6675*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_permutevar_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256i __C)6676*67e74705SXin Li _mm256_mask_permutevar_pd (__m256d __W, __mmask8 __U, __m256d __A,
6677*67e74705SXin Li __m256i __C)
6678*67e74705SXin Li {
6679*67e74705SXin Li return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
6680*67e74705SXin Li (__v4di) __C,
6681*67e74705SXin Li (__v4df) __W,
6682*67e74705SXin Li (__mmask8)
6683*67e74705SXin Li __U);
6684*67e74705SXin Li }
6685*67e74705SXin Li
6686*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_permutevar_pd(__mmask8 __U,__m256d __A,__m256i __C)6687*67e74705SXin Li _mm256_maskz_permutevar_pd (__mmask8 __U, __m256d __A, __m256i __C)
6688*67e74705SXin Li {
6689*67e74705SXin Li return (__m256d) __builtin_ia32_vpermilvarpd256_mask ((__v4df) __A,
6690*67e74705SXin Li (__v4di) __C,
6691*67e74705SXin Li (__v4df)
6692*67e74705SXin Li _mm256_setzero_pd (),
6693*67e74705SXin Li (__mmask8)
6694*67e74705SXin Li __U);
6695*67e74705SXin Li }
6696*67e74705SXin Li
6697*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_permutevar_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128i __C)6698*67e74705SXin Li _mm_mask_permutevar_ps (__m128 __W, __mmask8 __U, __m128 __A,
6699*67e74705SXin Li __m128i __C)
6700*67e74705SXin Li {
6701*67e74705SXin Li return (__m128) __builtin_ia32_vpermilvarps_mask ((__v4sf) __A,
6702*67e74705SXin Li (__v4si) __C,
6703*67e74705SXin Li (__v4sf) __W,
6704*67e74705SXin Li (__mmask8) __U);
6705*67e74705SXin Li }
6706*67e74705SXin Li
6707*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_permutevar_ps(__mmask8 __U,__m128 __A,__m128i __C)6708*67e74705SXin Li _mm_maskz_permutevar_ps (__mmask8 __U, __m128 __A, __m128i __C)
6709*67e74705SXin Li {
6710*67e74705SXin Li return (__m128) __builtin_ia32_vpermilvarps_mask ((__v4sf) __A,
6711*67e74705SXin Li (__v4si) __C,
6712*67e74705SXin Li (__v4sf)
6713*67e74705SXin Li _mm_setzero_ps (),
6714*67e74705SXin Li (__mmask8) __U);
6715*67e74705SXin Li }
6716*67e74705SXin Li
6717*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_permutevar_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256i __C)6718*67e74705SXin Li _mm256_mask_permutevar_ps (__m256 __W, __mmask8 __U, __m256 __A,
6719*67e74705SXin Li __m256i __C)
6720*67e74705SXin Li {
6721*67e74705SXin Li return (__m256) __builtin_ia32_vpermilvarps256_mask ((__v8sf) __A,
6722*67e74705SXin Li (__v8si) __C,
6723*67e74705SXin Li (__v8sf) __W,
6724*67e74705SXin Li (__mmask8) __U);
6725*67e74705SXin Li }
6726*67e74705SXin Li
6727*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_permutevar_ps(__mmask8 __U,__m256 __A,__m256i __C)6728*67e74705SXin Li _mm256_maskz_permutevar_ps (__mmask8 __U, __m256 __A, __m256i __C)
6729*67e74705SXin Li {
6730*67e74705SXin Li return (__m256) __builtin_ia32_vpermilvarps256_mask ((__v8sf) __A,
6731*67e74705SXin Li (__v8si) __C,
6732*67e74705SXin Li (__v8sf)
6733*67e74705SXin Li _mm256_setzero_ps (),
6734*67e74705SXin Li (__mmask8) __U);
6735*67e74705SXin Li }
6736*67e74705SXin Li
6737*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_test_epi32_mask(__m128i __A,__m128i __B)6738*67e74705SXin Li _mm_test_epi32_mask (__m128i __A, __m128i __B)
6739*67e74705SXin Li {
6740*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
6741*67e74705SXin Li (__v4si) __B,
6742*67e74705SXin Li (__mmask8) -1);
6743*67e74705SXin Li }
6744*67e74705SXin Li
6745*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_test_epi32_mask(__mmask8 __U,__m128i __A,__m128i __B)6746*67e74705SXin Li _mm_mask_test_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6747*67e74705SXin Li {
6748*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmd128 ((__v4si) __A,
6749*67e74705SXin Li (__v4si) __B, __U);
6750*67e74705SXin Li }
6751*67e74705SXin Li
6752*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_test_epi32_mask(__m256i __A,__m256i __B)6753*67e74705SXin Li _mm256_test_epi32_mask (__m256i __A, __m256i __B)
6754*67e74705SXin Li {
6755*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
6756*67e74705SXin Li (__v8si) __B,
6757*67e74705SXin Li (__mmask8) -1);
6758*67e74705SXin Li }
6759*67e74705SXin Li
6760*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_test_epi32_mask(__mmask8 __U,__m256i __A,__m256i __B)6761*67e74705SXin Li _mm256_mask_test_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6762*67e74705SXin Li {
6763*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmd256 ((__v8si) __A,
6764*67e74705SXin Li (__v8si) __B, __U);
6765*67e74705SXin Li }
6766*67e74705SXin Li
6767*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_test_epi64_mask(__m128i __A,__m128i __B)6768*67e74705SXin Li _mm_test_epi64_mask (__m128i __A, __m128i __B)
6769*67e74705SXin Li {
6770*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
6771*67e74705SXin Li (__v2di) __B,
6772*67e74705SXin Li (__mmask8) -1);
6773*67e74705SXin Li }
6774*67e74705SXin Li
6775*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_test_epi64_mask(__mmask8 __U,__m128i __A,__m128i __B)6776*67e74705SXin Li _mm_mask_test_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6777*67e74705SXin Li {
6778*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmq128 ((__v2di) __A,
6779*67e74705SXin Li (__v2di) __B, __U);
6780*67e74705SXin Li }
6781*67e74705SXin Li
6782*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_test_epi64_mask(__m256i __A,__m256i __B)6783*67e74705SXin Li _mm256_test_epi64_mask (__m256i __A, __m256i __B)
6784*67e74705SXin Li {
6785*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
6786*67e74705SXin Li (__v4di) __B,
6787*67e74705SXin Li (__mmask8) -1);
6788*67e74705SXin Li }
6789*67e74705SXin Li
6790*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_test_epi64_mask(__mmask8 __U,__m256i __A,__m256i __B)6791*67e74705SXin Li _mm256_mask_test_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6792*67e74705SXin Li {
6793*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestmq256 ((__v4di) __A,
6794*67e74705SXin Li (__v4di) __B, __U);
6795*67e74705SXin Li }
6796*67e74705SXin Li
6797*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_testn_epi32_mask(__m128i __A,__m128i __B)6798*67e74705SXin Li _mm_testn_epi32_mask (__m128i __A, __m128i __B)
6799*67e74705SXin Li {
6800*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
6801*67e74705SXin Li (__v4si) __B,
6802*67e74705SXin Li (__mmask8) -1);
6803*67e74705SXin Li }
6804*67e74705SXin Li
6805*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_testn_epi32_mask(__mmask8 __U,__m128i __A,__m128i __B)6806*67e74705SXin Li _mm_mask_testn_epi32_mask (__mmask8 __U, __m128i __A, __m128i __B)
6807*67e74705SXin Li {
6808*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmd128 ((__v4si) __A,
6809*67e74705SXin Li (__v4si) __B, __U);
6810*67e74705SXin Li }
6811*67e74705SXin Li
6812*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_testn_epi32_mask(__m256i __A,__m256i __B)6813*67e74705SXin Li _mm256_testn_epi32_mask (__m256i __A, __m256i __B)
6814*67e74705SXin Li {
6815*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
6816*67e74705SXin Li (__v8si) __B,
6817*67e74705SXin Li (__mmask8) -1);
6818*67e74705SXin Li }
6819*67e74705SXin Li
6820*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_testn_epi32_mask(__mmask8 __U,__m256i __A,__m256i __B)6821*67e74705SXin Li _mm256_mask_testn_epi32_mask (__mmask8 __U, __m256i __A, __m256i __B)
6822*67e74705SXin Li {
6823*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmd256 ((__v8si) __A,
6824*67e74705SXin Li (__v8si) __B, __U);
6825*67e74705SXin Li }
6826*67e74705SXin Li
6827*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_testn_epi64_mask(__m128i __A,__m128i __B)6828*67e74705SXin Li _mm_testn_epi64_mask (__m128i __A, __m128i __B)
6829*67e74705SXin Li {
6830*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
6831*67e74705SXin Li (__v2di) __B,
6832*67e74705SXin Li (__mmask8) -1);
6833*67e74705SXin Li }
6834*67e74705SXin Li
6835*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_mask_testn_epi64_mask(__mmask8 __U,__m128i __A,__m128i __B)6836*67e74705SXin Li _mm_mask_testn_epi64_mask (__mmask8 __U, __m128i __A, __m128i __B)
6837*67e74705SXin Li {
6838*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmq128 ((__v2di) __A,
6839*67e74705SXin Li (__v2di) __B, __U);
6840*67e74705SXin Li }
6841*67e74705SXin Li
6842*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_testn_epi64_mask(__m256i __A,__m256i __B)6843*67e74705SXin Li _mm256_testn_epi64_mask (__m256i __A, __m256i __B)
6844*67e74705SXin Li {
6845*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
6846*67e74705SXin Li (__v4di) __B,
6847*67e74705SXin Li (__mmask8) -1);
6848*67e74705SXin Li }
6849*67e74705SXin Li
6850*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_mask_testn_epi64_mask(__mmask8 __U,__m256i __A,__m256i __B)6851*67e74705SXin Li _mm256_mask_testn_epi64_mask (__mmask8 __U, __m256i __A, __m256i __B)
6852*67e74705SXin Li {
6853*67e74705SXin Li return (__mmask8) __builtin_ia32_ptestnmq256 ((__v4di) __A,
6854*67e74705SXin Li (__v4di) __B, __U);
6855*67e74705SXin Li }
6856*67e74705SXin Li
6857*67e74705SXin Li
6858*67e74705SXin Li
6859*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)6860*67e74705SXin Li _mm_mask_unpackhi_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
6861*67e74705SXin Li {
6862*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6863*67e74705SXin Li (__v4si)_mm_unpackhi_epi32(__A, __B),
6864*67e74705SXin Li (__v4si)__W);
6865*67e74705SXin Li }
6866*67e74705SXin Li
6867*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_epi32(__mmask8 __U,__m128i __A,__m128i __B)6868*67e74705SXin Li _mm_maskz_unpackhi_epi32(__mmask8 __U, __m128i __A, __m128i __B)
6869*67e74705SXin Li {
6870*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6871*67e74705SXin Li (__v4si)_mm_unpackhi_epi32(__A, __B),
6872*67e74705SXin Li (__v4si)_mm_setzero_si128());
6873*67e74705SXin Li }
6874*67e74705SXin Li
6875*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)6876*67e74705SXin Li _mm256_mask_unpackhi_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
6877*67e74705SXin Li {
6878*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6879*67e74705SXin Li (__v8si)_mm256_unpackhi_epi32(__A, __B),
6880*67e74705SXin Li (__v8si)__W);
6881*67e74705SXin Li }
6882*67e74705SXin Li
6883*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_epi32(__mmask8 __U,__m256i __A,__m256i __B)6884*67e74705SXin Li _mm256_maskz_unpackhi_epi32(__mmask8 __U, __m256i __A, __m256i __B)
6885*67e74705SXin Li {
6886*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6887*67e74705SXin Li (__v8si)_mm256_unpackhi_epi32(__A, __B),
6888*67e74705SXin Li (__v8si)_mm256_setzero_si256());
6889*67e74705SXin Li }
6890*67e74705SXin Li
6891*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpackhi_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)6892*67e74705SXin Li _mm_mask_unpackhi_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
6893*67e74705SXin Li {
6894*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6895*67e74705SXin Li (__v2di)_mm_unpackhi_epi64(__A, __B),
6896*67e74705SXin Li (__v2di)__W);
6897*67e74705SXin Li }
6898*67e74705SXin Li
6899*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpackhi_epi64(__mmask8 __U,__m128i __A,__m128i __B)6900*67e74705SXin Li _mm_maskz_unpackhi_epi64(__mmask8 __U, __m128i __A, __m128i __B)
6901*67e74705SXin Li {
6902*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6903*67e74705SXin Li (__v2di)_mm_unpackhi_epi64(__A, __B),
6904*67e74705SXin Li (__v2di)_mm_setzero_di());
6905*67e74705SXin Li }
6906*67e74705SXin Li
6907*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpackhi_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)6908*67e74705SXin Li _mm256_mask_unpackhi_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
6909*67e74705SXin Li {
6910*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6911*67e74705SXin Li (__v4di)_mm256_unpackhi_epi64(__A, __B),
6912*67e74705SXin Li (__v4di)__W);
6913*67e74705SXin Li }
6914*67e74705SXin Li
6915*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpackhi_epi64(__mmask8 __U,__m256i __A,__m256i __B)6916*67e74705SXin Li _mm256_maskz_unpackhi_epi64(__mmask8 __U, __m256i __A, __m256i __B)
6917*67e74705SXin Li {
6918*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6919*67e74705SXin Li (__v4di)_mm256_unpackhi_epi64(__A, __B),
6920*67e74705SXin Li (__v4di)_mm256_setzero_si256());
6921*67e74705SXin Li }
6922*67e74705SXin Li
6923*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)6924*67e74705SXin Li _mm_mask_unpacklo_epi32(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
6925*67e74705SXin Li {
6926*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6927*67e74705SXin Li (__v4si)_mm_unpacklo_epi32(__A, __B),
6928*67e74705SXin Li (__v4si)__W);
6929*67e74705SXin Li }
6930*67e74705SXin Li
6931*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_epi32(__mmask8 __U,__m128i __A,__m128i __B)6932*67e74705SXin Li _mm_maskz_unpacklo_epi32(__mmask8 __U, __m128i __A, __m128i __B)
6933*67e74705SXin Li {
6934*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128((__mmask8)__U,
6935*67e74705SXin Li (__v4si)_mm_unpacklo_epi32(__A, __B),
6936*67e74705SXin Li (__v4si)_mm_setzero_si128());
6937*67e74705SXin Li }
6938*67e74705SXin Li
6939*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)6940*67e74705SXin Li _mm256_mask_unpacklo_epi32(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
6941*67e74705SXin Li {
6942*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6943*67e74705SXin Li (__v8si)_mm256_unpacklo_epi32(__A, __B),
6944*67e74705SXin Li (__v8si)__W);
6945*67e74705SXin Li }
6946*67e74705SXin Li
6947*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_epi32(__mmask8 __U,__m256i __A,__m256i __B)6948*67e74705SXin Li _mm256_maskz_unpacklo_epi32(__mmask8 __U, __m256i __A, __m256i __B)
6949*67e74705SXin Li {
6950*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256((__mmask8)__U,
6951*67e74705SXin Li (__v8si)_mm256_unpacklo_epi32(__A, __B),
6952*67e74705SXin Li (__v8si)_mm256_setzero_si256());
6953*67e74705SXin Li }
6954*67e74705SXin Li
6955*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_unpacklo_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)6956*67e74705SXin Li _mm_mask_unpacklo_epi64(__m128i __W, __mmask8 __U, __m128i __A, __m128i __B)
6957*67e74705SXin Li {
6958*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6959*67e74705SXin Li (__v2di)_mm_unpacklo_epi64(__A, __B),
6960*67e74705SXin Li (__v2di)__W);
6961*67e74705SXin Li }
6962*67e74705SXin Li
6963*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_unpacklo_epi64(__mmask8 __U,__m128i __A,__m128i __B)6964*67e74705SXin Li _mm_maskz_unpacklo_epi64(__mmask8 __U, __m128i __A, __m128i __B)
6965*67e74705SXin Li {
6966*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128((__mmask8)__U,
6967*67e74705SXin Li (__v2di)_mm_unpacklo_epi64(__A, __B),
6968*67e74705SXin Li (__v2di)_mm_setzero_di());
6969*67e74705SXin Li }
6970*67e74705SXin Li
6971*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_unpacklo_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)6972*67e74705SXin Li _mm256_mask_unpacklo_epi64(__m256i __W, __mmask8 __U, __m256i __A, __m256i __B)
6973*67e74705SXin Li {
6974*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6975*67e74705SXin Li (__v4di)_mm256_unpacklo_epi64(__A, __B),
6976*67e74705SXin Li (__v4di)__W);
6977*67e74705SXin Li }
6978*67e74705SXin Li
6979*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_unpacklo_epi64(__mmask8 __U,__m256i __A,__m256i __B)6980*67e74705SXin Li _mm256_maskz_unpacklo_epi64(__mmask8 __U, __m256i __A, __m256i __B)
6981*67e74705SXin Li {
6982*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256((__mmask8)__U,
6983*67e74705SXin Li (__v4di)_mm256_unpacklo_epi64(__A, __B),
6984*67e74705SXin Li (__v4di)_mm256_setzero_si256());
6985*67e74705SXin Li }
6986*67e74705SXin Li
6987*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sra_epi32(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)6988*67e74705SXin Li _mm_mask_sra_epi32 (__m128i __W, __mmask8 __U, __m128i __A,
6989*67e74705SXin Li __m128i __B)
6990*67e74705SXin Li {
6991*67e74705SXin Li return (__m128i) __builtin_ia32_psrad128_mask ((__v4si) __A,
6992*67e74705SXin Li (__v4si) __B,
6993*67e74705SXin Li (__v4si) __W,
6994*67e74705SXin Li (__mmask8) __U);
6995*67e74705SXin Li }
6996*67e74705SXin Li
6997*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sra_epi32(__mmask8 __U,__m128i __A,__m128i __B)6998*67e74705SXin Li _mm_maskz_sra_epi32 (__mmask8 __U, __m128i __A, __m128i __B)
6999*67e74705SXin Li {
7000*67e74705SXin Li return (__m128i) __builtin_ia32_psrad128_mask ((__v4si) __A,
7001*67e74705SXin Li (__v4si) __B,
7002*67e74705SXin Li (__v4si)
7003*67e74705SXin Li _mm_setzero_si128 (),
7004*67e74705SXin Li (__mmask8) __U);
7005*67e74705SXin Li }
7006*67e74705SXin Li
7007*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sra_epi32(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)7008*67e74705SXin Li _mm256_mask_sra_epi32 (__m256i __W, __mmask8 __U, __m256i __A,
7009*67e74705SXin Li __m128i __B)
7010*67e74705SXin Li {
7011*67e74705SXin Li return (__m256i) __builtin_ia32_psrad256_mask ((__v8si) __A,
7012*67e74705SXin Li (__v4si) __B,
7013*67e74705SXin Li (__v8si) __W,
7014*67e74705SXin Li (__mmask8) __U);
7015*67e74705SXin Li }
7016*67e74705SXin Li
7017*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sra_epi32(__mmask8 __U,__m256i __A,__m128i __B)7018*67e74705SXin Li _mm256_maskz_sra_epi32 (__mmask8 __U, __m256i __A, __m128i __B)
7019*67e74705SXin Li {
7020*67e74705SXin Li return (__m256i) __builtin_ia32_psrad256_mask ((__v8si) __A,
7021*67e74705SXin Li (__v4si) __B,
7022*67e74705SXin Li (__v8si)
7023*67e74705SXin Li _mm256_setzero_si256 (),
7024*67e74705SXin Li (__mmask8) __U);
7025*67e74705SXin Li }
7026*67e74705SXin Li
7027*67e74705SXin Li #define _mm_mask_srai_epi32(W, U, A, imm) __extension__ ({ \
7028*67e74705SXin Li (__m128i)__builtin_ia32_psradi128_mask((__v4si)(__m128i)(A), (int)(imm), \
7029*67e74705SXin Li (__v4si)(__m128i)(W), \
7030*67e74705SXin Li (__mmask8)(U)); })
7031*67e74705SXin Li
7032*67e74705SXin Li #define _mm_maskz_srai_epi32(U, A, imm) __extension__ ({ \
7033*67e74705SXin Li (__m128i)__builtin_ia32_psradi128_mask((__v4si)(__m128i)(A), (int)(imm), \
7034*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
7035*67e74705SXin Li (__mmask8)(U)); })
7036*67e74705SXin Li
7037*67e74705SXin Li #define _mm256_mask_srai_epi32(W, U, A, imm) __extension__ ({ \
7038*67e74705SXin Li (__m256i)__builtin_ia32_psradi256_mask((__v8si)(__m256i)(A), (int)(imm), \
7039*67e74705SXin Li (__v8si)(__m256i)(W), \
7040*67e74705SXin Li (__mmask8)(U)); })
7041*67e74705SXin Li
7042*67e74705SXin Li #define _mm256_maskz_srai_epi32(U, A, imm) __extension__ ({ \
7043*67e74705SXin Li (__m256i)__builtin_ia32_psradi256_mask((__v8si)(__m256i)(A), (int)(imm), \
7044*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
7045*67e74705SXin Li (__mmask8)(U)); })
7046*67e74705SXin Li
7047*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_sra_epi64(__m128i __A,__m128i __B)7048*67e74705SXin Li _mm_sra_epi64 (__m128i __A, __m128i __B)
7049*67e74705SXin Li {
7050*67e74705SXin Li return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
7051*67e74705SXin Li (__v2di) __B,
7052*67e74705SXin Li (__v2di)
7053*67e74705SXin Li _mm_setzero_di (),
7054*67e74705SXin Li (__mmask8) -1);
7055*67e74705SXin Li }
7056*67e74705SXin Li
7057*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_sra_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)7058*67e74705SXin Li _mm_mask_sra_epi64 (__m128i __W, __mmask8 __U, __m128i __A,
7059*67e74705SXin Li __m128i __B)
7060*67e74705SXin Li {
7061*67e74705SXin Li return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
7062*67e74705SXin Li (__v2di) __B,
7063*67e74705SXin Li (__v2di) __W,
7064*67e74705SXin Li (__mmask8) __U);
7065*67e74705SXin Li }
7066*67e74705SXin Li
7067*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_sra_epi64(__mmask8 __U,__m128i __A,__m128i __B)7068*67e74705SXin Li _mm_maskz_sra_epi64 (__mmask8 __U, __m128i __A, __m128i __B)
7069*67e74705SXin Li {
7070*67e74705SXin Li return (__m128i) __builtin_ia32_psraq128_mask ((__v2di) __A,
7071*67e74705SXin Li (__v2di) __B,
7072*67e74705SXin Li (__v2di)
7073*67e74705SXin Li _mm_setzero_di (),
7074*67e74705SXin Li (__mmask8) __U);
7075*67e74705SXin Li }
7076*67e74705SXin Li
7077*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sra_epi64(__m256i __A,__m128i __B)7078*67e74705SXin Li _mm256_sra_epi64 (__m256i __A, __m128i __B)
7079*67e74705SXin Li {
7080*67e74705SXin Li return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
7081*67e74705SXin Li (__v2di) __B,
7082*67e74705SXin Li (__v4di)
7083*67e74705SXin Li _mm256_setzero_si256 (),
7084*67e74705SXin Li (__mmask8) -1);
7085*67e74705SXin Li }
7086*67e74705SXin Li
7087*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_sra_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m128i __B)7088*67e74705SXin Li _mm256_mask_sra_epi64 (__m256i __W, __mmask8 __U, __m256i __A,
7089*67e74705SXin Li __m128i __B)
7090*67e74705SXin Li {
7091*67e74705SXin Li return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
7092*67e74705SXin Li (__v2di) __B,
7093*67e74705SXin Li (__v4di) __W,
7094*67e74705SXin Li (__mmask8) __U);
7095*67e74705SXin Li }
7096*67e74705SXin Li
7097*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_sra_epi64(__mmask8 __U,__m256i __A,__m128i __B)7098*67e74705SXin Li _mm256_maskz_sra_epi64 (__mmask8 __U, __m256i __A, __m128i __B)
7099*67e74705SXin Li {
7100*67e74705SXin Li return (__m256i) __builtin_ia32_psraq256_mask ((__v4di) __A,
7101*67e74705SXin Li (__v2di) __B,
7102*67e74705SXin Li (__v4di)
7103*67e74705SXin Li _mm256_setzero_si256 (),
7104*67e74705SXin Li (__mmask8) __U);
7105*67e74705SXin Li }
7106*67e74705SXin Li
7107*67e74705SXin Li #define _mm_srai_epi64(A, imm) __extension__ ({ \
7108*67e74705SXin Li (__m128i)__builtin_ia32_psraqi128_mask((__v2di)(__m128i)(A), (int)(imm), \
7109*67e74705SXin Li (__v2di)_mm_setzero_di(), \
7110*67e74705SXin Li (__mmask8)-1); })
7111*67e74705SXin Li
7112*67e74705SXin Li #define _mm_mask_srai_epi64(W, U, A, imm) __extension__ ({ \
7113*67e74705SXin Li (__m128i)__builtin_ia32_psraqi128_mask((__v2di)(__m128i)(A), (int)(imm), \
7114*67e74705SXin Li (__v2di)(__m128i)(W), \
7115*67e74705SXin Li (__mmask8)(U)); })
7116*67e74705SXin Li
7117*67e74705SXin Li #define _mm_maskz_srai_epi64(U, A, imm) __extension__ ({ \
7118*67e74705SXin Li (__m128i)__builtin_ia32_psraqi128_mask((__v2di)(__m128i)(A), (int)(imm), \
7119*67e74705SXin Li (__v2di)_mm_setzero_si128(), \
7120*67e74705SXin Li (__mmask8)(U)); })
7121*67e74705SXin Li
7122*67e74705SXin Li #define _mm256_srai_epi64(A, imm) __extension__ ({ \
7123*67e74705SXin Li (__m256i)__builtin_ia32_psraqi256_mask((__v4di)(__m256i)(A), (int)(imm), \
7124*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
7125*67e74705SXin Li (__mmask8)-1); })
7126*67e74705SXin Li
7127*67e74705SXin Li #define _mm256_mask_srai_epi64(W, U, A, imm) __extension__ ({ \
7128*67e74705SXin Li (__m256i)__builtin_ia32_psraqi256_mask((__v4di)(__m256i)(A), (int)(imm), \
7129*67e74705SXin Li (__v4di)(__m256i)(W), \
7130*67e74705SXin Li (__mmask8)(U)); })
7131*67e74705SXin Li
7132*67e74705SXin Li #define _mm256_maskz_srai_epi64(U, A, imm) __extension__ ({ \
7133*67e74705SXin Li (__m256i)__builtin_ia32_psraqi256_mask((__v4di)(__m256i)(A), (int)(imm), \
7134*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
7135*67e74705SXin Li (__mmask8)(U)); })
7136*67e74705SXin Li
7137*67e74705SXin Li #define _mm_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
7138*67e74705SXin Li (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
7139*67e74705SXin Li (__v4si)(__m128i)(B), \
7140*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
7141*67e74705SXin Li (__mmask8)-1); })
7142*67e74705SXin Li
7143*67e74705SXin Li #define _mm_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
7144*67e74705SXin Li (__m128i)__builtin_ia32_pternlogd128_mask((__v4si)(__m128i)(A), \
7145*67e74705SXin Li (__v4si)(__m128i)(B), \
7146*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
7147*67e74705SXin Li (__mmask8)(U)); })
7148*67e74705SXin Li
7149*67e74705SXin Li #define _mm_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
7150*67e74705SXin Li (__m128i)__builtin_ia32_pternlogd128_maskz((__v4si)(__m128i)(A), \
7151*67e74705SXin Li (__v4si)(__m128i)(B), \
7152*67e74705SXin Li (__v4si)(__m128i)(C), (int)(imm), \
7153*67e74705SXin Li (__mmask8)(U)); })
7154*67e74705SXin Li
7155*67e74705SXin Li #define _mm256_ternarylogic_epi32(A, B, C, imm) __extension__ ({ \
7156*67e74705SXin Li (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
7157*67e74705SXin Li (__v8si)(__m256i)(B), \
7158*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
7159*67e74705SXin Li (__mmask8)-1); })
7160*67e74705SXin Li
7161*67e74705SXin Li #define _mm256_mask_ternarylogic_epi32(A, U, B, C, imm) __extension__ ({ \
7162*67e74705SXin Li (__m256i)__builtin_ia32_pternlogd256_mask((__v8si)(__m256i)(A), \
7163*67e74705SXin Li (__v8si)(__m256i)(B), \
7164*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
7165*67e74705SXin Li (__mmask8)(U)); })
7166*67e74705SXin Li
7167*67e74705SXin Li #define _mm256_maskz_ternarylogic_epi32(U, A, B, C, imm) __extension__ ({ \
7168*67e74705SXin Li (__m256i)__builtin_ia32_pternlogd256_maskz((__v8si)(__m256i)(A), \
7169*67e74705SXin Li (__v8si)(__m256i)(B), \
7170*67e74705SXin Li (__v8si)(__m256i)(C), (int)(imm), \
7171*67e74705SXin Li (__mmask8)(U)); })
7172*67e74705SXin Li
7173*67e74705SXin Li #define _mm_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
7174*67e74705SXin Li (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
7175*67e74705SXin Li (__v2di)(__m128i)(B), \
7176*67e74705SXin Li (__v2di)(__m128i)(C), (int)(imm), \
7177*67e74705SXin Li (__mmask8)-1); })
7178*67e74705SXin Li
7179*67e74705SXin Li #define _mm_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
7180*67e74705SXin Li (__m128i)__builtin_ia32_pternlogq128_mask((__v2di)(__m128i)(A), \
7181*67e74705SXin Li (__v2di)(__m128i)(B), \
7182*67e74705SXin Li (__v2di)(__m128i)(C), (int)(imm), \
7183*67e74705SXin Li (__mmask8)(U)); })
7184*67e74705SXin Li
7185*67e74705SXin Li #define _mm_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
7186*67e74705SXin Li (__m128i)__builtin_ia32_pternlogq128_maskz((__v2di)(__m128i)(A), \
7187*67e74705SXin Li (__v2di)(__m128i)(B), \
7188*67e74705SXin Li (__v2di)(__m128i)(C), (int)(imm), \
7189*67e74705SXin Li (__mmask8)(U)); })
7190*67e74705SXin Li
7191*67e74705SXin Li #define _mm256_ternarylogic_epi64(A, B, C, imm) __extension__ ({ \
7192*67e74705SXin Li (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
7193*67e74705SXin Li (__v4di)(__m256i)(B), \
7194*67e74705SXin Li (__v4di)(__m256i)(C), (int)(imm), \
7195*67e74705SXin Li (__mmask8)-1); })
7196*67e74705SXin Li
7197*67e74705SXin Li #define _mm256_mask_ternarylogic_epi64(A, U, B, C, imm) __extension__ ({ \
7198*67e74705SXin Li (__m256i)__builtin_ia32_pternlogq256_mask((__v4di)(__m256i)(A), \
7199*67e74705SXin Li (__v4di)(__m256i)(B), \
7200*67e74705SXin Li (__v4di)(__m256i)(C), (int)(imm), \
7201*67e74705SXin Li (__mmask8)(U)); })
7202*67e74705SXin Li
7203*67e74705SXin Li #define _mm256_maskz_ternarylogic_epi64(U, A, B, C, imm) __extension__ ({ \
7204*67e74705SXin Li (__m256i)__builtin_ia32_pternlogq256_maskz((__v4di)(__m256i)(A), \
7205*67e74705SXin Li (__v4di)(__m256i)(B), \
7206*67e74705SXin Li (__v4di)(__m256i)(C), (int)(imm), \
7207*67e74705SXin Li (__mmask8)(U)); })
7208*67e74705SXin Li
7209*67e74705SXin Li
7210*67e74705SXin Li
7211*67e74705SXin Li #define _mm256_shuffle_f32x4(A, B, imm) __extension__ ({ \
7212*67e74705SXin Li (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
7213*67e74705SXin Li (__v8sf)(__m256)(B), (int)(imm), \
7214*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
7215*67e74705SXin Li (__mmask8)-1); })
7216*67e74705SXin Li
7217*67e74705SXin Li #define _mm256_mask_shuffle_f32x4(W, U, A, B, imm) __extension__ ({ \
7218*67e74705SXin Li (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
7219*67e74705SXin Li (__v8sf)(__m256)(B), (int)(imm), \
7220*67e74705SXin Li (__v8sf)(__m256)(W), \
7221*67e74705SXin Li (__mmask8)(U)); })
7222*67e74705SXin Li
7223*67e74705SXin Li #define _mm256_maskz_shuffle_f32x4(U, A, B, imm) __extension__ ({ \
7224*67e74705SXin Li (__m256)__builtin_ia32_shuf_f32x4_256_mask((__v8sf)(__m256)(A), \
7225*67e74705SXin Li (__v8sf)(__m256)(B), (int)(imm), \
7226*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
7227*67e74705SXin Li (__mmask8)(U)); })
7228*67e74705SXin Li
7229*67e74705SXin Li #define _mm256_shuffle_f64x2(A, B, imm) __extension__ ({ \
7230*67e74705SXin Li (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
7231*67e74705SXin Li (__v4df)(__m256d)(B), \
7232*67e74705SXin Li (int)(imm), \
7233*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
7234*67e74705SXin Li (__mmask8)-1); })
7235*67e74705SXin Li
7236*67e74705SXin Li #define _mm256_mask_shuffle_f64x2(W, U, A, B, imm) __extension__ ({ \
7237*67e74705SXin Li (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
7238*67e74705SXin Li (__v4df)(__m256d)(B), \
7239*67e74705SXin Li (int)(imm), \
7240*67e74705SXin Li (__v4df)(__m256d)(W), \
7241*67e74705SXin Li (__mmask8)(U)); })
7242*67e74705SXin Li
7243*67e74705SXin Li #define _mm256_maskz_shuffle_f64x2(U, A, B, imm) __extension__ ({ \
7244*67e74705SXin Li (__m256d)__builtin_ia32_shuf_f64x2_256_mask((__v4df)(__m256d)(A), \
7245*67e74705SXin Li (__v4df)(__m256d)(B), \
7246*67e74705SXin Li (int)(imm), \
7247*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
7248*67e74705SXin Li (__mmask8)(U)); })
7249*67e74705SXin Li
7250*67e74705SXin Li #define _mm256_shuffle_i32x4(A, B, imm) __extension__ ({ \
7251*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7252*67e74705SXin Li (__v8si)(__m256i)(B), \
7253*67e74705SXin Li (int)(imm), \
7254*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
7255*67e74705SXin Li (__mmask8)-1); })
7256*67e74705SXin Li
7257*67e74705SXin Li #define _mm256_mask_shuffle_i32x4(W, U, A, B, imm) __extension__ ({ \
7258*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7259*67e74705SXin Li (__v8si)(__m256i)(B), \
7260*67e74705SXin Li (int)(imm), \
7261*67e74705SXin Li (__v8si)(__m256i)(W), \
7262*67e74705SXin Li (__mmask8)(U)); })
7263*67e74705SXin Li
7264*67e74705SXin Li #define _mm256_maskz_shuffle_i32x4(U, A, B, imm) __extension__ ({ \
7265*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i32x4_256_mask((__v8si)(__m256i)(A), \
7266*67e74705SXin Li (__v8si)(__m256i)(B), \
7267*67e74705SXin Li (int)(imm), \
7268*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
7269*67e74705SXin Li (__mmask8)(U)); })
7270*67e74705SXin Li
7271*67e74705SXin Li #define _mm256_shuffle_i64x2(A, B, imm) __extension__ ({ \
7272*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7273*67e74705SXin Li (__v4di)(__m256i)(B), \
7274*67e74705SXin Li (int)(imm), \
7275*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
7276*67e74705SXin Li (__mmask8)-1); })
7277*67e74705SXin Li
7278*67e74705SXin Li #define _mm256_mask_shuffle_i64x2(W, U, A, B, imm) __extension__ ({ \
7279*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7280*67e74705SXin Li (__v4di)(__m256i)(B), \
7281*67e74705SXin Li (int)(imm), \
7282*67e74705SXin Li (__v4di)(__m256i)(W), \
7283*67e74705SXin Li (__mmask8)(U)); })
7284*67e74705SXin Li
7285*67e74705SXin Li #define _mm256_maskz_shuffle_i64x2(U, A, B, imm) __extension__ ({ \
7286*67e74705SXin Li (__m256i)__builtin_ia32_shuf_i64x2_256_mask((__v4di)(__m256i)(A), \
7287*67e74705SXin Li (__v4di)(__m256i)(B), \
7288*67e74705SXin Li (int)(imm), \
7289*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
7290*67e74705SXin Li (__mmask8)(U)); })
7291*67e74705SXin Li
7292*67e74705SXin Li #define _mm_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
7293*67e74705SXin Li (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
7294*67e74705SXin Li (__v2df)_mm_shuffle_pd((A), (B), (M)), \
7295*67e74705SXin Li (__v2df)(__m128d)(W)); })
7296*67e74705SXin Li
7297*67e74705SXin Li #define _mm_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
7298*67e74705SXin Li (__m128d)__builtin_ia32_selectpd_128((__mmask8)(U), \
7299*67e74705SXin Li (__v2df)_mm_shuffle_pd((A), (B), (M)), \
7300*67e74705SXin Li (__v2df)_mm_setzero_pd()); })
7301*67e74705SXin Li
7302*67e74705SXin Li #define _mm256_mask_shuffle_pd(W, U, A, B, M) __extension__ ({ \
7303*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7304*67e74705SXin Li (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
7305*67e74705SXin Li (__v4df)(__m256d)(W)); })
7306*67e74705SXin Li
7307*67e74705SXin Li #define _mm256_maskz_shuffle_pd(U, A, B, M) __extension__ ({ \
7308*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
7309*67e74705SXin Li (__v4df)_mm256_shuffle_pd((A), (B), (M)), \
7310*67e74705SXin Li (__v4df)_mm256_setzero_pd()); })
7311*67e74705SXin Li
7312*67e74705SXin Li #define _mm_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
7313*67e74705SXin Li (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7314*67e74705SXin Li (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
7315*67e74705SXin Li (__v4sf)(__m128)(W)); })
7316*67e74705SXin Li
7317*67e74705SXin Li #define _mm_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
7318*67e74705SXin Li (__m128)__builtin_ia32_selectps_128((__mmask8)(U), \
7319*67e74705SXin Li (__v4sf)_mm_shuffle_ps((A), (B), (M)), \
7320*67e74705SXin Li (__v4sf)_mm_setzero_ps()); })
7321*67e74705SXin Li
7322*67e74705SXin Li #define _mm256_mask_shuffle_ps(W, U, A, B, M) __extension__ ({ \
7323*67e74705SXin Li (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7324*67e74705SXin Li (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
7325*67e74705SXin Li (__v8sf)(__m256)(W)); })
7326*67e74705SXin Li
7327*67e74705SXin Li #define _mm256_maskz_shuffle_ps(U, A, B, M) __extension__ ({ \
7328*67e74705SXin Li (__m256)__builtin_ia32_selectps_256((__mmask8)(U), \
7329*67e74705SXin Li (__v8sf)_mm256_shuffle_ps((A), (B), (M)), \
7330*67e74705SXin Li (__v8sf)_mm256_setzero_ps()); })
7331*67e74705SXin Li
7332*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_rsqrt14_pd(__m128d __A)7333*67e74705SXin Li _mm_rsqrt14_pd (__m128d __A)
7334*67e74705SXin Li {
7335*67e74705SXin Li return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7336*67e74705SXin Li (__v2df)
7337*67e74705SXin Li _mm_setzero_pd (),
7338*67e74705SXin Li (__mmask8) -1);
7339*67e74705SXin Li }
7340*67e74705SXin Li
7341*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_rsqrt14_pd(__m128d __W,__mmask8 __U,__m128d __A)7342*67e74705SXin Li _mm_mask_rsqrt14_pd (__m128d __W, __mmask8 __U, __m128d __A)
7343*67e74705SXin Li {
7344*67e74705SXin Li return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7345*67e74705SXin Li (__v2df) __W,
7346*67e74705SXin Li (__mmask8) __U);
7347*67e74705SXin Li }
7348*67e74705SXin Li
7349*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_rsqrt14_pd(__mmask8 __U,__m128d __A)7350*67e74705SXin Li _mm_maskz_rsqrt14_pd (__mmask8 __U, __m128d __A)
7351*67e74705SXin Li {
7352*67e74705SXin Li return (__m128d) __builtin_ia32_rsqrt14pd128_mask ((__v2df) __A,
7353*67e74705SXin Li (__v2df)
7354*67e74705SXin Li _mm_setzero_pd (),
7355*67e74705SXin Li (__mmask8) __U);
7356*67e74705SXin Li }
7357*67e74705SXin Li
7358*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_rsqrt14_pd(__m256d __A)7359*67e74705SXin Li _mm256_rsqrt14_pd (__m256d __A)
7360*67e74705SXin Li {
7361*67e74705SXin Li return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7362*67e74705SXin Li (__v4df)
7363*67e74705SXin Li _mm256_setzero_pd (),
7364*67e74705SXin Li (__mmask8) -1);
7365*67e74705SXin Li }
7366*67e74705SXin Li
7367*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_rsqrt14_pd(__m256d __W,__mmask8 __U,__m256d __A)7368*67e74705SXin Li _mm256_mask_rsqrt14_pd (__m256d __W, __mmask8 __U, __m256d __A)
7369*67e74705SXin Li {
7370*67e74705SXin Li return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7371*67e74705SXin Li (__v4df) __W,
7372*67e74705SXin Li (__mmask8) __U);
7373*67e74705SXin Li }
7374*67e74705SXin Li
7375*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_rsqrt14_pd(__mmask8 __U,__m256d __A)7376*67e74705SXin Li _mm256_maskz_rsqrt14_pd (__mmask8 __U, __m256d __A)
7377*67e74705SXin Li {
7378*67e74705SXin Li return (__m256d) __builtin_ia32_rsqrt14pd256_mask ((__v4df) __A,
7379*67e74705SXin Li (__v4df)
7380*67e74705SXin Li _mm256_setzero_pd (),
7381*67e74705SXin Li (__mmask8) __U);
7382*67e74705SXin Li }
7383*67e74705SXin Li
7384*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_rsqrt14_ps(__m128 __A)7385*67e74705SXin Li _mm_rsqrt14_ps (__m128 __A)
7386*67e74705SXin Li {
7387*67e74705SXin Li return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7388*67e74705SXin Li (__v4sf)
7389*67e74705SXin Li _mm_setzero_ps (),
7390*67e74705SXin Li (__mmask8) -1);
7391*67e74705SXin Li }
7392*67e74705SXin Li
7393*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_rsqrt14_ps(__m128 __W,__mmask8 __U,__m128 __A)7394*67e74705SXin Li _mm_mask_rsqrt14_ps (__m128 __W, __mmask8 __U, __m128 __A)
7395*67e74705SXin Li {
7396*67e74705SXin Li return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7397*67e74705SXin Li (__v4sf) __W,
7398*67e74705SXin Li (__mmask8) __U);
7399*67e74705SXin Li }
7400*67e74705SXin Li
7401*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_rsqrt14_ps(__mmask8 __U,__m128 __A)7402*67e74705SXin Li _mm_maskz_rsqrt14_ps (__mmask8 __U, __m128 __A)
7403*67e74705SXin Li {
7404*67e74705SXin Li return (__m128) __builtin_ia32_rsqrt14ps128_mask ((__v4sf) __A,
7405*67e74705SXin Li (__v4sf)
7406*67e74705SXin Li _mm_setzero_ps (),
7407*67e74705SXin Li (__mmask8) __U);
7408*67e74705SXin Li }
7409*67e74705SXin Li
7410*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_rsqrt14_ps(__m256 __A)7411*67e74705SXin Li _mm256_rsqrt14_ps (__m256 __A)
7412*67e74705SXin Li {
7413*67e74705SXin Li return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7414*67e74705SXin Li (__v8sf)
7415*67e74705SXin Li _mm256_setzero_ps (),
7416*67e74705SXin Li (__mmask8) -1);
7417*67e74705SXin Li }
7418*67e74705SXin Li
7419*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_rsqrt14_ps(__m256 __W,__mmask8 __U,__m256 __A)7420*67e74705SXin Li _mm256_mask_rsqrt14_ps (__m256 __W, __mmask8 __U, __m256 __A)
7421*67e74705SXin Li {
7422*67e74705SXin Li return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7423*67e74705SXin Li (__v8sf) __W,
7424*67e74705SXin Li (__mmask8) __U);
7425*67e74705SXin Li }
7426*67e74705SXin Li
7427*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_rsqrt14_ps(__mmask8 __U,__m256 __A)7428*67e74705SXin Li _mm256_maskz_rsqrt14_ps (__mmask8 __U, __m256 __A)
7429*67e74705SXin Li {
7430*67e74705SXin Li return (__m256) __builtin_ia32_rsqrt14ps256_mask ((__v8sf) __A,
7431*67e74705SXin Li (__v8sf)
7432*67e74705SXin Li _mm256_setzero_ps (),
7433*67e74705SXin Li (__mmask8) __U);
7434*67e74705SXin Li }
7435*67e74705SXin Li
7436*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_broadcast_f32x4(__m128 __A)7437*67e74705SXin Li _mm256_broadcast_f32x4 (__m128 __A)
7438*67e74705SXin Li {
7439*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
7440*67e74705SXin Li (__v8sf)_mm256_undefined_pd (),
7441*67e74705SXin Li (__mmask8) -1);
7442*67e74705SXin Li }
7443*67e74705SXin Li
7444*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_f32x4(__m256 __O,__mmask8 __M,__m128 __A)7445*67e74705SXin Li _mm256_mask_broadcast_f32x4 (__m256 __O, __mmask8 __M, __m128 __A)
7446*67e74705SXin Li {
7447*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
7448*67e74705SXin Li (__v8sf) __O,
7449*67e74705SXin Li __M);
7450*67e74705SXin Li }
7451*67e74705SXin Li
7452*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_f32x4(__mmask8 __M,__m128 __A)7453*67e74705SXin Li _mm256_maskz_broadcast_f32x4 (__mmask8 __M, __m128 __A)
7454*67e74705SXin Li {
7455*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x4_256_mask ((__v4sf) __A,
7456*67e74705SXin Li (__v8sf) _mm256_setzero_ps (),
7457*67e74705SXin Li __M);
7458*67e74705SXin Li }
7459*67e74705SXin Li
7460*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcast_i32x4(__m128i __A)7461*67e74705SXin Li _mm256_broadcast_i32x4 (__m128i __A)
7462*67e74705SXin Li {
7463*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si) __A,
7464*67e74705SXin Li (__v8si)_mm256_undefined_si256 (),
7465*67e74705SXin Li (__mmask8) -1);
7466*67e74705SXin Li }
7467*67e74705SXin Li
7468*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_i32x4(__m256i __O,__mmask8 __M,__m128i __A)7469*67e74705SXin Li _mm256_mask_broadcast_i32x4 (__m256i __O, __mmask8 __M, __m128i __A)
7470*67e74705SXin Li {
7471*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si) __A,
7472*67e74705SXin Li (__v8si)
7473*67e74705SXin Li __O, __M);
7474*67e74705SXin Li }
7475*67e74705SXin Li
7476*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_i32x4(__mmask8 __M,__m128i __A)7477*67e74705SXin Li _mm256_maskz_broadcast_i32x4 (__mmask8 __M, __m128i __A)
7478*67e74705SXin Li {
7479*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x4_256_mask ((__v4si)
7480*67e74705SXin Li __A,
7481*67e74705SXin Li (__v8si) _mm256_setzero_si256 (),
7482*67e74705SXin Li __M);
7483*67e74705SXin Li }
7484*67e74705SXin Li
7485*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_broadcastsd_pd(__m256d __O,__mmask8 __M,__m128d __A)7486*67e74705SXin Li _mm256_mask_broadcastsd_pd (__m256d __O, __mmask8 __M, __m128d __A)
7487*67e74705SXin Li {
7488*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256(__M,
7489*67e74705SXin Li (__v4df) _mm256_broadcastsd_pd(__A),
7490*67e74705SXin Li (__v4df) __O);
7491*67e74705SXin Li }
7492*67e74705SXin Li
7493*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastsd_pd(__mmask8 __M,__m128d __A)7494*67e74705SXin Li _mm256_maskz_broadcastsd_pd (__mmask8 __M, __m128d __A)
7495*67e74705SXin Li {
7496*67e74705SXin Li return (__m256d)__builtin_ia32_selectpd_256(__M,
7497*67e74705SXin Li (__v4df) _mm256_broadcastsd_pd(__A),
7498*67e74705SXin Li (__v4df) _mm256_setzero_pd());
7499*67e74705SXin Li }
7500*67e74705SXin Li
7501*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_broadcastss_ps(__m128 __O,__mmask8 __M,__m128 __A)7502*67e74705SXin Li _mm_mask_broadcastss_ps (__m128 __O, __mmask8 __M, __m128 __A)
7503*67e74705SXin Li {
7504*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128(__M,
7505*67e74705SXin Li (__v4sf) _mm_broadcastss_ps(__A),
7506*67e74705SXin Li (__v4sf) __O);
7507*67e74705SXin Li }
7508*67e74705SXin Li
7509*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_broadcastss_ps(__mmask8 __M,__m128 __A)7510*67e74705SXin Li _mm_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
7511*67e74705SXin Li {
7512*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128(__M,
7513*67e74705SXin Li (__v4sf) _mm_broadcastss_ps(__A),
7514*67e74705SXin Li (__v4sf) _mm_setzero_ps());
7515*67e74705SXin Li }
7516*67e74705SXin Li
7517*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_broadcastss_ps(__m256 __O,__mmask8 __M,__m128 __A)7518*67e74705SXin Li _mm256_mask_broadcastss_ps (__m256 __O, __mmask8 __M, __m128 __A)
7519*67e74705SXin Li {
7520*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256(__M,
7521*67e74705SXin Li (__v8sf) _mm256_broadcastss_ps(__A),
7522*67e74705SXin Li (__v8sf) __O);
7523*67e74705SXin Li }
7524*67e74705SXin Li
7525*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastss_ps(__mmask8 __M,__m128 __A)7526*67e74705SXin Li _mm256_maskz_broadcastss_ps (__mmask8 __M, __m128 __A)
7527*67e74705SXin Li {
7528*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256(__M,
7529*67e74705SXin Li (__v8sf) _mm256_broadcastss_ps(__A),
7530*67e74705SXin Li (__v8sf) _mm256_setzero_ps());
7531*67e74705SXin Li }
7532*67e74705SXin Li
7533*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_broadcastd_epi32(__m128i __O,__mmask8 __M,__m128i __A)7534*67e74705SXin Li _mm_mask_broadcastd_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7535*67e74705SXin Li {
7536*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128(__M,
7537*67e74705SXin Li (__v4si) _mm_broadcastd_epi32(__A),
7538*67e74705SXin Li (__v4si) __O);
7539*67e74705SXin Li }
7540*67e74705SXin Li
7541*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_broadcastd_epi32(__mmask8 __M,__m128i __A)7542*67e74705SXin Li _mm_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
7543*67e74705SXin Li {
7544*67e74705SXin Li return (__m128i)__builtin_ia32_selectd_128(__M,
7545*67e74705SXin Li (__v4si) _mm_broadcastd_epi32(__A),
7546*67e74705SXin Li (__v4si) _mm_setzero_si128());
7547*67e74705SXin Li }
7548*67e74705SXin Li
7549*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcastd_epi32(__m256i __O,__mmask8 __M,__m128i __A)7550*67e74705SXin Li _mm256_mask_broadcastd_epi32 (__m256i __O, __mmask8 __M, __m128i __A)
7551*67e74705SXin Li {
7552*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256(__M,
7553*67e74705SXin Li (__v8si) _mm256_broadcastd_epi32(__A),
7554*67e74705SXin Li (__v8si) __O);
7555*67e74705SXin Li }
7556*67e74705SXin Li
7557*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastd_epi32(__mmask8 __M,__m128i __A)7558*67e74705SXin Li _mm256_maskz_broadcastd_epi32 (__mmask8 __M, __m128i __A)
7559*67e74705SXin Li {
7560*67e74705SXin Li return (__m256i)__builtin_ia32_selectd_256(__M,
7561*67e74705SXin Li (__v8si) _mm256_broadcastd_epi32(__A),
7562*67e74705SXin Li (__v8si) _mm256_setzero_si256());
7563*67e74705SXin Li }
7564*67e74705SXin Li
7565*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_broadcastq_epi64(__m128i __O,__mmask8 __M,__m128i __A)7566*67e74705SXin Li _mm_mask_broadcastq_epi64 (__m128i __O, __mmask8 __M, __m128i __A)
7567*67e74705SXin Li {
7568*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128(__M,
7569*67e74705SXin Li (__v2di) _mm_broadcastq_epi64(__A),
7570*67e74705SXin Li (__v2di) __O);
7571*67e74705SXin Li }
7572*67e74705SXin Li
7573*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)7574*67e74705SXin Li _mm_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
7575*67e74705SXin Li {
7576*67e74705SXin Li return (__m128i)__builtin_ia32_selectq_128(__M,
7577*67e74705SXin Li (__v2di) _mm_broadcastq_epi64(__A),
7578*67e74705SXin Li (__v2di) _mm_setzero_si128());
7579*67e74705SXin Li }
7580*67e74705SXin Li
7581*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcastq_epi64(__m256i __O,__mmask8 __M,__m128i __A)7582*67e74705SXin Li _mm256_mask_broadcastq_epi64 (__m256i __O, __mmask8 __M, __m128i __A)
7583*67e74705SXin Li {
7584*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256(__M,
7585*67e74705SXin Li (__v4di) _mm256_broadcastq_epi64(__A),
7586*67e74705SXin Li (__v4di) __O);
7587*67e74705SXin Li }
7588*67e74705SXin Li
7589*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcastq_epi64(__mmask8 __M,__m128i __A)7590*67e74705SXin Li _mm256_maskz_broadcastq_epi64 (__mmask8 __M, __m128i __A)
7591*67e74705SXin Li {
7592*67e74705SXin Li return (__m256i)__builtin_ia32_selectq_256(__M,
7593*67e74705SXin Li (__v4di) _mm256_broadcastq_epi64(__A),
7594*67e74705SXin Li (__v4di) _mm256_setzero_si256());
7595*67e74705SXin Li }
7596*67e74705SXin Li
7597*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi32_epi8(__m128i __A)7598*67e74705SXin Li _mm_cvtsepi32_epi8 (__m128i __A)
7599*67e74705SXin Li {
7600*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7601*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7602*67e74705SXin Li (__mmask8) -1);
7603*67e74705SXin Li }
7604*67e74705SXin Li
7605*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi32_epi8(__m128i __O,__mmask8 __M,__m128i __A)7606*67e74705SXin Li _mm_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7607*67e74705SXin Li {
7608*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7609*67e74705SXin Li (__v16qi) __O, __M);
7610*67e74705SXin Li }
7611*67e74705SXin Li
7612*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi32_epi8(__mmask8 __M,__m128i __A)7613*67e74705SXin Li _mm_maskz_cvtsepi32_epi8 (__mmask8 __M, __m128i __A)
7614*67e74705SXin Li {
7615*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb128_mask ((__v4si) __A,
7616*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7617*67e74705SXin Li __M);
7618*67e74705SXin Li }
7619*67e74705SXin Li
7620*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi32_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)7621*67e74705SXin Li _mm_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7622*67e74705SXin Li {
7623*67e74705SXin Li __builtin_ia32_pmovsdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7624*67e74705SXin Li }
7625*67e74705SXin Li
7626*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi32_epi8(__m256i __A)7627*67e74705SXin Li _mm256_cvtsepi32_epi8 (__m256i __A)
7628*67e74705SXin Li {
7629*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7630*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7631*67e74705SXin Li (__mmask8) -1);
7632*67e74705SXin Li }
7633*67e74705SXin Li
7634*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi32_epi8(__m128i __O,__mmask8 __M,__m256i __A)7635*67e74705SXin Li _mm256_mask_cvtsepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7636*67e74705SXin Li {
7637*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7638*67e74705SXin Li (__v16qi) __O, __M);
7639*67e74705SXin Li }
7640*67e74705SXin Li
7641*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi32_epi8(__mmask8 __M,__m256i __A)7642*67e74705SXin Li _mm256_maskz_cvtsepi32_epi8 (__mmask8 __M, __m256i __A)
7643*67e74705SXin Li {
7644*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdb256_mask ((__v8si) __A,
7645*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7646*67e74705SXin Li __M);
7647*67e74705SXin Li }
7648*67e74705SXin Li
7649*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi32_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)7650*67e74705SXin Li _mm256_mask_cvtsepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7651*67e74705SXin Li {
7652*67e74705SXin Li __builtin_ia32_pmovsdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
7653*67e74705SXin Li }
7654*67e74705SXin Li
7655*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi32_epi16(__m128i __A)7656*67e74705SXin Li _mm_cvtsepi32_epi16 (__m128i __A)
7657*67e74705SXin Li {
7658*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7659*67e74705SXin Li (__v8hi)_mm_setzero_si128 (),
7660*67e74705SXin Li (__mmask8) -1);
7661*67e74705SXin Li }
7662*67e74705SXin Li
7663*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi32_epi16(__m128i __O,__mmask8 __M,__m128i __A)7664*67e74705SXin Li _mm_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7665*67e74705SXin Li {
7666*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7667*67e74705SXin Li (__v8hi)__O,
7668*67e74705SXin Li __M);
7669*67e74705SXin Li }
7670*67e74705SXin Li
7671*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi32_epi16(__mmask8 __M,__m128i __A)7672*67e74705SXin Li _mm_maskz_cvtsepi32_epi16 (__mmask8 __M, __m128i __A)
7673*67e74705SXin Li {
7674*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw128_mask ((__v4si) __A,
7675*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7676*67e74705SXin Li __M);
7677*67e74705SXin Li }
7678*67e74705SXin Li
7679*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi32_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)7680*67e74705SXin Li _mm_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7681*67e74705SXin Li {
7682*67e74705SXin Li __builtin_ia32_pmovsdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7683*67e74705SXin Li }
7684*67e74705SXin Li
7685*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi32_epi16(__m256i __A)7686*67e74705SXin Li _mm256_cvtsepi32_epi16 (__m256i __A)
7687*67e74705SXin Li {
7688*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7689*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
7690*67e74705SXin Li (__mmask8) -1);
7691*67e74705SXin Li }
7692*67e74705SXin Li
7693*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi32_epi16(__m128i __O,__mmask8 __M,__m256i __A)7694*67e74705SXin Li _mm256_mask_cvtsepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7695*67e74705SXin Li {
7696*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7697*67e74705SXin Li (__v8hi) __O, __M);
7698*67e74705SXin Li }
7699*67e74705SXin Li
7700*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi32_epi16(__mmask8 __M,__m256i __A)7701*67e74705SXin Li _mm256_maskz_cvtsepi32_epi16 (__mmask8 __M, __m256i __A)
7702*67e74705SXin Li {
7703*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsdw256_mask ((__v8si) __A,
7704*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7705*67e74705SXin Li __M);
7706*67e74705SXin Li }
7707*67e74705SXin Li
7708*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi32_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)7709*67e74705SXin Li _mm256_mask_cvtsepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7710*67e74705SXin Li {
7711*67e74705SXin Li __builtin_ia32_pmovsdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
7712*67e74705SXin Li }
7713*67e74705SXin Li
7714*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi64_epi8(__m128i __A)7715*67e74705SXin Li _mm_cvtsepi64_epi8 (__m128i __A)
7716*67e74705SXin Li {
7717*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7718*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7719*67e74705SXin Li (__mmask8) -1);
7720*67e74705SXin Li }
7721*67e74705SXin Li
7722*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m128i __A)7723*67e74705SXin Li _mm_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7724*67e74705SXin Li {
7725*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7726*67e74705SXin Li (__v16qi) __O, __M);
7727*67e74705SXin Li }
7728*67e74705SXin Li
7729*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi64_epi8(__mmask8 __M,__m128i __A)7730*67e74705SXin Li _mm_maskz_cvtsepi64_epi8 (__mmask8 __M, __m128i __A)
7731*67e74705SXin Li {
7732*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb128_mask ((__v2di) __A,
7733*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7734*67e74705SXin Li __M);
7735*67e74705SXin Li }
7736*67e74705SXin Li
7737*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)7738*67e74705SXin Li _mm_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7739*67e74705SXin Li {
7740*67e74705SXin Li __builtin_ia32_pmovsqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
7741*67e74705SXin Li }
7742*67e74705SXin Li
7743*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi64_epi8(__m256i __A)7744*67e74705SXin Li _mm256_cvtsepi64_epi8 (__m256i __A)
7745*67e74705SXin Li {
7746*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7747*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7748*67e74705SXin Li (__mmask8) -1);
7749*67e74705SXin Li }
7750*67e74705SXin Li
7751*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_epi8(__m128i __O,__mmask8 __M,__m256i __A)7752*67e74705SXin Li _mm256_mask_cvtsepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7753*67e74705SXin Li {
7754*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7755*67e74705SXin Li (__v16qi) __O, __M);
7756*67e74705SXin Li }
7757*67e74705SXin Li
7758*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi64_epi8(__mmask8 __M,__m256i __A)7759*67e74705SXin Li _mm256_maskz_cvtsepi64_epi8 (__mmask8 __M, __m256i __A)
7760*67e74705SXin Li {
7761*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqb256_mask ((__v4di) __A,
7762*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7763*67e74705SXin Li __M);
7764*67e74705SXin Li }
7765*67e74705SXin Li
7766*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)7767*67e74705SXin Li _mm256_mask_cvtsepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7768*67e74705SXin Li {
7769*67e74705SXin Li __builtin_ia32_pmovsqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
7770*67e74705SXin Li }
7771*67e74705SXin Li
7772*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi64_epi32(__m128i __A)7773*67e74705SXin Li _mm_cvtsepi64_epi32 (__m128i __A)
7774*67e74705SXin Li {
7775*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7776*67e74705SXin Li (__v4si)_mm_undefined_si128(),
7777*67e74705SXin Li (__mmask8) -1);
7778*67e74705SXin Li }
7779*67e74705SXin Li
7780*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_epi32(__m128i __O,__mmask8 __M,__m128i __A)7781*67e74705SXin Li _mm_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
7782*67e74705SXin Li {
7783*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7784*67e74705SXin Li (__v4si) __O, __M);
7785*67e74705SXin Li }
7786*67e74705SXin Li
7787*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi64_epi32(__mmask8 __M,__m128i __A)7788*67e74705SXin Li _mm_maskz_cvtsepi64_epi32 (__mmask8 __M, __m128i __A)
7789*67e74705SXin Li {
7790*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd128_mask ((__v2di) __A,
7791*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
7792*67e74705SXin Li __M);
7793*67e74705SXin Li }
7794*67e74705SXin Li
7795*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m128i __A)7796*67e74705SXin Li _mm_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
7797*67e74705SXin Li {
7798*67e74705SXin Li __builtin_ia32_pmovsqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
7799*67e74705SXin Li }
7800*67e74705SXin Li
7801*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi64_epi32(__m256i __A)7802*67e74705SXin Li _mm256_cvtsepi64_epi32 (__m256i __A)
7803*67e74705SXin Li {
7804*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7805*67e74705SXin Li (__v4si)_mm_undefined_si128(),
7806*67e74705SXin Li (__mmask8) -1);
7807*67e74705SXin Li }
7808*67e74705SXin Li
7809*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_epi32(__m128i __O,__mmask8 __M,__m256i __A)7810*67e74705SXin Li _mm256_mask_cvtsepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
7811*67e74705SXin Li {
7812*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7813*67e74705SXin Li (__v4si)__O,
7814*67e74705SXin Li __M);
7815*67e74705SXin Li }
7816*67e74705SXin Li
7817*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi64_epi32(__mmask8 __M,__m256i __A)7818*67e74705SXin Li _mm256_maskz_cvtsepi64_epi32 (__mmask8 __M, __m256i __A)
7819*67e74705SXin Li {
7820*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqd256_mask ((__v4di) __A,
7821*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
7822*67e74705SXin Li __M);
7823*67e74705SXin Li }
7824*67e74705SXin Li
7825*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_storeu_epi32(void * __P,__mmask8 __M,__m256i __A)7826*67e74705SXin Li _mm256_mask_cvtsepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
7827*67e74705SXin Li {
7828*67e74705SXin Li __builtin_ia32_pmovsqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
7829*67e74705SXin Li }
7830*67e74705SXin Li
7831*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtsepi64_epi16(__m128i __A)7832*67e74705SXin Li _mm_cvtsepi64_epi16 (__m128i __A)
7833*67e74705SXin Li {
7834*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7835*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
7836*67e74705SXin Li (__mmask8) -1);
7837*67e74705SXin Li }
7838*67e74705SXin Li
7839*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m128i __A)7840*67e74705SXin Li _mm_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7841*67e74705SXin Li {
7842*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7843*67e74705SXin Li (__v8hi) __O, __M);
7844*67e74705SXin Li }
7845*67e74705SXin Li
7846*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtsepi64_epi16(__mmask8 __M,__m128i __A)7847*67e74705SXin Li _mm_maskz_cvtsepi64_epi16 (__mmask8 __M, __m128i __A)
7848*67e74705SXin Li {
7849*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw128_mask ((__v2di) __A,
7850*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7851*67e74705SXin Li __M);
7852*67e74705SXin Li }
7853*67e74705SXin Li
7854*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)7855*67e74705SXin Li _mm_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7856*67e74705SXin Li {
7857*67e74705SXin Li __builtin_ia32_pmovsqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
7858*67e74705SXin Li }
7859*67e74705SXin Li
7860*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtsepi64_epi16(__m256i __A)7861*67e74705SXin Li _mm256_cvtsepi64_epi16 (__m256i __A)
7862*67e74705SXin Li {
7863*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7864*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
7865*67e74705SXin Li (__mmask8) -1);
7866*67e74705SXin Li }
7867*67e74705SXin Li
7868*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_epi16(__m128i __O,__mmask8 __M,__m256i __A)7869*67e74705SXin Li _mm256_mask_cvtsepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7870*67e74705SXin Li {
7871*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7872*67e74705SXin Li (__v8hi) __O, __M);
7873*67e74705SXin Li }
7874*67e74705SXin Li
7875*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtsepi64_epi16(__mmask8 __M,__m256i __A)7876*67e74705SXin Li _mm256_maskz_cvtsepi64_epi16 (__mmask8 __M, __m256i __A)
7877*67e74705SXin Li {
7878*67e74705SXin Li return (__m128i) __builtin_ia32_pmovsqw256_mask ((__v4di) __A,
7879*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7880*67e74705SXin Li __M);
7881*67e74705SXin Li }
7882*67e74705SXin Li
7883*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtsepi64_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)7884*67e74705SXin Li _mm256_mask_cvtsepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
7885*67e74705SXin Li {
7886*67e74705SXin Li __builtin_ia32_pmovsqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
7887*67e74705SXin Li }
7888*67e74705SXin Li
7889*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi32_epi8(__m128i __A)7890*67e74705SXin Li _mm_cvtusepi32_epi8 (__m128i __A)
7891*67e74705SXin Li {
7892*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7893*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7894*67e74705SXin Li (__mmask8) -1);
7895*67e74705SXin Li }
7896*67e74705SXin Li
7897*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi32_epi8(__m128i __O,__mmask8 __M,__m128i __A)7898*67e74705SXin Li _mm_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
7899*67e74705SXin Li {
7900*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7901*67e74705SXin Li (__v16qi) __O,
7902*67e74705SXin Li __M);
7903*67e74705SXin Li }
7904*67e74705SXin Li
7905*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi32_epi8(__mmask8 __M,__m128i __A)7906*67e74705SXin Li _mm_maskz_cvtusepi32_epi8 (__mmask8 __M, __m128i __A)
7907*67e74705SXin Li {
7908*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb128_mask ((__v4si) __A,
7909*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7910*67e74705SXin Li __M);
7911*67e74705SXin Li }
7912*67e74705SXin Li
7913*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi32_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)7914*67e74705SXin Li _mm_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
7915*67e74705SXin Li {
7916*67e74705SXin Li __builtin_ia32_pmovusdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
7917*67e74705SXin Li }
7918*67e74705SXin Li
7919*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi32_epi8(__m256i __A)7920*67e74705SXin Li _mm256_cvtusepi32_epi8 (__m256i __A)
7921*67e74705SXin Li {
7922*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7923*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
7924*67e74705SXin Li (__mmask8) -1);
7925*67e74705SXin Li }
7926*67e74705SXin Li
7927*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi32_epi8(__m128i __O,__mmask8 __M,__m256i __A)7928*67e74705SXin Li _mm256_mask_cvtusepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
7929*67e74705SXin Li {
7930*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7931*67e74705SXin Li (__v16qi) __O,
7932*67e74705SXin Li __M);
7933*67e74705SXin Li }
7934*67e74705SXin Li
7935*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi32_epi8(__mmask8 __M,__m256i __A)7936*67e74705SXin Li _mm256_maskz_cvtusepi32_epi8 (__mmask8 __M, __m256i __A)
7937*67e74705SXin Li {
7938*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdb256_mask ((__v8si) __A,
7939*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
7940*67e74705SXin Li __M);
7941*67e74705SXin Li }
7942*67e74705SXin Li
7943*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi32_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)7944*67e74705SXin Li _mm256_mask_cvtusepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
7945*67e74705SXin Li {
7946*67e74705SXin Li __builtin_ia32_pmovusdb256mem_mask ((__v16qi*) __P, (__v8si) __A, __M);
7947*67e74705SXin Li }
7948*67e74705SXin Li
7949*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi32_epi16(__m128i __A)7950*67e74705SXin Li _mm_cvtusepi32_epi16 (__m128i __A)
7951*67e74705SXin Li {
7952*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7953*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
7954*67e74705SXin Li (__mmask8) -1);
7955*67e74705SXin Li }
7956*67e74705SXin Li
7957*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi32_epi16(__m128i __O,__mmask8 __M,__m128i __A)7958*67e74705SXin Li _mm_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
7959*67e74705SXin Li {
7960*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7961*67e74705SXin Li (__v8hi) __O, __M);
7962*67e74705SXin Li }
7963*67e74705SXin Li
7964*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi32_epi16(__mmask8 __M,__m128i __A)7965*67e74705SXin Li _mm_maskz_cvtusepi32_epi16 (__mmask8 __M, __m128i __A)
7966*67e74705SXin Li {
7967*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw128_mask ((__v4si) __A,
7968*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7969*67e74705SXin Li __M);
7970*67e74705SXin Li }
7971*67e74705SXin Li
7972*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi32_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)7973*67e74705SXin Li _mm_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
7974*67e74705SXin Li {
7975*67e74705SXin Li __builtin_ia32_pmovusdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
7976*67e74705SXin Li }
7977*67e74705SXin Li
7978*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi32_epi16(__m256i __A)7979*67e74705SXin Li _mm256_cvtusepi32_epi16 (__m256i __A)
7980*67e74705SXin Li {
7981*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7982*67e74705SXin Li (__v8hi) _mm_undefined_si128(),
7983*67e74705SXin Li (__mmask8) -1);
7984*67e74705SXin Li }
7985*67e74705SXin Li
7986*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi32_epi16(__m128i __O,__mmask8 __M,__m256i __A)7987*67e74705SXin Li _mm256_mask_cvtusepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
7988*67e74705SXin Li {
7989*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7990*67e74705SXin Li (__v8hi) __O, __M);
7991*67e74705SXin Li }
7992*67e74705SXin Li
7993*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi32_epi16(__mmask8 __M,__m256i __A)7994*67e74705SXin Li _mm256_maskz_cvtusepi32_epi16 (__mmask8 __M, __m256i __A)
7995*67e74705SXin Li {
7996*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusdw256_mask ((__v8si) __A,
7997*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
7998*67e74705SXin Li __M);
7999*67e74705SXin Li }
8000*67e74705SXin Li
8001*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi32_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)8002*67e74705SXin Li _mm256_mask_cvtusepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8003*67e74705SXin Li {
8004*67e74705SXin Li __builtin_ia32_pmovusdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
8005*67e74705SXin Li }
8006*67e74705SXin Li
8007*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi64_epi8(__m128i __A)8008*67e74705SXin Li _mm_cvtusepi64_epi8 (__m128i __A)
8009*67e74705SXin Li {
8010*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
8011*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
8012*67e74705SXin Li (__mmask8) -1);
8013*67e74705SXin Li }
8014*67e74705SXin Li
8015*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m128i __A)8016*67e74705SXin Li _mm_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
8017*67e74705SXin Li {
8018*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
8019*67e74705SXin Li (__v16qi) __O,
8020*67e74705SXin Li __M);
8021*67e74705SXin Li }
8022*67e74705SXin Li
8023*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi64_epi8(__mmask8 __M,__m128i __A)8024*67e74705SXin Li _mm_maskz_cvtusepi64_epi8 (__mmask8 __M, __m128i __A)
8025*67e74705SXin Li {
8026*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb128_mask ((__v2di) __A,
8027*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
8028*67e74705SXin Li __M);
8029*67e74705SXin Li }
8030*67e74705SXin Li
8031*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)8032*67e74705SXin Li _mm_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
8033*67e74705SXin Li {
8034*67e74705SXin Li __builtin_ia32_pmovusqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
8035*67e74705SXin Li }
8036*67e74705SXin Li
8037*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi64_epi8(__m256i __A)8038*67e74705SXin Li _mm256_cvtusepi64_epi8 (__m256i __A)
8039*67e74705SXin Li {
8040*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
8041*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
8042*67e74705SXin Li (__mmask8) -1);
8043*67e74705SXin Li }
8044*67e74705SXin Li
8045*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_epi8(__m128i __O,__mmask8 __M,__m256i __A)8046*67e74705SXin Li _mm256_mask_cvtusepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
8047*67e74705SXin Li {
8048*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
8049*67e74705SXin Li (__v16qi) __O,
8050*67e74705SXin Li __M);
8051*67e74705SXin Li }
8052*67e74705SXin Li
8053*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi64_epi8(__mmask8 __M,__m256i __A)8054*67e74705SXin Li _mm256_maskz_cvtusepi64_epi8 (__mmask8 __M, __m256i __A)
8055*67e74705SXin Li {
8056*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqb256_mask ((__v4di) __A,
8057*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
8058*67e74705SXin Li __M);
8059*67e74705SXin Li }
8060*67e74705SXin Li
8061*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)8062*67e74705SXin Li _mm256_mask_cvtusepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
8063*67e74705SXin Li {
8064*67e74705SXin Li __builtin_ia32_pmovusqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
8065*67e74705SXin Li }
8066*67e74705SXin Li
8067*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi64_epi32(__m128i __A)8068*67e74705SXin Li _mm_cvtusepi64_epi32 (__m128i __A)
8069*67e74705SXin Li {
8070*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
8071*67e74705SXin Li (__v4si)_mm_undefined_si128(),
8072*67e74705SXin Li (__mmask8) -1);
8073*67e74705SXin Li }
8074*67e74705SXin Li
8075*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_epi32(__m128i __O,__mmask8 __M,__m128i __A)8076*67e74705SXin Li _mm_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
8077*67e74705SXin Li {
8078*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
8079*67e74705SXin Li (__v4si) __O, __M);
8080*67e74705SXin Li }
8081*67e74705SXin Li
8082*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi64_epi32(__mmask8 __M,__m128i __A)8083*67e74705SXin Li _mm_maskz_cvtusepi64_epi32 (__mmask8 __M, __m128i __A)
8084*67e74705SXin Li {
8085*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd128_mask ((__v2di) __A,
8086*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
8087*67e74705SXin Li __M);
8088*67e74705SXin Li }
8089*67e74705SXin Li
8090*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m128i __A)8091*67e74705SXin Li _mm_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
8092*67e74705SXin Li {
8093*67e74705SXin Li __builtin_ia32_pmovusqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
8094*67e74705SXin Li }
8095*67e74705SXin Li
8096*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi64_epi32(__m256i __A)8097*67e74705SXin Li _mm256_cvtusepi64_epi32 (__m256i __A)
8098*67e74705SXin Li {
8099*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
8100*67e74705SXin Li (__v4si)_mm_undefined_si128(),
8101*67e74705SXin Li (__mmask8) -1);
8102*67e74705SXin Li }
8103*67e74705SXin Li
8104*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_epi32(__m128i __O,__mmask8 __M,__m256i __A)8105*67e74705SXin Li _mm256_mask_cvtusepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
8106*67e74705SXin Li {
8107*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
8108*67e74705SXin Li (__v4si) __O, __M);
8109*67e74705SXin Li }
8110*67e74705SXin Li
8111*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi64_epi32(__mmask8 __M,__m256i __A)8112*67e74705SXin Li _mm256_maskz_cvtusepi64_epi32 (__mmask8 __M, __m256i __A)
8113*67e74705SXin Li {
8114*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqd256_mask ((__v4di) __A,
8115*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
8116*67e74705SXin Li __M);
8117*67e74705SXin Li }
8118*67e74705SXin Li
8119*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_storeu_epi32(void * __P,__mmask8 __M,__m256i __A)8120*67e74705SXin Li _mm256_mask_cvtusepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
8121*67e74705SXin Li {
8122*67e74705SXin Li __builtin_ia32_pmovusqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
8123*67e74705SXin Li }
8124*67e74705SXin Li
8125*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtusepi64_epi16(__m128i __A)8126*67e74705SXin Li _mm_cvtusepi64_epi16 (__m128i __A)
8127*67e74705SXin Li {
8128*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
8129*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
8130*67e74705SXin Li (__mmask8) -1);
8131*67e74705SXin Li }
8132*67e74705SXin Li
8133*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m128i __A)8134*67e74705SXin Li _mm_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
8135*67e74705SXin Li {
8136*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
8137*67e74705SXin Li (__v8hi) __O, __M);
8138*67e74705SXin Li }
8139*67e74705SXin Li
8140*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtusepi64_epi16(__mmask8 __M,__m128i __A)8141*67e74705SXin Li _mm_maskz_cvtusepi64_epi16 (__mmask8 __M, __m128i __A)
8142*67e74705SXin Li {
8143*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw128_mask ((__v2di) __A,
8144*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8145*67e74705SXin Li __M);
8146*67e74705SXin Li }
8147*67e74705SXin Li
8148*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)8149*67e74705SXin Li _mm_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
8150*67e74705SXin Li {
8151*67e74705SXin Li __builtin_ia32_pmovusqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
8152*67e74705SXin Li }
8153*67e74705SXin Li
8154*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtusepi64_epi16(__m256i __A)8155*67e74705SXin Li _mm256_cvtusepi64_epi16 (__m256i __A)
8156*67e74705SXin Li {
8157*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
8158*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
8159*67e74705SXin Li (__mmask8) -1);
8160*67e74705SXin Li }
8161*67e74705SXin Li
8162*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_epi16(__m128i __O,__mmask8 __M,__m256i __A)8163*67e74705SXin Li _mm256_mask_cvtusepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
8164*67e74705SXin Li {
8165*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
8166*67e74705SXin Li (__v8hi) __O, __M);
8167*67e74705SXin Li }
8168*67e74705SXin Li
8169*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtusepi64_epi16(__mmask8 __M,__m256i __A)8170*67e74705SXin Li _mm256_maskz_cvtusepi64_epi16 (__mmask8 __M, __m256i __A)
8171*67e74705SXin Li {
8172*67e74705SXin Li return (__m128i) __builtin_ia32_pmovusqw256_mask ((__v4di) __A,
8173*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8174*67e74705SXin Li __M);
8175*67e74705SXin Li }
8176*67e74705SXin Li
8177*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtusepi64_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)8178*67e74705SXin Li _mm256_mask_cvtusepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8179*67e74705SXin Li {
8180*67e74705SXin Li return __builtin_ia32_pmovusqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
8181*67e74705SXin Li }
8182*67e74705SXin Li
8183*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi32_epi8(__m128i __A)8184*67e74705SXin Li _mm_cvtepi32_epi8 (__m128i __A)
8185*67e74705SXin Li {
8186*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
8187*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
8188*67e74705SXin Li (__mmask8) -1);
8189*67e74705SXin Li }
8190*67e74705SXin Li
8191*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_epi8(__m128i __O,__mmask8 __M,__m128i __A)8192*67e74705SXin Li _mm_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
8193*67e74705SXin Li {
8194*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
8195*67e74705SXin Li (__v16qi) __O, __M);
8196*67e74705SXin Li }
8197*67e74705SXin Li
8198*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi32_epi8(__mmask8 __M,__m128i __A)8199*67e74705SXin Li _mm_maskz_cvtepi32_epi8 (__mmask8 __M, __m128i __A)
8200*67e74705SXin Li {
8201*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb128_mask ((__v4si) __A,
8202*67e74705SXin Li (__v16qi)
8203*67e74705SXin Li _mm_setzero_si128 (),
8204*67e74705SXin Li __M);
8205*67e74705SXin Li }
8206*67e74705SXin Li
8207*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)8208*67e74705SXin Li _mm_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
8209*67e74705SXin Li {
8210*67e74705SXin Li __builtin_ia32_pmovdb128mem_mask ((__v16qi *) __P, (__v4si) __A, __M);
8211*67e74705SXin Li }
8212*67e74705SXin Li
8213*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi32_epi8(__m256i __A)8214*67e74705SXin Li _mm256_cvtepi32_epi8 (__m256i __A)
8215*67e74705SXin Li {
8216*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
8217*67e74705SXin Li (__v16qi)_mm_undefined_si128(),
8218*67e74705SXin Li (__mmask8) -1);
8219*67e74705SXin Li }
8220*67e74705SXin Li
8221*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_epi8(__m128i __O,__mmask8 __M,__m256i __A)8222*67e74705SXin Li _mm256_mask_cvtepi32_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
8223*67e74705SXin Li {
8224*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
8225*67e74705SXin Li (__v16qi) __O, __M);
8226*67e74705SXin Li }
8227*67e74705SXin Li
8228*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi32_epi8(__mmask8 __M,__m256i __A)8229*67e74705SXin Li _mm256_maskz_cvtepi32_epi8 (__mmask8 __M, __m256i __A)
8230*67e74705SXin Li {
8231*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdb256_mask ((__v8si) __A,
8232*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
8233*67e74705SXin Li __M);
8234*67e74705SXin Li }
8235*67e74705SXin Li
8236*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)8237*67e74705SXin Li _mm256_mask_cvtepi32_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
8238*67e74705SXin Li {
8239*67e74705SXin Li __builtin_ia32_pmovdb256mem_mask ((__v16qi *) __P, (__v8si) __A, __M);
8240*67e74705SXin Li }
8241*67e74705SXin Li
8242*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi32_epi16(__m128i __A)8243*67e74705SXin Li _mm_cvtepi32_epi16 (__m128i __A)
8244*67e74705SXin Li {
8245*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8246*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8247*67e74705SXin Li (__mmask8) -1);
8248*67e74705SXin Li }
8249*67e74705SXin Li
8250*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_epi16(__m128i __O,__mmask8 __M,__m128i __A)8251*67e74705SXin Li _mm_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
8252*67e74705SXin Li {
8253*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8254*67e74705SXin Li (__v8hi) __O, __M);
8255*67e74705SXin Li }
8256*67e74705SXin Li
8257*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi32_epi16(__mmask8 __M,__m128i __A)8258*67e74705SXin Li _mm_maskz_cvtepi32_epi16 (__mmask8 __M, __m128i __A)
8259*67e74705SXin Li {
8260*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw128_mask ((__v4si) __A,
8261*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8262*67e74705SXin Li __M);
8263*67e74705SXin Li }
8264*67e74705SXin Li
8265*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi32_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)8266*67e74705SXin Li _mm_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
8267*67e74705SXin Li {
8268*67e74705SXin Li __builtin_ia32_pmovdw128mem_mask ((__v8hi *) __P, (__v4si) __A, __M);
8269*67e74705SXin Li }
8270*67e74705SXin Li
8271*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi32_epi16(__m256i __A)8272*67e74705SXin Li _mm256_cvtepi32_epi16 (__m256i __A)
8273*67e74705SXin Li {
8274*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8275*67e74705SXin Li (__v8hi)_mm_setzero_si128 (),
8276*67e74705SXin Li (__mmask8) -1);
8277*67e74705SXin Li }
8278*67e74705SXin Li
8279*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_epi16(__m128i __O,__mmask8 __M,__m256i __A)8280*67e74705SXin Li _mm256_mask_cvtepi32_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
8281*67e74705SXin Li {
8282*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8283*67e74705SXin Li (__v8hi) __O, __M);
8284*67e74705SXin Li }
8285*67e74705SXin Li
8286*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi32_epi16(__mmask8 __M,__m256i __A)8287*67e74705SXin Li _mm256_maskz_cvtepi32_epi16 (__mmask8 __M, __m256i __A)
8288*67e74705SXin Li {
8289*67e74705SXin Li return (__m128i) __builtin_ia32_pmovdw256_mask ((__v8si) __A,
8290*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8291*67e74705SXin Li __M);
8292*67e74705SXin Li }
8293*67e74705SXin Li
8294*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi32_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)8295*67e74705SXin Li _mm256_mask_cvtepi32_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8296*67e74705SXin Li {
8297*67e74705SXin Li __builtin_ia32_pmovdw256mem_mask ((__v8hi *) __P, (__v8si) __A, __M);
8298*67e74705SXin Li }
8299*67e74705SXin Li
8300*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi64_epi8(__m128i __A)8301*67e74705SXin Li _mm_cvtepi64_epi8 (__m128i __A)
8302*67e74705SXin Li {
8303*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8304*67e74705SXin Li (__v16qi) _mm_undefined_si128(),
8305*67e74705SXin Li (__mmask8) -1);
8306*67e74705SXin Li }
8307*67e74705SXin Li
8308*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m128i __A)8309*67e74705SXin Li _mm_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m128i __A)
8310*67e74705SXin Li {
8311*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8312*67e74705SXin Li (__v16qi) __O, __M);
8313*67e74705SXin Li }
8314*67e74705SXin Li
8315*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi64_epi8(__mmask8 __M,__m128i __A)8316*67e74705SXin Li _mm_maskz_cvtepi64_epi8 (__mmask8 __M, __m128i __A)
8317*67e74705SXin Li {
8318*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb128_mask ((__v2di) __A,
8319*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
8320*67e74705SXin Li __M);
8321*67e74705SXin Li }
8322*67e74705SXin Li
8323*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m128i __A)8324*67e74705SXin Li _mm_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m128i __A)
8325*67e74705SXin Li {
8326*67e74705SXin Li __builtin_ia32_pmovqb128mem_mask ((__v16qi *) __P, (__v2di) __A, __M);
8327*67e74705SXin Li }
8328*67e74705SXin Li
8329*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi64_epi8(__m256i __A)8330*67e74705SXin Li _mm256_cvtepi64_epi8 (__m256i __A)
8331*67e74705SXin Li {
8332*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8333*67e74705SXin Li (__v16qi) _mm_undefined_si128(),
8334*67e74705SXin Li (__mmask8) -1);
8335*67e74705SXin Li }
8336*67e74705SXin Li
8337*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_epi8(__m128i __O,__mmask8 __M,__m256i __A)8338*67e74705SXin Li _mm256_mask_cvtepi64_epi8 (__m128i __O, __mmask8 __M, __m256i __A)
8339*67e74705SXin Li {
8340*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8341*67e74705SXin Li (__v16qi) __O, __M);
8342*67e74705SXin Li }
8343*67e74705SXin Li
8344*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi64_epi8(__mmask8 __M,__m256i __A)8345*67e74705SXin Li _mm256_maskz_cvtepi64_epi8 (__mmask8 __M, __m256i __A)
8346*67e74705SXin Li {
8347*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqb256_mask ((__v4di) __A,
8348*67e74705SXin Li (__v16qi) _mm_setzero_si128 (),
8349*67e74705SXin Li __M);
8350*67e74705SXin Li }
8351*67e74705SXin Li
8352*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_storeu_epi8(void * __P,__mmask8 __M,__m256i __A)8353*67e74705SXin Li _mm256_mask_cvtepi64_storeu_epi8 (void * __P, __mmask8 __M, __m256i __A)
8354*67e74705SXin Li {
8355*67e74705SXin Li __builtin_ia32_pmovqb256mem_mask ((__v16qi *) __P, (__v4di) __A, __M);
8356*67e74705SXin Li }
8357*67e74705SXin Li
8358*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi64_epi32(__m128i __A)8359*67e74705SXin Li _mm_cvtepi64_epi32 (__m128i __A)
8360*67e74705SXin Li {
8361*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8362*67e74705SXin Li (__v4si)_mm_undefined_si128(),
8363*67e74705SXin Li (__mmask8) -1);
8364*67e74705SXin Li }
8365*67e74705SXin Li
8366*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_epi32(__m128i __O,__mmask8 __M,__m128i __A)8367*67e74705SXin Li _mm_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m128i __A)
8368*67e74705SXin Li {
8369*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8370*67e74705SXin Li (__v4si) __O, __M);
8371*67e74705SXin Li }
8372*67e74705SXin Li
8373*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi64_epi32(__mmask8 __M,__m128i __A)8374*67e74705SXin Li _mm_maskz_cvtepi64_epi32 (__mmask8 __M, __m128i __A)
8375*67e74705SXin Li {
8376*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd128_mask ((__v2di) __A,
8377*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
8378*67e74705SXin Li __M);
8379*67e74705SXin Li }
8380*67e74705SXin Li
8381*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m128i __A)8382*67e74705SXin Li _mm_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m128i __A)
8383*67e74705SXin Li {
8384*67e74705SXin Li __builtin_ia32_pmovqd128mem_mask ((__v4si *) __P, (__v2di) __A, __M);
8385*67e74705SXin Li }
8386*67e74705SXin Li
8387*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi64_epi32(__m256i __A)8388*67e74705SXin Li _mm256_cvtepi64_epi32 (__m256i __A)
8389*67e74705SXin Li {
8390*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8391*67e74705SXin Li (__v4si) _mm_undefined_si128(),
8392*67e74705SXin Li (__mmask8) -1);
8393*67e74705SXin Li }
8394*67e74705SXin Li
8395*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_epi32(__m128i __O,__mmask8 __M,__m256i __A)8396*67e74705SXin Li _mm256_mask_cvtepi64_epi32 (__m128i __O, __mmask8 __M, __m256i __A)
8397*67e74705SXin Li {
8398*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8399*67e74705SXin Li (__v4si) __O, __M);
8400*67e74705SXin Li }
8401*67e74705SXin Li
8402*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi64_epi32(__mmask8 __M,__m256i __A)8403*67e74705SXin Li _mm256_maskz_cvtepi64_epi32 (__mmask8 __M, __m256i __A)
8404*67e74705SXin Li {
8405*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqd256_mask ((__v4di) __A,
8406*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
8407*67e74705SXin Li __M);
8408*67e74705SXin Li }
8409*67e74705SXin Li
8410*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_storeu_epi32(void * __P,__mmask8 __M,__m256i __A)8411*67e74705SXin Li _mm256_mask_cvtepi64_storeu_epi32 (void * __P, __mmask8 __M, __m256i __A)
8412*67e74705SXin Li {
8413*67e74705SXin Li __builtin_ia32_pmovqd256mem_mask ((__v4si *) __P, (__v4di) __A, __M);
8414*67e74705SXin Li }
8415*67e74705SXin Li
8416*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtepi64_epi16(__m128i __A)8417*67e74705SXin Li _mm_cvtepi64_epi16 (__m128i __A)
8418*67e74705SXin Li {
8419*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8420*67e74705SXin Li (__v8hi) _mm_undefined_si128(),
8421*67e74705SXin Li (__mmask8) -1);
8422*67e74705SXin Li }
8423*67e74705SXin Li
8424*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m128i __A)8425*67e74705SXin Li _mm_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m128i __A)
8426*67e74705SXin Li {
8427*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8428*67e74705SXin Li (__v8hi)__O,
8429*67e74705SXin Li __M);
8430*67e74705SXin Li }
8431*67e74705SXin Li
8432*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi64_epi16(__mmask8 __M,__m128i __A)8433*67e74705SXin Li _mm_maskz_cvtepi64_epi16 (__mmask8 __M, __m128i __A)
8434*67e74705SXin Li {
8435*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw128_mask ((__v2di) __A,
8436*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8437*67e74705SXin Li __M);
8438*67e74705SXin Li }
8439*67e74705SXin Li
8440*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m128i __A)8441*67e74705SXin Li _mm_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m128i __A)
8442*67e74705SXin Li {
8443*67e74705SXin Li __builtin_ia32_pmovqw128mem_mask ((__v8hi *) __P, (__v2di) __A, __M);
8444*67e74705SXin Li }
8445*67e74705SXin Li
8446*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_cvtepi64_epi16(__m256i __A)8447*67e74705SXin Li _mm256_cvtepi64_epi16 (__m256i __A)
8448*67e74705SXin Li {
8449*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8450*67e74705SXin Li (__v8hi)_mm_undefined_si128(),
8451*67e74705SXin Li (__mmask8) -1);
8452*67e74705SXin Li }
8453*67e74705SXin Li
8454*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_epi16(__m128i __O,__mmask8 __M,__m256i __A)8455*67e74705SXin Li _mm256_mask_cvtepi64_epi16 (__m128i __O, __mmask8 __M, __m256i __A)
8456*67e74705SXin Li {
8457*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8458*67e74705SXin Li (__v8hi) __O, __M);
8459*67e74705SXin Li }
8460*67e74705SXin Li
8461*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi64_epi16(__mmask8 __M,__m256i __A)8462*67e74705SXin Li _mm256_maskz_cvtepi64_epi16 (__mmask8 __M, __m256i __A)
8463*67e74705SXin Li {
8464*67e74705SXin Li return (__m128i) __builtin_ia32_pmovqw256_mask ((__v4di) __A,
8465*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
8466*67e74705SXin Li __M);
8467*67e74705SXin Li }
8468*67e74705SXin Li
8469*67e74705SXin Li static __inline__ void __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_storeu_epi16(void * __P,__mmask8 __M,__m256i __A)8470*67e74705SXin Li _mm256_mask_cvtepi64_storeu_epi16 (void * __P, __mmask8 __M, __m256i __A)
8471*67e74705SXin Li {
8472*67e74705SXin Li __builtin_ia32_pmovqw256mem_mask ((__v8hi *) __P, (__v4di) __A, __M);
8473*67e74705SXin Li }
8474*67e74705SXin Li
8475*67e74705SXin Li #define _mm256_extractf32x4_ps(A, imm) __extension__ ({ \
8476*67e74705SXin Li (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
8477*67e74705SXin Li (int)(imm), \
8478*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
8479*67e74705SXin Li (__mmask8)-1); })
8480*67e74705SXin Li
8481*67e74705SXin Li #define _mm256_mask_extractf32x4_ps(W, U, A, imm) __extension__ ({ \
8482*67e74705SXin Li (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
8483*67e74705SXin Li (int)(imm), \
8484*67e74705SXin Li (__v4sf)(__m128)(W), \
8485*67e74705SXin Li (__mmask8)(U)); })
8486*67e74705SXin Li
8487*67e74705SXin Li #define _mm256_maskz_extractf32x4_ps(U, A, imm) __extension__ ({ \
8488*67e74705SXin Li (__m128)__builtin_ia32_extractf32x4_256_mask((__v8sf)(__m256)(A), \
8489*67e74705SXin Li (int)(imm), \
8490*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
8491*67e74705SXin Li (__mmask8)(U)); })
8492*67e74705SXin Li
8493*67e74705SXin Li #define _mm256_extracti32x4_epi32(A, imm) __extension__ ({ \
8494*67e74705SXin Li (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
8495*67e74705SXin Li (int)(imm), \
8496*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
8497*67e74705SXin Li (__mmask8)-1); })
8498*67e74705SXin Li
8499*67e74705SXin Li #define _mm256_mask_extracti32x4_epi32(W, U, A, imm) __extension__ ({ \
8500*67e74705SXin Li (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
8501*67e74705SXin Li (int)(imm), \
8502*67e74705SXin Li (__v4si)(__m128i)(W), \
8503*67e74705SXin Li (__mmask8)(U)); })
8504*67e74705SXin Li
8505*67e74705SXin Li #define _mm256_maskz_extracti32x4_epi32(U, A, imm) __extension__ ({ \
8506*67e74705SXin Li (__m128i)__builtin_ia32_extracti32x4_256_mask((__v8si)(__m256i)(A), \
8507*67e74705SXin Li (int)(imm), \
8508*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
8509*67e74705SXin Li (__mmask8)(U)); })
8510*67e74705SXin Li
8511*67e74705SXin Li #define _mm256_insertf32x4(A, B, imm) __extension__ ({ \
8512*67e74705SXin Li (__m256)__builtin_ia32_insertf32x4_256_mask((__v8sf)(__m256)(A), \
8513*67e74705SXin Li (__v4sf)(__m128)(B), (int)(imm), \
8514*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
8515*67e74705SXin Li (__mmask8)-1); })
8516*67e74705SXin Li
8517*67e74705SXin Li #define _mm256_mask_insertf32x4(W, U, A, B, imm) __extension__ ({ \
8518*67e74705SXin Li (__m256)__builtin_ia32_insertf32x4_256_mask((__v8sf)(__m256)(A), \
8519*67e74705SXin Li (__v4sf)(__m128)(B), (int)(imm), \
8520*67e74705SXin Li (__v8sf)(__m256)(W), \
8521*67e74705SXin Li (__mmask8)(U)); })
8522*67e74705SXin Li
8523*67e74705SXin Li #define _mm256_maskz_insertf32x4(U, A, B, imm) __extension__ ({ \
8524*67e74705SXin Li (__m256)__builtin_ia32_insertf32x4_256_mask((__v8sf)(__m256)(A), \
8525*67e74705SXin Li (__v4sf)(__m128)(B), (int)(imm), \
8526*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
8527*67e74705SXin Li (__mmask8)(U)); })
8528*67e74705SXin Li
8529*67e74705SXin Li #define _mm256_inserti32x4(A, B, imm) __extension__ ({ \
8530*67e74705SXin Li (__m256i)__builtin_ia32_inserti32x4_256_mask((__v8si)(__m256i)(A), \
8531*67e74705SXin Li (__v4si)(__m128i)(B), \
8532*67e74705SXin Li (int)(imm), \
8533*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
8534*67e74705SXin Li (__mmask8)-1); })
8535*67e74705SXin Li
8536*67e74705SXin Li #define _mm256_mask_inserti32x4(W, U, A, B, imm) __extension__ ({ \
8537*67e74705SXin Li (__m256i)__builtin_ia32_inserti32x4_256_mask((__v8si)(__m256i)(A), \
8538*67e74705SXin Li (__v4si)(__m128i)(B), \
8539*67e74705SXin Li (int)(imm), \
8540*67e74705SXin Li (__v8si)(__m256i)(W), \
8541*67e74705SXin Li (__mmask8)(U)); })
8542*67e74705SXin Li
8543*67e74705SXin Li #define _mm256_maskz_inserti32x4(U, A, B, imm) __extension__ ({ \
8544*67e74705SXin Li (__m256i)__builtin_ia32_inserti32x4_256_mask((__v8si)(__m256i)(A), \
8545*67e74705SXin Li (__v4si)(__m128i)(B), \
8546*67e74705SXin Li (int)(imm), \
8547*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
8548*67e74705SXin Li (__mmask8)(U)); })
8549*67e74705SXin Li
8550*67e74705SXin Li #define _mm_getmant_pd(A, B, C) __extension__({\
8551*67e74705SXin Li (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8552*67e74705SXin Li (int)(((C)<<2) | (B)), \
8553*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
8554*67e74705SXin Li (__mmask8)-1); })
8555*67e74705SXin Li
8556*67e74705SXin Li #define _mm_mask_getmant_pd(W, U, A, B, C) __extension__({\
8557*67e74705SXin Li (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8558*67e74705SXin Li (int)(((C)<<2) | (B)), \
8559*67e74705SXin Li (__v2df)(__m128d)(W), \
8560*67e74705SXin Li (__mmask8)(U)); })
8561*67e74705SXin Li
8562*67e74705SXin Li #define _mm_maskz_getmant_pd(U, A, B, C) __extension__({\
8563*67e74705SXin Li (__m128d)__builtin_ia32_getmantpd128_mask((__v2df)(__m128d)(A), \
8564*67e74705SXin Li (int)(((C)<<2) | (B)), \
8565*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
8566*67e74705SXin Li (__mmask8)(U)); })
8567*67e74705SXin Li
8568*67e74705SXin Li #define _mm256_getmant_pd(A, B, C) __extension__ ({ \
8569*67e74705SXin Li (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8570*67e74705SXin Li (int)(((C)<<2) | (B)), \
8571*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
8572*67e74705SXin Li (__mmask8)-1); })
8573*67e74705SXin Li
8574*67e74705SXin Li #define _mm256_mask_getmant_pd(W, U, A, B, C) __extension__ ({ \
8575*67e74705SXin Li (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8576*67e74705SXin Li (int)(((C)<<2) | (B)), \
8577*67e74705SXin Li (__v4df)(__m256d)(W), \
8578*67e74705SXin Li (__mmask8)(U)); })
8579*67e74705SXin Li
8580*67e74705SXin Li #define _mm256_maskz_getmant_pd(U, A, B, C) __extension__ ({ \
8581*67e74705SXin Li (__m256d)__builtin_ia32_getmantpd256_mask((__v4df)(__m256d)(A), \
8582*67e74705SXin Li (int)(((C)<<2) | (B)), \
8583*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
8584*67e74705SXin Li (__mmask8)(U)); })
8585*67e74705SXin Li
8586*67e74705SXin Li #define _mm_getmant_ps(A, B, C) __extension__ ({ \
8587*67e74705SXin Li (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8588*67e74705SXin Li (int)(((C)<<2) | (B)), \
8589*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
8590*67e74705SXin Li (__mmask8)-1); })
8591*67e74705SXin Li
8592*67e74705SXin Li #define _mm_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8593*67e74705SXin Li (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8594*67e74705SXin Li (int)(((C)<<2) | (B)), \
8595*67e74705SXin Li (__v4sf)(__m128)(W), \
8596*67e74705SXin Li (__mmask8)(U)); })
8597*67e74705SXin Li
8598*67e74705SXin Li #define _mm_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8599*67e74705SXin Li (__m128)__builtin_ia32_getmantps128_mask((__v4sf)(__m128)(A), \
8600*67e74705SXin Li (int)(((C)<<2) | (B)), \
8601*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
8602*67e74705SXin Li (__mmask8)(U)); })
8603*67e74705SXin Li
8604*67e74705SXin Li #define _mm256_getmant_ps(A, B, C) __extension__ ({ \
8605*67e74705SXin Li (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8606*67e74705SXin Li (int)(((C)<<2) | (B)), \
8607*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
8608*67e74705SXin Li (__mmask8)-1); })
8609*67e74705SXin Li
8610*67e74705SXin Li #define _mm256_mask_getmant_ps(W, U, A, B, C) __extension__ ({ \
8611*67e74705SXin Li (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8612*67e74705SXin Li (int)(((C)<<2) | (B)), \
8613*67e74705SXin Li (__v8sf)(__m256)(W), \
8614*67e74705SXin Li (__mmask8)(U)); })
8615*67e74705SXin Li
8616*67e74705SXin Li #define _mm256_maskz_getmant_ps(U, A, B, C) __extension__ ({ \
8617*67e74705SXin Li (__m256)__builtin_ia32_getmantps256_mask((__v8sf)(__m256)(A), \
8618*67e74705SXin Li (int)(((C)<<2) | (B)), \
8619*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
8620*67e74705SXin Li (__mmask8)(U)); })
8621*67e74705SXin Li
8622*67e74705SXin Li #define _mm_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8623*67e74705SXin Li (__m128d)__builtin_ia32_gather3div2df((__v2df)(__m128d)(v1_old), \
8624*67e74705SXin Li (double const *)(addr), \
8625*67e74705SXin Li (__v2di)(__m128i)(index), \
8626*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8627*67e74705SXin Li
8628*67e74705SXin Li #define _mm_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8629*67e74705SXin Li (__m128i)__builtin_ia32_gather3div2di((__v2di)(__m128i)(v1_old), \
8630*67e74705SXin Li (long long const *)(addr), \
8631*67e74705SXin Li (__v2di)(__m128i)(index), \
8632*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8633*67e74705SXin Li
8634*67e74705SXin Li #define _mm256_mmask_i64gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8635*67e74705SXin Li (__m256d)__builtin_ia32_gather3div4df((__v4df)(__m256d)(v1_old), \
8636*67e74705SXin Li (double const *)(addr), \
8637*67e74705SXin Li (__v4di)(__m256i)(index), \
8638*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8639*67e74705SXin Li
8640*67e74705SXin Li #define _mm256_mmask_i64gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8641*67e74705SXin Li (__m256i)__builtin_ia32_gather3div4di((__v4di)(__m256i)(v1_old), \
8642*67e74705SXin Li (long long const *)(addr), \
8643*67e74705SXin Li (__v4di)(__m256i)(index), \
8644*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8645*67e74705SXin Li
8646*67e74705SXin Li #define _mm_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8647*67e74705SXin Li (__m128)__builtin_ia32_gather3div4sf((__v4sf)(__m128)(v1_old), \
8648*67e74705SXin Li (float const *)(addr), \
8649*67e74705SXin Li (__v2di)(__m128i)(index), \
8650*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8651*67e74705SXin Li
8652*67e74705SXin Li #define _mm_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8653*67e74705SXin Li (__m128i)__builtin_ia32_gather3div4si((__v4si)(__m128i)(v1_old), \
8654*67e74705SXin Li (int const *)(addr), \
8655*67e74705SXin Li (__v2di)(__m128i)(index), \
8656*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8657*67e74705SXin Li
8658*67e74705SXin Li #define _mm256_mmask_i64gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8659*67e74705SXin Li (__m128)__builtin_ia32_gather3div8sf((__v4sf)(__m128)(v1_old), \
8660*67e74705SXin Li (float const *)(addr), \
8661*67e74705SXin Li (__v4di)(__m256i)(index), \
8662*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8663*67e74705SXin Li
8664*67e74705SXin Li #define _mm256_mmask_i64gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8665*67e74705SXin Li (__m128i)__builtin_ia32_gather3div8si((__v4si)(__m128i)(v1_old), \
8666*67e74705SXin Li (int const *)(addr), \
8667*67e74705SXin Li (__v4di)(__m256i)(index), \
8668*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8669*67e74705SXin Li
8670*67e74705SXin Li #define _mm_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8671*67e74705SXin Li (__m128d)__builtin_ia32_gather3siv2df((__v2df)(__m128d)(v1_old), \
8672*67e74705SXin Li (double const *)(addr), \
8673*67e74705SXin Li (__v4si)(__m128i)(index), \
8674*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8675*67e74705SXin Li
8676*67e74705SXin Li #define _mm_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8677*67e74705SXin Li (__m128i)__builtin_ia32_gather3siv2di((__v2di)(__m128i)(v1_old), \
8678*67e74705SXin Li (long long const *)(addr), \
8679*67e74705SXin Li (__v4si)(__m128i)(index), \
8680*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8681*67e74705SXin Li
8682*67e74705SXin Li #define _mm256_mmask_i32gather_pd(v1_old, mask, index, addr, scale) __extension__ ({\
8683*67e74705SXin Li (__m256d)__builtin_ia32_gather3siv4df((__v4df)(__m256d)(v1_old), \
8684*67e74705SXin Li (double const *)(addr), \
8685*67e74705SXin Li (__v4si)(__m128i)(index), \
8686*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8687*67e74705SXin Li
8688*67e74705SXin Li #define _mm256_mmask_i32gather_epi64(v1_old, mask, index, addr, scale) __extension__ ({\
8689*67e74705SXin Li (__m256i)__builtin_ia32_gather3siv4di((__v4di)(__m256i)(v1_old), \
8690*67e74705SXin Li (long long const *)(addr), \
8691*67e74705SXin Li (__v4si)(__m128i)(index), \
8692*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8693*67e74705SXin Li
8694*67e74705SXin Li #define _mm_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8695*67e74705SXin Li (__m128)__builtin_ia32_gather3siv4sf((__v4sf)(__m128)(v1_old), \
8696*67e74705SXin Li (float const *)(addr), \
8697*67e74705SXin Li (__v4si)(__m128i)(index), \
8698*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8699*67e74705SXin Li
8700*67e74705SXin Li #define _mm_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8701*67e74705SXin Li (__m128i)__builtin_ia32_gather3siv4si((__v4si)(__m128i)(v1_old), \
8702*67e74705SXin Li (int const *)(addr), \
8703*67e74705SXin Li (__v4si)(__m128i)(index), \
8704*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8705*67e74705SXin Li
8706*67e74705SXin Li #define _mm256_mmask_i32gather_ps(v1_old, mask, index, addr, scale) __extension__ ({\
8707*67e74705SXin Li (__m256)__builtin_ia32_gather3siv8sf((__v8sf)(__m256)(v1_old), \
8708*67e74705SXin Li (float const *)(addr), \
8709*67e74705SXin Li (__v8si)(__m256i)(index), \
8710*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8711*67e74705SXin Li
8712*67e74705SXin Li #define _mm256_mmask_i32gather_epi32(v1_old, mask, index, addr, scale) __extension__ ({\
8713*67e74705SXin Li (__m256i)__builtin_ia32_gather3siv8si((__v8si)(__m256i)(v1_old), \
8714*67e74705SXin Li (int const *)(addr), \
8715*67e74705SXin Li (__v8si)(__m256i)(index), \
8716*67e74705SXin Li (__mmask8)(mask), (int)(scale)); })
8717*67e74705SXin Li
8718*67e74705SXin Li #define _mm256_permutex_pd(X, C) __extension__ ({ \
8719*67e74705SXin Li (__m256d)__builtin_shufflevector((__v4df)(__m256d)(X), \
8720*67e74705SXin Li (__v4df)_mm256_undefined_pd(), \
8721*67e74705SXin Li ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8722*67e74705SXin Li ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
8723*67e74705SXin Li
8724*67e74705SXin Li #define _mm256_mask_permutex_pd(W, U, X, C) __extension__ ({ \
8725*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8726*67e74705SXin Li (__v4df)_mm256_permutex_pd((X), (C)), \
8727*67e74705SXin Li (__v4df)(__m256d)(W)); })
8728*67e74705SXin Li
8729*67e74705SXin Li #define _mm256_maskz_permutex_pd(U, X, C) __extension__ ({ \
8730*67e74705SXin Li (__m256d)__builtin_ia32_selectpd_256((__mmask8)(U), \
8731*67e74705SXin Li (__v4df)_mm256_permutex_pd((X), (C)), \
8732*67e74705SXin Li (__v4df)_mm256_setzero_pd()); })
8733*67e74705SXin Li
8734*67e74705SXin Li #define _mm256_permutex_epi64(X, C) __extension__ ({ \
8735*67e74705SXin Li (__m256i)__builtin_shufflevector((__v4di)(__m256i)(X), \
8736*67e74705SXin Li (__v4di)_mm256_undefined_si256(), \
8737*67e74705SXin Li ((C) >> 0) & 0x3, ((C) >> 2) & 0x3, \
8738*67e74705SXin Li ((C) >> 4) & 0x3, ((C) >> 6) & 0x3); })
8739*67e74705SXin Li
8740*67e74705SXin Li #define _mm256_mask_permutex_epi64(W, U, X, C) __extension__ ({ \
8741*67e74705SXin Li (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8742*67e74705SXin Li (__v4di)_mm256_permutex_epi64((X), (C)), \
8743*67e74705SXin Li (__v4di)(__m256i)(W)); })
8744*67e74705SXin Li
8745*67e74705SXin Li #define _mm256_maskz_permutex_epi64(U, X, C) __extension__ ({ \
8746*67e74705SXin Li (__m256i)__builtin_ia32_selectq_256((__mmask8)(U), \
8747*67e74705SXin Li (__v4di)_mm256_permutex_epi64((X), (C)), \
8748*67e74705SXin Li (__v4di)_mm256_setzero_si256()); })
8749*67e74705SXin Li
8750*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_permutexvar_pd(__m256i __X,__m256d __Y)8751*67e74705SXin Li _mm256_permutexvar_pd (__m256i __X, __m256d __Y)
8752*67e74705SXin Li {
8753*67e74705SXin Li return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8754*67e74705SXin Li (__v4di) __X,
8755*67e74705SXin Li (__v4df) _mm256_undefined_si256 (),
8756*67e74705SXin Li (__mmask8) -1);
8757*67e74705SXin Li }
8758*67e74705SXin Li
8759*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_permutexvar_pd(__m256d __W,__mmask8 __U,__m256i __X,__m256d __Y)8760*67e74705SXin Li _mm256_mask_permutexvar_pd (__m256d __W, __mmask8 __U, __m256i __X,
8761*67e74705SXin Li __m256d __Y)
8762*67e74705SXin Li {
8763*67e74705SXin Li return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8764*67e74705SXin Li (__v4di) __X,
8765*67e74705SXin Li (__v4df) __W,
8766*67e74705SXin Li (__mmask8) __U);
8767*67e74705SXin Li }
8768*67e74705SXin Li
8769*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_permutexvar_pd(__mmask8 __U,__m256i __X,__m256d __Y)8770*67e74705SXin Li _mm256_maskz_permutexvar_pd (__mmask8 __U, __m256i __X, __m256d __Y)
8771*67e74705SXin Li {
8772*67e74705SXin Li return (__m256d) __builtin_ia32_permvardf256_mask ((__v4df) __Y,
8773*67e74705SXin Li (__v4di) __X,
8774*67e74705SXin Li (__v4df) _mm256_setzero_pd (),
8775*67e74705SXin Li (__mmask8) __U);
8776*67e74705SXin Li }
8777*67e74705SXin Li
8778*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutexvar_epi64(__mmask8 __M,__m256i __X,__m256i __Y)8779*67e74705SXin Li _mm256_maskz_permutexvar_epi64 (__mmask8 __M, __m256i __X, __m256i __Y)
8780*67e74705SXin Li {
8781*67e74705SXin Li return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8782*67e74705SXin Li (__v4di) __X,
8783*67e74705SXin Li (__v4di) _mm256_setzero_si256 (),
8784*67e74705SXin Li (__mmask8) __M);
8785*67e74705SXin Li }
8786*67e74705SXin Li
8787*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutexvar_epi64(__m256i __X,__m256i __Y)8788*67e74705SXin Li _mm256_permutexvar_epi64 ( __m256i __X, __m256i __Y)
8789*67e74705SXin Li {
8790*67e74705SXin Li return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8791*67e74705SXin Li (__v4di) __X,
8792*67e74705SXin Li (__v4di) _mm256_undefined_si256 (),
8793*67e74705SXin Li (__mmask8) -1);
8794*67e74705SXin Li }
8795*67e74705SXin Li
8796*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutexvar_epi64(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)8797*67e74705SXin Li _mm256_mask_permutexvar_epi64 (__m256i __W, __mmask8 __M, __m256i __X,
8798*67e74705SXin Li __m256i __Y)
8799*67e74705SXin Li {
8800*67e74705SXin Li return (__m256i) __builtin_ia32_permvardi256_mask ((__v4di) __Y,
8801*67e74705SXin Li (__v4di) __X,
8802*67e74705SXin Li (__v4di) __W,
8803*67e74705SXin Li __M);
8804*67e74705SXin Li }
8805*67e74705SXin Li
8806*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_permutexvar_ps(__m256 __W,__mmask8 __U,__m256i __X,__m256 __Y)8807*67e74705SXin Li _mm256_mask_permutexvar_ps (__m256 __W, __mmask8 __U, __m256i __X,
8808*67e74705SXin Li __m256 __Y)
8809*67e74705SXin Li {
8810*67e74705SXin Li return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8811*67e74705SXin Li (__v8si) __X,
8812*67e74705SXin Li (__v8sf) __W,
8813*67e74705SXin Li (__mmask8) __U);
8814*67e74705SXin Li }
8815*67e74705SXin Li
8816*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_permutexvar_ps(__mmask8 __U,__m256i __X,__m256 __Y)8817*67e74705SXin Li _mm256_maskz_permutexvar_ps (__mmask8 __U, __m256i __X, __m256 __Y)
8818*67e74705SXin Li {
8819*67e74705SXin Li return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8820*67e74705SXin Li (__v8si) __X,
8821*67e74705SXin Li (__v8sf) _mm256_setzero_ps (),
8822*67e74705SXin Li (__mmask8) __U);
8823*67e74705SXin Li }
8824*67e74705SXin Li
8825*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_permutexvar_ps(__m256i __X,__m256 __Y)8826*67e74705SXin Li _mm256_permutexvar_ps (__m256i __X, __m256 __Y)
8827*67e74705SXin Li {
8828*67e74705SXin Li return (__m256) __builtin_ia32_permvarsf256_mask ((__v8sf) __Y,
8829*67e74705SXin Li (__v8si) __X,
8830*67e74705SXin Li (__v8sf) _mm256_undefined_si256 (),
8831*67e74705SXin Li (__mmask8) -1);
8832*67e74705SXin Li }
8833*67e74705SXin Li
8834*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_permutexvar_epi32(__mmask8 __M,__m256i __X,__m256i __Y)8835*67e74705SXin Li _mm256_maskz_permutexvar_epi32 (__mmask8 __M, __m256i __X, __m256i __Y)
8836*67e74705SXin Li {
8837*67e74705SXin Li return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8838*67e74705SXin Li (__v8si) __X,
8839*67e74705SXin Li (__v8si) _mm256_setzero_si256 (),
8840*67e74705SXin Li __M);
8841*67e74705SXin Li }
8842*67e74705SXin Li
8843*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_permutexvar_epi32(__m256i __W,__mmask8 __M,__m256i __X,__m256i __Y)8844*67e74705SXin Li _mm256_mask_permutexvar_epi32 (__m256i __W, __mmask8 __M, __m256i __X,
8845*67e74705SXin Li __m256i __Y)
8846*67e74705SXin Li {
8847*67e74705SXin Li return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8848*67e74705SXin Li (__v8si) __X,
8849*67e74705SXin Li (__v8si) __W,
8850*67e74705SXin Li (__mmask8) __M);
8851*67e74705SXin Li }
8852*67e74705SXin Li
8853*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutexvar_epi32(__m256i __X,__m256i __Y)8854*67e74705SXin Li _mm256_permutexvar_epi32 (__m256i __X, __m256i __Y)
8855*67e74705SXin Li {
8856*67e74705SXin Li return (__m256i) __builtin_ia32_permvarsi256_mask ((__v8si) __Y,
8857*67e74705SXin Li (__v8si) __X,
8858*67e74705SXin Li (__v8si) _mm256_undefined_si256(),
8859*67e74705SXin Li (__mmask8) -1);
8860*67e74705SXin Li }
8861*67e74705SXin Li
8862*67e74705SXin Li #define _mm_alignr_epi32(A, B, imm) __extension__ ({ \
8863*67e74705SXin Li (__m128i)__builtin_ia32_alignd128_mask((__v4si)(__m128i)(A), \
8864*67e74705SXin Li (__v4si)(__m128i)(B), (int)(imm), \
8865*67e74705SXin Li (__v4si)_mm_undefined_si128(), \
8866*67e74705SXin Li (__mmask8)-1); })
8867*67e74705SXin Li
8868*67e74705SXin Li #define _mm_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
8869*67e74705SXin Li (__m128i)__builtin_ia32_alignd128_mask((__v4si)(__m128i)(A), \
8870*67e74705SXin Li (__v4si)(__m128i)(B), (int)(imm), \
8871*67e74705SXin Li (__v4si)(__m128i)(W), \
8872*67e74705SXin Li (__mmask8)(U)); })
8873*67e74705SXin Li
8874*67e74705SXin Li #define _mm_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
8875*67e74705SXin Li (__m128i)__builtin_ia32_alignd128_mask((__v4si)(__m128i)(A), \
8876*67e74705SXin Li (__v4si)(__m128i)(B), (int)(imm), \
8877*67e74705SXin Li (__v4si)_mm_setzero_si128(), \
8878*67e74705SXin Li (__mmask8)(U)); })
8879*67e74705SXin Li
8880*67e74705SXin Li #define _mm256_alignr_epi32(A, B, imm) __extension__ ({ \
8881*67e74705SXin Li (__m256i)__builtin_ia32_alignd256_mask((__v8si)(__m256i)(A), \
8882*67e74705SXin Li (__v8si)(__m256i)(B), (int)(imm), \
8883*67e74705SXin Li (__v8si)_mm256_undefined_si256(), \
8884*67e74705SXin Li (__mmask8)-1); })
8885*67e74705SXin Li
8886*67e74705SXin Li #define _mm256_mask_alignr_epi32(W, U, A, B, imm) __extension__ ({ \
8887*67e74705SXin Li (__m256i)__builtin_ia32_alignd256_mask((__v8si)(__m256i)(A), \
8888*67e74705SXin Li (__v8si)(__m256i)(B), (int)(imm), \
8889*67e74705SXin Li (__v8si)(__m256i)(W), \
8890*67e74705SXin Li (__mmask8)(U)); })
8891*67e74705SXin Li
8892*67e74705SXin Li #define _mm256_maskz_alignr_epi32(U, A, B, imm) __extension__ ({ \
8893*67e74705SXin Li (__m256i)__builtin_ia32_alignd256_mask((__v8si)(__m256i)(A), \
8894*67e74705SXin Li (__v8si)(__m256i)(B), (int)(imm), \
8895*67e74705SXin Li (__v8si)_mm256_setzero_si256(), \
8896*67e74705SXin Li (__mmask8)(U)); })
8897*67e74705SXin Li
8898*67e74705SXin Li #define _mm_alignr_epi64(A, B, imm) __extension__ ({ \
8899*67e74705SXin Li (__m128i)__builtin_ia32_alignq128_mask((__v2di)(__m128i)(A), \
8900*67e74705SXin Li (__v2di)(__m128i)(B), (int)(imm), \
8901*67e74705SXin Li (__v2di)_mm_setzero_di(), \
8902*67e74705SXin Li (__mmask8)-1); })
8903*67e74705SXin Li
8904*67e74705SXin Li #define _mm_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
8905*67e74705SXin Li (__m128i)__builtin_ia32_alignq128_mask((__v2di)(__m128i)(A), \
8906*67e74705SXin Li (__v2di)(__m128i)(B), (int)(imm), \
8907*67e74705SXin Li (__v2di)(__m128i)(W), \
8908*67e74705SXin Li (__mmask8)(U)); })
8909*67e74705SXin Li
8910*67e74705SXin Li #define _mm_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
8911*67e74705SXin Li (__m128i)__builtin_ia32_alignq128_mask((__v2di)(__m128i)(A), \
8912*67e74705SXin Li (__v2di)(__m128i)(B), (int)(imm), \
8913*67e74705SXin Li (__v2di)_mm_setzero_di(), \
8914*67e74705SXin Li (__mmask8)(U)); })
8915*67e74705SXin Li
8916*67e74705SXin Li #define _mm256_alignr_epi64(A, B, imm) __extension__ ({ \
8917*67e74705SXin Li (__m256i)__builtin_ia32_alignq256_mask((__v4di)(__m256i)(A), \
8918*67e74705SXin Li (__v4di)(__m256i)(B), (int)(imm), \
8919*67e74705SXin Li (__v4di)_mm256_undefined_pd(), \
8920*67e74705SXin Li (__mmask8)-1); })
8921*67e74705SXin Li
8922*67e74705SXin Li #define _mm256_mask_alignr_epi64(W, U, A, B, imm) __extension__ ({ \
8923*67e74705SXin Li (__m256i)__builtin_ia32_alignq256_mask((__v4di)(__m256i)(A), \
8924*67e74705SXin Li (__v4di)(__m256i)(B), (int)(imm), \
8925*67e74705SXin Li (__v4di)(__m256i)(W), \
8926*67e74705SXin Li (__mmask8)(U)); })
8927*67e74705SXin Li
8928*67e74705SXin Li #define _mm256_maskz_alignr_epi64(U, A, B, imm) __extension__ ({ \
8929*67e74705SXin Li (__m256i)__builtin_ia32_alignq256_mask((__v4di)(__m256i)(A), \
8930*67e74705SXin Li (__v4di)(__m256i)(B), (int)(imm), \
8931*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
8932*67e74705SXin Li (__mmask8)(U)); })
8933*67e74705SXin Li
8934*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_movehdup_ps(__m128 __W,__mmask8 __U,__m128 __A)8935*67e74705SXin Li _mm_mask_movehdup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8936*67e74705SXin Li {
8937*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8938*67e74705SXin Li (__v4sf)_mm_movehdup_ps(__A),
8939*67e74705SXin Li (__v4sf)__W);
8940*67e74705SXin Li }
8941*67e74705SXin Li
8942*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_movehdup_ps(__mmask8 __U,__m128 __A)8943*67e74705SXin Li _mm_maskz_movehdup_ps (__mmask8 __U, __m128 __A)
8944*67e74705SXin Li {
8945*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8946*67e74705SXin Li (__v4sf)_mm_movehdup_ps(__A),
8947*67e74705SXin Li (__v4sf)_mm_setzero_ps());
8948*67e74705SXin Li }
8949*67e74705SXin Li
8950*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_movehdup_ps(__m256 __W,__mmask8 __U,__m256 __A)8951*67e74705SXin Li _mm256_mask_movehdup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8952*67e74705SXin Li {
8953*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8954*67e74705SXin Li (__v8sf)_mm256_movehdup_ps(__A),
8955*67e74705SXin Li (__v8sf)__W);
8956*67e74705SXin Li }
8957*67e74705SXin Li
8958*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_movehdup_ps(__mmask8 __U,__m256 __A)8959*67e74705SXin Li _mm256_maskz_movehdup_ps (__mmask8 __U, __m256 __A)
8960*67e74705SXin Li {
8961*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8962*67e74705SXin Li (__v8sf)_mm256_movehdup_ps(__A),
8963*67e74705SXin Li (__v8sf)_mm256_setzero_ps());
8964*67e74705SXin Li }
8965*67e74705SXin Li
8966*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_moveldup_ps(__m128 __W,__mmask8 __U,__m128 __A)8967*67e74705SXin Li _mm_mask_moveldup_ps (__m128 __W, __mmask8 __U, __m128 __A)
8968*67e74705SXin Li {
8969*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8970*67e74705SXin Li (__v4sf)_mm_moveldup_ps(__A),
8971*67e74705SXin Li (__v4sf)__W);
8972*67e74705SXin Li }
8973*67e74705SXin Li
8974*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_moveldup_ps(__mmask8 __U,__m128 __A)8975*67e74705SXin Li _mm_maskz_moveldup_ps (__mmask8 __U, __m128 __A)
8976*67e74705SXin Li {
8977*67e74705SXin Li return (__m128)__builtin_ia32_selectps_128((__mmask8)__U,
8978*67e74705SXin Li (__v4sf)_mm_moveldup_ps(__A),
8979*67e74705SXin Li (__v4sf)_mm_setzero_ps());
8980*67e74705SXin Li }
8981*67e74705SXin Li
8982*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_moveldup_ps(__m256 __W,__mmask8 __U,__m256 __A)8983*67e74705SXin Li _mm256_mask_moveldup_ps (__m256 __W, __mmask8 __U, __m256 __A)
8984*67e74705SXin Li {
8985*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8986*67e74705SXin Li (__v8sf)_mm256_moveldup_ps(__A),
8987*67e74705SXin Li (__v8sf)__W);
8988*67e74705SXin Li }
8989*67e74705SXin Li
8990*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_moveldup_ps(__mmask8 __U,__m256 __A)8991*67e74705SXin Li _mm256_maskz_moveldup_ps (__mmask8 __U, __m256 __A)
8992*67e74705SXin Li {
8993*67e74705SXin Li return (__m256)__builtin_ia32_selectps_256((__mmask8)__U,
8994*67e74705SXin Li (__v8sf)_mm256_moveldup_ps(__A),
8995*67e74705SXin Li (__v8sf)_mm256_setzero_ps());
8996*67e74705SXin Li }
8997*67e74705SXin Li
8998*67e74705SXin Li #define _mm256_mask_shuffle_epi32(W, U, A, I) __extension__({\
8999*67e74705SXin Li (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
9000*67e74705SXin Li (__v8si)_mm256_shuffle_epi32((A), (I)), \
9001*67e74705SXin Li (__v8si)(__m256i)(W)); })
9002*67e74705SXin Li
9003*67e74705SXin Li #define _mm256_maskz_shuffle_epi32(U, A, I) __extension__({\
9004*67e74705SXin Li (__m256i)__builtin_ia32_selectd_256((__mmask8)(U), \
9005*67e74705SXin Li (__v8si)_mm256_shuffle_epi32((A), (I)), \
9006*67e74705SXin Li (__v8si)_mm256_setzero_si256()); })
9007*67e74705SXin Li
9008*67e74705SXin Li #define _mm_mask_shuffle_epi32(W, U, A, I) __extension__({\
9009*67e74705SXin Li (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
9010*67e74705SXin Li (__v4si)_mm_shuffle_epi32((A), (I)), \
9011*67e74705SXin Li (__v4si)(__m128i)(W)); })
9012*67e74705SXin Li
9013*67e74705SXin Li #define _mm_maskz_shuffle_epi32(U, A, I) __extension__({\
9014*67e74705SXin Li (__m128i)__builtin_ia32_selectd_128((__mmask8)(U), \
9015*67e74705SXin Li (__v4si)_mm_shuffle_epi32((A), (I)), \
9016*67e74705SXin Li (__v4si)_mm_setzero_si128()); })
9017*67e74705SXin Li
9018*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_mov_pd(__m128d __W,__mmask8 __U,__m128d __A)9019*67e74705SXin Li _mm_mask_mov_pd (__m128d __W, __mmask8 __U, __m128d __A)
9020*67e74705SXin Li {
9021*67e74705SXin Li return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
9022*67e74705SXin Li (__v2df) __A,
9023*67e74705SXin Li (__v2df) __W);
9024*67e74705SXin Li }
9025*67e74705SXin Li
9026*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_mov_pd(__mmask8 __U,__m128d __A)9027*67e74705SXin Li _mm_maskz_mov_pd (__mmask8 __U, __m128d __A)
9028*67e74705SXin Li {
9029*67e74705SXin Li return (__m128d) __builtin_ia32_selectpd_128 ((__mmask8) __U,
9030*67e74705SXin Li (__v2df) __A,
9031*67e74705SXin Li (__v2df) _mm_setzero_pd ());
9032*67e74705SXin Li }
9033*67e74705SXin Li
9034*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_mov_pd(__m256d __W,__mmask8 __U,__m256d __A)9035*67e74705SXin Li _mm256_mask_mov_pd (__m256d __W, __mmask8 __U, __m256d __A)
9036*67e74705SXin Li {
9037*67e74705SXin Li return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
9038*67e74705SXin Li (__v4df) __A,
9039*67e74705SXin Li (__v4df) __W);
9040*67e74705SXin Li }
9041*67e74705SXin Li
9042*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_mov_pd(__mmask8 __U,__m256d __A)9043*67e74705SXin Li _mm256_maskz_mov_pd (__mmask8 __U, __m256d __A)
9044*67e74705SXin Li {
9045*67e74705SXin Li return (__m256d) __builtin_ia32_selectpd_256 ((__mmask8) __U,
9046*67e74705SXin Li (__v4df) __A,
9047*67e74705SXin Li (__v4df) _mm256_setzero_pd ());
9048*67e74705SXin Li }
9049*67e74705SXin Li
9050*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_mov_ps(__m128 __W,__mmask8 __U,__m128 __A)9051*67e74705SXin Li _mm_mask_mov_ps (__m128 __W, __mmask8 __U, __m128 __A)
9052*67e74705SXin Li {
9053*67e74705SXin Li return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
9054*67e74705SXin Li (__v4sf) __A,
9055*67e74705SXin Li (__v4sf) __W);
9056*67e74705SXin Li }
9057*67e74705SXin Li
9058*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_mov_ps(__mmask8 __U,__m128 __A)9059*67e74705SXin Li _mm_maskz_mov_ps (__mmask8 __U, __m128 __A)
9060*67e74705SXin Li {
9061*67e74705SXin Li return (__m128) __builtin_ia32_selectps_128 ((__mmask8) __U,
9062*67e74705SXin Li (__v4sf) __A,
9063*67e74705SXin Li (__v4sf) _mm_setzero_ps ());
9064*67e74705SXin Li }
9065*67e74705SXin Li
9066*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_mov_ps(__m256 __W,__mmask8 __U,__m256 __A)9067*67e74705SXin Li _mm256_mask_mov_ps (__m256 __W, __mmask8 __U, __m256 __A)
9068*67e74705SXin Li {
9069*67e74705SXin Li return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
9070*67e74705SXin Li (__v8sf) __A,
9071*67e74705SXin Li (__v8sf) __W);
9072*67e74705SXin Li }
9073*67e74705SXin Li
9074*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_mov_ps(__mmask8 __U,__m256 __A)9075*67e74705SXin Li _mm256_maskz_mov_ps (__mmask8 __U, __m256 __A)
9076*67e74705SXin Li {
9077*67e74705SXin Li return (__m256) __builtin_ia32_selectps_256 ((__mmask8) __U,
9078*67e74705SXin Li (__v8sf) __A,
9079*67e74705SXin Li (__v8sf) _mm256_setzero_ps ());
9080*67e74705SXin Li }
9081*67e74705SXin Li
9082*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtph_ps(__m128 __W,__mmask8 __U,__m128i __A)9083*67e74705SXin Li _mm_mask_cvtph_ps (__m128 __W, __mmask8 __U, __m128i __A)
9084*67e74705SXin Li {
9085*67e74705SXin Li return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
9086*67e74705SXin Li (__v4sf) __W,
9087*67e74705SXin Li (__mmask8) __U);
9088*67e74705SXin Li }
9089*67e74705SXin Li
9090*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtph_ps(__mmask8 __U,__m128i __A)9091*67e74705SXin Li _mm_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
9092*67e74705SXin Li {
9093*67e74705SXin Li return (__m128) __builtin_ia32_vcvtph2ps_mask ((__v8hi) __A,
9094*67e74705SXin Li (__v4sf)
9095*67e74705SXin Li _mm_setzero_ps (),
9096*67e74705SXin Li (__mmask8) __U);
9097*67e74705SXin Li }
9098*67e74705SXin Li
9099*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_cvtph_ps(__m256 __W,__mmask8 __U,__m128i __A)9100*67e74705SXin Li _mm256_mask_cvtph_ps (__m256 __W, __mmask8 __U, __m128i __A)
9101*67e74705SXin Li {
9102*67e74705SXin Li return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
9103*67e74705SXin Li (__v8sf) __W,
9104*67e74705SXin Li (__mmask8) __U);
9105*67e74705SXin Li }
9106*67e74705SXin Li
9107*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtph_ps(__mmask8 __U,__m128i __A)9108*67e74705SXin Li _mm256_maskz_cvtph_ps (__mmask8 __U, __m128i __A)
9109*67e74705SXin Li {
9110*67e74705SXin Li return (__m256) __builtin_ia32_vcvtph2ps256_mask ((__v8hi) __A,
9111*67e74705SXin Li (__v8sf)
9112*67e74705SXin Li _mm256_setzero_ps (),
9113*67e74705SXin Li (__mmask8) __U);
9114*67e74705SXin Li }
9115*67e74705SXin Li
9116*67e74705SXin Li static __inline __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtps_ph(__m128i __W,__mmask8 __U,__m128 __A)9117*67e74705SXin Li _mm_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m128 __A)
9118*67e74705SXin Li {
9119*67e74705SXin Li return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
9120*67e74705SXin Li (__v8hi) __W,
9121*67e74705SXin Li (__mmask8) __U);
9122*67e74705SXin Li }
9123*67e74705SXin Li
9124*67e74705SXin Li static __inline __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_ph(__mmask8 __U,__m128 __A)9125*67e74705SXin Li _mm_maskz_cvtps_ph (__mmask8 __U, __m128 __A)
9126*67e74705SXin Li {
9127*67e74705SXin Li return (__m128i) __builtin_ia32_vcvtps2ph_mask ((__v4sf) __A, _MM_FROUND_CUR_DIRECTION,
9128*67e74705SXin Li (__v8hi) _mm_setzero_si128 (),
9129*67e74705SXin Li (__mmask8) __U);
9130*67e74705SXin Li }
9131*67e74705SXin Li
9132*67e74705SXin Li #define _mm_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
9133*67e74705SXin Li (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
9134*67e74705SXin Li (__v8hi)(__m128i)(W), \
9135*67e74705SXin Li (__mmask8)(U)); })
9136*67e74705SXin Li
9137*67e74705SXin Li #define _mm_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
9138*67e74705SXin Li (__m128i)__builtin_ia32_vcvtps2ph_mask((__v4sf)(__m128)(A), (int)(I), \
9139*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
9140*67e74705SXin Li (__mmask8)(U)); })
9141*67e74705SXin Li
9142*67e74705SXin Li static __inline __m128i __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_ph(__m128i __W,__mmask8 __U,__m256 __A)9143*67e74705SXin Li _mm256_mask_cvtps_ph (__m128i __W, __mmask8 __U, __m256 __A)
9144*67e74705SXin Li {
9145*67e74705SXin Li return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
9146*67e74705SXin Li (__v8hi) __W,
9147*67e74705SXin Li (__mmask8) __U);
9148*67e74705SXin Li }
9149*67e74705SXin Li
9150*67e74705SXin Li static __inline __m128i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_ph(__mmask8 __U,__m256 __A)9151*67e74705SXin Li _mm256_maskz_cvtps_ph ( __mmask8 __U, __m256 __A)
9152*67e74705SXin Li {
9153*67e74705SXin Li return (__m128i) __builtin_ia32_vcvtps2ph256_mask ((__v8sf) __A, _MM_FROUND_CUR_DIRECTION,
9154*67e74705SXin Li (__v8hi) _mm_setzero_si128(),
9155*67e74705SXin Li (__mmask8) __U);
9156*67e74705SXin Li }
9157*67e74705SXin Li #define _mm256_mask_cvt_roundps_ph(W, U, A, I) __extension__ ({ \
9158*67e74705SXin Li (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
9159*67e74705SXin Li (__v8hi)(__m128i)(W), \
9160*67e74705SXin Li (__mmask8)(U)); })
9161*67e74705SXin Li
9162*67e74705SXin Li #define _mm256_maskz_cvt_roundps_ph(U, A, I) __extension__ ({ \
9163*67e74705SXin Li (__m128i)__builtin_ia32_vcvtps2ph256_mask((__v8sf)(__m256)(A), (int)(I), \
9164*67e74705SXin Li (__v8hi)_mm_setzero_si128(), \
9165*67e74705SXin Li (__mmask8)(U)); })
9166*67e74705SXin Li
9167*67e74705SXin Li
9168*67e74705SXin Li #undef __DEFAULT_FN_ATTRS
9169*67e74705SXin Li
9170*67e74705SXin Li #endif /* __AVX512VLINTRIN_H */
9171