@cpp-linter/clang-tidy-darwin-arm64 17.0.6 → 19.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 (252) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{17 → 19}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{17 → 19}/include/__clang_cuda_intrinsics.h +1 -3
  5. package/lib/clang/{17 → 19}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{17 → 19}/include/__clang_cuda_math.h +2 -2
  7. package/lib/clang/{17 → 19}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{17 → 19}/include/__clang_hip_math.h +192 -171
  9. package/lib/clang/{17 → 19}/include/__clang_hip_runtime_wrapper.h +34 -26
  10. package/lib/clang/19/include/__stdarg___gnuc_va_list.h +13 -0
  11. package/lib/clang/19/include/__stdarg___va_copy.h +12 -0
  12. package/lib/clang/19/include/__stdarg_header_macro.h +12 -0
  13. package/lib/clang/19/include/__stdarg_va_arg.h +22 -0
  14. package/lib/clang/19/include/__stdarg_va_copy.h +12 -0
  15. package/lib/clang/19/include/__stdarg_va_list.h +13 -0
  16. package/lib/clang/19/include/__stddef_header_macro.h +12 -0
  17. package/lib/clang/{17 → 19}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/19/include/__stddef_null.h +29 -0
  19. package/lib/clang/19/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/19/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/19/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/19/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/19/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/19/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/19/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/19/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/{17/include/adxintrin.h → 19/include/adcintrin.h} +27 -94
  28. package/lib/clang/19/include/adxintrin.h +102 -0
  29. package/lib/clang/{17 → 19}/include/altivec.h +31 -12
  30. package/lib/clang/{17 → 19}/include/ammintrin.h +4 -4
  31. package/lib/clang/{17 → 19}/include/arm_acle.h +138 -32
  32. package/lib/clang/{17 → 19}/include/arm_fp16.h +1 -1
  33. package/lib/clang/{17 → 19}/include/arm_neon.h +43361 -43608
  34. package/lib/clang/19/include/arm_sme.h +2819 -0
  35. package/lib/clang/{17 → 19}/include/arm_sve.h +30202 -23615
  36. package/lib/clang/19/include/arm_vector_types.h +345 -0
  37. package/lib/clang/{17 → 19}/include/avx2intrin.h +24 -3
  38. package/lib/clang/{17 → 19}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{17 → 19}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{17 → 19}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{17 → 19}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{17 → 19}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{17 → 19}/include/avx512fintrin.h +7 -3
  44. package/lib/clang/{17 → 19}/include/avx512fp16intrin.h +44 -42
  45. package/lib/clang/{17 → 19}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{17 → 19}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{17 → 19}/include/avx512vbmi2intrin.h +1 -1
  48. package/lib/clang/{17 → 19}/include/avx512vbmiintrin.h +3 -2
  49. package/lib/clang/{17 → 19}/include/avx512vbmivlintrin.h +8 -3
  50. package/lib/clang/{17 → 19}/include/avx512vlbf16intrin.h +8 -6
  51. package/lib/clang/{17 → 19}/include/avx512vlbitalgintrin.h +8 -2
  52. package/lib/clang/{17 → 19}/include/avx512vlbwintrin.h +8 -2
  53. package/lib/clang/{17 → 19}/include/avx512vlcdintrin.h +8 -3
  54. package/lib/clang/{17 → 19}/include/avx512vldqintrin.h +8 -2
  55. package/lib/clang/{17 → 19}/include/avx512vlfp16intrin.h +2 -2
  56. package/lib/clang/{17 → 19}/include/avx512vlintrin.h +8 -2
  57. package/lib/clang/{17 → 19}/include/avx512vlvbmi2intrin.h +8 -2
  58. package/lib/clang/{17 → 19}/include/avx512vlvnniintrin.h +8 -2
  59. package/lib/clang/{17 → 19}/include/avx512vlvp2intersectintrin.h +6 -4
  60. package/lib/clang/{17 → 19}/include/avx512vnniintrin.h +3 -2
  61. package/lib/clang/{17 → 19}/include/avx512vp2intersectintrin.h +3 -2
  62. package/lib/clang/{17 → 19}/include/avx512vpopcntdqintrin.h +3 -1
  63. package/lib/clang/{17 → 19}/include/avx512vpopcntdqvlintrin.h +6 -2
  64. package/lib/clang/{17 → 19}/include/avxintrin.h +67 -49
  65. package/lib/clang/{17 → 19}/include/bmiintrin.h +233 -50
  66. package/lib/clang/{17 → 19}/include/builtins.h +3 -0
  67. package/lib/clang/{17 → 19}/include/cpuid.h +23 -3
  68. package/lib/clang/{17 → 19}/include/cuda_wrappers/algorithm +1 -1
  69. package/lib/clang/{17 → 19}/include/emmintrin.h +311 -180
  70. package/lib/clang/{17 → 19}/include/float.h +28 -0
  71. package/lib/clang/{17 → 19}/include/fmaintrin.h +32 -16
  72. package/lib/clang/{17 → 19}/include/gfniintrin.h +23 -6
  73. package/lib/clang/{17 → 19}/include/hlsl/hlsl_basic_types.h +10 -3
  74. package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +1697 -0
  75. package/lib/clang/19/include/ia32intrin.h +863 -0
  76. package/lib/clang/{17 → 19}/include/immintrin.h +149 -160
  77. package/lib/clang/{17 → 19}/include/intrin.h +61 -221
  78. package/lib/clang/19/include/intrin0.h +247 -0
  79. package/lib/clang/{17 → 19}/include/inttypes.h +4 -0
  80. package/lib/clang/{17 → 19}/include/iso646.h +4 -0
  81. package/lib/clang/{17 → 19}/include/keylockerintrin.h +5 -8
  82. package/lib/clang/{17 → 19}/include/larchintrin.h +13 -1
  83. package/lib/clang/19/include/lasxintrin.h +3884 -0
  84. package/lib/clang/{17 → 19}/include/limits.h +7 -4
  85. package/lib/clang/{17/include/llvm_libc_wrappers/stdio.h → 19/include/llvm_libc_wrappers/assert.h} +7 -7
  86. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/ctype.h +17 -0
  87. package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/stdlib.h +4 -1
  89. package/lib/clang/19/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/{17/include/llvm_libc_wrappers/string.h → 19/include/llvm_libc_wrappers/time.h} +9 -12
  91. package/lib/clang/19/include/lsxintrin.h +3750 -0
  92. package/lib/clang/19/include/mm3dnow.h +22 -0
  93. package/lib/clang/{17 → 19}/include/mmintrin.h +83 -89
  94. package/lib/clang/19/include/module.modulemap +330 -0
  95. package/lib/clang/{17 → 19}/include/opencl-c-base.h +9 -0
  96. package/lib/clang/{17 → 19}/include/opencl-c.h +15 -0
  97. package/lib/clang/{17 → 19}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{17 → 19}/include/pmmintrin.h +3 -2
  99. package/lib/clang/19/include/ppc_wrappers/nmmintrin.h +26 -0
  100. package/lib/clang/{17 → 19}/include/ppc_wrappers/smmintrin.h +35 -15
  101. package/lib/clang/{17 → 19}/include/prfchwintrin.h +10 -8
  102. package/lib/clang/19/include/ptrauth.h +330 -0
  103. package/lib/clang/19/include/riscv_bitmanip.h +195 -0
  104. package/lib/clang/19/include/riscv_crypto.h +170 -0
  105. package/lib/clang/{17 → 19}/include/riscv_ntlh.h +3 -5
  106. package/lib/clang/{17 → 19}/include/riscv_vector.h +31 -4
  107. package/lib/clang/19/include/sifive_vector.h +118 -0
  108. package/lib/clang/{17 → 19}/include/smmintrin.h +15 -15
  109. package/lib/clang/{17 → 19}/include/stdalign.h +6 -3
  110. package/lib/clang/19/include/stdarg.h +75 -0
  111. package/lib/clang/{17 → 19}/include/stdatomic.h +14 -6
  112. package/lib/clang/{17 → 19}/include/stdbool.h +5 -0
  113. package/lib/clang/19/include/stdckdint.h +42 -0
  114. package/lib/clang/19/include/stddef.h +139 -0
  115. package/lib/clang/{17 → 19}/include/stdint.h +24 -48
  116. package/lib/clang/{17 → 19}/include/stdnoreturn.h +8 -2
  117. package/lib/clang/{17 → 19}/include/tmmintrin.h +27 -18
  118. package/lib/clang/19/include/usermsrintrin.h +51 -0
  119. package/lib/clang/{17 → 19}/include/vaesintrin.h +4 -2
  120. package/lib/clang/{17 → 19}/include/varargs.h +5 -1
  121. package/lib/clang/{17 → 19}/include/vecintrin.h +217 -199
  122. package/lib/clang/{17 → 19}/include/x86gprintrin.h +10 -12
  123. package/lib/clang/19/include/x86intrin.h +53 -0
  124. package/lib/clang/{17 → 19}/include/xmmintrin.h +294 -104
  125. package/lib/clang/19/include/yvals_core.h +25 -0
  126. package/lib/clang/19/include/zos_wrappers/builtins.h +18 -0
  127. package/package.json +6 -6
  128. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +0 -642
  129. package/lib/clang/17/include/avx512erintrin.h +0 -271
  130. package/lib/clang/17/include/avx512pfintrin.h +0 -97
  131. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +0 -480
  132. package/lib/clang/17/include/ia32intrin.h +0 -441
  133. package/lib/clang/17/include/mm3dnow.h +0 -157
  134. package/lib/clang/17/include/module.modulemap +0 -164
  135. package/lib/clang/17/include/sifive_vector.h +0 -16
  136. package/lib/clang/17/include/stdarg.h +0 -51
  137. package/lib/clang/17/include/stddef.h +0 -133
  138. package/lib/clang/17/include/x86intrin.h +0 -67
  139. /package/lib/clang/{17 → 19}/include/__clang_cuda_builtin_vars.h +0 -0
  140. /package/lib/clang/{17 → 19}/include/__clang_cuda_cmath.h +0 -0
  141. /package/lib/clang/{17 → 19}/include/__clang_cuda_complex_builtins.h +0 -0
  142. /package/lib/clang/{17 → 19}/include/__clang_cuda_math_forward_declares.h +0 -0
  143. /package/lib/clang/{17 → 19}/include/__clang_cuda_texture_intrinsics.h +0 -0
  144. /package/lib/clang/{17 → 19}/include/__clang_hip_cmath.h +0 -0
  145. /package/lib/clang/{17 → 19}/include/__clang_hip_libdevice_declares.h +0 -0
  146. /package/lib/clang/{17 → 19}/include/__clang_hip_stdlib.h +0 -0
  147. /package/lib/clang/{17 → 19}/include/__wmmintrin_aes.h +0 -0
  148. /package/lib/clang/{17 → 19}/include/__wmmintrin_pclmul.h +0 -0
  149. /package/lib/clang/{17 → 19}/include/amxcomplexintrin.h +0 -0
  150. /package/lib/clang/{17 → 19}/include/amxfp16intrin.h +0 -0
  151. /package/lib/clang/{17 → 19}/include/amxintrin.h +0 -0
  152. /package/lib/clang/{17 → 19}/include/arm64intr.h +0 -0
  153. /package/lib/clang/{17 → 19}/include/arm_bf16.h +0 -0
  154. /package/lib/clang/{17 → 19}/include/arm_cde.h +0 -0
  155. /package/lib/clang/{17 → 19}/include/arm_cmse.h +0 -0
  156. /package/lib/clang/{17 → 19}/include/arm_mve.h +0 -0
  157. /package/lib/clang/{17 → 19}/include/arm_neon_sve_bridge.h +0 -0
  158. /package/lib/clang/{17 → 19}/include/armintr.h +0 -0
  159. /package/lib/clang/{17 → 19}/include/avxifmaintrin.h +0 -0
  160. /package/lib/clang/{17 → 19}/include/avxneconvertintrin.h +0 -0
  161. /package/lib/clang/{17 → 19}/include/avxvnniint16intrin.h +0 -0
  162. /package/lib/clang/{17 → 19}/include/avxvnniint8intrin.h +0 -0
  163. /package/lib/clang/{17 → 19}/include/avxvnniintrin.h +0 -0
  164. /package/lib/clang/{17 → 19}/include/bmi2intrin.h +0 -0
  165. /package/lib/clang/{17 → 19}/include/cet.h +0 -0
  166. /package/lib/clang/{17 → 19}/include/cetintrin.h +0 -0
  167. /package/lib/clang/{17 → 19}/include/cldemoteintrin.h +0 -0
  168. /package/lib/clang/{17 → 19}/include/clflushoptintrin.h +0 -0
  169. /package/lib/clang/{17 → 19}/include/clwbintrin.h +0 -0
  170. /package/lib/clang/{17 → 19}/include/clzerointrin.h +0 -0
  171. /package/lib/clang/{17 → 19}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{17 → 19}/include/crc32intrin.h +0 -0
  173. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.h +0 -0
  174. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  175. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  176. /package/lib/clang/{17 → 19}/include/cuda_wrappers/cmath +0 -0
  177. /package/lib/clang/{17 → 19}/include/cuda_wrappers/complex +0 -0
  178. /package/lib/clang/{17 → 19}/include/cuda_wrappers/new +0 -0
  179. /package/lib/clang/{17 → 19}/include/enqcmdintrin.h +0 -0
  180. /package/lib/clang/{17 → 19}/include/f16cintrin.h +0 -0
  181. /package/lib/clang/{17 → 19}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{17 → 19}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{17 → 19}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{17 → 19}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{17 → 19}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{17 → 19}/include/hlsl.h +0 -0
  187. /package/lib/clang/{17 → 19}/include/hresetintrin.h +0 -0
  188. /package/lib/clang/{17 → 19}/include/htmintrin.h +0 -0
  189. /package/lib/clang/{17 → 19}/include/htmxlintrin.h +0 -0
  190. /package/lib/clang/{17 → 19}/include/hvx_hexagon_protos.h +0 -0
  191. /package/lib/clang/{17 → 19}/include/invpcidintrin.h +0 -0
  192. /package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/inttypes.h +0 -0
  193. /package/lib/clang/{17 → 19}/include/lwpintrin.h +0 -0
  194. /package/lib/clang/{17 → 19}/include/lzcntintrin.h +0 -0
  195. /package/lib/clang/{17 → 19}/include/mm_malloc.h +0 -0
  196. /package/lib/clang/{17 → 19}/include/movdirintrin.h +0 -0
  197. /package/lib/clang/{17 → 19}/include/msa.h +0 -0
  198. /package/lib/clang/{17 → 19}/include/mwaitxintrin.h +0 -0
  199. /package/lib/clang/{17 → 19}/include/nmmintrin.h +0 -0
  200. /package/lib/clang/{17 → 19}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  201. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex +0 -0
  202. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex.h +0 -0
  203. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex_cmath.h +0 -0
  204. /package/lib/clang/{17 → 19}/include/openmp_wrappers/math.h +0 -0
  205. /package/lib/clang/{17 → 19}/include/openmp_wrappers/new +0 -0
  206. /package/lib/clang/{17 → 19}/include/pconfigintrin.h +0 -0
  207. /package/lib/clang/{17 → 19}/include/pkuintrin.h +0 -0
  208. /package/lib/clang/{17 → 19}/include/popcntintrin.h +0 -0
  209. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmi2intrin.h +0 -0
  210. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmiintrin.h +0 -0
  211. /package/lib/clang/{17 → 19}/include/ppc_wrappers/emmintrin.h +0 -0
  212. /package/lib/clang/{17 → 19}/include/ppc_wrappers/immintrin.h +0 -0
  213. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mm_malloc.h +0 -0
  214. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mmintrin.h +0 -0
  215. /package/lib/clang/{17 → 19}/include/ppc_wrappers/pmmintrin.h +0 -0
  216. /package/lib/clang/{17 → 19}/include/ppc_wrappers/tmmintrin.h +0 -0
  217. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86gprintrin.h +0 -0
  218. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86intrin.h +0 -0
  219. /package/lib/clang/{17 → 19}/include/ppc_wrappers/xmmintrin.h +0 -0
  220. /package/lib/clang/{17 → 19}/include/prfchiintrin.h +0 -0
  221. /package/lib/clang/{17 → 19}/include/ptwriteintrin.h +0 -0
  222. /package/lib/clang/{17 → 19}/include/raointintrin.h +0 -0
  223. /package/lib/clang/{17 → 19}/include/rdpruintrin.h +0 -0
  224. /package/lib/clang/{17 → 19}/include/rdseedintrin.h +0 -0
  225. /package/lib/clang/{17 → 19}/include/rtmintrin.h +0 -0
  226. /package/lib/clang/{17 → 19}/include/s390intrin.h +0 -0
  227. /package/lib/clang/{17 → 19}/include/serializeintrin.h +0 -0
  228. /package/lib/clang/{17 → 19}/include/sgxintrin.h +0 -0
  229. /package/lib/clang/{17 → 19}/include/sha512intrin.h +0 -0
  230. /package/lib/clang/{17 → 19}/include/shaintrin.h +0 -0
  231. /package/lib/clang/{17 → 19}/include/sm3intrin.h +0 -0
  232. /package/lib/clang/{17 → 19}/include/sm4intrin.h +0 -0
  233. /package/lib/clang/{17 → 19}/include/tbmintrin.h +0 -0
  234. /package/lib/clang/{17 → 19}/include/tgmath.h +0 -0
  235. /package/lib/clang/{17 → 19}/include/tsxldtrkintrin.h +0 -0
  236. /package/lib/clang/{17 → 19}/include/uintrintrin.h +0 -0
  237. /package/lib/clang/{17 → 19}/include/unwind.h +0 -0
  238. /package/lib/clang/{17 → 19}/include/vadefs.h +0 -0
  239. /package/lib/clang/{17 → 19}/include/velintrin.h +0 -0
  240. /package/lib/clang/{17 → 19}/include/velintrin_approx.h +0 -0
  241. /package/lib/clang/{17 → 19}/include/velintrin_gen.h +0 -0
  242. /package/lib/clang/{17 → 19}/include/vpclmulqdqintrin.h +0 -0
  243. /package/lib/clang/{17 → 19}/include/waitpkgintrin.h +0 -0
  244. /package/lib/clang/{17 → 19}/include/wasm_simd128.h +0 -0
  245. /package/lib/clang/{17 → 19}/include/wbnoinvdintrin.h +0 -0
  246. /package/lib/clang/{17 → 19}/include/wmmintrin.h +0 -0
  247. /package/lib/clang/{17 → 19}/include/xopintrin.h +0 -0
  248. /package/lib/clang/{17 → 19}/include/xsavecintrin.h +0 -0
  249. /package/lib/clang/{17 → 19}/include/xsaveintrin.h +0 -0
  250. /package/lib/clang/{17 → 19}/include/xsaveoptintrin.h +0 -0
  251. /package/lib/clang/{17 → 19}/include/xsavesintrin.h +0 -0
  252. /package/lib/clang/{17 → 19}/include/xtestintrin.h +0 -0
