llvm-runtime-resources-darwin 0.0.0 → 22.1.8
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 +229 -0
- package/include/__clang_cuda_device_functions.h +1572 -0
- package/include/__clang_cuda_intrinsics.h +994 -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 +284 -0
- package/include/__clang_cuda_runtime_wrapper.h +522 -0
- package/include/__clang_cuda_texture_intrinsics.h +1177 -0
- package/include/__clang_hip_cmath.h +848 -0
- package/include/__clang_hip_libdevice_declares.h +340 -0
- package/include/__clang_hip_math.h +1405 -0
- package/include/__clang_hip_runtime_wrapper.h +165 -0
- package/include/__clang_hip_stdlib.h +43 -0
- package/include/__clang_spirv_builtins.h +217 -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 +19364 -0
- package/include/amdgpuintrin.h +191 -0
- package/include/ammintrin.h +183 -0
- package/include/amo.h +131 -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/amxtf32intrin.h +108 -0
- package/include/andes_vector.h +16 -0
- package/include/arm64intr.h +35 -0
- package/include/arm_acle.h +865 -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 +74183 -0
- package/include/arm_neon_sve_bridge.h +182 -0
- package/include/arm_sme.h +3741 -0
- package/include/arm_sve.h +32278 -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 +5191 -0
- package/include/avx512bf16intrin.h +292 -0
- package/include/avx512bitalgintrin.h +75 -0
- package/include/avx512bwintrin.h +1895 -0
- package/include/avx512cdintrin.h +112 -0
- package/include/avx512dqintrin.h +1350 -0
- package/include/avx512fintrin.h +9378 -0
- package/include/avx512fp16intrin.h +3355 -0
- package/include/avx512ifmaintrin.h +68 -0
- package/include/avx512ifmavlintrin.h +138 -0
- package/include/avx512vbmi2intrin.h +368 -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 +3064 -0
- package/include/avx512vlcdintrin.h +202 -0
- package/include/avx512vldqintrin.h +1156 -0
- package/include/avx512vlfp16intrin.h +2090 -0
- package/include/avx512vlintrin.h +8083 -0
- package/include/avx512vlvbmi2intrin.h +710 -0
- package/include/avx512vlvnniintrin.h +313 -0
- package/include/avx512vlvp2intersectintrin.h +123 -0
- package/include/avx512vnniintrin.h +116 -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 +233 -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 +100 -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/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 +330 -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/hresetintrin.h +49 -0
- package/include/htmintrin.h +212 -0
- package/include/htmxlintrin.h +345 -0
- package/include/hvx_hexagon_protos.h +5399 -0
- package/include/ia32intrin.h +863 -0
- package/include/immintrin.h +595 -0
- package/include/intrin.h +491 -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 +260 -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 +28 -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 +28 -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 +360 -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 +219 -0
- package/include/opencl-c-base.h +758 -0
- package/include/opencl-c.h +18676 -0
- package/include/openmp_wrappers/__clang_openmp_device_functions.h +104 -0
- package/include/openmp_wrappers/cmath +132 -0
- package/include/openmp_wrappers/complex +55 -0
- package/include/openmp_wrappers/complex.h +35 -0
- package/include/openmp_wrappers/complex_cmath.h +393 -0
- package/include/openmp_wrappers/math.h +61 -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 +1001 -0
- package/include/profile/instr_prof_interface.h +88 -0
- package/include/ptrauth.h +407 -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 +195 -0
- package/include/riscv_corev_alu.h +128 -0
- package/include/riscv_crypto.h +170 -0
- package/include/riscv_mips.h +34 -0
- package/include/riscv_nds.h +89 -0
- package/include/riscv_ntlh.h +26 -0
- package/include/riscv_vector.h +422 -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 +348 -0
- package/include/sanitizer/common_interface_defs.h +544 -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/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/ubsan_interface.h +34 -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 +174 -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 +194 -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 +844 -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 +2143 -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 +3175 -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/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,203 @@
|
|
|
1
|
+
/*===----------------------- raointintrin.h - RAOINT ------------------------===
|
|
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
|
+
|
|
10
|
+
#ifndef __X86GPRINTRIN_H
|
|
11
|
+
#error "Never use <raointintrin.h> directly; include <x86gprintrin.h> instead."
|
|
12
|
+
#endif // __X86GPRINTRIN_H
|
|
13
|
+
|
|
14
|
+
#ifndef __RAOINTINTRIN_H
|
|
15
|
+
#define __RAOINTINTRIN_H
|
|
16
|
+
|
|
17
|
+
#define __DEFAULT_FN_ATTRS \
|
|
18
|
+
__attribute__((__always_inline__, __nodebug__, __target__("raoint")))
|
|
19
|
+
|
|
20
|
+
/// Atomically add a 32-bit value at memory operand \a __A and a 32-bit \a __B,
|
|
21
|
+
/// and store the result to the same memory location.
|
|
22
|
+
///
|
|
23
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
24
|
+
/// result in bad performance for hot data used by single thread only.
|
|
25
|
+
///
|
|
26
|
+
/// \headerfile <x86intrin.h>
|
|
27
|
+
///
|
|
28
|
+
/// This intrinsic corresponds to the \c AADD instruction.
|
|
29
|
+
///
|
|
30
|
+
/// \param __A
|
|
31
|
+
/// A pointer to a 32-bit memory location.
|
|
32
|
+
/// \param __B
|
|
33
|
+
/// A 32-bit integer value.
|
|
34
|
+
///
|
|
35
|
+
/// \code{.operation}
|
|
36
|
+
/// MEM[__A+31:__A] := MEM[__A+31:__A] + __B[31:0]
|
|
37
|
+
/// \endcode
|
|
38
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aadd_i32(int *__A, int __B) {
|
|
39
|
+
__builtin_ia32_aadd32((int *)__A, __B);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/// Atomically and a 32-bit value at memory operand \a __A and a 32-bit \a __B,
|
|
43
|
+
/// and store the result to the same memory location.
|
|
44
|
+
///
|
|
45
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
46
|
+
/// result in bad performance for hot data used by single thread only.
|
|
47
|
+
///
|
|
48
|
+
/// \headerfile <x86intrin.h>
|
|
49
|
+
///
|
|
50
|
+
/// This intrinsic corresponds to the \c AAND instruction.
|
|
51
|
+
///
|
|
52
|
+
/// \param __A
|
|
53
|
+
/// A pointer to a 32-bit memory location.
|
|
54
|
+
/// \param __B
|
|
55
|
+
/// A 32-bit integer value.
|
|
56
|
+
///
|
|
57
|
+
/// \code{.operation}
|
|
58
|
+
/// MEM[__A+31:__A] := MEM[__A+31:__A] AND __B[31:0]
|
|
59
|
+
/// \endcode
|
|
60
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aand_i32(int *__A, int __B) {
|
|
61
|
+
__builtin_ia32_aand32((int *)__A, __B);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/// Atomically or a 32-bit value at memory operand \a __A and a 32-bit \a __B,
|
|
65
|
+
/// and store the result to the same memory location.
|
|
66
|
+
///
|
|
67
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
68
|
+
/// result in bad performance for hot data used by single thread only.
|
|
69
|
+
///
|
|
70
|
+
/// \headerfile <x86intrin.h>
|
|
71
|
+
///
|
|
72
|
+
/// This intrinsic corresponds to the \c AOR instruction.
|
|
73
|
+
///
|
|
74
|
+
/// \param __A
|
|
75
|
+
/// A pointer to a 32-bit memory location.
|
|
76
|
+
/// \param __B
|
|
77
|
+
/// A 32-bit integer value.
|
|
78
|
+
///
|
|
79
|
+
/// \code{.operation}
|
|
80
|
+
/// MEM[__A+31:__A] := MEM[__A+31:__A] OR __B[31:0]
|
|
81
|
+
/// \endcode
|
|
82
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aor_i32(int *__A, int __B) {
|
|
83
|
+
__builtin_ia32_aor32((int *)__A, __B);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/// Atomically xor a 32-bit value at memory operand \a __A and a 32-bit \a __B,
|
|
87
|
+
/// and store the result to the same memory location.
|
|
88
|
+
///
|
|
89
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
90
|
+
/// result in bad performance for hot data used by single thread only.
|
|
91
|
+
///
|
|
92
|
+
/// \headerfile <x86intrin.h>
|
|
93
|
+
///
|
|
94
|
+
/// This intrinsic corresponds to the \c AXOR instruction.
|
|
95
|
+
///
|
|
96
|
+
/// \param __A
|
|
97
|
+
/// A pointer to a 32-bit memory location.
|
|
98
|
+
/// \param __B
|
|
99
|
+
/// A 32-bit integer value.
|
|
100
|
+
///
|
|
101
|
+
/// \code{.operation}
|
|
102
|
+
/// MEM[__A+31:__A] := MEM[__A+31:__A] XOR __B[31:0]
|
|
103
|
+
/// \endcode
|
|
104
|
+
static __inline__ void __DEFAULT_FN_ATTRS _axor_i32(int *__A, int __B) {
|
|
105
|
+
__builtin_ia32_axor32((int *)__A, __B);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
#ifdef __x86_64__
|
|
109
|
+
/// Atomically add a 64-bit value at memory operand \a __A and a 64-bit \a __B,
|
|
110
|
+
/// and store the result to the same memory location.
|
|
111
|
+
///
|
|
112
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
113
|
+
/// result in bad performance for hot data used by single thread only.
|
|
114
|
+
///
|
|
115
|
+
/// \headerfile <x86intrin.h>
|
|
116
|
+
///
|
|
117
|
+
/// This intrinsic corresponds to the \c AADD instruction.
|
|
118
|
+
///
|
|
119
|
+
/// \param __A
|
|
120
|
+
/// A pointer to a 64-bit memory location.
|
|
121
|
+
/// \param __B
|
|
122
|
+
/// A 64-bit integer value.
|
|
123
|
+
///
|
|
124
|
+
/// \code{.operation}
|
|
125
|
+
/// MEM[__A+63:__A] := MEM[__A+63:__A] + __B[63:0]
|
|
126
|
+
/// \endcode
|
|
127
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aadd_i64(long long *__A,
|
|
128
|
+
long long __B) {
|
|
129
|
+
__builtin_ia32_aadd64((long long *)__A, __B);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/// Atomically and a 64-bit value at memory operand \a __A and a 64-bit \a __B,
|
|
133
|
+
/// and store the result to the same memory location.
|
|
134
|
+
///
|
|
135
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
136
|
+
/// result in bad performance for hot data used by single thread only.
|
|
137
|
+
///
|
|
138
|
+
/// \headerfile <x86intrin.h>
|
|
139
|
+
///
|
|
140
|
+
/// This intrinsic corresponds to the \c AAND instruction.
|
|
141
|
+
///
|
|
142
|
+
/// \param __A
|
|
143
|
+
/// A pointer to a 64-bit memory location.
|
|
144
|
+
/// \param __B
|
|
145
|
+
/// A 64-bit integer value.
|
|
146
|
+
///
|
|
147
|
+
/// \code{.operation}
|
|
148
|
+
/// MEM[__A+63:__A] := MEM[__A+63:__A] AND __B[63:0]
|
|
149
|
+
/// \endcode
|
|
150
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aand_i64(long long *__A,
|
|
151
|
+
long long __B) {
|
|
152
|
+
__builtin_ia32_aand64((long long *)__A, __B);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
/// Atomically or a 64-bit value at memory operand \a __A and a 64-bit \a __B,
|
|
156
|
+
/// and store the result to the same memory location.
|
|
157
|
+
///
|
|
158
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
159
|
+
/// result in bad performance for hot data used by single thread only.
|
|
160
|
+
///
|
|
161
|
+
/// \headerfile <x86intrin.h>
|
|
162
|
+
///
|
|
163
|
+
/// This intrinsic corresponds to the \c AOR instruction.
|
|
164
|
+
///
|
|
165
|
+
/// \param __A
|
|
166
|
+
/// A pointer to a 64-bit memory location.
|
|
167
|
+
/// \param __B
|
|
168
|
+
/// A 64-bit integer value.
|
|
169
|
+
///
|
|
170
|
+
/// \code{.operation}
|
|
171
|
+
/// MEM[__A+63:__A] := MEM[__A+63:__A] OR __B[63:0]
|
|
172
|
+
/// \endcode
|
|
173
|
+
static __inline__ void __DEFAULT_FN_ATTRS _aor_i64(long long *__A,
|
|
174
|
+
long long __B) {
|
|
175
|
+
__builtin_ia32_aor64((long long *)__A, __B);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/// Atomically xor a 64-bit value at memory operand \a __A and a 64-bit \a __B,
|
|
179
|
+
/// and store the result to the same memory location.
|
|
180
|
+
///
|
|
181
|
+
/// This intrinsic should be used for contention or weak ordering. It may
|
|
182
|
+
/// result in bad performance for hot data used by single thread only.
|
|
183
|
+
///
|
|
184
|
+
/// \headerfile <x86intrin.h>
|
|
185
|
+
///
|
|
186
|
+
/// This intrinsic corresponds to the \c AXOR instruction.
|
|
187
|
+
///
|
|
188
|
+
/// \param __A
|
|
189
|
+
/// A pointer to a 64-bit memory location.
|
|
190
|
+
/// \param __B
|
|
191
|
+
/// A 64-bit integer value.
|
|
192
|
+
///
|
|
193
|
+
/// \code{.operation}
|
|
194
|
+
/// MEM[__A+63:__A] := MEM[__A+63:__A] XOR __B[63:0]
|
|
195
|
+
/// \endcode
|
|
196
|
+
static __inline__ void __DEFAULT_FN_ATTRS _axor_i64(long long *__A,
|
|
197
|
+
long long __B) {
|
|
198
|
+
__builtin_ia32_axor64((long long *)__A, __B);
|
|
199
|
+
}
|
|
200
|
+
#endif // __x86_64__
|
|
201
|
+
|
|
202
|
+
#undef __DEFAULT_FN_ATTRS
|
|
203
|
+
#endif // __RAOINTINTRIN_H
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/*===---- rdpruintrin.h - RDPRU 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
|
+
|
|
10
|
+
#if !defined __X86INTRIN_H
|
|
11
|
+
#error "Never use <rdpruintrin.h> directly; include <x86intrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __RDPRUINTRIN_H
|
|
15
|
+
#define __RDPRUINTRIN_H
|
|
16
|
+
|
|
17
|
+
/* Define the default attributes for the functions in this file. */
|
|
18
|
+
#define __DEFAULT_FN_ATTRS \
|
|
19
|
+
__attribute__((__always_inline__, __nodebug__, __target__("rdpru")))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/// Reads the content of a processor register.
|
|
23
|
+
///
|
|
24
|
+
/// \headerfile <x86intrin.h>
|
|
25
|
+
///
|
|
26
|
+
/// This intrinsic corresponds to the <c> RDPRU </c> instruction.
|
|
27
|
+
///
|
|
28
|
+
/// \param reg_id
|
|
29
|
+
/// A processor register identifier.
|
|
30
|
+
static __inline__ unsigned long long __DEFAULT_FN_ATTRS
|
|
31
|
+
__rdpru (int reg_id)
|
|
32
|
+
{
|
|
33
|
+
return __builtin_ia32_rdpru(reg_id);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#define __RDPRU_MPERF 0
|
|
37
|
+
#define __RDPRU_APERF 1
|
|
38
|
+
|
|
39
|
+
/// Reads the content of processor register MPERF.
|
|
40
|
+
///
|
|
41
|
+
/// \headerfile <x86intrin.h>
|
|
42
|
+
///
|
|
43
|
+
/// This intrinsic generates instruction <c> RDPRU </c> to read the value of
|
|
44
|
+
/// register MPERF.
|
|
45
|
+
#define __mperf() __builtin_ia32_rdpru(__RDPRU_MPERF)
|
|
46
|
+
|
|
47
|
+
/// Reads the content of processor register APERF.
|
|
48
|
+
///
|
|
49
|
+
/// \headerfile <x86intrin.h>
|
|
50
|
+
///
|
|
51
|
+
/// This intrinsic generates instruction <c> RDPRU </c> to read the value of
|
|
52
|
+
/// register APERF.
|
|
53
|
+
#define __aperf() __builtin_ia32_rdpru(__RDPRU_APERF)
|
|
54
|
+
|
|
55
|
+
#undef __DEFAULT_FN_ATTRS
|
|
56
|
+
|
|
57
|
+
#endif /* __RDPRUINTRIN_H */
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/*===---- rdseedintrin.h - RDSEED 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
|
+
|
|
10
|
+
#ifndef __IMMINTRIN_H
|
|
11
|
+
#error "Never use <rdseedintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __RDSEEDINTRIN_H
|
|
15
|
+
#define __RDSEEDINTRIN_H
|
|
16
|
+
|
|
17
|
+
/* Define the default attributes for the functions in this file. */
|
|
18
|
+
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("rdseed")))
|
|
19
|
+
|
|
20
|
+
/// Stores a hardware-generated 16-bit random value in the memory at \a __p.
|
|
21
|
+
///
|
|
22
|
+
/// The random number generator complies with NIST SP800-90B and SP800-90C.
|
|
23
|
+
///
|
|
24
|
+
/// \code{.operation}
|
|
25
|
+
/// IF HW_NRND_GEN.ready == 1
|
|
26
|
+
/// Store16(__p, HW_NRND_GEN.data)
|
|
27
|
+
/// result := 1
|
|
28
|
+
/// ELSE
|
|
29
|
+
/// Store16(__p, 0)
|
|
30
|
+
/// result := 0
|
|
31
|
+
/// END
|
|
32
|
+
/// \endcode
|
|
33
|
+
///
|
|
34
|
+
/// \headerfile <immintrin.h>
|
|
35
|
+
///
|
|
36
|
+
/// This intrinsic corresponds to the \c RDSEED instruction.
|
|
37
|
+
///
|
|
38
|
+
/// \param __p
|
|
39
|
+
/// Pointer to memory for storing the 16-bit random number.
|
|
40
|
+
/// \returns 1 if a random number was generated, 0 if not.
|
|
41
|
+
static __inline__ int __DEFAULT_FN_ATTRS
|
|
42
|
+
_rdseed16_step(unsigned short *__p)
|
|
43
|
+
{
|
|
44
|
+
return (int) __builtin_ia32_rdseed16_step(__p);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/// Stores a hardware-generated 32-bit random value in the memory at \a __p.
|
|
48
|
+
///
|
|
49
|
+
/// The random number generator complies with NIST SP800-90B and SP800-90C.
|
|
50
|
+
///
|
|
51
|
+
/// \code{.operation}
|
|
52
|
+
/// IF HW_NRND_GEN.ready == 1
|
|
53
|
+
/// Store32(__p, HW_NRND_GEN.data)
|
|
54
|
+
/// result := 1
|
|
55
|
+
/// ELSE
|
|
56
|
+
/// Store32(__p, 0)
|
|
57
|
+
/// result := 0
|
|
58
|
+
/// END
|
|
59
|
+
/// \endcode
|
|
60
|
+
///
|
|
61
|
+
/// \headerfile <immintrin.h>
|
|
62
|
+
///
|
|
63
|
+
/// This intrinsic corresponds to the \c RDSEED instruction.
|
|
64
|
+
///
|
|
65
|
+
/// \param __p
|
|
66
|
+
/// Pointer to memory for storing the 32-bit random number.
|
|
67
|
+
/// \returns 1 if a random number was generated, 0 if not.
|
|
68
|
+
static __inline__ int __DEFAULT_FN_ATTRS
|
|
69
|
+
_rdseed32_step(unsigned int *__p)
|
|
70
|
+
{
|
|
71
|
+
return (int) __builtin_ia32_rdseed32_step(__p);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
#ifdef __x86_64__
|
|
75
|
+
/// Stores a hardware-generated 64-bit random value in the memory at \a __p.
|
|
76
|
+
///
|
|
77
|
+
/// The random number generator complies with NIST SP800-90B and SP800-90C.
|
|
78
|
+
///
|
|
79
|
+
/// \code{.operation}
|
|
80
|
+
/// IF HW_NRND_GEN.ready == 1
|
|
81
|
+
/// Store64(__p, HW_NRND_GEN.data)
|
|
82
|
+
/// result := 1
|
|
83
|
+
/// ELSE
|
|
84
|
+
/// Store64(__p, 0)
|
|
85
|
+
/// result := 0
|
|
86
|
+
/// END
|
|
87
|
+
/// \endcode
|
|
88
|
+
///
|
|
89
|
+
/// \headerfile <immintrin.h>
|
|
90
|
+
///
|
|
91
|
+
/// This intrinsic corresponds to the \c RDSEED instruction.
|
|
92
|
+
///
|
|
93
|
+
/// \param __p
|
|
94
|
+
/// Pointer to memory for storing the 64-bit random number.
|
|
95
|
+
/// \returns 1 if a random number was generated, 0 if not.
|
|
96
|
+
static __inline__ int __DEFAULT_FN_ATTRS
|
|
97
|
+
_rdseed64_step(unsigned long long *__p)
|
|
98
|
+
{
|
|
99
|
+
return (int) __builtin_ia32_rdseed64_step(__p);
|
|
100
|
+
}
|
|
101
|
+
#endif
|
|
102
|
+
|
|
103
|
+
#undef __DEFAULT_FN_ATTRS
|
|
104
|
+
|
|
105
|
+
#endif /* __RDSEEDINTRIN_H */
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/*===---- riscv_bitmanip.h - RISC-V Zb* 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
|
+
|
|
10
|
+
#ifndef __RISCV_BITMANIP_H
|
|
11
|
+
#define __RISCV_BITMANIP_H
|
|
12
|
+
|
|
13
|
+
#include <stdint.h>
|
|
14
|
+
|
|
15
|
+
#if defined(__cplusplus)
|
|
16
|
+
extern "C" {
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
#if defined(__riscv_zbb)
|
|
20
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
21
|
+
__riscv_orc_b_32(uint32_t __x) {
|
|
22
|
+
return __builtin_riscv_orc_b_32(__x);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
26
|
+
__riscv_clz_32(uint32_t __x) {
|
|
27
|
+
return __builtin_riscv_clz_32(__x);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
31
|
+
__riscv_ctz_32(uint32_t __x) {
|
|
32
|
+
return __builtin_riscv_ctz_32(__x);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
36
|
+
__riscv_cpop_32(uint32_t __x) {
|
|
37
|
+
return __builtin_popcount(__x);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#if __riscv_xlen == 64
|
|
41
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
42
|
+
__riscv_orc_b_64(uint64_t __x) {
|
|
43
|
+
return __builtin_riscv_orc_b_64(__x);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
47
|
+
__riscv_clz_64(uint64_t __x) {
|
|
48
|
+
return __builtin_riscv_clz_64(__x);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
52
|
+
__riscv_ctz_64(uint64_t __x) {
|
|
53
|
+
return __builtin_riscv_ctz_64(__x);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static __inline__ unsigned __attribute__((__always_inline__, __nodebug__))
|
|
57
|
+
__riscv_cpop_64(uint64_t __x) {
|
|
58
|
+
return __builtin_popcountll(__x);
|
|
59
|
+
}
|
|
60
|
+
#endif
|
|
61
|
+
#endif // defined(__riscv_zbb)
|
|
62
|
+
|
|
63
|
+
#if defined(__riscv_zbb) || defined(__riscv_zbkb)
|
|
64
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
65
|
+
__riscv_rev8_32(uint32_t __x) {
|
|
66
|
+
return __builtin_bswap32(__x);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
70
|
+
__riscv_rol_32(uint32_t __x, uint32_t __y) {
|
|
71
|
+
return __builtin_rotateleft32(__x, __y);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
75
|
+
__riscv_ror_32(uint32_t __x, uint32_t __y) {
|
|
76
|
+
return __builtin_rotateright32(__x, __y);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
#if __riscv_xlen == 64
|
|
80
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
81
|
+
__riscv_rev8_64(uint64_t __x) {
|
|
82
|
+
return __builtin_bswap64(__x);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
86
|
+
__riscv_rol_64(uint64_t __x, uint32_t __y) {
|
|
87
|
+
return __builtin_rotateleft64(__x, __y);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
91
|
+
__riscv_ror_64(uint64_t __x, uint32_t __y) {
|
|
92
|
+
return __builtin_rotateright64(__x, __y);
|
|
93
|
+
}
|
|
94
|
+
#endif
|
|
95
|
+
#endif // defined(__riscv_zbb) || defined(__riscv_zbkb)
|
|
96
|
+
|
|
97
|
+
#if defined(__riscv_zbkb)
|
|
98
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
99
|
+
__riscv_brev8_32(uint32_t __x) {
|
|
100
|
+
return __builtin_riscv_brev8_32(__x);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#if __riscv_xlen == 64
|
|
104
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
105
|
+
__riscv_brev8_64(uint64_t __x) {
|
|
106
|
+
return __builtin_riscv_brev8_64(__x);
|
|
107
|
+
}
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
#if __riscv_xlen == 32
|
|
111
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
112
|
+
__riscv_unzip_32(uint32_t __x) {
|
|
113
|
+
return __builtin_riscv_unzip_32(__x);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
117
|
+
__riscv_zip_32(uint32_t __x) {
|
|
118
|
+
return __builtin_riscv_zip_32(__x);
|
|
119
|
+
}
|
|
120
|
+
#endif
|
|
121
|
+
#endif // defined(__riscv_zbkb)
|
|
122
|
+
|
|
123
|
+
#if defined(__riscv_zbc)
|
|
124
|
+
#if __riscv_xlen == 32
|
|
125
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
126
|
+
__riscv_clmulr_32(uint32_t __x, uint32_t __y) {
|
|
127
|
+
return __builtin_riscv_clmulr_32(__x, __y);
|
|
128
|
+
}
|
|
129
|
+
#endif
|
|
130
|
+
|
|
131
|
+
#if __riscv_xlen == 64
|
|
132
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
133
|
+
__riscv_clmulr_64(uint64_t __x, uint64_t __y) {
|
|
134
|
+
return __builtin_riscv_clmulr_64(__x, __y);
|
|
135
|
+
}
|
|
136
|
+
#endif
|
|
137
|
+
#endif // defined(__riscv_zbc)
|
|
138
|
+
|
|
139
|
+
#if defined(__riscv_zbkc) || defined(__riscv_zbc)
|
|
140
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
141
|
+
__riscv_clmul_32(uint32_t __x, uint32_t __y) {
|
|
142
|
+
return __builtin_riscv_clmul_32(__x, __y);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
#if __riscv_xlen == 32
|
|
146
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
147
|
+
__riscv_clmulh_32(uint32_t __x, uint32_t __y) {
|
|
148
|
+
return __builtin_riscv_clmulh_32(__x, __y);
|
|
149
|
+
}
|
|
150
|
+
#endif
|
|
151
|
+
|
|
152
|
+
#if __riscv_xlen == 64
|
|
153
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
154
|
+
__riscv_clmul_64(uint64_t __x, uint64_t __y) {
|
|
155
|
+
return __builtin_riscv_clmul_64(__x, __y);
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
159
|
+
__riscv_clmulh_64(uint64_t __x, uint64_t __y) {
|
|
160
|
+
return __builtin_riscv_clmulh_64(__x, __y);
|
|
161
|
+
}
|
|
162
|
+
#endif
|
|
163
|
+
#endif // defined(__riscv_zbkc) || defined(__riscv_zbc)
|
|
164
|
+
|
|
165
|
+
#if defined(__riscv_zbkx)
|
|
166
|
+
#if __riscv_xlen == 32
|
|
167
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
168
|
+
__riscv_xperm4_32(uint32_t __x, uint32_t __y) {
|
|
169
|
+
return __builtin_riscv_xperm4_32(__x, __y);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
|
|
173
|
+
__riscv_xperm8_32(uint32_t __x, uint32_t __y) {
|
|
174
|
+
return __builtin_riscv_xperm8_32(__x, __y);
|
|
175
|
+
}
|
|
176
|
+
#endif
|
|
177
|
+
|
|
178
|
+
#if __riscv_xlen == 64
|
|
179
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
180
|
+
__riscv_xperm4_64(uint64_t __x, uint64_t __y) {
|
|
181
|
+
return __builtin_riscv_xperm4_64(__x, __y);
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
|
|
185
|
+
__riscv_xperm8_64(uint64_t __x, uint64_t __y) {
|
|
186
|
+
return __builtin_riscv_xperm8_64(__x, __y);
|
|
187
|
+
}
|
|
188
|
+
#endif
|
|
189
|
+
#endif // defined(__riscv_zbkx)
|
|
190
|
+
|
|
191
|
+
#if defined(__cplusplus)
|
|
192
|
+
}
|
|
193
|
+
#endif
|
|
194
|
+
|
|
195
|
+
#endif
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/*===---- riscv_corev_alu.h - CORE-V ALU 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
|
+
|
|
10
|
+
#ifndef __RISCV_COREV_ALU_H
|
|
11
|
+
#define __RISCV_COREV_ALU_H
|
|
12
|
+
|
|
13
|
+
#include <stdint.h>
|
|
14
|
+
|
|
15
|
+
#if defined(__cplusplus)
|
|
16
|
+
extern "C" {
|
|
17
|
+
#endif
|
|
18
|
+
|
|
19
|
+
#if defined(__riscv_xcvalu)
|
|
20
|
+
|
|
21
|
+
#define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
|
|
22
|
+
|
|
23
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_abs(long a) {
|
|
24
|
+
return __builtin_abs(a);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_sle(long a, long b) {
|
|
28
|
+
return __builtin_riscv_cv_alu_sle(a, b);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static __inline__ long __DEFAULT_FN_ATTRS
|
|
32
|
+
__riscv_cv_alu_sleu(unsigned long a, unsigned long b) {
|
|
33
|
+
return __builtin_riscv_cv_alu_sleu(a, b);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_min(long a, long b) {
|
|
37
|
+
return __builtin_elementwise_min(a, b);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
41
|
+
__riscv_cv_alu_minu(unsigned long a, unsigned long b) {
|
|
42
|
+
return __builtin_elementwise_min(a, b);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_max(long a, long b) {
|
|
46
|
+
return __builtin_elementwise_max(a, b);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
50
|
+
__riscv_cv_alu_maxu(unsigned long a, unsigned long b) {
|
|
51
|
+
return __builtin_elementwise_max(a, b);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_exths(int16_t a) {
|
|
55
|
+
return __builtin_riscv_cv_alu_exths(a);
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
59
|
+
__riscv_cv_alu_exthz(uint16_t a) {
|
|
60
|
+
return __builtin_riscv_cv_alu_exthz(a);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_extbs(int8_t a) {
|
|
64
|
+
return __builtin_riscv_cv_alu_extbs(a);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
68
|
+
__riscv_cv_alu_extbz(uint8_t a) {
|
|
69
|
+
return __builtin_riscv_cv_alu_extbz(a);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_clip(long a,
|
|
73
|
+
unsigned long b) {
|
|
74
|
+
return __builtin_riscv_cv_alu_clip(a, b);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
78
|
+
__riscv_cv_alu_clipu(unsigned long a, unsigned long b) {
|
|
79
|
+
return __builtin_riscv_cv_alu_clipu(a, b);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addN(long a, long b,
|
|
83
|
+
uint8_t shft) {
|
|
84
|
+
return __builtin_riscv_cv_alu_addN(a, b, shft);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
88
|
+
__riscv_cv_alu_adduN(unsigned long a, unsigned long b, uint8_t shft) {
|
|
89
|
+
return __builtin_riscv_cv_alu_adduN(a, b, shft);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_addRN(long a, long b,
|
|
93
|
+
uint8_t shft) {
|
|
94
|
+
return __builtin_riscv_cv_alu_addRN(a, b, shft);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
98
|
+
__riscv_cv_alu_adduRN(unsigned long a, unsigned long b, uint8_t shft) {
|
|
99
|
+
return __builtin_riscv_cv_alu_adduRN(a, b, shft);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subN(long a, long b,
|
|
103
|
+
uint8_t shft) {
|
|
104
|
+
return __builtin_riscv_cv_alu_subN(a, b, shft);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
108
|
+
__riscv_cv_alu_subuN(unsigned long a, unsigned long b, uint8_t shft) {
|
|
109
|
+
return __builtin_riscv_cv_alu_subuN(a, b, shft);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
static __inline__ long __DEFAULT_FN_ATTRS __riscv_cv_alu_subRN(long a, long b,
|
|
113
|
+
uint8_t shft) {
|
|
114
|
+
return __builtin_riscv_cv_alu_subRN(a, b, shft);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
static __inline__ unsigned long __DEFAULT_FN_ATTRS
|
|
118
|
+
__riscv_cv_alu_subuRN(unsigned long a, unsigned long b, uint8_t shft) {
|
|
119
|
+
return __builtin_riscv_cv_alu_subuRN(a, b, shft);
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
#endif // defined(__riscv_xcvalu)
|
|
123
|
+
|
|
124
|
+
#if defined(__cplusplus)
|
|
125
|
+
}
|
|
126
|
+
#endif
|
|
127
|
+
|
|
128
|
+
#endif // define __RISCV_COREV_ALU_H
|