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,492 @@
1
+ /*===--------------- amxintrin.h - AMX intrinsics -*- C/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
+
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <amxintrin.h> directly; include <immintrin.h> instead."
12
+ #endif /* __IMMINTRIN_H */
13
+
14
+ #ifndef __AMXINTRIN_H
15
+ #define __AMXINTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS_TILE \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-tile")))
21
+ #define __DEFAULT_FN_ATTRS_INT8 \
22
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
23
+ #define __DEFAULT_FN_ATTRS_BF16 \
24
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-bf16")))
25
+
26
+ /// Load tile configuration from a 64-byte memory location specified by
27
+ /// "mem_addr". The tile configuration includes the tile type palette, the
28
+ /// number of bytes per row, and the number of rows. If the specified
29
+ /// palette_id is zero, that signifies the init state for both the tile
30
+ /// config and the tile data, and the tiles are zeroed. Any invalid
31
+ /// configurations will result in #GP fault.
32
+ ///
33
+ /// \headerfile <immintrin.h>
34
+ ///
35
+ /// This intrinsic corresponds to the <c> LDTILECFG </c> instruction.
36
+ ///
37
+ /// \param __config
38
+ /// A pointer to 512-bits configuration
39
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
40
+ _tile_loadconfig(const void *__config) {
41
+ __builtin_ia32_tile_loadconfig(__config);
42
+ }
43
+
44
+ /// Stores the current tile configuration to a 64-byte memory location
45
+ /// specified by "mem_addr". The tile configuration includes the tile type
46
+ /// palette, the number of bytes per row, and the number of rows. If tiles
47
+ /// are not configured, all zeroes will be stored to memory.
48
+ ///
49
+ /// \headerfile <immintrin.h>
50
+ ///
51
+ /// This intrinsic corresponds to the <c> STTILECFG </c> instruction.
52
+ ///
53
+ /// \param __config
54
+ /// A pointer to 512-bits configuration
55
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
56
+ _tile_storeconfig(void *__config) {
57
+ __builtin_ia32_tile_storeconfig(__config);
58
+ }
59
+
60
+ /// Release the tile configuration to return to the init state, which
61
+ /// releases all storage it currently holds.
62
+ ///
63
+ /// \headerfile <immintrin.h>
64
+ ///
65
+ /// This intrinsic corresponds to the <c> TILERELEASE </c> instruction.
66
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
67
+ __builtin_ia32_tilerelease();
68
+ }
69
+
70
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
71
+ /// destination tile "dst" using the tile configuration previously configured
72
+ /// via "_tile_loadconfig".
73
+ ///
74
+ /// \headerfile <immintrin.h>
75
+ ///
76
+ /// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
77
+ ///
78
+ /// \param dst
79
+ /// A destination tile. Max size is 1024 Bytes.
80
+ /// \param base
81
+ /// A pointer to base address.
82
+ /// \param stride
83
+ /// The stride between the rows' data to be loaded in memory.
84
+ #define _tile_loadd(dst, base, stride) \
85
+ __builtin_ia32_tileloadd64((dst), ((const void *)(base)), \
86
+ (__SIZE_TYPE__)(stride))
87
+
88
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
89
+ /// destination tile "dst" using the tile configuration previously configured
90
+ /// via "_tile_loadconfig". This intrinsic provides a hint to the implementation
91
+ /// that the data will likely not be reused in the near future and the data
92
+ /// caching can be optimized accordingly.
93
+ ///
94
+ /// \headerfile <immintrin.h>
95
+ ///
96
+ /// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
97
+ ///
98
+ /// \param dst
99
+ /// A destination tile. Max size is 1024 Bytes.
100
+ /// \param base
101
+ /// A pointer to base address.
102
+ /// \param stride
103
+ /// The stride between the rows' data to be loaded in memory.
104
+ #define _tile_stream_loadd(dst, base, stride) \
105
+ __builtin_ia32_tileloaddt164((dst), ((const void *)(base)), \
106
+ (__SIZE_TYPE__)(stride))
107
+
108
+ /// Store the tile specified by "src" to memory specifieid by "base" address and
109
+ /// "stride" using the tile configuration previously configured via
110
+ /// "_tile_loadconfig".
111
+ ///
112
+ /// \headerfile <immintrin.h>
113
+ ///
114
+ /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
115
+ ///
116
+ /// \param dst
117
+ /// A destination tile. Max size is 1024 Bytes.
118
+ /// \param base
119
+ /// A pointer to base address.
120
+ /// \param stride
121
+ /// The stride between the rows' data to be stored in memory.
122
+ #define _tile_stored(dst, base, stride) \
123
+ __builtin_ia32_tilestored64((dst), ((void *)(base)), (__SIZE_TYPE__)(stride))
124
+
125
+ /// Zero the tile specified by "tdest".
126
+ ///
127
+ /// \headerfile <immintrin.h>
128
+ ///
129
+ /// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
130
+ ///
131
+ /// \param tile
132
+ /// The destination tile to be zero. Max size is 1024 Bytes.
133
+ #define _tile_zero(tile) __builtin_ia32_tilezero((tile))
134
+
135
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
136
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
137
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
138
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
139
+ /// and store the 32-bit result back to tile "dst".
140
+ ///
141
+ /// \headerfile <immintrin.h>
142
+ ///
143
+ /// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
144
+ ///
145
+ /// \param dst
146
+ /// The destination tile. Max size is 1024 Bytes.
147
+ /// \param src0
148
+ /// The 1st source tile. Max size is 1024 Bytes.
149
+ /// \param src1
150
+ /// The 2nd source tile. Max size is 1024 Bytes.
151
+ #define _tile_dpbssd(dst, src0, src1) \
152
+ __builtin_ia32_tdpbssd((dst), (src0), (src1))
153
+
154
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
155
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
156
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
157
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
158
+ /// in "dst", and store the 32-bit result back to tile "dst".
159
+ ///
160
+ /// \headerfile <immintrin.h>
161
+ ///
162
+ /// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
163
+ ///
164
+ /// \param dst
165
+ /// The destination tile. Max size is 1024 Bytes.
166
+ /// \param src0
167
+ /// The 1st source tile. Max size is 1024 Bytes.
168
+ /// \param src1
169
+ /// The 2nd source tile. Max size is 1024 Bytes.
170
+ #define _tile_dpbsud(dst, src0, src1) \
171
+ __builtin_ia32_tdpbsud((dst), (src0), (src1))
172
+
173
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
174
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
175
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
176
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
177
+ /// and store the 32-bit result back to tile "dst".
178
+ ///
179
+ /// \headerfile <immintrin.h>
180
+ ///
181
+ /// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
182
+ ///
183
+ /// \param dst
184
+ /// The destination tile. Max size is 1024 Bytes.
185
+ /// \param src0
186
+ /// The 1st source tile. Max size is 1024 Bytes.
187
+ /// \param src1
188
+ /// The 2nd source tile. Max size is 1024 Bytes.
189
+ #define _tile_dpbusd(dst, src0, src1) \
190
+ __builtin_ia32_tdpbusd((dst), (src0), (src1))
191
+
192
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
193
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
194
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
195
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
196
+ /// "dst", and store the 32-bit result back to tile "dst".
197
+ ///
198
+ /// \headerfile <immintrin.h>
199
+ ///
200
+ /// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
201
+ ///
202
+ /// \param dst
203
+ /// The destination tile. Max size is 1024 Bytes.
204
+ /// \param src0
205
+ /// The 1st source tile. Max size is 1024 Bytes.
206
+ /// \param src1
207
+ /// The 2nd source tile. Max size is 1024 Bytes.
208
+ #define _tile_dpbuud(dst, src0, src1) \
209
+ __builtin_ia32_tdpbuud((dst), (src0), (src1))
210
+
211
+ /// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
212
+ /// src1, accumulating the intermediate single-precision (32-bit) floating-point
213
+ /// elements with elements in "dst", and store the 32-bit result back to tile
214
+ /// "dst".
215
+ ///
216
+ /// \headerfile <immintrin.h>
217
+ ///
218
+ /// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
219
+ ///
220
+ /// \param dst
221
+ /// The destination tile. Max size is 1024 Bytes.
222
+ /// \param src0
223
+ /// The 1st source tile. Max size is 1024 Bytes.
224
+ /// \param src1
225
+ /// The 2nd source tile. Max size is 1024 Bytes.
226
+ #define _tile_dpbf16ps(dst, src0, src1) \
227
+ __builtin_ia32_tdpbf16ps((dst), (src0), (src1))
228
+
229
+ /// AMX tile register size can be configured, the maximum size is 16x64=1024
230
+ /// bytes. Since there is no 2D type in llvm IR, we use vector type to
231
+ /// represent 2D tile and the fixed size is maximum amx tile register size.
232
+ typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64)));
233
+
234
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
235
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE
236
+ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
237
+ __SIZE_TYPE__ stride) {
238
+ return __builtin_ia32_tileloadd64_internal(m, n, base,
239
+ (__SIZE_TYPE__)(stride));
240
+ }
241
+
242
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
243
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE
244
+ _tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base,
245
+ __SIZE_TYPE__ stride) {
246
+ return __builtin_ia32_tileloaddt164_internal(m, n, base,
247
+ (__SIZE_TYPE__)(stride));
248
+ }
249
+
250
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
251
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
252
+ _tile_dpbssd_internal(unsigned short m, unsigned short n, unsigned short k,
253
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
254
+ return __builtin_ia32_tdpbssd_internal(m, n, k, dst, src1, src2);
255
+ }
256
+
257
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
258
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
259
+ _tile_dpbsud_internal(unsigned short m, unsigned short n, unsigned short k,
260
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
261
+ return __builtin_ia32_tdpbsud_internal(m, n, k, dst, src1, src2);
262
+ }
263
+
264
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
265
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
266
+ _tile_dpbusd_internal(unsigned short m, unsigned short n, unsigned short k,
267
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
268
+ return __builtin_ia32_tdpbusd_internal(m, n, k, dst, src1, src2);
269
+ }
270
+
271
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
272
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
273
+ _tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k,
274
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
275
+ return __builtin_ia32_tdpbuud_internal(m, n, k, dst, src1, src2);
276
+ }
277
+
278
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
279
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
280
+ _tile_stored_internal(unsigned short m, unsigned short n, void *base,
281
+ __SIZE_TYPE__ stride, _tile1024i tile) {
282
+ return __builtin_ia32_tilestored64_internal(m, n, base,
283
+ (__SIZE_TYPE__)(stride), tile);
284
+ }
285
+
286
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
287
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_BF16
288
+ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
289
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
290
+ return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
291
+ }
292
+
293
+ /// This struct pack the shape and tile data together for user. We suggest
294
+ /// initializing the struct as early as possible, because compiler depends
295
+ /// on the shape information to do configure. The constant value is preferred
296
+ /// for optimization by compiler.
297
+ typedef struct __tile1024i_str {
298
+ const unsigned short row;
299
+ const unsigned short col;
300
+ _tile1024i tile;
301
+ } __tile1024i;
302
+
303
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
304
+ /// destination tile "dst".
305
+ ///
306
+ /// \headerfile <immintrin.h>
307
+ ///
308
+ /// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
309
+ ///
310
+ /// \param dst
311
+ /// A destination tile. Max size is 1024 Bytes.
312
+ /// \param base
313
+ /// A pointer to base address.
314
+ /// \param stride
315
+ /// The stride between the rows' data to be loaded in memory.
316
+ __DEFAULT_FN_ATTRS_TILE
317
+ static __inline__ void __tile_loadd(__tile1024i *dst, const void *base,
318
+ __SIZE_TYPE__ stride) {
319
+ dst->tile = _tile_loadd_internal(dst->row, dst->col, base, stride);
320
+ }
321
+
322
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
323
+ /// destination tile "dst". This intrinsic provides a hint to the implementation
324
+ /// that the data will likely not be reused in the near future and the data
325
+ /// caching can be optimized accordingly.
326
+ ///
327
+ /// \headerfile <immintrin.h>
328
+ ///
329
+ /// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
330
+ ///
331
+ /// \param dst
332
+ /// A destination tile. Max size is 1024 Bytes.
333
+ /// \param base
334
+ /// A pointer to base address.
335
+ /// \param stride
336
+ /// The stride between the rows' data to be loaded in memory.
337
+ __DEFAULT_FN_ATTRS_TILE
338
+ static __inline__ void __tile_stream_loadd(__tile1024i *dst, const void *base,
339
+ __SIZE_TYPE__ stride) {
340
+ dst->tile = _tile_loaddt1_internal(dst->row, dst->col, base, stride);
341
+ }
342
+
343
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
344
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
345
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
346
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
347
+ /// and store the 32-bit result back to tile "dst".
348
+ ///
349
+ /// \headerfile <immintrin.h>
350
+ ///
351
+ /// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
352
+ ///
353
+ /// \param dst
354
+ /// The destination tile. Max size is 1024 Bytes.
355
+ /// \param src0
356
+ /// The 1st source tile. Max size is 1024 Bytes.
357
+ /// \param src1
358
+ /// The 2nd source tile. Max size is 1024 Bytes.
359
+ __DEFAULT_FN_ATTRS_INT8
360
+ static __inline__ void __tile_dpbssd(__tile1024i *dst, __tile1024i src0,
361
+ __tile1024i src1) {
362
+ dst->tile = _tile_dpbssd_internal(src0.row, src1.col, src0.col, dst->tile,
363
+ src0.tile, src1.tile);
364
+ }
365
+
366
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
367
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
368
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
369
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
370
+ /// in "dst", and store the 32-bit result back to tile "dst".
371
+ ///
372
+ /// \headerfile <immintrin.h>
373
+ ///
374
+ /// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
375
+ ///
376
+ /// \param dst
377
+ /// The destination tile. Max size is 1024 Bytes.
378
+ /// \param src0
379
+ /// The 1st source tile. Max size is 1024 Bytes.
380
+ /// \param src1
381
+ /// The 2nd source tile. Max size is 1024 Bytes.
382
+ __DEFAULT_FN_ATTRS_INT8
383
+ static __inline__ void __tile_dpbsud(__tile1024i *dst, __tile1024i src0,
384
+ __tile1024i src1) {
385
+ dst->tile = _tile_dpbsud_internal(src0.row, src1.col, src0.col, dst->tile,
386
+ src0.tile, src1.tile);
387
+ }
388
+
389
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
390
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
391
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
392
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
393
+ /// and store the 32-bit result back to tile "dst".
394
+ ///
395
+ /// \headerfile <immintrin.h>
396
+ ///
397
+ /// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
398
+ ///
399
+ /// \param dst
400
+ /// The destination tile. Max size is 1024 Bytes.
401
+ /// \param src0
402
+ /// The 1st source tile. Max size is 1024 Bytes.
403
+ /// \param src1
404
+ /// The 2nd source tile. Max size is 1024 Bytes.
405
+ __DEFAULT_FN_ATTRS_INT8
406
+ static __inline__ void __tile_dpbusd(__tile1024i *dst, __tile1024i src0,
407
+ __tile1024i src1) {
408
+ dst->tile = _tile_dpbusd_internal(src0.row, src1.col, src0.col, dst->tile,
409
+ src0.tile, src1.tile);
410
+ }
411
+
412
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
413
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
414
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
415
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
416
+ /// "dst", and store the 32-bit result back to tile "dst".
417
+ ///
418
+ /// \headerfile <immintrin.h>
419
+ ///
420
+ /// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
421
+ ///
422
+ /// \param dst
423
+ /// The destination tile. Max size is 1024 Bytes.
424
+ /// \param src0
425
+ /// The 1st source tile. Max size is 1024 Bytes.
426
+ /// \param src1
427
+ /// The 2nd source tile. Max size is 1024 Bytes.
428
+ __DEFAULT_FN_ATTRS_INT8
429
+ static __inline__ void __tile_dpbuud(__tile1024i *dst, __tile1024i src0,
430
+ __tile1024i src1) {
431
+ dst->tile = _tile_dpbuud_internal(src0.row, src1.col, src0.col, dst->tile,
432
+ src0.tile, src1.tile);
433
+ }
434
+
435
+ /// Store the tile specified by "src" to memory specifieid by "base" address and
436
+ /// "stride".
437
+ ///
438
+ /// \headerfile <immintrin.h>
439
+ ///
440
+ /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
441
+ ///
442
+ /// \param base
443
+ /// A pointer to base address.
444
+ /// \param stride
445
+ /// The stride between the rows' data to be stored in memory.
446
+ __DEFAULT_FN_ATTRS_TILE
447
+ static __inline__ void __tile_stored(void *base, __SIZE_TYPE__ stride,
448
+ __tile1024i src) {
449
+ _tile_stored_internal(src.row, src.col, base, stride, src.tile);
450
+ }
451
+
452
+ /// Zero the tile specified by "dst".
453
+ ///
454
+ /// \headerfile <immintrin.h>
455
+ ///
456
+ /// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
457
+ ///
458
+ /// \param dst
459
+ /// The destination tile to be zero. Max size is 1024 Bytes.
460
+ __DEFAULT_FN_ATTRS_TILE
461
+ static __inline__ void __tile_zero(__tile1024i *dst) {
462
+ dst->tile = __builtin_ia32_tilezero_internal(dst->row, dst->col);
463
+ }
464
+
465
+ /// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
466
+ /// src1, accumulating the intermediate single-precision (32-bit) floating-point
467
+ /// elements with elements in "dst", and store the 32-bit result back to tile
468
+ /// "dst".
469
+ ///
470
+ /// \headerfile <immintrin.h>
471
+ ///
472
+ /// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
473
+ ///
474
+ /// \param dst
475
+ /// The destination tile. Max size is 1024 Bytes.
476
+ /// \param src0
477
+ /// The 1st source tile. Max size is 1024 Bytes.
478
+ /// \param src1
479
+ /// The 2nd source tile. Max size is 1024 Bytes.
480
+ __DEFAULT_FN_ATTRS_BF16
481
+ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
482
+ __tile1024i src1) {
483
+ dst->tile = _tile_dpbf16ps_internal(src0.row, src1.col, src0.col, dst->tile,
484
+ src0.tile, src1.tile);
485
+ }
486
+
487
+ #undef __DEFAULT_FN_ATTRS_TILE
488
+ #undef __DEFAULT_FN_ATTRS_INT8
489
+ #undef __DEFAULT_FN_ATTRS_BF16
490
+
491
+ #endif /* __x86_64__ */
492
+ #endif /* __AMXINTRIN_H */
@@ -0,0 +1,48 @@
1
+ /*===-------- amxmovrsintrin.h - AMX MOVRS intrinsics -*- 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
+ #ifndef __IMMINTRIN_H
10
+ #error "Never use <amxmovrsintrin.h> directly; include <immintrin.h> instead."
11
+ #endif /* __IMMINTRIN_H */
12
+
13
+ #ifndef __AMXMOVRSINTRIN_H
14
+ #define __AMXMOVRSINTRIN_H
15
+ #ifdef __x86_64__
16
+
17
+ #define __DEFAULT_FN_ATTRS_MOVRS \
18
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-movrs")))
19
+
20
+ #define _tile_loaddrs(dst, base, stride) \
21
+ __builtin_ia32_tileloaddrs64((dst), ((const void *)(base)), \
22
+ (__SIZE_TYPE__)(stride))
23
+ #define _tile_stream_loaddrs(dst, base, stride) \
24
+ __builtin_ia32_tileloaddrst164((dst), ((const void *)(base)), \
25
+ (__SIZE_TYPE__)(stride))
26
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS
27
+ _tile_loaddrs_internal(unsigned short m, unsigned short n, const void *base,
28
+ __SIZE_TYPE__ stride) {
29
+ return __builtin_ia32_tileloaddrs64_internal(m, n, base,
30
+ (__SIZE_TYPE__)(stride));
31
+ }
32
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_MOVRS
33
+ _tile_loaddrst1_internal(unsigned short m, unsigned short n, const void *base,
34
+ __SIZE_TYPE__ stride) {
35
+ return __builtin_ia32_tileloaddrst164_internal(m, n, base,
36
+ (__SIZE_TYPE__)(stride));
37
+ }
38
+ static __inline__ void __DEFAULT_FN_ATTRS_MOVRS
39
+ __tile_loaddrs(__tile1024i *dst, const void *base, __SIZE_TYPE__ stride) {
40
+ dst->tile = _tile_loaddrs_internal(dst->row, dst->col, base, stride);
41
+ }
42
+ static __inline__ void __DEFAULT_FN_ATTRS_MOVRS __tile_stream_loaddrs(
43
+ __tile1024i *dst, const void *base, __SIZE_TYPE__ stride) {
44
+ dst->tile = _tile_loaddrst1_internal(dst->row, dst->col, base, stride);
45
+ }
46
+ #undef __DEFAULT_FN_ATTRS_MOVRS
47
+ #endif /* __x86_64__ */
48
+ #endif /* __AMXMOVRSINTRIN_H */
@@ -0,0 +1,21 @@
1
+ //===----- andes_vector.h - Andes Vector definitions ----------------------===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #ifndef _ANDES_VECTOR_H_
10
+ #define _ANDES_VECTOR_H_
11
+
12
+ #include "riscv_vector.h"
13
+
14
+ #pragma clang riscv intrinsic andes_vector
15
+
16
+ #define __riscv_intrinsic_xandesvbfhcvt 1
17
+ #define __riscv_intrinsic_xandesvdot 1
18
+ #define __riscv_intrinsic_xandesvpackfph 1
19
+ #define __riscv_intrinsic_xandesvsintload 1
20
+
21
+ #endif //_ANDES_VECTOR_H_
@@ -0,0 +1,21 @@
1
+ /*===---- arm64_neon.h - ARM64 NEON 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
+ /* Only include this if we're compiling for the windows platform. */
11
+ #ifndef _MSC_VER
12
+ #include_next <arm64_neon.h>
13
+ #else
14
+
15
+ #ifndef __ARM64_NEON_H
16
+ #define __ARM64_NEON_H
17
+
18
+ #include <arm_neon.h>
19
+
20
+ #endif /* __ARM64_NEON_H */
21
+ #endif /* _MSC_VER */
@@ -0,0 +1,45 @@
1
+ /*===---- arm64intr.h - ARM64 Windows 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
+ /* Only include this if we're compiling for the windows platform. */
11
+ #ifndef _MSC_VER
12
+ #include_next <arm64intr.h>
13
+ #else
14
+
15
+ #ifndef __ARM64INTR_H
16
+ #define __ARM64INTR_H
17
+
18
+ /* Encode an AArch64 system register for use with
19
+ _ReadStatusReg/_WriteStatusReg. op0 must be 2 or 3; only the low bit is
20
+ stored. */
21
+ #define ARM64_SYSREG(op0, op1, CRn, CRm, op2) \
22
+ ((((op0) & 0x1) << 14) | (((op1) & 0x7) << 11) | (((CRn) & 0xF) << 7) | \
23
+ (((CRm) & 0xF) << 3) | ((op2) & 0x7))
24
+
25
+ #define ARM64_FPCR ARM64_SYSREG(3, 3, 4, 4, 0)
26
+ #define ARM64_FPSR ARM64_SYSREG(3, 3, 4, 4, 1)
27
+
28
+ typedef enum
29
+ {
30
+ _ARM64_BARRIER_SY = 0xF,
31
+ _ARM64_BARRIER_ST = 0xE,
32
+ _ARM64_BARRIER_LD = 0xD,
33
+ _ARM64_BARRIER_ISH = 0xB,
34
+ _ARM64_BARRIER_ISHST = 0xA,
35
+ _ARM64_BARRIER_ISHLD = 0x9,
36
+ _ARM64_BARRIER_NSH = 0x7,
37
+ _ARM64_BARRIER_NSHST = 0x6,
38
+ _ARM64_BARRIER_NSHLD = 0x5,
39
+ _ARM64_BARRIER_OSH = 0x3,
40
+ _ARM64_BARRIER_OSHST = 0x2,
41
+ _ARM64_BARRIER_OSHLD = 0x1
42
+ } _ARM64INTR_BARRIER_TYPE;
43
+
44
+ #endif /* __ARM64INTR_H */
45
+ #endif /* _MSC_VER */