1 /*===---- avx512dqintrin.h - AVX512DQ intrinsics ---------------------------===
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 *===-----------------------------------------------------------------------===
25 #error "Never use <avx512dqintrin.h> directly; include <immintrin.h> instead."
28 #ifndef __AVX512DQINTRIN_H
29 #define __AVX512DQINTRIN_H
31 /* Define the default attributes for the functions in this file. */
32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512dq")))
34 static __inline__ __m512i __DEFAULT_FN_ATTRS
35 _mm512_mullo_epi64 (__m512i __A
, __m512i __B
) {
36 return (__m512i
) ((__v8du
) __A
* (__v8du
) __B
);
39 static __inline__ __m512i __DEFAULT_FN_ATTRS
40 _mm512_mask_mullo_epi64 (__m512i __W
, __mmask8 __U
, __m512i __A
, __m512i __B
) {
41 return (__m512i
) __builtin_ia32_pmullq512_mask ((__v8di
) __A
,
47 static __inline__ __m512i __DEFAULT_FN_ATTRS
48 _mm512_maskz_mullo_epi64 (__mmask8 __U
, __m512i __A
, __m512i __B
) {
49 return (__m512i
) __builtin_ia32_pmullq512_mask ((__v8di
) __A
,
52 _mm512_setzero_si512 (),
56 static __inline__ __m512d __DEFAULT_FN_ATTRS
57 _mm512_xor_pd (__m512d __A
, __m512d __B
) {
58 return (__m512d
) ((__v8du
) __A
^ (__v8du
) __B
);
61 static __inline__ __m512d __DEFAULT_FN_ATTRS
62 _mm512_mask_xor_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
63 return (__m512d
) __builtin_ia32_xorpd512_mask ((__v8df
) __A
,
69 static __inline__ __m512d __DEFAULT_FN_ATTRS
70 _mm512_maskz_xor_pd (__mmask8 __U
, __m512d __A
, __m512d __B
) {
71 return (__m512d
) __builtin_ia32_xorpd512_mask ((__v8df
) __A
,
78 static __inline__ __m512 __DEFAULT_FN_ATTRS
79 _mm512_xor_ps (__m512 __A
, __m512 __B
) {
80 return (__m512
) ((__v16su
) __A
^ (__v16su
) __B
);
83 static __inline__ __m512 __DEFAULT_FN_ATTRS
84 _mm512_mask_xor_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
85 return (__m512
) __builtin_ia32_xorps512_mask ((__v16sf
) __A
,
91 static __inline__ __m512 __DEFAULT_FN_ATTRS
92 _mm512_maskz_xor_ps (__mmask16 __U
, __m512 __A
, __m512 __B
) {
93 return (__m512
) __builtin_ia32_xorps512_mask ((__v16sf
) __A
,
100 static __inline__ __m512d __DEFAULT_FN_ATTRS
101 _mm512_or_pd (__m512d __A
, __m512d __B
) {
102 return (__m512d
) ((__v8du
) __A
| (__v8du
) __B
);
105 static __inline__ __m512d __DEFAULT_FN_ATTRS
106 _mm512_mask_or_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
107 return (__m512d
) __builtin_ia32_orpd512_mask ((__v8df
) __A
,
113 static __inline__ __m512d __DEFAULT_FN_ATTRS
114 _mm512_maskz_or_pd (__mmask8 __U
, __m512d __A
, __m512d __B
) {
115 return (__m512d
) __builtin_ia32_orpd512_mask ((__v8df
) __A
,
118 _mm512_setzero_pd (),
122 static __inline__ __m512 __DEFAULT_FN_ATTRS
123 _mm512_or_ps (__m512 __A
, __m512 __B
) {
124 return (__m512
) ((__v16su
) __A
| (__v16su
) __B
);
127 static __inline__ __m512 __DEFAULT_FN_ATTRS
128 _mm512_mask_or_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
129 return (__m512
) __builtin_ia32_orps512_mask ((__v16sf
) __A
,
135 static __inline__ __m512 __DEFAULT_FN_ATTRS
136 _mm512_maskz_or_ps (__mmask16 __U
, __m512 __A
, __m512 __B
) {
137 return (__m512
) __builtin_ia32_orps512_mask ((__v16sf
) __A
,
140 _mm512_setzero_ps (),
144 static __inline__ __m512d __DEFAULT_FN_ATTRS
145 _mm512_and_pd (__m512d __A
, __m512d __B
) {
146 return (__m512d
) ((__v8du
) __A
& (__v8du
) __B
);
149 static __inline__ __m512d __DEFAULT_FN_ATTRS
150 _mm512_mask_and_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
151 return (__m512d
) __builtin_ia32_andpd512_mask ((__v8df
) __A
,
157 static __inline__ __m512d __DEFAULT_FN_ATTRS
158 _mm512_maskz_and_pd (__mmask8 __U
, __m512d __A
, __m512d __B
) {
159 return (__m512d
) __builtin_ia32_andpd512_mask ((__v8df
) __A
,
162 _mm512_setzero_pd (),
166 static __inline__ __m512 __DEFAULT_FN_ATTRS
167 _mm512_and_ps (__m512 __A
, __m512 __B
) {
168 return (__m512
) ((__v16su
) __A
& (__v16su
) __B
);
171 static __inline__ __m512 __DEFAULT_FN_ATTRS
172 _mm512_mask_and_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
173 return (__m512
) __builtin_ia32_andps512_mask ((__v16sf
) __A
,
179 static __inline__ __m512 __DEFAULT_FN_ATTRS
180 _mm512_maskz_and_ps (__mmask16 __U
, __m512 __A
, __m512 __B
) {
181 return (__m512
) __builtin_ia32_andps512_mask ((__v16sf
) __A
,
184 _mm512_setzero_ps (),
188 static __inline__ __m512d __DEFAULT_FN_ATTRS
189 _mm512_andnot_pd (__m512d __A
, __m512d __B
) {
190 return (__m512d
) __builtin_ia32_andnpd512_mask ((__v8df
) __A
,
193 _mm512_setzero_pd (),
197 static __inline__ __m512d __DEFAULT_FN_ATTRS
198 _mm512_mask_andnot_pd (__m512d __W
, __mmask8 __U
, __m512d __A
, __m512d __B
) {
199 return (__m512d
) __builtin_ia32_andnpd512_mask ((__v8df
) __A
,
205 static __inline__ __m512d __DEFAULT_FN_ATTRS
206 _mm512_maskz_andnot_pd (__mmask8 __U
, __m512d __A
, __m512d __B
) {
207 return (__m512d
) __builtin_ia32_andnpd512_mask ((__v8df
) __A
,
210 _mm512_setzero_pd (),
214 static __inline__ __m512 __DEFAULT_FN_ATTRS
215 _mm512_andnot_ps (__m512 __A
, __m512 __B
) {
216 return (__m512
) __builtin_ia32_andnps512_mask ((__v16sf
) __A
,
219 _mm512_setzero_ps (),
223 static __inline__ __m512 __DEFAULT_FN_ATTRS
224 _mm512_mask_andnot_ps (__m512 __W
, __mmask16 __U
, __m512 __A
, __m512 __B
) {
225 return (__m512
) __builtin_ia32_andnps512_mask ((__v16sf
) __A
,
231 static __inline__ __m512 __DEFAULT_FN_ATTRS
232 _mm512_maskz_andnot_ps (__mmask16 __U
, __m512 __A
, __m512 __B
) {
233 return (__m512
) __builtin_ia32_andnps512_mask ((__v16sf
) __A
,
236 _mm512_setzero_ps (),
240 static __inline__ __m512i __DEFAULT_FN_ATTRS
241 _mm512_cvtpd_epi64 (__m512d __A
) {
242 return (__m512i
) __builtin_ia32_cvtpd2qq512_mask ((__v8df
) __A
,
243 (__v8di
) _mm512_setzero_si512(),
245 _MM_FROUND_CUR_DIRECTION
);
248 static __inline__ __m512i __DEFAULT_FN_ATTRS
249 _mm512_mask_cvtpd_epi64 (__m512i __W
, __mmask8 __U
, __m512d __A
) {
250 return (__m512i
) __builtin_ia32_cvtpd2qq512_mask ((__v8df
) __A
,
253 _MM_FROUND_CUR_DIRECTION
);
256 static __inline__ __m512i __DEFAULT_FN_ATTRS
257 _mm512_maskz_cvtpd_epi64 (__mmask8 __U
, __m512d __A
) {
258 return (__m512i
) __builtin_ia32_cvtpd2qq512_mask ((__v8df
) __A
,
259 (__v8di
) _mm512_setzero_si512(),
261 _MM_FROUND_CUR_DIRECTION
);
264 #define _mm512_cvt_roundpd_epi64(A, R) __extension__ ({ \
265 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
266 (__v8di)_mm512_setzero_si512(), \
267 (__mmask8)-1, (int)(R)); })
269 #define _mm512_mask_cvt_roundpd_epi64(W, U, A, R) __extension__ ({ \
270 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
271 (__v8di)(__m512i)(W), \
272 (__mmask8)(U), (int)(R)); })
274 #define _mm512_maskz_cvt_roundpd_epi64(U, A, R) __extension__ ({ \
275 (__m512i)__builtin_ia32_cvtpd2qq512_mask((__v8df)(__m512d)(A), \
276 (__v8di)_mm512_setzero_si512(), \
277 (__mmask8)(U), (int)(R)); })
279 static __inline__ __m512i __DEFAULT_FN_ATTRS
280 _mm512_cvtpd_epu64 (__m512d __A
) {
281 return (__m512i
) __builtin_ia32_cvtpd2uqq512_mask ((__v8df
) __A
,
282 (__v8di
) _mm512_setzero_si512(),
284 _MM_FROUND_CUR_DIRECTION
);
287 static __inline__ __m512i __DEFAULT_FN_ATTRS
288 _mm512_mask_cvtpd_epu64 (__m512i __W
, __mmask8 __U
, __m512d __A
) {
289 return (__m512i
) __builtin_ia32_cvtpd2uqq512_mask ((__v8df
) __A
,
292 _MM_FROUND_CUR_DIRECTION
);
295 static __inline__ __m512i __DEFAULT_FN_ATTRS
296 _mm512_maskz_cvtpd_epu64 (__mmask8 __U
, __m512d __A
) {
297 return (__m512i
) __builtin_ia32_cvtpd2uqq512_mask ((__v8df
) __A
,
298 (__v8di
) _mm512_setzero_si512(),
300 _MM_FROUND_CUR_DIRECTION
);
303 #define _mm512_cvt_roundpd_epu64(A, R) __extension__ ({ \
304 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
305 (__v8di)_mm512_setzero_si512(), \
306 (__mmask8)-1, (int)(R)); })
308 #define _mm512_mask_cvt_roundpd_epu64(W, U, A, R) __extension__ ({ \
309 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
310 (__v8di)(__m512i)(W), \
311 (__mmask8)(U), (int)(R)); })
313 #define _mm512_maskz_cvt_roundpd_epu64(U, A, R) __extension__ ({ \
314 (__m512i)__builtin_ia32_cvtpd2uqq512_mask((__v8df)(__m512d)(A), \
315 (__v8di)_mm512_setzero_si512(), \
316 (__mmask8)(U), (int)(R)); })
318 static __inline__ __m512i __DEFAULT_FN_ATTRS
319 _mm512_cvtps_epi64 (__m256 __A
) {
320 return (__m512i
) __builtin_ia32_cvtps2qq512_mask ((__v8sf
) __A
,
321 (__v8di
) _mm512_setzero_si512(),
323 _MM_FROUND_CUR_DIRECTION
);
326 static __inline__ __m512i __DEFAULT_FN_ATTRS
327 _mm512_mask_cvtps_epi64 (__m512i __W
, __mmask8 __U
, __m256 __A
) {
328 return (__m512i
) __builtin_ia32_cvtps2qq512_mask ((__v8sf
) __A
,
331 _MM_FROUND_CUR_DIRECTION
);
334 static __inline__ __m512i __DEFAULT_FN_ATTRS
335 _mm512_maskz_cvtps_epi64 (__mmask8 __U
, __m256 __A
) {
336 return (__m512i
) __builtin_ia32_cvtps2qq512_mask ((__v8sf
) __A
,
337 (__v8di
) _mm512_setzero_si512(),
339 _MM_FROUND_CUR_DIRECTION
);
342 #define _mm512_cvt_roundps_epi64(A, R) __extension__ ({ \
343 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
344 (__v8di)_mm512_setzero_si512(), \
345 (__mmask8)-1, (int)(R)); })
347 #define _mm512_mask_cvt_roundps_epi64(W, U, A, R) __extension__ ({ \
348 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
349 (__v8di)(__m512i)(W), \
350 (__mmask8)(U), (int)(R)); })
352 #define _mm512_maskz_cvt_roundps_epi64(U, A, R) __extension__ ({ \
353 (__m512i)__builtin_ia32_cvtps2qq512_mask((__v8sf)(__m256)(A), \
354 (__v8di)_mm512_setzero_si512(), \
355 (__mmask8)(U), (int)(R)); })
357 static __inline__ __m512i __DEFAULT_FN_ATTRS
358 _mm512_cvtps_epu64 (__m256 __A
) {
359 return (__m512i
) __builtin_ia32_cvtps2uqq512_mask ((__v8sf
) __A
,
360 (__v8di
) _mm512_setzero_si512(),
362 _MM_FROUND_CUR_DIRECTION
);
365 static __inline__ __m512i __DEFAULT_FN_ATTRS
366 _mm512_mask_cvtps_epu64 (__m512i __W
, __mmask8 __U
, __m256 __A
) {
367 return (__m512i
) __builtin_ia32_cvtps2uqq512_mask ((__v8sf
) __A
,
370 _MM_FROUND_CUR_DIRECTION
);
373 static __inline__ __m512i __DEFAULT_FN_ATTRS
374 _mm512_maskz_cvtps_epu64 (__mmask8 __U
, __m256 __A
) {
375 return (__m512i
) __builtin_ia32_cvtps2uqq512_mask ((__v8sf
) __A
,
376 (__v8di
) _mm512_setzero_si512(),
378 _MM_FROUND_CUR_DIRECTION
);
381 #define _mm512_cvt_roundps_epu64(A, R) __extension__ ({ \
382 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
383 (__v8di)_mm512_setzero_si512(), \
384 (__mmask8)-1, (int)(R)); })
386 #define _mm512_mask_cvt_roundps_epu64(W, U, A, R) __extension__ ({ \
387 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
388 (__v8di)(__m512i)(W), \
389 (__mmask8)(U), (int)(R)); })
391 #define _mm512_maskz_cvt_roundps_epu64(U, A, R) __extension__ ({ \
392 (__m512i)__builtin_ia32_cvtps2uqq512_mask((__v8sf)(__m256)(A), \
393 (__v8di)_mm512_setzero_si512(), \
394 (__mmask8)(U), (int)(R)); })
397 static __inline__ __m512d __DEFAULT_FN_ATTRS
398 _mm512_cvtepi64_pd (__m512i __A
) {
399 return (__m512d
) __builtin_ia32_cvtqq2pd512_mask ((__v8di
) __A
,
400 (__v8df
) _mm512_setzero_pd(),
402 _MM_FROUND_CUR_DIRECTION
);
405 static __inline__ __m512d __DEFAULT_FN_ATTRS
406 _mm512_mask_cvtepi64_pd (__m512d __W
, __mmask8 __U
, __m512i __A
) {
407 return (__m512d
) __builtin_ia32_cvtqq2pd512_mask ((__v8di
) __A
,
410 _MM_FROUND_CUR_DIRECTION
);
413 static __inline__ __m512d __DEFAULT_FN_ATTRS
414 _mm512_maskz_cvtepi64_pd (__mmask8 __U
, __m512i __A
) {
415 return (__m512d
) __builtin_ia32_cvtqq2pd512_mask ((__v8di
) __A
,
416 (__v8df
) _mm512_setzero_pd(),
418 _MM_FROUND_CUR_DIRECTION
);
421 #define _mm512_cvt_roundepi64_pd(A, R) __extension__ ({ \
422 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
423 (__v8df)_mm512_setzero_pd(), \
424 (__mmask8)-1, (int)(R)); })
426 #define _mm512_mask_cvt_roundepi64_pd(W, U, A, R) __extension__ ({ \
427 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
428 (__v8df)(__m512d)(W), \
429 (__mmask8)(U), (int)(R)); })
431 #define _mm512_maskz_cvt_roundepi64_pd(U, A, R) __extension__ ({ \
432 (__m512d)__builtin_ia32_cvtqq2pd512_mask((__v8di)(__m512i)(A), \
433 (__v8df)_mm512_setzero_pd(), \
434 (__mmask8)(U), (int)(R)); })
436 static __inline__ __m256 __DEFAULT_FN_ATTRS
437 _mm512_cvtepi64_ps (__m512i __A
) {
438 return (__m256
) __builtin_ia32_cvtqq2ps512_mask ((__v8di
) __A
,
439 (__v8sf
) _mm256_setzero_ps(),
441 _MM_FROUND_CUR_DIRECTION
);
444 static __inline__ __m256 __DEFAULT_FN_ATTRS
445 _mm512_mask_cvtepi64_ps (__m256 __W
, __mmask8 __U
, __m512i __A
) {
446 return (__m256
) __builtin_ia32_cvtqq2ps512_mask ((__v8di
) __A
,
449 _MM_FROUND_CUR_DIRECTION
);
452 static __inline__ __m256 __DEFAULT_FN_ATTRS
453 _mm512_maskz_cvtepi64_ps (__mmask8 __U
, __m512i __A
) {
454 return (__m256
) __builtin_ia32_cvtqq2ps512_mask ((__v8di
) __A
,
455 (__v8sf
) _mm256_setzero_ps(),
457 _MM_FROUND_CUR_DIRECTION
);
460 #define _mm512_cvt_roundepi64_ps(A, R) __extension__ ({ \
461 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
462 (__v8sf)_mm256_setzero_ps(), \
463 (__mmask8)-1, (int)(R)); })
465 #define _mm512_mask_cvt_roundepi64_ps(W, U, A, R) __extension__ ({ \
466 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
467 (__v8sf)(__m256)(W), (__mmask8)(U), \
470 #define _mm512_maskz_cvt_roundepi64_ps(U, A, R) __extension__ ({ \
471 (__m256)__builtin_ia32_cvtqq2ps512_mask((__v8di)(__m512i)(A), \
472 (__v8sf)_mm256_setzero_ps(), \
473 (__mmask8)(U), (int)(R)); })
476 static __inline__ __m512i __DEFAULT_FN_ATTRS
477 _mm512_cvttpd_epi64 (__m512d __A
) {
478 return (__m512i
) __builtin_ia32_cvttpd2qq512_mask ((__v8df
) __A
,
479 (__v8di
) _mm512_setzero_si512(),
481 _MM_FROUND_CUR_DIRECTION
);
484 static __inline__ __m512i __DEFAULT_FN_ATTRS
485 _mm512_mask_cvttpd_epi64 (__m512i __W
, __mmask8 __U
, __m512d __A
) {
486 return (__m512i
) __builtin_ia32_cvttpd2qq512_mask ((__v8df
) __A
,
489 _MM_FROUND_CUR_DIRECTION
);
492 static __inline__ __m512i __DEFAULT_FN_ATTRS
493 _mm512_maskz_cvttpd_epi64 (__mmask8 __U
, __m512d __A
) {
494 return (__m512i
) __builtin_ia32_cvttpd2qq512_mask ((__v8df
) __A
,
495 (__v8di
) _mm512_setzero_si512(),
497 _MM_FROUND_CUR_DIRECTION
);
500 #define _mm512_cvtt_roundpd_epi64(A, R) __extension__ ({ \
501 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
502 (__v8di)_mm512_setzero_si512(), \
503 (__mmask8)-1, (int)(R)); })
505 #define _mm512_mask_cvtt_roundpd_epi64(W, U, A, R) __extension__ ({ \
506 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
507 (__v8di)(__m512i)(W), \
508 (__mmask8)(U), (int)(R)); })
510 #define _mm512_maskz_cvtt_roundpd_epi64(U, A, R) __extension__ ({ \
511 (__m512i)__builtin_ia32_cvttpd2qq512_mask((__v8df)(__m512d)(A), \
512 (__v8di)_mm512_setzero_si512(), \
513 (__mmask8)(U), (int)(R)); })
515 static __inline__ __m512i __DEFAULT_FN_ATTRS
516 _mm512_cvttpd_epu64 (__m512d __A
) {
517 return (__m512i
) __builtin_ia32_cvttpd2uqq512_mask ((__v8df
) __A
,
518 (__v8di
) _mm512_setzero_si512(),
520 _MM_FROUND_CUR_DIRECTION
);
523 static __inline__ __m512i __DEFAULT_FN_ATTRS
524 _mm512_mask_cvttpd_epu64 (__m512i __W
, __mmask8 __U
, __m512d __A
) {
525 return (__m512i
) __builtin_ia32_cvttpd2uqq512_mask ((__v8df
) __A
,
528 _MM_FROUND_CUR_DIRECTION
);
531 static __inline__ __m512i __DEFAULT_FN_ATTRS
532 _mm512_maskz_cvttpd_epu64 (__mmask8 __U
, __m512d __A
) {
533 return (__m512i
) __builtin_ia32_cvttpd2uqq512_mask ((__v8df
) __A
,
534 (__v8di
) _mm512_setzero_si512(),
536 _MM_FROUND_CUR_DIRECTION
);
539 #define _mm512_cvtt_roundpd_epu64(A, R) __extension__ ({ \
540 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
541 (__v8di)_mm512_setzero_si512(), \
542 (__mmask8)-1, (int)(R)); })
544 #define _mm512_mask_cvtt_roundpd_epu64(W, U, A, R) __extension__ ({ \
545 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
546 (__v8di)(__m512i)(W), \
547 (__mmask8)(U), (int)(R)); })
549 #define _mm512_maskz_cvtt_roundpd_epu64(U, A, R) __extension__ ({ \
550 (__m512i)__builtin_ia32_cvttpd2uqq512_mask((__v8df)(__m512d)(A), \
551 (__v8di)_mm512_setzero_si512(), \
552 (__mmask8)(U), (int)(R)); })
554 static __inline__ __m512i __DEFAULT_FN_ATTRS
555 _mm512_cvttps_epi64 (__m256 __A
) {
556 return (__m512i
) __builtin_ia32_cvttps2qq512_mask ((__v8sf
) __A
,
557 (__v8di
) _mm512_setzero_si512(),
559 _MM_FROUND_CUR_DIRECTION
);
562 static __inline__ __m512i __DEFAULT_FN_ATTRS
563 _mm512_mask_cvttps_epi64 (__m512i __W
, __mmask8 __U
, __m256 __A
) {
564 return (__m512i
) __builtin_ia32_cvttps2qq512_mask ((__v8sf
) __A
,
567 _MM_FROUND_CUR_DIRECTION
);
570 static __inline__ __m512i __DEFAULT_FN_ATTRS
571 _mm512_maskz_cvttps_epi64 (__mmask8 __U
, __m256 __A
) {
572 return (__m512i
) __builtin_ia32_cvttps2qq512_mask ((__v8sf
) __A
,
573 (__v8di
) _mm512_setzero_si512(),
575 _MM_FROUND_CUR_DIRECTION
);
578 #define _mm512_cvtt_roundps_epi64(A, R) __extension__ ({ \
579 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
580 (__v8di)_mm512_setzero_si512(), \
581 (__mmask8)-1, (int)(R)); })
583 #define _mm512_mask_cvtt_roundps_epi64(W, U, A, R) __extension__ ({ \
584 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
585 (__v8di)(__m512i)(W), \
586 (__mmask8)(U), (int)(R)); })
588 #define _mm512_maskz_cvtt_roundps_epi64(U, A, R) __extension__ ({ \
589 (__m512i)__builtin_ia32_cvttps2qq512_mask((__v8sf)(__m256)(A), \
590 (__v8di)_mm512_setzero_si512(), \
591 (__mmask8)(U), (int)(R)); })
593 static __inline__ __m512i __DEFAULT_FN_ATTRS
594 _mm512_cvttps_epu64 (__m256 __A
) {
595 return (__m512i
) __builtin_ia32_cvttps2uqq512_mask ((__v8sf
) __A
,
596 (__v8di
) _mm512_setzero_si512(),
598 _MM_FROUND_CUR_DIRECTION
);
601 static __inline__ __m512i __DEFAULT_FN_ATTRS
602 _mm512_mask_cvttps_epu64 (__m512i __W
, __mmask8 __U
, __m256 __A
) {
603 return (__m512i
) __builtin_ia32_cvttps2uqq512_mask ((__v8sf
) __A
,
606 _MM_FROUND_CUR_DIRECTION
);
609 static __inline__ __m512i __DEFAULT_FN_ATTRS
610 _mm512_maskz_cvttps_epu64 (__mmask8 __U
, __m256 __A
) {
611 return (__m512i
) __builtin_ia32_cvttps2uqq512_mask ((__v8sf
) __A
,
612 (__v8di
) _mm512_setzero_si512(),
614 _MM_FROUND_CUR_DIRECTION
);
617 #define _mm512_cvtt_roundps_epu64(A, R) __extension__ ({ \
618 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
619 (__v8di)_mm512_setzero_si512(), \
620 (__mmask8)-1, (int)(R)); })
622 #define _mm512_mask_cvtt_roundps_epu64(W, U, A, R) __extension__ ({ \
623 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
624 (__v8di)(__m512i)(W), \
625 (__mmask8)(U), (int)(R)); })
627 #define _mm512_maskz_cvtt_roundps_epu64(U, A, R) __extension__ ({ \
628 (__m512i)__builtin_ia32_cvttps2uqq512_mask((__v8sf)(__m256)(A), \
629 (__v8di)_mm512_setzero_si512(), \
630 (__mmask8)(U), (int)(R)); })
632 static __inline__ __m512d __DEFAULT_FN_ATTRS
633 _mm512_cvtepu64_pd (__m512i __A
) {
634 return (__m512d
) __builtin_ia32_cvtuqq2pd512_mask ((__v8di
) __A
,
635 (__v8df
) _mm512_setzero_pd(),
637 _MM_FROUND_CUR_DIRECTION
);
640 static __inline__ __m512d __DEFAULT_FN_ATTRS
641 _mm512_mask_cvtepu64_pd (__m512d __W
, __mmask8 __U
, __m512i __A
) {
642 return (__m512d
) __builtin_ia32_cvtuqq2pd512_mask ((__v8di
) __A
,
645 _MM_FROUND_CUR_DIRECTION
);
648 static __inline__ __m512d __DEFAULT_FN_ATTRS
649 _mm512_maskz_cvtepu64_pd (__mmask8 __U
, __m512i __A
) {
650 return (__m512d
) __builtin_ia32_cvtuqq2pd512_mask ((__v8di
) __A
,
651 (__v8df
) _mm512_setzero_pd(),
653 _MM_FROUND_CUR_DIRECTION
);
656 #define _mm512_cvt_roundepu64_pd(A, R) __extension__ ({ \
657 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
658 (__v8df)_mm512_setzero_pd(), \
659 (__mmask8)-1, (int)(R)); })
661 #define _mm512_mask_cvt_roundepu64_pd(W, U, A, R) __extension__ ({ \
662 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
663 (__v8df)(__m512d)(W), \
664 (__mmask8)(U), (int)(R)); })
667 #define _mm512_maskz_cvt_roundepu64_pd(U, A, R) __extension__ ({ \
668 (__m512d)__builtin_ia32_cvtuqq2pd512_mask((__v8di)(__m512i)(A), \
669 (__v8df)_mm512_setzero_pd(), \
670 (__mmask8)(U), (int)(R)); })
673 static __inline__ __m256 __DEFAULT_FN_ATTRS
674 _mm512_cvtepu64_ps (__m512i __A
) {
675 return (__m256
) __builtin_ia32_cvtuqq2ps512_mask ((__v8di
) __A
,
676 (__v8sf
) _mm256_setzero_ps(),
678 _MM_FROUND_CUR_DIRECTION
);
681 static __inline__ __m256 __DEFAULT_FN_ATTRS
682 _mm512_mask_cvtepu64_ps (__m256 __W
, __mmask8 __U
, __m512i __A
) {
683 return (__m256
) __builtin_ia32_cvtuqq2ps512_mask ((__v8di
) __A
,
686 _MM_FROUND_CUR_DIRECTION
);
689 static __inline__ __m256 __DEFAULT_FN_ATTRS
690 _mm512_maskz_cvtepu64_ps (__mmask8 __U
, __m512i __A
) {
691 return (__m256
) __builtin_ia32_cvtuqq2ps512_mask ((__v8di
) __A
,
692 (__v8sf
) _mm256_setzero_ps(),
694 _MM_FROUND_CUR_DIRECTION
);
697 #define _mm512_cvt_roundepu64_ps(A, R) __extension__ ({ \
698 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
699 (__v8sf)_mm256_setzero_ps(), \
700 (__mmask8)-1, (int)(R)); })
702 #define _mm512_mask_cvt_roundepu64_ps(W, U, A, R) __extension__ ({ \
703 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
704 (__v8sf)(__m256)(W), (__mmask8)(U), \
707 #define _mm512_maskz_cvt_roundepu64_ps(U, A, R) __extension__ ({ \
708 (__m256)__builtin_ia32_cvtuqq2ps512_mask((__v8di)(__m512i)(A), \
709 (__v8sf)_mm256_setzero_ps(), \
710 (__mmask8)(U), (int)(R)); })
712 #define _mm512_range_pd(A, B, C) __extension__ ({ \
713 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
714 (__v8df)(__m512d)(B), (int)(C), \
715 (__v8df)_mm512_setzero_pd(), \
717 _MM_FROUND_CUR_DIRECTION); })
719 #define _mm512_mask_range_pd(W, U, A, B, C) __extension__ ({ \
720 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
721 (__v8df)(__m512d)(B), (int)(C), \
722 (__v8df)(__m512d)(W), (__mmask8)(U), \
723 _MM_FROUND_CUR_DIRECTION); })
725 #define _mm512_maskz_range_pd(U, A, B, C) __extension__ ({ \
726 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
727 (__v8df)(__m512d)(B), (int)(C), \
728 (__v8df)_mm512_setzero_pd(), \
730 _MM_FROUND_CUR_DIRECTION); })
732 #define _mm512_range_round_pd(A, B, C, R) __extension__ ({ \
733 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
734 (__v8df)(__m512d)(B), (int)(C), \
735 (__v8df)_mm512_setzero_pd(), \
736 (__mmask8)-1, (int)(R)); })
738 #define _mm512_mask_range_round_pd(W, U, A, B, C, R) __extension__ ({ \
739 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
740 (__v8df)(__m512d)(B), (int)(C), \
741 (__v8df)(__m512d)(W), (__mmask8)(U), \
744 #define _mm512_maskz_range_round_pd(U, A, B, C, R) __extension__ ({ \
745 (__m512d)__builtin_ia32_rangepd512_mask((__v8df)(__m512d)(A), \
746 (__v8df)(__m512d)(B), (int)(C), \
747 (__v8df)_mm512_setzero_pd(), \
748 (__mmask8)(U), (int)(R)); })
750 #define _mm512_range_ps(A, B, C) __extension__ ({ \
751 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
752 (__v16sf)(__m512)(B), (int)(C), \
753 (__v16sf)_mm512_setzero_ps(), \
755 _MM_FROUND_CUR_DIRECTION); })
757 #define _mm512_mask_range_ps(W, U, A, B, C) __extension__ ({ \
758 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
759 (__v16sf)(__m512)(B), (int)(C), \
760 (__v16sf)(__m512)(W), (__mmask16)(U), \
761 _MM_FROUND_CUR_DIRECTION); })
763 #define _mm512_maskz_range_ps(U, A, B, C) __extension__ ({ \
764 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
765 (__v16sf)(__m512)(B), (int)(C), \
766 (__v16sf)_mm512_setzero_ps(), \
768 _MM_FROUND_CUR_DIRECTION); })
770 #define _mm512_range_round_ps(A, B, C, R) __extension__ ({ \
771 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
772 (__v16sf)(__m512)(B), (int)(C), \
773 (__v16sf)_mm512_setzero_ps(), \
774 (__mmask16)-1, (int)(R)); })
776 #define _mm512_mask_range_round_ps(W, U, A, B, C, R) __extension__ ({ \
777 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
778 (__v16sf)(__m512)(B), (int)(C), \
779 (__v16sf)(__m512)(W), (__mmask16)(U), \
782 #define _mm512_maskz_range_round_ps(U, A, B, C, R) __extension__ ({ \
783 (__m512)__builtin_ia32_rangeps512_mask((__v16sf)(__m512)(A), \
784 (__v16sf)(__m512)(B), (int)(C), \
785 (__v16sf)_mm512_setzero_ps(), \
786 (__mmask16)(U), (int)(R)); })
788 #define _mm_range_round_ss(A, B, C, R) __extension__ ({ \
789 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
790 (__v4sf)(__m128)(B), \
791 (__v4sf)_mm_setzero_ps(), \
792 (__mmask8) -1, (int)(C),\
795 #define _mm_range_ss(A ,B , C) _mm_range_round_ss(A, B, C ,_MM_FROUND_CUR_DIRECTION)
797 #define _mm_mask_range_round_ss(W, U, A, B, C, R) __extension__ ({ \
798 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
799 (__v4sf)(__m128)(B), \
800 (__v4sf)(__m128)(W),\
801 (__mmask8)(U), (int)(C),\
804 #define _mm_mask_range_ss(W , U, A, B, C) _mm_mask_range_round_ss(W, U, A, B, C , _MM_FROUND_CUR_DIRECTION)
806 #define _mm_maskz_range_round_ss(U, A, B, C, R) __extension__ ({ \
807 (__m128)__builtin_ia32_rangess128_round_mask((__v4sf)(__m128)(A), \
808 (__v4sf)(__m128)(B), \
809 (__v4sf)_mm_setzero_ps(), \
810 (__mmask8)(U), (int)(C),\
813 #define _mm_maskz_range_ss(U, A ,B , C) _mm_maskz_range_round_ss(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
815 #define _mm_range_round_sd(A, B, C, R) __extension__ ({ \
816 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
817 (__v2df)(__m128d)(B), \
818 (__v2df)_mm_setzero_pd(), \
819 (__mmask8) -1, (int)(C),\
822 #define _mm_range_sd(A ,B , C) _mm_range_round_sd(A, B, C ,_MM_FROUND_CUR_DIRECTION)
824 #define _mm_mask_range_round_sd(W, U, A, B, C, R) __extension__ ({ \
825 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
826 (__v2df)(__m128d)(B), \
827 (__v2df)(__m128d)(W),\
828 (__mmask8)(U), (int)(C),\
831 #define _mm_mask_range_sd(W, U, A, B, C) _mm_mask_range_round_sd(W, U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
833 #define _mm_maskz_range_round_sd(U, A, B, C, R) __extension__ ({ \
834 (__m128d)__builtin_ia32_rangesd128_round_mask((__v2df)(__m128d)(A), \
835 (__v2df)(__m128d)(B), \
836 (__v2df)_mm_setzero_pd(), \
837 (__mmask8)(U), (int)(C),\
840 #define _mm_maskz_range_sd(U, A, B, C) _mm_maskz_range_round_sd(U, A, B, C ,_MM_FROUND_CUR_DIRECTION)
842 #define _mm512_reduce_pd(A, B) __extension__ ({ \
843 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
844 (__v8df)_mm512_setzero_pd(), \
846 _MM_FROUND_CUR_DIRECTION); })
848 #define _mm512_mask_reduce_pd(W, U, A, B) __extension__ ({ \
849 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
850 (__v8df)(__m512d)(W), \
852 _MM_FROUND_CUR_DIRECTION); })
854 #define _mm512_maskz_reduce_pd(U, A, B) __extension__ ({ \
855 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
856 (__v8df)_mm512_setzero_pd(), \
858 _MM_FROUND_CUR_DIRECTION); })
860 #define _mm512_reduce_ps(A, B) __extension__ ({ \
861 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
862 (__v16sf)_mm512_setzero_ps(), \
864 _MM_FROUND_CUR_DIRECTION); })
866 #define _mm512_mask_reduce_ps(W, U, A, B) __extension__ ({ \
867 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
868 (__v16sf)(__m512)(W), \
870 _MM_FROUND_CUR_DIRECTION); })
872 #define _mm512_maskz_reduce_ps(U, A, B) __extension__ ({ \
873 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
874 (__v16sf)_mm512_setzero_ps(), \
876 _MM_FROUND_CUR_DIRECTION); })
878 #define _mm512_reduce_round_pd(A, B, R) __extension__ ({\
879 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
880 (__v8df)_mm512_setzero_pd(), \
881 (__mmask8)-1, (int)(R)); })
883 #define _mm512_mask_reduce_round_pd(W, U, A, B, R) __extension__ ({\
884 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
885 (__v8df)(__m512d)(W), \
886 (__mmask8)(U), (int)(R)); })
888 #define _mm512_maskz_reduce_round_pd(U, A, B, R) __extension__ ({\
889 (__m512d)__builtin_ia32_reducepd512_mask((__v8df)(__m512d)(A), (int)(B), \
890 (__v8df)_mm512_setzero_pd(), \
891 (__mmask8)(U), (int)(R)); })
893 #define _mm512_reduce_round_ps(A, B, R) __extension__ ({\
894 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
895 (__v16sf)_mm512_setzero_ps(), \
896 (__mmask16)-1, (int)(R)); })
898 #define _mm512_mask_reduce_round_ps(W, U, A, B, R) __extension__ ({\
899 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
900 (__v16sf)(__m512)(W), \
901 (__mmask16)(U), (int)(R)); })
903 #define _mm512_maskz_reduce_round_ps(U, A, B, R) __extension__ ({\
904 (__m512)__builtin_ia32_reduceps512_mask((__v16sf)(__m512)(A), (int)(B), \
905 (__v16sf)_mm512_setzero_ps(), \
906 (__mmask16)(U), (int)(R)); })
908 #define _mm_reduce_ss(A, B, C) __extension__ ({ \
909 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
910 (__v4sf)(__m128)(B), \
911 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
912 (int)(C), _MM_FROUND_CUR_DIRECTION); })
914 #define _mm_mask_reduce_ss(W, U, A, B, C) __extension__ ({ \
915 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
916 (__v4sf)(__m128)(B), \
917 (__v4sf)(__m128)(W), (__mmask8)(U), \
918 (int)(C), _MM_FROUND_CUR_DIRECTION); })
920 #define _mm_maskz_reduce_ss(U, A, B, C) __extension__ ({ \
921 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
922 (__v4sf)(__m128)(B), \
923 (__v4sf)_mm_setzero_ps(), \
924 (__mmask8)(U), (int)(C), \
925 _MM_FROUND_CUR_DIRECTION); })
927 #define _mm_reduce_round_ss(A, B, C, R) __extension__ ({ \
928 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
929 (__v4sf)(__m128)(B), \
930 (__v4sf)_mm_setzero_ps(), (__mmask8)-1, \
931 (int)(C), (int)(R)); })
933 #define _mm_mask_reduce_round_ss(W, U, A, B, C, R) __extension__ ({ \
934 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
935 (__v4sf)(__m128)(B), \
936 (__v4sf)(__m128)(W), (__mmask8)(U), \
937 (int)(C), (int)(R)); })
939 #define _mm_maskz_reduce_round_ss(U, A, B, C, R) __extension__ ({ \
940 (__m128)__builtin_ia32_reducess_mask((__v4sf)(__m128)(A), \
941 (__v4sf)(__m128)(B), \
942 (__v4sf)_mm_setzero_ps(), \
943 (__mmask8)(U), (int)(C), (int)(R)); })
945 #define _mm_reduce_sd(A, B, C) __extension__ ({ \
946 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
947 (__v2df)(__m128d)(B), \
948 (__v2df)_mm_setzero_pd(), \
949 (__mmask8)-1, (int)(C), \
950 _MM_FROUND_CUR_DIRECTION); })
952 #define _mm_mask_reduce_sd(W, U, A, B, C) __extension__ ({ \
953 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
954 (__v2df)(__m128d)(B), \
955 (__v2df)(__m128d)(W), (__mmask8)(U), \
956 (int)(C), _MM_FROUND_CUR_DIRECTION); })
958 #define _mm_maskz_reduce_sd(U, A, B, C) __extension__ ({ \
959 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
960 (__v2df)(__m128d)(B), \
961 (__v2df)_mm_setzero_pd(), \
962 (__mmask8)(U), (int)(C), \
963 _MM_FROUND_CUR_DIRECTION); })
965 #define _mm_reduce_round_sd(A, B, C, R) __extension__ ({ \
966 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
967 (__v2df)(__m128d)(B), \
968 (__v2df)_mm_setzero_pd(), \
969 (__mmask8)-1, (int)(C), (int)(R)); })
971 #define _mm_mask_reduce_round_sd(W, U, A, B, C, R) __extension__ ({ \
972 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
973 (__v2df)(__m128d)(B), \
974 (__v2df)(__m128d)(W), (__mmask8)(U), \
975 (int)(C), (int)(R)); })
977 #define _mm_maskz_reduce_round_sd(U, A, B, C, R) __extension__ ({ \
978 (__m128d)__builtin_ia32_reducesd_mask((__v2df)(__m128d)(A), \
979 (__v2df)(__m128d)(B), \
980 (__v2df)_mm_setzero_pd(), \
981 (__mmask8)(U), (int)(C), (int)(R)); })
983 static __inline__ __mmask16 __DEFAULT_FN_ATTRS
984 _mm512_movepi32_mask (__m512i __A
)
986 return (__mmask16
) __builtin_ia32_cvtd2mask512 ((__v16si
) __A
);
989 static __inline__ __m512i __DEFAULT_FN_ATTRS
990 _mm512_movm_epi32 (__mmask16 __A
)
992 return (__m512i
) __builtin_ia32_cvtmask2d512 (__A
);
995 static __inline__ __m512i __DEFAULT_FN_ATTRS
996 _mm512_movm_epi64 (__mmask8 __A
)
998 return (__m512i
) __builtin_ia32_cvtmask2q512 (__A
);
1001 static __inline__ __mmask8 __DEFAULT_FN_ATTRS
1002 _mm512_movepi64_mask (__m512i __A
)
1004 return (__mmask8
) __builtin_ia32_cvtq2mask512 ((__v8di
) __A
);
1008 static __inline__ __m512 __DEFAULT_FN_ATTRS
1009 _mm512_broadcast_f32x2 (__m128 __A
)
1011 return (__m512
) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf
) __A
,
1012 (__v16sf
)_mm512_undefined_ps(),
1016 static __inline__ __m512 __DEFAULT_FN_ATTRS
1017 _mm512_mask_broadcast_f32x2 (__m512 __O
, __mmask16 __M
, __m128 __A
)
1019 return (__m512
) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf
) __A
,
1024 static __inline__ __m512 __DEFAULT_FN_ATTRS
1025 _mm512_maskz_broadcast_f32x2 (__mmask16 __M
, __m128 __A
)
1027 return (__m512
) __builtin_ia32_broadcastf32x2_512_mask ((__v4sf
) __A
,
1028 (__v16sf
)_mm512_setzero_ps (),
1032 static __inline__ __m512 __DEFAULT_FN_ATTRS
1033 _mm512_broadcast_f32x8 (__m256 __A
)
1035 return (__m512
) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf
) __A
,
1036 _mm512_undefined_ps(),
1040 static __inline__ __m512 __DEFAULT_FN_ATTRS
1041 _mm512_mask_broadcast_f32x8 (__m512 __O
, __mmask16 __M
, __m256 __A
)
1043 return (__m512
) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf
) __A
,
1048 static __inline__ __m512 __DEFAULT_FN_ATTRS
1049 _mm512_maskz_broadcast_f32x8 (__mmask16 __M
, __m256 __A
)
1051 return (__m512
) __builtin_ia32_broadcastf32x8_512_mask ((__v8sf
) __A
,
1052 (__v16sf
)_mm512_setzero_ps (),
1056 static __inline__ __m512d __DEFAULT_FN_ATTRS
1057 _mm512_broadcast_f64x2 (__m128d __A
)
1059 return (__m512d
) __builtin_ia32_broadcastf64x2_512_mask ((__v2df
) __A
,
1060 (__v8df
)_mm512_undefined_pd(),
1064 static __inline__ __m512d __DEFAULT_FN_ATTRS
1065 _mm512_mask_broadcast_f64x2 (__m512d __O
, __mmask8 __M
, __m128d __A
)
1067 return (__m512d
) __builtin_ia32_broadcastf64x2_512_mask ((__v2df
) __A
,
1072 static __inline__ __m512d __DEFAULT_FN_ATTRS
1073 _mm512_maskz_broadcast_f64x2 (__mmask8 __M
, __m128d __A
)
1075 return (__m512d
) __builtin_ia32_broadcastf64x2_512_mask ((__v2df
) __A
,
1076 (__v8df
)_mm512_setzero_ps (),
1080 static __inline__ __m512i __DEFAULT_FN_ATTRS
1081 _mm512_broadcast_i32x2 (__m128i __A
)
1083 return (__m512i
) __builtin_ia32_broadcasti32x2_512_mask ((__v4si
) __A
,
1084 (__v16si
)_mm512_setzero_si512(),
1088 static __inline__ __m512i __DEFAULT_FN_ATTRS
1089 _mm512_mask_broadcast_i32x2 (__m512i __O
, __mmask16 __M
, __m128i __A
)
1091 return (__m512i
) __builtin_ia32_broadcasti32x2_512_mask ((__v4si
) __A
,
1096 static __inline__ __m512i __DEFAULT_FN_ATTRS
1097 _mm512_maskz_broadcast_i32x2 (__mmask16 __M
, __m128i __A
)
1099 return (__m512i
) __builtin_ia32_broadcasti32x2_512_mask ((__v4si
) __A
,
1100 (__v16si
)_mm512_setzero_si512 (),
1104 static __inline__ __m512i __DEFAULT_FN_ATTRS
1105 _mm512_broadcast_i32x8 (__m256i __A
)
1107 return (__m512i
) __builtin_ia32_broadcasti32x8_512_mask ((__v8si
) __A
,
1108 (__v16si
)_mm512_setzero_si512(),
1112 static __inline__ __m512i __DEFAULT_FN_ATTRS
1113 _mm512_mask_broadcast_i32x8 (__m512i __O
, __mmask16 __M
, __m256i __A
)
1115 return (__m512i
) __builtin_ia32_broadcasti32x8_512_mask ((__v8si
) __A
,
1120 static __inline__ __m512i __DEFAULT_FN_ATTRS
1121 _mm512_maskz_broadcast_i32x8 (__mmask16 __M
, __m256i __A
)
1123 return (__m512i
) __builtin_ia32_broadcasti32x8_512_mask ((__v8si
) __A
,
1125 _mm512_setzero_si512 (),
1129 static __inline__ __m512i __DEFAULT_FN_ATTRS
1130 _mm512_broadcast_i64x2 (__m128i __A
)
1132 return (__m512i
) __builtin_ia32_broadcasti64x2_512_mask ((__v2di
) __A
,
1133 (__v8di
)_mm512_setzero_si512(),
1137 static __inline__ __m512i __DEFAULT_FN_ATTRS
1138 _mm512_mask_broadcast_i64x2 (__m512i __O
, __mmask8 __M
, __m128i __A
)
1140 return (__m512i
) __builtin_ia32_broadcasti64x2_512_mask ((__v2di
) __A
,
1145 static __inline__ __m512i __DEFAULT_FN_ATTRS
1146 _mm512_maskz_broadcast_i64x2 (__mmask8 __M
, __m128i __A
)
1148 return (__m512i
) __builtin_ia32_broadcasti64x2_512_mask ((__v2di
) __A
,
1149 (__v8di
)_mm512_setzero_si512 (),
1153 #define _mm512_extractf32x8_ps(A, imm) __extension__ ({ \
1154 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1155 (__v8sf)_mm256_setzero_ps(), \
1158 #define _mm512_mask_extractf32x8_ps(W, U, A, imm) __extension__ ({ \
1159 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1160 (__v8sf)(__m256)(W), \
1163 #define _mm512_maskz_extractf32x8_ps(U, A, imm) __extension__ ({ \
1164 (__m256)__builtin_ia32_extractf32x8_mask((__v16sf)(__m512)(A), (int)(imm), \
1165 (__v8sf)_mm256_setzero_ps(), \
1168 #define _mm512_extractf64x2_pd(A, imm) __extension__ ({ \
1169 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1171 (__v2df)_mm_setzero_pd(), \
1174 #define _mm512_mask_extractf64x2_pd(W, U, A, imm) __extension__ ({ \
1175 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1177 (__v2df)(__m128d)(W), \
1180 #define _mm512_maskz_extractf64x2_pd(U, A, imm) __extension__ ({ \
1181 (__m128d)__builtin_ia32_extractf64x2_512_mask((__v8df)(__m512d)(A), \
1183 (__v2df)_mm_setzero_pd(), \
1186 #define _mm512_extracti32x8_epi32(A, imm) __extension__ ({ \
1187 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1188 (__v8si)_mm256_setzero_si256(), \
1191 #define _mm512_mask_extracti32x8_epi32(W, U, A, imm) __extension__ ({ \
1192 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1193 (__v8si)(__m256i)(W), \
1196 #define _mm512_maskz_extracti32x8_epi32(U, A, imm) __extension__ ({ \
1197 (__m256i)__builtin_ia32_extracti32x8_mask((__v16si)(__m512i)(A), (int)(imm), \
1198 (__v8si)_mm256_setzero_si256(), \
1201 #define _mm512_extracti64x2_epi64(A, imm) __extension__ ({ \
1202 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1204 (__v2di)_mm_setzero_di(), \
1207 #define _mm512_mask_extracti64x2_epi64(W, U, A, imm) __extension__ ({ \
1208 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1210 (__v2di)(__m128i)(W), \
1213 #define _mm512_maskz_extracti64x2_epi64(U, A, imm) __extension__ ({ \
1214 (__m128i)__builtin_ia32_extracti64x2_512_mask((__v8di)(__m512i)(A), \
1216 (__v2di)_mm_setzero_di(), \
1219 #define _mm512_insertf32x8(A, B, imm) __extension__ ({ \
1220 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1221 (__v8sf)(__m256)(B), (int)(imm), \
1222 (__v16sf)_mm512_setzero_ps(), \
1225 #define _mm512_mask_insertf32x8(W, U, A, B, imm) __extension__ ({ \
1226 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1227 (__v8sf)(__m256)(B), (int)(imm), \
1228 (__v16sf)(__m512)(W), \
1231 #define _mm512_maskz_insertf32x8(U, A, B, imm) __extension__ ({ \
1232 (__m512)__builtin_ia32_insertf32x8_mask((__v16sf)(__m512)(A), \
1233 (__v8sf)(__m256)(B), (int)(imm), \
1234 (__v16sf)_mm512_setzero_ps(), \
1237 #define _mm512_insertf64x2(A, B, imm) __extension__ ({ \
1238 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1239 (__v2df)(__m128d)(B), \
1241 (__v8df)_mm512_setzero_pd(), \
1244 #define _mm512_mask_insertf64x2(W, U, A, B, imm) __extension__ ({ \
1245 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1246 (__v2df)(__m128d)(B), \
1248 (__v8df)(__m512d)(W), \
1251 #define _mm512_maskz_insertf64x2(U, A, B, imm) __extension__ ({ \
1252 (__m512d)__builtin_ia32_insertf64x2_512_mask((__v8df)(__m512d)(A), \
1253 (__v2df)(__m128d)(B), \
1255 (__v8df)_mm512_setzero_pd(), \
1258 #define _mm512_inserti32x8(A, B, imm) __extension__ ({ \
1259 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1260 (__v8si)(__m256i)(B), (int)(imm), \
1261 (__v16si)_mm512_setzero_si512(), \
1264 #define _mm512_mask_inserti32x8(W, U, A, B, imm) __extension__ ({ \
1265 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1266 (__v8si)(__m256i)(B), (int)(imm), \
1267 (__v16si)(__m512i)(W), \
1270 #define _mm512_maskz_inserti32x8(U, A, B, imm) __extension__ ({ \
1271 (__m512i)__builtin_ia32_inserti32x8_mask((__v16si)(__m512i)(A), \
1272 (__v8si)(__m256i)(B), (int)(imm), \
1273 (__v16si)_mm512_setzero_si512(), \
1276 #define _mm512_inserti64x2(A, B, imm) __extension__ ({ \
1277 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1278 (__v2di)(__m128i)(B), \
1280 (__v8di)_mm512_setzero_si512(), \
1283 #define _mm512_mask_inserti64x2(W, U, A, B, imm) __extension__ ({ \
1284 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1285 (__v2di)(__m128i)(B), \
1287 (__v8di)(__m512i)(W), \
1290 #define _mm512_maskz_inserti64x2(U, A, B, imm) __extension__ ({ \
1291 (__m512i)__builtin_ia32_inserti64x2_512_mask((__v8di)(__m512i)(A), \
1292 (__v2di)(__m128i)(B), \
1294 (__v8di)_mm512_setzero_si512(), \
1297 #define _mm512_mask_fpclass_ps_mask(U, A, imm) __extension__ ({ \
1298 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1299 (int)(imm), (__mmask16)(U)); })
1301 #define _mm512_fpclass_ps_mask(A, imm) __extension__ ({ \
1302 (__mmask16)__builtin_ia32_fpclassps512_mask((__v16sf)(__m512)(A), \
1303 (int)(imm), (__mmask16)-1); })
1305 #define _mm512_mask_fpclass_pd_mask(U, A, imm) __extension__ ({ \
1306 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1309 #define _mm512_fpclass_pd_mask(A, imm) __extension__ ({ \
1310 (__mmask8)__builtin_ia32_fpclasspd512_mask((__v8df)(__m512d)(A), (int)(imm), \
1313 #define _mm_fpclass_sd_mask(A, imm) __extension__ ({ \
1314 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1317 #define _mm_mask_fpclass_sd_mask(U, A, imm) __extension__ ({ \
1318 (__mmask8)__builtin_ia32_fpclasssd_mask((__v2df)(__m128d)(A), (int)(imm), \
1321 #define _mm_fpclass_ss_mask(A, imm) __extension__ ({ \
1322 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1325 #define _mm_mask_fpclass_ss_mask(U, A, imm) __extension__ ({ \
1326 (__mmask8)__builtin_ia32_fpclassss_mask((__v4sf)(__m128)(A), (int)(imm), \
1329 #undef __DEFAULT_FN_ATTRS