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