@@ -14647,67 +14647,86 @@ static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
14647
14647
 
14648
14648
  static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
14649
14649
  int __b) {
14650
- vector signed char __res = (vector signed char)(0);
14651
- __res[__b & 0x7] = __a;
14650
+ const vector signed char __zero = (vector signed char)0;
14651
+ vector signed char __res =
14652
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1,
14653
+ -1, -1, -1, -1, -1, -1, -1, -1);
14654
+ __res[__b & 0xf] = __a;
14652
14655
  return __res;
14653
14656
  }
14654
14657
 
14655
14658
  static __inline__ vector unsigned char __ATTRS_o_ai
14656
14659
  vec_promote(unsigned char __a, int __b) {
14657
- vector unsigned char __res = (vector unsigned char)(0);
14658
- __res[__b & 0x7] = __a;
14660
+ const vector unsigned char __zero = (vector unsigned char)(0);
14661
+ vector unsigned char __res =
14662
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1,
14663
+ -1, -1, -1, -1, -1, -1, -1, -1);
14664
+ __res[__b & 0xf] = __a;
14659
14665
  return __res;
14660
14666
  }
14661
14667
 
14662
14668
  static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
14663
- vector short __res = (vector short)(0);
14669
+ const vector short __zero = (vector short)(0);
14670
+ vector short __res =
14671
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1);
14664
14672
  __res[__b & 0x7] = __a;
