1 /*===---- avx512fintrin.h - AVX2 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 *===-----------------------------------------------------------------------===
24 #error "Never use <avx512fintrin.h> directly; include <immintrin.h> instead."
27 #ifndef __AVX512FINTRIN_H
28 #define __AVX512FINTRIN_H
30 typedef double __v8df __attribute__((__vector_size__(64)));
31 typedef float __v16sf __attribute__((__vector_size__(64)));
32 typedef long long __v8di __attribute__((__vector_size__(64)));
33 typedef int __v16si __attribute__((__vector_size__(64)));
35 typedef float __m512 __attribute__((__vector_size__(64)));
36 typedef double __m512d __attribute__((__vector_size__(64)));
37 typedef long long __m512i __attribute__((__vector_size__(64)));
39 typedef unsigned char __mmask8;
40 typedef unsigned short __mmask16;
42 /* Rounding mode macros. */
43 #define _MM_FROUND_TO_NEAREST_INT 0x00
44 #define _MM_FROUND_TO_NEG_INF 0x01
45 #define _MM_FROUND_TO_POS_INF 0x02
46 #define _MM_FROUND_TO_ZERO 0x03
47 #define _MM_FROUND_CUR_DIRECTION 0x04
49 /* Create vectors with repeated elements */
51 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
52 _mm512_setzero_si512(void)
54 return (__m512i)(__v8di){ 0, 0, 0, 0, 0, 0, 0, 0 };
57 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
58 _mm512_maskz_set1_epi32(__mmask16 __M, int __A)
60 return (__m512i) __builtin_ia32_pbroadcastd512_gpr_mask (__A,
62 _mm512_setzero_si512 (),
66 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
67 _mm512_maskz_set1_epi64(__mmask8 __M, long long __A)
70 return (__m512i) __builtin_ia32_pbroadcastq512_gpr_mask (__A,
72 _mm512_setzero_si512 (),
75 return (__m512i) __builtin_ia32_pbroadcastq512_mem_mask (__A,
77 _mm512_setzero_si512 (),
82 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
83 _mm512_setzero_ps(void)
85 return (__m512){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
86 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
88 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
89 _mm512_setzero_pd(void)
91 return (__m512d){ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
94 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
95 _mm512_set1_ps(float __w)
97 return (__m512){ __w, __w, __w, __w, __w, __w, __w, __w,
98 __w, __w, __w, __w, __w, __w, __w, __w };
101 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
102 _mm512_set1_pd(double __w)
104 return (__m512d){ __w, __w, __w, __w, __w, __w, __w, __w };
107 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
108 _mm512_set1_epi32(int __s)
110 return (__m512i)(__v16si){ __s, __s, __s, __s, __s, __s, __s, __s,
111 __s, __s, __s, __s, __s, __s, __s, __s };
114 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
115 _mm512_set1_epi64(long long __d)
117 return (__m512i)(__v8di){ __d, __d, __d, __d, __d, __d, __d, __d };
120 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
121 _mm512_broadcastss_ps(__m128 __X)
124 return (__v16sf){ __f, __f, __f, __f,
127 __f, __f, __f, __f };
130 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
131 _mm512_broadcastsd_pd(__m128d __X)
134 return (__v8df){ __d, __d, __d, __d,
135 __d, __d, __d, __d };
138 /* Cast between vector types */
140 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
141 _mm512_castpd256_pd512(__m256d __a)
143 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, -1, -1, -1, -1);
146 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
147 _mm512_castps256_ps512(__m256 __a)
149 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3, 4, 5, 6, 7,
150 -1, -1, -1, -1, -1, -1, -1, -1);
153 static __inline __m128d __attribute__((__always_inline__, __nodebug__))
154 _mm512_castpd512_pd128(__m512d __a)
156 return __builtin_shufflevector(__a, __a, 0, 1);
159 static __inline __m128 __attribute__((__always_inline__, __nodebug__))
160 _mm512_castps512_ps128(__m512 __a)
162 return __builtin_shufflevector(__a, __a, 0, 1, 2, 3);
165 /* Bitwise operators */
166 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
167 _mm512_and_epi32(__m512i __a, __m512i __b)
172 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
173 _mm512_mask_and_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
175 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
180 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
181 _mm512_maskz_and_epi32(__mmask16 __k, __m512i __a, __m512i __b)
183 return (__m512i) __builtin_ia32_pandd512_mask((__v16si) __a,
186 _mm512_setzero_si512 (),
190 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
191 _mm512_and_epi64(__m512i __a, __m512i __b)
196 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
197 _mm512_mask_and_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
199 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
204 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
205 _mm512_maskz_and_epi64(__mmask8 __k, __m512i __a, __m512i __b)
207 return (__m512i) __builtin_ia32_pandq512_mask ((__v8di) __a,
210 _mm512_setzero_si512 (),
214 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
215 _mm512_andnot_epi32 (__m512i __A, __m512i __B)
217 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
220 _mm512_setzero_si512 (),
224 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
225 _mm512_mask_andnot_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
227 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
233 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
234 _mm512_maskz_andnot_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
236 return (__m512i) __builtin_ia32_pandnd512_mask ((__v16si) __A,
239 _mm512_setzero_si512 (),
243 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
244 _mm512_andnot_epi64 (__m512i __A, __m512i __B)
246 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
249 _mm512_setzero_si512 (),
253 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
254 _mm512_mask_andnot_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
256 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
261 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
262 _mm512_maskz_andnot_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
264 return (__m512i) __builtin_ia32_pandnq512_mask ((__v8di) __A,
267 _mm512_setzero_pd (),
270 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
271 _mm512_or_epi32(__m512i __a, __m512i __b)
276 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
277 _mm512_mask_or_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
279 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
284 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
285 _mm512_maskz_or_epi32(__mmask16 __k, __m512i __a, __m512i __b)
287 return (__m512i) __builtin_ia32_pord512_mask((__v16si) __a,
290 _mm512_setzero_si512 (),
294 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
295 _mm512_or_epi64(__m512i __a, __m512i __b)
300 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
301 _mm512_mask_or_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
303 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
308 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
309 _mm512_maskz_or_epi64(__mmask8 __k, __m512i __a, __m512i __b)
311 return (__m512i) __builtin_ia32_porq512_mask ((__v8di) __a,
314 _mm512_setzero_si512 (),
318 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
319 _mm512_xor_epi32(__m512i __a, __m512i __b)
324 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
325 _mm512_mask_xor_epi32(__m512i __src, __mmask16 __k, __m512i __a, __m512i __b)
327 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
332 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
333 _mm512_maskz_xor_epi32(__mmask16 __k, __m512i __a, __m512i __b)
335 return (__m512i) __builtin_ia32_pxord512_mask((__v16si) __a,
338 _mm512_setzero_si512 (),
342 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
343 _mm512_xor_epi64(__m512i __a, __m512i __b)
348 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
349 _mm512_mask_xor_epi64(__m512i __src, __mmask8 __k, __m512i __a, __m512i __b)
351 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
356 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
357 _mm512_maskz_xor_epi64(__mmask8 __k, __m512i __a, __m512i __b)
359 return (__m512i) __builtin_ia32_pxorq512_mask ((__v8di) __a,
362 _mm512_setzero_si512 (),
366 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
367 _mm512_and_si512(__m512i __a, __m512i __b)
372 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
373 _mm512_or_si512(__m512i __a, __m512i __b)
378 static __inline__ __m512i __attribute__((__always_inline__, __nodebug__))
379 _mm512_xor_si512(__m512i __a, __m512i __b)
385 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
386 _mm512_add_pd(__m512d __a, __m512d __b)
391 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
392 _mm512_add_ps(__m512 __a, __m512 __b)
397 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
398 _mm512_mul_pd(__m512d __a, __m512d __b)
403 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
404 _mm512_mul_ps(__m512 __a, __m512 __b)
409 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
410 _mm512_sub_pd(__m512d __a, __m512d __b)
415 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
416 _mm512_sub_ps(__m512 __a, __m512 __b)
421 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
422 _mm512_add_epi64 (__m512i __A, __m512i __B)
424 return (__m512i) ((__v8di) __A + (__v8di) __B);
427 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
428 _mm512_mask_add_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
430 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
436 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
437 _mm512_maskz_add_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
439 return (__m512i) __builtin_ia32_paddq512_mask ((__v8di) __A,
442 _mm512_setzero_si512 (),
446 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
447 _mm512_sub_epi64 (__m512i __A, __m512i __B)
449 return (__m512i) ((__v8di) __A - (__v8di) __B);
452 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
453 _mm512_mask_sub_epi64 (__m512i __W, __mmask8 __U, __m512i __A, __m512i __B)
455 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
461 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
462 _mm512_maskz_sub_epi64 (__mmask8 __U, __m512i __A, __m512i __B)
464 return (__m512i) __builtin_ia32_psubq512_mask ((__v8di) __A,
467 _mm512_setzero_si512 (),
471 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
472 _mm512_add_epi32 (__m512i __A, __m512i __B)
474 return (__m512i) ((__v16si) __A + (__v16si) __B);
477 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
478 _mm512_mask_add_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
480 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
486 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
487 _mm512_maskz_add_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
489 return (__m512i) __builtin_ia32_paddd512_mask ((__v16si) __A,
492 _mm512_setzero_si512 (),
496 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
497 _mm512_sub_epi32 (__m512i __A, __m512i __B)
499 return (__m512i) ((__v16si) __A - (__v16si) __B);
502 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
503 _mm512_mask_sub_epi32 (__m512i __W, __mmask16 __U, __m512i __A, __m512i __B)
505 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
511 static __inline__ __m512i __attribute__ ((__always_inline__, __nodebug__))
512 _mm512_maskz_sub_epi32 (__mmask16 __U, __m512i __A, __m512i __B)
514 return (__m512i) __builtin_ia32_psubd512_mask ((__v16si) __A,
517 _mm512_setzero_si512 (),
521 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
522 _mm512_max_pd(__m512d __A, __m512d __B)
524 return (__m512d) __builtin_ia32_maxpd512_mask ((__v8df) __A,
527 _mm512_setzero_pd (),
529 _MM_FROUND_CUR_DIRECTION);
532 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
533 _mm512_max_ps(__m512 __A, __m512 __B)
535 return (__m512) __builtin_ia32_maxps512_mask ((__v16sf) __A,
538 _mm512_setzero_ps (),
540 _MM_FROUND_CUR_DIRECTION);
543 static __inline __m512i
544 __attribute__ ((__always_inline__, __nodebug__))
545 _mm512_max_epi32(__m512i __A, __m512i __B)
547 return (__m512i) __builtin_ia32_pmaxsd512_mask ((__v16si) __A,
550 _mm512_setzero_si512 (),
554 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
555 _mm512_max_epu32(__m512i __A, __m512i __B)
557 return (__m512i) __builtin_ia32_pmaxud512_mask ((__v16si) __A,
560 _mm512_setzero_si512 (),
564 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
565 _mm512_max_epi64(__m512i __A, __m512i __B)
567 return (__m512i) __builtin_ia32_pmaxsq512_mask ((__v8di) __A,
570 _mm512_setzero_si512 (),
574 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
575 _mm512_max_epu64(__m512i __A, __m512i __B)
577 return (__m512i) __builtin_ia32_pmaxuq512_mask ((__v8di) __A,
580 _mm512_setzero_si512 (),
584 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
585 _mm512_min_pd(__m512d __A, __m512d __B)
587 return (__m512d) __builtin_ia32_minpd512_mask ((__v8df) __A,
590 _mm512_setzero_pd (),
592 _MM_FROUND_CUR_DIRECTION);
595 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
596 _mm512_min_ps(__m512 __A, __m512 __B)
598 return (__m512) __builtin_ia32_minps512_mask ((__v16sf) __A,
601 _mm512_setzero_ps (),
603 _MM_FROUND_CUR_DIRECTION);
606 static __inline __m512i
607 __attribute__ ((__always_inline__, __nodebug__))
608 _mm512_min_epi32(__m512i __A, __m512i __B)
610 return (__m512i) __builtin_ia32_pminsd512_mask ((__v16si) __A,
613 _mm512_setzero_si512 (),
617 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
618 _mm512_min_epu32(__m512i __A, __m512i __B)
620 return (__m512i) __builtin_ia32_pminud512_mask ((__v16si) __A,
623 _mm512_setzero_si512 (),
627 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
628 _mm512_min_epi64(__m512i __A, __m512i __B)
630 return (__m512i) __builtin_ia32_pminsq512_mask ((__v8di) __A,
633 _mm512_setzero_si512 (),
637 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
638 _mm512_min_epu64(__m512i __A, __m512i __B)
640 return (__m512i) __builtin_ia32_pminuq512_mask ((__v8di) __A,
643 _mm512_setzero_si512 (),
647 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
648 _mm512_mul_epi32(__m512i __X, __m512i __Y)
650 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
653 _mm512_setzero_si512 (),
657 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
658 _mm512_mask_mul_epi32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
660 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
665 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
666 _mm512_maskz_mul_epi32 (__mmask8 __M, __m512i __X, __m512i __Y)
668 return (__m512i) __builtin_ia32_pmuldq512_mask ((__v16si) __X,
671 _mm512_setzero_si512 (),
675 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
676 _mm512_mul_epu32(__m512i __X, __m512i __Y)
678 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
681 _mm512_setzero_si512 (),
685 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
686 _mm512_mask_mul_epu32 (__m512i __W, __mmask8 __M, __m512i __X, __m512i __Y)
688 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
693 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
694 _mm512_maskz_mul_epu32 (__mmask8 __M, __m512i __X, __m512i __Y)
696 return (__m512i) __builtin_ia32_pmuludq512_mask ((__v16si) __X,
699 _mm512_setzero_si512 (),
703 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
704 _mm512_mullo_epi32 (__m512i __A, __m512i __B)
706 return (__m512i) ((__v16si) __A * (__v16si) __B);
709 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
710 _mm512_maskz_mullo_epi32 (__mmask16 __M, __m512i __A, __m512i __B)
712 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
715 _mm512_setzero_si512 (),
719 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
720 _mm512_mask_mullo_epi32 (__m512i __W, __mmask16 __M, __m512i __A, __m512i __B)
722 return (__m512i) __builtin_ia32_pmulld512_mask ((__v16si) __A,
727 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
728 _mm512_sqrt_pd(__m512d a)
730 return (__m512d)__builtin_ia32_sqrtpd512_mask((__v8df)a,
731 (__v8df) _mm512_setzero_pd (),
733 _MM_FROUND_CUR_DIRECTION);
736 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
737 _mm512_sqrt_ps(__m512 a)
739 return (__m512)__builtin_ia32_sqrtps512_mask((__v16sf)a,
740 (__v16sf) _mm512_setzero_ps (),
742 _MM_FROUND_CUR_DIRECTION);
745 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
746 _mm512_rsqrt14_pd(__m512d __A)
748 return (__m512d) __builtin_ia32_rsqrt14pd512_mask ((__v8df) __A,
750 _mm512_setzero_pd (),
753 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
754 _mm512_rsqrt14_ps(__m512 __A)
756 return (__m512) __builtin_ia32_rsqrt14ps512_mask ((__v16sf) __A,
758 _mm512_setzero_ps (),
762 static __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
763 _mm_rsqrt14_ss(__m128 __A, __m128 __B)
765 return (__m128) __builtin_ia32_rsqrt14ss_mask ((__v4sf) __A,
772 static __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
773 _mm_rsqrt14_sd(__m128d __A, __m128d __B)
775 return (__m128d) __builtin_ia32_rsqrt14sd_mask ((__v2df) __A,
782 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
783 _mm512_rcp14_pd(__m512d __A)
785 return (__m512d) __builtin_ia32_rcp14pd512_mask ((__v8df) __A,
787 _mm512_setzero_pd (),
791 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
792 _mm512_rcp14_ps(__m512 __A)
794 return (__m512) __builtin_ia32_rcp14ps512_mask ((__v16sf) __A,
796 _mm512_setzero_ps (),
799 static __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
800 _mm_rcp14_ss(__m128 __A, __m128 __B)
802 return (__m128) __builtin_ia32_rcp14ss_mask ((__v4sf) __A,
809 static __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
810 _mm_rcp14_sd(__m128d __A, __m128d __B)
812 return (__m128d) __builtin_ia32_rcp14sd_mask ((__v2df) __A,
819 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
820 _mm512_floor_ps(__m512 __A)
822 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
825 _MM_FROUND_CUR_DIRECTION);
828 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
829 _mm512_floor_pd(__m512d __A)
831 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
834 _MM_FROUND_CUR_DIRECTION);
837 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
838 _mm512_ceil_ps(__m512 __A)
840 return (__m512) __builtin_ia32_rndscaleps_mask ((__v16sf) __A,
843 _MM_FROUND_CUR_DIRECTION);
846 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
847 _mm512_ceil_pd(__m512d __A)
849 return (__m512d) __builtin_ia32_rndscalepd_mask ((__v8df) __A,
852 _MM_FROUND_CUR_DIRECTION);
855 static __inline __m512i __attribute__ (( __always_inline__, __nodebug__))
856 _mm512_abs_epi64(__m512i __A)
858 return (__m512i) __builtin_ia32_pabsq512_mask ((__v8di) __A,
860 _mm512_setzero_si512 (),
864 static __inline __m512i __attribute__ (( __always_inline__, __nodebug__))
865 _mm512_abs_epi32(__m512i __A)
867 return (__m512i) __builtin_ia32_pabsd512_mask ((__v16si) __A,
869 _mm512_setzero_si512 (),
873 #define _mm512_roundscale_ps(A, B) __extension__ ({ \
874 (__m512)__builtin_ia32_rndscaleps_mask((__v16sf)(A), (B), (__v16sf)(A), \
875 -1, _MM_FROUND_CUR_DIRECTION); })
877 #define _mm512_roundscale_pd(A, B) __extension__ ({ \
878 (__m512d)__builtin_ia32_rndscalepd_mask((__v8df)(A), (B), (__v8df)(A), \
879 -1, _MM_FROUND_CUR_DIRECTION); })
881 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
882 _mm512_fmadd_pd(__m512d __A, __m512d __B, __m512d __C)
885 __builtin_ia32_vfmaddpd512_mask(__A,
889 _MM_FROUND_CUR_DIRECTION);
892 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
893 _mm512_fmsub_pd(__m512d __A, __m512d __B, __m512d __C)
896 __builtin_ia32_vfmsubpd512_mask(__A,
900 _MM_FROUND_CUR_DIRECTION);
903 static __inline__ __m512d __attribute__((__always_inline__, __nodebug__))
904 _mm512_fnmadd_pd(__m512d __A, __m512d __B, __m512d __C)
907 __builtin_ia32_vfnmaddpd512_mask(__A,
911 _MM_FROUND_CUR_DIRECTION);
914 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
915 _mm512_fmadd_ps(__m512 __A, __m512 __B, __m512 __C)
918 __builtin_ia32_vfmaddps512_mask(__A,
922 _MM_FROUND_CUR_DIRECTION);
925 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
926 _mm512_fmsub_ps(__m512 __A, __m512 __B, __m512 __C)
929 __builtin_ia32_vfmsubps512_mask(__A,
933 _MM_FROUND_CUR_DIRECTION);
936 static __inline__ __m512 __attribute__((__always_inline__, __nodebug__))
937 _mm512_fnmadd_ps(__m512 __A, __m512 __B, __m512 __C)
940 __builtin_ia32_vfnmaddps512_mask(__A,
944 _MM_FROUND_CUR_DIRECTION);
947 /* Vector permutations */
949 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
950 _mm512_permutex2var_epi32(__m512i __A, __m512i __I, __m512i __B)
952 return (__m512i) __builtin_ia32_vpermt2vard512_mask ((__v16si) __I
958 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
959 _mm512_permutex2var_epi64(__m512i __A, __m512i __I, __m512i __B)
961 return (__m512i) __builtin_ia32_vpermt2varq512_mask ((__v8di) __I
968 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
969 _mm512_permutex2var_pd(__m512d __A, __m512i __I, __m512d __B)
971 return (__m512d) __builtin_ia32_vpermt2varpd512_mask ((__v8di) __I
977 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
978 _mm512_permutex2var_ps(__m512 __A, __m512i __I, __m512 __B)
980 return (__m512) __builtin_ia32_vpermt2varps512_mask ((__v16si) __I
987 #define _mm512_alignr_epi64(A, B, I) __extension__ ({ \
988 (__m512i)__builtin_ia32_alignq512_mask((__v8di)(__m512i)(A), \
989 (__v8di)(__m512i)(B), \
990 (I), (__v8di)_mm512_setzero_si512(), \
993 #define _mm512_alignr_epi32(A, B, I) __extension__ ({ \
994 (__m512i)__builtin_ia32_alignd512_mask((__v16si)(__m512i)(A), \
995 (__v16si)(__m512i)(B), \
996 (I), (__v16si)_mm512_setzero_si512(), \
1001 #define _mm512_extractf64x4_pd(A, I) __extension__ ({ \
1002 __m512d __A = (A); \
1004 __builtin_ia32_extractf64x4_mask((__v8df)__A, \
1006 (__v4df)_mm256_setzero_si256(), \
1009 #define _mm512_extractf32x4_ps(A, I) __extension__ ({ \
1012 __builtin_ia32_extractf32x4_mask((__v16sf)__A, \
1014 (__v4sf)_mm_setzero_ps(), \
1019 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
1020 _mm512_mask_blend_pd(__mmask8 __U, __m512d __A, __m512d __W)
1022 return (__m512d) __builtin_ia32_blendmpd_512_mask ((__v8df) __A,
1027 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
1028 _mm512_mask_blend_ps(__mmask16 __U, __m512 __A, __m512 __W)
1030 return (__m512) __builtin_ia32_blendmps_512_mask ((__v16sf) __A,
1035 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
1036 _mm512_mask_blend_epi64(__mmask8 __U, __m512i __A, __m512i __W)
1038 return (__m512i) __builtin_ia32_blendmq_512_mask ((__v8di) __A,
1043 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
1044 _mm512_mask_blend_epi32(__mmask16 __U, __m512i __A, __m512i __W)
1046 return (__m512i) __builtin_ia32_blendmd_512_mask ((__v16si) __A,
1053 #define _mm512_cmp_round_ps_mask(A, B, P, R) __extension__ ({ \
1054 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1055 (__v16sf)(__m512)(B), \
1056 (P), (__mmask16)-1, (R)); })
1058 #define _mm512_mask_cmp_round_ps_mask(U, A, B, P, R) __extension__ ({ \
1059 (__mmask16)__builtin_ia32_cmpps512_mask((__v16sf)(__m512)(A), \
1060 (__v16sf)(__m512)(B), \
1061 (P), (__mmask16)(U), (R)); })
1063 #define _mm512_cmp_ps_mask(A, B, P) \
1064 _mm512_cmp_round_ps_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1066 #define _mm512_mask_cmp_ps_mask(U, A, B, P) \
1067 _mm512_mask_cmp_round_ps_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1069 #define _mm512_cmp_round_pd_mask(A, B, P, R) __extension__ ({ \
1070 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1071 (__v8df)(__m512d)(B), \
1072 (P), (__mmask8)-1, (R)); })
1074 #define _mm512_mask_cmp_round_pd_mask(U, A, B, P, R) __extension__ ({ \
1075 (__mmask8)__builtin_ia32_cmppd512_mask((__v8df)(__m512d)(A), \
1076 (__v8df)(__m512d)(B), \
1077 (P), (__mmask8)(U), (R)); })
1079 #define _mm512_cmp_pd_mask(A, B, P) \
1080 _mm512_cmp_round_pd_mask((A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1082 #define _mm512_mask_cmp_pd_mask(U, A, B, P) \
1083 _mm512_mask_cmp_round_pd_mask((U), (A), (B), (P), _MM_FROUND_CUR_DIRECTION)
1087 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
1088 _mm512_cvttps_epu32(__m512 __A)
1090 return (__m512i) __builtin_ia32_cvttps2udq512_mask ((__v16sf) __A,
1092 _mm512_setzero_si512 (),
1094 _MM_FROUND_CUR_DIRECTION);
1097 #define _mm512_cvt_roundepi32_ps(A, R) __extension__ ({ \
1098 (__m512)__builtin_ia32_cvtdq2ps512_mask((__v16si)(A), \
1099 (__v16sf)_mm512_setzero_ps(), \
1100 (__mmask16)-1, (R)); })
1102 #define _mm512_cvt_roundepu32_ps(A, R) __extension__ ({ \
1103 (__m512)__builtin_ia32_cvtudq2ps512_mask((__v16si)(A), \
1104 (__v16sf)_mm512_setzero_ps(), \
1105 (__mmask16)-1, (R)); })
1107 static __inline __m512d __attribute__ (( __always_inline__, __nodebug__))
1108 _mm512_cvtepi32_pd(__m256i __A)
1110 return (__m512d) __builtin_ia32_cvtdq2pd512_mask ((__v8si) __A,
1112 _mm512_setzero_pd (),
1116 static __inline __m512d __attribute__ (( __always_inline__, __nodebug__))
1117 _mm512_cvtepu32_pd(__m256i __A)
1119 return (__m512d) __builtin_ia32_cvtudq2pd512_mask ((__v8si) __A,
1121 _mm512_setzero_pd (),
1125 #define _mm512_cvt_roundpd_ps(A, R) __extension__ ({ \
1126 (__m256)__builtin_ia32_cvtpd2ps512_mask((__v8df)(A), \
1127 (__v8sf)_mm256_setzero_ps(), \
1128 (__mmask8)-1, (R)); })
1130 #define _mm512_cvtps_ph(A, I) __extension__ ({ \
1131 (__m256i)__builtin_ia32_vcvtps2ph512_mask((__v16sf)(A), (I), \
1132 (__v16hi)_mm256_setzero_si256(), \
1135 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
1136 _mm512_cvtph_ps(__m256i __A)
1138 return (__m512) __builtin_ia32_vcvtph2ps512_mask ((__v16hi) __A,
1140 _mm512_setzero_ps (),
1142 _MM_FROUND_CUR_DIRECTION);
1145 static __inline __m512i __attribute__((__always_inline__, __nodebug__))
1146 _mm512_cvttps_epi32(__m512 a)
1149 __builtin_ia32_cvttps2dq512_mask((__v16sf) a,
1150 (__v16si) _mm512_setzero_si512 (),
1151 (__mmask16) -1, _MM_FROUND_CUR_DIRECTION);
1154 static __inline __m256i __attribute__((__always_inline__, __nodebug__))
1155 _mm512_cvttpd_epi32(__m512d a)
1157 return (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df) a,
1158 (__v8si)_mm256_setzero_si256(),
1160 _MM_FROUND_CUR_DIRECTION);
1163 #define _mm512_cvtt_roundpd_epi32(A, R) __extension__ ({ \
1164 (__m256i)__builtin_ia32_cvttpd2dq512_mask((__v8df)(A), \
1165 (__v8si)_mm256_setzero_si256(), \
1166 (__mmask8)-1, (R)); })
1168 #define _mm512_cvtt_roundps_epi32(A, R) __extension__ ({ \
1169 (__m512i)__builtin_ia32_cvttps2dq512_mask((__v16sf)(A), \
1170 (__v16si)_mm512_setzero_si512(), \
1171 (__mmask16)-1, (R)); })
1173 #define _mm512_cvt_roundps_epi32(A, R) __extension__ ({ \
1174 (__m512i)__builtin_ia32_cvtps2dq512_mask((__v16sf)(A), \
1175 (__v16si)_mm512_setzero_si512(), \
1176 (__mmask16)-1, (R)); })
1178 #define _mm512_cvt_roundpd_epi32(A, R) __extension__ ({ \
1179 (__m256i)__builtin_ia32_cvtpd2dq512_mask((__v8df)(A), \
1180 (__v8si)_mm256_setzero_si256(), \
1181 (__mmask8)-1, (R)); })
1183 #define _mm512_cvt_roundps_epu32(A, R) __extension__ ({ \
1184 (__m512i)__builtin_ia32_cvtps2udq512_mask((__v16sf)(A), \
1185 (__v16si)_mm512_setzero_si512(), \
1186 (__mmask16)-1, (R)); })
1188 #define _mm512_cvt_roundpd_epu32(A, R) __extension__ ({ \
1189 (__m256i)__builtin_ia32_cvtpd2udq512_mask((__v8df)(A), \
1190 (__v8si)_mm256_setzero_si256(), \
1191 (__mmask8) -1, (R)); })
1193 /* Unpack and Interleave */
1194 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
1195 _mm512_unpackhi_pd(__m512d __a, __m512d __b)
1197 return __builtin_shufflevector(__a, __b, 1, 9, 1+2, 9+2, 1+4, 9+4, 1+6, 9+6);
1200 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
1201 _mm512_unpacklo_pd(__m512d __a, __m512d __b)
1203 return __builtin_shufflevector(__a, __b, 0, 8, 0+2, 8+2, 0+4, 8+4, 0+6, 8+6);
1206 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
1207 _mm512_unpackhi_ps(__m512 __a, __m512 __b)
1209 return __builtin_shufflevector(__a, __b,
1211 2+4, 18+4, 3+4, 19+4,
1212 2+8, 18+8, 3+8, 19+8,
1213 2+12, 18+12, 3+12, 19+12);
1216 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
1217 _mm512_unpacklo_ps(__m512 __a, __m512 __b)
1219 return __builtin_shufflevector(__a, __b,
1221 0+4, 16+4, 1+4, 17+4,
1222 0+8, 16+8, 1+8, 17+8,
1223 0+12, 16+12, 1+12, 17+12);
1228 static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
1229 _mm512_test_epi32_mask(__m512i __A, __m512i __B)
1231 return (__mmask16) __builtin_ia32_ptestmd512 ((__v16si) __A,
1236 static __inline __mmask8 __attribute__ ((__always_inline__, __nodebug__))
1237 _mm512_test_epi64_mask(__m512i __A, __m512i __B)
1239 return (__mmask8) __builtin_ia32_ptestmq512 ((__v8di) __A,
1246 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
1247 _mm512_maskz_loadu_epi32(__mmask16 __U, void const *__P)
1249 return (__m512i) __builtin_ia32_loaddqusi512_mask ((const __v16si *)__P,
1251 _mm512_setzero_si512 (),
1255 static __inline __m512i __attribute__ ((__always_inline__, __nodebug__))
1256 _mm512_maskz_loadu_epi64(__mmask8 __U, void const *__P)
1258 return (__m512i) __builtin_ia32_loaddqudi512_mask ((const __v8di *)__P,
1260 _mm512_setzero_si512 (),
1264 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
1265 _mm512_maskz_loadu_ps(__mmask16 __U, void const *__P)
1267 return (__m512) __builtin_ia32_loadups512_mask ((const __v16sf *)__P,
1269 _mm512_setzero_ps (),
1273 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
1274 _mm512_maskz_loadu_pd(__mmask8 __U, void const *__P)
1276 return (__m512d) __builtin_ia32_loadupd512_mask ((const __v8df *)__P,
1278 _mm512_setzero_pd (),
1282 static __inline __m512 __attribute__ ((__always_inline__, __nodebug__))
1283 _mm512_maskz_load_ps(__mmask16 __U, void const *__P)
1285 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__P,
1287 _mm512_setzero_ps (),
1291 static __inline __m512d __attribute__ ((__always_inline__, __nodebug__))
1292 _mm512_maskz_load_pd(__mmask8 __U, void const *__P)
1294 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__P,
1296 _mm512_setzero_pd (),
1300 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
1301 _mm512_loadu_pd(double const *__p)
1305 } __attribute__((__packed__, __may_alias__));
1306 return ((struct __loadu_pd*)__p)->__v;
1309 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
1310 _mm512_loadu_ps(float const *__p)
1314 } __attribute__((__packed__, __may_alias__));
1315 return ((struct __loadu_ps*)__p)->__v;
1318 static __inline __m512 __attribute__((__always_inline__, __nodebug__))
1319 _mm512_load_ps(double const *__p)
1321 return (__m512) __builtin_ia32_loadaps512_mask ((const __v16sf *)__p,
1323 _mm512_setzero_ps (),
1327 static __inline __m512d __attribute__((__always_inline__, __nodebug__))
1328 _mm512_load_pd(float const *__p)
1330 return (__m512d) __builtin_ia32_loadapd512_mask ((const __v8df *)__p,
1332 _mm512_setzero_pd (),
1336 /* SIMD store ops */
1338 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1339 _mm512_mask_storeu_epi64(void *__P, __mmask8 __U, __m512i __A)
1341 __builtin_ia32_storedqudi512_mask ((__v8di *)__P, (__v8di) __A,
1345 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1346 _mm512_mask_storeu_epi32(void *__P, __mmask16 __U, __m512i __A)
1348 __builtin_ia32_storedqusi512_mask ((__v16si *)__P, (__v16si) __A,
1352 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1353 _mm512_mask_storeu_pd(void *__P, __mmask8 __U, __m512d __A)
1355 __builtin_ia32_storeupd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
1358 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1359 _mm512_storeu_pd(void *__P, __m512d __A)
1361 __builtin_ia32_storeupd512_mask((__v8df *)__P, (__v8df)__A, (__mmask8)-1);
1364 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1365 _mm512_mask_storeu_ps(void *__P, __mmask16 __U, __m512 __A)
1367 __builtin_ia32_storeups512_mask ((__v16sf *)__P, (__v16sf) __A,
1371 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1372 _mm512_storeu_ps(void *__P, __m512 __A)
1374 __builtin_ia32_storeups512_mask((__v16sf *)__P, (__v16sf)__A, (__mmask16)-1);
1377 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1378 _mm512_mask_store_pd(void *__P, __mmask8 __U, __m512d __A)
1380 __builtin_ia32_storeapd512_mask ((__v8df *)__P, (__v8df) __A, (__mmask8) __U);
1383 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1384 _mm512_store_pd(void *__P, __m512d __A)
1386 *(__m512d*)__P = __A;
1389 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1390 _mm512_mask_store_ps(void *__P, __mmask16 __U, __m512 __A)
1392 __builtin_ia32_storeaps512_mask ((__v16sf *)__P, (__v16sf) __A,
1396 static __inline void __attribute__ ((__always_inline__, __nodebug__))
1397 _mm512_store_ps(void *__P, __m512 __A)
1399 *(__m512*)__P = __A;
1404 static __inline __mmask16 __attribute__ ((__always_inline__, __nodebug__))
1405 _mm512_knot(__mmask16 __M)
1407 return __builtin_ia32_knothi(__M);
1410 /* Integer compare */
1412 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1413 _mm512_cmpeq_epi32_mask(__m512i __a, __m512i __b) {
1414 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
1418 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1419 _mm512_mask_cmpeq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1420 return (__mmask16)__builtin_ia32_pcmpeqd512_mask((__v16si)__a, (__v16si)__b,
1424 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1425 _mm512_cmpeq_epu32_mask(__m512i __a, __m512i __b) {
1426 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
1430 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1431 _mm512_mask_cmpeq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1432 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 0,
1436 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1437 _mm512_mask_cmpeq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1438 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
1442 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1443 _mm512_cmpeq_epi64_mask(__m512i __a, __m512i __b) {
1444 return (__mmask8)__builtin_ia32_pcmpeqq512_mask((__v8di)__a, (__v8di)__b,
1448 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1449 _mm512_cmpeq_epu64_mask(__m512i __a, __m512i __b) {
1450 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
1454 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1455 _mm512_mask_cmpeq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1456 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 0,
1460 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1461 _mm512_cmpge_epi32_mask(__m512i __a, __m512i __b) {
1462 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
1466 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1467 _mm512_mask_cmpge_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1468 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 5,
1472 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1473 _mm512_cmpge_epu32_mask(__m512i __a, __m512i __b) {
1474 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
1478 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1479 _mm512_mask_cmpge_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1480 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 5,
1484 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1485 _mm512_cmpge_epi64_mask(__m512i __a, __m512i __b) {
1486 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
1490 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1491 _mm512_mask_cmpge_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1492 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 5,
1496 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1497 _mm512_cmpge_epu64_mask(__m512i __a, __m512i __b) {
1498 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
1502 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1503 _mm512_mask_cmpge_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1504 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 5,
1508 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1509 _mm512_cmpgt_epi32_mask(__m512i __a, __m512i __b) {
1510 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
1514 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1515 _mm512_mask_cmpgt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1516 return (__mmask16)__builtin_ia32_pcmpgtd512_mask((__v16si)__a, (__v16si)__b,
1520 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1521 _mm512_cmpgt_epu32_mask(__m512i __a, __m512i __b) {
1522 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
1526 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1527 _mm512_mask_cmpgt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1528 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 6,
1532 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1533 _mm512_mask_cmpgt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1534 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
1538 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1539 _mm512_cmpgt_epi64_mask(__m512i __a, __m512i __b) {
1540 return (__mmask8)__builtin_ia32_pcmpgtq512_mask((__v8di)__a, (__v8di)__b,
1544 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1545 _mm512_cmpgt_epu64_mask(__m512i __a, __m512i __b) {
1546 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
1550 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1551 _mm512_mask_cmpgt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1552 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 6,
1556 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1557 _mm512_cmple_epi32_mask(__m512i __a, __m512i __b) {
1558 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
1562 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1563 _mm512_mask_cmple_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1564 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 2,
1568 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1569 _mm512_cmple_epu32_mask(__m512i __a, __m512i __b) {
1570 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
1574 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1575 _mm512_mask_cmple_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1576 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 2,
1580 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1581 _mm512_cmple_epi64_mask(__m512i __a, __m512i __b) {
1582 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
1586 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1587 _mm512_mask_cmple_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1588 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 2,
1592 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1593 _mm512_cmple_epu64_mask(__m512i __a, __m512i __b) {
1594 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
1598 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1599 _mm512_mask_cmple_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1600 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 2,
1604 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1605 _mm512_cmplt_epi32_mask(__m512i __a, __m512i __b) {
1606 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
1610 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1611 _mm512_mask_cmplt_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1612 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 1,
1616 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1617 _mm512_cmplt_epu32_mask(__m512i __a, __m512i __b) {
1618 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
1622 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1623 _mm512_mask_cmplt_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1624 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 1,
1628 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1629 _mm512_cmplt_epi64_mask(__m512i __a, __m512i __b) {
1630 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
1634 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1635 _mm512_mask_cmplt_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1636 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 1,
1640 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1641 _mm512_cmplt_epu64_mask(__m512i __a, __m512i __b) {
1642 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
1646 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1647 _mm512_mask_cmplt_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1648 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 1,
1652 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1653 _mm512_cmpneq_epi32_mask(__m512i __a, __m512i __b) {
1654 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
1658 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1659 _mm512_mask_cmpneq_epi32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1660 return (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, 4,
1664 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1665 _mm512_cmpneq_epu32_mask(__m512i __a, __m512i __b) {
1666 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
1670 static __inline__ __mmask16 __attribute__((__always_inline__, __nodebug__))
1671 _mm512_mask_cmpneq_epu32_mask(__mmask16 __u, __m512i __a, __m512i __b) {
1672 return (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, 4,
1676 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1677 _mm512_cmpneq_epi64_mask(__m512i __a, __m512i __b) {
1678 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
1682 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1683 _mm512_mask_cmpneq_epi64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1684 return (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, 4,
1688 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1689 _mm512_cmpneq_epu64_mask(__m512i __a, __m512i __b) {
1690 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
1694 static __inline__ __mmask8 __attribute__((__always_inline__, __nodebug__))
1695 _mm512_mask_cmpneq_epu64_mask(__mmask8 __u, __m512i __a, __m512i __b) {
1696 return (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, 4,
1700 #define _mm512_cmp_epi32_mask(a, b, p) __extension__ ({ \
1701 __m512i __a = (a); \
1702 __m512i __b = (b); \
1703 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
1706 #define _mm512_cmp_epu32_mask(a, b, p) __extension__ ({ \
1707 __m512i __a = (a); \
1708 __m512i __b = (b); \
1709 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
1712 #define _mm512_cmp_epi64_mask(a, b, p) __extension__ ({ \
1713 __m512i __a = (a); \
1714 __m512i __b = (b); \
1715 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
1718 #define _mm512_cmp_epu64_mask(a, b, p) __extension__ ({ \
1719 __m512i __a = (a); \
1720 __m512i __b = (b); \
1721 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
1724 #define _mm512_mask_cmp_epi32_mask(m, a, b, p) __extension__ ({ \
1725 __m512i __a = (a); \
1726 __m512i __b = (b); \
1727 (__mmask16)__builtin_ia32_cmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
1730 #define _mm512_mask_cmp_epu32_mask(m, a, b, p) __extension__ ({ \
1731 __m512i __a = (a); \
1732 __m512i __b = (b); \
1733 (__mmask16)__builtin_ia32_ucmpd512_mask((__v16si)__a, (__v16si)__b, (p), \
1736 #define _mm512_mask_cmp_epi64_mask(m, a, b, p) __extension__ ({ \
1737 __m512i __a = (a); \
1738 __m512i __b = (b); \
1739 (__mmask8)__builtin_ia32_cmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
1742 #define _mm512_mask_cmp_epu64_mask(m, a, b, p) __extension__ ({ \
1743 __m512i __a = (a); \
1744 __m512i __b = (b); \
1745 (__mmask8)__builtin_ia32_ucmpq512_mask((__v8di)__a, (__v8di)__b, (p), \
1747 #endif // __AVX512FINTRIN_H