@cpp-linter/clang-tidy-win32-x64 19.1.0 → 21.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 (285) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{19 → 21}/include/__clang_cuda_device_functions.h +14 -0
  4. package/lib/clang/{19 → 21}/include/__clang_cuda_intrinsics.h +295 -8
  5. package/lib/clang/{19 → 21}/include/__clang_cuda_math.h +5 -0
  6. package/lib/clang/{19 → 21}/include/__clang_cuda_runtime_wrapper.h +1 -0
  7. package/lib/clang/{19 → 21}/include/__clang_cuda_texture_intrinsics.h +437 -2
  8. package/lib/clang/{19 → 21}/include/__clang_hip_cmath.h +15 -9
  9. package/lib/clang/{19 → 21}/include/__clang_hip_libdevice_declares.h +12 -20
  10. package/lib/clang/{19 → 21}/include/__clang_hip_math.h +110 -29
  11. package/lib/clang/{19 → 21}/include/__clang_hip_runtime_wrapper.h +3 -0
  12. package/lib/clang/21/include/__clang_spirv_builtins.h +217 -0
  13. package/lib/clang/{19 → 21}/include/__stdarg_va_arg.h +2 -2
  14. package/lib/clang/{19 → 21}/include/adcintrin.h +5 -0
  15. package/lib/clang/{19 → 21}/include/adxintrin.h +5 -0
  16. package/lib/clang/{19 → 21}/include/altivec.h +90 -87
  17. package/lib/clang/21/include/amdgpuintrin.h +191 -0
  18. package/lib/clang/21/include/amxavx512intrin.h +382 -0
  19. package/lib/clang/21/include/amxbf16transposeintrin.h +94 -0
  20. package/lib/clang/{19 → 21}/include/amxcomplexintrin.h +4 -6
  21. package/lib/clang/21/include/amxcomplextransposeintrin.h +303 -0
  22. package/lib/clang/{19 → 21}/include/amxfp16intrin.h +35 -0
  23. package/lib/clang/21/include/amxfp16transposeintrin.h +94 -0
  24. package/lib/clang/21/include/amxfp8intrin.h +230 -0
  25. package/lib/clang/{19 → 21}/include/amxintrin.h +5 -35
  26. package/lib/clang/21/include/amxmovrsintrin.h +48 -0
  27. package/lib/clang/21/include/amxmovrstransposeintrin.h +200 -0
  28. package/lib/clang/21/include/amxtf32intrin.h +108 -0
  29. package/lib/clang/21/include/amxtf32transposeintrin.h +105 -0
  30. package/lib/clang/21/include/amxtransposeintrin.h +248 -0
  31. package/lib/clang/{19/include/hlsl.h → 21/include/andes_vector.h} +7 -6
  32. package/lib/clang/{19 → 21}/include/arm_acle.h +29 -62
  33. package/lib/clang/{19 → 21}/include/arm_fp16.h +89 -89
  34. package/lib/clang/{19 → 21}/include/arm_neon.h +24549 -20140
  35. package/lib/clang/{19 → 21}/include/arm_sme.h +1016 -94
  36. package/lib/clang/{19 → 21}/include/arm_sve.h +4633 -3272
  37. package/lib/clang/{19 → 21}/include/arm_vector_types.h +87 -0
  38. package/lib/clang/21/include/avx10_2_512bf16intrin.h +561 -0
  39. package/lib/clang/21/include/avx10_2_512convertintrin.h +322 -0
  40. package/lib/clang/21/include/avx10_2_512minmaxintrin.h +127 -0
  41. package/lib/clang/21/include/avx10_2_512niintrin.h +314 -0
  42. package/lib/clang/21/include/avx10_2_512satcvtdsintrin.h +307 -0
  43. package/lib/clang/21/include/avx10_2_512satcvtintrin.h +301 -0
  44. package/lib/clang/21/include/avx10_2bf16intrin.h +1085 -0
  45. package/lib/clang/21/include/avx10_2convertintrin.h +3257 -0
  46. package/lib/clang/21/include/avx10_2copyintrin.h +66 -0
  47. package/lib/clang/21/include/avx10_2minmaxintrin.h +232 -0
  48. package/lib/clang/21/include/avx10_2niintrin.h +409 -0
  49. package/lib/clang/21/include/avx10_2satcvtdsintrin.h +376 -0
  50. package/lib/clang/21/include/avx10_2satcvtintrin.h +312 -0
  51. package/lib/clang/{19 → 21}/include/avx2intrin.h +9 -0
  52. package/lib/clang/{19 → 21}/include/avx512bitalgintrin.h +2 -2
  53. package/lib/clang/{19 → 21}/include/avx512fintrin.h +22 -14
  54. package/lib/clang/{19 → 21}/include/avx512fp16intrin.h +2 -1
  55. package/lib/clang/{19 → 21}/include/avx512vlbitalgintrin.h +4 -4
  56. package/lib/clang/{19 → 21}/include/avx512vpopcntdqintrin.h +12 -4
  57. package/lib/clang/{19 → 21}/include/avx512vpopcntdqvlintrin.h +16 -8
  58. package/lib/clang/{19 → 21}/include/avxintrin.h +30 -16
  59. package/lib/clang/{19 → 21}/include/avxvnniint16intrin.h +36 -77
  60. package/lib/clang/{19 → 21}/include/avxvnniint8intrin.h +36 -77
  61. package/lib/clang/{19 → 21}/include/bmi2intrin.h +15 -17
  62. package/lib/clang/{19 → 21}/include/bmiintrin.h +31 -41
  63. package/lib/clang/{19 → 21}/include/cmpccxaddintrin.h +1 -1
  64. package/lib/clang/{19 → 21}/include/cpuid.h +36 -33
  65. package/lib/clang/21/include/cuda_wrappers/bits/c++config.h +61 -0
  66. package/lib/clang/21/include/cuda_wrappers/cmath +44 -0
  67. package/lib/clang/{19 → 21}/include/cuda_wrappers/new +2 -0
  68. package/lib/clang/{19 → 21}/include/emmintrin.h +141 -107
  69. package/lib/clang/{19 → 21}/include/float.h +2 -11
  70. package/lib/clang/{19 → 21}/include/gfniintrin.h +32 -10
  71. package/lib/clang/21/include/gpuintrin.h +328 -0
  72. package/lib/clang/{19 → 21}/include/hexagon_types.h +8 -4
  73. package/lib/clang/{19/include/hlsl/hlsl_intrinsics.h → 21/include/hlsl/hlsl_alias_intrinsics.h} +1214 -100
  74. package/lib/clang/{19 → 21}/include/hlsl/hlsl_basic_types.h +47 -1
  75. package/lib/clang/21/include/hlsl/hlsl_compat_overloads.h +427 -0
  76. package/lib/clang/21/include/hlsl/hlsl_detail.h +54 -0
  77. package/lib/clang/21/include/hlsl/hlsl_intrinsic_helpers.h +144 -0
  78. package/lib/clang/21/include/hlsl/hlsl_intrinsics.h +526 -0
  79. package/lib/clang/21/include/hlsl/hlsl_spirv.h +28 -0
  80. package/lib/clang/21/include/hlsl.h +38 -0
  81. package/lib/clang/{19 → 21}/include/hvx_hexagon_protos.h +427 -0
  82. package/lib/clang/{19 → 21}/include/immintrin.h +45 -185
  83. package/lib/clang/{19 → 21}/include/intrin.h +41 -14
  84. package/lib/clang/{19 → 21}/include/intrin0.h +10 -1
  85. package/lib/clang/{19 → 21}/include/keylockerintrin.h +0 -9
  86. package/lib/clang/{19 → 21}/include/larchintrin.h +22 -8
  87. package/lib/clang/{19 → 21}/include/lasxintrin.h +27 -25
  88. package/lib/clang/{19 → 21}/include/limits.h +7 -4
  89. package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/ctype.h +38 -0
  90. package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/stdlib.h +9 -1
  91. package/lib/clang/21/include/llvm_offload_wrappers/__llvm_offload.h +31 -0
  92. package/lib/clang/21/include/llvm_offload_wrappers/__llvm_offload_device.h +10 -0
  93. package/lib/clang/21/include/llvm_offload_wrappers/__llvm_offload_host.h +15 -0
  94. package/lib/clang/{19 → 21}/include/lsxintrin.h +27 -25
  95. package/lib/clang/{19 → 21}/include/lzcntintrin.h +13 -8
  96. package/lib/clang/{19 → 21}/include/mmintrin.h +209 -155
  97. package/lib/clang/{19 → 21}/include/module.modulemap +15 -4
  98. package/lib/clang/21/include/movrs_avx10_2_512intrin.h +98 -0
  99. package/lib/clang/21/include/movrs_avx10_2intrin.h +174 -0
  100. package/lib/clang/21/include/movrsintrin.h +59 -0
  101. package/lib/clang/21/include/nvptxintrin.h +219 -0
  102. package/lib/clang/{19 → 21}/include/opencl-c-base.h +23 -1
  103. package/lib/clang/{19 → 21}/include/opencl-c.h +298 -39
  104. package/lib/clang/{19 → 21}/include/openmp_wrappers/__clang_openmp_device_functions.h +4 -5
  105. package/lib/clang/{19 → 21}/include/openmp_wrappers/complex_cmath.h +7 -2
  106. package/lib/clang/{19 → 21}/include/pmmintrin.h +16 -3
  107. package/lib/clang/{19 → 21}/include/popcntintrin.h +7 -7
  108. package/lib/clang/{19 → 21}/include/prfchwintrin.h +10 -13
  109. package/lib/clang/{19 → 21}/include/ptrauth.h +65 -2
  110. package/lib/clang/21/include/riscv_corev_alu.h +128 -0
  111. package/lib/clang/{19 → 21}/include/riscv_vector.h +0 -5
  112. package/lib/clang/{19 → 21}/include/shaintrin.h +3 -2
  113. package/lib/clang/21/include/sm4evexintrin.h +32 -0
  114. package/lib/clang/{19 → 21}/include/smmintrin.h +6 -0
  115. package/lib/clang/{19 → 21}/include/stdalign.h +0 -5
  116. package/lib/clang/21/include/stdcountof.h +15 -0
  117. package/lib/clang/{19 → 21}/include/stdint.h +18 -129
  118. package/lib/clang/{19 → 21}/include/tbmintrin.h +25 -37
  119. package/lib/clang/{19 → 21}/include/tmmintrin.h +64 -38
  120. package/lib/clang/{19 → 21}/include/vecintrin.h +1784 -61
  121. package/lib/clang/{19 → 21}/include/wasm_simd128.h +167 -21
  122. package/lib/clang/{19 → 21}/include/x86gprintrin.h +0 -14
  123. package/lib/clang/{19 → 21}/include/x86intrin.h +0 -18
  124. package/lib/clang/{19 → 21}/include/xmmintrin.h +173 -179
  125. package/package.json +6 -6
  126. package/lib/clang/19/include/cuda_wrappers/cmath +0 -90
  127. /package/lib/clang/{19 → 21}/include/__clang_cuda_builtin_vars.h +0 -0
  128. /package/lib/clang/{19 → 21}/include/__clang_cuda_cmath.h +0 -0
  129. /package/lib/clang/{19 → 21}/include/__clang_cuda_complex_builtins.h +0 -0
  130. /package/lib/clang/{19 → 21}/include/__clang_cuda_libdevice_declares.h +0 -0
  131. /package/lib/clang/{19 → 21}/include/__clang_cuda_math_forward_declares.h +0 -0
  132. /package/lib/clang/{19 → 21}/include/__clang_hip_stdlib.h +0 -0
  133. /package/lib/clang/{19 → 21}/include/__stdarg___gnuc_va_list.h +0 -0
  134. /package/lib/clang/{19 → 21}/include/__stdarg___va_copy.h +0 -0
  135. /package/lib/clang/{19 → 21}/include/__stdarg_header_macro.h +0 -0
  136. /package/lib/clang/{19 → 21}/include/__stdarg_va_copy.h +0 -0
  137. /package/lib/clang/{19 → 21}/include/__stdarg_va_list.h +0 -0
  138. /package/lib/clang/{19 → 21}/include/__stddef_header_macro.h +0 -0
  139. /package/lib/clang/{19 → 21}/include/__stddef_max_align_t.h +0 -0
  140. /package/lib/clang/{19 → 21}/include/__stddef_null.h +0 -0
  141. /package/lib/clang/{19 → 21}/include/__stddef_nullptr_t.h +0 -0
  142. /package/lib/clang/{19 → 21}/include/__stddef_offsetof.h +0 -0
  143. /package/lib/clang/{19 → 21}/include/__stddef_ptrdiff_t.h +0 -0
  144. /package/lib/clang/{19 → 21}/include/__stddef_rsize_t.h +0 -0
  145. /package/lib/clang/{19 → 21}/include/__stddef_size_t.h +0 -0
  146. /package/lib/clang/{19 → 21}/include/__stddef_unreachable.h +0 -0
  147. /package/lib/clang/{19 → 21}/include/__stddef_wchar_t.h +0 -0
  148. /package/lib/clang/{19 → 21}/include/__stddef_wint_t.h +0 -0
  149. /package/lib/clang/{19 → 21}/include/__wmmintrin_aes.h +0 -0
  150. /package/lib/clang/{19 → 21}/include/__wmmintrin_pclmul.h +0 -0
  151. /package/lib/clang/{19 → 21}/include/ammintrin.h +0 -0
  152. /package/lib/clang/{19 → 21}/include/arm64intr.h +0 -0
  153. /package/lib/clang/{19 → 21}/include/arm_bf16.h +0 -0
  154. /package/lib/clang/{19 → 21}/include/arm_cde.h +0 -0
  155. /package/lib/clang/{19 → 21}/include/arm_cmse.h +0 -0
  156. /package/lib/clang/{19 → 21}/include/arm_mve.h +0 -0
  157. /package/lib/clang/{19 → 21}/include/arm_neon_sve_bridge.h +0 -0
  158. /package/lib/clang/{19 → 21}/include/armintr.h +0 -0
  159. /package/lib/clang/{19 → 21}/include/avx512bf16intrin.h +0 -0
  160. /package/lib/clang/{19 → 21}/include/avx512bwintrin.h +0 -0
  161. /package/lib/clang/{19 → 21}/include/avx512cdintrin.h +0 -0
  162. /package/lib/clang/{19 → 21}/include/avx512dqintrin.h +0 -0
  163. /package/lib/clang/{19 → 21}/include/avx512ifmaintrin.h +0 -0
  164. /package/lib/clang/{19 → 21}/include/avx512ifmavlintrin.h +0 -0
  165. /package/lib/clang/{19 → 21}/include/avx512vbmi2intrin.h +0 -0
  166. /package/lib/clang/{19 → 21}/include/avx512vbmiintrin.h +0 -0
  167. /package/lib/clang/{19 → 21}/include/avx512vbmivlintrin.h +0 -0
  168. /package/lib/clang/{19 → 21}/include/avx512vlbf16intrin.h +0 -0
  169. /package/lib/clang/{19 → 21}/include/avx512vlbwintrin.h +0 -0
  170. /package/lib/clang/{19 → 21}/include/avx512vlcdintrin.h +0 -0
  171. /package/lib/clang/{19 → 21}/include/avx512vldqintrin.h +0 -0
  172. /package/lib/clang/{19 → 21}/include/avx512vlfp16intrin.h +0 -0
  173. /package/lib/clang/{19 → 21}/include/avx512vlintrin.h +0 -0
  174. /package/lib/clang/{19 → 21}/include/avx512vlvbmi2intrin.h +0 -0
  175. /package/lib/clang/{19 → 21}/include/avx512vlvnniintrin.h +0 -0
  176. /package/lib/clang/{19 → 21}/include/avx512vlvp2intersectintrin.h +0 -0
  177. /package/lib/clang/{19 → 21}/include/avx512vnniintrin.h +0 -0
  178. /package/lib/clang/{19 → 21}/include/avx512vp2intersectintrin.h +0 -0
  179. /package/lib/clang/{19 → 21}/include/avxifmaintrin.h +0 -0
  180. /package/lib/clang/{19 → 21}/include/avxneconvertintrin.h +0 -0
  181. /package/lib/clang/{19 → 21}/include/avxvnniintrin.h +0 -0
  182. /package/lib/clang/{19 → 21}/include/builtins.h +0 -0
  183. /package/lib/clang/{19 → 21}/include/cet.h +0 -0
  184. /package/lib/clang/{19 → 21}/include/cetintrin.h +0 -0
  185. /package/lib/clang/{19 → 21}/include/cldemoteintrin.h +0 -0
  186. /package/lib/clang/{19 → 21}/include/clflushoptintrin.h +0 -0
  187. /package/lib/clang/{19 → 21}/include/clwbintrin.h +0 -0
  188. /package/lib/clang/{19 → 21}/include/clzerointrin.h +0 -0
  189. /package/lib/clang/{19 → 21}/include/crc32intrin.h +0 -0
  190. /package/lib/clang/{19 → 21}/include/cuda_wrappers/algorithm +0 -0
  191. /package/lib/clang/{19 → 21}/include/cuda_wrappers/bits/basic_string.h +0 -0
  192. /package/lib/clang/{19 → 21}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  193. /package/lib/clang/{19 → 21}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  194. /package/lib/clang/{19 → 21}/include/cuda_wrappers/complex +0 -0
  195. /package/lib/clang/{19 → 21}/include/enqcmdintrin.h +0 -0
  196. /package/lib/clang/{19 → 21}/include/f16cintrin.h +0 -0
  197. /package/lib/clang/{19 → 21}/include/fma4intrin.h +0 -0
  198. /package/lib/clang/{19 → 21}/include/fmaintrin.h +0 -0
  199. /package/lib/clang/{19 → 21}/include/fxsrintrin.h +0 -0
  200. /package/lib/clang/{19 → 21}/include/hexagon_circ_brev_intrinsics.h +0 -0
  201. /package/lib/clang/{19 → 21}/include/hexagon_protos.h +0 -0
  202. /package/lib/clang/{19 → 21}/include/hresetintrin.h +0 -0
  203. /package/lib/clang/{19 → 21}/include/htmintrin.h +0 -0
  204. /package/lib/clang/{19 → 21}/include/htmxlintrin.h +0 -0
  205. /package/lib/clang/{19 → 21}/include/ia32intrin.h +0 -0
  206. /package/lib/clang/{19 → 21}/include/inttypes.h +0 -0
  207. /package/lib/clang/{19 → 21}/include/invpcidintrin.h +0 -0
  208. /package/lib/clang/{19 → 21}/include/iso646.h +0 -0
  209. /package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/assert.h +0 -0
  210. /package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/inttypes.h +0 -0
  211. /package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/stdio.h +0 -0
  212. /package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/string.h +0 -0
  213. /package/lib/clang/{19 → 21}/include/llvm_libc_wrappers/time.h +0 -0
  214. /package/lib/clang/{19 → 21}/include/lwpintrin.h +0 -0
  215. /package/lib/clang/{19 → 21}/include/mm3dnow.h +0 -0
  216. /package/lib/clang/{19 → 21}/include/mm_malloc.h +0 -0
  217. /package/lib/clang/{19 → 21}/include/movdirintrin.h +0 -0
  218. /package/lib/clang/{19 → 21}/include/msa.h +0 -0
  219. /package/lib/clang/{19 → 21}/include/mwaitxintrin.h +0 -0
  220. /package/lib/clang/{19 → 21}/include/nmmintrin.h +0 -0
  221. /package/lib/clang/{19 → 21}/include/openmp_wrappers/cmath +0 -0
  222. /package/lib/clang/{19 → 21}/include/openmp_wrappers/complex +0 -0
  223. /package/lib/clang/{19 → 21}/include/openmp_wrappers/complex.h +0 -0
  224. /package/lib/clang/{19 → 21}/include/openmp_wrappers/math.h +0 -0
  225. /package/lib/clang/{19 → 21}/include/openmp_wrappers/new +0 -0
  226. /package/lib/clang/{19 → 21}/include/pconfigintrin.h +0 -0
  227. /package/lib/clang/{19 → 21}/include/pkuintrin.h +0 -0
  228. /package/lib/clang/{19 → 21}/include/ppc_wrappers/bmi2intrin.h +0 -0
  229. /package/lib/clang/{19 → 21}/include/ppc_wrappers/bmiintrin.h +0 -0
  230. /package/lib/clang/{19 → 21}/include/ppc_wrappers/emmintrin.h +0 -0
  231. /package/lib/clang/{19 → 21}/include/ppc_wrappers/immintrin.h +0 -0
  232. /package/lib/clang/{19 → 21}/include/ppc_wrappers/mm_malloc.h +0 -0
  233. /package/lib/clang/{19 → 21}/include/ppc_wrappers/mmintrin.h +0 -0
  234. /package/lib/clang/{19 → 21}/include/ppc_wrappers/nmmintrin.h +0 -0
  235. /package/lib/clang/{19 → 21}/include/ppc_wrappers/pmmintrin.h +0 -0
  236. /package/lib/clang/{19 → 21}/include/ppc_wrappers/smmintrin.h +0 -0
  237. /package/lib/clang/{19 → 21}/include/ppc_wrappers/tmmintrin.h +0 -0
  238. /package/lib/clang/{19 → 21}/include/ppc_wrappers/x86gprintrin.h +0 -0
  239. /package/lib/clang/{19 → 21}/include/ppc_wrappers/x86intrin.h +0 -0
  240. /package/lib/clang/{19 → 21}/include/ppc_wrappers/xmmintrin.h +0 -0
  241. /package/lib/clang/{19 → 21}/include/prfchiintrin.h +0 -0
  242. /package/lib/clang/{19 → 21}/include/ptwriteintrin.h +0 -0
  243. /package/lib/clang/{19 → 21}/include/raointintrin.h +0 -0
  244. /package/lib/clang/{19 → 21}/include/rdpruintrin.h +0 -0
  245. /package/lib/clang/{19 → 21}/include/rdseedintrin.h +0 -0
  246. /package/lib/clang/{19 → 21}/include/riscv_bitmanip.h +0 -0
  247. /package/lib/clang/{19 → 21}/include/riscv_crypto.h +0 -0
  248. /package/lib/clang/{19 → 21}/include/riscv_ntlh.h +0 -0
  249. /package/lib/clang/{19 → 21}/include/rtmintrin.h +0 -0
  250. /package/lib/clang/{19 → 21}/include/s390intrin.h +0 -0
  251. /package/lib/clang/{19 → 21}/include/serializeintrin.h +0 -0
  252. /package/lib/clang/{19 → 21}/include/sgxintrin.h +0 -0
  253. /package/lib/clang/{19 → 21}/include/sha512intrin.h +0 -0
  254. /package/lib/clang/{19 → 21}/include/sifive_vector.h +0 -0
  255. /package/lib/clang/{19 → 21}/include/sm3intrin.h +0 -0
  256. /package/lib/clang/{19 → 21}/include/sm4intrin.h +0 -0
  257. /package/lib/clang/{19 → 21}/include/stdarg.h +0 -0
  258. /package/lib/clang/{19 → 21}/include/stdatomic.h +0 -0
  259. /package/lib/clang/{19 → 21}/include/stdbool.h +0 -0
  260. /package/lib/clang/{19 → 21}/include/stdckdint.h +0 -0
  261. /package/lib/clang/{19 → 21}/include/stddef.h +0 -0
  262. /package/lib/clang/{19 → 21}/include/stdnoreturn.h +0 -0
  263. /package/lib/clang/{19 → 21}/include/tgmath.h +0 -0
  264. /package/lib/clang/{19 → 21}/include/tsxldtrkintrin.h +0 -0
  265. /package/lib/clang/{19 → 21}/include/uintrintrin.h +0 -0
  266. /package/lib/clang/{19 → 21}/include/unwind.h +0 -0
  267. /package/lib/clang/{19 → 21}/include/usermsrintrin.h +0 -0
  268. /package/lib/clang/{19 → 21}/include/vadefs.h +0 -0
  269. /package/lib/clang/{19 → 21}/include/vaesintrin.h +0 -0
  270. /package/lib/clang/{19 → 21}/include/varargs.h +0 -0
  271. /package/lib/clang/{19 → 21}/include/velintrin.h +0 -0
  272. /package/lib/clang/{19 → 21}/include/velintrin_approx.h +0 -0
  273. /package/lib/clang/{19 → 21}/include/velintrin_gen.h +0 -0
  274. /package/lib/clang/{19 → 21}/include/vpclmulqdqintrin.h +0 -0
  275. /package/lib/clang/{19 → 21}/include/waitpkgintrin.h +0 -0
  276. /package/lib/clang/{19 → 21}/include/wbnoinvdintrin.h +0 -0
  277. /package/lib/clang/{19 → 21}/include/wmmintrin.h +0 -0
  278. /package/lib/clang/{19 → 21}/include/xopintrin.h +0 -0
  279. /package/lib/clang/{19 → 21}/include/xsavecintrin.h +0 -0
  280. /package/lib/clang/{19 → 21}/include/xsaveintrin.h +0 -0
  281. /package/lib/clang/{19 → 21}/include/xsaveoptintrin.h +0 -0
  282. /package/lib/clang/{19 → 21}/include/xsavesintrin.h +0 -0
  283. /package/lib/clang/{19 → 21}/include/xtestintrin.h +0 -0
  284. /package/lib/clang/{19 → 21}/include/yvals_core.h +0 -0
  285. /package/lib/clang/{19 → 21}/include/zos_wrappers/builtins.h +0 -0