14665
14673
  return __res;
14666
14674
  }
14667
14675
 
14668
14676
  static __inline__ vector unsigned short __ATTRS_o_ai
14669
14677
  vec_promote(unsigned short __a, int __b) {
14670
- vector unsigned short __res = (vector unsigned short)(0);
14678
+ const vector unsigned short __zero = (vector unsigned short)(0);
14679
+ vector unsigned short __res =
14680
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1, -1, -1, -1, -1);
14671
14681
  __res[__b & 0x7] = __a;
14672
14682
  return __res;
14673
14683
  }
14674
14684
 
14675
14685
  static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
14676
- vector int __res = (vector int)(0);
14686
+ const vector int __zero = (vector int)(0);
14687
+ vector int __res = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14677
14688
  __res[__b & 0x3] = __a;
14678
14689
  return __res;
14679
14690
  }
14680
14691
 
14681
14692
  static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
14682
14693
  int __b) {
14683
- vector unsigned int __res = (vector unsigned int)(0);
14694
+ const vector unsigned int __zero = (vector unsigned int)(0);
14695
+ vector unsigned int __res =
14696
+ __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14684
14697
  __res[__b & 0x3] = __a;
14685
14698
  return __res;
14686
14699
  }
14687
14700
 
14688
14701
  static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
