╭ avx512vbmiintrin.h ───────────────────────────────────────────╮ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ╰───────────────────────────────────────────────────────────────╯
╭ find file ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╮ ╭────╮ ╭ clone ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╮ │ │ │http│ ssh │ │ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─╯ ╰────╯ ╰ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ╯
.. llvm_libc_wrappers/ openmp_wrappers/ ppc_wrappers/ __clang_spirv_builtins.h __float_float.h __float_header_macro.h __float_infinity_nan.h __stdarg___gnuc_va_list.h __stdarg___va_copy.h __stdarg_header_macro.h __stdarg_va_arg.h __stdarg_va_copy.h __stdarg_va_list.h __stddef_header_macro.h __stddef_max_align_t.h __stddef_null.h __stddef_nullptr_t.h __stddef_offsetof.h __stddef_ptrdiff_t.h __stddef_rsize_t.h __stddef_size_t.h __stddef_unreachable.h __stddef_wchar_t.h __stddef_wint_t.h __wmmintrin_aes.h __wmmintrin_pclmul.h adcintrin.h adxintrin.h altivec.h ammintrin.h amo.h amxavx512intrin.h amxcomplexintrin.h amxfp16intrin.h amxfp8intrin.h amxintrin.h amxmovrsintrin.h amxtf32intrin.h andes_vector.h arm64intr.h arm_acle.h arm_bf16.h arm_cde.h arm_cmse.h arm_fp16.h arm_mve.h arm_neon.h arm_neon_sve_bridge.h arm_sme.h arm_sve.h arm_vector_types.h armintr.h avx10_2_512bf16intrin.h avx10_2_512convertintrin.h avx10_2_512minmaxintrin.h avx10_2_512niintrin.h avx10_2_512satcvtdsintrin.h avx10_2_512satcvtintrin.h avx10_2bf16intrin.h avx10_2convertintrin.h avx10_2copyintrin.h avx10_2minmaxintrin.h avx10_2niintrin.h avx10_2satcvtdsintrin.h avx10_2satcvtintrin.h avx2intrin.h avx512bf16intrin.h avx512bitalgintrin.h avx512bwintrin.h avx512cdintrin.h avx512dqintrin.h avx512fintrin.h avx512fp16intrin.h avx512ifmaintrin.h avx512ifmavlintrin.h avx512vbmi2intrin.h ╭─────────────────────────────────╮ │avx512vbmiintrin.h │ ╰─────────────────────────────────╯ avx512vbmivlintrin.h avx512vlbf16intrin.h avx512vlbitalgintrin.h avx512vlbwintrin.h avx512vlcdintrin.h avx512vldqintrin.h avx512vlfp16intrin.h avx512vlintrin.h avx512vlvbmi2intrin.h avx512vlvnniintrin.h avx512vlvp2intersectintrin.h avx512vnniintrin.h avx512vp2intersectintrin.h avx512vpopcntdqintrin.h avx512vpopcntdqvlintrin.h avxifmaintrin.h avxintrin.h avxneconvertintrin.h avxvnniint16intrin.h avxvnniint8intrin.h avxvnniintrin.h bmi2intrin.h bmiintrin.h builtins.h cet.h cetintrin.h cldemoteintrin.h clflushoptintrin.h clwbintrin.h clzerointrin.h cmpccxaddintrin.h cpuid.h crc32intrin.h emmintrin.h enqcmdintrin.h f16cintrin.h float.h fma4intrin.h fmaintrin.h fxsrintrin.h gfniintrin.h hexagon_circ_brev_intrinsics.h hexagon_protos.h hexagon_types.h hresetintrin.h htmintrin.h htmxlintrin.h hvx_hexagon_protos.h ia32intrin.h immintrin.h intrin.h intrin0.h inttypes.h invpcidintrin.h iso646.h keylockerintrin.h larchintrin.h lasxintrin.h limits.h lsxintrin.h lwpintrin.h lzcntintrin.h mm3dnow.h mm_malloc.h mmintrin.h module.modulemap movdirintrin.h movrs_avx10_2_512intrin.h movrs_avx10_2intrin.h movrsintrin.h msa.h mwaitxintrin.h nmmintrin.h pconfigintrin.h pkuintrin.h pmmintrin.h popcntintrin.h prfchiintrin.h prfchwintrin.h ptrauth.h ptwriteintrin.h raointintrin.h rdpruintrin.h rdseedintrin.h riscv_bitmanip.h riscv_corev_alu.h riscv_crypto.h riscv_mips.h riscv_nds.h riscv_ntlh.h riscv_vector.h rtmintrin.h s390intrin.h serializeintrin.h sgxintrin.h sha512intrin.h shaintrin.h sifive_vector.h sm3intrin.h sm4evexintrin.h sm4intrin.h smmintrin.h spirvintrin.h stdalign.h stdarg.h stdatomic.h stdbool.h stdckdint.h stdcountof.h stddef.h stddefer.h stdint.h stdnoreturn.h tbmintrin.h tgmath.h tmmintrin.h tsxldtrkintrin.h uintrintrin.h unwind.h usermsrintrin.h vadefs.h vaesintrin.h varargs.h vecintrin.h velintrin.h velintrin_approx.h velintrin_gen.h vpclmulqdqintrin.h waitpkgintrin.h wasm_simd128.h wbnoinvdintrin.h wmmintrin.h x86gprintrin.h x86intrin.h xmmintrin.h xopintrin.h xsavecintrin.h xsaveintrin.h xsaveoptintrin.h xsavesintrin.h xtestintrin.h yvals_core.h
1 /*===------------- avx512vbmiintrin.h - VBMI intrinsics ------------------=== 2 * 3 * 4 * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5 * See https://llvm.org/LICENSE.txt for license information. 6 * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7 * 8 *===-----------------------------------------------------------------------=== 9 */ 10 #ifndef __IMMINTRIN_H 11 #error "Never use <avx512vbmiintrin.h> directly; include <immintrin.h> instead." 12 #endif 13 14 #ifndef __VBMIINTRIN_H 15 #define __VBMIINTRIN_H 16 17 /* Define the default attributes for the functions in this file. */ 18 #if defined(__cplusplus) && (__cplusplus >= 201103L) 19 #define __DEFAULT_FN_ATTRS \ 20 __attribute__((__always_inline__, __nodebug__, __target__("avx512vbmi"), \ 21 __min_vector_width__(512))) constexpr 22 #else 23 #define __DEFAULT_FN_ATTRS \ 24 __attribute__((__always_inline__, __nodebug__, __target__("avx512vbmi"), \ 25 __min_vector_width__(512))) 26 #endif 27 28 static __inline__ __m512i __DEFAULT_FN_ATTRS 29 _mm512_permutex2var_epi8(__m512i __A, __m512i __I, __m512i __B) { 30 return (__m512i)__builtin_ia32_vpermi2varqi512((__v64qi)__A, (__v64qi)__I, 31 (__v64qi) __B); 32 } 33 34 static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_permutex2var_epi8( 35 __m512i __A, __mmask64 __U, __m512i __I, __m512i __B) { 36 return (__m512i)__builtin_ia32_selectb_512(__U, 37 (__v64qi)_mm512_permutex2var_epi8(__A, __I, __B), 38 (__v64qi)__A); 39 } 40 41 static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask2_permutex2var_epi8( 42 __m512i __A, __m512i __I, __mmask64 __U, __m512i __B) { 43 return (__m512i)__builtin_ia32_selectb_512(__U, 44 (__v64qi)_mm512_permutex2var_epi8(__A, __I, __B), 45 (__v64qi)__I); 46 } 47 48 static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_maskz_permutex2var_epi8( 49 __mmask64 __U, __m512i __A, __m512i __I, __m512i __B) { 50 return (__m512i)__builtin_ia32_selectb_512(__U, 51 (__v64qi)_mm512_permutex2var_epi8(__A, __I, __B), 52 (__v64qi)_mm512_setzero_si512()); 53 } 54 55 static __inline__ __m512i __DEFAULT_FN_ATTRS 56 _mm512_permutexvar_epi8(__m512i __A, __m512i __B) { 57 return (__m512i)__builtin_ia32_permvarqi512((__v64qi) __B, (__v64qi) __A); 58 } 59 60 static __inline__ __m512i __DEFAULT_FN_ATTRS 61 _mm512_maskz_permutexvar_epi8(__mmask64 __M, __m512i __A, __m512i __B) { 62 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 63 (__v64qi)_mm512_permutexvar_epi8(__A, __B), 64 (__v64qi)_mm512_setzero_si512()); 65 } 66 67 static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_mask_permutexvar_epi8( 68 __m512i __W, __mmask64 __M, __m512i __A, __m512i __B) { 69 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 70 (__v64qi)_mm512_permutexvar_epi8(__A, __B), 71 (__v64qi)__W); 72 } 73 74 static __inline__ __m512i __DEFAULT_FN_ATTRS 75 _mm512_multishift_epi64_epi8(__m512i __X, __m512i __Y) 76 { 77 return (__m512i)__builtin_ia32_vpmultishiftqb512((__v64qi)__X, (__v64qi) __Y); 78 } 79 80 static __inline__ __m512i __DEFAULT_FN_ATTRS 81 _mm512_mask_multishift_epi64_epi8(__m512i __W, __mmask64 __M, __m512i __X, 82 __m512i __Y) 83 { 84 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 85 (__v64qi)_mm512_multishift_epi64_epi8(__X, __Y), 86 (__v64qi)__W); 87 } 88 89 static __inline__ __m512i __DEFAULT_FN_ATTRS 90 _mm512_maskz_multishift_epi64_epi8(__mmask64 __M, __m512i __X, __m512i __Y) 91 { 92 return (__m512i)__builtin_ia32_selectb_512((__mmask64)__M, 93 (__v64qi)_mm512_multishift_epi64_epi8(__X, __Y), 94 (__v64qi)_mm512_setzero_si512()); 95 } 96 97 #undef __DEFAULT_FN_ATTRS 98 #endif 99