25 #error "Never use <avx512vlvbmi2intrin.h> directly; include <immintrin.h> instead." 28 #ifndef __AVX512VLVBMI2INTRIN_H 29 #define __AVX512VLVBMI2INTRIN_H 32 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512vl,avx512vbmi2"))) 36 return (__m128i)(__v8hi){ 0, 0, 0, 0, 0, 0, 0, 0 };
42 return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
50 return (__m128i) __builtin_ia32_compresshi128_mask ((__v8hi) __D,
58 return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
66 return (__m128i) __builtin_ia32_compressqi128_mask ((__v16qi) __D,
74 __builtin_ia32_compressstorehi128_mask ((__v8hi *) __P, (__v8hi) __D,
81 __builtin_ia32_compressstoreqi128_mask ((__v16qi *) __P, (__v16qi) __D,
88 return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
96 return (__m128i) __builtin_ia32_expandhi128_mask ((__v8hi) __D,
104 return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
112 return (__m128i) __builtin_ia32_expandqi128_mask ((__v16qi) __D,
120 return (__m128i) __builtin_ia32_expandloadhi128_mask ((
const __v8hi *)__P,
128 return (__m128i) __builtin_ia32_expandloadhi128_mask ((
const __v8hi *)__P,
136 return (__m128i) __builtin_ia32_expandloadqi128_mask ((
const __v16qi *)__P,
144 return (__m128i) __builtin_ia32_expandloadqi128_mask ((
const __v16qi *)__P,
151 return (__m256i)(__v16hi){ 0, 0, 0, 0, 0, 0, 0, 0,
152 0, 0, 0, 0, 0, 0, 0, 0 };
158 return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
166 return (__m256i) __builtin_ia32_compresshi256_mask ((__v16hi) __D,
174 return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
182 return (__m256i) __builtin_ia32_compressqi256_mask ((__v32qi) __D,
190 __builtin_ia32_compressstorehi256_mask ((__v16hi *) __P, (__v16hi) __D,
197 __builtin_ia32_compressstoreqi256_mask ((__v32qi *) __P, (__v32qi) __D,
204 return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
212 return (__m256i) __builtin_ia32_expandhi256_mask ((__v16hi) __D,
220 return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
228 return (__m256i) __builtin_ia32_expandqi256_mask ((__v32qi) __D,
236 return (__m256i) __builtin_ia32_expandloadhi256_mask ((
const __v16hi *)__P,
244 return (__m256i) __builtin_ia32_expandloadhi256_mask ((
const __v16hi *)__P,
252 return (__m256i) __builtin_ia32_expandloadqi256_mask ((
const __v32qi *)__P,
260 return (__m256i) __builtin_ia32_expandloadqi256_mask ((
const __v32qi *)__P,
265 #define _mm256_mask_shldi_epi64(S, U, A, B, I) __extension__ ({ \ 266 (__m256i)__builtin_ia32_vpshldq256_mask((__v4di)(A), \ 272 #define _mm256_maskz_shldi_epi64(U, A, B, I) \ 273 _mm256_mask_shldi_epi64(_mm256_setzero_hi(), (U), (A), (B), (I)) 275 #define _mm256_shldi_epi64(A, B, I) \ 276 _mm256_mask_shldi_epi64(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 278 #define _mm128_mask_shldi_epi64(S, U, A, B, I) __extension__ ({ \ 279 (__m128i)__builtin_ia32_vpshldq128_mask((__v2di)(A), \ 285 #define _mm128_maskz_shldi_epi64(U, A, B, I) \ 286 _mm128_mask_shldi_epi64(_mm128_setzero_hi(), (U), (A), (B), (I)) 288 #define _mm128_shldi_epi64(A, B, I) \ 289 _mm128_mask_shldi_epi64(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 291 #define _mm256_mask_shldi_epi32(S, U, A, B, I) __extension__ ({ \ 292 (__m256i)__builtin_ia32_vpshldd256_mask((__v8si)(A), \ 298 #define _mm256_maskz_shldi_epi32(U, A, B, I) \ 299 _mm256_mask_shldi_epi32(_mm256_setzero_hi(), (U), (A), (B), (I)) 301 #define _mm256_shldi_epi32(A, B, I) \ 302 _mm256_mask_shldi_epi32(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 304 #define _mm128_mask_shldi_epi32(S, U, A, B, I) __extension__ ({ \ 305 (__m128i)__builtin_ia32_vpshldd128_mask((__v4si)(A), \ 311 #define _mm128_maskz_shldi_epi32(U, A, B, I) \ 312 _mm128_mask_shldi_epi32(_mm128_setzero_hi(), (U), (A), (B), (I)) 314 #define _mm128_shldi_epi32(A, B, I) \ 315 _mm128_mask_shldi_epi32(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 317 #define _mm256_mask_shldi_epi16(S, U, A, B, I) __extension__ ({ \ 318 (__m256i)__builtin_ia32_vpshldw256_mask((__v16hi)(A), \ 324 #define _mm256_maskz_shldi_epi16(U, A, B, I) \ 325 _mm256_mask_shldi_epi16(_mm256_setzero_hi(), (U), (A), (B), (I)) 327 #define _mm256_shldi_epi16(A, B, I) \ 328 _mm256_mask_shldi_epi16(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 330 #define _mm128_mask_shldi_epi16(S, U, A, B, I) __extension__ ({ \ 331 (__m128i)__builtin_ia32_vpshldw128_mask((__v8hi)(A), \ 337 #define _mm128_maskz_shldi_epi16(U, A, B, I) \ 338 _mm128_mask_shldi_epi16(_mm128_setzero_hi(), (U), (A), (B), (I)) 340 #define _mm128_shldi_epi16(A, B, I) \ 341 _mm128_mask_shldi_epi16(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 343 #define _mm256_mask_shrdi_epi64(S, U, A, B, I) __extension__ ({ \ 344 (__m256i)__builtin_ia32_vpshrdq256_mask((__v4di)(A), \ 350 #define _mm256_maskz_shrdi_epi64(U, A, B, I) \ 351 _mm256_mask_shrdi_epi64(_mm256_setzero_hi(), (U), (A), (B), (I)) 353 #define _mm256_shrdi_epi64(A, B, I) \ 354 _mm256_mask_shrdi_epi64(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 356 #define _mm128_mask_shrdi_epi64(S, U, A, B, I) __extension__ ({ \ 357 (__m128i)__builtin_ia32_vpshrdq128_mask((__v2di)(A), \ 363 #define _mm128_maskz_shrdi_epi64(U, A, B, I) \ 364 _mm128_mask_shrdi_epi64(_mm128_setzero_hi(), (U), (A), (B), (I)) 366 #define _mm128_shrdi_epi64(A, B, I) \ 367 _mm128_mask_shrdi_epi64(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 369 #define _mm256_mask_shrdi_epi32(S, U, A, B, I) __extension__ ({ \ 370 (__m256i)__builtin_ia32_vpshrdd256_mask((__v8si)(A), \ 376 #define _mm256_maskz_shrdi_epi32(U, A, B, I) \ 377 _mm256_mask_shrdi_epi32(_mm256_setzero_hi(), (U), (A), (B), (I)) 379 #define _mm256_shrdi_epi32(A, B, I) \ 380 _mm256_mask_shrdi_epi32(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 382 #define _mm128_mask_shrdi_epi32(S, U, A, B, I) __extension__ ({ \ 383 (__m128i)__builtin_ia32_vpshrdd128_mask((__v4si)(A), \ 389 #define _mm128_maskz_shrdi_epi32(U, A, B, I) \ 390 _mm128_mask_shrdi_epi32(_mm128_setzero_hi(), (U), (A), (B), (I)) 392 #define _mm128_shrdi_epi32(A, B, I) \ 393 _mm128_mask_shrdi_epi32(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 395 #define _mm256_mask_shrdi_epi16(S, U, A, B, I) __extension__ ({ \ 396 (__m256i)__builtin_ia32_vpshrdw256_mask((__v16hi)(A), \ 402 #define _mm256_maskz_shrdi_epi16(U, A, B, I) \ 403 _mm256_mask_shrdi_epi16(_mm256_setzero_hi(), (U), (A), (B), (I)) 405 #define _mm256_shrdi_epi16(A, B, I) \ 406 _mm256_mask_shrdi_epi16(_mm256_undefined_si256(), (__mmask8)(-1), (A), (B), (I)) 408 #define _mm128_mask_shrdi_epi16(S, U, A, B, I) __extension__ ({ \ 409 (__m128i)__builtin_ia32_vpshrdw128_mask((__v8hi)(A), \ 415 #define _mm128_maskz_shrdi_epi16(U, A, B, I) \ 416 _mm128_mask_shrdi_epi16(_mm128_setzero_hi(), (U), (A), (B), (I)) 418 #define _mm128_shrdi_epi16(A, B, I) \ 419 _mm128_mask_shrdi_epi16(_mm_undefined_si128(), (__mmask8)(-1), (A), (B), (I)) 424 return (__m256i) __builtin_ia32_vpshldvq256_mask ((__v4di) __S,
433 return (__m256i) __builtin_ia32_vpshldvq256_maskz ((__v4di) __S,
442 return (__m256i) __builtin_ia32_vpshldvq256_mask ((__v4di) __S,
451 return (__m128i) __builtin_ia32_vpshldvq128_mask ((__v2di) __S,
460 return (__m128i) __builtin_ia32_vpshldvq128_maskz ((__v2di) __S,
469 return (__m128i) __builtin_ia32_vpshldvq128_mask ((__v2di) __S,
478 return (__m256i) __builtin_ia32_vpshldvd256_mask ((__v8si) __S,
487 return (__m256i) __builtin_ia32_vpshldvd256_maskz ((__v8si) __S,
496 return (__m256i) __builtin_ia32_vpshldvd256_mask ((__v8si) __S,
505 return (__m128i) __builtin_ia32_vpshldvd128_mask ((__v4si) __S,
514 return (__m128i) __builtin_ia32_vpshldvd128_maskz ((__v4si) __S,
523 return (__m128i) __builtin_ia32_vpshldvd128_mask ((__v4si) __S,
532 return (__m256i) __builtin_ia32_vpshldvw256_mask ((__v16hi) __S,
541 return (__m256i) __builtin_ia32_vpshldvw256_maskz ((__v16hi) __S,
550 return (__m256i) __builtin_ia32_vpshldvw256_mask ((__v16hi) __S,
559 return (__m128i) __builtin_ia32_vpshldvw128_mask ((__v8hi) __S,
568 return (__m128i) __builtin_ia32_vpshldvw128_maskz ((__v8hi) __S,
577 return (__m128i) __builtin_ia32_vpshldvw128_mask ((__v8hi) __S,
586 return (__m256i) __builtin_ia32_vpshrdvq256_mask ((__v4di) __S,
595 return (__m256i) __builtin_ia32_vpshrdvq256_maskz ((__v4di) __S,
604 return (__m256i) __builtin_ia32_vpshrdvq256_mask ((__v4di) __S,
613 return (__m128i) __builtin_ia32_vpshrdvq128_mask ((__v2di) __S,
622 return (__m128i) __builtin_ia32_vpshrdvq128_maskz ((__v2di) __S,
631 return (__m128i) __builtin_ia32_vpshrdvq128_mask ((__v2di) __S,
640 return (__m256i) __builtin_ia32_vpshrdvd256_mask ((__v8si) __S,
649 return (__m256i) __builtin_ia32_vpshrdvd256_maskz ((__v8si) __S,
658 return (__m256i) __builtin_ia32_vpshrdvd256_mask ((__v8si) __S,
667 return (__m128i) __builtin_ia32_vpshrdvd128_mask ((__v4si) __S,
676 return (__m128i) __builtin_ia32_vpshrdvd128_maskz ((__v4si) __S,
685 return (__m128i) __builtin_ia32_vpshrdvd128_mask ((__v4si) __S,
694 return (__m256i) __builtin_ia32_vpshrdvw256_mask ((__v16hi) __S,
703 return (__m256i) __builtin_ia32_vpshrdvw256_maskz ((__v16hi) __S,
712 return (__m256i) __builtin_ia32_vpshrdvw256_mask ((__v16hi) __S,
721 return (__m128i) __builtin_ia32_vpshrdvw128_mask ((__v8hi) __S,
730 return (__m128i) __builtin_ia32_vpshrdvw128_maskz ((__v8hi) __S,
739 return (__m128i) __builtin_ia32_vpshrdvw128_mask ((__v8hi) __S,
746 #undef __DEFAULT_FN_ATTRS static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi64(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expandloadu_epi16(__m256i __S, __mmask16 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi64(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi16(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expandloadu_epi16(__mmask8 __U, void const *__P)
static __inline__ void __DEFAULT_FN_ATTRS _mm128_mask_compressstoreu_epi16(void *__P, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_compress_epi8(__mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expand_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expand_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expandloadu_epi8(__m128i __S, __mmask16 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expand_epi8(__mmask32 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expandloadu_epi16(__m128i __S, __mmask8 __U, void const *__P)
#define __DEFAULT_FN_ATTRS
static __inline__ void __DEFAULT_FN_ATTRS _mm256_mask_compressstoreu_epi16(void *__P, __mmask16 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_compress_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expand_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expand_epi16(__m128i __S, __mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi32(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi16(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expandloadu_epi16(__mmask16 __U, void const *__P)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_compress_epi8(__m256i __S, __mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_expand_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ void __DEFAULT_FN_ATTRS _mm256_mask_compressstoreu_epi8(void *__P, __mmask32 __U, __m256i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_expandloadu_epi8(__m256i __S, __mmask32 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expand_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi32(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shrdv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi16(__mmask16 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi64(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_compress_epi16(__m256i __S, __mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi16(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi32(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_compress_epi8(__m128i __S, __mmask16 __U, __m128i __D)
static __inline__ void __DEFAULT_FN_ATTRS _mm128_mask_compressstoreu_epi8(void *__P, __mmask16 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_compress_epi16(__mmask16 __U, __m256i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shldv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_compress_epi16(__mmask8 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expandloadu_epi8(__mmask16 __U, void const *__P)
static __inline __m256i __DEFAULT_FN_ATTRS _mm256_setzero_hi(void)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shrdv_epi16(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_shrdv_epi16(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shrdv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi32(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_expand_epi8(__mmask16 __U, __m128i __D)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_maskz_compress_epi8(__mmask16 __U, __m128i __D)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi64(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shldv_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shrdv_epi64(__m128i __S, __m128i __A, __m128i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi64(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_mask_shrdv_epi16(__m256i __S, __mmask16 __U, __m256i __A, __m256i __B)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_shldv_epi64(__m128i __S, __m128i __A, __m128i __B)
static __inline __m128i __DEFAULT_FN_ATTRS _mm128_setzero_hi(void)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_shldv_epi64(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_shldv_epi16(__m256i __S, __m256i __A, __m256i __B)
static __inline__ __m256i __DEFAULT_FN_ATTRS _mm256_maskz_expandloadu_epi8(__mmask32 __U, void const *__P)
static __inline__ __m128i __DEFAULT_FN_ATTRS _mm128_mask_shldv_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B)