@cpp-linter/clang-tidy-win32-x64 15.0.2 → 17.0.6

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 (222) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_intrinsics.h +191 -0
  4. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_math.h +1 -1
  5. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_texture_intrinsics.h +2 -0
  6. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_cmath.h +1 -1
  7. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_libdevice_declares.h +37 -30
  8. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_math.h +66 -84
  9. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_runtime_wrapper.h +14 -0
  10. package/lib/clang/17/include/__clang_hip_stdlib.h +43 -0
  11. package/lib/clang/17/include/adxintrin.h +227 -0
  12. package/lib/clang/{15.0.2 → 17}/include/altivec.h +150 -138
  13. package/lib/clang/17/include/amxcomplexintrin.h +169 -0
  14. package/lib/clang/17/include/amxfp16intrin.h +58 -0
  15. package/lib/clang/{15.0.2 → 17}/include/amxintrin.h +32 -0
  16. package/lib/clang/{15.0.2 → 17}/include/arm_acle.h +86 -81
  17. package/lib/clang/{15.0.2 → 17}/include/arm_fp16.h +1 -1
  18. package/lib/clang/{15.0.2 → 17}/include/arm_neon.h +26534 -26541
  19. package/lib/clang/{15.0.2 → 17}/include/arm_neon_sve_bridge.h +0 -2
  20. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +642 -0
  21. package/lib/clang/{15.0.2 → 17}/include/arm_sve.h +7852 -7949
  22. package/lib/clang/17/include/avx2intrin.h +5263 -0
  23. package/lib/clang/{15.0.2 → 17}/include/avx512bf16intrin.h +18 -15
  24. package/lib/clang/{15.0.2 → 17}/include/avx512fintrin.h +19 -9
  25. package/lib/clang/{15.0.2 → 17}/include/avx512fp16intrin.h +18 -17
  26. package/lib/clang/{15.0.2 → 17}/include/avx512ifmavlintrin.h +13 -27
  27. package/lib/clang/{15.0.2 → 17}/include/avx512vlbf16intrin.h +31 -38
  28. package/lib/clang/{15.0.2 → 17}/include/avx512vlbwintrin.h +352 -0
  29. package/lib/clang/{15.0.2 → 17}/include/avx512vlfp16intrin.h +3 -0
  30. package/lib/clang/17/include/avxifmaintrin.h +177 -0
  31. package/lib/clang/{15.0.2 → 17}/include/avxintrin.h +32 -9
  32. package/lib/clang/17/include/avxneconvertintrin.h +484 -0
  33. package/lib/clang/17/include/avxvnniint16intrin.h +473 -0
  34. package/lib/clang/17/include/avxvnniint8intrin.h +471 -0
  35. package/lib/clang/17/include/bmi2intrin.h +255 -0
  36. package/lib/clang/{15.0.2 → 17}/include/clflushoptintrin.h +9 -0
  37. package/lib/clang/{15.0.2 → 17}/include/clzerointrin.h +7 -5
  38. package/lib/clang/17/include/cmpccxaddintrin.h +70 -0
  39. package/lib/clang/{15.0.2 → 17}/include/cpuid.h +11 -1
  40. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.h +9 -0
  41. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  42. package/lib/clang/17/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  43. package/lib/clang/17/include/cuda_wrappers/cmath +90 -0
  44. package/lib/clang/{15.0.2 → 17}/include/emmintrin.h +11 -1
  45. package/lib/clang/{15.0.2 → 17}/include/float.h +17 -10
  46. package/lib/clang/17/include/fmaintrin.h +780 -0
  47. package/lib/clang/{15.0.2 → 17}/include/gfniintrin.h +7 -5
  48. package/lib/clang/{15.0.2 → 17}/include/hlsl/hlsl_basic_types.h +3 -0
  49. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +480 -0
  50. package/lib/clang/{15.0.2 → 17}/include/immintrin.h +151 -11
  51. package/lib/clang/17/include/larchintrin.h +234 -0
  52. package/lib/clang/{15.0.2 → 17}/include/limits.h +8 -3
  53. package/lib/clang/17/include/llvm_libc_wrappers/ctype.h +85 -0
  54. package/lib/clang/17/include/llvm_libc_wrappers/inttypes.h +34 -0
  55. package/lib/clang/17/include/llvm_libc_wrappers/stdio.h +34 -0
  56. package/lib/clang/17/include/llvm_libc_wrappers/stdlib.h +42 -0
  57. package/lib/clang/17/include/llvm_libc_wrappers/string.h +37 -0
  58. package/lib/clang/17/include/mwaitxintrin.h +62 -0
  59. package/lib/clang/{15.0.2 → 17}/include/opencl-c-base.h +22 -0
  60. package/lib/clang/{15.0.2 → 17}/include/opencl-c.h +175 -145
  61. package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  62. package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/new +1 -1
  63. package/lib/clang/{15.0.2 → 17}/include/pmmintrin.h +12 -6
  64. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/emmintrin.h +4 -3
  65. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/mm_malloc.h +1 -1
  66. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/mmintrin.h +2 -2
  67. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/pmmintrin.h +2 -2
  68. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/smmintrin.h +4 -4
  69. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/tmmintrin.h +2 -2
  70. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/xmmintrin.h +2 -2
  71. package/lib/clang/17/include/prfchiintrin.h +61 -0
  72. package/lib/clang/17/include/raointintrin.h +203 -0
  73. package/lib/clang/17/include/rdseedintrin.h +105 -0
  74. package/lib/clang/17/include/riscv_ntlh.h +28 -0
  75. package/lib/clang/17/include/riscv_vector.h +400 -0
  76. package/lib/clang/17/include/sha512intrin.h +200 -0
  77. package/lib/clang/17/include/shaintrin.h +189 -0
  78. package/lib/clang/17/include/sifive_vector.h +16 -0
  79. package/lib/clang/17/include/sm3intrin.h +238 -0
  80. package/lib/clang/17/include/sm4intrin.h +269 -0
  81. package/lib/clang/{15.0.2 → 17}/include/smmintrin.h +2 -2
  82. package/lib/clang/{15.0.2 → 17}/include/stdalign.h +5 -0
  83. package/lib/clang/{15.0.2 → 17}/include/stdarg.h +23 -7
  84. package/lib/clang/{15.0.2 → 17}/include/stdatomic.h +14 -4
  85. package/lib/clang/{15.0.2 → 17}/include/stdbool.h +2 -2
  86. package/lib/clang/{15.0.2 → 17}/include/stddef.h +13 -1
  87. package/lib/clang/{15.0.2 → 17}/include/stdint.h +158 -40
  88. package/lib/clang/{15.0.2 → 17}/include/stdnoreturn.h +1 -1
  89. package/lib/clang/{15.0.2 → 17}/include/unwind.h +2 -1
  90. package/lib/clang/{15.0.2 → 17}/include/velintrin.h +1 -1
  91. package/lib/clang/{15.0.2 → 17}/include/wasm_simd128.h +132 -12
  92. package/lib/clang/{15.0.2 → 17}/include/x86gprintrin.h +19 -7
  93. package/lib/clang/{15.0.2 → 17}/include/xmmintrin.h +1 -2
  94. package/lib/clang/17/include/xsavecintrin.h +84 -0
  95. package/package.json +6 -6
  96. package/lib/clang/15.0.2/include/adxintrin.h +0 -72
  97. package/lib/clang/15.0.2/include/avx2intrin.h +0 -1148
  98. package/lib/clang/15.0.2/include/bmi2intrin.h +0 -81
  99. package/lib/clang/15.0.2/include/fmaintrin.h +0 -216
  100. package/lib/clang/15.0.2/include/hlsl/hlsl_intrinsics.h +0 -15
  101. package/lib/clang/15.0.2/include/mwaitxintrin.h +0 -33
  102. package/lib/clang/15.0.2/include/rdseedintrin.h +0 -42
  103. package/lib/clang/15.0.2/include/riscv_vector.h +0 -202
  104. package/lib/clang/15.0.2/include/shaintrin.h +0 -61
  105. package/lib/clang/15.0.2/include/xsavecintrin.h +0 -34
  106. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_builtin_vars.h +0 -0
  107. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_cmath.h +0 -0
  108. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_complex_builtins.h +0 -0
  109. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_device_functions.h +0 -0
  110. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_libdevice_declares.h +0 -0
  111. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_math_forward_declares.h +0 -0
  112. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_runtime_wrapper.h +0 -0
  113. /package/lib/clang/{15.0.2 → 17}/include/__stddef_max_align_t.h +0 -0
  114. /package/lib/clang/{15.0.2 → 17}/include/__wmmintrin_aes.h +0 -0
  115. /package/lib/clang/{15.0.2 → 17}/include/__wmmintrin_pclmul.h +0 -0
  116. /package/lib/clang/{15.0.2 → 17}/include/ammintrin.h +0 -0
  117. /package/lib/clang/{15.0.2 → 17}/include/arm64intr.h +0 -0
  118. /package/lib/clang/{15.0.2 → 17}/include/arm_bf16.h +0 -0
  119. /package/lib/clang/{15.0.2 → 17}/include/arm_cde.h +0 -0
  120. /package/lib/clang/{15.0.2 → 17}/include/arm_cmse.h +0 -0
  121. /package/lib/clang/{15.0.2 → 17}/include/arm_mve.h +0 -0
  122. /package/lib/clang/{15.0.2 → 17}/include/armintr.h +0 -0
  123. /package/lib/clang/{15.0.2 → 17}/include/avx512bitalgintrin.h +0 -0
  124. /package/lib/clang/{15.0.2 → 17}/include/avx512bwintrin.h +0 -0
  125. /package/lib/clang/{15.0.2 → 17}/include/avx512cdintrin.h +0 -0
  126. /package/lib/clang/{15.0.2 → 17}/include/avx512dqintrin.h +0 -0
  127. /package/lib/clang/{15.0.2 → 17}/include/avx512erintrin.h +0 -0
  128. /package/lib/clang/{15.0.2 → 17}/include/avx512ifmaintrin.h +0 -0
  129. /package/lib/clang/{15.0.2 → 17}/include/avx512pfintrin.h +0 -0
  130. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmi2intrin.h +0 -0
  131. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmiintrin.h +0 -0
  132. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmivlintrin.h +0 -0
  133. /package/lib/clang/{15.0.2 → 17}/include/avx512vlbitalgintrin.h +0 -0
  134. /package/lib/clang/{15.0.2 → 17}/include/avx512vlcdintrin.h +0 -0
  135. /package/lib/clang/{15.0.2 → 17}/include/avx512vldqintrin.h +0 -0
  136. /package/lib/clang/{15.0.2 → 17}/include/avx512vlintrin.h +0 -0
  137. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvbmi2intrin.h +0 -0
  138. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvnniintrin.h +0 -0
  139. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvp2intersectintrin.h +0 -0
  140. /package/lib/clang/{15.0.2 → 17}/include/avx512vnniintrin.h +0 -0
  141. /package/lib/clang/{15.0.2 → 17}/include/avx512vp2intersectintrin.h +0 -0
  142. /package/lib/clang/{15.0.2 → 17}/include/avx512vpopcntdqintrin.h +0 -0
  143. /package/lib/clang/{15.0.2 → 17}/include/avx512vpopcntdqvlintrin.h +0 -0
  144. /package/lib/clang/{15.0.2 → 17}/include/avxvnniintrin.h +0 -0
  145. /package/lib/clang/{15.0.2 → 17}/include/bmiintrin.h +0 -0
  146. /package/lib/clang/{15.0.2 → 17}/include/builtins.h +0 -0
  147. /package/lib/clang/{15.0.2 → 17}/include/cet.h +0 -0
  148. /package/lib/clang/{15.0.2 → 17}/include/cetintrin.h +0 -0
  149. /package/lib/clang/{15.0.2 → 17}/include/cldemoteintrin.h +0 -0
  150. /package/lib/clang/{15.0.2 → 17}/include/clwbintrin.h +0 -0
  151. /package/lib/clang/{15.0.2 → 17}/include/crc32intrin.h +0 -0
  152. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/algorithm +0 -0
  153. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/complex +0 -0
  154. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/new +0 -0
  155. /package/lib/clang/{15.0.2 → 17}/include/enqcmdintrin.h +0 -0
  156. /package/lib/clang/{15.0.2 → 17}/include/f16cintrin.h +0 -0
  157. /package/lib/clang/{15.0.2 → 17}/include/fma4intrin.h +0 -0
  158. /package/lib/clang/{15.0.2 → 17}/include/fxsrintrin.h +0 -0
  159. /package/lib/clang/{15.0.2 → 17}/include/hexagon_circ_brev_intrinsics.h +0 -0
  160. /package/lib/clang/{15.0.2 → 17}/include/hexagon_protos.h +0 -0
  161. /package/lib/clang/{15.0.2 → 17}/include/hexagon_types.h +0 -0
  162. /package/lib/clang/{15.0.2 → 17}/include/hlsl.h +0 -0
  163. /package/lib/clang/{15.0.2 → 17}/include/hresetintrin.h +0 -0
  164. /package/lib/clang/{15.0.2 → 17}/include/htmintrin.h +0 -0
  165. /package/lib/clang/{15.0.2 → 17}/include/htmxlintrin.h +0 -0
  166. /package/lib/clang/{15.0.2 → 17}/include/hvx_hexagon_protos.h +0 -0
  167. /package/lib/clang/{15.0.2 → 17}/include/ia32intrin.h +0 -0
  168. /package/lib/clang/{15.0.2 → 17}/include/intrin.h +0 -0
  169. /package/lib/clang/{15.0.2 → 17}/include/inttypes.h +0 -0
  170. /package/lib/clang/{15.0.2 → 17}/include/invpcidintrin.h +0 -0
  171. /package/lib/clang/{15.0.2 → 17}/include/iso646.h +0 -0
  172. /package/lib/clang/{15.0.2 → 17}/include/keylockerintrin.h +0 -0
  173. /package/lib/clang/{15.0.2 → 17}/include/lwpintrin.h +0 -0
  174. /package/lib/clang/{15.0.2 → 17}/include/lzcntintrin.h +0 -0
  175. /package/lib/clang/{15.0.2 → 17}/include/mm3dnow.h +0 -0
  176. /package/lib/clang/{15.0.2 → 17}/include/mm_malloc.h +0 -0
  177. /package/lib/clang/{15.0.2 → 17}/include/mmintrin.h +0 -0
  178. /package/lib/clang/{15.0.2 → 17}/include/module.modulemap +0 -0
  179. /package/lib/clang/{15.0.2 → 17}/include/movdirintrin.h +0 -0
  180. /package/lib/clang/{15.0.2 → 17}/include/msa.h +0 -0
  181. /package/lib/clang/{15.0.2 → 17}/include/nmmintrin.h +0 -0
  182. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/cmath +0 -0
  183. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex +0 -0
  184. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex.h +0 -0
  185. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex_cmath.h +0 -0
  186. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/math.h +0 -0
  187. /package/lib/clang/{15.0.2 → 17}/include/pconfigintrin.h +0 -0
  188. /package/lib/clang/{15.0.2 → 17}/include/pkuintrin.h +0 -0
  189. /package/lib/clang/{15.0.2 → 17}/include/popcntintrin.h +0 -0
  190. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/bmi2intrin.h +0 -0
  191. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/bmiintrin.h +0 -0
  192. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/immintrin.h +0 -0
  193. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/x86gprintrin.h +0 -0
  194. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/x86intrin.h +0 -0
  195. /package/lib/clang/{15.0.2 → 17}/include/prfchwintrin.h +0 -0
  196. /package/lib/clang/{15.0.2 → 17}/include/ptwriteintrin.h +0 -0
  197. /package/lib/clang/{15.0.2 → 17}/include/rdpruintrin.h +0 -0
  198. /package/lib/clang/{15.0.2 → 17}/include/rtmintrin.h +0 -0
  199. /package/lib/clang/{15.0.2 → 17}/include/s390intrin.h +0 -0
  200. /package/lib/clang/{15.0.2 → 17}/include/serializeintrin.h +0 -0
  201. /package/lib/clang/{15.0.2 → 17}/include/sgxintrin.h +0 -0
  202. /package/lib/clang/{15.0.2 → 17}/include/tbmintrin.h +0 -0
  203. /package/lib/clang/{15.0.2 → 17}/include/tgmath.h +0 -0
  204. /package/lib/clang/{15.0.2 → 17}/include/tmmintrin.h +0 -0
  205. /package/lib/clang/{15.0.2 → 17}/include/tsxldtrkintrin.h +0 -0
  206. /package/lib/clang/{15.0.2 → 17}/include/uintrintrin.h +0 -0
  207. /package/lib/clang/{15.0.2 → 17}/include/vadefs.h +0 -0
  208. /package/lib/clang/{15.0.2 → 17}/include/vaesintrin.h +0 -0
  209. /package/lib/clang/{15.0.2 → 17}/include/varargs.h +0 -0
  210. /package/lib/clang/{15.0.2 → 17}/include/vecintrin.h +0 -0
  211. /package/lib/clang/{15.0.2 → 17}/include/velintrin_approx.h +0 -0
  212. /package/lib/clang/{15.0.2 → 17}/include/velintrin_gen.h +0 -0
  213. /package/lib/clang/{15.0.2 → 17}/include/vpclmulqdqintrin.h +0 -0
  214. /package/lib/clang/{15.0.2 → 17}/include/waitpkgintrin.h +0 -0
  215. /package/lib/clang/{15.0.2 → 17}/include/wbnoinvdintrin.h +0 -0
  216. /package/lib/clang/{15.0.2 → 17}/include/wmmintrin.h +0 -0
  217. /package/lib/clang/{15.0.2 → 17}/include/x86intrin.h +0 -0
  218. /package/lib/clang/{15.0.2 → 17}/include/xopintrin.h +0 -0
  219. /package/lib/clang/{15.0.2 → 17}/include/xsaveintrin.h +0 -0
  220. /package/lib/clang/{15.0.2 → 17}/include/xsaveoptintrin.h +0 -0
  221. /package/lib/clang/{15.0.2 → 17}/include/xsavesintrin.h +0 -0
  222. /package/lib/clang/{15.0.2 → 17}/include/xtestintrin.h +0 -0