14689
- vector float __res = (vector float)(0);
14702
+ const vector float __zero = (vector float)(0);
14703
+ vector float __res = __builtin_shufflevector(__zero, __zero, -1, -1, -1, -1);
14690
14704
  __res[__b & 0x3] = __a;
14691
14705
  return __res;
14692
14706
  }
14693
14707
 
14694
14708
  #ifdef __VSX__
14695
14709
  static __inline__ vector double __ATTRS_o_ai vec_promote(double __a, int __b) {
14696
- vector double __res = (vector double)(0);
14710
+ const vector double __zero = (vector double)(0);
14711
+ vector double __res = __builtin_shufflevector(__zero, __zero, -1, -1);
14697
14712
  __res[__b & 0x1] = __a;
14698
14713
  return __res;
14699
14714
  }
14700
14715
 
14701
14716
  static __inline__ vector signed long long __ATTRS_o_ai
14702
14717
  vec_promote(signed long long __a, int __b) {
14703
- vector signed long long __res = (vector signed long long)(0);
14718
+ const vector signed long long __zero = (vector signed long long)(0);
14719
+ vector signed long long __res =
14720
+ __builtin_shufflevector(__zero, __zero, -1, -1);
14704
14721
  __res[__b & 0x1] = __a;
14705
14722
  return __res;
14706
14723
  }
