@cpp-linter/clang-tidy-linux-arm64 16.0.3 → 18.1.5

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 (250) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{16 → 18}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{16 → 18}/include/__clang_cuda_intrinsics.h +191 -0
  5. package/lib/clang/{16 → 18}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{16 → 18}/include/__clang_cuda_math.h +3 -3
  7. package/lib/clang/{16 → 18}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{16 → 18}/include/__clang_hip_cmath.h +1 -1
  9. package/lib/clang/{16 → 18}/include/__clang_hip_libdevice_declares.h +32 -30
  10. package/lib/clang/{16 → 18}/include/__clang_hip_math.h +244 -238
  11. package/lib/clang/{16 → 18}/include/__clang_hip_runtime_wrapper.h +44 -23
  12. package/lib/clang/18/include/__stdarg___gnuc_va_list.h +13 -0
  13. package/lib/clang/18/include/__stdarg___va_copy.h +12 -0
  14. package/lib/clang/18/include/__stdarg_va_arg.h +22 -0
  15. package/lib/clang/18/include/__stdarg_va_copy.h +12 -0
  16. package/lib/clang/18/include/__stdarg_va_list.h +13 -0
  17. package/lib/clang/{16 → 18}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/18/include/__stddef_null.h +29 -0
  19. package/lib/clang/18/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/18/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/18/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/18/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/18/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/18/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/18/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/18/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/18/include/adcintrin.h +160 -0
  28. package/lib/clang/18/include/adxintrin.h +102 -0
  29. package/lib/clang/{16 → 18}/include/altivec.h +167 -136
  30. package/lib/clang/{16 → 18}/include/ammintrin.h +4 -4
  31. package/lib/clang/18/include/amxcomplexintrin.h +169 -0
  32. package/lib/clang/{16 → 18}/include/arm_acle.h +124 -40
  33. package/lib/clang/{16 → 18}/include/arm_neon.h +249 -328
  34. package/lib/clang/18/include/arm_sme.h +2412 -0
  35. package/lib/clang/{16 → 18}/include/arm_sve.h +7454 -364
  36. package/lib/clang/18/include/arm_vector_types.h +345 -0
  37. package/lib/clang/18/include/avx2intrin.h +5284 -0
  38. package/lib/clang/{16 → 18}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{16 → 18}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{16 → 18}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{16 → 18}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{16 → 18}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{16 → 18}/include/avx512fintrin.h +24 -10
  44. package/lib/clang/{16 → 18}/include/avx512fp16intrin.h +18 -12
  45. package/lib/clang/{16 → 18}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{16 → 18}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{16 → 18}/include/avx512pfintrin.h +0 -5
  48. package/lib/clang/{16 → 18}/include/avx512vbmi2intrin.h +1 -1
  49. package/lib/clang/{16 → 18}/include/avx512vbmiintrin.h +3 -2
  50. package/lib/clang/{16 → 18}/include/avx512vbmivlintrin.h +8 -3
  51. package/lib/clang/{16 → 18}/include/avx512vlbf16intrin.h +8 -6
  52. package/lib/clang/{16 → 18}/include/avx512vlbitalgintrin.h +8 -2
  53. package/lib/clang/{16 → 18}/include/avx512vlbwintrin.h +8 -2
  54. package/lib/clang/{16 → 18}/include/avx512vlcdintrin.h +8 -3
  55. package/lib/clang/{16 → 18}/include/avx512vldqintrin.h +8 -2
  56. package/lib/clang/{16 → 18}/include/avx512vlfp16intrin.h +2 -2
  57. package/lib/clang/{16 → 18}/include/avx512vlintrin.h +8 -2
  58. package/lib/clang/{16 → 18}/include/avx512vlvbmi2intrin.h +8 -2
  59. package/lib/clang/{16 → 18}/include/avx512vlvnniintrin.h +8 -2
  60. package/lib/clang/{16 → 18}/include/avx512vlvp2intersectintrin.h +6 -4
  61. package/lib/clang/{16 → 18}/include/avx512vnniintrin.h +3 -2
  62. package/lib/clang/{16 → 18}/include/avx512vp2intersectintrin.h +3 -2
  63. package/lib/clang/{16 → 18}/include/avx512vpopcntdqintrin.h +3 -1
  64. package/lib/clang/{16 → 18}/include/avx512vpopcntdqvlintrin.h +6 -2
  65. package/lib/clang/{16 → 18}/include/avxintrin.h +29 -12
  66. package/lib/clang/18/include/avxvnniint16intrin.h +473 -0
  67. package/lib/clang/18/include/bmi2intrin.h +255 -0
  68. package/lib/clang/{16 → 18}/include/bmiintrin.h +231 -46
  69. package/lib/clang/{16 → 18}/include/clflushoptintrin.h +9 -0
  70. package/lib/clang/{16 → 18}/include/clzerointrin.h +7 -5
  71. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.h +9 -0
  72. package/lib/clang/18/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  73. package/lib/clang/18/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  74. package/lib/clang/{16 → 18}/include/emmintrin.h +10 -10
  75. package/lib/clang/18/include/fmaintrin.h +780 -0
  76. package/lib/clang/{16 → 18}/include/gfniintrin.h +23 -6
  77. package/lib/clang/18/include/hlsl/hlsl_intrinsics.h +624 -0
  78. package/lib/clang/18/include/ia32intrin.h +863 -0
  79. package/lib/clang/{16 → 18}/include/immintrin.h +182 -11
  80. package/lib/clang/{16 → 18}/include/intrin.h +16 -0
  81. package/lib/clang/{16 → 18}/include/larchintrin.h +13 -1
  82. package/lib/clang/18/include/lasxintrin.h +3884 -0
  83. package/lib/clang/{16 → 18}/include/limits.h +7 -5
  84. package/lib/clang/18/include/llvm_libc_wrappers/assert.h +34 -0
  85. package/lib/clang/18/include/llvm_libc_wrappers/ctype.h +102 -0
  86. package/lib/clang/18/include/llvm_libc_wrappers/inttypes.h +34 -0
  87. package/lib/clang/18/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/18/include/llvm_libc_wrappers/stdlib.h +45 -0
  89. package/lib/clang/18/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/18/include/llvm_libc_wrappers/time.h +34 -0
  91. package/lib/clang/18/include/lsxintrin.h +3750 -0
  92. package/lib/clang/{16 → 18}/include/mmintrin.h +7 -5
  93. package/lib/clang/{16 → 18}/include/module.modulemap +155 -2
  94. package/lib/clang/18/include/mwaitxintrin.h +62 -0
  95. package/lib/clang/{16 → 18}/include/opencl-c-base.h +8 -0
  96. package/lib/clang/{16 → 18}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  97. package/lib/clang/{16 → 18}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{16 → 18}/include/openmp_wrappers/new +1 -1
  99. package/lib/clang/{16 → 18}/include/pmmintrin.h +15 -8
  100. package/lib/clang/{16 → 18}/include/ppc_wrappers/emmintrin.h +2 -1
  101. package/lib/clang/18/include/ppc_wrappers/nmmintrin.h +26 -0
  102. package/lib/clang/{16 → 18}/include/ppc_wrappers/smmintrin.h +37 -17
  103. package/lib/clang/18/include/rdseedintrin.h +105 -0
  104. package/lib/clang/18/include/riscv_bitmanip.h +195 -0
  105. package/lib/clang/18/include/riscv_crypto.h +170 -0
  106. package/lib/clang/18/include/riscv_ntlh.h +26 -0
  107. package/lib/clang/18/include/riscv_vector.h +431 -0
  108. package/lib/clang/18/include/sha512intrin.h +200 -0
  109. package/lib/clang/18/include/shaintrin.h +189 -0
  110. package/lib/clang/18/include/sifive_vector.h +16 -0
  111. package/lib/clang/18/include/sm3intrin.h +238 -0
  112. package/lib/clang/18/include/sm4intrin.h +269 -0
  113. package/lib/clang/{16 → 18}/include/smmintrin.h +3 -3
  114. package/lib/clang/{16 → 18}/include/stdalign.h +3 -0
  115. package/lib/clang/18/include/stdarg.h +79 -0
  116. package/lib/clang/{16 → 18}/include/stdatomic.h +7 -2
  117. package/lib/clang/18/include/stdckdint.h +42 -0
  118. package/lib/clang/18/include/stddef.h +123 -0
  119. package/lib/clang/{16 → 18}/include/stdint.h +19 -48
  120. package/lib/clang/{16 → 18}/include/stdnoreturn.h +2 -2
  121. package/lib/clang/{16 → 18}/include/tmmintrin.h +7 -2
  122. package/lib/clang/18/include/usermsrintrin.h +51 -0
  123. package/lib/clang/{16 → 18}/include/vaesintrin.h +4 -2
  124. package/lib/clang/{16 → 18}/include/vecintrin.h +217 -199
  125. package/lib/clang/{16 → 18}/include/wasm_simd128.h +132 -12
  126. package/lib/clang/{16 → 18}/include/x86gprintrin.h +5 -0
  127. package/lib/clang/{16 → 18}/include/xmmintrin.h +9 -5
  128. package/lib/clang/18/include/xsavecintrin.h +84 -0
  129. package/package.json +6 -6
  130. package/lib/clang/16/include/adxintrin.h +0 -72
  131. package/lib/clang/16/include/avx2intrin.h +0 -1148
  132. package/lib/clang/16/include/bmi2intrin.h +0 -81
  133. package/lib/clang/16/include/fmaintrin.h +0 -216
  134. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +0 -223
  135. package/lib/clang/16/include/ia32intrin.h +0 -441
  136. package/lib/clang/16/include/mwaitxintrin.h +0 -33
  137. package/lib/clang/16/include/rdseedintrin.h +0 -42
  138. package/lib/clang/16/include/riscv_vector.h +0 -211
  139. package/lib/clang/16/include/shaintrin.h +0 -61
  140. package/lib/clang/16/include/stdarg.h +0 -51
  141. package/lib/clang/16/include/stddef.h +0 -128
  142. package/lib/clang/16/include/xsavecintrin.h +0 -34
  143. /package/lib/clang/{16 → 18}/include/__clang_cuda_builtin_vars.h +0 -0
  144. /package/lib/clang/{16 → 18}/include/__clang_cuda_cmath.h +0 -0
  145. /package/lib/clang/{16 → 18}/include/__clang_cuda_complex_builtins.h +0 -0
  146. /package/lib/clang/{16 → 18}/include/__clang_cuda_math_forward_declares.h +0 -0
  147. /package/lib/clang/{16 → 18}/include/__clang_cuda_texture_intrinsics.h +0 -0
  148. /package/lib/clang/{16 → 18}/include/__clang_hip_stdlib.h +0 -0
  149. /package/lib/clang/{16 → 18}/include/__wmmintrin_aes.h +0 -0
  150. /package/lib/clang/{16 → 18}/include/__wmmintrin_pclmul.h +0 -0
  151. /package/lib/clang/{16 → 18}/include/amxfp16intrin.h +0 -0
  152. /package/lib/clang/{16 → 18}/include/amxintrin.h +0 -0
  153. /package/lib/clang/{16 → 18}/include/arm64intr.h +0 -0
  154. /package/lib/clang/{16 → 18}/include/arm_bf16.h +0 -0
  155. /package/lib/clang/{16 → 18}/include/arm_cde.h +0 -0
  156. /package/lib/clang/{16 → 18}/include/arm_cmse.h +0 -0
  157. /package/lib/clang/{16 → 18}/include/arm_fp16.h +0 -0
  158. /package/lib/clang/{16 → 18}/include/arm_mve.h +0 -0
  159. /package/lib/clang/{16 → 18}/include/arm_neon_sve_bridge.h +0 -0
  160. /package/lib/clang/{16 → 18}/include/armintr.h +0 -0
  161. /package/lib/clang/{16 → 18}/include/avx512erintrin.h +0 -0
  162. /package/lib/clang/{16 → 18}/include/avxifmaintrin.h +0 -0
  163. /package/lib/clang/{16 → 18}/include/avxneconvertintrin.h +0 -0
  164. /package/lib/clang/{16 → 18}/include/avxvnniint8intrin.h +0 -0
  165. /package/lib/clang/{16 → 18}/include/avxvnniintrin.h +0 -0
  166. /package/lib/clang/{16 → 18}/include/builtins.h +0 -0
  167. /package/lib/clang/{16 → 18}/include/cet.h +0 -0
  168. /package/lib/clang/{16 → 18}/include/cetintrin.h +0 -0
  169. /package/lib/clang/{16 → 18}/include/cldemoteintrin.h +0 -0
  170. /package/lib/clang/{16 → 18}/include/clwbintrin.h +0 -0
  171. /package/lib/clang/{16 → 18}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{16 → 18}/include/cpuid.h +0 -0
  173. /package/lib/clang/{16 → 18}/include/crc32intrin.h +0 -0
  174. /package/lib/clang/{16 → 18}/include/cuda_wrappers/algorithm +0 -0
  175. /package/lib/clang/{16 → 18}/include/cuda_wrappers/cmath +0 -0
  176. /package/lib/clang/{16 → 18}/include/cuda_wrappers/complex +0 -0
  177. /package/lib/clang/{16 → 18}/include/cuda_wrappers/new +0 -0
  178. /package/lib/clang/{16 → 18}/include/enqcmdintrin.h +0 -0
  179. /package/lib/clang/{16 → 18}/include/f16cintrin.h +0 -0
  180. /package/lib/clang/{16 → 18}/include/float.h +0 -0
  181. /package/lib/clang/{16 → 18}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{16 → 18}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{16 → 18}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{16 → 18}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{16 → 18}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{16 → 18}/include/hlsl/hlsl_basic_types.h +0 -0
  187. /package/lib/clang/{16 → 18}/include/hlsl.h +0 -0
  188. /package/lib/clang/{16 → 18}/include/hresetintrin.h +0 -0
  189. /package/lib/clang/{16 → 18}/include/htmintrin.h +0 -0
  190. /package/lib/clang/{16 → 18}/include/htmxlintrin.h +0 -0
  191. /package/lib/clang/{16 → 18}/include/hvx_hexagon_protos.h +0 -0
  192. /package/lib/clang/{16 → 18}/include/inttypes.h +0 -0
  193. /package/lib/clang/{16 → 18}/include/invpcidintrin.h +0 -0
  194. /package/lib/clang/{16 → 18}/include/iso646.h +0 -0
  195. /package/lib/clang/{16 → 18}/include/keylockerintrin.h +0 -0
  196. /package/lib/clang/{16 → 18}/include/lwpintrin.h +0 -0
  197. /package/lib/clang/{16 → 18}/include/lzcntintrin.h +0 -0
  198. /package/lib/clang/{16 → 18}/include/mm3dnow.h +0 -0
  199. /package/lib/clang/{16 → 18}/include/mm_malloc.h +0 -0
  200. /package/lib/clang/{16 → 18}/include/movdirintrin.h +0 -0
  201. /package/lib/clang/{16 → 18}/include/msa.h +0 -0
  202. /package/lib/clang/{16 → 18}/include/nmmintrin.h +0 -0
  203. /package/lib/clang/{16 → 18}/include/opencl-c.h +0 -0
  204. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex +0 -0
  205. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex.h +0 -0
  206. /package/lib/clang/{16 → 18}/include/openmp_wrappers/complex_cmath.h +0 -0
  207. /package/lib/clang/{16 → 18}/include/openmp_wrappers/math.h +0 -0
  208. /package/lib/clang/{16 → 18}/include/pconfigintrin.h +0 -0
  209. /package/lib/clang/{16 → 18}/include/pkuintrin.h +0 -0
  210. /package/lib/clang/{16 → 18}/include/popcntintrin.h +0 -0
  211. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmi2intrin.h +0 -0
  212. /package/lib/clang/{16 → 18}/include/ppc_wrappers/bmiintrin.h +0 -0
  213. /package/lib/clang/{16 → 18}/include/ppc_wrappers/immintrin.h +0 -0
  214. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mm_malloc.h +0 -0
  215. /package/lib/clang/{16 → 18}/include/ppc_wrappers/mmintrin.h +0 -0
  216. /package/lib/clang/{16 → 18}/include/ppc_wrappers/pmmintrin.h +0 -0
  217. /package/lib/clang/{16 → 18}/include/ppc_wrappers/tmmintrin.h +0 -0
  218. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86gprintrin.h +0 -0
  219. /package/lib/clang/{16 → 18}/include/ppc_wrappers/x86intrin.h +0 -0
  220. /package/lib/clang/{16 → 18}/include/ppc_wrappers/xmmintrin.h +0 -0
  221. /package/lib/clang/{16 → 18}/include/prfchiintrin.h +0 -0
  222. /package/lib/clang/{16 → 18}/include/prfchwintrin.h +0 -0
  223. /package/lib/clang/{16 → 18}/include/ptwriteintrin.h +0 -0
  224. /package/lib/clang/{16 → 18}/include/raointintrin.h +0 -0
  225. /package/lib/clang/{16 → 18}/include/rdpruintrin.h +0 -0
  226. /package/lib/clang/{16 → 18}/include/rtmintrin.h +0 -0
  227. /package/lib/clang/{16 → 18}/include/s390intrin.h +0 -0
  228. /package/lib/clang/{16 → 18}/include/serializeintrin.h +0 -0
  229. /package/lib/clang/{16 → 18}/include/sgxintrin.h +0 -0
  230. /package/lib/clang/{16 → 18}/include/stdbool.h +0 -0
  231. /package/lib/clang/{16 → 18}/include/tbmintrin.h +0 -0
  232. /package/lib/clang/{16 → 18}/include/tgmath.h +0 -0
  233. /package/lib/clang/{16 → 18}/include/tsxldtrkintrin.h +0 -0
  234. /package/lib/clang/{16 → 18}/include/uintrintrin.h +0 -0
  235. /package/lib/clang/{16 → 18}/include/unwind.h +0 -0
  236. /package/lib/clang/{16 → 18}/include/vadefs.h +0 -0
  237. /package/lib/clang/{16 → 18}/include/varargs.h +0 -0
  238. /package/lib/clang/{16 → 18}/include/velintrin.h +0 -0
  239. /package/lib/clang/{16 → 18}/include/velintrin_approx.h +0 -0
  240. /package/lib/clang/{16 → 18}/include/velintrin_gen.h +0 -0
  241. /package/lib/clang/{16 → 18}/include/vpclmulqdqintrin.h +0 -0
  242. /package/lib/clang/{16 → 18}/include/waitpkgintrin.h +0 -0
  243. /package/lib/clang/{16 → 18}/include/wbnoinvdintrin.h +0 -0
  244. /package/lib/clang/{16 → 18}/include/wmmintrin.h +0 -0
  245. /package/lib/clang/{16 → 18}/include/x86intrin.h +0 -0
  246. /package/lib/clang/{16 → 18}/include/xopintrin.h +0 -0
  247. /package/lib/clang/{16 → 18}/include/xsaveintrin.h +0 -0
  248. /package/lib/clang/{16 → 18}/include/xsaveoptintrin.h +0 -0
  249. /package/lib/clang/{16 → 18}/include/xsavesintrin.h +0 -0
  250. /package/lib/clang/{16 → 18}/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
