@cpp-linter/clang-tidy-win32-x64 14.0.0 → 16.0.3

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 (203) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_intrinsics.h +7 -7
  4. package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_texture_intrinsics.h +2 -0
  5. package/lib/clang/{14.0.0 → 16}/include/__clang_hip_libdevice_declares.h +5 -0
  6. package/lib/clang/{14.0.0 → 16}/include/__clang_hip_math.h +10 -13
  7. package/lib/clang/{14.0.0 → 16}/include/__clang_hip_runtime_wrapper.h +1 -0
  8. package/lib/clang/16/include/__clang_hip_stdlib.h +43 -0
  9. package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_pclmul.h +10 -10
  10. package/lib/clang/{14.0.0 → 16}/include/altivec.h +501 -262
  11. package/lib/clang/16/include/amxfp16intrin.h +58 -0
  12. package/lib/clang/{14.0.0 → 16}/include/amxintrin.h +32 -2
  13. package/lib/clang/{14.0.0 → 16}/include/arm_acle.h +76 -75
  14. package/lib/clang/{14.0.0 → 16}/include/arm_fp16.h +90 -90
  15. package/lib/clang/{14.0.0 → 16}/include/arm_neon.h +28468 -28638
  16. package/lib/clang/{14.0.0 → 16}/include/arm_neon_sve_bridge.h +0 -2
  17. package/lib/clang/{14.0.0 → 16}/include/arm_sve.h +7848 -7996
  18. package/lib/clang/{14.0.0 → 16}/include/avx2intrin.h +8 -8
  19. package/lib/clang/{14.0.0 → 16}/include/avx512bf16intrin.h +18 -15
  20. package/lib/clang/{14.0.0 → 16}/include/avx512bwintrin.h +12 -12
  21. package/lib/clang/{14.0.0 → 16}/include/avx512fintrin.h +78 -75
  22. package/lib/clang/{14.0.0 → 16}/include/avx512fp16intrin.h +6 -9
  23. package/lib/clang/{14.0.0 → 16}/include/avx512ifmavlintrin.h +13 -27
  24. package/lib/clang/{14.0.0 → 16}/include/avx512vlbf16intrin.h +31 -38
  25. package/lib/clang/{14.0.0 → 16}/include/avx512vlbwintrin.h +360 -8
  26. package/lib/clang/{14.0.0 → 16}/include/avx512vlfp16intrin.h +3 -0
  27. package/lib/clang/{14.0.0 → 16}/include/avx512vlintrin.h +81 -95
  28. package/lib/clang/{14.0.0 → 16}/include/avx512vlvnniintrin.h +16 -16
  29. package/lib/clang/16/include/avxifmaintrin.h +177 -0
  30. package/lib/clang/{14.0.0 → 16}/include/avxintrin.h +77 -32
  31. package/lib/clang/16/include/avxneconvertintrin.h +484 -0
  32. package/lib/clang/16/include/avxvnniint8intrin.h +471 -0
  33. package/lib/clang/{14.0.0 → 16}/include/avxvnniintrin.h +16 -16
  34. package/lib/clang/{14.0.0 → 16}/include/bmiintrin.h +6 -2
  35. package/lib/clang/{14.0.0 → 16}/include/cetintrin.h +12 -6
  36. package/lib/clang/16/include/cmpccxaddintrin.h +70 -0
  37. package/lib/clang/{14.0.0 → 16}/include/cpuid.h +12 -1
  38. package/lib/clang/16/include/cuda_wrappers/cmath +90 -0
  39. package/lib/clang/{14.0.0 → 16}/include/emmintrin.h +559 -769
  40. package/lib/clang/{14.0.0 → 16}/include/f16cintrin.h +3 -3
  41. package/lib/clang/{14.0.0 → 16}/include/float.h +17 -10
  42. package/lib/clang/{14.0.0 → 16}/include/gfniintrin.h +7 -5
  43. package/lib/clang/16/include/hlsl/hlsl_basic_types.h +67 -0
  44. package/lib/clang/16/include/hlsl/hlsl_intrinsics.h +223 -0
  45. package/lib/clang/16/include/hlsl.h +15 -0
  46. package/lib/clang/{14.0.0 → 16}/include/hresetintrin.h +2 -2
  47. package/lib/clang/{14.0.0 → 16}/include/ia32intrin.h +11 -11
  48. package/lib/clang/{14.0.0 → 16}/include/immintrin.h +56 -24
  49. package/lib/clang/{14.0.0 → 16}/include/intrin.h +12 -21
  50. package/lib/clang/{14.0.0 → 16}/include/keylockerintrin.h +22 -22
  51. package/lib/clang/16/include/larchintrin.h +234 -0
  52. package/lib/clang/{14.0.0 → 16}/include/limits.h +3 -2
  53. package/lib/clang/{14.0.0 → 16}/include/mm_malloc.h +3 -3
  54. package/lib/clang/{14.0.0 → 16}/include/opencl-c-base.h +29 -0
  55. package/lib/clang/{14.0.0 → 16}/include/opencl-c.h +6904 -7100
  56. package/lib/clang/{14.0.0 → 16}/include/pmmintrin.h +1 -1
  57. package/lib/clang/16/include/ppc_wrappers/bmi2intrin.h +134 -0
  58. package/lib/clang/16/include/ppc_wrappers/bmiintrin.h +165 -0
  59. package/lib/clang/16/include/ppc_wrappers/emmintrin.h +2268 -0
  60. package/lib/clang/16/include/ppc_wrappers/immintrin.h +27 -0
  61. package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mm_malloc.h +12 -17
  62. package/lib/clang/{14.0.0 → 16}/include/ppc_wrappers/mmintrin.h +389 -387
  63. package/lib/clang/16/include/ppc_wrappers/pmmintrin.h +145 -0
  64. package/lib/clang/16/include/ppc_wrappers/smmintrin.h +663 -0
  65. package/lib/clang/16/include/ppc_wrappers/tmmintrin.h +453 -0
  66. package/lib/clang/{14.0.0/include/stdnoreturn.h → 16/include/ppc_wrappers/x86gprintrin.h} +7 -6
  67. package/lib/clang/16/include/ppc_wrappers/x86intrin.h +28 -0
  68. package/lib/clang/16/include/ppc_wrappers/xmmintrin.h +1827 -0
  69. package/lib/clang/16/include/prfchiintrin.h +61 -0
  70. package/lib/clang/16/include/raointintrin.h +203 -0
  71. package/lib/clang/16/include/rdpruintrin.h +57 -0
  72. package/lib/clang/{14.0.0 → 16}/include/rdseedintrin.h +3 -3
  73. package/lib/clang/16/include/riscv_vector.h +211 -0
  74. package/lib/clang/{14.0.0 → 16}/include/rtmintrin.h +1 -1
  75. package/lib/clang/{14.0.0 → 16}/include/smmintrin.h +236 -259
  76. package/lib/clang/{14.0.0 → 16}/include/stdarg.h +23 -7
  77. package/lib/clang/{14.0.0 → 16}/include/stdatomic.h +7 -7
  78. package/lib/clang/{14.0.0 → 16}/include/stdbool.h +10 -7
  79. package/lib/clang/{14.0.0 → 16}/include/stddef.h +9 -2
  80. package/lib/clang/{14.0.0 → 16}/include/stdint.h +158 -40
  81. package/lib/clang/16/include/stdnoreturn.h +29 -0
  82. package/lib/clang/{14.0.0 → 16}/include/uintrintrin.h +8 -8
  83. package/lib/clang/{14.0.0 → 16}/include/unwind.h +10 -6
  84. package/lib/clang/16/include/velintrin.h +71 -0
  85. package/lib/clang/16/include/velintrin_approx.h +120 -0
  86. package/lib/clang/16/include/velintrin_gen.h +1257 -0
  87. package/lib/clang/{14.0.0 → 16}/include/wasm_simd128.h +2 -2
  88. package/lib/clang/16/include/x86gprintrin.h +65 -0
  89. package/lib/clang/{14.0.0 → 16}/include/x86intrin.h +4 -0
  90. package/lib/clang/{14.0.0 → 16}/include/xmmintrin.h +10 -5
  91. package/package.json +6 -6
  92. package/lib/clang/14.0.0/include/ppc_wrappers/emmintrin.h +0 -2325
  93. package/lib/clang/14.0.0/include/ppc_wrappers/pmmintrin.h +0 -151
  94. package/lib/clang/14.0.0/include/ppc_wrappers/smmintrin.h +0 -110
  95. package/lib/clang/14.0.0/include/ppc_wrappers/tmmintrin.h +0 -496
  96. package/lib/clang/14.0.0/include/ppc_wrappers/xmmintrin.h +0 -1844
  97. package/lib/clang/14.0.0/include/riscv_vector.h +0 -95423
  98. package/lib/clang/14.0.0/include/x86gprintrin.h +0 -35
  99. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_builtin_vars.h +0 -0
  100. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_cmath.h +0 -0
  101. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_complex_builtins.h +0 -0
  102. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_device_functions.h +0 -0
  103. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_libdevice_declares.h +0 -0
  104. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math.h +0 -0
  105. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_math_forward_declares.h +0 -0
  106. /package/lib/clang/{14.0.0 → 16}/include/__clang_cuda_runtime_wrapper.h +0 -0
  107. /package/lib/clang/{14.0.0 → 16}/include/__clang_hip_cmath.h +0 -0
  108. /package/lib/clang/{14.0.0 → 16}/include/__stddef_max_align_t.h +0 -0
  109. /package/lib/clang/{14.0.0 → 16}/include/__wmmintrin_aes.h +0 -0
  110. /package/lib/clang/{14.0.0 → 16}/include/adxintrin.h +0 -0
  111. /package/lib/clang/{14.0.0 → 16}/include/ammintrin.h +0 -0
  112. /package/lib/clang/{14.0.0 → 16}/include/arm64intr.h +0 -0
  113. /package/lib/clang/{14.0.0 → 16}/include/arm_bf16.h +0 -0
  114. /package/lib/clang/{14.0.0 → 16}/include/arm_cde.h +0 -0
  115. /package/lib/clang/{14.0.0 → 16}/include/arm_cmse.h +0 -0
  116. /package/lib/clang/{14.0.0 → 16}/include/arm_mve.h +0 -0
  117. /package/lib/clang/{14.0.0 → 16}/include/armintr.h +0 -0
  118. /package/lib/clang/{14.0.0 → 16}/include/avx512bitalgintrin.h +0 -0
  119. /package/lib/clang/{14.0.0 → 16}/include/avx512cdintrin.h +0 -0
  120. /package/lib/clang/{14.0.0 → 16}/include/avx512dqintrin.h +0 -0
  121. /package/lib/clang/{14.0.0 → 16}/include/avx512erintrin.h +0 -0
  122. /package/lib/clang/{14.0.0 → 16}/include/avx512ifmaintrin.h +0 -0
  123. /package/lib/clang/{14.0.0 → 16}/include/avx512pfintrin.h +0 -0
  124. /package/lib/clang/{14.0.0 → 16}/include/avx512vbmi2intrin.h +0 -0
  125. /package/lib/clang/{14.0.0 → 16}/include/avx512vbmiintrin.h +0 -0
  126. /package/lib/clang/{14.0.0 → 16}/include/avx512vbmivlintrin.h +0 -0
  127. /package/lib/clang/{14.0.0 → 16}/include/avx512vlbitalgintrin.h +0 -0
  128. /package/lib/clang/{14.0.0 → 16}/include/avx512vlcdintrin.h +0 -0
  129. /package/lib/clang/{14.0.0 → 16}/include/avx512vldqintrin.h +0 -0
  130. /package/lib/clang/{14.0.0 → 16}/include/avx512vlvbmi2intrin.h +0 -0
  131. /package/lib/clang/{14.0.0 → 16}/include/avx512vlvp2intersectintrin.h +0 -0
  132. /package/lib/clang/{14.0.0 → 16}/include/avx512vnniintrin.h +0 -0
  133. /package/lib/clang/{14.0.0 → 16}/include/avx512vp2intersectintrin.h +0 -0
  134. /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqintrin.h +0 -0
  135. /package/lib/clang/{14.0.0 → 16}/include/avx512vpopcntdqvlintrin.h +0 -0
  136. /package/lib/clang/{14.0.0 → 16}/include/bmi2intrin.h +0 -0
  137. /package/lib/clang/{14.0.0 → 16}/include/builtins.h +0 -0
  138. /package/lib/clang/{14.0.0 → 16}/include/cet.h +0 -0
  139. /package/lib/clang/{14.0.0 → 16}/include/cldemoteintrin.h +0 -0
  140. /package/lib/clang/{14.0.0 → 16}/include/clflushoptintrin.h +0 -0
  141. /package/lib/clang/{14.0.0 → 16}/include/clwbintrin.h +0 -0
  142. /package/lib/clang/{14.0.0 → 16}/include/clzerointrin.h +0 -0
  143. /package/lib/clang/{14.0.0 → 16}/include/crc32intrin.h +0 -0
  144. /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/algorithm +0 -0
  145. /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/complex +0 -0
  146. /package/lib/clang/{14.0.0 → 16}/include/cuda_wrappers/new +0 -0
  147. /package/lib/clang/{14.0.0 → 16}/include/enqcmdintrin.h +0 -0
  148. /package/lib/clang/{14.0.0 → 16}/include/fma4intrin.h +0 -0
  149. /package/lib/clang/{14.0.0 → 16}/include/fmaintrin.h +0 -0
  150. /package/lib/clang/{14.0.0 → 16}/include/fxsrintrin.h +0 -0
  151. /package/lib/clang/{14.0.0 → 16}/include/hexagon_circ_brev_intrinsics.h +0 -0
  152. /package/lib/clang/{14.0.0 → 16}/include/hexagon_protos.h +0 -0
  153. /package/lib/clang/{14.0.0 → 16}/include/hexagon_types.h +0 -0
  154. /package/lib/clang/{14.0.0 → 16}/include/htmintrin.h +0 -0
  155. /package/lib/clang/{14.0.0 → 16}/include/htmxlintrin.h +0 -0
  156. /package/lib/clang/{14.0.0 → 16}/include/hvx_hexagon_protos.h +0 -0
  157. /package/lib/clang/{14.0.0 → 16}/include/inttypes.h +0 -0
  158. /package/lib/clang/{14.0.0 → 16}/include/invpcidintrin.h +0 -0
  159. /package/lib/clang/{14.0.0 → 16}/include/iso646.h +0 -0
  160. /package/lib/clang/{14.0.0 → 16}/include/lwpintrin.h +0 -0
  161. /package/lib/clang/{14.0.0 → 16}/include/lzcntintrin.h +0 -0
  162. /package/lib/clang/{14.0.0 → 16}/include/mm3dnow.h +0 -0
  163. /package/lib/clang/{14.0.0 → 16}/include/mmintrin.h +0 -0
  164. /package/lib/clang/{14.0.0 → 16}/include/module.modulemap +0 -0
  165. /package/lib/clang/{14.0.0 → 16}/include/movdirintrin.h +0 -0
  166. /package/lib/clang/{14.0.0 → 16}/include/msa.h +0 -0
  167. /package/lib/clang/{14.0.0 → 16}/include/mwaitxintrin.h +0 -0
  168. /package/lib/clang/{14.0.0 → 16}/include/nmmintrin.h +0 -0
  169. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  170. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/cmath +0 -0
  171. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex +0 -0
  172. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex.h +0 -0
  173. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/complex_cmath.h +0 -0
  174. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/math.h +0 -0
  175. /package/lib/clang/{14.0.0 → 16}/include/openmp_wrappers/new +0 -0
  176. /package/lib/clang/{14.0.0 → 16}/include/pconfigintrin.h +0 -0
  177. /package/lib/clang/{14.0.0 → 16}/include/pkuintrin.h +0 -0
  178. /package/lib/clang/{14.0.0 → 16}/include/popcntintrin.h +0 -0
  179. /package/lib/clang/{14.0.0 → 16}/include/prfchwintrin.h +0 -0
  180. /package/lib/clang/{14.0.0 → 16}/include/ptwriteintrin.h +0 -0
  181. /package/lib/clang/{14.0.0 → 16}/include/s390intrin.h +0 -0
  182. /package/lib/clang/{14.0.0 → 16}/include/serializeintrin.h +0 -0
  183. /package/lib/clang/{14.0.0 → 16}/include/sgxintrin.h +0 -0
  184. /package/lib/clang/{14.0.0 → 16}/include/shaintrin.h +0 -0
  185. /package/lib/clang/{14.0.0 → 16}/include/stdalign.h +0 -0
  186. /package/lib/clang/{14.0.0 → 16}/include/tbmintrin.h +0 -0
  187. /package/lib/clang/{14.0.0 → 16}/include/tgmath.h +0 -0
  188. /package/lib/clang/{14.0.0 → 16}/include/tmmintrin.h +0 -0
  189. /package/lib/clang/{14.0.0 → 16}/include/tsxldtrkintrin.h +0 -0
  190. /package/lib/clang/{14.0.0 → 16}/include/vadefs.h +0 -0
  191. /package/lib/clang/{14.0.0 → 16}/include/vaesintrin.h +0 -0
  192. /package/lib/clang/{14.0.0 → 16}/include/varargs.h +0 -0
  193. /package/lib/clang/{14.0.0 → 16}/include/vecintrin.h +0 -0
  194. /package/lib/clang/{14.0.0 → 16}/include/vpclmulqdqintrin.h +0 -0
  195. /package/lib/clang/{14.0.0 → 16}/include/waitpkgintrin.h +0 -0
  196. /package/lib/clang/{14.0.0 → 16}/include/wbnoinvdintrin.h +0 -0
  197. /package/lib/clang/{14.0.0 → 16}/include/wmmintrin.h +0 -0
  198. /package/lib/clang/{14.0.0 → 16}/include/xopintrin.h +0 -0
  199. /package/lib/clang/{14.0.0 → 16}/include/xsavecintrin.h +0 -0
  200. /package/lib/clang/{14.0.0 → 16}/include/xsaveintrin.h +0 -0
  201. /package/lib/clang/{14.0.0 → 16}/include/xsaveoptintrin.h +0 -0
  202. /package/lib/clang/{14.0.0 → 16}/include/xsavesintrin.h +0 -0
  203. /package/lib/clang/{14.0.0 → 16}/include/xtestintrin.h +0 -0
