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,223 @@
|
|
|
1
|
+
//===-- tsan_interface_atomic.h ---------------------------------*- C++ -*-===//
|
|
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
|
+
// This file is a part of ThreadSanitizer (TSan), a race detector.
|
|
10
|
+
//
|
|
11
|
+
// Public interface header for TSan atomics.
|
|
12
|
+
//===----------------------------------------------------------------------===//
|
|
13
|
+
#ifndef TSAN_INTERFACE_ATOMIC_H
|
|
14
|
+
#define TSAN_INTERFACE_ATOMIC_H
|
|
15
|
+
|
|
16
|
+
#include <sanitizer/common_interface_defs.h>
|
|
17
|
+
|
|
18
|
+
#ifdef __cplusplus
|
|
19
|
+
extern "C" {
|
|
20
|
+
#endif
|
|
21
|
+
|
|
22
|
+
typedef char __tsan_atomic8;
|
|
23
|
+
typedef short __tsan_atomic16;
|
|
24
|
+
typedef int __tsan_atomic32;
|
|
25
|
+
typedef long __tsan_atomic64;
|
|
26
|
+
#if defined(__SIZEOF_INT128__) || \
|
|
27
|
+
(__clang_major__ * 100 + __clang_minor__ >= 302)
|
|
28
|
+
__extension__ typedef __int128 __tsan_atomic128;
|
|
29
|
+
#define __TSAN_HAS_INT128 1
|
|
30
|
+
#else
|
|
31
|
+
#define __TSAN_HAS_INT128 0
|
|
32
|
+
#endif
|
|
33
|
+
|
|
34
|
+
// Part of ABI, do not change.
|
|
35
|
+
// https://github.com/llvm/llvm-project/blob/main/libcxx/include/atomic
|
|
36
|
+
typedef enum {
|
|
37
|
+
__tsan_memory_order_relaxed,
|
|
38
|
+
__tsan_memory_order_consume,
|
|
39
|
+
__tsan_memory_order_acquire,
|
|
40
|
+
__tsan_memory_order_release,
|
|
41
|
+
__tsan_memory_order_acq_rel,
|
|
42
|
+
__tsan_memory_order_seq_cst
|
|
43
|
+
} __tsan_memory_order;
|
|
44
|
+
|
|
45
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
46
|
+
__tsan_atomic8_load(const volatile __tsan_atomic8 *a, int mo);
|
|
47
|
+
__tsan_atomic16 SANITIZER_CDECL
|
|
48
|
+
__tsan_atomic16_load(const volatile __tsan_atomic16 *a, int mo);
|
|
49
|
+
__tsan_atomic32 SANITIZER_CDECL
|
|
50
|
+
__tsan_atomic32_load(const volatile __tsan_atomic32 *a, int mo);
|
|
51
|
+
__tsan_atomic64 SANITIZER_CDECL
|
|
52
|
+
__tsan_atomic64_load(const volatile __tsan_atomic64 *a, int mo);
|
|
53
|
+
#if __TSAN_HAS_INT128
|
|
54
|
+
__tsan_atomic128 SANITIZER_CDECL
|
|
55
|
+
__tsan_atomic128_load(const volatile __tsan_atomic128 *a, int mo);
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
void SANITIZER_CDECL __tsan_atomic8_store(volatile __tsan_atomic8 *a,
|
|
59
|
+
__tsan_atomic8 v, int mo);
|
|
60
|
+
void SANITIZER_CDECL __tsan_atomic16_store(volatile __tsan_atomic16 *a,
|
|
61
|
+
__tsan_atomic16 v, int mo);
|
|
62
|
+
void SANITIZER_CDECL __tsan_atomic32_store(volatile __tsan_atomic32 *a,
|
|
63
|
+
__tsan_atomic32 v, int mo);
|
|
64
|
+
void SANITIZER_CDECL __tsan_atomic64_store(volatile __tsan_atomic64 *a,
|
|
65
|
+
__tsan_atomic64 v, int mo);
|
|
66
|
+
#if __TSAN_HAS_INT128
|
|
67
|
+
void SANITIZER_CDECL __tsan_atomic128_store(volatile __tsan_atomic128 *a,
|
|
68
|
+
__tsan_atomic128 v, int mo);
|
|
69
|
+
#endif
|
|
70
|
+
|
|
71
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
72
|
+
__tsan_atomic8_exchange(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
73
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_exchange(
|
|
74
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
75
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_exchange(
|
|
76
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
77
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_exchange(
|
|
78
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
79
|
+
#if __TSAN_HAS_INT128
|
|
80
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_exchange(
|
|
81
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
82
|
+
#endif
|
|
83
|
+
|
|
84
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
85
|
+
__tsan_atomic8_fetch_add(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
86
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_add(
|
|
87
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
88
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_add(
|
|
89
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
90
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_add(
|
|
91
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
92
|
+
#if __TSAN_HAS_INT128
|
|
93
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_add(
|
|
94
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
95
|
+
#endif
|
|
96
|
+
|
|
97
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
98
|
+
__tsan_atomic8_fetch_sub(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
99
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_sub(
|
|
100
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
101
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_sub(
|
|
102
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
103
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_sub(
|
|
104
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
105
|
+
#if __TSAN_HAS_INT128
|
|
106
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_sub(
|
|
107
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
108
|
+
#endif
|
|
109
|
+
|
|
110
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
111
|
+
__tsan_atomic8_fetch_and(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
112
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_and(
|
|
113
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
114
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_and(
|
|
115
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
116
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_and(
|
|
117
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
118
|
+
#if __TSAN_HAS_INT128
|
|
119
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_and(
|
|
120
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
121
|
+
#endif
|
|
122
|
+
|
|
123
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
124
|
+
__tsan_atomic8_fetch_or(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
125
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_or(
|
|
126
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
127
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_or(
|
|
128
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
129
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_or(
|
|
130
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
131
|
+
#if __TSAN_HAS_INT128
|
|
132
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_or(
|
|
133
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
134
|
+
#endif
|
|
135
|
+
|
|
136
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
137
|
+
__tsan_atomic8_fetch_xor(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
138
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_xor(
|
|
139
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
140
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_xor(
|
|
141
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
142
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_xor(
|
|
143
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
144
|
+
#if __TSAN_HAS_INT128
|
|
145
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_xor(
|
|
146
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
147
|
+
#endif
|
|
148
|
+
|
|
149
|
+
__tsan_atomic8 SANITIZER_CDECL
|
|
150
|
+
__tsan_atomic8_fetch_nand(volatile __tsan_atomic8 *a, __tsan_atomic8 v, int mo);
|
|
151
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_fetch_nand(
|
|
152
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 v, int mo);
|
|
153
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_fetch_nand(
|
|
154
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 v, int mo);
|
|
155
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_fetch_nand(
|
|
156
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 v, int mo);
|
|
157
|
+
#if __TSAN_HAS_INT128
|
|
158
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_fetch_nand(
|
|
159
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 v, int mo);
|
|
160
|
+
#endif
|
|
161
|
+
|
|
162
|
+
int SANITIZER_CDECL __tsan_atomic8_compare_exchange_weak(
|
|
163
|
+
volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v, int mo,
|
|
164
|
+
int fail_mo);
|
|
165
|
+
int SANITIZER_CDECL __tsan_atomic16_compare_exchange_weak(
|
|
166
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v, int mo,
|
|
167
|
+
int fail_mo);
|
|
168
|
+
int SANITIZER_CDECL __tsan_atomic32_compare_exchange_weak(
|
|
169
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v, int mo,
|
|
170
|
+
int fail_mo);
|
|
171
|
+
int SANITIZER_CDECL __tsan_atomic64_compare_exchange_weak(
|
|
172
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v, int mo,
|
|
173
|
+
int fail_mo);
|
|
174
|
+
#if __TSAN_HAS_INT128
|
|
175
|
+
int SANITIZER_CDECL __tsan_atomic128_compare_exchange_weak(
|
|
176
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
|
|
177
|
+
int mo, int fail_mo);
|
|
178
|
+
#endif
|
|
179
|
+
|
|
180
|
+
int SANITIZER_CDECL __tsan_atomic8_compare_exchange_strong(
|
|
181
|
+
volatile __tsan_atomic8 *a, __tsan_atomic8 *c, __tsan_atomic8 v, int mo,
|
|
182
|
+
int fail_mo);
|
|
183
|
+
int SANITIZER_CDECL __tsan_atomic16_compare_exchange_strong(
|
|
184
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 *c, __tsan_atomic16 v, int mo,
|
|
185
|
+
int fail_mo);
|
|
186
|
+
int SANITIZER_CDECL __tsan_atomic32_compare_exchange_strong(
|
|
187
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 *c, __tsan_atomic32 v, int mo,
|
|
188
|
+
int fail_mo);
|
|
189
|
+
int SANITIZER_CDECL __tsan_atomic64_compare_exchange_strong(
|
|
190
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 *c, __tsan_atomic64 v, int mo,
|
|
191
|
+
int fail_mo);
|
|
192
|
+
#if __TSAN_HAS_INT128
|
|
193
|
+
int SANITIZER_CDECL __tsan_atomic128_compare_exchange_strong(
|
|
194
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 *c, __tsan_atomic128 v,
|
|
195
|
+
int mo, int fail_mo);
|
|
196
|
+
#endif
|
|
197
|
+
|
|
198
|
+
__tsan_atomic8 SANITIZER_CDECL __tsan_atomic8_compare_exchange_val(
|
|
199
|
+
volatile __tsan_atomic8 *a, __tsan_atomic8 c, __tsan_atomic8 v, int mo,
|
|
200
|
+
int fail_mo);
|
|
201
|
+
__tsan_atomic16 SANITIZER_CDECL __tsan_atomic16_compare_exchange_val(
|
|
202
|
+
volatile __tsan_atomic16 *a, __tsan_atomic16 c, __tsan_atomic16 v, int mo,
|
|
203
|
+
int fail_mo);
|
|
204
|
+
__tsan_atomic32 SANITIZER_CDECL __tsan_atomic32_compare_exchange_val(
|
|
205
|
+
volatile __tsan_atomic32 *a, __tsan_atomic32 c, __tsan_atomic32 v, int mo,
|
|
206
|
+
int fail_mo);
|
|
207
|
+
__tsan_atomic64 SANITIZER_CDECL __tsan_atomic64_compare_exchange_val(
|
|
208
|
+
volatile __tsan_atomic64 *a, __tsan_atomic64 c, __tsan_atomic64 v, int mo,
|
|
209
|
+
int fail_mo);
|
|
210
|
+
#if __TSAN_HAS_INT128
|
|
211
|
+
__tsan_atomic128 SANITIZER_CDECL __tsan_atomic128_compare_exchange_val(
|
|
212
|
+
volatile __tsan_atomic128 *a, __tsan_atomic128 c, __tsan_atomic128 v,
|
|
213
|
+
int mo, int fail_mo);
|
|
214
|
+
#endif
|
|
215
|
+
|
|
216
|
+
void SANITIZER_CDECL __tsan_atomic_thread_fence(int mo);
|
|
217
|
+
void SANITIZER_CDECL __tsan_atomic_signal_fence(int mo);
|
|
218
|
+
|
|
219
|
+
#ifdef __cplusplus
|
|
220
|
+
} // extern "C"
|
|
221
|
+
#endif
|
|
222
|
+
|
|
223
|
+
#endif // TSAN_INTERFACE_ATOMIC_H
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
//===-- tysan_interface.h ---------------------------------------*- C++ -*-===//
|
|
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
|
+
// This file is a part of TypeSanitizer.
|
|
10
|
+
//
|
|
11
|
+
// Public interface header for TySan.
|
|
12
|
+
//===----------------------------------------------------------------------===//
|
|
13
|
+
#ifndef SANITIZER_TYSAN_INTERFACE_H
|
|
14
|
+
#define SANITIZER_TYSAN_INTERFACE_H
|
|
15
|
+
|
|
16
|
+
#include <sanitizer/common_interface_defs.h>
|
|
17
|
+
#include <stdlib.h>
|
|
18
|
+
|
|
19
|
+
#ifdef __cplusplus
|
|
20
|
+
extern "C" {
|
|
21
|
+
#endif
|
|
22
|
+
|
|
23
|
+
/// Marks a memory region (<c>[addr, addr+size)</c>) as not yet having a type.
|
|
24
|
+
///
|
|
25
|
+
/// TySan will take the next read/write to the memory region to be the correct
|
|
26
|
+
/// type for the memory, and use that for its checks from then on.
|
|
27
|
+
///
|
|
28
|
+
/// \param addr Start of memory region.
|
|
29
|
+
/// \param size Size of memory region.
|
|
30
|
+
void SANITIZER_CDECL __tysan_set_type_unknown(void const *addr, size_t size);
|
|
31
|
+
|
|
32
|
+
#ifdef __cplusplus
|
|
33
|
+
}
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
#endif
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
//===-- sanitizer/ubsan_interface.h -----------------------------*- C++ -*-===//
|
|
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
|
+
// This file is a part of UBSanitizer (UBSan).
|
|
10
|
+
//
|
|
11
|
+
// Public interface header.
|
|
12
|
+
//===----------------------------------------------------------------------===//
|
|
13
|
+
#ifndef SANITIZER_UBSAN_INTERFACE_H
|
|
14
|
+
#define SANITIZER_UBSAN_INTERFACE_H
|
|
15
|
+
|
|
16
|
+
#include <sanitizer/common_interface_defs.h>
|
|
17
|
+
|
|
18
|
+
#ifdef __cplusplus
|
|
19
|
+
extern "C" {
|
|
20
|
+
#endif
|
|
21
|
+
/// User-provided default option settings.
|
|
22
|
+
///
|
|
23
|
+
/// You can provide your own implementation of this function to return a string
|
|
24
|
+
/// containing UBSan runtime options (for example,
|
|
25
|
+
/// <c>verbosity=1:halt_on_error=0</c>).
|
|
26
|
+
///
|
|
27
|
+
/// \returns Default options string.
|
|
28
|
+
const char *SANITIZER_CDECL __ubsan_default_options(void);
|
|
29
|
+
|
|
30
|
+
/// User-provided default suppressions.
|
|
31
|
+
///
|
|
32
|
+
/// You can provide your own implementation of this function to return a string
|
|
33
|
+
/// containing UBSan suppressions.
|
|
34
|
+
///
|
|
35
|
+
/// \returns Default suppressions string.
|
|
36
|
+
const char *SANITIZER_CDECL __ubsan_default_suppressions(void);
|
|
37
|
+
|
|
38
|
+
/// Set up an interval timer and install a SIGPROF signal handler that crashes
|
|
39
|
+
/// the program if it is stuck in a trap loop generated by -fsanitize-trap-loop.
|
|
40
|
+
///
|
|
41
|
+
/// This function is only intended to be called by single-threaded programs.
|
|
42
|
+
/// Because interval timers are delivered to an arbitrary thread in the process,
|
|
43
|
+
/// it is possible that a thread in a trap loop will never have the signal
|
|
44
|
+
/// delivered to it. For multi-threaded programs, it is recommended to call
|
|
45
|
+
/// OS-specific APIs such as timer_create(CLOCK_THREAD_CPUTIME_ID) on Linux to
|
|
46
|
+
/// install a timer on each thread.
|
|
47
|
+
///
|
|
48
|
+
/// Programs with their own signal handlers can call __ubsan_is_trap_loop from
|
|
49
|
+
/// the signal handler to implement trap loop handling.
|
|
50
|
+
///
|
|
51
|
+
/// This function is currently only supported on Linux/x86.
|
|
52
|
+
void __ubsan_install_trap_loop_detection(void);
|
|
53
|
+
|
|
54
|
+
/// Returns whether uc (actually a pointer to ucontext_t) indicates that the
|
|
55
|
+
/// thread is stuck in a trap loop generated by -fsanitize-trap-loop.
|
|
56
|
+
///
|
|
57
|
+
/// This function is currently only supported on Linux/x86.
|
|
58
|
+
int __ubsan_is_trap_loop(void *uc);
|
|
59
|
+
|
|
60
|
+
#ifdef __cplusplus
|
|
61
|
+
} // extern "C"
|
|
62
|
+
#endif
|
|
63
|
+
|
|
64
|
+
#endif // SANITIZER_UBSAN_INTERFACE_H
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/*===--------------- serializeintrin.h - serialize 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 <serializeintrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __SERIALIZEINTRIN_H
|
|
15
|
+
#define __SERIALIZEINTRIN_H
|
|
16
|
+
|
|
17
|
+
/// Serialize instruction fetch and execution.
|
|
18
|
+
///
|
|
19
|
+
/// \headerfile <x86intrin.h>
|
|
20
|
+
///
|
|
21
|
+
/// This intrinsic corresponds to the <c> SERIALIZE </c> instruction.
|
|
22
|
+
///
|
|
23
|
+
static __inline__ void
|
|
24
|
+
__attribute__((__always_inline__, __nodebug__, __target__("serialize")))
|
|
25
|
+
_serialize (void)
|
|
26
|
+
{
|
|
27
|
+
__builtin_ia32_serialize ();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
#endif /* __SERIALIZEINTRIN_H */
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*===---- sgxintrin.h - X86 SGX intrinsics configuration -------------------===
|
|
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 && !defined __IMMINTRIN_H
|
|
11
|
+
#error "Never use <sgxintrin.h> directly; include <x86intrin.h> instead."
|
|
12
|
+
#endif
|
|
13
|
+
|
|
14
|
+
#ifndef __SGXINTRIN_H
|
|
15
|
+
#define __SGXINTRIN_H
|
|
16
|
+
|
|
17
|
+
#if __has_extension(gnu_asm)
|
|
18
|
+
|
|
19
|
+
/* Define the default attributes for the functions in this file. */
|
|
20
|
+
#define __DEFAULT_FN_ATTRS \
|
|
21
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sgx")))
|
|
22
|
+
|
|
23
|
+
static __inline unsigned int __DEFAULT_FN_ATTRS
|
|
24
|
+
_enclu_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
|
|
25
|
+
{
|
|
26
|
+
unsigned int __result;
|
|
27
|
+
__asm__ ("enclu"
|
|
28
|
+
: "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
|
|
29
|
+
: "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
|
|
30
|
+
: "cc");
|
|
31
|
+
return __result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static __inline unsigned int __DEFAULT_FN_ATTRS
|
|
35
|
+
_encls_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
|
|
36
|
+
{
|
|
37
|
+
unsigned int __result;
|
|
38
|
+
__asm__ ("encls"
|
|
39
|
+
: "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
|
|
40
|
+
: "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
|
|
41
|
+
: "cc");
|
|
42
|
+
return __result;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
static __inline unsigned int __DEFAULT_FN_ATTRS
|
|
46
|
+
_enclv_u32(unsigned int __leaf, __SIZE_TYPE__ __d[])
|
|
47
|
+
{
|
|
48
|
+
unsigned int __result;
|
|
49
|
+
__asm__ ("enclv"
|
|
50
|
+
: "=a" (__result), "=b" (__d[0]), "=c" (__d[1]), "=d" (__d[2])
|
|
51
|
+
: "a" (__leaf), "b" (__d[0]), "c" (__d[1]), "d" (__d[2])
|
|
52
|
+
: "cc");
|
|
53
|
+
return __result;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
#undef __DEFAULT_FN_ATTRS
|
|
57
|
+
|
|
58
|
+
#endif /* __has_extension(gnu_asm) */
|
|
59
|
+
|
|
60
|
+
#endif
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/*===--------------- sha512intrin.h - SHA512 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 <sha512intrin.h> directly; include <immintrin.h> instead."
|
|
12
|
+
#endif // __IMMINTRIN_H
|
|
13
|
+
|
|
14
|
+
#ifndef __SHA512INTRIN_H
|
|
15
|
+
#define __SHA512INTRIN_H
|
|
16
|
+
|
|
17
|
+
#define __DEFAULT_FN_ATTRS256 \
|
|
18
|
+
__attribute__((__always_inline__, __nodebug__, __target__("sha512"), \
|
|
19
|
+
__min_vector_width__(256)))
|
|
20
|
+
|
|
21
|
+
/// This intrinisc is one of the two SHA512 message scheduling instructions.
|
|
22
|
+
/// The intrinsic performs an intermediate calculation for the next four
|
|
23
|
+
/// SHA512 message qwords. The calculated results are stored in \a dst.
|
|
24
|
+
///
|
|
25
|
+
/// \headerfile <immintrin.h>
|
|
26
|
+
///
|
|
27
|
+
/// \code
|
|
28
|
+
/// __m256i _mm256_sha512msg1_epi64(__m256i __A, __m128i __B)
|
|
29
|
+
/// \endcode
|
|
30
|
+
///
|
|
31
|
+
/// This intrinsic corresponds to the \c VSHA512MSG1 instruction.
|
|
32
|
+
///
|
|
33
|
+
/// \param __A
|
|
34
|
+
/// A 256-bit vector of [4 x long long].
|
|
35
|
+
/// \param __B
|
|
36
|
+
/// A 128-bit vector of [2 x long long].
|
|
37
|
+
/// \returns
|
|
38
|
+
/// A 256-bit vector of [4 x long long].
|
|
39
|
+
///
|
|
40
|
+
/// \code{.operation}
|
|
41
|
+
/// DEFINE ROR64(qword, n) {
|
|
42
|
+
/// count := n % 64
|
|
43
|
+
/// dest := (qword >> count) | (qword << (64 - count))
|
|
44
|
+
/// RETURN dest
|
|
45
|
+
/// }
|
|
46
|
+
/// DEFINE SHR64(qword, n) {
|
|
47
|
+
/// RETURN qword >> n
|
|
48
|
+
/// }
|
|
49
|
+
/// DEFINE s0(qword):
|
|
50
|
+
/// RETURN ROR64(qword,1) ^ ROR64(qword, 8) ^ SHR64(qword, 7)
|
|
51
|
+
/// }
|
|
52
|
+
/// W[4] := __B.qword[0]
|
|
53
|
+
/// W[3] := __A.qword[3]
|
|
54
|
+
/// W[2] := __A.qword[2]
|
|
55
|
+
/// W[1] := __A.qword[1]
|
|
56
|
+
/// W[0] := __A.qword[0]
|
|
57
|
+
/// dst.qword[3] := W[3] + s0(W[4])
|
|
58
|
+
/// dst.qword[2] := W[2] + s0(W[3])
|
|
59
|
+
/// dst.qword[1] := W[1] + s0(W[2])
|
|
60
|
+
/// dst.qword[0] := W[0] + s0(W[1])
|
|
61
|
+
/// dst[MAX:256] := 0
|
|
62
|
+
/// \endcode
|
|
63
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
64
|
+
_mm256_sha512msg1_epi64(__m256i __A, __m128i __B) {
|
|
65
|
+
return (__m256i)__builtin_ia32_vsha512msg1((__v4du)__A, (__v2du)__B);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/// This intrinisc is one of the two SHA512 message scheduling instructions.
|
|
69
|
+
/// The intrinsic performs the final calculation for the next four SHA512
|
|
70
|
+
/// message qwords. The calculated results are stored in \a dst.
|
|
71
|
+
///
|
|
72
|
+
/// \headerfile <immintrin.h>
|
|
73
|
+
///
|
|
74
|
+
/// \code
|
|
75
|
+
/// __m256i _mm256_sha512msg2_epi64(__m256i __A, __m256i __B)
|
|
76
|
+
/// \endcode
|
|
77
|
+
///
|
|
78
|
+
/// This intrinsic corresponds to the \c VSHA512MSG2 instruction.
|
|
79
|
+
///
|
|
80
|
+
/// \param __A
|
|
81
|
+
/// A 256-bit vector of [4 x long long].
|
|
82
|
+
/// \param __B
|
|
83
|
+
/// A 256-bit vector of [4 x long long].
|
|
84
|
+
/// \returns
|
|
85
|
+
/// A 256-bit vector of [4 x long long].
|
|
86
|
+
///
|
|
87
|
+
/// \code{.operation}
|
|
88
|
+
/// DEFINE ROR64(qword, n) {
|
|
89
|
+
/// count := n % 64
|
|
90
|
+
/// dest := (qword >> count) | (qword << (64 - count))
|
|
91
|
+
/// RETURN dest
|
|
92
|
+
/// }
|
|
93
|
+
/// DEFINE SHR64(qword, n) {
|
|
94
|
+
/// RETURN qword >> n
|
|
95
|
+
/// }
|
|
96
|
+
/// DEFINE s1(qword) {
|
|
97
|
+
/// RETURN ROR64(qword,19) ^ ROR64(qword, 61) ^ SHR64(qword, 6)
|
|
98
|
+
/// }
|
|
99
|
+
/// W[14] := __B.qword[2]
|
|
100
|
+
/// W[15] := __B.qword[3]
|
|
101
|
+
/// W[16] := __A.qword[0] + s1(W[14])
|
|
102
|
+
/// W[17] := __A.qword[1] + s1(W[15])
|
|
103
|
+
/// W[18] := __A.qword[2] + s1(W[16])
|
|
104
|
+
/// W[19] := __A.qword[3] + s1(W[17])
|
|
105
|
+
/// dst.qword[3] := W[19]
|
|
106
|
+
/// dst.qword[2] := W[18]
|
|
107
|
+
/// dst.qword[1] := W[17]
|
|
108
|
+
/// dst.qword[0] := W[16]
|
|
109
|
+
/// dst[MAX:256] := 0
|
|
110
|
+
/// \endcode
|
|
111
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
112
|
+
_mm256_sha512msg2_epi64(__m256i __A, __m256i __B) {
|
|
113
|
+
return (__m256i)__builtin_ia32_vsha512msg2((__v4du)__A, (__v4du)__B);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/// This intrinisc performs two rounds of SHA512 operation using initial SHA512
|
|
117
|
+
/// state (C,D,G,H) from \a __A, an initial SHA512 state (A,B,E,F) from
|
|
118
|
+
/// \a __A, and a pre-computed sum of the next two round message qwords and
|
|
119
|
+
/// the corresponding round constants from \a __C (only the two lower qwords
|
|
120
|
+
/// of the third operand). The updated SHA512 state (A,B,E,F) is written to
|
|
121
|
+
/// \a __A, and \a __A can be used as the updated state (C,D,G,H) in later
|
|
122
|
+
/// rounds.
|
|
123
|
+
///
|
|
124
|
+
/// \headerfile <immintrin.h>
|
|
125
|
+
///
|
|
126
|
+
/// \code
|
|
127
|
+
/// __m256i _mm256_sha512rnds2_epi64(__m256i __A, __m256i __B, __m128i __C)
|
|
128
|
+
/// \endcode
|
|
129
|
+
///
|
|
130
|
+
/// This intrinsic corresponds to the \c VSHA512RNDS2 instruction.
|
|
131
|
+
///
|
|
132
|
+
/// \param __A
|
|
133
|
+
/// A 256-bit vector of [4 x long long].
|
|
134
|
+
/// \param __B
|
|
135
|
+
/// A 256-bit vector of [4 x long long].
|
|
136
|
+
/// \param __C
|
|
137
|
+
/// A 128-bit vector of [2 x long long].
|
|
138
|
+
/// \returns
|
|
139
|
+
/// A 256-bit vector of [4 x long long].
|
|
140
|
+
///
|
|
141
|
+
/// \code{.operation}
|
|
142
|
+
/// DEFINE ROR64(qword, n) {
|
|
143
|
+
/// count := n % 64
|
|
144
|
+
/// dest := (qword >> count) | (qword << (64 - count))
|
|
145
|
+
/// RETURN dest
|
|
146
|
+
/// }
|
|
147
|
+
/// DEFINE SHR64(qword, n) {
|
|
148
|
+
/// RETURN qword >> n
|
|
149
|
+
/// }
|
|
150
|
+
/// DEFINE cap_sigma0(qword) {
|
|
151
|
+
/// RETURN ROR64(qword,28) ^ ROR64(qword, 34) ^ ROR64(qword, 39)
|
|
152
|
+
/// }
|
|
153
|
+
/// DEFINE cap_sigma1(qword) {
|
|
154
|
+
/// RETURN ROR64(qword,14) ^ ROR64(qword, 18) ^ ROR64(qword, 41)
|
|
155
|
+
/// }
|
|
156
|
+
/// DEFINE MAJ(a,b,c) {
|
|
157
|
+
/// RETURN (a & b) ^ (a & c) ^ (b & c)
|
|
158
|
+
/// }
|
|
159
|
+
/// DEFINE CH(e,f,g) {
|
|
160
|
+
/// RETURN (e & f) ^ (g & ~e)
|
|
161
|
+
/// }
|
|
162
|
+
/// A[0] := __B.qword[3]
|
|
163
|
+
/// B[0] := __B.qword[2]
|
|
164
|
+
/// C[0] := __C.qword[3]
|
|
165
|
+
/// D[0] := __C.qword[2]
|
|
166
|
+
/// E[0] := __B.qword[1]
|
|
167
|
+
/// F[0] := __B.qword[0]
|
|
168
|
+
/// G[0] := __C.qword[1]
|
|
169
|
+
/// H[0] := __C.qword[0]
|
|
170
|
+
/// WK[0]:= __A.qword[0]
|
|
171
|
+
/// WK[1]:= __A.qword[1]
|
|
172
|
+
/// FOR i := 0 to 1:
|
|
173
|
+
/// A[i+1] := CH(E[i], F[i], G[i]) +
|
|
174
|
+
/// cap_sigma1(E[i]) + WK[i] + H[i] +
|
|
175
|
+
/// MAJ(A[i], B[i], C[i]) +
|
|
176
|
+
/// cap_sigma0(A[i])
|
|
177
|
+
/// B[i+1] := A[i]
|
|
178
|
+
/// C[i+1] := B[i]
|
|
179
|
+
/// D[i+1] := C[i]
|
|
180
|
+
/// E[i+1] := CH(E[i], F[i], G[i]) +
|
|
181
|
+
/// cap_sigma1(E[i]) + WK[i] + H[i] + D[i]
|
|
182
|
+
/// F[i+1] := E[i]
|
|
183
|
+
/// G[i+1] := F[i]
|
|
184
|
+
/// H[i+1] := G[i]
|
|
185
|
+
/// ENDFOR
|
|
186
|
+
/// dst.qword[3] := A[2]
|
|
187
|
+
/// dst.qword[2] := B[2]
|
|
188
|
+
/// dst.qword[1] := E[2]
|
|
189
|
+
/// dst.qword[0] := F[2]
|
|
190
|
+
/// dst[MAX:256] := 0
|
|
191
|
+
/// \endcode
|
|
192
|
+
static __inline__ __m256i __DEFAULT_FN_ATTRS256
|
|
193
|
+
_mm256_sha512rnds2_epi64(__m256i __A, __m256i __B, __m128i __C) {
|
|
194
|
+
return (__m256i)__builtin_ia32_vsha512rnds2((__v4du)__A, (__v4du)__B,
|
|
195
|
+
(__v2du)__C);
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
#undef __DEFAULT_FN_ATTRS256
|
|
199
|
+
|
|
200
|
+
#endif // __SHA512INTRIN_H
|