@@ -4,6 +4,13 @@
4
4
  * See https://llvm.org/LICENSE.txt for license information.
5
5
  * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
6
  *
7
+ * The Arm C Language Extensions specifications can be found in the following
8
+ * link: https://github.com/ARM-software/acle/releases
9
+ *
10
+ * The ACLE section numbers are subject to change. When consulting the
11
+ * specifications, it is recommended to search using section titles if
12
+ * the section numbers look outdated.
13
+ *
7
14
  *===-----------------------------------------------------------------------===
8
15
  */
9
16
 
@@ -20,8 +27,8 @@
20
27
  extern "C" {
21
28
  #endif
22
29
 
23
- /* 8 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
24
- /* 8.3 Memory barriers */
30
+ /* 7 SYNCHRONIZATION, BARRIER AND HINT INTRINSICS */
31
+ /* 7.3 Memory barriers */
25
32
  #if !__has_builtin(__dmb)
26
33
  #define __dmb(i) __builtin_arm_dmb(i)
27
34
  #endif
@@ -32,7 +39,7 @@ extern "C" {
32
39
  #define __isb(i) __builtin_arm_isb(i)
33
40
  #endif
34
41
 
35
- /* 8.4 Hints */
42
+ /* 7.4 Hints */
36
43
 
37
44
  #if !__has_builtin(__wfi)
38
45
  static __inline__ void __attribute__((__always_inline__, __nodebug__)) __wfi(void) {
@@ -68,7 +75,7 @@ static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(v
68
75
  #define __dbg(t) __builtin_arm_dbg(t)
69
76
  #endif
70
77
 
71
- /* 8.5 Swap */
78
+ /* 7.5 Swap */
72
79
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
73
80
  __swp(uint32_t __x, volatile uint32_t *__p) {
74
81
  uint32_t v;
@@ -78,8 +85,8 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
78
85
  return v;
79
86
  }
80
87
 
81
- /* 8.6 Memory prefetch intrinsics */
82
- /* 8.6.1 Data prefetch */
88
+ /* 7.6 Memory prefetch intrinsics */
89
+ /* 7.6.1 Data prefetch */
83
90
  #define __pld(addr) __pldx(0, 0, 0, addr)
84
91
 
85
92
  #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
@@ -90,7 +97,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
90
97
  __builtin_arm_prefetch(addr, access_kind, cache_level, retention_policy, 1)
91
98
  #endif
92
99
 
93
- /* 8.6.2 Instruction prefetch */
100
+ /* 7.6.2 Instruction prefetch */
94
101
  #define __pli(addr) __plix(0, 0, addr)
95
102
 
96
103
  #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
@@ -101,15 +108,15 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
101
108
  __builtin_arm_prefetch(addr, 0, cache_level, retention_policy, 0)
102
109
  #endif
103
110
 
104
- /* 8.7 NOP */
111
+ /* 7.7 NOP */
105
112
  #if !defined(_MSC_VER) || !defined(__aarch64__)
106
113
  static __inline__ void __attribute__((__always_inline__, __nodebug__)) __nop(void) {
107
114
  __builtin_arm_nop();
108
115
  }
109
116
  #endif
110
117
 
111
- /* 9 DATA-PROCESSING INTRINSICS */
112
- /* 9.2 Miscellaneous data-processing intrinsics */
118
+ /* 8 DATA-PROCESSING INTRINSICS */
119
+ /* 8.2 Miscellaneous data-processing intrinsics */
113
120
  /* ROR */
114
121
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
115
122
  __ror(uint32_t __x, uint32_t __y) {
@@ -138,28 +145,32 @@ __rorl(unsigned long __x, uint32_t __y) {
138
145
 
139
146
 
140
147
  /* CLZ */
141
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
148
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
142
149
  __clz(uint32_t __t) {
143
- return (uint32_t)__builtin_clz(__t);
150
+ return __builtin_arm_clz(__t);
144
151
  }
145
152
 
146
- static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
153
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
147
154
  __clzl(unsigned long __t) {
148
- return (unsigned long)__builtin_clzl(__t);
155
+ #if __SIZEOF_LONG__ == 4
156
+ return __builtin_arm_clz(__t);
157
+ #else
158
+ return __builtin_arm_clz64(__t);
159
+ #endif
149
160
  }
150
161
 
151
- static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
162
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
152
163
  __clzll(uint64_t __t) {
153
- return (uint64_t)__builtin_clzll(__t);
164
+ return __builtin_arm_clz64(__t);
154
165
  }
155
166
 
156
167
  /* CLS */
157
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
168
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
158
169
  __cls(uint32_t __t) {
159
170
  return __builtin_arm_cls(__t);
160
171
  }
161
172
 
162
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
173
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
163
174
  __clsl(unsigned long __t) {
164
175
  #if __SIZEOF_LONG__ == 4
165
176
  return __builtin_arm_cls(__t);
@@ -168,7 +179,7 @@ __clsl(unsigned long __t) {
168
179
  #endif
169
180
  }
170
181
 
171
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
182
+ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__))
172
183
  __clsll(uint64_t __t) {
173
184
  return __builtin_arm_cls64(__t);
174
185
  }
@@ -244,9 +255,7 @@ __rbitl(unsigned long __t) {
244
255
  #endif
245
256
  }
246
257
 
247
- /*
248
- * 9.3 16-bit multiplications
249
- */
258
+ /* 8.3 16-bit multiplications */
250
259
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
251
260
  static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
252
261
  __smulbb(int32_t __a, int32_t __b) {
@@ -275,18 +284,18 @@ __smulwt(int32_t __a, int32_t __b) {
275
284
  #endif
276
285
 
277
286
  /*
278
- * 9.4 Saturating intrinsics
287
+ * 8.4 Saturating intrinsics
279
288
  *
280
289
  * FIXME: Change guard to their corresponding __ARM_FEATURE flag when Q flag
281
290
  * intrinsics are implemented and the flag is enabled.
282
291
  */
283
- /* 9.4.1 Width-specified saturation intrinsics */
292
+ /* 8.4.1 Width-specified saturation intrinsics */
284
293
  #if defined(__ARM_FEATURE_SAT) && __ARM_FEATURE_SAT
285
294
  #define __ssat(x, y) __builtin_arm_ssat(x, y)
286
295
  #define __usat(x, y) __builtin_arm_usat(x, y)
287
296
  #endif
288
297
 
289
- /* 9.4.2 Saturating addition and subtraction intrinsics */
298
+ /* 8.4.2 Saturating addition and subtraction intrinsics */
290
299
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
291
300
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
292
301
  __qadd(int32_t __t, int32_t __v) {
@@ -304,7 +313,7 @@ __qdbl(int32_t __t) {
304
313
  }
305
314
  #endif
306
315
 
307
- /* 9.4.3 Accumultating multiplications */
316
+ /* 8.4.3 Accumultating multiplications */
308
317
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
309
318
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
310
319
  __smlabb(int32_t __a, int32_t __b, int32_t __c) {
@@ -333,13 +342,13 @@ __smlawt(int32_t __a, int32_t __b, int32_t __c) {
333
342
  #endif
334
343
 
335
344
 
336
- /* 9.5.4 Parallel 16-bit saturation */
345
+ /* 8.5.4 Parallel 16-bit saturation */
337
346
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
338
347
  #define __ssat16(x, y) __builtin_arm_ssat16(x, y)
339
348
  #define __usat16(x, y) __builtin_arm_usat16(x, y)
340
349
  #endif
341
350
 
342
- /* 9.5.5 Packing and unpacking */
351
+ /* 8.5.5 Packing and unpacking */
343
352
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
344
353
  typedef int32_t int8x4_t;
345
354
  typedef int32_t int16x2_t;
@@ -364,7 +373,7 @@ __uxtb16(int8x4_t __a) {
364
373
  }
365
374
  #endif
366
375
 
367
- /* 9.5.6 Parallel selection */
376
+ /* 8.5.6 Parallel selection */
368
377
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
369
378
  static __inline__ uint8x4_t __attribute__((__always_inline__, __nodebug__))
370
379
  __sel(uint8x4_t __a, uint8x4_t __b) {
@@ -372,7 +381,7 @@ __sel(uint8x4_t __a, uint8x4_t __b) {
372
381
  }
373
382
  #endif
374
383
 
375
- /* 9.5.7 Parallel 8-bit addition and subtraction */
384
+ /* 8.5.7 Parallel 8-bit addition and subtraction */
376
385
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
377
386
  static __inline__ int8x4_t __attribute__((__always_inline__, __nodebug__))
378
387
  __qadd8(int8x4_t __a, int8x4_t __b) {
@@ -424,7 +433,7 @@ __usub8(uint8x4_t __a, uint8x4_t __b) {
424
433
  }
425
434
  #endif
426
435
 
427
- /* 9.5.8 Sum of 8-bit absolute differences */
436
+ /* 8.5.8 Sum of 8-bit absolute differences */
428
437
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
429
438
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
430
439
  __usad8(uint8x4_t __a, uint8x4_t __b) {
@@ -436,7 +445,7 @@ __usada8(uint8x4_t __a, uint8x4_t __b, uint32_t __c) {
436
445
  }
437
446
  #endif
438
447
 
439
- /* 9.5.9 Parallel 16-bit addition and subtraction */
448
+ /* 8.5.9 Parallel 16-bit addition and subtraction */
440
449
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
441
450
  static __inline__ int16x2_t __attribute__((__always_inline__, __nodebug__))
442
451
  __qadd16(int16x2_t __a, int16x2_t __b) {
@@ -536,7 +545,7 @@ __usub16(uint16x2_t __a, uint16x2_t __b) {
536
545
  }
537
546
  #endif
538
547
 
539
- /* 9.5.10 Parallel 16-bit multiplications */
548
+ /* 8.5.10 Parallel 16-bit multiplications */
540
549
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
541
550
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
542
551
  __smlad(int16x2_t __a, int16x2_t __b, int32_t __c) {
@@ -588,7 +597,22 @@ __smusdx(int16x2_t __a, int16x2_t __b) {
588
597
  }
589
598
  #endif
590
599
 
591
- /* 9.7 CRC32 intrinsics */
600
+ /* 8.6 Floating-point data-processing intrinsics */
601
+ #if (defined(__ARM_FEATURE_DIRECTED_ROUNDING) && \
602
+ (__ARM_FEATURE_DIRECTED_ROUNDING)) && \
603
+ (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
604
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
605
+ __rintn(double __a) {
606
+ return __builtin_roundeven(__a);
607
+ }
608
+
609
+ static __inline__ float __attribute__((__always_inline__, __nodebug__))
610
+ __rintnf(float __a) {
611
+ return __builtin_roundevenf(__a);
612
+ }
613
+ #endif
614
+
615
+ /* 8.8 CRC32 intrinsics */
592
616
  #if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
593
617
  (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
594
618
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
@@ -632,6 +656,7 @@ __crc32cd(uint32_t __a, uint64_t __b) {
632
656
  }
633
657
  #endif
634
658
 
659
+ /* 8.6 Floating-point data-processing intrinsics */
635
660
  /* Armv8.3-A Javascript conversion intrinsic */
636
661
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
637
662
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("v8.3a")))
@@ -683,7 +708,7 @@ __rint64x(double __a) {
683
708
  }
684
709
  #endif
685
710
 
686
- /* Armv8.7-A load/store 64-byte intrinsics */
711
+ /* 8.9 Armv8.7-A load/store 64-byte intrinsics */
687
712
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
688
713
  typedef struct {
689
714
  uint64_t val[8];
@@ -709,7 +734,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
709
734
  }
710
735
  #endif
711
736
 
712
- /* 10.1 Special register intrinsics */
737
+ /* 11.1 Special register intrinsics */
713
738
  #define __arm_rsr(sysreg) __builtin_arm_rsr(sysreg)
714
739
  #define __arm_rsr64(sysreg) __builtin_arm_rsr64(sysreg)
715
740
  #define __arm_rsr128(sysreg) __builtin_arm_rsr128(sysreg)
@@ -723,7 +748,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
723
748
  #define __arm_wsrf(sysreg, v) __arm_wsr(sysreg, __builtin_bit_cast(uint32_t, v))
724
749
  #define __arm_wsrf64(sysreg, v) __arm_wsr64(sysreg, __builtin_bit_cast(uint64_t, v))
725
750
 
726
- /* Memory Tagging Extensions (MTE) Intrinsics */
751
+ /* 10.3 Memory Tagging Extensions (MTE) Intrinsics */
727
752
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
728
753
  #define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask)
729
754
  #define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset)
@@ -732,12 +757,71 @@ __arm_st64bv0(void *__addr, data512_t __value) {
732
757
  #define __arm_mte_set_tag(__ptr) __builtin_arm_stg(__ptr)
733
758
  #define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
734
759
 
735
- /* Memory Operations Intrinsics */
760
+ /* 18 Memory Operations Intrinsics */
736
761
  #define __arm_mops_memset_tag(__tagged_address, __value, __size) \
737
762
  __builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
738
763
  #endif
739
764
 
740
- /* Transactional Memory Extension (TME) Intrinsics */
765
+ /* 11.3 Coprocessor Intrinsics */
766
+ #if defined(__ARM_FEATURE_COPROC)
767
+
768
+ #if (__ARM_FEATURE_COPROC & 0x1)
769
+
770
+ #if (__ARM_ARCH < 8)
771
+ #define __arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2) \
772
+ __builtin_arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2)
773
+ #endif /* __ARM_ARCH < 8 */
774
+
775
+ #define __arm_ldc(coproc, CRd, p) __builtin_arm_ldc(coproc, CRd, p)
776
+ #define __arm_stc(coproc, CRd, p) __builtin_arm_stc(coproc, CRd, p)
777
+
778
+ #define __arm_mcr(coproc, opc1, value, CRn, CRm, opc2) \
779
+ __builtin_arm_mcr(coproc, opc1, value, CRn, CRm, opc2)
780
+ #define __arm_mrc(coproc, opc1, CRn, CRm, opc2) \
781
+ __builtin_arm_mrc(coproc, opc1, CRn, CRm, opc2)
782
+
783
+ #if (__ARM_ARCH != 4) && (__ARM_ARCH < 8)
784
+ #define __arm_ldcl(coproc, CRd, p) __builtin_arm_ldcl(coproc, CRd, p)
785
+ #define __arm_stcl(coproc, CRd, p) __builtin_arm_stcl(coproc, CRd, p)
786
+ #endif /* (__ARM_ARCH != 4) && (__ARM_ARCH != 8) */
787
+
788
+ #if (__ARM_ARCH_8M_MAIN__) || (__ARM_ARCH_8_1M_MAIN__)
789
+ #define __arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2) \
790
+ __builtin_arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2)
791
+ #define __arm_ldcl(coproc, CRd, p) __builtin_arm_ldcl(coproc, CRd, p)
792
+ #define __arm_stcl(coproc, CRd, p) __builtin_arm_stcl(coproc, CRd, p)
793
+ #endif /* ___ARM_ARCH_8M_MAIN__ */
794
+
795
+ #endif /* __ARM_FEATURE_COPROC & 0x1 */
796
+
797
+ #if (__ARM_FEATURE_COPROC & 0x2)
798
+ #define __arm_cdp2(coproc, opc1, CRd, CRn, CRm, opc2) \
799
+ __builtin_arm_cdp2(coproc, opc1, CRd, CRn, CRm, opc2)
800
+ #define __arm_ldc2(coproc, CRd, p) __builtin_arm_ldc2(coproc, CRd, p)
801
+ #define __arm_stc2(coproc, CRd, p) __builtin_arm_stc2(coproc, CRd, p)
802
+ #define __arm_ldc2l(coproc, CRd, p) __builtin_arm_ldc2l(coproc, CRd, p)
803
+ #define __arm_stc2l(coproc, CRd, p) __builtin_arm_stc2l(coproc, CRd, p)
804
+ #define __arm_mcr2(coproc, opc1, value, CRn, CRm, opc2) \
805
+ __builtin_arm_mcr2(coproc, opc1, value, CRn, CRm, opc2)
806
+ #define __arm_mrc2(coproc, opc1, CRn, CRm, opc2) \
807
+ __builtin_arm_mrc2(coproc, opc1, CRn, CRm, opc2)
808
+ #endif
809
+
810
+ #if (__ARM_FEATURE_COPROC & 0x4)
811
+ #define __arm_mcrr(coproc, opc1, value, CRm) \
812
+ __builtin_arm_mcrr(coproc, opc1, value, CRm)
813
+ #define __arm_mrrc(coproc, opc1, CRm) __builtin_arm_mrrc(coproc, opc1, CRm)
814
+ #endif
815
+
816
+ #if (__ARM_FEATURE_COPROC & 0x8)
817
+ #define __arm_mcrr2(coproc, opc1, value, CRm) \
818
+ __builtin_arm_mcrr2(coproc, opc1, value, CRm)
819
+ #define __arm_mrrc2(coproc, opc1, CRm) __builtin_arm_mrrc2(coproc, opc1, CRm)
820
+ #endif
821
+
822
+ #endif // __ARM_FEATURE_COPROC
823
+
824
+ /* 17 Transactional Memory Extension (TME) Intrinsics */
741
825
  #if defined(__ARM_FEATURE_TME) && __ARM_FEATURE_TME
742
826
 
743
827
  #define _TMFAILURE_REASON 0x00007fffu
@@ -759,7 +843,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
759
843
 
760
844
  #endif /* __ARM_FEATURE_TME */
761
845
 
762
- /* Armv8.5-A Random number generation intrinsics */
846
+ /* 8.7 Armv8.5-A Random number generation intrinsics */
763
847
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
764
848
  static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
765
849
  __rndr(uint64_t *__p) {