@@ -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
@@ -439,8 +448,6 @@ static __inline__ void __tile_dpbuud(__tile1024i *dst, __tile1024i src0,
439
448
  ///
440
449
  /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
441
450
  ///
442
- /// \param dst
443
- /// A destination tile. Max size is 1024 Bytes.
444
451
  /// \param base
445
452
  /// A pointer to base address.
446
453
  /// \param stride
@@ -486,9 +493,32 @@ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
486
493
  src0.tile, src1.tile);
487
494
  }
488
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
+
489
518
  #undef __DEFAULT_FN_ATTRS_TILE
490
519
  #undef __DEFAULT_FN_ATTRS_INT8
491
520
  #undef __DEFAULT_FN_ATTRS_BF16
521
+ #undef __DEFAULT_FN_ATTRS_FP16
492
522
 
493
523
  #endif /* __x86_64__ */
494
524
  #endif /* __AMXINTRIN_H */
@@ -64,7 +64,7 @@ static __inline__ void __attribute__((__always_inline__, __nodebug__)) __yield(v
64
64
  }
65
65
  #endif
66
66
 
67
- #if __ARM_32BIT_STATE
67
+ #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
68
68
  #define __dbg(t) __builtin_arm_dbg(t)
69
69
  #endif
70
70
 
@@ -82,7 +82,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
82
82
  /* 8.6.1 Data prefetch */