@@ -22,8 +22,6 @@
22
22
  __attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
23
23
  #define __DEFAULT_FN_ATTRS_BF16 \
24
24
  __attribute__((__always_inline__, __nodebug__, __target__("amx-bf16")))
25
- #define __DEFAULT_FN_ATTRS_FP16 \
26
- __attribute__((__always_inline__, __nodebug__, __target__("amx-fp16")))
27
25
 
28
26
  /// Load tile configuration from a 64-byte memory location specified by
29
27
  /// "mem_addr". The tile configuration includes the tile type palette, the
@@ -232,9 +230,11 @@ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
232
230
  /// bytes. Since there is no 2D type in llvm IR, we use vector type to
233
231
  /// represent 2D tile and the fixed size is maximum amx tile register size.
234
232
  typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64)));
233
+ typedef int _tile1024i_1024a
234
+ __attribute__((__vector_size__(1024), __aligned__(1024)));
235
235
 
236
236
  /// This is internal intrinsic. C/C++ user should avoid calling it directly.
237
- static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
237
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE
238
238
  _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
239
239
  __SIZE_TYPE__ stride) {
240
240
  return __builtin_ia32_tileloadd64_internal(m, n, base,
@@ -242,7 +242,7 @@ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
242
242
  }
243
243
 
244
244
  /// This is internal intrinsic. C/C++ user should avoid calling it directly.
245
- static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
245
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TILE
246
246
  _tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base,
247
247
  __SIZE_TYPE__ stride) {
248
248
  return __builtin_ia32_tileloaddt164_internal(m, n, base,
@@ -278,7 +278,7 @@ _tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k,
278
278
  }
279
279
 
280
280
  /// This is internal intrinsic. C/C++ user should avoid calling it directly.
281
- static __inline__ void __DEFAULT_FN_ATTRS_INT8
281
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
282
282
  _tile_stored_internal(unsigned short m, unsigned short n, void *base,
283
283
  __SIZE_TYPE__ stride, _tile1024i tile) {
284
284
  return __builtin_ia32_tilestored64_internal(m, n, base,
@@ -292,13 +292,6 @@ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
292
292
  return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
293
293
  }
294
294
 
295
- /// This is internal intrinsic. C/C++ user should avoid calling it directly.
296
- static __inline__ _tile1024i __DEFAULT_FN_ATTRS_FP16
297
- _tile_dpfp16ps_internal(unsigned short m, unsigned short n, unsigned short k,
298
- _tile1024i dst, _tile1024i src1, _tile1024i src2) {
299
- return __builtin_ia32_tdpfp16ps_internal(m, n, k, dst, src1, src2);
300
- }
301
-
302
295
  /// This struct pack the shape and tile data together for user. We suggest
303
296
  /// initializing the struct as early as possible, because compiler depends
304
297
  /// on the shape information to do configure. The constant value is preferred
@@ -493,32 +486,9 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
493
486
  src0.tile, src1.tile);
494
487
  }
