llvm-runtime-resources-darwin 0.0.0 → 23.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +33 -0
- package/include/__clang_cuda_builtin_vars.h +121 -0
- package/include/__clang_cuda_cmath.h +512 -0
- package/include/__clang_cuda_complex_builtins.h +236 -0
- package/include/__clang_cuda_device_functions.h +1572 -0
- package/include/__clang_cuda_intrinsics.h +975 -0
- package/include/__clang_cuda_libdevice_declares.h +468 -0
- package/include/__clang_cuda_math.h +353 -0
- package/include/__clang_cuda_math_forward_declares.h +289 -0
- package/include/__clang_cuda_runtime_wrapper.h +526 -0
- package/include/__clang_cuda_texture_intrinsics.h +1177 -0
- package/include/__clang_gpu_builtin_vars.h +71 -0
- package/include/__clang_gpu_device_functions.h +411 -0
- package/include/__clang_gpu_intrinsics.h +242 -0
- package/include/__clang_hip_cmath.h +848 -0
- package/include/__clang_hip_libdevice_declares.h +238 -0
- package/include/__clang_hip_math.h +1405 -0
- package/include/__clang_hip_runtime_wrapper.h +170 -0
- package/include/__clang_hip_stdlib.h +43 -0
- package/include/__clang_spirv_builtins.h +217 -0
- package/include/__clang_spirv_libdevice_declares.h +170 -0
- package/include/__clang_spirv_math.h +719 -0
- package/include/__float_float.h +176 -0
- package/include/__float_header_macro.h +12 -0
- package/include/__float_infinity_nan.h +20 -0
- package/include/__stdarg___gnuc_va_list.h +13 -0
- package/include/__stdarg___va_copy.h +12 -0
- package/include/__stdarg_header_macro.h +12 -0
- package/include/__stdarg_va_arg.h +22 -0
- package/include/__stdarg_va_copy.h +12 -0
- package/include/__stdarg_va_list.h +13 -0
- package/include/__stddef_header_macro.h +12 -0
- package/include/__stddef_max_align_t.h +27 -0
- package/include/__stddef_null.h +29 -0
- package/include/__stddef_nullptr_t.h +29 -0
- package/include/__stddef_offsetof.h +17 -0
- package/include/__stddef_ptrdiff_t.h +20 -0
- package/include/__stddef_rsize_t.h +20 -0
- package/include/__stddef_size_t.h +20 -0
- package/include/__stddef_unreachable.h +21 -0
- package/include/__stddef_wchar_t.h +28 -0
- package/include/__stddef_wint_t.h +15 -0
- package/include/__wmmintrin_aes.h +140 -0
- package/include/__wmmintrin_pclmul.h +48 -0
- package/include/adcintrin.h +165 -0
- package/include/adxintrin.h +107 -0
- package/include/altivec.h +19434 -0
- package/include/amdgpuintrin.h +164 -0
- package/include/amdhsa_abi.h +83 -0
- package/include/ammintrin.h +183 -0
- package/include/amo.h +220 -0
- package/include/amxavx512intrin.h +596 -0
- package/include/amxcomplexintrin.h +167 -0
- package/include/amxfp16intrin.h +93 -0
- package/include/amxfp8intrin.h +230 -0
- package/include/amxintrin.h +492 -0
- package/include/amxmovrsintrin.h +48 -0
- package/include/andes_vector.h +21 -0
- package/include/arm64_neon.h +21 -0
- package/include/arm64intr.h +45 -0
- package/include/arm_acle.h +866 -0
- package/include/arm_bf16.h +20 -0
- package/include/arm_cde.h +410 -0
- package/include/arm_cmse.h +217 -0
- package/include/arm_fp16.h +596 -0
- package/include/arm_mve.h +19187 -0
- package/include/arm_neon.h +74351 -0
- package/include/arm_neon_sve_bridge.h +182 -0
- package/include/arm_sme.h +3753 -0
- package/include/arm_sve.h +32698 -0
- package/include/arm_vector_types.h +432 -0
- package/include/armintr.h +31 -0
- package/include/avx10_2_512bf16intrin.h +568 -0
- package/include/avx10_2_512convertintrin.h +322 -0
- package/include/avx10_2_512minmaxintrin.h +127 -0
- package/include/avx10_2_512niintrin.h +314 -0
- package/include/avx10_2_512satcvtdsintrin.h +307 -0
- package/include/avx10_2_512satcvtintrin.h +301 -0
- package/include/avx10_2bf16intrin.h +1094 -0
- package/include/avx10_2convertintrin.h +3257 -0
- package/include/avx10_2copyintrin.h +66 -0
- package/include/avx10_2minmaxintrin.h +232 -0
- package/include/avx10_2niintrin.h +409 -0
- package/include/avx10_2satcvtdsintrin.h +376 -0
- package/include/avx10_2satcvtintrin.h +312 -0
- package/include/avx2intrin.h +5190 -0
- package/include/avx512bf16intrin.h +292 -0
- package/include/avx512bitalgintrin.h +75 -0
- package/include/avx512bmmintrin.h +174 -0
- package/include/avx512bmmvlintrin.h +245 -0
- package/include/avx512bwintrin.h +1885 -0
- package/include/avx512cdintrin.h +112 -0
- package/include/avx512dqintrin.h +1350 -0
- package/include/avx512fintrin.h +9351 -0
- package/include/avx512fp16intrin.h +3349 -0
- package/include/avx512ifmaintrin.h +68 -0
- package/include/avx512ifmavlintrin.h +138 -0
- package/include/avx512vbmi2intrin.h +364 -0
- package/include/avx512vbmiintrin.h +98 -0
- package/include/avx512vbmivlintrin.h +179 -0
- package/include/avx512vlbf16intrin.h +527 -0
- package/include/avx512vlbitalgintrin.h +135 -0
- package/include/avx512vlbwintrin.h +3052 -0
- package/include/avx512vlcdintrin.h +202 -0
- package/include/avx512vldqintrin.h +1156 -0
- package/include/avx512vlfp16intrin.h +2090 -0
- package/include/avx512vlintrin.h +8067 -0
- package/include/avx512vlvbmi2intrin.h +702 -0
- package/include/avx512vlvnniintrin.h +308 -0
- package/include/avx512vlvp2intersectintrin.h +123 -0
- package/include/avx512vnniintrin.h +113 -0
- package/include/avx512vp2intersectintrin.h +77 -0
- package/include/avx512vpopcntdqintrin.h +62 -0
- package/include/avx512vpopcntdqvlintrin.h +105 -0
- package/include/avxifmaintrin.h +193 -0
- package/include/avxintrin.h +5064 -0
- package/include/avxneconvertintrin.h +484 -0
- package/include/avxvnniint16intrin.h +451 -0
- package/include/avxvnniint8intrin.h +454 -0
- package/include/avxvnniintrin.h +238 -0
- package/include/bmi2intrin.h +253 -0
- package/include/bmiintrin.h +604 -0
- package/include/builtins.h +19 -0
- package/include/cet.h +66 -0
- package/include/cetintrin.h +115 -0
- package/include/cldemoteintrin.h +36 -0
- package/include/clflushoptintrin.h +36 -0
- package/include/clwbintrin.h +38 -0
- package/include/clzerointrin.h +38 -0
- package/include/cmpccxaddintrin.h +70 -0
- package/include/cpuid.h +451 -0
- package/include/crc32intrin.h +102 -0
- package/include/cuda_wrappers/__utility/declval.h +28 -0
- package/include/cuda_wrappers/algorithm +116 -0
- package/include/cuda_wrappers/bits/basic_string.h +9 -0
- package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
- package/include/cuda_wrappers/bits/c++config.h +61 -0
- package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
- package/include/cuda_wrappers/cmath +44 -0
- package/include/cuda_wrappers/complex +90 -0
- package/include/cuda_wrappers/new +108 -0
- package/include/emmintrin.h +4940 -0
- package/include/endian.h +91 -0
- package/include/enqcmdintrin.h +63 -0
- package/include/f16cintrin.h +176 -0
- package/include/float.h +48 -0
- package/include/fma4intrin.h +220 -0
- package/include/fmaintrin.h +826 -0
- package/include/fuzzer/FuzzedDataProvider.h +397 -0
- package/include/fxsrintrin.h +91 -0
- package/include/gfniintrin.h +238 -0
- package/include/gpuintrin.h +348 -0
- package/include/hexagon_circ_brev_intrinsics.h +298 -0
- package/include/hexagon_protos.h +8439 -0
- package/include/hexagon_types.h +2628 -0
- package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
- package/include/hlsl_inline_intrinsics_gen.inc +546 -0
- package/include/hresetintrin.h +49 -0
- package/include/htmintrin.h +212 -0
- package/include/htmxlintrin.h +345 -0
- package/include/hvx_hexagon_protos.h +5421 -0
- package/include/ia32intrin.h +863 -0
- package/include/immintrin.h +597 -0
- package/include/intrin.h +501 -0
- package/include/intrin0.h +256 -0
- package/include/inttypes.h +101 -0
- package/include/invpcidintrin.h +23 -0
- package/include/iso646.h +31 -0
- package/include/keylockerintrin.h +518 -0
- package/include/larchintrin.h +262 -0
- package/include/lasxintrin.h +3999 -0
- package/include/limits.h +133 -0
- package/include/llvm_libc_wrappers/assert.h +32 -0
- package/include/llvm_libc_wrappers/ctype.h +29 -0
- package/include/llvm_libc_wrappers/inttypes.h +32 -0
- package/include/llvm_libc_wrappers/stdio.h +52 -0
- package/include/llvm_libc_wrappers/stdlib.h +32 -0
- package/include/llvm_libc_wrappers/string.h +29 -0
- package/include/llvm_libc_wrappers/time.h +28 -0
- package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
- package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
- package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
- package/include/lsxintrin.h +3752 -0
- package/include/lwpintrin.h +136 -0
- package/include/lzcntintrin.h +109 -0
- package/include/mm3dnow.h +22 -0
- package/include/mm_malloc.h +67 -0
- package/include/mmintrin.h +1541 -0
- package/include/module.modulemap +375 -0
- package/include/movdirintrin.h +49 -0
- package/include/movrs_avx10_2_512intrin.h +98 -0
- package/include/movrs_avx10_2intrin.h +174 -0
- package/include/movrsintrin.h +59 -0
- package/include/msa.h +573 -0
- package/include/mwaitxintrin.h +62 -0
- package/include/nmmintrin.h +20 -0
- package/include/nvptxintrin.h +208 -0
- package/include/opencl-c-base.h +765 -0
- package/include/opencl-c.h +18737 -0
- package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
- package/include/openmp_wrappers/cmath +132 -0
- package/include/openmp_wrappers/complex +61 -0
- package/include/openmp_wrappers/complex.h +41 -0
- package/include/openmp_wrappers/complex_cmath.h +393 -0
- package/include/openmp_wrappers/math.h +71 -0
- package/include/openmp_wrappers/new +48 -0
- package/include/pconfigintrin.h +40 -0
- package/include/pkuintrin.h +34 -0
- package/include/pmmintrin.h +302 -0
- package/include/popcntintrin.h +59 -0
- package/include/ppc_wrappers/bmi2intrin.h +134 -0
- package/include/ppc_wrappers/bmiintrin.h +165 -0
- package/include/ppc_wrappers/emmintrin.h +2269 -0
- package/include/ppc_wrappers/immintrin.h +27 -0
- package/include/ppc_wrappers/mm_malloc.h +45 -0
- package/include/ppc_wrappers/mmintrin.h +1453 -0
- package/include/ppc_wrappers/nmmintrin.h +26 -0
- package/include/ppc_wrappers/pmmintrin.h +145 -0
- package/include/ppc_wrappers/smmintrin.h +683 -0
- package/include/ppc_wrappers/tmmintrin.h +453 -0
- package/include/ppc_wrappers/x86gprintrin.h +17 -0
- package/include/ppc_wrappers/x86intrin.h +28 -0
- package/include/ppc_wrappers/xmmintrin.h +1827 -0
- package/include/prfchiintrin.h +61 -0
- package/include/prfchwintrin.h +57 -0
- package/include/profile/InstrProfData.inc +1063 -0
- package/include/profile/instr_prof_interface.h +88 -0
- package/include/ptrauth.h +485 -0
- package/include/ptwriteintrin.h +37 -0
- package/include/raointintrin.h +203 -0
- package/include/rdpruintrin.h +57 -0
- package/include/rdseedintrin.h +105 -0
- package/include/riscv_bitmanip.h +202 -0
- package/include/riscv_corev_alu.h +130 -0
- package/include/riscv_crypto.h +178 -0
- package/include/riscv_mips.h +36 -0
- package/include/riscv_nds.h +92 -0
- package/include/riscv_ntlh.h +28 -0
- package/include/riscv_packed_simd.h +644 -0
- package/include/riscv_vector.h +465 -0
- package/include/rtmintrin.h +45 -0
- package/include/s390intrin.h +25 -0
- package/include/sanitizer/allocator_interface.h +106 -0
- package/include/sanitizer/asan_interface.h +398 -0
- package/include/sanitizer/common_interface_defs.h +507 -0
- package/include/sanitizer/coverage_interface.h +36 -0
- package/include/sanitizer/dfsan_interface.h +220 -0
- package/include/sanitizer/hwasan_interface.h +109 -0
- package/include/sanitizer/linux_syscall_hooks.h +3112 -0
- package/include/sanitizer/lsan_interface.h +89 -0
- package/include/sanitizer/msan_interface.h +135 -0
- package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
- package/include/sanitizer/rtsan_interface.h +75 -0
- package/include/sanitizer/safestack_interface.h +50 -0
- package/include/sanitizer/scudo_interface.h +38 -0
- package/include/sanitizer/tsan_interface.h +316 -0
- package/include/sanitizer/tsan_interface_atomic.h +223 -0
- package/include/sanitizer/tysan_interface.h +36 -0
- package/include/sanitizer/ubsan_interface.h +64 -0
- package/include/serializeintrin.h +30 -0
- package/include/sgxintrin.h +60 -0
- package/include/sha512intrin.h +200 -0
- package/include/shaintrin.h +190 -0
- package/include/sifive_vector.h +192 -0
- package/include/sm3intrin.h +238 -0
- package/include/sm4evexintrin.h +32 -0
- package/include/sm4intrin.h +269 -0
- package/include/smmintrin.h +2352 -0
- package/include/spirvintrin.h +167 -0
- package/include/stdalign.h +24 -0
- package/include/stdarg.h +75 -0
- package/include/stdatomic.h +204 -0
- package/include/stdbool.h +39 -0
- package/include/stdckdint.h +42 -0
- package/include/stdcountof.h +15 -0
- package/include/stddef.h +139 -0
- package/include/stddefer.h +19 -0
- package/include/stdint.h +835 -0
- package/include/stdnoreturn.h +35 -0
- package/include/tbmintrin.h +128 -0
- package/include/tgmath.h +1368 -0
- package/include/tmmintrin.h +779 -0
- package/include/tsxldtrkintrin.h +56 -0
- package/include/uintrintrin.h +157 -0
- package/include/unwind.h +332 -0
- package/include/usermsrintrin.h +51 -0
- package/include/vadefs.h +51 -0
- package/include/vaesintrin.h +86 -0
- package/include/varargs.h +16 -0
- package/include/vecintrin.h +12868 -0
- package/include/velintrin.h +71 -0
- package/include/velintrin_approx.h +120 -0
- package/include/velintrin_gen.h +1257 -0
- package/include/vpclmulqdqintrin.h +30 -0
- package/include/waitpkgintrin.h +42 -0
- package/include/wasm_simd128.h +2160 -0
- package/include/wbnoinvdintrin.h +24 -0
- package/include/wmmintrin.h +23 -0
- package/include/x86gprintrin.h +49 -0
- package/include/x86intrin.h +35 -0
- package/include/xmmintrin.h +3176 -0
- package/include/xopintrin.h +780 -0
- package/include/xsavecintrin.h +84 -0
- package/include/xsaveintrin.h +63 -0
- package/include/xsaveoptintrin.h +34 -0
- package/include/xsavesintrin.h +44 -0
- package/include/xtestintrin.h +27 -0
- package/include/yvals_core.h +25 -0
- package/include/zos_wrappers/builtins.h +18 -0
- package/include/zos_wrappers/grp.h +19 -0
- package/include/zos_wrappers/locale.h +19 -0
- package/include/zos_wrappers/math.h +31 -0
- package/include/zos_wrappers/poll.h +19 -0
- package/include/zos_wrappers/stdlib.h +20 -0
- package/include/zos_wrappers/string.h +19 -0
- package/include/zos_wrappers/time.h +19 -0
- package/include/zos_wrappers/variant.h +19 -0
- package/index.js +5 -0
- package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
- package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
- package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.cc_kext.a +0 -0
- package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
- package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
- package/lib/darwin/libclang_rt.ios.a +0 -0
- package/lib/darwin/libclang_rt.iossim.a +0 -0
- package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.osx.a +0 -0
- package/lib/darwin/libclang_rt.profile_ios.a +0 -0
- package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
- package/lib/darwin/libclang_rt.profile_osx.a +0 -0
- package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
- package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
- package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
- package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
- package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
- package/package.json +40 -1
- package/share/asan_ignorelist.txt +14 -0
- package/share/cfi_ignorelist.txt +17 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/*===------------ avx512bf16intrin.h - AVX512_BF16 intrinsics --------------===
|
|
2
|
+
*
|
|
3
|
+
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
4
|
+
* See https://llvm.org/LICENSE.txt for license information.
|
|
5
|
+
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
6
|
+
*
|
|
7
|
+
*===-----------------------------------------------------------------------===
|
|
8
|
+
*/
|
|
9
|
+
#ifndef __IMMINTRIN_H
|
|
10
|
+
#error "Never use <avx512bf16intrin.h> directly; include <immintrin.h> instead."
|
|
11
|
+
#endif
|
|
12
|
+
|
|
13
|
+
#ifdef __SSE2__
|
|
14
|
+
|
|
15
|
+
#ifndef __AVX512BF16INTRIN_H
|
|
16
|
+
#define __AVX512BF16INTRIN_H
|
|
17
|
+
|
|
18
|
+
typedef __bf16 __v32bf __attribute__((__vector_size__(64), __aligned__(64)));
|
|
19
|
+
typedef __bf16 __m512bh __attribute__((__vector_size__(64), __aligned__(64)));
|
|
20
|
+
typedef __bf16 __bfloat16 __attribute__((deprecated("use __bf16 instead")));
|
|
21
|
+
|
|
22
|
+
#define __DEFAULT_FN_ATTRS512 \
|
|
23
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx512bf16"), \
|
|
24
|
+
__min_vector_width__(512)))
|
|
25
|
+
#define __DEFAULT_FN_ATTRS \
|
|
26
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx512bf16")))
|
|
27
|
+
|
|
28
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
29
|
+
#define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512 constexpr
|
|
30
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
|
|
31
|
+
#else
|
|
32
|
+
#define __DEFAULT_FN_ATTRS512_CONSTEXPR __DEFAULT_FN_ATTRS512
|
|
33
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/// Convert One BF16 Data to One Single Float Data.
|
|
37
|
+
///
|
|
38
|
+
/// \headerfile <x86intrin.h>
|
|
39
|
+
///
|
|
40
|
+
/// This intrinsic does not correspond to a specific instruction.
|
|
41
|
+
///
|
|
42
|
+
/// \param __A
|
|
43
|
+
/// A bfloat data.
|
|
44
|
+
/// \returns A float data whose sign field and exponent field keep unchanged,
|
|
45
|
+
/// and fraction field is extended to 23 bits.
|
|
46
|
+
static __inline__ float __DEFAULT_FN_ATTRS_CONSTEXPR _mm_cvtsbh_ss(__bf16 __A) {
|
|
47
|
+
return (float)(__A);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/// Convert Two Packed Single Data to One Packed BF16 Data.
|
|
51
|
+
///
|
|
52
|
+
/// \headerfile <x86intrin.h>
|
|
53
|
+
///
|
|
54
|
+
/// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
|
|
55
|
+
///
|
|
56
|
+
/// \param __A
|
|
57
|
+
/// A 512-bit vector of [16 x float].
|
|
58
|
+
/// \param __B
|
|
59
|
+
/// A 512-bit vector of [16 x float].
|
|
60
|
+
/// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
|
|
61
|
+
/// conversion of __B, and higher 256 bits come from conversion of __A.
|
|
62
|
+
static __inline__ __m512bh __DEFAULT_FN_ATTRS512
|
|
63
|
+
_mm512_cvtne2ps_pbh(__m512 __A, __m512 __B) {
|
|
64
|
+
return (__m512bh)__builtin_ia32_cvtne2ps2bf16_512((__v16sf) __A,
|
|
65
|
+
(__v16sf) __B);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/// Convert Two Packed Single Data to One Packed BF16 Data.
|
|
69
|
+
///
|
|
70
|
+
/// \headerfile <x86intrin.h>
|
|
71
|
+
///
|
|
72
|
+
/// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
|
|
73
|
+
///
|
|
74
|
+
/// \param __A
|
|
75
|
+
/// A 512-bit vector of [16 x float].
|
|
76
|
+
/// \param __B
|
|
77
|
+
/// A 512-bit vector of [16 x float].
|
|
78
|
+
/// \param __W
|
|
79
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
80
|
+
/// \param __U
|
|
81
|
+
/// A 32-bit mask value specifying what is chosen for each element.
|
|
82
|
+
/// A 1 means conversion of __A or __B. A 0 means element from __W.
|
|
83
|
+
/// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
|
|
84
|
+
/// conversion of __B, and higher 256 bits come from conversion of __A.
|
|
85
|
+
static __inline__ __m512bh __DEFAULT_FN_ATTRS512
|
|
86
|
+
_mm512_mask_cvtne2ps_pbh(__m512bh __W, __mmask32 __U, __m512 __A, __m512 __B) {
|
|
87
|
+
return (__m512bh)__builtin_ia32_selectpbf_512((__mmask32)__U,
|
|
88
|
+
(__v32bf)_mm512_cvtne2ps_pbh(__A, __B),
|
|
89
|
+
(__v32bf)__W);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/// Convert Two Packed Single Data to One Packed BF16 Data.
|
|
93
|
+
///
|
|
94
|
+
/// \headerfile <x86intrin.h>
|
|
95
|
+
///
|
|
96
|
+
/// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
|
|
97
|
+
///
|
|
98
|
+
/// \param __A
|
|
99
|
+
/// A 512-bit vector of [16 x float].
|
|
100
|
+
/// \param __B
|
|
101
|
+
/// A 512-bit vector of [16 x float].
|
|
102
|
+
/// \param __U
|
|
103
|
+
/// A 32-bit mask value specifying what is chosen for each element.
|
|
104
|
+
/// A 1 means conversion of __A or __B. A 0 means element is zero.
|
|
105
|
+
/// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
|
|
106
|
+
/// conversion of __B, and higher 256 bits come from conversion of __A.
|
|
107
|
+
static __inline__ __m512bh __DEFAULT_FN_ATTRS512
|
|
108
|
+
_mm512_maskz_cvtne2ps_pbh(__mmask32 __U, __m512 __A, __m512 __B) {
|
|
109
|
+
return (__m512bh)__builtin_ia32_selectpbf_512((__mmask32)__U,
|
|
110
|
+
(__v32bf)_mm512_cvtne2ps_pbh(__A, __B),
|
|
111
|
+
(__v32bf)_mm512_setzero_si512());
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/// Convert Packed Single Data to Packed BF16 Data.
|
|
115
|
+
///
|
|
116
|
+
/// \headerfile <x86intrin.h>
|
|
117
|
+
///
|
|
118
|
+
/// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
|
|
119
|
+
///
|
|
120
|
+
/// \param __A
|
|
121
|
+
/// A 512-bit vector of [16 x float].
|
|
122
|
+
/// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
|
|
123
|
+
static __inline__ __m256bh __DEFAULT_FN_ATTRS512
|
|
124
|
+
_mm512_cvtneps_pbh(__m512 __A) {
|
|
125
|
+
return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
|
|
126
|
+
(__v16bf)_mm256_undefined_si256(),
|
|
127
|
+
(__mmask16)-1);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/// Convert Packed Single Data to Packed BF16 Data.
|
|
131
|
+
///
|
|
132
|
+
/// \headerfile <x86intrin.h>
|
|
133
|
+
///
|
|
134
|
+
/// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
|
|
135
|
+
///
|
|
136
|
+
/// \param __A
|
|
137
|
+
/// A 512-bit vector of [16 x float].
|
|
138
|
+
/// \param __W
|
|
139
|
+
/// A 256-bit vector of [16 x bfloat].
|
|
140
|
+
/// \param __U
|
|
141
|
+
/// A 16-bit mask value specifying what is chosen for each element.
|
|
142
|
+
/// A 1 means conversion of __A. A 0 means element from __W.
|
|
143
|
+
/// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
|
|
144
|
+
static __inline__ __m256bh __DEFAULT_FN_ATTRS512
|
|
145
|
+
_mm512_mask_cvtneps_pbh(__m256bh __W, __mmask16 __U, __m512 __A) {
|
|
146
|
+
return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
|
|
147
|
+
(__v16bf)__W,
|
|
148
|
+
(__mmask16)__U);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/// Convert Packed Single Data to Packed BF16 Data.
|
|
152
|
+
///
|
|
153
|
+
/// \headerfile <x86intrin.h>
|
|
154
|
+
///
|
|
155
|
+
/// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
|
|
156
|
+
///
|
|
157
|
+
/// \param __A
|
|
158
|
+
/// A 512-bit vector of [16 x float].
|
|
159
|
+
/// \param __U
|
|
160
|
+
/// A 16-bit mask value specifying what is chosen for each element.
|
|
161
|
+
/// A 1 means conversion of __A. A 0 means element is zero.
|
|
162
|
+
/// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
|
|
163
|
+
static __inline__ __m256bh __DEFAULT_FN_ATTRS512
|
|
164
|
+
_mm512_maskz_cvtneps_pbh(__mmask16 __U, __m512 __A) {
|
|
165
|
+
return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
|
|
166
|
+
(__v16bf)_mm256_setzero_si256(),
|
|
167
|
+
(__mmask16)__U);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
/// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
|
|
171
|
+
///
|
|
172
|
+
/// \headerfile <x86intrin.h>
|
|
173
|
+
///
|
|
174
|
+
/// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
|
|
175
|
+
///
|
|
176
|
+
/// \param __A
|
|
177
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
178
|
+
/// \param __B
|
|
179
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
180
|
+
/// \param __D
|
|
181
|
+
/// A 512-bit vector of [16 x float].
|
|
182
|
+
/// \returns A 512-bit vector of [16 x float] comes from Dot Product of
|
|
183
|
+
/// __A, __B and __D
|
|
184
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512
|
|
185
|
+
_mm512_dpbf16_ps(__m512 __D, __m512bh __A, __m512bh __B) {
|
|
186
|
+
return (__m512)__builtin_ia32_dpbf16ps_512((__v16sf) __D,
|
|
187
|
+
(__v32bf) __A,
|
|
188
|
+
(__v32bf) __B);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
|
|
192
|
+
///
|
|
193
|
+
/// \headerfile <x86intrin.h>
|
|
194
|
+
///
|
|
195
|
+
/// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
|
|
196
|
+
///
|
|
197
|
+
/// \param __A
|
|
198
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
199
|
+
/// \param __B
|
|
200
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
201
|
+
/// \param __D
|
|
202
|
+
/// A 512-bit vector of [16 x float].
|
|
203
|
+
/// \param __U
|
|
204
|
+
/// A 16-bit mask value specifying what is chosen for each element.
|
|
205
|
+
/// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
|
|
206
|
+
/// \returns A 512-bit vector of [16 x float] comes from Dot Product of
|
|
207
|
+
/// __A, __B and __D
|
|
208
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512
|
|
209
|
+
_mm512_mask_dpbf16_ps(__m512 __D, __mmask16 __U, __m512bh __A, __m512bh __B) {
|
|
210
|
+
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
|
|
211
|
+
(__v16sf)_mm512_dpbf16_ps(__D, __A, __B),
|
|
212
|
+
(__v16sf)__D);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
|
|
216
|
+
///
|
|
217
|
+
/// \headerfile <x86intrin.h>
|
|
218
|
+
///
|
|
219
|
+
/// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
|
|
220
|
+
///
|
|
221
|
+
/// \param __A
|
|
222
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
223
|
+
/// \param __B
|
|
224
|
+
/// A 512-bit vector of [32 x bfloat].
|
|
225
|
+
/// \param __D
|
|
226
|
+
/// A 512-bit vector of [16 x float].
|
|
227
|
+
/// \param __U
|
|
228
|
+
/// A 16-bit mask value specifying what is chosen for each element.
|
|
229
|
+
/// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
|
|
230
|
+
/// \returns A 512-bit vector of [16 x float] comes from Dot Product of
|
|
231
|
+
/// __A, __B and __D
|
|
232
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512
|
|
233
|
+
_mm512_maskz_dpbf16_ps(__mmask16 __U, __m512 __D, __m512bh __A, __m512bh __B) {
|
|
234
|
+
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
|
|
235
|
+
(__v16sf)_mm512_dpbf16_ps(__D, __A, __B),
|
|
236
|
+
(__v16sf)_mm512_setzero_si512());
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
/// Convert Packed BF16 Data to Packed float Data.
|
|
240
|
+
///
|
|
241
|
+
/// \headerfile <x86intrin.h>
|
|
242
|
+
///
|
|
243
|
+
/// \param __A
|
|
244
|
+
/// A 256-bit vector of [16 x bfloat].
|
|
245
|
+
/// \returns A 512-bit vector of [16 x float] come from conversion of __A
|
|
246
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
|
|
247
|
+
_mm512_cvtpbh_ps(__m256bh __A) {
|
|
248
|
+
return (__m512) __builtin_convertvector(__A, __v16sf);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
/// Convert Packed BF16 Data to Packed float Data using zeroing mask.
|
|
252
|
+
///
|
|
253
|
+
/// \headerfile <x86intrin.h>
|
|
254
|
+
///
|
|
255
|
+
/// \param __U
|
|
256
|
+
/// A 16-bit mask. Elements are zeroed out when the corresponding mask
|
|
257
|
+
/// bit is not set.
|
|
258
|
+
/// \param __A
|
|
259
|
+
/// A 256-bit vector of [16 x bfloat].
|
|
260
|
+
/// \returns A 512-bit vector of [16 x float] come from conversion of __A
|
|
261
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
|
|
262
|
+
_mm512_maskz_cvtpbh_ps(__mmask16 __U, __m256bh __A) {
|
|
263
|
+
return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
|
|
264
|
+
(__v16sf)_mm512_cvtpbh_ps(__A),
|
|
265
|
+
(__v16sf)_mm512_setzero_ps());
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/// Convert Packed BF16 Data to Packed float Data using merging mask.
|
|
269
|
+
///
|
|
270
|
+
/// \headerfile <x86intrin.h>
|
|
271
|
+
///
|
|
272
|
+
/// \param __S
|
|
273
|
+
/// A 512-bit vector of [16 x float]. Elements are copied from __S when
|
|
274
|
+
/// the corresponding mask bit is not set.
|
|
275
|
+
/// \param __U
|
|
276
|
+
/// A 16-bit mask.
|
|
277
|
+
/// \param __A
|
|
278
|
+
/// A 256-bit vector of [16 x bfloat].
|
|
279
|
+
/// \returns A 512-bit vector of [16 x float] come from conversion of __A
|
|
280
|
+
static __inline__ __m512 __DEFAULT_FN_ATTRS512_CONSTEXPR
|
|
281
|
+
_mm512_mask_cvtpbh_ps(__m512 __S, __mmask16 __U, __m256bh __A) {
|
|
282
|
+
return (__m512)__builtin_ia32_selectps_512(
|
|
283
|
+
(__mmask16)__U, (__v16sf)_mm512_cvtpbh_ps(__A), (__v16sf)__S);
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
#undef __DEFAULT_FN_ATTRS
|
|
287
|
+
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
288
|
+
#undef __DEFAULT_FN_ATTRS512
|
|
289
|
+
#undef __DEFAULT_FN_ATTRS512_CONSTEXPR
|
|
290
|
+
|
|
291
|
+
#endif
|
|
292
|
+
#endif
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/*===------------- avx512bitalgintrin.h - BITALG 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 <avx512bitalgintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __AVX512BITALGINTRIN_H
|
|
15
|
+
#define __AVX512BITALGINTRIN_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__("avx512bitalg"), \
|
|
21
|
+
__min_vector_width__(512))) constexpr
|
|
22
|
+
#else
|
|
23
|
+
#define __DEFAULT_FN_ATTRS \
|
|
24
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx512bitalg"), \
|
|
25
|
+
__min_vector_width__(512)))
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi16(__m512i __A) {
|
|
29
|
+
return (__m512i)__builtin_elementwise_popcount((__v32hu)__A);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
33
|
+
_mm512_mask_popcnt_epi16(__m512i __A, __mmask32 __U, __m512i __B) {
|
|
34
|
+
return (__m512i)__builtin_ia32_selectw_512(
|
|
35
|
+
(__mmask32)__U, (__v32hi)_mm512_popcnt_epi16(__B), (__v32hi)__A);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
39
|
+
_mm512_maskz_popcnt_epi16(__mmask32 __U, __m512i __B) {
|
|
40
|
+
return _mm512_mask_popcnt_epi16((__m512i)_mm512_setzero_si512(), __U, __B);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS _mm512_popcnt_epi8(__m512i __A) {
|
|
44
|
+
return (__m512i)__builtin_elementwise_popcount((__v64qu)__A);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
48
|
+
_mm512_mask_popcnt_epi8(__m512i __A, __mmask64 __U, __m512i __B) {
|
|
49
|
+
return (__m512i)__builtin_ia32_selectb_512(
|
|
50
|
+
(__mmask64)__U, (__v64qi)_mm512_popcnt_epi8(__B), (__v64qi)__A);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
static __inline__ __m512i __DEFAULT_FN_ATTRS
|
|
54
|
+
_mm512_maskz_popcnt_epi8(__mmask64 __U, __m512i __B) {
|
|
55
|
+
return _mm512_mask_popcnt_epi8((__m512i)_mm512_setzero_si512(), __U, __B);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
|
|
59
|
+
_mm512_mask_bitshuffle_epi64_mask(__mmask64 __U, __m512i __A, __m512i __B)
|
|
60
|
+
{
|
|
61
|
+
return (__mmask64) __builtin_ia32_vpshufbitqmb512_mask((__v64qi) __A,
|
|
62
|
+
(__v64qi) __B,
|
|
63
|
+
__U);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
static __inline__ __mmask64 __DEFAULT_FN_ATTRS
|
|
67
|
+
_mm512_bitshuffle_epi64_mask(__m512i __A, __m512i __B)
|
|
68
|
+
{
|
|
69
|
+
return _mm512_mask_bitshuffle_epi64_mask((__mmask64) -1,
|
|
70
|
+
__A,
|
|
71
|
+
__B);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#undef __DEFAULT_FN_ATTRS
|
|
75
|
+
#endif
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/*===-------- avx512bmmintrin.h - AVX512BMM 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
|
+
|
|
11
|
+
#ifndef __IMMINTRIN_H
|
|
12
|
+
#error "Never use <avx512bmmintrin.h> directly; include <immintrin.h> instead."
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
#ifndef _AVX512BMMINTRIN_H
|
|
16
|
+
#define _AVX512BMMINTRIN_H
|
|
17
|
+
|
|
18
|
+
/* Define the default attributes for the functions in this file. */
|
|
19
|
+
#define __DEFAULT_FN_ATTRS \
|
|
20
|
+
__attribute__((__always_inline__, __nodebug__, __target__("avx512bmm"), \
|
|
21
|
+
__min_vector_width__(512)))
|
|
22
|
+
|
|
23
|
+
#if defined(__cplusplus) && (__cplusplus >= 201103L)
|
|
24
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS constexpr
|
|
25
|
+
#else
|
|
26
|
+
#define __DEFAULT_FN_ATTRS_CONSTEXPR __DEFAULT_FN_ATTRS
|
|
27
|
+
#endif
|
|
28
|
+
|
|
29
|
+
/// Multiplies two 16x16 bit matrices using OR reduction and ORs the product
|
|
30
|
+
/// into a third 16x16 bit matrix (which is also the destination).
|
|
31
|
+
///
|
|
32
|
+
/// For the 512-bit ZMM form, each register contains two 16x16 (256-bit)
|
|
33
|
+
/// matrices in bits [255:0] and [511:256]. The operation performs:
|
|
34
|
+
/// \code{.operation}
|
|
35
|
+
/// for i in 0 to 15
|
|
36
|
+
/// for j in 0 to 15
|
|
37
|
+
/// reduction_bit = __C[16*i+j]
|
|
38
|
+
/// for k in 0 to 15
|
|
39
|
+
/// reduction_bit |= __A[16*i+k] & __B[16*k+j]
|
|
40
|
+
/// end for k
|
|
41
|
+
/// dest[16*i+j] = reduction_bit
|
|
42
|
+
/// end for j
|
|
43
|
+
/// end for i
|
|
44
|
+
/// \endcode
|
|
45
|
+
///
|
|
46
|
+
/// \headerfile <immintrin.h>
|
|
47
|
+
///
|
|
48
|
+
/// This intrinsic corresponds to the <c> VBMACOR16X16X16 </c> instruction.
|
|
49
|
+
///
|
|
50
|
+
/// \param __A
|
|
51
|
+
/// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
|
|
52
|
+
/// lane).
|
|
53
|
+
/// \param __B
|
|
54
|
+
/// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
|
|
55
|
+
/// lane).
|
|
56
|
+
/// \param __C
|
|
57
|
+
/// A 512-bit accumulator vector containing the initial values to OR with.
|
|
58
|
+
/// \returns A 512-bit vector containing the accumulated result for each lane.
|
|
59
|
+
/// \note This instruction does not support masking.
|
|
60
|
+
static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
61
|
+
_mm512_bmacor16x16x16(__m512i __A, __m512i __B, __m512i __C) {
|
|
62
|
+
return (__m512i)__builtin_ia32_bmacor16x16x16_v32hi(
|
|
63
|
+
(__v32hi)__A, (__v32hi)__B, (__v32hi)__C);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/// Multiplies two 16x16 bit matrices using XOR reduction and XORs the product
|
|
67
|
+
/// into a third 16x16 bit matrix (which is also the destination).
|
|
68
|
+
///
|
|
69
|
+
/// For the 512-bit ZMM form, each register contains two 16x16 (256-bit)
|
|
70
|
+
/// matrices in bits [255:0] and [511:256]. The operation performs:
|
|
71
|
+
/// \code{.operation}
|
|
72
|
+
/// for i in 0 to 15
|
|
73
|
+
/// for j in 0 to 15
|
|
74
|
+
/// reduction_bit = __C[16*i+j]
|
|
75
|
+
/// for k in 0 to 15
|
|
76
|
+
/// reduction_bit ^= __A[16*i+k] & __B[16*k+j]
|
|
77
|
+
/// end for k
|
|
78
|
+
/// dest[16*i+j] = reduction_bit
|
|
79
|
+
/// end for j
|
|
80
|
+
/// end for i
|
|
81
|
+
/// \endcode
|
|
82
|
+
///
|
|
83
|
+
/// \headerfile <immintrin.h>
|
|
84
|
+
///
|
|
85
|
+
/// This intrinsic corresponds to the <c> VBMACXOR16X16X16 </c> instruction.
|
|
86
|
+
///
|
|
87
|
+
/// \param __A
|
|
88
|
+
/// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
|
|
89
|
+
/// lane).
|
|
90
|
+
/// \param __B
|
|
91
|
+
/// A 512-bit vector containing two 16x16 bit matrices (one per 256-bit
|
|
92
|
+
/// lane).
|
|
93
|
+
/// \param __C
|
|
94
|
+
/// A 512-bit accumulator vector containing the initial values to XOR with.
|
|
95
|
+
/// \returns A 512-bit vector containing the accumulated result for each lane.
|
|
96
|
+
/// \note This instruction does not support masking.
|
|
97
|
+
static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
98
|
+
_mm512_bmacxor16x16x16(__m512i __A, __m512i __B, __m512i __C) {
|
|
99
|
+
return (__m512i)__builtin_ia32_bmacxor16x16x16_v32hi(
|
|
100
|
+
(__v32hi)__A, (__v32hi)__B, (__v32hi)__C);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/// Reverses the bits within each byte of the source vector.
|
|
104
|
+
///
|
|
105
|
+
/// For each byte in the source, reverses the order of its 8 bits to generate
|
|
106
|
+
/// the corresponding destination byte. For example, 0b10110001 becomes
|
|
107
|
+
/// 0b10001101.
|
|
108
|
+
///
|
|
109
|
+
/// \headerfile <immintrin.h>
|
|
110
|
+
///
|
|
111
|
+
/// This intrinsic corresponds to the <c> VBITREV </c> instruction.
|
|
112
|
+
///
|
|
113
|
+
/// \param __A
|
|
114
|
+
/// A 512-bit vector of [64 x i8] where each byte will have its bits
|
|
115
|
+
/// reversed.
|
|
116
|
+
/// \returns A 512-bit vector of [64 x i8] with bit-reversed bytes.
|
|
117
|
+
static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
118
|
+
_mm512_bitrev_epi8(__m512i __A) {
|
|
119
|
+
return (__m512i)__builtin_elementwise_bitreverse((__v64qi)__A);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/// Reverses the bits within each byte of the source vector, using a writemask
|
|
123
|
+
/// to conditionally select elements.
|
|
124
|
+
///
|
|
125
|
+
/// For each byte position, if the corresponding mask bit is 1, the byte from
|
|
126
|
+
/// \a A has its bits reversed and stored in the result. If the mask bit is 0,
|
|
127
|
+
/// the corresponding byte from \a B is copied to the result (merge masking).
|
|
128
|
+
///
|
|
129
|
+
/// \headerfile <immintrin.h>
|
|
130
|
+
///
|
|
131
|
+
/// This intrinsic corresponds to the <c> VBITREV </c> instruction.
|
|
132
|
+
///
|
|
133
|
+
/// \param __U
|
|
134
|
+
/// A 64-bit mask value where each bit controls one byte (per 8-bit element).
|
|
135
|
+
/// A 1 performs bit reversal; a 0 selects the passthrough byte from __B.
|
|
136
|
+
/// \param __A
|
|
137
|
+
/// A 512-bit vector of [64 x i8] to be bit-reversed.
|
|
138
|
+
/// \param __B
|
|
139
|
+
/// A 512-bit vector of [64 x i8] providing passthrough values.
|
|
140
|
+
/// \returns A 512-bit vector combining bit-reversed and passthrough bytes.
|
|
141
|
+
static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
142
|
+
_mm512_mask_bitrev_epi8(__mmask64 __U, __m512i __A, __m512i __B) {
|
|
143
|
+
return (__m512i)__builtin_ia32_selectb_512(
|
|
144
|
+
(__mmask64)__U, (__v64qi)_mm512_bitrev_epi8(__A), (__v64qi)__B);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/// Reverses the bits within each byte of the source vector, zeroing elements
|
|
148
|
+
/// based on the writemask.
|
|
149
|
+
///
|
|
150
|
+
/// For each byte position, if the corresponding mask bit is 1, the byte from
|
|
151
|
+
/// \a A has its bits reversed and stored in the result. If the mask bit is 0,
|
|
152
|
+
/// the result byte is set to zero (zero masking).
|
|
153
|
+
///
|
|
154
|
+
/// \headerfile <immintrin.h>
|
|
155
|
+
///
|
|
156
|
+
/// This intrinsic corresponds to the <c> VBITREV </c> instruction.
|
|
157
|
+
///
|
|
158
|
+
/// \param __U
|
|
159
|
+
/// A 64-bit mask value where each bit controls one byte (per 8-bit element).
|
|
160
|
+
/// A 1 performs bit reversal; a 0 sets the byte to zero.
|
|
161
|
+
/// \param __A
|
|
162
|
+
/// A 512-bit vector of [64 x i8] to be bit-reversed.
|
|
163
|
+
/// \returns A 512-bit vector with bit-reversed or zeroed bytes.
|
|
164
|
+
static __inline __m512i __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
165
|
+
_mm512_maskz_bitrev_epi8(__mmask64 __U, __m512i __A) {
|
|
166
|
+
return (__m512i)__builtin_ia32_selectb_512((__mmask64)__U,
|
|
167
|
+
(__v64qi)_mm512_bitrev_epi8(__A),
|
|
168
|
+
(__v64qi)_mm512_setzero_si512());
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
#undef __DEFAULT_FN_ATTRS
|
|
172
|
+
#undef __DEFAULT_FN_ATTRS_CONSTEXPR
|
|
173
|
+
|
|
174
|
+
#endif
|