83
83
  #define __pld(addr) __pldx(0, 0, 0, addr)
84
84
 
85
- #if __ARM_32BIT_STATE
85
+ #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
86
86
  #define __pldx(access_kind, cache_level, retention_policy, addr) \
87
87
  __builtin_arm_prefetch(addr, access_kind, 1)
88
88
  #else
@@ -93,7 +93,7 @@ __swp(uint32_t __x, volatile uint32_t *__p) {
93
93
  /* 8.6.2 Instruction prefetch */
94
94
  #define __pli(addr) __plix(0, 0, addr)
95
95
 
96
- #if __ARM_32BIT_STATE
96
+ #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
97
97
  #define __plix(cache_level, retention_policy, addr) \
98
98
  __builtin_arm_prefetch(addr, 0, 0)
99
99
  #else
@@ -140,17 +140,17 @@ __rorl(unsigned long __x, uint32_t __y) {
140
140
  /* CLZ */
141
141
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
142
142
  __clz(uint32_t __t) {
143
- return __builtin_clz(__t);
143
+ return (uint32_t)__builtin_clz(__t);
144
144
  }
145
145
 
146
146
  static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
147
147
  __clzl(unsigned long __t) {
148
- return __builtin_clzl(__t);
148
+ return (unsigned long)__builtin_clzl(__t);
149
149
  }
150
150
 
151
151
  static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
152
152
  __clzll(uint64_t __t) {
153
- return __builtin_clzll(__t);
153
+ return (uint64_t)__builtin_clzll(__t);
154
154
  }
155
155
 
156
156
  /* CLS */
@@ -201,7 +201,7 @@ __rev16(uint32_t __t) {
201
201
 
202
202
  static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
203
203
  __rev16ll(uint64_t __t) {
204
- return (((uint64_t)__rev16(__t >> 32)) << 32) | __rev16(__t);
204
+ return (((uint64_t)__rev16(__t >> 32)) << 32) | (uint64_t)__rev16((uint32_t)__t);
205
205
  }
206
206
 
207
207
  static __inline__ unsigned long __attribute__((__always_inline__, __nodebug__))
@@ -216,7 +216,7 @@ __rev16l(unsigned long __t) {
216
216
  /* REVSH */
217
217
  static __inline__ int16_t __attribute__((__always_inline__, __nodebug__))
218
218
  __revsh(int16_t __t) {
219
- return __builtin_bswap16(__t);
219
+ return (int16_t)__builtin_bswap16((uint16_t)__t);
220
220
  }
221
221
 
222
222
  /* RBIT */
@@ -227,7 +227,7 @@ __rbit(uint32_t __t) {
227
227
 
228
228
  static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
229
229
  __rbitll(uint64_t __t) {
230
- #if __ARM_32BIT_STATE
230
+ #if defined(__ARM_32BIT_STATE) && __ARM_32BIT_STATE
231
231
  return (((uint64_t)__builtin_arm_rbit(__t)) << 32) |
232
232
  __builtin_arm_rbit(__t >> 32);
233
233
  #else
@@ -247,7 +247,7 @@ __rbitl(unsigned long __t) {
247
247
  /*
248
248
  * 9.3 16-bit multiplications
249
249
  */
250
- #if __ARM_FEATURE_DSP
250
+ #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
251
251
  static __inline__ int32_t __attribute__((__always_inline__,__nodebug__))
252
252
  __smulbb(int32_t __a, int32_t __b) {
253
253
  return __builtin_arm_smulbb(__a, __b);
@@ -277,17 +277,17 @@ __smulwt(int32_t __a, int32_t __b) {
277
277
  /*
278
278
  * 9.4 Saturating intrinsics
279
279
  *
280
- * FIXME: Change guard to their corrosponding __ARM_FEATURE flag when Q flag
280
+ * FIXME: Change guard to their corresponding __ARM_FEATURE flag when Q flag
281
281
  * intrinsics are implemented and the flag is enabled.
282
282
  */
283
283
  /* 9.4.1 Width-specified saturation intrinsics */
284
- #if __ARM_FEATURE_SAT
284
+ #if defined(__ARM_FEATURE_SAT) && __ARM_FEATURE_SAT
285
285
  #define __ssat(x, y) __builtin_arm_ssat(x, y)
286
286
  #define __usat(x, y) __builtin_arm_usat(x, y)
287
287
  #endif
288
288
 
289
289
  /* 9.4.2 Saturating addition and subtraction intrinsics */
290
- #if __ARM_FEATURE_DSP
290
+ #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
291
291
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
292
292
  __qadd(int32_t __t, int32_t __v) {
293
293
  return __builtin_arm_qadd(__t, __v);
@@ -305,7 +305,7 @@ __qdbl(int32_t __t) {
305
305
  #endif
306
306
 
307
307
  /* 9.4.3 Accumultating multiplications */
308
- #if __ARM_FEATURE_DSP
308
+ #if defined(__ARM_FEATURE_DSP) && __ARM_FEATURE_DSP
309
309
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
310
310
  __smlabb(int32_t __a, int32_t __b, int32_t __c) {
311
311
  return __builtin_arm_smlabb(__a, __b, __c);
@@ -334,13 +334,13 @@ __smlawt(int32_t __a, int32_t __b, int32_t __c) {
334
334
 
335
335
 
336
336
  /* 9.5.4 Parallel 16-bit saturation */
337
- #if __ARM_FEATURE_SIMD32
337
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
338
338
  #define __ssat16(x, y) __builtin_arm_ssat16(x, y)
339
339
  #define __usat16(x, y) __builtin_arm_usat16(x, y)
340
340
  #endif
341
341
 
342
342
  /* 9.5.5 Packing and unpacking */
343
- #if __ARM_FEATURE_SIMD32
343
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
344
344
  typedef int32_t int8x4_t;
345
345
  typedef int32_t int16x2_t;
346
346
  typedef uint32_t uint8x4_t;
@@ -365,7 +365,7 @@ __uxtb16(int8x4_t __a) {
365
365
  #endif
366
366
 
367
367
  /* 9.5.6 Parallel selection */
368
- #if __ARM_FEATURE_SIMD32
368
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
369
369
  static __inline__ uint8x4_t __attribute__((__always_inline__, __nodebug__))
370
370
  __sel(uint8x4_t __a, uint8x4_t __b) {
371
371
  return __builtin_arm_sel(__a, __b);
@@ -373,7 +373,7 @@ __sel(uint8x4_t __a, uint8x4_t __b) {
373
373
  #endif
374
374
 
375
375
  /* 9.5.7 Parallel 8-bit addition and subtraction */
376
- #if __ARM_FEATURE_SIMD32
376
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
377
377
  static __inline__ int8x4_t __attribute__((__always_inline__, __nodebug__))
378
378
  __qadd8(int8x4_t __a, int8x4_t __b) {
379
379
  return __builtin_arm_qadd8(__a, __b);
@@ -425,7 +425,7 @@ __usub8(uint8x4_t __a, uint8x4_t __b) {
425
425
  #endif
426
426
 
427
427
  /* 9.5.8 Sum of 8-bit absolute differences */
428
- #if __ARM_FEATURE_SIMD32
428
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
429
429
  static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
430
430
  __usad8(uint8x4_t __a, uint8x4_t __b) {
431
431
  return __builtin_arm_usad8(__a, __b);
@@ -437,7 +437,7 @@ __usada8(uint8x4_t __a, uint8x4_t __b, uint32_t __c) {
437
437
  #endif
438
438
 
439
439
  /* 9.5.9 Parallel 16-bit addition and subtraction */
440
- #if __ARM_FEATURE_SIMD32
440
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
441
441
  static __inline__ int16x2_t __attribute__((__always_inline__, __nodebug__))
442
442
  __qadd16(int16x2_t __a, int16x2_t __b) {
443
443
  return __builtin_arm_qadd16(__a, __b);
@@ -537,7 +537,7 @@ __usub16(uint16x2_t __a, uint16x2_t __b) {
537
537
  #endif
538
538
 
539
539
  /* 9.5.10 Parallel 16-bit multiplications */
540
- #if __ARM_FEATURE_SIMD32
540
+ #if defined(__ARM_FEATURE_SIMD32) && __ARM_FEATURE_SIMD32
541
541
  static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
542
542
  __smlad(int16x2_t __a, int16x2_t __b, int32_t __c) {
543
543
  return __builtin_arm_smlad(__a, __b, __c);
@@ -589,155 +589,156 @@ __smusdx(int16x2_t __a, int16x2_t __b) {
589
589
  #endif
590
590
 
591
591
  /* 9.7 CRC32 intrinsics */
592
- #if __ARM_FEATURE_CRC32
593
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
592
+ #if (defined(__ARM_FEATURE_CRC32) && __ARM_FEATURE_CRC32) || \
593
+ (defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE)
594
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
594
595
  __crc32b(uint32_t __a, uint8_t __b) {
595
596
  return __builtin_arm_crc32b(__a, __b);
596
597
  }
597
598
 
598
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
599
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
599
600
  __crc32h(uint32_t __a, uint16_t __b) {
600
601
  return __builtin_arm_crc32h(__a, __b);
601
602
  }
602
603
 
603
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
604
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
604
605
  __crc32w(uint32_t __a, uint32_t __b) {
605
606
  return __builtin_arm_crc32w(__a, __b);
606
607
  }
607
608
 
608
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
609
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
609
610
  __crc32d(uint32_t __a, uint64_t __b) {
610
611
  return __builtin_arm_crc32d(__a, __b);
611
612
  }
612
613
 
613
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
614
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
614
615
  __crc32cb(uint32_t __a, uint8_t __b) {
615
616
  return __builtin_arm_crc32cb(__a, __b);
616
617
  }
617
618
 
618
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
619
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
619
620
  __crc32ch(uint32_t __a, uint16_t __b) {
620
621
  return __builtin_arm_crc32ch(__a, __b);
621
622
  }
622
623
 
623
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
624
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
624
625
  __crc32cw(uint32_t __a, uint32_t __b) {
625
626
  return __builtin_arm_crc32cw(__a, __b);
626
627
  }
627
628
 
628
- static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__))
629
+ static __inline__ uint32_t __attribute__((__always_inline__, __nodebug__, target("crc")))
629
630
  __crc32cd(uint32_t __a, uint64_t __b) {
630
631
  return __builtin_arm_crc32cd(__a, __b);
631
632
  }
632
633
  #endif
633
634
 
634
635
  /* Armv8.3-A Javascript conversion intrinsic */
635
- #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_JCVT)
636
- static __inline__ int32_t __attribute__((__always_inline__, __nodebug__))
636
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
637
+ static __inline__ int32_t __attribute__((__always_inline__, __nodebug__, target("v8.3a")))
637
638
  __jcvt(double __a) {
638
639
  return __builtin_arm_jcvt(__a);
639
640
  }
640
641
  #endif
641
642
 
642
643
  /* Armv8.5-A FP rounding intrinsics */
643
- #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_FRINT)
644
- static __inline__ float __attribute__((__always_inline__, __nodebug__))
645
- __frint32zf(float __a) {
646
- return __builtin_arm_frint32zf(__a);
644
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
645
+ static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
646
+ __rint32zf(float __a) {
647
+ return __builtin_arm_rint32zf(__a);
647
648
  }
648
649
 
649
- static __inline__ double __attribute__((__always_inline__, __nodebug__))
650
- __frint32z(double __a) {
651
- return __builtin_arm_frint32z(__a);
650
+ static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
651
+ __rint32z(double __a) {
652
+ return __builtin_arm_rint32z(__a);
652
653
  }
653
654
 
654
- static __inline__ float __attribute__((__always_inline__, __nodebug__))
655
- __frint64zf(float __a) {
656
- return __builtin_arm_frint64zf(__a);
655
+ static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
656
+ __rint64zf(float __a) {
657
+ return __builtin_arm_rint64zf(__a);
657
658
  }
658
659
 
659
- static __inline__ double __attribute__((__always_inline__, __nodebug__))
660
- __frint64z(double __a) {
661
- return __builtin_arm_frint64z(__a);
660
+ static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
661
+ __rint64z(double __a) {
662
+ return __builtin_arm_rint64z(__a);
662
663
  }
663
664
 
664
- static __inline__ float __attribute__((__always_inline__, __nodebug__))
665
- __frint32xf(float __a) {
666
- return __builtin_arm_frint32xf(__a);
665
+ static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
666
+ __rint32xf(float __a) {
667
+ return __builtin_arm_rint32xf(__a);
667
668
  }
668
669
 
669
- static __inline__ double __attribute__((__always_inline__, __nodebug__))
670
- __frint32x(double __a) {
671
- return __builtin_arm_frint32x(__a);
670
+ static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
671
+ __rint32x(double __a) {
672
+ return __builtin_arm_rint32x(__a);
672
673
  }
673
674
 
674
- static __inline__ float __attribute__((__always_inline__, __nodebug__))
675
- __frint64xf(float __a) {
676
- return __builtin_arm_frint64xf(__a);
675
+ static __inline__ float __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
676
+ __rint64xf(float __a) {
677
+ return __builtin_arm_rint64xf(__a);
677
678
  }
678
679
 
679
- static __inline__ double __attribute__((__always_inline__, __nodebug__))
680
- __frint64x(double __a) {
681
- return __builtin_arm_frint64x(__a);
680
+ static __inline__ double __attribute__((__always_inline__, __nodebug__, target("v8.5a")))
681
+ __rint64x(double __a) {
682
+ return __builtin_arm_rint64x(__a);
682
683
  }
683
684
  #endif
684
685
 
685
686
  /* Armv8.7-A load/store 64-byte intrinsics */
686
- #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_LS64)
687
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
687
688
  typedef struct {
688
689
  uint64_t val[8];
689
690
  } data512_t;
690
691
 
691
- static __inline__ data512_t __attribute__((__always_inline__, __nodebug__))
692
+ static __inline__ data512_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
692
693
  __arm_ld64b(const void *__addr) {
693
- data512_t __value;
694
- __builtin_arm_ld64b(__addr, __value.val);
695
- return __value;
694
+ data512_t __value;
695
+ __builtin_arm_ld64b(__addr, __value.val);
696
+ return __value;
696
697
  }
697
- static __inline__ void __attribute__((__always_inline__, __nodebug__))
698
+ static __inline__ void __attribute__((__always_inline__, __nodebug__, target("ls64")))
698
699
  __arm_st64b(void *__addr, data512_t __value) {
699
- __builtin_arm_st64b(__addr, __value.val);
700
+ __builtin_arm_st64b(__addr, __value.val);
700
701
  }
701
- static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
702
+ static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
702
703
  __arm_st64bv(void *__addr, data512_t __value) {
703
- return __builtin_arm_st64bv(__addr, __value.val);
704
+ return __builtin_arm_st64bv(__addr, __value.val);
704
705
  }
705
- static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__))
706
+ static __inline__ uint64_t __attribute__((__always_inline__, __nodebug__, target("ls64")))
706
707
  __arm_st64bv0(void *__addr, data512_t __value) {
707
- return __builtin_arm_st64bv0(__addr, __value.val);
708
+ return __builtin_arm_st64bv0(__addr, __value.val);
708
709
  }
709
710
  #endif
710
711
 
711
712
  /* 10.1 Special register intrinsics */
712
713
  #define __arm_rsr(sysreg) __builtin_arm_rsr(sysreg)
713
714
  #define __arm_rsr64(sysreg) __builtin_arm_rsr64(sysreg)
715
+ #define __arm_rsr128(sysreg) __builtin_arm_rsr128(sysreg)
714
716
  #define __arm_rsrp(sysreg) __builtin_arm_rsrp(sysreg)
715
717
  #define __arm_rsrf(sysreg) __builtin_bit_cast(float, __arm_rsr(sysreg))
716
718
  #define __arm_rsrf64(sysreg) __builtin_bit_cast(double, __arm_rsr64(sysreg))
717
719
  #define __arm_wsr(sysreg, v) __builtin_arm_wsr(sysreg, v)
718
720
  #define __arm_wsr64(sysreg, v) __builtin_arm_wsr64(sysreg, v)
721
+ #define __arm_wsr128(sysreg, v) __builtin_arm_wsr128(sysreg, v)
719
722
  #define __arm_wsrp(sysreg, v) __builtin_arm_wsrp(sysreg, v)
720
723
  #define __arm_wsrf(sysreg, v) __arm_wsr(sysreg, __builtin_bit_cast(uint32_t, v))
721
724
  #define __arm_wsrf64(sysreg, v) __arm_wsr64(sysreg, __builtin_bit_cast(uint64_t, v))
722
725
 
723
726
  /* Memory Tagging Extensions (MTE) Intrinsics */
724
- #if __ARM_FEATURE_MEMORY_TAGGING
727
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
725
728
  #define __arm_mte_create_random_tag(__ptr, __mask) __builtin_arm_irg(__ptr, __mask)
726
729
  #define __arm_mte_increment_tag(__ptr, __tag_offset) __builtin_arm_addg(__ptr, __tag_offset)
727
730
  #define __arm_mte_exclude_tag(__ptr, __excluded) __builtin_arm_gmi(__ptr, __excluded)
728
731
  #define __arm_mte_get_tag(__ptr) __builtin_arm_ldg(__ptr)
729
732
  #define __arm_mte_set_tag(__ptr) __builtin_arm_stg(__ptr)
730
733
  #define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
731
- #endif
732
734
 
733
735
  /* Memory Operations Intrinsics */
734
- #if __ARM_FEATURE_MOPS && __ARM_FEATURE_MEMORY_TAGGING
735
736
  #define __arm_mops_memset_tag(__tagged_address, __value, __size) \
736
737
  __builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
737
738
  #endif
738
739
 
739
740
  /* Transactional Memory Extension (TME) Intrinsics */
740
- #if __ARM_FEATURE_TME
741
+ #if defined(__ARM_FEATURE_TME) && __ARM_FEATURE_TME
741
742
 
742
743
  #define _TMFAILURE_REASON 0x00007fffu
743
744
  #define _TMFAILURE_RTRY 0x00008000u
@@ -759,12 +760,12 @@ __arm_st64bv0(void *__addr, data512_t __value) {
759
760
  #endif /* __ARM_FEATURE_TME */
760
761
 
761
762
  /* Armv8.5-A Random number generation intrinsics */
762
- #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_RNG)
763
- static __inline__ int __attribute__((__always_inline__, __nodebug__))
763
+ #if defined(__ARM_64BIT_STATE) && __ARM_64BIT_STATE
764
+ static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
764
765
  __rndr(uint64_t *__p) {
765
766
  return __builtin_arm_rndr(__p);
766
767
  }
767
- static __inline__ int __attribute__((__always_inline__, __nodebug__))
768
+ static __inline__ int __attribute__((__always_inline__, __nodebug__, target("rand")))
768
769
  __rndrrs(uint64_t *__p) {
769
770
  return __builtin_arm_rndrrs(__p);
770
771
  }