14707
14724
 
14708
14725
  static __inline__ vector unsigned long long __ATTRS_o_ai
14709
14726
  vec_promote(unsigned long long __a, int __b) {
14710
- vector unsigned long long __res = (vector unsigned long long)(0);
14727
+ const vector unsigned long long __zero = (vector unsigned long long)(0);
14728
+ vector unsigned long long __res =
14729
+ __builtin_shufflevector(__zero, __zero, -1, -1);
14711
14730
  __res[__b & 0x1] = __a;
14712
14731
  return __res;
14713
14732
  }
@@ -155,9 +155,9 @@ _mm_insert_si64(__m128i __x, __m128i __y)
155
155
  /// \param __a
156
156
  /// The 64-bit double-precision floating-point register value to be stored.
157
157
  static __inline__ void __DEFAULT_FN_ATTRS
158
- _mm_stream_sd(double *__p, __m128d __a)
158
+ _mm_stream_sd(void *__p, __m128d __a)
159
159
  {
160
- __builtin_ia32_movntsd(__p, (__v2df)__a);
160
+ __builtin_ia32_movntsd((double *)__p, (__v2df)__a);
161
161
  }
162
162
 
163
163
  /// Stores a 32-bit single-precision floating-point value in a 32-bit
@@ -173,9 +173,9 @@ _mm_stream_sd(double *__p, __m128d __a)
173
173
  /// \param __a
174
174
  /// The 32-bit single-precision floating-point register value to be stored.
175
175
  static __inline__ void __DEFAULT_FN_ATTRS
176
- _mm_stream_ss(float *__p, __m128 __a)
176
+ _mm_stream_ss(void *__p, __m128 __a)
177
177
  {
178
- __builtin_ia32_movntss(__p, (__v4sf)__a);
178
+ __builtin_ia32_movntss((float *)__p, (__v4sf)__a);
179
179
  }
180
180
 
181
181
  #undef __DEFAULT_FN_ATTRS
@@ -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,15 @@ 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
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
79
+ #define _CHKFEAT_GCS 1
80
+ static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
81
+ __chkfeat(uint64_t __features) {
82
+ return __builtin_arm_chkfeat(__features) ^ __features;
83
+ }
84
+ #endif
85
+
86
+ /* 7.5 Swap */
72
87
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
73
88
  __swp(uint32_t __x, volatile uint32_t *__p) {
74
89
  uint32_t v;
@@ -78,8 +93,8 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
78
93
  return v;
79
94
  }
80
95
 
81
- /* 8.6 Memory prefetch intrinsics */
82
- /* 8.6.1 Data prefetch */
96
+ /* 7.6 Memory prefetch intrinsics */
97
+ /* 7.6.1 Data prefetch */
83
98
  #define __pld(addr) __pldx(0, 0, 0, addr)
84
99
 
85
100
  #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
