1*67e74705SXin Li /*===---- avx512vldqintrin.h - AVX512VL and AVX512DQ 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 <avx512vldqintrin.h> directly; include <immintrin.h> instead."
26*67e74705SXin Li #endif
27*67e74705SXin Li
28*67e74705SXin Li #ifndef __AVX512VLDQINTRIN_H
29*67e74705SXin Li #define __AVX512VLDQINTRIN_H
30*67e74705SXin Li
31*67e74705SXin Li /* Define the default attributes for the functions in this file. */
32*67e74705SXin Li #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512dq")))
33*67e74705SXin Li
34*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mullo_epi64(__m256i __A,__m256i __B)35*67e74705SXin Li _mm256_mullo_epi64 (__m256i __A, __m256i __B) {
36*67e74705SXin Li return (__m256i) ((__v4du) __A * (__v4du) __B);
37*67e74705SXin Li }
38*67e74705SXin Li
39*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_mullo_epi64(__m256i __W,__mmask8 __U,__m256i __A,__m256i __B)40*67e74705SXin Li _mm256_mask_mullo_epi64 (__m256i __W, __mmask8 __U, __m256i __A, __m256i __B) {
41*67e74705SXin Li return (__m256i) __builtin_ia32_pmullq256_mask ((__v4di) __A,
42*67e74705SXin Li (__v4di) __B,
43*67e74705SXin Li (__v4di) __W,
44*67e74705SXin Li (__mmask8) __U);
45*67e74705SXin Li }
46*67e74705SXin Li
47*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_mullo_epi64(__mmask8 __U,__m256i __A,__m256i __B)48*67e74705SXin Li _mm256_maskz_mullo_epi64 (__mmask8 __U, __m256i __A, __m256i __B) {
49*67e74705SXin Li return (__m256i) __builtin_ia32_pmullq256_mask ((__v4di) __A,
50*67e74705SXin Li (__v4di) __B,
51*67e74705SXin Li (__v4di)
52*67e74705SXin Li _mm256_setzero_si256 (),
53*67e74705SXin Li (__mmask8) __U);
54*67e74705SXin Li }
55*67e74705SXin Li
56*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mullo_epi64(__m128i __A,__m128i __B)57*67e74705SXin Li _mm_mullo_epi64 (__m128i __A, __m128i __B) {
58*67e74705SXin Li return (__m128i) ((__v2du) __A * (__v2du) __B);
59*67e74705SXin Li }
60*67e74705SXin Li
61*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_mullo_epi64(__m128i __W,__mmask8 __U,__m128i __A,__m128i __B)62*67e74705SXin Li _mm_mask_mullo_epi64 (__m128i __W, __mmask8 __U, __m128i __A, __m128i __B) {
63*67e74705SXin Li return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
64*67e74705SXin Li (__v2di) __B,
65*67e74705SXin Li (__v2di) __W,
66*67e74705SXin Li (__mmask8) __U);
67*67e74705SXin Li }
68*67e74705SXin Li
69*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_mullo_epi64(__mmask8 __U,__m128i __A,__m128i __B)70*67e74705SXin Li _mm_maskz_mullo_epi64 (__mmask8 __U, __m128i __A, __m128i __B) {
71*67e74705SXin Li return (__m128i) __builtin_ia32_pmullq128_mask ((__v2di) __A,
72*67e74705SXin Li (__v2di) __B,
73*67e74705SXin Li (__v2di)
74*67e74705SXin Li _mm_setzero_si128 (),
75*67e74705SXin Li (__mmask8) __U);
76*67e74705SXin Li }
77*67e74705SXin Li
78*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_andnot_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)79*67e74705SXin Li _mm256_mask_andnot_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
80*67e74705SXin Li return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
81*67e74705SXin Li (__v4df) __B,
82*67e74705SXin Li (__v4df) __W,
83*67e74705SXin Li (__mmask8) __U);
84*67e74705SXin Li }
85*67e74705SXin Li
86*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_andnot_pd(__mmask8 __U,__m256d __A,__m256d __B)87*67e74705SXin Li _mm256_maskz_andnot_pd (__mmask8 __U, __m256d __A, __m256d __B) {
88*67e74705SXin Li return (__m256d) __builtin_ia32_andnpd256_mask ((__v4df) __A,
89*67e74705SXin Li (__v4df) __B,
90*67e74705SXin Li (__v4df)
91*67e74705SXin Li _mm256_setzero_pd (),
92*67e74705SXin Li (__mmask8) __U);
93*67e74705SXin Li }
94*67e74705SXin Li
95*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_andnot_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)96*67e74705SXin Li _mm_mask_andnot_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
97*67e74705SXin Li return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
98*67e74705SXin Li (__v2df) __B,
99*67e74705SXin Li (__v2df) __W,
100*67e74705SXin Li (__mmask8) __U);
101*67e74705SXin Li }
102*67e74705SXin Li
103*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_andnot_pd(__mmask8 __U,__m128d __A,__m128d __B)104*67e74705SXin Li _mm_maskz_andnot_pd (__mmask8 __U, __m128d __A, __m128d __B) {
105*67e74705SXin Li return (__m128d) __builtin_ia32_andnpd128_mask ((__v2df) __A,
106*67e74705SXin Li (__v2df) __B,
107*67e74705SXin Li (__v2df)
108*67e74705SXin Li _mm_setzero_pd (),
109*67e74705SXin Li (__mmask8) __U);
110*67e74705SXin Li }
111*67e74705SXin Li
112*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_andnot_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)113*67e74705SXin Li _mm256_mask_andnot_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
114*67e74705SXin Li return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
115*67e74705SXin Li (__v8sf) __B,
116*67e74705SXin Li (__v8sf) __W,
117*67e74705SXin Li (__mmask8) __U);
118*67e74705SXin Li }
119*67e74705SXin Li
120*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_andnot_ps(__mmask8 __U,__m256 __A,__m256 __B)121*67e74705SXin Li _mm256_maskz_andnot_ps (__mmask8 __U, __m256 __A, __m256 __B) {
122*67e74705SXin Li return (__m256) __builtin_ia32_andnps256_mask ((__v8sf) __A,
123*67e74705SXin Li (__v8sf) __B,
124*67e74705SXin Li (__v8sf)
125*67e74705SXin Li _mm256_setzero_ps (),
126*67e74705SXin Li (__mmask8) __U);
127*67e74705SXin Li }
128*67e74705SXin Li
129*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_andnot_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)130*67e74705SXin Li _mm_mask_andnot_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
131*67e74705SXin Li return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
132*67e74705SXin Li (__v4sf) __B,
133*67e74705SXin Li (__v4sf) __W,
134*67e74705SXin Li (__mmask8) __U);
135*67e74705SXin Li }
136*67e74705SXin Li
137*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_andnot_ps(__mmask8 __U,__m128 __A,__m128 __B)138*67e74705SXin Li _mm_maskz_andnot_ps (__mmask8 __U, __m128 __A, __m128 __B) {
139*67e74705SXin Li return (__m128) __builtin_ia32_andnps128_mask ((__v4sf) __A,
140*67e74705SXin Li (__v4sf) __B,
141*67e74705SXin Li (__v4sf)
142*67e74705SXin Li _mm_setzero_ps (),
143*67e74705SXin Li (__mmask8) __U);
144*67e74705SXin Li }
145*67e74705SXin Li
146*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_and_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)147*67e74705SXin Li _mm256_mask_and_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
148*67e74705SXin Li return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
149*67e74705SXin Li (__v4df) __B,
150*67e74705SXin Li (__v4df) __W,
151*67e74705SXin Li (__mmask8) __U);
152*67e74705SXin Li }
153*67e74705SXin Li
154*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_and_pd(__mmask8 __U,__m256d __A,__m256d __B)155*67e74705SXin Li _mm256_maskz_and_pd (__mmask8 __U, __m256d __A, __m256d __B) {
156*67e74705SXin Li return (__m256d) __builtin_ia32_andpd256_mask ((__v4df) __A,
157*67e74705SXin Li (__v4df) __B,
158*67e74705SXin Li (__v4df)
159*67e74705SXin Li _mm256_setzero_pd (),
160*67e74705SXin Li (__mmask8) __U);
161*67e74705SXin Li }
162*67e74705SXin Li
163*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_and_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)164*67e74705SXin Li _mm_mask_and_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
165*67e74705SXin Li return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
166*67e74705SXin Li (__v2df) __B,
167*67e74705SXin Li (__v2df) __W,
168*67e74705SXin Li (__mmask8) __U);
169*67e74705SXin Li }
170*67e74705SXin Li
171*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_and_pd(__mmask8 __U,__m128d __A,__m128d __B)172*67e74705SXin Li _mm_maskz_and_pd (__mmask8 __U, __m128d __A, __m128d __B) {
173*67e74705SXin Li return (__m128d) __builtin_ia32_andpd128_mask ((__v2df) __A,
174*67e74705SXin Li (__v2df) __B,
175*67e74705SXin Li (__v2df)
176*67e74705SXin Li _mm_setzero_pd (),
177*67e74705SXin Li (__mmask8) __U);
178*67e74705SXin Li }
179*67e74705SXin Li
180*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_and_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)181*67e74705SXin Li _mm256_mask_and_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
182*67e74705SXin Li return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
183*67e74705SXin Li (__v8sf) __B,
184*67e74705SXin Li (__v8sf) __W,
185*67e74705SXin Li (__mmask8) __U);
186*67e74705SXin Li }
187*67e74705SXin Li
188*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_and_ps(__mmask8 __U,__m256 __A,__m256 __B)189*67e74705SXin Li _mm256_maskz_and_ps (__mmask8 __U, __m256 __A, __m256 __B) {
190*67e74705SXin Li return (__m256) __builtin_ia32_andps256_mask ((__v8sf) __A,
191*67e74705SXin Li (__v8sf) __B,
192*67e74705SXin Li (__v8sf)
193*67e74705SXin Li _mm256_setzero_ps (),
194*67e74705SXin Li (__mmask8) __U);
195*67e74705SXin Li }
196*67e74705SXin Li
197*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_and_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)198*67e74705SXin Li _mm_mask_and_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
199*67e74705SXin Li return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
200*67e74705SXin Li (__v4sf) __B,
201*67e74705SXin Li (__v4sf) __W,
202*67e74705SXin Li (__mmask8) __U);
203*67e74705SXin Li }
204*67e74705SXin Li
205*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_and_ps(__mmask8 __U,__m128 __A,__m128 __B)206*67e74705SXin Li _mm_maskz_and_ps (__mmask8 __U, __m128 __A, __m128 __B) {
207*67e74705SXin Li return (__m128) __builtin_ia32_andps128_mask ((__v4sf) __A,
208*67e74705SXin Li (__v4sf) __B,
209*67e74705SXin Li (__v4sf)
210*67e74705SXin Li _mm_setzero_ps (),
211*67e74705SXin Li (__mmask8) __U);
212*67e74705SXin Li }
213*67e74705SXin Li
214*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_xor_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)215*67e74705SXin Li _mm256_mask_xor_pd (__m256d __W, __mmask8 __U, __m256d __A,
216*67e74705SXin Li __m256d __B) {
217*67e74705SXin Li return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
218*67e74705SXin Li (__v4df) __B,
219*67e74705SXin Li (__v4df) __W,
220*67e74705SXin Li (__mmask8) __U);
221*67e74705SXin Li }
222*67e74705SXin Li
223*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_xor_pd(__mmask8 __U,__m256d __A,__m256d __B)224*67e74705SXin Li _mm256_maskz_xor_pd (__mmask8 __U, __m256d __A, __m256d __B) {
225*67e74705SXin Li return (__m256d) __builtin_ia32_xorpd256_mask ((__v4df) __A,
226*67e74705SXin Li (__v4df) __B,
227*67e74705SXin Li (__v4df)
228*67e74705SXin Li _mm256_setzero_pd (),
229*67e74705SXin Li (__mmask8) __U);
230*67e74705SXin Li }
231*67e74705SXin Li
232*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_xor_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)233*67e74705SXin Li _mm_mask_xor_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
234*67e74705SXin Li return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
235*67e74705SXin Li (__v2df) __B,
236*67e74705SXin Li (__v2df) __W,
237*67e74705SXin Li (__mmask8) __U);
238*67e74705SXin Li }
239*67e74705SXin Li
240*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_xor_pd(__mmask8 __U,__m128d __A,__m128d __B)241*67e74705SXin Li _mm_maskz_xor_pd (__mmask8 __U, __m128d __A, __m128d __B) {
242*67e74705SXin Li return (__m128d) __builtin_ia32_xorpd128_mask ((__v2df) __A,
243*67e74705SXin Li (__v2df) __B,
244*67e74705SXin Li (__v2df)
245*67e74705SXin Li _mm_setzero_pd (),
246*67e74705SXin Li (__mmask8) __U);
247*67e74705SXin Li }
248*67e74705SXin Li
249*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_xor_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)250*67e74705SXin Li _mm256_mask_xor_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
251*67e74705SXin Li return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
252*67e74705SXin Li (__v8sf) __B,
253*67e74705SXin Li (__v8sf) __W,
254*67e74705SXin Li (__mmask8) __U);
255*67e74705SXin Li }
256*67e74705SXin Li
257*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_xor_ps(__mmask8 __U,__m256 __A,__m256 __B)258*67e74705SXin Li _mm256_maskz_xor_ps (__mmask8 __U, __m256 __A, __m256 __B) {
259*67e74705SXin Li return (__m256) __builtin_ia32_xorps256_mask ((__v8sf) __A,
260*67e74705SXin Li (__v8sf) __B,
261*67e74705SXin Li (__v8sf)
262*67e74705SXin Li _mm256_setzero_ps (),
263*67e74705SXin Li (__mmask8) __U);
264*67e74705SXin Li }
265*67e74705SXin Li
266*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_xor_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)267*67e74705SXin Li _mm_mask_xor_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
268*67e74705SXin Li return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
269*67e74705SXin Li (__v4sf) __B,
270*67e74705SXin Li (__v4sf) __W,
271*67e74705SXin Li (__mmask8) __U);
272*67e74705SXin Li }
273*67e74705SXin Li
274*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_xor_ps(__mmask8 __U,__m128 __A,__m128 __B)275*67e74705SXin Li _mm_maskz_xor_ps (__mmask8 __U, __m128 __A, __m128 __B) {
276*67e74705SXin Li return (__m128) __builtin_ia32_xorps128_mask ((__v4sf) __A,
277*67e74705SXin Li (__v4sf) __B,
278*67e74705SXin Li (__v4sf)
279*67e74705SXin Li _mm_setzero_ps (),
280*67e74705SXin Li (__mmask8) __U);
281*67e74705SXin Li }
282*67e74705SXin Li
283*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_or_pd(__m256d __W,__mmask8 __U,__m256d __A,__m256d __B)284*67e74705SXin Li _mm256_mask_or_pd (__m256d __W, __mmask8 __U, __m256d __A, __m256d __B) {
285*67e74705SXin Li return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
286*67e74705SXin Li (__v4df) __B,
287*67e74705SXin Li (__v4df) __W,
288*67e74705SXin Li (__mmask8) __U);
289*67e74705SXin Li }
290*67e74705SXin Li
291*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_or_pd(__mmask8 __U,__m256d __A,__m256d __B)292*67e74705SXin Li _mm256_maskz_or_pd (__mmask8 __U, __m256d __A, __m256d __B) {
293*67e74705SXin Li return (__m256d) __builtin_ia32_orpd256_mask ((__v4df) __A,
294*67e74705SXin Li (__v4df) __B,
295*67e74705SXin Li (__v4df)
296*67e74705SXin Li _mm256_setzero_pd (),
297*67e74705SXin Li (__mmask8) __U);
298*67e74705SXin Li }
299*67e74705SXin Li
300*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_or_pd(__m128d __W,__mmask8 __U,__m128d __A,__m128d __B)301*67e74705SXin Li _mm_mask_or_pd (__m128d __W, __mmask8 __U, __m128d __A, __m128d __B) {
302*67e74705SXin Li return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
303*67e74705SXin Li (__v2df) __B,
304*67e74705SXin Li (__v2df) __W,
305*67e74705SXin Li (__mmask8) __U);
306*67e74705SXin Li }
307*67e74705SXin Li
308*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_or_pd(__mmask8 __U,__m128d __A,__m128d __B)309*67e74705SXin Li _mm_maskz_or_pd (__mmask8 __U, __m128d __A, __m128d __B) {
310*67e74705SXin Li return (__m128d) __builtin_ia32_orpd128_mask ((__v2df) __A,
311*67e74705SXin Li (__v2df) __B,
312*67e74705SXin Li (__v2df)
313*67e74705SXin Li _mm_setzero_pd (),
314*67e74705SXin Li (__mmask8) __U);
315*67e74705SXin Li }
316*67e74705SXin Li
317*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_or_ps(__m256 __W,__mmask8 __U,__m256 __A,__m256 __B)318*67e74705SXin Li _mm256_mask_or_ps (__m256 __W, __mmask8 __U, __m256 __A, __m256 __B) {
319*67e74705SXin Li return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
320*67e74705SXin Li (__v8sf) __B,
321*67e74705SXin Li (__v8sf) __W,
322*67e74705SXin Li (__mmask8) __U);
323*67e74705SXin Li }
324*67e74705SXin Li
325*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_or_ps(__mmask8 __U,__m256 __A,__m256 __B)326*67e74705SXin Li _mm256_maskz_or_ps (__mmask8 __U, __m256 __A, __m256 __B) {
327*67e74705SXin Li return (__m256) __builtin_ia32_orps256_mask ((__v8sf) __A,
328*67e74705SXin Li (__v8sf) __B,
329*67e74705SXin Li (__v8sf)
330*67e74705SXin Li _mm256_setzero_ps (),
331*67e74705SXin Li (__mmask8) __U);
332*67e74705SXin Li }
333*67e74705SXin Li
334*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_or_ps(__m128 __W,__mmask8 __U,__m128 __A,__m128 __B)335*67e74705SXin Li _mm_mask_or_ps (__m128 __W, __mmask8 __U, __m128 __A, __m128 __B) {
336*67e74705SXin Li return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
337*67e74705SXin Li (__v4sf) __B,
338*67e74705SXin Li (__v4sf) __W,
339*67e74705SXin Li (__mmask8) __U);
340*67e74705SXin Li }
341*67e74705SXin Li
342*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_or_ps(__mmask8 __U,__m128 __A,__m128 __B)343*67e74705SXin Li _mm_maskz_or_ps (__mmask8 __U, __m128 __A, __m128 __B) {
344*67e74705SXin Li return (__m128) __builtin_ia32_orps128_mask ((__v4sf) __A,
345*67e74705SXin Li (__v4sf) __B,
346*67e74705SXin Li (__v4sf)
347*67e74705SXin Li _mm_setzero_ps (),
348*67e74705SXin Li (__mmask8) __U);
349*67e74705SXin Li }
350*67e74705SXin Li
351*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtpd_epi64(__m128d __A)352*67e74705SXin Li _mm_cvtpd_epi64 (__m128d __A) {
353*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
354*67e74705SXin Li (__v2di) _mm_setzero_si128(),
355*67e74705SXin Li (__mmask8) -1);
356*67e74705SXin Li }
357*67e74705SXin Li
358*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtpd_epi64(__m128i __W,__mmask8 __U,__m128d __A)359*67e74705SXin Li _mm_mask_cvtpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
360*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
361*67e74705SXin Li (__v2di) __W,
362*67e74705SXin Li (__mmask8) __U);
363*67e74705SXin Li }
364*67e74705SXin Li
365*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtpd_epi64(__mmask8 __U,__m128d __A)366*67e74705SXin Li _mm_maskz_cvtpd_epi64 (__mmask8 __U, __m128d __A) {
367*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2qq128_mask ((__v2df) __A,
368*67e74705SXin Li (__v2di) _mm_setzero_si128(),
369*67e74705SXin Li (__mmask8) __U);
370*67e74705SXin Li }
371*67e74705SXin Li
372*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtpd_epi64(__m256d __A)373*67e74705SXin Li _mm256_cvtpd_epi64 (__m256d __A) {
374*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
375*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
376*67e74705SXin Li (__mmask8) -1);
377*67e74705SXin Li }
378*67e74705SXin Li
379*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtpd_epi64(__m256i __W,__mmask8 __U,__m256d __A)380*67e74705SXin Li _mm256_mask_cvtpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
381*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
382*67e74705SXin Li (__v4di) __W,
383*67e74705SXin Li (__mmask8) __U);
384*67e74705SXin Li }
385*67e74705SXin Li
386*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtpd_epi64(__mmask8 __U,__m256d __A)387*67e74705SXin Li _mm256_maskz_cvtpd_epi64 (__mmask8 __U, __m256d __A) {
388*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2qq256_mask ((__v4df) __A,
389*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
390*67e74705SXin Li (__mmask8) __U);
391*67e74705SXin Li }
392*67e74705SXin Li
393*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtpd_epu64(__m128d __A)394*67e74705SXin Li _mm_cvtpd_epu64 (__m128d __A) {
395*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
396*67e74705SXin Li (__v2di) _mm_setzero_si128(),
397*67e74705SXin Li (__mmask8) -1);
398*67e74705SXin Li }
399*67e74705SXin Li
400*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtpd_epu64(__m128i __W,__mmask8 __U,__m128d __A)401*67e74705SXin Li _mm_mask_cvtpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
402*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
403*67e74705SXin Li (__v2di) __W,
404*67e74705SXin Li (__mmask8) __U);
405*67e74705SXin Li }
406*67e74705SXin Li
407*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtpd_epu64(__mmask8 __U,__m128d __A)408*67e74705SXin Li _mm_maskz_cvtpd_epu64 (__mmask8 __U, __m128d __A) {
409*67e74705SXin Li return (__m128i) __builtin_ia32_cvtpd2uqq128_mask ((__v2df) __A,
410*67e74705SXin Li (__v2di) _mm_setzero_si128(),
411*67e74705SXin Li (__mmask8) __U);
412*67e74705SXin Li }
413*67e74705SXin Li
414*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtpd_epu64(__m256d __A)415*67e74705SXin Li _mm256_cvtpd_epu64 (__m256d __A) {
416*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
417*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
418*67e74705SXin Li (__mmask8) -1);
419*67e74705SXin Li }
420*67e74705SXin Li
421*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtpd_epu64(__m256i __W,__mmask8 __U,__m256d __A)422*67e74705SXin Li _mm256_mask_cvtpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
423*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
424*67e74705SXin Li (__v4di) __W,
425*67e74705SXin Li (__mmask8) __U);
426*67e74705SXin Li }
427*67e74705SXin Li
428*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtpd_epu64(__mmask8 __U,__m256d __A)429*67e74705SXin Li _mm256_maskz_cvtpd_epu64 (__mmask8 __U, __m256d __A) {
430*67e74705SXin Li return (__m256i) __builtin_ia32_cvtpd2uqq256_mask ((__v4df) __A,
431*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
432*67e74705SXin Li (__mmask8) __U);
433*67e74705SXin Li }
434*67e74705SXin Li
435*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtps_epi64(__m128 __A)436*67e74705SXin Li _mm_cvtps_epi64 (__m128 __A) {
437*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
438*67e74705SXin Li (__v2di) _mm_setzero_si128(),
439*67e74705SXin Li (__mmask8) -1);
440*67e74705SXin Li }
441*67e74705SXin Li
442*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtps_epi64(__m128i __W,__mmask8 __U,__m128 __A)443*67e74705SXin Li _mm_mask_cvtps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
444*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
445*67e74705SXin Li (__v2di) __W,
446*67e74705SXin Li (__mmask8) __U);
447*67e74705SXin Li }
448*67e74705SXin Li
449*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_epi64(__mmask8 __U,__m128 __A)450*67e74705SXin Li _mm_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
451*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2qq128_mask ((__v4sf) __A,
452*67e74705SXin Li (__v2di) _mm_setzero_si128(),
453*67e74705SXin Li (__mmask8) __U);
454*67e74705SXin Li }
455*67e74705SXin Li
456*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtps_epi64(__m128 __A)457*67e74705SXin Li _mm256_cvtps_epi64 (__m128 __A) {
458*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
459*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
460*67e74705SXin Li (__mmask8) -1);
461*67e74705SXin Li }
462*67e74705SXin Li
463*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_epi64(__m256i __W,__mmask8 __U,__m128 __A)464*67e74705SXin Li _mm256_mask_cvtps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
465*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
466*67e74705SXin Li (__v4di) __W,
467*67e74705SXin Li (__mmask8) __U);
468*67e74705SXin Li }
469*67e74705SXin Li
470*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_epi64(__mmask8 __U,__m128 __A)471*67e74705SXin Li _mm256_maskz_cvtps_epi64 (__mmask8 __U, __m128 __A) {
472*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2qq256_mask ((__v4sf) __A,
473*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
474*67e74705SXin Li (__mmask8) __U);
475*67e74705SXin Li }
476*67e74705SXin Li
477*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvtps_epu64(__m128 __A)478*67e74705SXin Li _mm_cvtps_epu64 (__m128 __A) {
479*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
480*67e74705SXin Li (__v2di) _mm_setzero_si128(),
481*67e74705SXin Li (__mmask8) -1);
482*67e74705SXin Li }
483*67e74705SXin Li
484*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvtps_epu64(__m128i __W,__mmask8 __U,__m128 __A)485*67e74705SXin Li _mm_mask_cvtps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
486*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
487*67e74705SXin Li (__v2di) __W,
488*67e74705SXin Li (__mmask8) __U);
489*67e74705SXin Li }
490*67e74705SXin Li
491*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvtps_epu64(__mmask8 __U,__m128 __A)492*67e74705SXin Li _mm_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
493*67e74705SXin Li return (__m128i) __builtin_ia32_cvtps2uqq128_mask ((__v4sf) __A,
494*67e74705SXin Li (__v2di) _mm_setzero_si128(),
495*67e74705SXin Li (__mmask8) __U);
496*67e74705SXin Li }
497*67e74705SXin Li
498*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtps_epu64(__m128 __A)499*67e74705SXin Li _mm256_cvtps_epu64 (__m128 __A) {
500*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
501*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
502*67e74705SXin Li (__mmask8) -1);
503*67e74705SXin Li }
504*67e74705SXin Li
505*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvtps_epu64(__m256i __W,__mmask8 __U,__m128 __A)506*67e74705SXin Li _mm256_mask_cvtps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
507*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
508*67e74705SXin Li (__v4di) __W,
509*67e74705SXin Li (__mmask8) __U);
510*67e74705SXin Li }
511*67e74705SXin Li
512*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvtps_epu64(__mmask8 __U,__m128 __A)513*67e74705SXin Li _mm256_maskz_cvtps_epu64 (__mmask8 __U, __m128 __A) {
514*67e74705SXin Li return (__m256i) __builtin_ia32_cvtps2uqq256_mask ((__v4sf) __A,
515*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
516*67e74705SXin Li (__mmask8) __U);
517*67e74705SXin Li }
518*67e74705SXin Li
519*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_cvtepi64_pd(__m128i __A)520*67e74705SXin Li _mm_cvtepi64_pd (__m128i __A) {
521*67e74705SXin Li return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
522*67e74705SXin Li (__v2df) _mm_setzero_pd(),
523*67e74705SXin Li (__mmask8) -1);
524*67e74705SXin Li }
525*67e74705SXin Li
526*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_pd(__m128d __W,__mmask8 __U,__m128i __A)527*67e74705SXin Li _mm_mask_cvtepi64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
528*67e74705SXin Li return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
529*67e74705SXin Li (__v2df) __W,
530*67e74705SXin Li (__mmask8) __U);
531*67e74705SXin Li }
532*67e74705SXin Li
533*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi64_pd(__mmask8 __U,__m128i __A)534*67e74705SXin Li _mm_maskz_cvtepi64_pd (__mmask8 __U, __m128i __A) {
535*67e74705SXin Li return (__m128d) __builtin_ia32_cvtqq2pd128_mask ((__v2di) __A,
536*67e74705SXin Li (__v2df) _mm_setzero_pd(),
537*67e74705SXin Li (__mmask8) __U);
538*67e74705SXin Li }
539*67e74705SXin Li
540*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_cvtepi64_pd(__m256i __A)541*67e74705SXin Li _mm256_cvtepi64_pd (__m256i __A) {
542*67e74705SXin Li return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
543*67e74705SXin Li (__v4df) _mm256_setzero_pd(),
544*67e74705SXin Li (__mmask8) -1);
545*67e74705SXin Li }
546*67e74705SXin Li
547*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_pd(__m256d __W,__mmask8 __U,__m256i __A)548*67e74705SXin Li _mm256_mask_cvtepi64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
549*67e74705SXin Li return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
550*67e74705SXin Li (__v4df) __W,
551*67e74705SXin Li (__mmask8) __U);
552*67e74705SXin Li }
553*67e74705SXin Li
554*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi64_pd(__mmask8 __U,__m256i __A)555*67e74705SXin Li _mm256_maskz_cvtepi64_pd (__mmask8 __U, __m256i __A) {
556*67e74705SXin Li return (__m256d) __builtin_ia32_cvtqq2pd256_mask ((__v4di) __A,
557*67e74705SXin Li (__v4df) _mm256_setzero_pd(),
558*67e74705SXin Li (__mmask8) __U);
559*67e74705SXin Li }
560*67e74705SXin Li
561*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_cvtepi64_ps(__m128i __A)562*67e74705SXin Li _mm_cvtepi64_ps (__m128i __A) {
563*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
564*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
565*67e74705SXin Li (__mmask8) -1);
566*67e74705SXin Li }
567*67e74705SXin Li
568*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtepi64_ps(__m128 __W,__mmask8 __U,__m128i __A)569*67e74705SXin Li _mm_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
570*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
571*67e74705SXin Li (__v4sf) __W,
572*67e74705SXin Li (__mmask8) __U);
573*67e74705SXin Li }
574*67e74705SXin Li
575*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtepi64_ps(__mmask8 __U,__m128i __A)576*67e74705SXin Li _mm_maskz_cvtepi64_ps (__mmask8 __U, __m128i __A) {
577*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps128_mask ((__v2di) __A,
578*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
579*67e74705SXin Li (__mmask8) __U);
580*67e74705SXin Li }
581*67e74705SXin Li
582*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_cvtepi64_ps(__m256i __A)583*67e74705SXin Li _mm256_cvtepi64_ps (__m256i __A) {
584*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
585*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
586*67e74705SXin Li (__mmask8) -1);
587*67e74705SXin Li }
588*67e74705SXin Li
589*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_mask_cvtepi64_ps(__m128 __W,__mmask8 __U,__m256i __A)590*67e74705SXin Li _mm256_mask_cvtepi64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
591*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
592*67e74705SXin Li (__v4sf) __W,
593*67e74705SXin Li (__mmask8) __U);
594*67e74705SXin Li }
595*67e74705SXin Li
596*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepi64_ps(__mmask8 __U,__m256i __A)597*67e74705SXin Li _mm256_maskz_cvtepi64_ps (__mmask8 __U, __m256i __A) {
598*67e74705SXin Li return (__m128) __builtin_ia32_cvtqq2ps256_mask ((__v4di) __A,
599*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
600*67e74705SXin Li (__mmask8) __U);
601*67e74705SXin Li }
602*67e74705SXin Li
603*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttpd_epi64(__m128d __A)604*67e74705SXin Li _mm_cvttpd_epi64 (__m128d __A) {
605*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
606*67e74705SXin Li (__v2di) _mm_setzero_si128(),
607*67e74705SXin Li (__mmask8) -1);
608*67e74705SXin Li }
609*67e74705SXin Li
610*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttpd_epi64(__m128i __W,__mmask8 __U,__m128d __A)611*67e74705SXin Li _mm_mask_cvttpd_epi64 (__m128i __W, __mmask8 __U, __m128d __A) {
612*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
613*67e74705SXin Li (__v2di) __W,
614*67e74705SXin Li (__mmask8) __U);
615*67e74705SXin Li }
616*67e74705SXin Li
617*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttpd_epi64(__mmask8 __U,__m128d __A)618*67e74705SXin Li _mm_maskz_cvttpd_epi64 (__mmask8 __U, __m128d __A) {
619*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2qq128_mask ((__v2df) __A,
620*67e74705SXin Li (__v2di) _mm_setzero_si128(),
621*67e74705SXin Li (__mmask8) __U);
622*67e74705SXin Li }
623*67e74705SXin Li
624*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvttpd_epi64(__m256d __A)625*67e74705SXin Li _mm256_cvttpd_epi64 (__m256d __A) {
626*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
627*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
628*67e74705SXin Li (__mmask8) -1);
629*67e74705SXin Li }
630*67e74705SXin Li
631*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttpd_epi64(__m256i __W,__mmask8 __U,__m256d __A)632*67e74705SXin Li _mm256_mask_cvttpd_epi64 (__m256i __W, __mmask8 __U, __m256d __A) {
633*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
634*67e74705SXin Li (__v4di) __W,
635*67e74705SXin Li (__mmask8) __U);
636*67e74705SXin Li }
637*67e74705SXin Li
638*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttpd_epi64(__mmask8 __U,__m256d __A)639*67e74705SXin Li _mm256_maskz_cvttpd_epi64 (__mmask8 __U, __m256d __A) {
640*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2qq256_mask ((__v4df) __A,
641*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
642*67e74705SXin Li (__mmask8) __U);
643*67e74705SXin Li }
644*67e74705SXin Li
645*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttpd_epu64(__m128d __A)646*67e74705SXin Li _mm_cvttpd_epu64 (__m128d __A) {
647*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
648*67e74705SXin Li (__v2di) _mm_setzero_si128(),
649*67e74705SXin Li (__mmask8) -1);
650*67e74705SXin Li }
651*67e74705SXin Li
652*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttpd_epu64(__m128i __W,__mmask8 __U,__m128d __A)653*67e74705SXin Li _mm_mask_cvttpd_epu64 (__m128i __W, __mmask8 __U, __m128d __A) {
654*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
655*67e74705SXin Li (__v2di) __W,
656*67e74705SXin Li (__mmask8) __U);
657*67e74705SXin Li }
658*67e74705SXin Li
659*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttpd_epu64(__mmask8 __U,__m128d __A)660*67e74705SXin Li _mm_maskz_cvttpd_epu64 (__mmask8 __U, __m128d __A) {
661*67e74705SXin Li return (__m128i) __builtin_ia32_cvttpd2uqq128_mask ((__v2df) __A,
662*67e74705SXin Li (__v2di) _mm_setzero_si128(),
663*67e74705SXin Li (__mmask8) __U);
664*67e74705SXin Li }
665*67e74705SXin Li
666*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvttpd_epu64(__m256d __A)667*67e74705SXin Li _mm256_cvttpd_epu64 (__m256d __A) {
668*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
669*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
670*67e74705SXin Li (__mmask8) -1);
671*67e74705SXin Li }
672*67e74705SXin Li
673*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttpd_epu64(__m256i __W,__mmask8 __U,__m256d __A)674*67e74705SXin Li _mm256_mask_cvttpd_epu64 (__m256i __W, __mmask8 __U, __m256d __A) {
675*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
676*67e74705SXin Li (__v4di) __W,
677*67e74705SXin Li (__mmask8) __U);
678*67e74705SXin Li }
679*67e74705SXin Li
680*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttpd_epu64(__mmask8 __U,__m256d __A)681*67e74705SXin Li _mm256_maskz_cvttpd_epu64 (__mmask8 __U, __m256d __A) {
682*67e74705SXin Li return (__m256i) __builtin_ia32_cvttpd2uqq256_mask ((__v4df) __A,
683*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
684*67e74705SXin Li (__mmask8) __U);
685*67e74705SXin Li }
686*67e74705SXin Li
687*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttps_epi64(__m128 __A)688*67e74705SXin Li _mm_cvttps_epi64 (__m128 __A) {
689*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
690*67e74705SXin Li (__v2di) _mm_setzero_si128(),
691*67e74705SXin Li (__mmask8) -1);
692*67e74705SXin Li }
693*67e74705SXin Li
694*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttps_epi64(__m128i __W,__mmask8 __U,__m128 __A)695*67e74705SXin Li _mm_mask_cvttps_epi64 (__m128i __W, __mmask8 __U, __m128 __A) {
696*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
697*67e74705SXin Li (__v2di) __W,
698*67e74705SXin Li (__mmask8) __U);
699*67e74705SXin Li }
700*67e74705SXin Li
701*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttps_epi64(__mmask8 __U,__m128 __A)702*67e74705SXin Li _mm_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
703*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2qq128_mask ((__v4sf) __A,
704*67e74705SXin Li (__v2di) _mm_setzero_si128(),
705*67e74705SXin Li (__mmask8) __U);
706*67e74705SXin Li }
707*67e74705SXin Li
708*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvttps_epi64(__m128 __A)709*67e74705SXin Li _mm256_cvttps_epi64 (__m128 __A) {
710*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
711*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
712*67e74705SXin Li (__mmask8) -1);
713*67e74705SXin Li }
714*67e74705SXin Li
715*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttps_epi64(__m256i __W,__mmask8 __U,__m128 __A)716*67e74705SXin Li _mm256_mask_cvttps_epi64 (__m256i __W, __mmask8 __U, __m128 __A) {
717*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
718*67e74705SXin Li (__v4di) __W,
719*67e74705SXin Li (__mmask8) __U);
720*67e74705SXin Li }
721*67e74705SXin Li
722*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttps_epi64(__mmask8 __U,__m128 __A)723*67e74705SXin Li _mm256_maskz_cvttps_epi64 (__mmask8 __U, __m128 __A) {
724*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2qq256_mask ((__v4sf) __A,
725*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
726*67e74705SXin Li (__mmask8) __U);
727*67e74705SXin Li }
728*67e74705SXin Li
729*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_cvttps_epu64(__m128 __A)730*67e74705SXin Li _mm_cvttps_epu64 (__m128 __A) {
731*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
732*67e74705SXin Li (__v2di) _mm_setzero_si128(),
733*67e74705SXin Li (__mmask8) -1);
734*67e74705SXin Li }
735*67e74705SXin Li
736*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_cvttps_epu64(__m128i __W,__mmask8 __U,__m128 __A)737*67e74705SXin Li _mm_mask_cvttps_epu64 (__m128i __W, __mmask8 __U, __m128 __A) {
738*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
739*67e74705SXin Li (__v2di) __W,
740*67e74705SXin Li (__mmask8) __U);
741*67e74705SXin Li }
742*67e74705SXin Li
743*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_cvttps_epu64(__mmask8 __U,__m128 __A)744*67e74705SXin Li _mm_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
745*67e74705SXin Li return (__m128i) __builtin_ia32_cvttps2uqq128_mask ((__v4sf) __A,
746*67e74705SXin Li (__v2di) _mm_setzero_si128(),
747*67e74705SXin Li (__mmask8) __U);
748*67e74705SXin Li }
749*67e74705SXin Li
750*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvttps_epu64(__m128 __A)751*67e74705SXin Li _mm256_cvttps_epu64 (__m128 __A) {
752*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
753*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
754*67e74705SXin Li (__mmask8) -1);
755*67e74705SXin Li }
756*67e74705SXin Li
757*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_cvttps_epu64(__m256i __W,__mmask8 __U,__m128 __A)758*67e74705SXin Li _mm256_mask_cvttps_epu64 (__m256i __W, __mmask8 __U, __m128 __A) {
759*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
760*67e74705SXin Li (__v4di) __W,
761*67e74705SXin Li (__mmask8) __U);
762*67e74705SXin Li }
763*67e74705SXin Li
764*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_cvttps_epu64(__mmask8 __U,__m128 __A)765*67e74705SXin Li _mm256_maskz_cvttps_epu64 (__mmask8 __U, __m128 __A) {
766*67e74705SXin Li return (__m256i) __builtin_ia32_cvttps2uqq256_mask ((__v4sf) __A,
767*67e74705SXin Li (__v4di) _mm256_setzero_si256(),
768*67e74705SXin Li (__mmask8) __U);
769*67e74705SXin Li }
770*67e74705SXin Li
771*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_cvtepu64_pd(__m128i __A)772*67e74705SXin Li _mm_cvtepu64_pd (__m128i __A) {
773*67e74705SXin Li return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
774*67e74705SXin Li (__v2df) _mm_setzero_pd(),
775*67e74705SXin Li (__mmask8) -1);
776*67e74705SXin Li }
777*67e74705SXin Li
778*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_mask_cvtepu64_pd(__m128d __W,__mmask8 __U,__m128i __A)779*67e74705SXin Li _mm_mask_cvtepu64_pd (__m128d __W, __mmask8 __U, __m128i __A) {
780*67e74705SXin Li return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
781*67e74705SXin Li (__v2df) __W,
782*67e74705SXin Li (__mmask8) __U);
783*67e74705SXin Li }
784*67e74705SXin Li
785*67e74705SXin Li static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu64_pd(__mmask8 __U,__m128i __A)786*67e74705SXin Li _mm_maskz_cvtepu64_pd (__mmask8 __U, __m128i __A) {
787*67e74705SXin Li return (__m128d) __builtin_ia32_cvtuqq2pd128_mask ((__v2di) __A,
788*67e74705SXin Li (__v2df) _mm_setzero_pd(),
789*67e74705SXin Li (__mmask8) __U);
790*67e74705SXin Li }
791*67e74705SXin Li
792*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_cvtepu64_pd(__m256i __A)793*67e74705SXin Li _mm256_cvtepu64_pd (__m256i __A) {
794*67e74705SXin Li return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
795*67e74705SXin Li (__v4df) _mm256_setzero_pd(),
796*67e74705SXin Li (__mmask8) -1);
797*67e74705SXin Li }
798*67e74705SXin Li
799*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu64_pd(__m256d __W,__mmask8 __U,__m256i __A)800*67e74705SXin Li _mm256_mask_cvtepu64_pd (__m256d __W, __mmask8 __U, __m256i __A) {
801*67e74705SXin Li return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
802*67e74705SXin Li (__v4df) __W,
803*67e74705SXin Li (__mmask8) __U);
804*67e74705SXin Li }
805*67e74705SXin Li
806*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu64_pd(__mmask8 __U,__m256i __A)807*67e74705SXin Li _mm256_maskz_cvtepu64_pd (__mmask8 __U, __m256i __A) {
808*67e74705SXin Li return (__m256d) __builtin_ia32_cvtuqq2pd256_mask ((__v4di) __A,
809*67e74705SXin Li (__v4df) _mm256_setzero_pd(),
810*67e74705SXin Li (__mmask8) __U);
811*67e74705SXin Li }
812*67e74705SXin Li
813*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_cvtepu64_ps(__m128i __A)814*67e74705SXin Li _mm_cvtepu64_ps (__m128i __A) {
815*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
816*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
817*67e74705SXin Li (__mmask8) -1);
818*67e74705SXin Li }
819*67e74705SXin Li
820*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_mask_cvtepu64_ps(__m128 __W,__mmask8 __U,__m128i __A)821*67e74705SXin Li _mm_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m128i __A) {
822*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
823*67e74705SXin Li (__v4sf) __W,
824*67e74705SXin Li (__mmask8) __U);
825*67e74705SXin Li }
826*67e74705SXin Li
827*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_maskz_cvtepu64_ps(__mmask8 __U,__m128i __A)828*67e74705SXin Li _mm_maskz_cvtepu64_ps (__mmask8 __U, __m128i __A) {
829*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps128_mask ((__v2di) __A,
830*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
831*67e74705SXin Li (__mmask8) __U);
832*67e74705SXin Li }
833*67e74705SXin Li
834*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_cvtepu64_ps(__m256i __A)835*67e74705SXin Li _mm256_cvtepu64_ps (__m256i __A) {
836*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
837*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
838*67e74705SXin Li (__mmask8) -1);
839*67e74705SXin Li }
840*67e74705SXin Li
841*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_mask_cvtepu64_ps(__m128 __W,__mmask8 __U,__m256i __A)842*67e74705SXin Li _mm256_mask_cvtepu64_ps (__m128 __W, __mmask8 __U, __m256i __A) {
843*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
844*67e74705SXin Li (__v4sf) __W,
845*67e74705SXin Li (__mmask8) __U);
846*67e74705SXin Li }
847*67e74705SXin Li
848*67e74705SXin Li static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm256_maskz_cvtepu64_ps(__mmask8 __U,__m256i __A)849*67e74705SXin Li _mm256_maskz_cvtepu64_ps (__mmask8 __U, __m256i __A) {
850*67e74705SXin Li return (__m128) __builtin_ia32_cvtuqq2ps256_mask ((__v4di) __A,
851*67e74705SXin Li (__v4sf) _mm_setzero_ps(),
852*67e74705SXin Li (__mmask8) __U);
853*67e74705SXin Li }
854*67e74705SXin Li
855*67e74705SXin Li #define _mm_range_pd(A, B, C) __extension__ ({ \
856*67e74705SXin Li (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
857*67e74705SXin Li (__v2df)(__m128d)(B), (int)(C), \
858*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
859*67e74705SXin Li (__mmask8)-1); })
860*67e74705SXin Li
861*67e74705SXin Li #define _mm_mask_range_pd(W, U, A, B, C) __extension__ ({ \
862*67e74705SXin Li (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
863*67e74705SXin Li (__v2df)(__m128d)(B), (int)(C), \
864*67e74705SXin Li (__v2df)(__m128d)(W), \
865*67e74705SXin Li (__mmask8)(U)); })
866*67e74705SXin Li
867*67e74705SXin Li #define _mm_maskz_range_pd(U, A, B, C) __extension__ ({ \
868*67e74705SXin Li (__m128d)__builtin_ia32_rangepd128_mask((__v2df)(__m128d)(A), \
869*67e74705SXin Li (__v2df)(__m128d)(B), (int)(C), \
870*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
871*67e74705SXin Li (__mmask8)(U)); })
872*67e74705SXin Li
873*67e74705SXin Li #define _mm256_range_pd(A, B, C) __extension__ ({ \
874*67e74705SXin Li (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
875*67e74705SXin Li (__v4df)(__m256d)(B), (int)(C), \
876*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
877*67e74705SXin Li (__mmask8)-1); })
878*67e74705SXin Li
879*67e74705SXin Li #define _mm256_mask_range_pd(W, U, A, B, C) __extension__ ({ \
880*67e74705SXin Li (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
881*67e74705SXin Li (__v4df)(__m256d)(B), (int)(C), \
882*67e74705SXin Li (__v4df)(__m256d)(W), \
883*67e74705SXin Li (__mmask8)(U)); })
884*67e74705SXin Li
885*67e74705SXin Li #define _mm256_maskz_range_pd(U, A, B, C) __extension__ ({ \
886*67e74705SXin Li (__m256d)__builtin_ia32_rangepd256_mask((__v4df)(__m256d)(A), \
887*67e74705SXin Li (__v4df)(__m256d)(B), (int)(C), \
888*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
889*67e74705SXin Li (__mmask8)(U)); })
890*67e74705SXin Li
891*67e74705SXin Li #define _mm_range_ps(A, B, C) __extension__ ({ \
892*67e74705SXin Li (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
893*67e74705SXin Li (__v4sf)(__m128)(B), (int)(C), \
894*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
895*67e74705SXin Li (__mmask8)-1); })
896*67e74705SXin Li
897*67e74705SXin Li #define _mm_mask_range_ps(W, U, A, B, C) __extension__ ({ \
898*67e74705SXin Li (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
899*67e74705SXin Li (__v4sf)(__m128)(B), (int)(C), \
900*67e74705SXin Li (__v4sf)(__m128)(W), (__mmask8)(U)); })
901*67e74705SXin Li
902*67e74705SXin Li #define _mm_maskz_range_ps(U, A, B, C) __extension__ ({ \
903*67e74705SXin Li (__m128)__builtin_ia32_rangeps128_mask((__v4sf)(__m128)(A), \
904*67e74705SXin Li (__v4sf)(__m128)(B), (int)(C), \
905*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
906*67e74705SXin Li (__mmask8)(U)); })
907*67e74705SXin Li
908*67e74705SXin Li #define _mm256_range_ps(A, B, C) __extension__ ({ \
909*67e74705SXin Li (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
910*67e74705SXin Li (__v8sf)(__m256)(B), (int)(C), \
911*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
912*67e74705SXin Li (__mmask8)-1); })
913*67e74705SXin Li
914*67e74705SXin Li #define _mm256_mask_range_ps(W, U, A, B, C) __extension__ ({ \
915*67e74705SXin Li (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
916*67e74705SXin Li (__v8sf)(__m256)(B), (int)(C), \
917*67e74705SXin Li (__v8sf)(__m256)(W), (__mmask8)(U)); })
918*67e74705SXin Li
919*67e74705SXin Li #define _mm256_maskz_range_ps(U, A, B, C) __extension__ ({ \
920*67e74705SXin Li (__m256)__builtin_ia32_rangeps256_mask((__v8sf)(__m256)(A), \
921*67e74705SXin Li (__v8sf)(__m256)(B), (int)(C), \
922*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
923*67e74705SXin Li (__mmask8)(U)); })
924*67e74705SXin Li
925*67e74705SXin Li #define _mm_reduce_pd(A, B) __extension__ ({ \
926*67e74705SXin Li (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
927*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
928*67e74705SXin Li (__mmask8)-1); })
929*67e74705SXin Li
930*67e74705SXin Li #define _mm_mask_reduce_pd(W, U, A, B) __extension__ ({ \
931*67e74705SXin Li (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
932*67e74705SXin Li (__v2df)(__m128d)(W), \
933*67e74705SXin Li (__mmask8)(U)); })
934*67e74705SXin Li
935*67e74705SXin Li #define _mm_maskz_reduce_pd(U, A, B) __extension__ ({ \
936*67e74705SXin Li (__m128d)__builtin_ia32_reducepd128_mask((__v2df)(__m128d)(A), (int)(B), \
937*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
938*67e74705SXin Li (__mmask8)(U)); })
939*67e74705SXin Li
940*67e74705SXin Li #define _mm256_reduce_pd(A, B) __extension__ ({ \
941*67e74705SXin Li (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
942*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
943*67e74705SXin Li (__mmask8)-1); })
944*67e74705SXin Li
945*67e74705SXin Li #define _mm256_mask_reduce_pd(W, U, A, B) __extension__ ({ \
946*67e74705SXin Li (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
947*67e74705SXin Li (__v4df)(__m256d)(W), \
948*67e74705SXin Li (__mmask8)(U)); })
949*67e74705SXin Li
950*67e74705SXin Li #define _mm256_maskz_reduce_pd(U, A, B) __extension__ ({ \
951*67e74705SXin Li (__m256d)__builtin_ia32_reducepd256_mask((__v4df)(__m256d)(A), (int)(B), \
952*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
953*67e74705SXin Li (__mmask8)(U)); })
954*67e74705SXin Li
955*67e74705SXin Li #define _mm_reduce_ps(A, B) __extension__ ({ \
956*67e74705SXin Li (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
957*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
958*67e74705SXin Li (__mmask8)-1); })
959*67e74705SXin Li
960*67e74705SXin Li #define _mm_mask_reduce_ps(W, U, A, B) __extension__ ({ \
961*67e74705SXin Li (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
962*67e74705SXin Li (__v4sf)(__m128)(W), \
963*67e74705SXin Li (__mmask8)(U)); })
964*67e74705SXin Li
965*67e74705SXin Li #define _mm_maskz_reduce_ps(U, A, B) __extension__ ({ \
966*67e74705SXin Li (__m128)__builtin_ia32_reduceps128_mask((__v4sf)(__m128)(A), (int)(B), \
967*67e74705SXin Li (__v4sf)_mm_setzero_ps(), \
968*67e74705SXin Li (__mmask8)(U)); })
969*67e74705SXin Li
970*67e74705SXin Li #define _mm256_reduce_ps(A, B) __extension__ ({ \
971*67e74705SXin Li (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
972*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
973*67e74705SXin Li (__mmask8)-1); })
974*67e74705SXin Li
975*67e74705SXin Li #define _mm256_mask_reduce_ps(W, U, A, B) __extension__ ({ \
976*67e74705SXin Li (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
977*67e74705SXin Li (__v8sf)(__m256)(W), \
978*67e74705SXin Li (__mmask8)(U)); })
979*67e74705SXin Li
980*67e74705SXin Li #define _mm256_maskz_reduce_ps(U, A, B) __extension__ ({ \
981*67e74705SXin Li (__m256)__builtin_ia32_reduceps256_mask((__v8sf)(__m256)(A), (int)(B), \
982*67e74705SXin Li (__v8sf)_mm256_setzero_ps(), \
983*67e74705SXin Li (__mmask8)(U)); })
984*67e74705SXin Li
985*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_movepi32_mask(__m128i __A)986*67e74705SXin Li _mm_movepi32_mask (__m128i __A)
987*67e74705SXin Li {
988*67e74705SXin Li return (__mmask8) __builtin_ia32_cvtd2mask128 ((__v4si) __A);
989*67e74705SXin Li }
990*67e74705SXin Li
991*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_movepi32_mask(__m256i __A)992*67e74705SXin Li _mm256_movepi32_mask (__m256i __A)
993*67e74705SXin Li {
994*67e74705SXin Li return (__mmask8) __builtin_ia32_cvtd2mask256 ((__v8si) __A);
995*67e74705SXin Li }
996*67e74705SXin Li
997*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_movm_epi32(__mmask8 __A)998*67e74705SXin Li _mm_movm_epi32 (__mmask8 __A)
999*67e74705SXin Li {
1000*67e74705SXin Li return (__m128i) __builtin_ia32_cvtmask2d128 (__A);
1001*67e74705SXin Li }
1002*67e74705SXin Li
1003*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_movm_epi32(__mmask8 __A)1004*67e74705SXin Li _mm256_movm_epi32 (__mmask8 __A)
1005*67e74705SXin Li {
1006*67e74705SXin Li return (__m256i) __builtin_ia32_cvtmask2d256 (__A);
1007*67e74705SXin Li }
1008*67e74705SXin Li
1009*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_movm_epi64(__mmask8 __A)1010*67e74705SXin Li _mm_movm_epi64 (__mmask8 __A)
1011*67e74705SXin Li {
1012*67e74705SXin Li return (__m128i) __builtin_ia32_cvtmask2q128 (__A);
1013*67e74705SXin Li }
1014*67e74705SXin Li
1015*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_movm_epi64(__mmask8 __A)1016*67e74705SXin Li _mm256_movm_epi64 (__mmask8 __A)
1017*67e74705SXin Li {
1018*67e74705SXin Li return (__m256i) __builtin_ia32_cvtmask2q256 (__A);
1019*67e74705SXin Li }
1020*67e74705SXin Li
1021*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm_movepi64_mask(__m128i __A)1022*67e74705SXin Li _mm_movepi64_mask (__m128i __A)
1023*67e74705SXin Li {
1024*67e74705SXin Li return (__mmask8) __builtin_ia32_cvtq2mask128 ((__v2di) __A);
1025*67e74705SXin Li }
1026*67e74705SXin Li
1027*67e74705SXin Li static __inline__ __mmask8 __DEFAULT_FN_ATTRS
_mm256_movepi64_mask(__m256i __A)1028*67e74705SXin Li _mm256_movepi64_mask (__m256i __A)
1029*67e74705SXin Li {
1030*67e74705SXin Li return (__mmask8) __builtin_ia32_cvtq2mask256 ((__v4di) __A);
1031*67e74705SXin Li }
1032*67e74705SXin Li
1033*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_broadcast_f32x2(__m128 __A)1034*67e74705SXin Li _mm256_broadcast_f32x2 (__m128 __A)
1035*67e74705SXin Li {
1036*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
1037*67e74705SXin Li (__v8sf)_mm256_undefined_ps(),
1038*67e74705SXin Li (__mmask8) -1);
1039*67e74705SXin Li }
1040*67e74705SXin Li
1041*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_f32x2(__m256 __O,__mmask8 __M,__m128 __A)1042*67e74705SXin Li _mm256_mask_broadcast_f32x2 (__m256 __O, __mmask8 __M, __m128 __A)
1043*67e74705SXin Li {
1044*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
1045*67e74705SXin Li (__v8sf) __O,
1046*67e74705SXin Li __M);
1047*67e74705SXin Li }
1048*67e74705SXin Li
1049*67e74705SXin Li static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_f32x2(__mmask8 __M,__m128 __A)1050*67e74705SXin Li _mm256_maskz_broadcast_f32x2 (__mmask8 __M, __m128 __A)
1051*67e74705SXin Li {
1052*67e74705SXin Li return (__m256) __builtin_ia32_broadcastf32x2_256_mask ((__v4sf) __A,
1053*67e74705SXin Li (__v8sf) _mm256_setzero_ps (),
1054*67e74705SXin Li __M);
1055*67e74705SXin Li }
1056*67e74705SXin Li
1057*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_broadcast_f64x2(__m128d __A)1058*67e74705SXin Li _mm256_broadcast_f64x2 (__m128d __A)
1059*67e74705SXin Li {
1060*67e74705SXin Li return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1061*67e74705SXin Li (__v4df)_mm256_undefined_pd(),
1062*67e74705SXin Li (__mmask8) -1);
1063*67e74705SXin Li }
1064*67e74705SXin Li
1065*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_f64x2(__m256d __O,__mmask8 __M,__m128d __A)1066*67e74705SXin Li _mm256_mask_broadcast_f64x2 (__m256d __O, __mmask8 __M, __m128d __A)
1067*67e74705SXin Li {
1068*67e74705SXin Li return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1069*67e74705SXin Li (__v4df) __O,
1070*67e74705SXin Li __M);
1071*67e74705SXin Li }
1072*67e74705SXin Li
1073*67e74705SXin Li static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_f64x2(__mmask8 __M,__m128d __A)1074*67e74705SXin Li _mm256_maskz_broadcast_f64x2 (__mmask8 __M, __m128d __A)
1075*67e74705SXin Li {
1076*67e74705SXin Li return (__m256d) __builtin_ia32_broadcastf64x2_256_mask ((__v2df) __A,
1077*67e74705SXin Li (__v4df) _mm256_setzero_ps (),
1078*67e74705SXin Li __M);
1079*67e74705SXin Li }
1080*67e74705SXin Li
1081*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_broadcast_i32x2(__m128i __A)1082*67e74705SXin Li _mm_broadcast_i32x2 (__m128i __A)
1083*67e74705SXin Li {
1084*67e74705SXin Li return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1085*67e74705SXin Li (__v4si)_mm_undefined_si128(),
1086*67e74705SXin Li (__mmask8) -1);
1087*67e74705SXin Li }
1088*67e74705SXin Li
1089*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_mask_broadcast_i32x2(__m128i __O,__mmask8 __M,__m128i __A)1090*67e74705SXin Li _mm_mask_broadcast_i32x2 (__m128i __O, __mmask8 __M, __m128i __A)
1091*67e74705SXin Li {
1092*67e74705SXin Li return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1093*67e74705SXin Li (__v4si) __O,
1094*67e74705SXin Li __M);
1095*67e74705SXin Li }
1096*67e74705SXin Li
1097*67e74705SXin Li static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskz_broadcast_i32x2(__mmask8 __M,__m128i __A)1098*67e74705SXin Li _mm_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1099*67e74705SXin Li {
1100*67e74705SXin Li return (__m128i) __builtin_ia32_broadcasti32x2_128_mask ((__v4si) __A,
1101*67e74705SXin Li (__v4si) _mm_setzero_si128 (),
1102*67e74705SXin Li __M);
1103*67e74705SXin Li }
1104*67e74705SXin Li
1105*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcast_i32x2(__m128i __A)1106*67e74705SXin Li _mm256_broadcast_i32x2 (__m128i __A)
1107*67e74705SXin Li {
1108*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1109*67e74705SXin Li (__v8si)_mm256_undefined_si256(),
1110*67e74705SXin Li (__mmask8) -1);
1111*67e74705SXin Li }
1112*67e74705SXin Li
1113*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_i32x2(__m256i __O,__mmask8 __M,__m128i __A)1114*67e74705SXin Li _mm256_mask_broadcast_i32x2 (__m256i __O, __mmask8 __M, __m128i __A)
1115*67e74705SXin Li {
1116*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1117*67e74705SXin Li (__v8si) __O,
1118*67e74705SXin Li __M);
1119*67e74705SXin Li }
1120*67e74705SXin Li
1121*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_i32x2(__mmask8 __M,__m128i __A)1122*67e74705SXin Li _mm256_maskz_broadcast_i32x2 (__mmask8 __M, __m128i __A)
1123*67e74705SXin Li {
1124*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti32x2_256_mask ((__v4si) __A,
1125*67e74705SXin Li (__v8si) _mm256_setzero_si256 (),
1126*67e74705SXin Li __M);
1127*67e74705SXin Li }
1128*67e74705SXin Li
1129*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcast_i64x2(__m128i __A)1130*67e74705SXin Li _mm256_broadcast_i64x2 (__m128i __A)
1131*67e74705SXin Li {
1132*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1133*67e74705SXin Li (__v4di)_mm256_undefined_si256(),
1134*67e74705SXin Li (__mmask8) -1);
1135*67e74705SXin Li }
1136*67e74705SXin Li
1137*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mask_broadcast_i64x2(__m256i __O,__mmask8 __M,__m128i __A)1138*67e74705SXin Li _mm256_mask_broadcast_i64x2 (__m256i __O, __mmask8 __M, __m128i __A)
1139*67e74705SXin Li {
1140*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1141*67e74705SXin Li (__v4di) __O,
1142*67e74705SXin Li __M);
1143*67e74705SXin Li }
1144*67e74705SXin Li
1145*67e74705SXin Li static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskz_broadcast_i64x2(__mmask8 __M,__m128i __A)1146*67e74705SXin Li _mm256_maskz_broadcast_i64x2 (__mmask8 __M, __m128i __A)
1147*67e74705SXin Li {
1148*67e74705SXin Li return (__m256i) __builtin_ia32_broadcasti64x2_256_mask ((__v2di) __A,
1149*67e74705SXin Li (__v4di) _mm256_setzero_si256 (),
1150*67e74705SXin Li __M);
1151*67e74705SXin Li }
1152*67e74705SXin Li
1153*67e74705SXin Li #define _mm256_extractf64x2_pd(A, imm) __extension__ ({ \
1154*67e74705SXin Li (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1155*67e74705SXin Li (int)(imm), \
1156*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
1157*67e74705SXin Li (__mmask8)-1); })
1158*67e74705SXin Li
1159*67e74705SXin Li #define _mm256_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1160*67e74705SXin Li (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1161*67e74705SXin Li (int)(imm), \
1162*67e74705SXin Li (__v2df)(__m128d)(W), \
1163*67e74705SXin Li (__mmask8)(U)); })
1164*67e74705SXin Li
1165*67e74705SXin Li #define _mm256_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1166*67e74705SXin Li (__m128d)__builtin_ia32_extractf64x2_256_mask((__v4df)(__m256d)(A), \
1167*67e74705SXin Li (int)(imm), \
1168*67e74705SXin Li (__v2df)_mm_setzero_pd(), \
1169*67e74705SXin Li (__mmask8)(U)); })
1170*67e74705SXin Li
1171*67e74705SXin Li #define _mm256_extracti64x2_epi64(A, imm) __extension__ ({ \
1172*67e74705SXin Li (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1173*67e74705SXin Li (int)(imm), \
1174*67e74705SXin Li (__v2di)_mm_setzero_di(), \
1175*67e74705SXin Li (__mmask8)-1); })
1176*67e74705SXin Li
1177*67e74705SXin Li #define _mm256_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1178*67e74705SXin Li (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1179*67e74705SXin Li (int)(imm), \
1180*67e74705SXin Li (__v2di)(__m128i)(W), \
1181*67e74705SXin Li (__mmask8)(U)); })
1182*67e74705SXin Li
1183*67e74705SXin Li #define _mm256_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1184*67e74705SXin Li (__m128i)__builtin_ia32_extracti64x2_256_mask((__v4di)(__m256i)(A), \
1185*67e74705SXin Li (int)(imm), \
1186*67e74705SXin Li (__v2di)_mm_setzero_di(), \
1187*67e74705SXin Li (__mmask8)(U)); })
1188*67e74705SXin Li
1189*67e74705SXin Li #define _mm256_insertf64x2(A, B, imm) __extension__ ({ \
1190*67e74705SXin Li (__m256d)__builtin_ia32_insertf64x2_256_mask((__v4df)(__m256d)(A), \
1191*67e74705SXin Li (__v2df)(__m128d)(B), \
1192*67e74705SXin Li (int)(imm), \
1193*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
1194*67e74705SXin Li (__mmask8)-1); })
1195*67e74705SXin Li
1196*67e74705SXin Li #define _mm256_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1197*67e74705SXin Li (__m256d)__builtin_ia32_insertf64x2_256_mask((__v4df)(__m256d)(A), \
1198*67e74705SXin Li (__v2df)(__m128d)(B), \
1199*67e74705SXin Li (int)(imm), \
1200*67e74705SXin Li (__v4df)(__m256d)(W), \
1201*67e74705SXin Li (__mmask8)(U)); })
1202*67e74705SXin Li
1203*67e74705SXin Li #define _mm256_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1204*67e74705SXin Li (__m256d)__builtin_ia32_insertf64x2_256_mask((__v4df)(__m256d)(A), \
1205*67e74705SXin Li (__v2df)(__m128d)(B), \
1206*67e74705SXin Li (int)(imm), \
1207*67e74705SXin Li (__v4df)_mm256_setzero_pd(), \
1208*67e74705SXin Li (__mmask8)(U)); })
1209*67e74705SXin Li
1210*67e74705SXin Li #define _mm256_inserti64x2(A, B, imm) __extension__ ({ \
1211*67e74705SXin Li (__m256i)__builtin_ia32_inserti64x2_256_mask((__v4di)(__m256i)(A), \
1212*67e74705SXin Li (__v2di)(__m128i)(B), \
1213*67e74705SXin Li (int)(imm), \
1214*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
1215*67e74705SXin Li (__mmask8)-1); })
1216*67e74705SXin Li
1217*67e74705SXin Li #define _mm256_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1218*67e74705SXin Li (__m256i)__builtin_ia32_inserti64x2_256_mask((__v4di)(__m256i)(A), \
1219*67e74705SXin Li (__v2di)(__m128i)(B), \
1220*67e74705SXin Li (int)(imm), \
1221*67e74705SXin Li (__v4di)(__m256i)(W), \
1222*67e74705SXin Li (__mmask8)(U)); })
1223*67e74705SXin Li
1224*67e74705SXin Li #define _mm256_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1225*67e74705SXin Li (__m256i)__builtin_ia32_inserti64x2_256_mask((__v4di)(__m256i)(A), \
1226*67e74705SXin Li (__v2di)(__m128i)(B), \
1227*67e74705SXin Li (int)(imm), \
1228*67e74705SXin Li (__v4di)_mm256_setzero_si256(), \
1229*67e74705SXin Li (__mmask8)(U)); })
1230*67e74705SXin Li
1231*67e74705SXin Li #define _mm_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1232*67e74705SXin Li (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
1233*67e74705SXin Li (__mmask8)(U)); })
1234*67e74705SXin Li
1235*67e74705SXin Li #define _mm_fpclass_pd_mask(A, imm) __extension__ ({ \
1236*67e74705SXin Li (__mmask8)__builtin_ia32_fpclasspd128_mask((__v2df)(__m128d)(A), (int)(imm), \
1237*67e74705SXin Li (__mmask8)-1); })
1238*67e74705SXin Li
1239*67e74705SXin Li #define _mm256_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1240*67e74705SXin Li (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
1241*67e74705SXin Li (__mmask8)(U)); })
1242*67e74705SXin Li
1243*67e74705SXin Li #define _mm256_fpclass_pd_mask(A, imm) __extension__ ({ \
1244*67e74705SXin Li (__mmask8)__builtin_ia32_fpclasspd256_mask((__v4df)(__m256d)(A), (int)(imm), \
1245*67e74705SXin Li (__mmask8)-1); })
1246*67e74705SXin Li
1247*67e74705SXin Li #define _mm_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1248*67e74705SXin Li (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
1249*67e74705SXin Li (__mmask8)(U)); })
1250*67e74705SXin Li
1251*67e74705SXin Li #define _mm_fpclass_ps_mask(A, imm) __extension__ ({ \
1252*67e74705SXin Li (__mmask8)__builtin_ia32_fpclassps128_mask((__v4sf)(__m128)(A), (int)(imm), \
1253*67e74705SXin Li (__mmask8)-1); })
1254*67e74705SXin Li
1255*67e74705SXin Li #define _mm256_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1256*67e74705SXin Li (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
1257*67e74705SXin Li (__mmask8)(U)); })
1258*67e74705SXin Li
1259*67e74705SXin Li #define _mm256_fpclass_ps_mask(A, imm) __extension__ ({ \
1260*67e74705SXin Li (__mmask8)__builtin_ia32_fpclassps256_mask((__v8sf)(__m256)(A), (int)(imm), \
1261*67e74705SXin Li (__mmask8)-1); })
1262*67e74705SXin Li
1263*67e74705SXin Li #undef __DEFAULT_FN_ATTRS
1264*67e74705SXin Li
1265*67e74705SXin Li #endif
1266