@@ -0,0 +1,169 @@
1
+ /*===--------- amxcomplexintrin.h - AMXCOMPLEX 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 <amxcomplexintrin.h> directly; include <immintrin.h> instead."
12
+ #endif // __IMMINTRIN_H
13
+
14
+ #ifndef __AMX_COMPLEXINTRIN_H
15
+ #define __AMX_COMPLEXINTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ #define __DEFAULT_FN_ATTRS_COMPLEX \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-complex")))
20
+
21
+ /// Perform matrix multiplication of two tiles containing complex elements and
22
+ /// accumulate the results into a packed single precision tile. Each dword
23
+ /// element in input tiles \a a and \a b is interpreted as a complex number
24
+ /// with FP16 real part and FP16 imaginary part.
25
+ /// Calculates the imaginary part of the result. For each possible combination
26
+ /// of (row of \a a, column of \a b), it performs a set of multiplication
27
+ /// and accumulations on all corresponding complex numbers (one from \a a
28
+ /// and one from \a b). The imaginary part of the \a a element is multiplied
29
+ /// with the real part of the corresponding \a b element, and the real part
30
+ /// of the \a a element is multiplied with the imaginary part of the
31
+ /// corresponding \a b elements. The two accumulated results are added, and
32
+ /// then accumulated into the corresponding row and column of \a dst.
33
+ ///
34
+ /// \headerfile <x86intrin.h>
35
+ ///
36
+ /// \code
37
+ /// void _tile_cmmimfp16ps(__tile dst, __tile a, __tile b);
38
+ /// \endcode
39
+ ///
40
+ /// \code{.operation}
41
+ /// FOR m := 0 TO dst.rows - 1
42
+ /// tmp := dst.row[m]
43
+ /// FOR k := 0 TO (a.colsb / 4) - 1
44
+ /// FOR n := 0 TO (dst.colsb / 4) - 1
45
+ /// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * FP32(b.row[k].fp16[2*n+1])
46
+ /// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+1]) * FP32(b.row[k].fp16[2*n+0])
47
+ /// ENDFOR
48
+ /// ENDFOR
49
+ /// write_row_and_zero(dst, m, tmp, dst.colsb)
50
+ /// ENDFOR
51
+ /// zero_upper_rows(dst, dst.rows)
52
+ /// zero_tileconfig_start()
53
+ /// \endcode
54
+ ///
55
+ /// This intrinsic corresponds to the \c TCMMIMFP16PS instruction.
56
+ ///
57
+ /// \param dst
58
+ /// The destination tile. Max size is 1024 Bytes.
59
+ /// \param a
60
+ /// The 1st source tile. Max size is 1024 Bytes.
61
+ /// \param b
62
+ /// The 2nd source tile. Max size is 1024 Bytes.
63
+ #define _tile_cmmimfp16ps(dst, a, b) __builtin_ia32_tcmmimfp16ps(dst, a, b)
64
+
65
+ /// Perform matrix multiplication of two tiles containing complex elements and
66
+ /// accumulate the results into a packed single precision tile. Each dword
67
+ /// element in input tiles \a a and \a b is interpreted as a complex number
68
+ /// with FP16 real part and FP16 imaginary part.
69
+ /// Calculates the real part of the result. For each possible combination
70
+ /// of (row of \a a, column of \a b), it performs a set of multiplication
71
+ /// and accumulations on all corresponding complex numbers (one from \a a
72
+ /// and one from \a b). The real part of the \a a element is multiplied
73
+ /// with the real part of the corresponding \a b element, and the negated
74
+ /// imaginary part of the \a a element is multiplied with the imaginary
75
+ /// part of the corresponding \a b elements. The two accumulated results
76
+ /// are added, and then accumulated into the corresponding row and column
77
+ /// of \a dst.
78
+ ///
79
+ /// \headerfile <x86intrin.h>
80
+ ///
81
+ /// \code
82
+ /// void _tile_cmmrlfp16ps(__tile dst, __tile a, __tile b);
83
+ /// \endcode
84
+ ///
85
+ /// \code{.operation}
86
+ /// FOR m := 0 TO dst.rows - 1
87
+ /// tmp := dst.row[m]
88
+ /// FOR k := 0 TO (a.colsb / 4) - 1
89
+ /// FOR n := 0 TO (dst.colsb / 4) - 1
90
+ /// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) * FP32(b.row[k].fp16[2*n+0])
91
+ /// tmp.fp32[n] += FP32(-a.row[m].fp16[2*k+1]) * FP32(b.row[k].fp16[2*n+1])
92
+ /// ENDFOR
93
+ /// ENDFOR
94
+ /// write_row_and_zero(dst, m, tmp, dst.colsb)
95
+ /// ENDFOR
96
+ /// zero_upper_rows(dst, dst.rows)
97
+ /// zero_tileconfig_start()
98
+ /// \endcode
99
+ ///
100
+ /// This intrinsic corresponds to the \c TCMMIMFP16PS instruction.
101
+ ///
102
+ /// \param dst
103
+ /// The destination tile. Max size is 1024 Bytes.
104
+ /// \param a
105
+ /// The 1st source tile. Max size is 1024 Bytes.
106
+ /// \param b
107
+ /// The 2nd source tile. Max size is 1024 Bytes.
108
+ #define _tile_cmmrlfp16ps(dst, a, b) __builtin_ia32_tcmmrlfp16ps(dst, a, b)
109
+
110
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_COMPLEX
111
+ _tile_cmmimfp16ps_internal(unsigned short m, unsigned short n, unsigned short k,
112
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
113
+ return __builtin_ia32_tcmmimfp16ps_internal(m, n, k, dst, src1, src2);
114
+ }
115
+
116
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_COMPLEX
117
+ _tile_cmmrlfp16ps_internal(unsigned short m, unsigned short n, unsigned short k,
118
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
119
+ return __builtin_ia32_tcmmrlfp16ps_internal(m, n, k, dst, src1, src2);
120
+ }
121
+
122
+ /// Perform matrix multiplication of two tiles containing complex elements and
123
+ /// accumulate the results into a packed single precision tile. Each dword
124
+ /// element in input tiles src0 and src1 is interpreted as a complex number with
125
+ /// FP16 real part and FP16 imaginary part.
126
+ /// This function calculates the imaginary part of the result.
127
+ ///
128
+ /// \headerfile <immintrin.h>
129
+ ///
130
+ /// This intrinsic corresponds to the <c> TCMMIMFP16PS </c> instruction.
131
+ ///
132
+ /// \param dst
133
+ /// The destination tile. Max size is 1024 Bytes.
134
+ /// \param src0
135
+ /// The 1st source tile. Max size is 1024 Bytes.
136
+ /// \param src1
137
+ /// The 2nd source tile. Max size is 1024 Bytes.
138
+ __DEFAULT_FN_ATTRS_COMPLEX
139
+ static void __tile_cmmimfp16ps(__tile1024i *dst, __tile1024i src0,
140
+ __tile1024i src1) {
141
+ dst->tile = _tile_cmmimfp16ps_internal(src0.row, src1.col, src0.col,
142
+ dst->tile, src0.tile, src1.tile);
143
+ }
144
+
145
+ /// Perform matrix multiplication of two tiles containing complex elements and
146
+ /// accumulate the results into a packed single precision tile. Each dword
147
+ /// element in input tiles src0 and src1 is interpreted as a complex number with
148
+ /// FP16 real part and FP16 imaginary part.
149
+ /// This function calculates the real part of the result.
150
+ ///
151
+ /// \headerfile <immintrin.h>
152
+ ///
153
+ /// This intrinsic corresponds to the <c> TCMMRLFP16PS </c> instruction.
154
+ ///
155
+ /// \param dst
156
+ /// The destination tile. Max size is 1024 Bytes.
157
+ /// \param src0
158
+ /// The 1st source tile. Max size is 1024 Bytes.
159
+ /// \param src1
160
+ /// The 2nd source tile. Max size is 1024 Bytes.
161
+ __DEFAULT_FN_ATTRS_COMPLEX
162
+ static void __tile_cmmrlfp16ps(__tile1024i *dst, __tile1024i src0,
163
+ __tile1024i src1) {
164
+ dst->tile = _tile_cmmrlfp16ps_internal(src0.row, src1.col, src0.col,
165
+ dst->tile, src0.tile, src1.tile);
166
+ }
167
+
168
+ #endif // __x86_64__
169
+ #endif // __AMX_COMPLEXINTRIN_H
@@ -0,0 +1,58 @@
1
+ /*===------------- amxfp16intrin.h - AMX_FP16 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 <amxfp16intrin.h> directly; use <immintrin.h> instead."
12
+ #endif /* __IMMINTRIN_H */
13
+
14
+ #ifndef __AMX_FP16INTRIN_H
15
+ #define __AMX_FP16INTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ /// Compute dot-product of FP16 (16-bit) floating-point pairs in tiles \a a
19
+ /// and \a b, accumulating the intermediate single-precision (32-bit)
20
+ /// floating-point elements with elements in \a dst, and store the 32-bit
21
+ /// result back to tile \a dst.
22
+ ///
23
+ /// \headerfile <immintrin.h>
24
+ ///
25
+ /// \code
26
+ /// void _tile_dpfp16ps (__tile dst, __tile a, __tile b)
27
+ /// \endcode
28
+ ///
29
+ /// \code{.operation}
30
+ /// FOR m := 0 TO dst.rows - 1
31
+ /// tmp := dst.row[m]
32
+ /// FOR k := 0 TO (a.colsb / 4) - 1
33
+ /// FOR n := 0 TO (dst.colsb / 4) - 1
34
+ /// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+0]) *
35
+ /// FP32(b.row[k].fp16[2*n+0])
36
+ /// tmp.fp32[n] += FP32(a.row[m].fp16[2*k+1]) *
37
+ /// FP32(b.row[k].fp16[2*n+1])
38
+ /// ENDFOR
39
+ /// ENDFOR
40
+ /// write_row_and_zero(dst, m, tmp, dst.colsb)
41
+ /// ENDFOR
42
+ /// zero_upper_rows(dst, dst.rows)
43
+ /// zero_tileconfig_start()
44
+ /// \endcode
45
+ ///
46
+ /// This intrinsic corresponds to the \c TDPFP16PS instruction.
47
+ ///
48
+ /// \param dst
49
+ /// The destination tile. Max size is 1024 Bytes.
50
+ /// \param a
51
+ /// The 1st source tile. Max size is 1024 Bytes.
52
+ /// \param b
53
+ /// The 2nd source tile. Max size is 1024 Bytes.
54
+ #define _tile_dpfp16ps(dst, a, b) \
55
+ __builtin_ia32_tdpfp16ps(dst, a, b)
56
+
57
+ #endif /* __x86_64__ */
58
+ #endif /* __AMX_FP16INTRIN_H */
@@ -22,6 +22,8 @@
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")))
25
27
 
26
28
  /// Load tile configuration from a 64-byte memory location specified by
27
29
  /// "mem_addr". The tile configuration includes the tile type palette, the
@@ -290,6 +292,13 @@ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
290
292
  return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
291
293
  }
292
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
+
293
302
  /// This struct pack the shape and tile data together for user. We suggest
294
303
  /// initializing the struct as early as possible, because compiler depends
295
304
  /// on the shape information to do configure. The constant value is preferred
@@ -484,9 +493,32 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
484
493
  src0.tile, src1.tile);
485
494
  }
486
495
 
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
+
487
518
  #undef __DEFAULT_FN_ATTRS_TILE
488
519
  #undef __DEFAULT_FN_ATTRS_INT8
489
520
  #undef __DEFAULT_FN_ATTRS_BF16
521
+ #undef __DEFAULT_FN_ATTRS_FP16
490
522
 
491
523
  #endif /* __x86_64__ */
492
524
  #endif /* __AMXINTRIN_H */