@@ -90,7 +105,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
90
105
  __builtin_arm_prefetch(addr, access_kind, cache_level, retention_policy, 1)
91
106
  #endif
92
107
 
93
- /* 8.6.2 Instruction prefetch */
108
+ /* 7.6.2 Instruction prefetch */
94
109
  #define __pli(addr) __plix(0, 0, addr)
95
110
 
96
111
  #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
@@ -101,15 +116,15 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
101
116
  __builtin_arm_prefetch(addr, 0, cache_level, retention_policy, 0)
102
117
  #endif
103
118
 
104
- /* 8.7 NOP */
105
- #if !defined(_MSC_VER) || !defined(__aarch64__)
119
+ /* 7.7 NOP */
120
+ #if !defined(_MSC_VER) || (!defined(__aarch64__) && !defined(__arm64ec__))
106
121
  static __inline__ void __attribute__((__always_inline__, __nodebug__)) __nop(void) {
107
122
  __builtin_arm_nop();
108
123
  }
109
124
  #endif
110
125
 
111
- /* 9 DATA-PROCESSING INTRINSICS */
112
- /* 9.2 Miscellaneous data-processing intrinsics */
126
+ /* 8 DATA-PROCESSING INTRINSICS */
127
+ /* 8.2 Miscellaneous data-processing intrinsics */
113
128
  /* ROR */