495
488
 
496
- /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles src0 and
497
- /// src1, accumulating the intermediate single-precision (32-bit) floating-point
498
- /// elements with elements in "dst", and store the 32-bit result back to tile
499
- /// "dst".
500
- ///
501
- /// \headerfile <immintrin.h>
502
- ///
503
- /// This intrinsic corresponds to the <c> TDPFP16PS </c> instruction.
504
- ///
505
- /// \param dst
506
- /// The destination tile. Max size is 1024 Bytes.
507
- /// \param src0
508
- /// The 1st source tile. Max size is 1024 Bytes.
509
- /// \param src1
510
- /// The 2nd source tile. Max size is 1024 Bytes.
511
- __DEFAULT_FN_ATTRS_FP16
512
- static __inline__ void __tile_dpfp16ps(__tile1024i *dst, __tile1024i src0,
513
- __tile1024i src1) {
514
- dst->tile = _tile_dpfp16ps_internal(src0.row, src1.col, src0.col, dst->tile,
515
- src0.tile, src1.tile);
516
- }
517
-
518
489
  #undef __DEFAULT_FN_ATTRS_TILE
519
490
  #undef __DEFAULT_FN_ATTRS_INT8
520
491
  #undef __DEFAULT_FN_ATTRS_BF16
521
- #undef __DEFAULT_FN_ATTRS_FP16
522
492
 
