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.
Files changed (372) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +33 -0
  3. package/include/__clang_cuda_builtin_vars.h +121 -0
  4. package/include/__clang_cuda_cmath.h +512 -0
  5. package/include/__clang_cuda_complex_builtins.h +236 -0
  6. package/include/__clang_cuda_device_functions.h +1572 -0
  7. package/include/__clang_cuda_intrinsics.h +975 -0
  8. package/include/__clang_cuda_libdevice_declares.h +468 -0
  9. package/include/__clang_cuda_math.h +353 -0
  10. package/include/__clang_cuda_math_forward_declares.h +289 -0
  11. package/include/__clang_cuda_runtime_wrapper.h +526 -0
  12. package/include/__clang_cuda_texture_intrinsics.h +1177 -0
  13. package/include/__clang_gpu_builtin_vars.h +71 -0
  14. package/include/__clang_gpu_device_functions.h +411 -0
  15. package/include/__clang_gpu_intrinsics.h +242 -0
  16. package/include/__clang_hip_cmath.h +848 -0
  17. package/include/__clang_hip_libdevice_declares.h +238 -0
  18. package/include/__clang_hip_math.h +1405 -0
  19. package/include/__clang_hip_runtime_wrapper.h +170 -0
  20. package/include/__clang_hip_stdlib.h +43 -0
  21. package/include/__clang_spirv_builtins.h +217 -0
  22. package/include/__clang_spirv_libdevice_declares.h +170 -0
  23. package/include/__clang_spirv_math.h +719 -0
  24. package/include/__float_float.h +176 -0
  25. package/include/__float_header_macro.h +12 -0
  26. package/include/__float_infinity_nan.h +20 -0
  27. package/include/__stdarg___gnuc_va_list.h +13 -0
  28. package/include/__stdarg___va_copy.h +12 -0
  29. package/include/__stdarg_header_macro.h +12 -0
  30. package/include/__stdarg_va_arg.h +22 -0
  31. package/include/__stdarg_va_copy.h +12 -0
  32. package/include/__stdarg_va_list.h +13 -0
  33. package/include/__stddef_header_macro.h +12 -0
  34. package/include/__stddef_max_align_t.h +27 -0
  35. package/include/__stddef_null.h +29 -0
  36. package/include/__stddef_nullptr_t.h +29 -0
  37. package/include/__stddef_offsetof.h +17 -0
  38. package/include/__stddef_ptrdiff_t.h +20 -0
  39. package/include/__stddef_rsize_t.h +20 -0
  40. package/include/__stddef_size_t.h +20 -0
  41. package/include/__stddef_unreachable.h +21 -0
  42. package/include/__stddef_wchar_t.h +28 -0
  43. package/include/__stddef_wint_t.h +15 -0
  44. package/include/__wmmintrin_aes.h +140 -0
  45. package/include/__wmmintrin_pclmul.h +48 -0
  46. package/include/adcintrin.h +165 -0
  47. package/include/adxintrin.h +107 -0
  48. package/include/altivec.h +19434 -0
  49. package/include/amdgpuintrin.h +164 -0
  50. package/include/amdhsa_abi.h +83 -0
  51. package/include/ammintrin.h +183 -0
  52. package/include/amo.h +220 -0
  53. package/include/amxavx512intrin.h +596 -0
  54. package/include/amxcomplexintrin.h +167 -0
  55. package/include/amxfp16intrin.h +93 -0
  56. package/include/amxfp8intrin.h +230 -0
  57. package/include/amxintrin.h +492 -0
  58. package/include/amxmovrsintrin.h +48 -0
  59. package/include/andes_vector.h +21 -0
  60. package/include/arm64_neon.h +21 -0
  61. package/include/arm64intr.h +45 -0
  62. package/include/arm_acle.h +866 -0
  63. package/include/arm_bf16.h +20 -0
  64. package/include/arm_cde.h +410 -0
  65. package/include/arm_cmse.h +217 -0
  66. package/include/arm_fp16.h +596 -0
  67. package/include/arm_mve.h +19187 -0
  68. package/include/arm_neon.h +74351 -0
  69. package/include/arm_neon_sve_bridge.h +182 -0
  70. package/include/arm_sme.h +3753 -0
  71. package/include/arm_sve.h +32698 -0
  72. package/include/arm_vector_types.h +432 -0
  73. package/include/armintr.h +31 -0
  74. package/include/avx10_2_512bf16intrin.h +568 -0
  75. package/include/avx10_2_512convertintrin.h +322 -0
  76. package/include/avx10_2_512minmaxintrin.h +127 -0
  77. package/include/avx10_2_512niintrin.h +314 -0
  78. package/include/avx10_2_512satcvtdsintrin.h +307 -0
  79. package/include/avx10_2_512satcvtintrin.h +301 -0
  80. package/include/avx10_2bf16intrin.h +1094 -0
  81. package/include/avx10_2convertintrin.h +3257 -0
  82. package/include/avx10_2copyintrin.h +66 -0
  83. package/include/avx10_2minmaxintrin.h +232 -0
  84. package/include/avx10_2niintrin.h +409 -0
  85. package/include/avx10_2satcvtdsintrin.h +376 -0
  86. package/include/avx10_2satcvtintrin.h +312 -0
  87. package/include/avx2intrin.h +5190 -0
  88. package/include/avx512bf16intrin.h +292 -0
  89. package/include/avx512bitalgintrin.h +75 -0
  90. package/include/avx512bmmintrin.h +174 -0
  91. package/include/avx512bmmvlintrin.h +245 -0
  92. package/include/avx512bwintrin.h +1885 -0
  93. package/include/avx512cdintrin.h +112 -0
  94. package/include/avx512dqintrin.h +1350 -0
  95. package/include/avx512fintrin.h +9351 -0
  96. package/include/avx512fp16intrin.h +3349 -0
  97. package/include/avx512ifmaintrin.h +68 -0
  98. package/include/avx512ifmavlintrin.h +138 -0
  99. package/include/avx512vbmi2intrin.h +364 -0
  100. package/include/avx512vbmiintrin.h +98 -0
  101. package/include/avx512vbmivlintrin.h +179 -0
  102. package/include/avx512vlbf16intrin.h +527 -0
  103. package/include/avx512vlbitalgintrin.h +135 -0
  104. package/include/avx512vlbwintrin.h +3052 -0
  105. package/include/avx512vlcdintrin.h +202 -0
  106. package/include/avx512vldqintrin.h +1156 -0
  107. package/include/avx512vlfp16intrin.h +2090 -0
  108. package/include/avx512vlintrin.h +8067 -0
  109. package/include/avx512vlvbmi2intrin.h +702 -0
  110. package/include/avx512vlvnniintrin.h +308 -0
  111. package/include/avx512vlvp2intersectintrin.h +123 -0
  112. package/include/avx512vnniintrin.h +113 -0
  113. package/include/avx512vp2intersectintrin.h +77 -0
  114. package/include/avx512vpopcntdqintrin.h +62 -0
  115. package/include/avx512vpopcntdqvlintrin.h +105 -0
  116. package/include/avxifmaintrin.h +193 -0
  117. package/include/avxintrin.h +5064 -0
  118. package/include/avxneconvertintrin.h +484 -0
  119. package/include/avxvnniint16intrin.h +451 -0
  120. package/include/avxvnniint8intrin.h +454 -0
  121. package/include/avxvnniintrin.h +238 -0
  122. package/include/bmi2intrin.h +253 -0
  123. package/include/bmiintrin.h +604 -0
  124. package/include/builtins.h +19 -0
  125. package/include/cet.h +66 -0
  126. package/include/cetintrin.h +115 -0
  127. package/include/cldemoteintrin.h +36 -0
  128. package/include/clflushoptintrin.h +36 -0
  129. package/include/clwbintrin.h +38 -0
  130. package/include/clzerointrin.h +38 -0
  131. package/include/cmpccxaddintrin.h +70 -0
  132. package/include/cpuid.h +451 -0
  133. package/include/crc32intrin.h +102 -0
  134. package/include/cuda_wrappers/__utility/declval.h +28 -0
  135. package/include/cuda_wrappers/algorithm +116 -0
  136. package/include/cuda_wrappers/bits/basic_string.h +9 -0
  137. package/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  138. package/include/cuda_wrappers/bits/c++config.h +61 -0
  139. package/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  140. package/include/cuda_wrappers/cmath +44 -0
  141. package/include/cuda_wrappers/complex +90 -0
  142. package/include/cuda_wrappers/new +108 -0
  143. package/include/emmintrin.h +4940 -0
  144. package/include/endian.h +91 -0
  145. package/include/enqcmdintrin.h +63 -0
  146. package/include/f16cintrin.h +176 -0
  147. package/include/float.h +48 -0
  148. package/include/fma4intrin.h +220 -0
  149. package/include/fmaintrin.h +826 -0
  150. package/include/fuzzer/FuzzedDataProvider.h +397 -0
  151. package/include/fxsrintrin.h +91 -0
  152. package/include/gfniintrin.h +238 -0
  153. package/include/gpuintrin.h +348 -0
  154. package/include/hexagon_circ_brev_intrinsics.h +298 -0
  155. package/include/hexagon_protos.h +8439 -0
  156. package/include/hexagon_types.h +2628 -0
  157. package/include/hlsl_alias_intrinsics_gen.inc +3869 -0
  158. package/include/hlsl_inline_intrinsics_gen.inc +546 -0
  159. package/include/hresetintrin.h +49 -0
  160. package/include/htmintrin.h +212 -0
  161. package/include/htmxlintrin.h +345 -0
  162. package/include/hvx_hexagon_protos.h +5421 -0
  163. package/include/ia32intrin.h +863 -0
  164. package/include/immintrin.h +597 -0
  165. package/include/intrin.h +501 -0
  166. package/include/intrin0.h +256 -0
  167. package/include/inttypes.h +101 -0
  168. package/include/invpcidintrin.h +23 -0
  169. package/include/iso646.h +31 -0
  170. package/include/keylockerintrin.h +518 -0
  171. package/include/larchintrin.h +262 -0
  172. package/include/lasxintrin.h +3999 -0
  173. package/include/limits.h +133 -0
  174. package/include/llvm_libc_wrappers/assert.h +32 -0
  175. package/include/llvm_libc_wrappers/ctype.h +29 -0
  176. package/include/llvm_libc_wrappers/inttypes.h +32 -0
  177. package/include/llvm_libc_wrappers/stdio.h +52 -0
  178. package/include/llvm_libc_wrappers/stdlib.h +32 -0
  179. package/include/llvm_libc_wrappers/string.h +29 -0
  180. package/include/llvm_libc_wrappers/time.h +28 -0
  181. package/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  182. package/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  183. package/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  184. package/include/lsxintrin.h +3752 -0
  185. package/include/lwpintrin.h +136 -0
  186. package/include/lzcntintrin.h +109 -0
  187. package/include/mm3dnow.h +22 -0
  188. package/include/mm_malloc.h +67 -0
  189. package/include/mmintrin.h +1541 -0
  190. package/include/module.modulemap +375 -0
  191. package/include/movdirintrin.h +49 -0
  192. package/include/movrs_avx10_2_512intrin.h +98 -0
  193. package/include/movrs_avx10_2intrin.h +174 -0
  194. package/include/movrsintrin.h +59 -0
  195. package/include/msa.h +573 -0
  196. package/include/mwaitxintrin.h +62 -0
  197. package/include/nmmintrin.h +20 -0
  198. package/include/nvptxintrin.h +208 -0
  199. package/include/opencl-c-base.h +765 -0
  200. package/include/opencl-c.h +18737 -0
  201. package/include/openmp_wrappers/__clang_openmp_device_functions.h +118 -0
  202. package/include/openmp_wrappers/cmath +132 -0
  203. package/include/openmp_wrappers/complex +61 -0
  204. package/include/openmp_wrappers/complex.h +41 -0
  205. package/include/openmp_wrappers/complex_cmath.h +393 -0
  206. package/include/openmp_wrappers/math.h +71 -0
  207. package/include/openmp_wrappers/new +48 -0
  208. package/include/pconfigintrin.h +40 -0
  209. package/include/pkuintrin.h +34 -0
  210. package/include/pmmintrin.h +302 -0
  211. package/include/popcntintrin.h +59 -0
  212. package/include/ppc_wrappers/bmi2intrin.h +134 -0
  213. package/include/ppc_wrappers/bmiintrin.h +165 -0
  214. package/include/ppc_wrappers/emmintrin.h +2269 -0
  215. package/include/ppc_wrappers/immintrin.h +27 -0
  216. package/include/ppc_wrappers/mm_malloc.h +45 -0
  217. package/include/ppc_wrappers/mmintrin.h +1453 -0
  218. package/include/ppc_wrappers/nmmintrin.h +26 -0
  219. package/include/ppc_wrappers/pmmintrin.h +145 -0
  220. package/include/ppc_wrappers/smmintrin.h +683 -0
  221. package/include/ppc_wrappers/tmmintrin.h +453 -0
  222. package/include/ppc_wrappers/x86gprintrin.h +17 -0
  223. package/include/ppc_wrappers/x86intrin.h +28 -0
  224. package/include/ppc_wrappers/xmmintrin.h +1827 -0
  225. package/include/prfchiintrin.h +61 -0
  226. package/include/prfchwintrin.h +57 -0
  227. package/include/profile/InstrProfData.inc +1063 -0
  228. package/include/profile/instr_prof_interface.h +88 -0
  229. package/include/ptrauth.h +485 -0
  230. package/include/ptwriteintrin.h +37 -0
  231. package/include/raointintrin.h +203 -0
  232. package/include/rdpruintrin.h +57 -0
  233. package/include/rdseedintrin.h +105 -0
  234. package/include/riscv_bitmanip.h +202 -0
  235. package/include/riscv_corev_alu.h +130 -0
  236. package/include/riscv_crypto.h +178 -0
  237. package/include/riscv_mips.h +36 -0
  238. package/include/riscv_nds.h +92 -0
  239. package/include/riscv_ntlh.h +28 -0
  240. package/include/riscv_packed_simd.h +644 -0
  241. package/include/riscv_vector.h +465 -0
  242. package/include/rtmintrin.h +45 -0
  243. package/include/s390intrin.h +25 -0
  244. package/include/sanitizer/allocator_interface.h +106 -0
  245. package/include/sanitizer/asan_interface.h +398 -0
  246. package/include/sanitizer/common_interface_defs.h +507 -0
  247. package/include/sanitizer/coverage_interface.h +36 -0
  248. package/include/sanitizer/dfsan_interface.h +220 -0
  249. package/include/sanitizer/hwasan_interface.h +109 -0
  250. package/include/sanitizer/linux_syscall_hooks.h +3112 -0
  251. package/include/sanitizer/lsan_interface.h +89 -0
  252. package/include/sanitizer/msan_interface.h +135 -0
  253. package/include/sanitizer/netbsd_syscall_hooks.h +5005 -0
  254. package/include/sanitizer/rtsan_interface.h +75 -0
  255. package/include/sanitizer/safestack_interface.h +50 -0
  256. package/include/sanitizer/scudo_interface.h +38 -0
  257. package/include/sanitizer/tsan_interface.h +316 -0
  258. package/include/sanitizer/tsan_interface_atomic.h +223 -0
  259. package/include/sanitizer/tysan_interface.h +36 -0
  260. package/include/sanitizer/ubsan_interface.h +64 -0
  261. package/include/serializeintrin.h +30 -0
  262. package/include/sgxintrin.h +60 -0
  263. package/include/sha512intrin.h +200 -0
  264. package/include/shaintrin.h +190 -0
  265. package/include/sifive_vector.h +192 -0
  266. package/include/sm3intrin.h +238 -0
  267. package/include/sm4evexintrin.h +32 -0
  268. package/include/sm4intrin.h +269 -0
  269. package/include/smmintrin.h +2352 -0
  270. package/include/spirvintrin.h +167 -0
  271. package/include/stdalign.h +24 -0
  272. package/include/stdarg.h +75 -0
  273. package/include/stdatomic.h +204 -0
  274. package/include/stdbool.h +39 -0
  275. package/include/stdckdint.h +42 -0
  276. package/include/stdcountof.h +15 -0
  277. package/include/stddef.h +139 -0
  278. package/include/stddefer.h +19 -0
  279. package/include/stdint.h +835 -0
  280. package/include/stdnoreturn.h +35 -0
  281. package/include/tbmintrin.h +128 -0
  282. package/include/tgmath.h +1368 -0
  283. package/include/tmmintrin.h +779 -0
  284. package/include/tsxldtrkintrin.h +56 -0
  285. package/include/uintrintrin.h +157 -0
  286. package/include/unwind.h +332 -0
  287. package/include/usermsrintrin.h +51 -0
  288. package/include/vadefs.h +51 -0
  289. package/include/vaesintrin.h +86 -0
  290. package/include/varargs.h +16 -0
  291. package/include/vecintrin.h +12868 -0
  292. package/include/velintrin.h +71 -0
  293. package/include/velintrin_approx.h +120 -0
  294. package/include/velintrin_gen.h +1257 -0
  295. package/include/vpclmulqdqintrin.h +30 -0
  296. package/include/waitpkgintrin.h +42 -0
  297. package/include/wasm_simd128.h +2160 -0
  298. package/include/wbnoinvdintrin.h +24 -0
  299. package/include/wmmintrin.h +23 -0
  300. package/include/x86gprintrin.h +49 -0
  301. package/include/x86intrin.h +35 -0
  302. package/include/xmmintrin.h +3176 -0
  303. package/include/xopintrin.h +780 -0
  304. package/include/xsavecintrin.h +84 -0
  305. package/include/xsaveintrin.h +63 -0
  306. package/include/xsaveoptintrin.h +34 -0
  307. package/include/xsavesintrin.h +44 -0
  308. package/include/xtestintrin.h +27 -0
  309. package/include/yvals_core.h +25 -0
  310. package/include/zos_wrappers/builtins.h +18 -0
  311. package/include/zos_wrappers/grp.h +19 -0
  312. package/include/zos_wrappers/locale.h +19 -0
  313. package/include/zos_wrappers/math.h +31 -0
  314. package/include/zos_wrappers/poll.h +19 -0
  315. package/include/zos_wrappers/stdlib.h +20 -0
  316. package/include/zos_wrappers/string.h +19 -0
  317. package/include/zos_wrappers/time.h +19 -0
  318. package/include/zos_wrappers/variant.h +19 -0
  319. package/index.js +5 -0
  320. package/lib/darwin/libclang_rt.asan_abi_ios.a +0 -0
  321. package/lib/darwin/libclang_rt.asan_abi_iossim.a +0 -0
  322. package/lib/darwin/libclang_rt.asan_abi_osx.a +0 -0
  323. package/lib/darwin/libclang_rt.asan_ios_dynamic.dylib +0 -0
  324. package/lib/darwin/libclang_rt.asan_iossim_dynamic.dylib +0 -0
  325. package/lib/darwin/libclang_rt.asan_osx_dynamic.dylib +0 -0
  326. package/lib/darwin/libclang_rt.cc_kext.a +0 -0
  327. package/lib/darwin/libclang_rt.cc_kext_ios.a +0 -0
  328. package/lib/darwin/libclang_rt.fuzzer_interceptors_ios.a +0 -0
  329. package/lib/darwin/libclang_rt.fuzzer_interceptors_iossim.a +0 -0
  330. package/lib/darwin/libclang_rt.fuzzer_interceptors_osx.a +0 -0
  331. package/lib/darwin/libclang_rt.fuzzer_ios.a +0 -0
  332. package/lib/darwin/libclang_rt.fuzzer_iossim.a +0 -0
  333. package/lib/darwin/libclang_rt.fuzzer_no_main_ios.a +0 -0
  334. package/lib/darwin/libclang_rt.fuzzer_no_main_iossim.a +0 -0
  335. package/lib/darwin/libclang_rt.fuzzer_no_main_osx.a +0 -0
  336. package/lib/darwin/libclang_rt.fuzzer_osx.a +0 -0
  337. package/lib/darwin/libclang_rt.ios.a +0 -0
  338. package/lib/darwin/libclang_rt.iossim.a +0 -0
  339. package/lib/darwin/libclang_rt.lsan_ios_dynamic.dylib +0 -0
  340. package/lib/darwin/libclang_rt.lsan_iossim_dynamic.dylib +0 -0
  341. package/lib/darwin/libclang_rt.lsan_osx_dynamic.dylib +0 -0
  342. package/lib/darwin/libclang_rt.osx.a +0 -0
  343. package/lib/darwin/libclang_rt.profile_ios.a +0 -0
  344. package/lib/darwin/libclang_rt.profile_iossim.a +0 -0
  345. package/lib/darwin/libclang_rt.profile_osx.a +0 -0
  346. package/lib/darwin/libclang_rt.rtsan_ios_dynamic.dylib +0 -0
  347. package/lib/darwin/libclang_rt.rtsan_iossim_dynamic.dylib +0 -0
  348. package/lib/darwin/libclang_rt.rtsan_osx_dynamic.dylib +0 -0
  349. package/lib/darwin/libclang_rt.stats_client_ios.a +0 -0
  350. package/lib/darwin/libclang_rt.stats_client_iossim.a +0 -0
  351. package/lib/darwin/libclang_rt.stats_client_osx.a +0 -0
  352. package/lib/darwin/libclang_rt.stats_ios_dynamic.dylib +0 -0
  353. package/lib/darwin/libclang_rt.stats_iossim_dynamic.dylib +0 -0
  354. package/lib/darwin/libclang_rt.stats_osx_dynamic.dylib +0 -0
  355. package/lib/darwin/libclang_rt.tsan_ios_dynamic.dylib +0 -0
  356. package/lib/darwin/libclang_rt.tsan_iossim_dynamic.dylib +0 -0
  357. package/lib/darwin/libclang_rt.tsan_osx_dynamic.dylib +0 -0
  358. package/lib/darwin/libclang_rt.tysan_ios_dynamic.dylib +0 -0
  359. package/lib/darwin/libclang_rt.tysan_iossim_dynamic.dylib +0 -0
  360. package/lib/darwin/libclang_rt.tysan_osx_dynamic.dylib +0 -0
  361. package/lib/darwin/libclang_rt.ubsan_ios_dynamic.dylib +0 -0
  362. package/lib/darwin/libclang_rt.ubsan_iossim_dynamic.dylib +0 -0
  363. package/lib/darwin/libclang_rt.ubsan_minimal_ios.a +0 -0
  364. package/lib/darwin/libclang_rt.ubsan_minimal_ios_dynamic.dylib +0 -0
  365. package/lib/darwin/libclang_rt.ubsan_minimal_iossim.a +0 -0
  366. package/lib/darwin/libclang_rt.ubsan_minimal_iossim_dynamic.dylib +0 -0
  367. package/lib/darwin/libclang_rt.ubsan_minimal_osx.a +0 -0
  368. package/lib/darwin/libclang_rt.ubsan_minimal_osx_dynamic.dylib +0 -0
  369. package/lib/darwin/libclang_rt.ubsan_osx_dynamic.dylib +0 -0
  370. package/package.json +40 -1
  371. package/share/asan_ignorelist.txt +14 -0
  372. 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