114
129
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
115
130
  __ror(uint32_t __x, uint32_t __y) {
@@ -248,9 +263,7 @@ __rbitl(unsigned long __t) {
248
263
  #endif
249
264
  }
250
265
 
251
- /*
252
- * 9.3 16-bit multiplications
253
- */
266
+ /* 8.3 16-bit multiplications */
254
267
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
255
268
  static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
256
269
  __smulbb(int32_t __a, int32_t __b) {
@@ -279,18 +292,18 @@ __smulwt(int32_t __a, int32_t __b) {
279
292
  #endif
280
293
 
281
294
  /*
282
- * 9.4 Saturating intrinsics
295
+ * 8.4 Saturating intrinsics
283
296
  *
284
297
  * FIXME: Change guard to their corresponding __ARM_FEATURE flag when Q flag
285
298
  * intrinsics are implemented and the flag is enabled.
286
299
  */
287
- /* 9.4.1 Width-specified saturation intrinsics */
300
+ /* 8.4.1 Width-specified saturation intrinsics */
288
301
  #if defined(__ARM_FEATURE_SAT) && __ARM_FEATURE_SAT
289
302
  #define __ssat(x, y) __builtin_arm_ssat(x, y)
290
303
  #define __usat(x, y) __builtin_arm_usat(x, y)
291
304
  #endif
292
305
 
293
- /* 9.4.2 Saturating addition and subtraction intrinsics */
306
+ /* 8.4.2 Saturating addition and subtraction intrinsics */
294
307
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
295
308
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
296
309
  __qadd(int32_t __t, int32_t __v) {
@@ -308,7 +321,7 @@ __qdbl(int32_t __t) {
308
321
  }
309
322
  #endif
310
323
 
311
- /* 9.4.3 Accumultating multiplications */
324
+ /* 8.4.3 Accumulating multiplications */
312
325
  #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
313
326
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
314
327
  __smlabb(int32_t __a, int32_t __b, int32_t __c) {
@@ -337,13 +350,13 @@ __smlawt(int32_t __a, int32_t __b, int32_t __c) {
337
350
  #endif
338
351
 
339
352
 
340
- /* 9.5.4 Parallel 16-bit saturation */
353
+ /* 8.5.4 Parallel 16-bit saturation */
341
354
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
342
355
  #define __ssat16(x, y) __builtin_arm_ssat16(x, y)
343
356
  #define __usat16(x, y) __builtin_arm_usat16(x, y)
344
357
  #endif
345
358
 
346
- /* 9.5.5 Packing and unpacking */
359
+ /* 8.5.5 Packing and unpacking */
347
360
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
348
361
  typedef int32_t int8x4_t;
349
362
  typedef int32_t int16x2_t;
@@ -368,7 +381,7 @@ __uxtb16(int8x4_t __a) {
368
381
  }
369
382
  #endif
370
383
 
371
- /* 9.5.6 Parallel selection */
384
+ /* 8.5.6 Parallel selection */
372
385
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
373
386
  static __inline__ uint8x4_t __attribute__((__always_inline__, __nodebug__))
374
387
  __sel(uint8x4_t __a, uint8x4_t __b) {
@@ -376,7 +389,7 @@ __sel(uint8x4_t __a, uint8x4_t __b) {
376
389
  }
377
390
  #endif
378
391
 
379
- /* 9.5.7 Parallel 8-bit addition and subtraction */
392
+ /* 8.5.7 Parallel 8-bit addition and subtraction */
380
393
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
381
394
  static __inline__ int8x4_t __attribute__((__always_inline__, __nodebug__))
382
395
  __qadd8(int8x4_t __a, int8x4_t __b) {
@@ -428,7 +441,7 @@ __usub8(uint8x4_t __a, uint8x4_t __b) {
428
441
  }
429
442
  #endif
430
443
 
431
- /* 9.5.8 Sum of 8-bit absolute differences */
444
+ /* 8.5.8 Sum of 8-bit absolute differences */
432
445
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
433
446
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
434
447
  __usad8(uint8x4_t __a, uint8x4_t __b) {
@@ -440,7 +453,7 @@ __usada8(uint8x4_t __a, uint8x4_t __b, uint32_t __c) {
440
453
  }
441
454
  #endif
442
455
 
443
- /* 9.5.9 Parallel 16-bit addition and subtraction */
456
+ /* 8.5.9 Parallel 16-bit addition and subtraction */
444
457
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
445
458
  static __inline__ int16x2_t __attribute__((__always_inline__, __nodebug__))
446
459
  __qadd16(int16x2_t __a, int16x2_t __b) {
@@ -540,7 +553,7 @@ __usub16(uint16x2_t __a, uint16x2_t __b) {
540
553
  }
541
554
  #endif
542
555
 
543
- /* 9.5.10 Parallel 16-bit multiplications */
556
+ /* 8.5.10 Parallel 16-bit multiplication */
544
557
  #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
545
558
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
546
559
  __smlad(int16x2_t __a, int16x2_t __b, int32_t __c) {
@@ -592,7 +605,22 @@ __smusdx(int16x2_t __a, int16x2_t __b) {
592
605
  }
593
606
  #endif
594
607
 
595
- /* 9.7 CRC32 intrinsics */
608
+ /* 8.6 Floating-point data-processing intrinsics */
609
+ #if (defined(__ARM_FEATURE_DIRECTED_ROUNDING) && \
610
+ (__ARM_FEATURE_DIRECTED_ROUNDING)) && \
611
+ (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
612
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
613
+ __rintn(double __a) {
614
+ return __builtin_roundeven(__a);
615
+ }
616
+
617
+ static __inline__ float __attribute__((__always_inline__, __nodebug__))
618
+ __rintnf(float __a) {
619
+ return __builtin_roundevenf(__a);
620
+ }
621
+ #endif
622
+
623
+ /* 8.8 CRC32 intrinsics */
596
624
  #if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
597
625
  (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
598
626
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
@@ -636,6 +664,7 @@ __crc32cd(uint32_t __a, uint64_t __b) {
636
664
  }
637
665
  #endif
638
666
 
667
+ /* 8.6 Floating-point data-processing intrinsics */
639
668
  /* Armv8.3-A Javascript conversion intrinsic */
640
669
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
641
670
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("v8.3a")))
@@ -687,7 +716,7 @@ __rint64x(double __a) {
687
716
  }
688
717
  #endif
689
718
 
690
- /* Armv8.7-A load/store 64-byte intrinsics */
719
+ /* 8.9 Armv8.7-A load/store 64-byte intrinsics */
691
720
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
692
721
  typedef struct {
693
722
  uint64_t val[8];
@@ -713,7 +742,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
713
742
  }
714
743
  #endif
715
744
 
716
- /* 10.1 Special register intrinsics */
745
+ /* 11.1 Special register intrinsics */
717
746
  #define __arm_rsr(sysreg) __builtin_arm_rsr(sysreg)
718
747
  #define __arm_rsr64(sysreg) __builtin_arm_rsr64(sysreg)
719
748
  #define __arm_rsr128(sysreg) __builtin_arm_rsr128(sysreg)
@@ -727,7 +756,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
727
756
  #define __arm_wsrf(sysreg, v) __arm_wsr(sysreg, __builtin_bit_cast(uint32_t, v))
728
757
  #define __arm_wsrf64(sysreg, v) __arm_wsr64(sysreg, __builtin_bit_cast(uint64_t, v))
729
758
 
730
- /* Memory Tagging Extensions (MTE) Intrinsics */
759
+ /* 10.3 MTE intrinsics */
731
760
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
732
761
  #define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask)
733
762
  #define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset)
@@ -736,12 +765,71 @@ __arm_st64bv0(void *__addr, data512_t __value) {
736
765
  #define __arm_mte_set_tag(__ptr) __builtin_arm_stg(__ptr)
737
766
  #define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
738
767
 
739
- /* Memory Operations Intrinsics */
768
+ /* 18 memcpy family of operations intrinsics - MOPS */
740
769
  #define __arm_mops_memset_tag(__tagged_address, __value, __size) \
741
770
  __builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
742
771
  #endif
743
772
 
744
- /* Transactional Memory Extension (TME) Intrinsics */
773
+ /* 11.3 Coprocessor Intrinsics */
774
+ #if defined(__ARM_FEATURE_COPROC)
775
+
776
+ #if (__ARM_FEATURE_COPROC & 0x1)
777
+
778
+ #if (__ARM_ARCH < 8)
779
+ #define __arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2) \
780
+ __builtin_arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2)
781
+ #endif /* __ARM_ARCH < 8 */
782
+
783
+ #define __arm_ldc(coproc, CRd, p) __builtin_arm_ldc(coproc, CRd, p)
784
+ #define __arm_stc(coproc, CRd, p) __builtin_arm_stc(coproc, CRd, p)
785
+
786
+ #define __arm_mcr(coproc, opc1, value, CRn, CRm, opc2) \
787
+ __builtin_arm_mcr(coproc, opc1, value, CRn, CRm, opc2)
788
+ #define __arm_mrc(coproc, opc1, CRn, CRm, opc2) \
789
+ __builtin_arm_mrc(coproc, opc1, CRn, CRm, opc2)
790
+
791
+ #if (__ARM_ARCH != 4) && (__ARM_ARCH < 8)
792
+ #define __arm_ldcl(coproc, CRd, p) __builtin_arm_ldcl(coproc, CRd, p)
793
+ #define __arm_stcl(coproc, CRd, p) __builtin_arm_stcl(coproc, CRd, p)
794
+ #endif /* (__ARM_ARCH != 4) && (__ARM_ARCH != 8) */
795
+
796
+ #if (__ARM_ARCH_8M_MAIN__) || (__ARM_ARCH_8_1M_MAIN__)
797
+ #define __arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2) \
798
+ __builtin_arm_cdp(coproc, opc1, CRd, CRn, CRm, opc2)
799
+ #define __arm_ldcl(coproc, CRd, p) __builtin_arm_ldcl(coproc, CRd, p)
800
+ #define __arm_stcl(coproc, CRd, p) __builtin_arm_stcl(coproc, CRd, p)
801
+ #endif /* ___ARM_ARCH_8M_MAIN__ */
802
+
803
+ #endif /* __ARM_FEATURE_COPROC & 0x1 */
804
+
805
+ #if (__ARM_FEATURE_COPROC & 0x2)
806
+ #define __arm_cdp2(coproc, opc1, CRd, CRn, CRm, opc2) \
807
+ __builtin_arm_cdp2(coproc, opc1, CRd, CRn, CRm, opc2)
808
+ #define __arm_ldc2(coproc, CRd, p) __builtin_arm_ldc2(coproc, CRd, p)
809
+ #define __arm_stc2(coproc, CRd, p) __builtin_arm_stc2(coproc, CRd, p)
810
+ #define __arm_ldc2l(coproc, CRd, p) __builtin_arm_ldc2l(coproc, CRd, p)
811
+ #define __arm_stc2l(coproc, CRd, p) __builtin_arm_stc2l(coproc, CRd, p)
812
+ #define __arm_mcr2(coproc, opc1, value, CRn, CRm, opc2) \
813
+ __builtin_arm_mcr2(coproc, opc1, value, CRn, CRm, opc2)
814
+ #define __arm_mrc2(coproc, opc1, CRn, CRm, opc2) \
815
+ __builtin_arm_mrc2(coproc, opc1, CRn, CRm, opc2)
816
+ #endif
817
+
818
+ #if (__ARM_FEATURE_COPROC & 0x4)
819
+ #define __arm_mcrr(coproc, opc1, value, CRm) \
820
+ __builtin_arm_mcrr(coproc, opc1, value, CRm)
821
+ #define __arm_mrrc(coproc, opc1, CRm) __builtin_arm_mrrc(coproc, opc1, CRm)
822
+ #endif
823
+
824
+ #if (__ARM_FEATURE_COPROC & 0x8)
825
+ #define __arm_mcrr2(coproc, opc1, value, CRm) \
826
+ __builtin_arm_mcrr2(coproc, opc1, value, CRm)
827
+ #define __arm_mrrc2(coproc, opc1, CRm) __builtin_arm_mrrc2(coproc, opc1, CRm)
828
+ #endif
829
+
830
+ #endif // __ARM_FEATURE_COPROC
831
+
832
+ /* 17 Transactional Memory Extension (TME) Intrinsics */
745
833
  #if defined(__ARM_FEATURE_TME) && __ARM_FEATURE_TME
746
834
 
747
835
  #define _TMFAILURE_REASON 0x00007fffu
@@ -763,7 +851,7 @@ __arm_st64bv0(void *__addr, data512_t __value) {
763
851
 
764
852
  #endif /* __ARM_FEATURE_TME */
765
853
 
766
- /* Armv8.5-A Random number generation intrinsics */
854
+ /* 8.7 Armv8.5-A Random number generation intrinsics */
767
855
  #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
768
856
  static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
769
857
  __rndr(uint64_t *__p) {
@@ -775,6 +863,24 @@ __rndrrs(uint64_t *__p) {
775
863
  }
776
864
  #endif
777
865
 
866
+ /* 11.2 Guarded Control Stack intrinsics */
867
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
868
+ static __inline__ void * __attribute__((__always_inline__, __nodebug__))
869
+ __gcspr() {
870
+ return (void *)__builtin_arm_rsr64("gcspr_el0");
871
+ }
872
+
873
+ static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("gcs")))
874
+ __gcspopm() {
875
+ return __builtin_arm_gcspopm(0);
876
+ }
877
+
878
+ static __inline__ const void * __attribute__((__always_inline__, __nodebug__, target("gcs")))
879
+ __gcsss(const void *__stack) {
880
+ return __builtin_arm_gcsss(__stack);
881
+ }
882
+ #endif
883
+
778
884
  #if defined(__cplusplus)
779
885
  }
780
886
  #endif
@@ -29,7 +29,7 @@
29
29
  typedef __fp16 float16_t;
30
30
  #define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))
31
31
 
32
- #if defined(__aarch64__)
32
+ #if defined(__aarch64__) || defined(__arm64ec__)
33
33
  #define vabdh_f16(__p0, __p1) __extension__ ({ \
34
34
  float16_t __ret; \
35
35
  float16_t __s0 = __p0; \