523
493
  #endif /* __x86_64__ */
524
494
  #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,200 @@
1
+ /* ===--- amxmovrstransposeintrin.h - AMX_MOVRS_TRANSPOSE 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 \
12
+ "Never use <amxmovrstransposeintrin.h> directly; use <immintrin.h> instead."
13
+ #endif /* __IMMINTRIN_H */
14
+
15
+ #ifndef __AMX_MOVRS_TRANSPOSEINTRIN_H
16
+ #define __AMX_MOVRS_TRANSPOSEINTRIN_H
17
+ #ifdef __x86_64__
18
+
19
+ #define __DEFAULT_FN_ATTRS \
20
+ __attribute__((__always_inline__, __nodebug__, \
21
+ __target__("amx-transpose,amx-movrs")))
22
+
23
+ #define _tile_2rpntlvwz0rs(tdst, base, stride) \
24
+ __builtin_ia32_t2rpntlvwz0rs(tdst, base, stride)
25
+ #define _tile_2rpntlvwz0rst1(tdst, base, stride) \
26
+ __builtin_ia32_t2rpntlvwz0rst1(tdst, base, stride)
27
+ #define _tile_2rpntlvwz1rs(tdst, base, stride) \
28
+ __builtin_ia32_t2rpntlvwz1rs(tdst, base, stride)
29
+ #define _tile_2rpntlvwz1rst1(tdst, base, stride) \
30
+ __builtin_ia32_t2rpntlvwz1rst1(tdst, base, stride)
31
+
32
+ static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz0rs_internal(
33
+ unsigned short row, unsigned short col0, unsigned short col1,
34
+ _tile1024i *dst0, _tile1024i *dst1, const void *base,
35
+ __SIZE_TYPE__ stride) {
36
+ // Use __tile1024i_1024a* to escape the alignment check in
37
+ // clang/test/Headers/x86-intrinsics-headers-clean.cpp
38
+ __builtin_ia32_t2rpntlvwz0rs_internal(
39
+ row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
40
+ (__SIZE_TYPE__)(stride));
41
+ }
42
+
43
+ static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz0rst1_internal(
44
+ unsigned short row, unsigned short col0, unsigned short col1,
45
+ _tile1024i *dst0, _tile1024i *dst1, const void *base,
46
+ __SIZE_TYPE__ stride) {
47
+ __builtin_ia32_t2rpntlvwz0rst1_internal(
48
+ row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
49
+ (__SIZE_TYPE__)(stride));
50
+ }
51
+
52
+ static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz1rs_internal(
53
+ unsigned short row, unsigned short col0, unsigned short col1,
54
+ _tile1024i *dst0, _tile1024i *dst1, const void *base,
55
+ __SIZE_TYPE__ stride) {
56
+ __builtin_ia32_t2rpntlvwz1rs_internal(
57
+ row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
58
+ (__SIZE_TYPE__)(stride));
59
+ }
60
+
61
+ static __inline__ void __DEFAULT_FN_ATTRS _tile_2rpntlvwz1rst1_internal(
62
+ unsigned short row, unsigned short col0, unsigned short col1,
63
+ _tile1024i *dst0, _tile1024i *dst1, const void *base,
64
+ __SIZE_TYPE__ stride) {
65
+ __builtin_ia32_t2rpntlvwz1rst1_internal(
66
+ row, col0, col1, (_tile1024i_1024a *)dst0, (_tile1024i_1024a *)dst1, base,
67
+ (__SIZE_TYPE__)(stride));
68
+ }
69
+
70
+ /// Converts a pair of tiles from memory into VNNI format, and places the
71
+ /// results in a pair of destinations specified by dst. The pair of tiles
72
+ /// in memory is specified via a tsib; the second tile is after the first
73
+ /// one, separated by the same stride that separates each row.
74
+ /// The tile configuration for the destination tiles indicates the amount
75
+ /// of data to read from memory. The instruction will load a number of rows
76
+ /// that is equal to twice the number of rows in tmm1. The size of each row
77
+ /// is equal to the average width of the destination tiles. If the second
78
+ /// tile is configured with zero rows and columns, only the first tile will
79
+ /// be written.
80
+ /// Provides a hint to the implementation that the data will likely become
81
+ /// read shared in the near future and the data caching can be optimized.
82
+ ///
83
+ /// \headerfile <immintrin.h>
84
+ ///
85
+ /// This intrinsic corresponds to the <c> T2RPNTLVWZ0RS </c> instruction.
86
+ ///
87
+ /// \param dst0
88
+ /// First tile of destination tile pair. Max size is 1024i*2 Bytes.
89
+ /// \param dst1
90
+ /// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
91
+ /// \param base
92
+ /// A pointer to base address.
93
+ /// \param stride
94
+ /// The stride between the rows' data to be loaded in memory.
95
+ __DEFAULT_FN_ATTRS
96
+ static void __tile_2rpntlvwz0rs(__tile1024i *dst0, __tile1024i *dst1,
97
+ const void *base, __SIZE_TYPE__ stride) {
98
+ _tile_2rpntlvwz0rs_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
99
+ &dst1->tile, base, stride);
100
+ }
101
+
102
+ /// Converts a pair of tiles from memory into VNNI format, and places the
103
+ /// results in a pair of destinations specified by dst. The pair of tiles
104
+ /// in memory is specified via a tsib; the second tile is after the first
105
+ /// one, separated by the same stride that separates each row.
106
+ /// The tile configuration for the destination tiles indicates the amount
107
+ /// of data to read from memory. The instruction will load a number of rows
108
+ /// that is equal to twice the number of rows in tmm1. The size of each row
109
+ /// is equal to the average width of the destination tiles. If the second
110
+ /// tile is configured with zero rows and columns, only the first tile will
111
+ /// be written.
112
+ ///
113
+ /// \headerfile <immintrin.h>
114
+ ///
115
+ /// This intrinsic corresponds to the <c> T2RPNTLVWZ0T1RS </c> instruction.
116
+ ///
117
+ /// \param dst0
118
+ /// First tile of destination tile pair. Max size is 1024i*2 Bytes.
119
+ /// \param dst1
120
+ /// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
121
+ /// \param base
122
+ /// A pointer to base address.
123
+ /// \param stride
124
+ /// The stride between the rows' data to be loaded in memory.
125
+ __DEFAULT_FN_ATTRS
126
+ static void __tile_2rpntlvwz0rst1(__tile1024i *dst0, __tile1024i *dst1,
127
+ const void *base, __SIZE_TYPE__ stride) {
128
+ _tile_2rpntlvwz0rst1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
129
+ &dst1->tile, base, stride);
130
+ }
131
+
132
+ /// Converts a pair of tiles from memory into VNNI format, and places the
133
+ /// results in a pair of destinations specified by dst. The pair of tiles
134
+ /// in memory is specified via a tsib; the second tile is after the first
135
+ /// one, separated by the same stride that separates each row.
136
+ /// The tile configuration for the destination tiles indicates the amount
137
+ /// of data to read from memory. The instruction will load a number of rows
138
+ /// that is equal to twice the number of rows in tmm1. The size of each row
139
+ /// is equal to the average width of the destination tiles. If the second
140
+ /// tile is configured with zero rows and columns, only the first tile will
141
+ /// be written. The last row will be not be read from memory but instead
142
+ /// filled with zeros.
143
+ /// Provides a hint to the implementation that the data will likely become
144
+ /// read shared in the near future and the data caching can be optimized.
145
+ ///
146
+ /// \headerfile <immintrin.h>
147
+ ///
148
+ /// This intrinsic corresponds to the <c> T2RPNTLVWZ1 </c> instruction.
149
+ ///
150
+ /// \param dst0
151
+ /// First tile of destination tile pair. Max size is 1024i*2 Bytes.
152
+ /// \param dst1
153
+ /// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
154
+ /// \param base
155
+ /// A pointer to base address.
156
+ /// \param stride
157
+ /// The stride between the rows' data to be loaded in memory.
158
+ __DEFAULT_FN_ATTRS
159
+ static void __tile_2rpntlvwz1rs(__tile1024i *dst0, __tile1024i *dst1,
160
+ const void *base, __SIZE_TYPE__ stride) {
161
+ _tile_2rpntlvwz1rs_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
162
+ &dst1->tile, base, stride);
163
+ }
164
+
165
+ /// Converts a pair of tiles from memory into VNNI format, and places the
166
+ /// results in a pair of destinations specified by dst. The pair of tiles
167
+ /// in memory is specified via a tsib; the second tile is after the first
168
+ /// one, separated by the same stride that separates each row.
169
+ /// The tile configuration for the destination tiles indicates the amount
170
+ /// of data to read from memory. The instruction will load a number of rows
171
+ /// that is equal to twice the number of rows in tmm1. The size of each row
172
+ /// is equal to the average width of the destination tiles. If the second
173
+ /// tile is configured with zero rows and columns, only the first tile will
174
+ /// be written. The last row will be not be read from memory but instead
175
+ /// filled with zeros.
176
+ /// Provides a hint to the implementation that the data will likely become
177
+ /// read shared in the near future and the data caching can be optimized.
178
+ ///
179
+ /// \headerfile <immintrin.h>
180
+ ///
181
+ /// This intrinsic corresponds to the <c> T2RPNTLVWZ1T1RS </c> instruction.
182
+ ///
183
+ /// \param dst0
184
+ /// First tile of destination tile pair. Max size is 1024i*2 Bytes.
185
+ /// \param dst1
186
+ /// Second tile of destination tile pair. Max size is 1024i*2 Bytes.
187
+ /// \param base
188
+ /// A pointer to base address.
189
+ /// \param stride
190
+ /// The stride between the rows' data to be loaded in memory.
191
+ __DEFAULT_FN_ATTRS
192
+ static void __tile_2rpntlvwz1rst1(__tile1024i *dst0, __tile1024i *dst1,
193
+ const void *base, __SIZE_TYPE__ stride) {
194
+ _tile_2rpntlvwz1rst1_internal(dst0->row, dst0->col, dst1->col, &dst0->tile,
195
+ &dst1->tile, base, stride);
196
+ }
197
+
198
+ #undef __DEFAULT_FN_ATTRS
199
+ #endif /* __x86_64__ */
200
+ #endif /* __AMX_MOVRS_TRANSPOSEINTRIN_H */
@@ -0,0 +1,108 @@
1
+ /*===------------- amxtf32intrin.h - AMX_TF32 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
+
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <amxtf32intrin.h> directly; include <immintrin.h> instead."
12
+ #endif // __IMMINTRIN_H
13
+
14
+ #ifndef __AMX_TF32INTRIN_H
15
+ #define __AMX_TF32INTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ #define __DEFAULT_FN_ATTRS_TF32 \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-tf32")))
20
+
21
+ /// Do Matrix Multiplication of \a a and \a b, and then do Matrix Plus
22
+ /// with \a srcdst.
23
+ /// All the calculation is base on float32 but with the lower 13-bit set to 0.
24
+ ///
25
+ /// \headerfile <immintrin.h>
26
+ ///
27
+ /// \code
28
+ /// void _tile_mmultf32ps(constexpr int srcdst, constexpr int a, \
29
+ /// constexpr int b);
30
+ /// \endcode
31
+ ///
32
+ /// This intrinsic corresponds to the <c> TMMULTF32PS </c> instruction.
33
+ ///
34
+ /// \param srcdst
35
+ /// The destination tile. Max size is 1024 Bytes.
36
+ /// \param a
37
+ /// The 1st source tile. Max size is 1024 Bytes.
38
+ /// \param b
39
+ /// The 2nd source tile. Max size is 1024 Bytes.
40
+ ///
41
+ /// \code{.operation}
42
+ /// DEFINE zero_lower_mantissa_bits_fp32(x[31:0]) {
43
+ /// dword[12:0] := 0
44
+ /// dword[31:13] := x[31:13]
45
+ /// return dword
46
+ /// }
47
+ ///
48
+ /// DEFINE silence_snan_fp32(x[31:0]) {
49
+ /// IF (x.exponent == 255 and x.fraction != 0 and x.fraction[22] == 0)
50
+ /// x.fraction[22] := 1
51
+ /// return x
52
+ /// }
53
+ ///
54
+ /// elements_a := a.colsb / 4
55
+ /// elements_dest := srcdst.colsb / 4
56
+ ///
57
+ /// FOR m = 0 TO (srcdst.rows-1)
58
+ /// tmp[511:0] := 0
59
+ /// FOR k = 0 TO (elements_a-1)
60
+ /// FOR n = 0 TO (elements_dest-1)
61
+ /// af := silence_snan_fp32(a.row[m].fp32[k])
62
+ /// bf := silence_snan_fp32(b.row[k].fp32[n])
63
+ /// tmp.fp32[n] += zero_lower_mantissa_bits_fp32(af)
64
+ /// * zero_lower_mantissa_bits_fp32(bf)
65
+ /// ENDFOR
66
+ /// ENDFOR
67
+ ///
68
+ /// FOR n = 0 TO (elements_dest-1)
69
+ /// tmp.fp32[n] += srcdst.row[m].fp32[n]
70
+ /// ENDFOR
71
+ /// write_row_and_zero(srcdst, m, tmp, srcdst.colsb)
72
+ ///
73
+ /// ENDFOR
74
+ ///
75
+ /// zero_upper_rows(srcdst, srcdst.rows)
76
+ /// zero_tileconfig_start()
77
+ /// \endcode
78
+ #define _tile_mmultf32ps(srcdst, a, b) \
79
+ __builtin_ia32_tmmultf32ps((srcdst), (a), (b))
80
+
81
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TF32
82
+ _tile_mmultf32ps_internal(unsigned short m, unsigned short n, unsigned short k,
83
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
84
+ return __builtin_ia32_tmmultf32ps_internal(m, n, k, dst, src1, src2);
85
+ }
86
+
87
+ /// Do Matrix Multiplication of src0 and src1, and then do Matrix Plus with dst.
88
+ /// All the calculation is base on float32 but with the lower 13-bit set to 0.
89
+ ///
90
+ /// \headerfile <immintrin.h>
91
+ ///
92
+ /// This intrinsic corresponds to the <c> TMMULTF32PS </c> instruction.
93
+ ///
94
+ /// \param dst
95
+ /// The destination tile. Max size is 1024 Bytes.
96
+ /// \param src0
97
+ /// The 1st source tile. Max size is 1024 Bytes.
98
+ /// \param src1
99
+ /// The 2nd source tile. Max size is 1024 Bytes.
100
+ __DEFAULT_FN_ATTRS_TF32
101
+ static void __tile_mmultf32ps(__tile1024i *dst, __tile1024i src0,
102
+ __tile1024i src1) {
103
+ dst->tile = _tile_mmultf32ps_internal(src0.row, src1.col, src0.col, dst->tile,
104
+ src0.tile, src1.tile);
105
+ }
106
+
107
+ #endif // __x86_64__
108
+ #endif // __AMX_TF32INTRIN_H
@@ -0,0 +1,105 @@
1
+ /*===--------- amxtf32transposeintrin.h - AMX-TF32 and AMX-TRANSPOSE --------===
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 \
11
+ "Never use <amxtf32transposeintrin.h> directly; include <immintrin.h> instead."
12
+ #endif // __IMMINTRIN_H
13
+
14
+ #ifndef __AMX_TF32TRANSPOSEINTRIN_H
15
+ #define __AMX_TF32TRANSPOSEINTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ #define __DEFAULT_FN_ATTRS_TF32_TRANSPOSE \
19
+ __attribute__((__always_inline__, __nodebug__, \
20
+ __target__("amx-tf32,amx-transpose")))
21
+
22
+ /// \code
23
+ /// void _tile_tmmultf32ps(constexpr int srcdst, constexpr int a, \
24
+ /// constexpr int b);
25
+ /// \endcode
26
+ ///
27
+ /// This intrinsic corresponds to the <c> TTMMULTF32PS </c> instruction.
28
+ ///
29
+ /// \param srcdst
30
+ /// The destination tile. Max size is 1024 Bytes.
31
+ /// \param a
32
+ /// The 1st source tile. Max size is 1024 Bytes.
33
+ /// \param b
34
+ /// The 2nd source tile. Max size is 1024 Bytes.
35
+ ///
36
+ /// \code{.operation}
37
+ /// DEFINE zero_lower_mantissa_bits_fp32(x[31:0]) {
38
+ /// dword[12:0] := 0
39
+ /// dword[31:13] := x[31:13]
40
+ /// return dword
41
+ /// }
42
+ ///
43
+ /// DEFINE silence_snan_fp32(x[31:0]) {
44
+ /// IF (x.exponent == 255 and x.fraction != 0 and x.fraction[22] == 0)
45
+ /// x.fraction[22] := 1
46
+ /// return x
47
+ /// }
48
+ ///
49
+ /// elements_dest:= srcdst.colsb/4
50
+ ///
51
+ /// FOR m := 0 TO (srcdst.rows-1)
52
+ /// tmp[511:0] := 0
53
+ /// FOR k := 0 TO (a.rows-1)
54
+ /// FOR n := 0 TO (elements_dest-1)
55
+ /// a1e := silence_snan_fp32(a.row[k].fp32[m])
56
+ /// a2e := silence_snan_fp32(b.row[k].fp32[n])
57
+ /// s1e := zero_lower_mantissa_bits_fp32(a1e)
58
+ /// s2e := zero_lower_mantissa_bits_fp32(a2e)
59
+ /// tmp.fp32[n] += s1e * s2e
60
+ /// ENDFOR
61
+ /// ENDFOR
62
+ ///
63
+ /// FOR n := 0 TO (elements_dest-1)
64
+ /// tmp.fp32[n] += srcdst.row[m].fp32[n]
65
+ /// ENDFOR
66
+ /// write_row_and_zero(srcdst, m, tmp, srcdst.colsb)
67
+ ///
68
+ /// ENDFOR
69
+ ///
70
+ /// zero_upper_rows(srcdst, srcdst.rows)
71
+ /// zero_tileconfig_start()
72
+ /// \endcode
73
+ #define _tile_tmmultf32ps(srcdst, a, b) \
74
+ __builtin_ia32_ttmmultf32ps((srcdst), (a), (b))
75
+
76
+ // dst = m x n (srcdest), src1 = k x m, src2 = k x n
77
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_TF32_TRANSPOSE
78
+ _tile_tmmultf32ps_internal(unsigned short m, unsigned short n, unsigned short k,
79
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
80
+ return __builtin_ia32_ttmmultf32ps_internal(m, n, k, dst, src1, src2);
81
+ }
82
+
83
+ /// Compute transpose and do Matrix Multiplication of src0 and src1, and then do
84
+ /// Matrix Plus with dst. All the calculation is base on float32 but with the
85
+ /// lower 13-bit set to 0.
86
+ ///
87
+ /// \headerfile <immintrin.h>
88
+ ///
89
+ /// This intrinsic corresponds to the <c> TTMMULTF32PS </c> instruction.
90
+ ///
91
+ /// \param dst
92
+ /// The destination tile. Max size is 1024 Bytes.
93
+ /// \param src0
94
+ /// The 1st source tile. Max size is 1024 Bytes.
95
+ /// \param src1
96
+ /// The 2nd source tile. Max size is 1024 Bytes.
97
+ __DEFAULT_FN_ATTRS_TF32_TRANSPOSE
98
+ static void __tile_tmmultf32ps(__tile1024i *dst, __tile1024i src0,
99
+ __tile1024i src1) {
100
+ dst->tile = _tile_tmmultf32ps_internal(src0.row, src1.col, src0.col,
101
+ dst->tile, src0.tile, src1.tile);
102
+ }
103
+
104
+ #endif // __x86_64__
105
+ #endif // __AMX_TF32TRANSPOSEINTRIN_H