@cpp-linter/clang-tidy-win32-x64 12.0.1 → 14.0.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 (178) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_complex_builtins.h +3 -3
  4. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_device_functions.h +174 -102
  5. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_intrinsics.h +32 -0
  6. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_libdevice_declares.h +6 -0
  7. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_math.h +3 -3
  8. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_runtime_wrapper.h +68 -8
  9. package/lib/clang/14.0.0/include/__clang_cuda_texture_intrinsics.h +740 -0
  10. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_cmath.h +272 -94
  11. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_libdevice_declares.h +24 -12
  12. package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_hip_math.h +48 -2
  13. package/lib/clang/14.0.0/include/__clang_hip_runtime_wrapper.h +137 -0
  14. package/lib/clang/{12.0.1 → 14.0.0}/include/__wmmintrin_aes.h +1 -1
  15. package/lib/clang/{12.0.1 → 14.0.0}/include/altivec.h +1348 -496
  16. package/lib/clang/{12.0.1 → 14.0.0}/include/ammintrin.h +4 -0
  17. package/lib/clang/14.0.0/include/amxintrin.h +494 -0
  18. package/lib/clang/{12.0.1 → 14.0.0}/include/arm_acle.h +61 -0
  19. package/lib/clang/{12.0.1 → 14.0.0}/include/arm_neon.h +5544 -4634
  20. package/lib/clang/14.0.0/include/arm_neon_sve_bridge.h +184 -0
  21. package/lib/clang/{12.0.1 → 14.0.0}/include/arm_sve.h +11791 -5896
  22. package/lib/clang/{12.0.1 → 14.0.0}/include/avx2intrin.h +181 -181
  23. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bf16intrin.h +3 -3
  24. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bwintrin.h +71 -71
  25. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512dqintrin.h +365 -365
  26. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512erintrin.h +102 -102
  27. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512fintrin.h +1750 -1606
  28. package/lib/clang/14.0.0/include/avx512fp16intrin.h +3349 -0
  29. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmi2intrin.h +48 -48
  30. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbf16intrin.h +51 -3
  31. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbwintrin.h +94 -94
  32. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vldqintrin.h +134 -134
  33. package/lib/clang/14.0.0/include/avx512vlfp16intrin.h +2068 -0
  34. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlintrin.h +563 -563
  35. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvbmi2intrin.h +96 -96
  36. package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvnniintrin.h +8 -8
  37. package/lib/clang/{12.0.1 → 14.0.0}/include/avxintrin.h +189 -192
  38. package/lib/clang/14.0.0/include/builtins.h +16 -0
  39. package/lib/clang/{12.0.1 → 14.0.0}/include/cetintrin.h +10 -0
  40. package/lib/clang/{12.0.1 → 14.0.0}/include/cpuid.h +2 -1
  41. package/lib/clang/14.0.0/include/crc32intrin.h +100 -0
  42. package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/complex +8 -0
  43. package/lib/clang/{12.0.1 → 14.0.0}/include/emmintrin.h +21 -17
  44. package/lib/clang/{12.0.1 → 14.0.0}/include/f16cintrin.h +4 -4
  45. package/lib/clang/{12.0.1 → 14.0.0}/include/float.h +15 -6
  46. package/lib/clang/{12.0.1 → 14.0.0}/include/gfniintrin.h +47 -48
  47. package/lib/clang/14.0.0/include/hexagon_circ_brev_intrinsics.h +298 -0
  48. package/lib/clang/14.0.0/include/hexagon_protos.h +8439 -0
  49. package/lib/clang/14.0.0/include/hexagon_types.h +2621 -0
  50. package/lib/clang/14.0.0/include/hvx_hexagon_protos.h +5183 -0
  51. package/lib/clang/{12.0.1 → 14.0.0}/include/ia32intrin.h +6 -6
  52. package/lib/clang/{12.0.1 → 14.0.0}/include/immintrin.h +31 -13
  53. package/lib/clang/{12.0.1 → 14.0.0}/include/intrin.h +63 -19
  54. package/lib/clang/{12.0.1 → 14.0.0}/include/keylockerintrin.h +32 -8
  55. package/lib/clang/{12.0.1 → 14.0.0}/include/limits.h +20 -0
  56. package/lib/clang/{12.0.1 → 14.0.0}/include/mmintrin.h +4 -0
  57. package/lib/clang/{12.0.1 → 14.0.0}/include/nmmintrin.h +4 -0
  58. package/lib/clang/{12.0.1 → 14.0.0}/include/opencl-c-base.h +206 -7
  59. package/lib/clang/{12.0.1 → 14.0.0}/include/opencl-c.h +2187 -797
  60. package/lib/clang/14.0.0/include/openmp_wrappers/__clang_openmp_device_functions.h +106 -0
  61. package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/cmath +54 -0
  62. package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex +11 -8
  63. package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex.h +9 -1
  64. package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/math.h +10 -0
  65. package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/new +2 -24
  66. package/lib/clang/{12.0.1 → 14.0.0}/include/pmmintrin.h +4 -0
  67. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/emmintrin.h +3 -2
  68. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/mm_malloc.h +2 -2
  69. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/mmintrin.h +3 -2
  70. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/pmmintrin.h +3 -2
  71. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/smmintrin.h +4 -3
  72. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/tmmintrin.h +3 -2
  73. package/lib/clang/{12.0.1 → 14.0.0}/include/ppc_wrappers/xmmintrin.h +3 -2
  74. package/lib/clang/{12.0.1 → 14.0.0}/include/prfchwintrin.h +5 -2
  75. package/lib/clang/14.0.0/include/riscv_vector.h +95423 -0
  76. package/lib/clang/{12.0.1 → 14.0.0}/include/smmintrin.h +80 -159
  77. package/lib/clang/{12.0.1 → 14.0.0}/include/stdatomic.h +14 -1
  78. package/lib/clang/{12.0.1 → 14.0.0}/include/stdint.h +168 -0
  79. package/lib/clang/{12.0.1 → 14.0.0}/include/tmmintrin.h +10 -6
  80. package/lib/clang/{12.0.1 → 14.0.0}/include/uintrintrin.h +7 -0
  81. package/lib/clang/{12.0.1 → 14.0.0}/include/unwind.h +2 -1
  82. package/lib/clang/{12.0.1 → 14.0.0}/include/vaesintrin.h +22 -21
  83. package/lib/clang/{12.0.1 → 14.0.0}/include/vecintrin.h +206 -77
  84. package/lib/clang/{12.0.1 → 14.0.0}/include/vpclmulqdqintrin.h +8 -6
  85. package/lib/clang/14.0.0/include/wasm_simd128.h +1877 -0
  86. package/lib/clang/{12.0.1 → 14.0.0}/include/wmmintrin.h +4 -0
  87. package/lib/clang/{12.0.1 → 14.0.0}/include/x86gprintrin.h +12 -0
  88. package/lib/clang/{12.0.1 → 14.0.0}/include/xmmintrin.h +9 -5
  89. package/lib/clang/{12.0.1 → 14.0.0}/include/xopintrin.h +31 -31
  90. package/package.json +6 -6
  91. package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +0 -69
  92. package/lib/clang/12.0.1/include/amxintrin.h +0 -278
  93. package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -42
  94. package/lib/clang/12.0.1/include/wasm_simd128.h +0 -1167
  95. /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_builtin_vars.h +0 -0
  96. /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_cmath.h +0 -0
  97. /package/lib/clang/{12.0.1 → 14.0.0}/include/__clang_cuda_math_forward_declares.h +0 -0
  98. /package/lib/clang/{12.0.1 → 14.0.0}/include/__stddef_max_align_t.h +0 -0
  99. /package/lib/clang/{12.0.1 → 14.0.0}/include/__wmmintrin_pclmul.h +0 -0
  100. /package/lib/clang/{12.0.1 → 14.0.0}/include/adxintrin.h +0 -0
  101. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm64intr.h +0 -0
  102. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_bf16.h +0 -0
  103. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_cde.h +0 -0
  104. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_cmse.h +0 -0
  105. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_fp16.h +0 -0
  106. /package/lib/clang/{12.0.1 → 14.0.0}/include/arm_mve.h +0 -0
  107. /package/lib/clang/{12.0.1 → 14.0.0}/include/armintr.h +0 -0
  108. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512bitalgintrin.h +0 -0
  109. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512cdintrin.h +0 -0
  110. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512ifmaintrin.h +0 -0
  111. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512ifmavlintrin.h +0 -0
  112. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512pfintrin.h +0 -0
  113. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmiintrin.h +0 -0
  114. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vbmivlintrin.h +0 -0
  115. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlbitalgintrin.h +0 -0
  116. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlcdintrin.h +0 -0
  117. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vlvp2intersectintrin.h +0 -0
  118. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vnniintrin.h +0 -0
  119. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vp2intersectintrin.h +0 -0
  120. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vpopcntdqintrin.h +0 -0
  121. /package/lib/clang/{12.0.1 → 14.0.0}/include/avx512vpopcntdqvlintrin.h +0 -0
  122. /package/lib/clang/{12.0.1 → 14.0.0}/include/avxvnniintrin.h +0 -0
  123. /package/lib/clang/{12.0.1 → 14.0.0}/include/bmi2intrin.h +0 -0
  124. /package/lib/clang/{12.0.1 → 14.0.0}/include/bmiintrin.h +0 -0
  125. /package/lib/clang/{12.0.1 → 14.0.0}/include/cet.h +0 -0
  126. /package/lib/clang/{12.0.1 → 14.0.0}/include/cldemoteintrin.h +0 -0
  127. /package/lib/clang/{12.0.1 → 14.0.0}/include/clflushoptintrin.h +0 -0
  128. /package/lib/clang/{12.0.1 → 14.0.0}/include/clwbintrin.h +0 -0
  129. /package/lib/clang/{12.0.1 → 14.0.0}/include/clzerointrin.h +0 -0
  130. /package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/algorithm +0 -0
  131. /package/lib/clang/{12.0.1 → 14.0.0}/include/cuda_wrappers/new +0 -0
  132. /package/lib/clang/{12.0.1 → 14.0.0}/include/enqcmdintrin.h +0 -0
  133. /package/lib/clang/{12.0.1 → 14.0.0}/include/fma4intrin.h +0 -0
  134. /package/lib/clang/{12.0.1 → 14.0.0}/include/fmaintrin.h +0 -0
  135. /package/lib/clang/{12.0.1 → 14.0.0}/include/fxsrintrin.h +0 -0
  136. /package/lib/clang/{12.0.1 → 14.0.0}/include/hresetintrin.h +0 -0
  137. /package/lib/clang/{12.0.1 → 14.0.0}/include/htmintrin.h +0 -0
  138. /package/lib/clang/{12.0.1 → 14.0.0}/include/htmxlintrin.h +0 -0
  139. /package/lib/clang/{12.0.1 → 14.0.0}/include/inttypes.h +0 -0
  140. /package/lib/clang/{12.0.1 → 14.0.0}/include/invpcidintrin.h +0 -0
  141. /package/lib/clang/{12.0.1 → 14.0.0}/include/iso646.h +0 -0
  142. /package/lib/clang/{12.0.1 → 14.0.0}/include/lwpintrin.h +0 -0
  143. /package/lib/clang/{12.0.1 → 14.0.0}/include/lzcntintrin.h +0 -0
  144. /package/lib/clang/{12.0.1 → 14.0.0}/include/mm3dnow.h +0 -0
  145. /package/lib/clang/{12.0.1 → 14.0.0}/include/mm_malloc.h +0 -0
  146. /package/lib/clang/{12.0.1 → 14.0.0}/include/module.modulemap +0 -0
  147. /package/lib/clang/{12.0.1 → 14.0.0}/include/movdirintrin.h +0 -0
  148. /package/lib/clang/{12.0.1 → 14.0.0}/include/msa.h +0 -0
  149. /package/lib/clang/{12.0.1 → 14.0.0}/include/mwaitxintrin.h +0 -0
  150. /package/lib/clang/{12.0.1 → 14.0.0}/include/openmp_wrappers/complex_cmath.h +0 -0
  151. /package/lib/clang/{12.0.1 → 14.0.0}/include/pconfigintrin.h +0 -0
  152. /package/lib/clang/{12.0.1 → 14.0.0}/include/pkuintrin.h +0 -0
  153. /package/lib/clang/{12.0.1 → 14.0.0}/include/popcntintrin.h +0 -0
  154. /package/lib/clang/{12.0.1 → 14.0.0}/include/ptwriteintrin.h +0 -0
  155. /package/lib/clang/{12.0.1 → 14.0.0}/include/rdseedintrin.h +0 -0
  156. /package/lib/clang/{12.0.1 → 14.0.0}/include/rtmintrin.h +0 -0
  157. /package/lib/clang/{12.0.1 → 14.0.0}/include/s390intrin.h +0 -0
  158. /package/lib/clang/{12.0.1 → 14.0.0}/include/serializeintrin.h +0 -0
  159. /package/lib/clang/{12.0.1 → 14.0.0}/include/sgxintrin.h +0 -0
  160. /package/lib/clang/{12.0.1 → 14.0.0}/include/shaintrin.h +0 -0
  161. /package/lib/clang/{12.0.1 → 14.0.0}/include/stdalign.h +0 -0
  162. /package/lib/clang/{12.0.1 → 14.0.0}/include/stdarg.h +0 -0
  163. /package/lib/clang/{12.0.1 → 14.0.0}/include/stdbool.h +0 -0
  164. /package/lib/clang/{12.0.1 → 14.0.0}/include/stddef.h +0 -0
  165. /package/lib/clang/{12.0.1 → 14.0.0}/include/stdnoreturn.h +0 -0
  166. /package/lib/clang/{12.0.1 → 14.0.0}/include/tbmintrin.h +0 -0
  167. /package/lib/clang/{12.0.1 → 14.0.0}/include/tgmath.h +0 -0
  168. /package/lib/clang/{12.0.1 → 14.0.0}/include/tsxldtrkintrin.h +0 -0
  169. /package/lib/clang/{12.0.1 → 14.0.0}/include/vadefs.h +0 -0
  170. /package/lib/clang/{12.0.1 → 14.0.0}/include/varargs.h +0 -0
  171. /package/lib/clang/{12.0.1 → 14.0.0}/include/waitpkgintrin.h +0 -0
  172. /package/lib/clang/{12.0.1 → 14.0.0}/include/wbnoinvdintrin.h +0 -0
  173. /package/lib/clang/{12.0.1 → 14.0.0}/include/x86intrin.h +0 -0
  174. /package/lib/clang/{12.0.1 → 14.0.0}/include/xsavecintrin.h +0 -0
  175. /package/lib/clang/{12.0.1 → 14.0.0}/include/xsaveintrin.h +0 -0
  176. /package/lib/clang/{12.0.1 → 14.0.0}/include/xsaveoptintrin.h +0 -0
  177. /package/lib/clang/{12.0.1 → 14.0.0}/include/xsavesintrin.h +0 -0
  178. /package/lib/clang/{12.0.1 → 14.0.0}/include/xtestintrin.h +0 -0
@@ -10,6 +10,10 @@
10
10
  #ifndef __AMMINTRIN_H
11
11
  #define __AMMINTRIN_H
12
12
 
13
+ #if !defined(__i386__) && !defined(__x86_64__)
14
+ #error "This header is only meant to be used on x86 and x64 architecture"
15
+ #endif
16
+
13
17
  #include <pmmintrin.h>
14
18
 
15
19
  /* Define the default attributes for the functions in this file. */
@@ -0,0 +1,494 @@
1
+ /*===--------------- amxintrin.h - AMX intrinsics -*- C/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 <amxintrin.h> directly; include <immintrin.h> instead."
12
+ #endif /* __IMMINTRIN_H */
13
+
14
+ #ifndef __AMXINTRIN_H
15
+ #define __AMXINTRIN_H
16
+ #ifdef __x86_64__
17
+
18
+ /* Define the default attributes for the functions in this file. */
19
+ #define __DEFAULT_FN_ATTRS_TILE \
20
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-tile")))
21
+ #define __DEFAULT_FN_ATTRS_INT8 \
22
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
23
+ #define __DEFAULT_FN_ATTRS_BF16 \
24
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-bf16")))
25
+
26
+ /// Load tile configuration from a 64-byte memory location specified by
27
+ /// "mem_addr". The tile configuration includes the tile type palette, the
28
+ /// number of bytes per row, and the number of rows. If the specified
29
+ /// palette_id is zero, that signifies the init state for both the tile
30
+ /// config and the tile data, and the tiles are zeroed. Any invalid
31
+ /// configurations will result in #GP fault.
32
+ ///
33
+ /// \headerfile <immintrin.h>
34
+ ///
35
+ /// This intrinsic corresponds to the <c> LDTILECFG </c> instruction.
36
+ ///
37
+ /// \param __config
38
+ /// A pointer to 512-bits configuration
39
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
40
+ _tile_loadconfig(const void *__config) {
41
+ __builtin_ia32_tile_loadconfig(__config);
42
+ }
43
+
44
+ /// Stores the current tile configuration to a 64-byte memory location
45
+ /// specified by "mem_addr". The tile configuration includes the tile type
46
+ /// palette, the number of bytes per row, and the number of rows. If tiles
47
+ /// are not configured, all zeroes will be stored to memory.
48
+ ///
49
+ /// \headerfile <immintrin.h>
50
+ ///
51
+ /// This intrinsic corresponds to the <c> STTILECFG </c> instruction.
52
+ ///
53
+ /// \param __config
54
+ /// A pointer to 512-bits configuration
55
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
56
+ _tile_storeconfig(void *__config) {
57
+ __builtin_ia32_tile_storeconfig(__config);
58
+ }
59
+
60
+ /// Release the tile configuration to return to the init state, which
61
+ /// releases all storage it currently holds.
62
+ ///
63
+ /// \headerfile <immintrin.h>
64
+ ///
65
+ /// This intrinsic corresponds to the <c> TILERELEASE </c> instruction.
66
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
67
+ __builtin_ia32_tilerelease();
68
+ }
69
+
70
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
71
+ /// destination tile "dst" using the tile configuration previously configured
72
+ /// via "_tile_loadconfig".
73
+ ///
74
+ /// \headerfile <immintrin.h>
75
+ ///
76
+ /// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
77
+ ///
78
+ /// \param dst
79
+ /// A destination tile. Max size is 1024 Bytes.
80
+ /// \param base
81
+ /// A pointer to base address.
82
+ /// \param stride
83
+ /// The stride between the rows' data to be loaded in memory.
84
+ #define _tile_loadd(dst, base, stride) \
85
+ __builtin_ia32_tileloadd64((dst), ((const void *)(base)), \
86
+ (__SIZE_TYPE__)(stride))
87
+
88
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
89
+ /// destination tile "dst" using the tile configuration previously configured
90
+ /// via "_tile_loadconfig". This intrinsic provides a hint to the implementation
91
+ /// that the data will likely not be reused in the near future and the data
92
+ /// caching can be optimized accordingly.
93
+ ///
94
+ /// \headerfile <immintrin.h>
95
+ ///
96
+ /// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
97
+ ///
98
+ /// \param dst
99
+ /// A destination tile. Max size is 1024 Bytes.
100
+ /// \param base
101
+ /// A pointer to base address.
102
+ /// \param stride
103
+ /// The stride between the rows' data to be loaded in memory.
104
+ #define _tile_stream_loadd(dst, base, stride) \
105
+ __builtin_ia32_tileloaddt164((dst), ((const void *)(base)), \
106
+ (__SIZE_TYPE__)(stride))
107
+
108
+ /// Store the tile specified by "src" to memory specifieid by "base" address and
109
+ /// "stride" using the tile configuration previously configured via
110
+ /// "_tile_loadconfig".
111
+ ///
112
+ /// \headerfile <immintrin.h>
113
+ ///
114
+ /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
115
+ ///
116
+ /// \param dst
117
+ /// A destination tile. Max size is 1024 Bytes.
118
+ /// \param base
119
+ /// A pointer to base address.
120
+ /// \param stride
121
+ /// The stride between the rows' data to be stored in memory.
122
+ #define _tile_stored(dst, base, stride) \
123
+ __builtin_ia32_tilestored64((dst), ((void *)(base)), (__SIZE_TYPE__)(stride))
124
+
125
+ /// Zero the tile specified by "tdest".
126
+ ///
127
+ /// \headerfile <immintrin.h>
128
+ ///
129
+ /// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
130
+ ///
131
+ /// \param tile
132
+ /// The destination tile to be zero. Max size is 1024 Bytes.
133
+ #define _tile_zero(tile) __builtin_ia32_tilezero((tile))
134
+
135
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
136
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
137
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
138
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
139
+ /// and store the 32-bit result back to tile "dst".
140
+ ///
141
+ /// \headerfile <immintrin.h>
142
+ ///
143
+ /// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
144
+ ///
145
+ /// \param dst
146
+ /// The destination tile. Max size is 1024 Bytes.
147
+ /// \param src0
148
+ /// The 1st source tile. Max size is 1024 Bytes.
149
+ /// \param src1
150
+ /// The 2nd source tile. Max size is 1024 Bytes.
151
+ #define _tile_dpbssd(dst, src0, src1) \
152
+ __builtin_ia32_tdpbssd((dst), (src0), (src1))
153
+
154
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
155
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
156
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
157
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
158
+ /// in "dst", and store the 32-bit result back to tile "dst".
159
+ ///
160
+ /// \headerfile <immintrin.h>
161
+ ///
162
+ /// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
163
+ ///
164
+ /// \param dst
165
+ /// The destination tile. Max size is 1024 Bytes.
166
+ /// \param src0
167
+ /// The 1st source tile. Max size is 1024 Bytes.
168
+ /// \param src1
169
+ /// The 2nd source tile. Max size is 1024 Bytes.
170
+ #define _tile_dpbsud(dst, src0, src1) \
171
+ __builtin_ia32_tdpbsud((dst), (src0), (src1))
172
+
173
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
174
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
175
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
176
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
177
+ /// and store the 32-bit result back to tile "dst".
178
+ ///
179
+ /// \headerfile <immintrin.h>
180
+ ///
181
+ /// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
182
+ ///
183
+ /// \param dst
184
+ /// The destination tile. Max size is 1024 Bytes.
185
+ /// \param src0
186
+ /// The 1st source tile. Max size is 1024 Bytes.
187
+ /// \param src1
188
+ /// The 2nd source tile. Max size is 1024 Bytes.
189
+ #define _tile_dpbusd(dst, src0, src1) \
190
+ __builtin_ia32_tdpbusd((dst), (src0), (src1))
191
+
192
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
193
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
194
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
195
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
196
+ /// "dst", and store the 32-bit result back to tile "dst".
197
+ ///
198
+ /// \headerfile <immintrin.h>
199
+ ///
200
+ /// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
201
+ ///
202
+ /// \param dst
203
+ /// The destination tile. Max size is 1024 Bytes.
204
+ /// \param src0
205
+ /// The 1st source tile. Max size is 1024 Bytes.
206
+ /// \param src1
207
+ /// The 2nd source tile. Max size is 1024 Bytes.
208
+ #define _tile_dpbuud(dst, src0, src1) \
209
+ __builtin_ia32_tdpbuud((dst), (src0), (src1))
210
+
211
+ /// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
212
+ /// src1, accumulating the intermediate single-precision (32-bit) floating-point
213
+ /// elements with elements in "dst", and store the 32-bit result back to tile
214
+ /// "dst".
215
+ ///
216
+ /// \headerfile <immintrin.h>
217
+ ///
218
+ /// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
219
+ ///
220
+ /// \param dst
221
+ /// The destination tile. Max size is 1024 Bytes.
222
+ /// \param src0
223
+ /// The 1st source tile. Max size is 1024 Bytes.
224
+ /// \param src1
225
+ /// The 2nd source tile. Max size is 1024 Bytes.
226
+ #define _tile_dpbf16ps(dst, src0, src1) \
227
+ __builtin_ia32_tdpbf16ps((dst), (src0), (src1))
228
+
229
+ /// AMX tile register size can be configured, the maximum size is 16x64=1024
230
+ /// bytes. Since there is no 2D type in llvm IR, we use vector type to
231
+ /// represent 2D tile and the fixed size is maximum amx tile register size.
232
+ typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64)));
233
+
234
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
235
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
236
+ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
237
+ __SIZE_TYPE__ stride) {
238
+ return __builtin_ia32_tileloadd64_internal(m, n, base,
239
+ (__SIZE_TYPE__)(stride));
240
+ }
241
+
242
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
243
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
244
+ _tile_loaddt1_internal(unsigned short m, unsigned short n, const void *base,
245
+ __SIZE_TYPE__ stride) {
246
+ return __builtin_ia32_tileloaddt164_internal(m, n, base,
247
+ (__SIZE_TYPE__)(stride));
248
+ }
249
+
250
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
251
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
252
+ _tile_dpbssd_internal(unsigned short m, unsigned short n, unsigned short k,
253
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
254
+ return __builtin_ia32_tdpbssd_internal(m, n, k, dst, src1, src2);
255
+ }
256
+
257
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
258
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
259
+ _tile_dpbsud_internal(unsigned short m, unsigned short n, unsigned short k,
260
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
261
+ return __builtin_ia32_tdpbsud_internal(m, n, k, dst, src1, src2);
262
+ }
263
+
264
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
265
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
266
+ _tile_dpbusd_internal(unsigned short m, unsigned short n, unsigned short k,
267
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
268
+ return __builtin_ia32_tdpbusd_internal(m, n, k, dst, src1, src2);
269
+ }
270
+
271
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
272
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
273
+ _tile_dpbuud_internal(unsigned short m, unsigned short n, unsigned short k,
274
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
275
+ return __builtin_ia32_tdpbuud_internal(m, n, k, dst, src1, src2);
276
+ }
277
+
278
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
279
+ static __inline__ void __DEFAULT_FN_ATTRS_INT8
280
+ _tile_stored_internal(unsigned short m, unsigned short n, void *base,
281
+ __SIZE_TYPE__ stride, _tile1024i tile) {
282
+ return __builtin_ia32_tilestored64_internal(m, n, base,
283
+ (__SIZE_TYPE__)(stride), tile);
284
+ }
285
+
286
+ /// This is internal intrinsic. C/C++ user should avoid calling it directly.
287
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_BF16
288
+ _tile_dpbf16ps_internal(unsigned short m, unsigned short n, unsigned short k,
289
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
290
+ return __builtin_ia32_tdpbf16ps_internal(m, n, k, dst, src1, src2);
291
+ }
292
+
293
+ /// This struct pack the shape and tile data together for user. We suggest
294
+ /// initializing the struct as early as possible, because compiler depends
295
+ /// on the shape information to do configure. The constant value is preferred
296
+ /// for optimization by compiler.
297
+ typedef struct __tile1024i_str {
298
+ const unsigned short row;
299
+ const unsigned short col;
300
+ _tile1024i tile;
301
+ } __tile1024i;
302
+
303
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
304
+ /// destination tile "dst".
305
+ ///
306
+ /// \headerfile <immintrin.h>
307
+ ///
308
+ /// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
309
+ ///
310
+ /// \param dst
311
+ /// A destination tile. Max size is 1024 Bytes.
312
+ /// \param base
313
+ /// A pointer to base address.
314
+ /// \param stride
315
+ /// The stride between the rows' data to be loaded in memory.
316
+ __DEFAULT_FN_ATTRS_TILE
317
+ static __inline__ void __tile_loadd(__tile1024i *dst, const void *base,
318
+ __SIZE_TYPE__ stride) {
319
+ dst->tile = _tile_loadd_internal(dst->row, dst->col, base, stride);
320
+ }
321
+
322
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
323
+ /// destination tile "dst". This intrinsic provides a hint to the implementation
324
+ /// that the data will likely not be reused in the near future and the data
325
+ /// caching can be optimized accordingly.
326
+ ///
327
+ /// \headerfile <immintrin.h>
328
+ ///
329
+ /// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
330
+ ///
331
+ /// \param dst
332
+ /// A destination tile. Max size is 1024 Bytes.
333
+ /// \param base
334
+ /// A pointer to base address.
335
+ /// \param stride
336
+ /// The stride between the rows' data to be loaded in memory.
337
+ __DEFAULT_FN_ATTRS_TILE
338
+ static __inline__ void __tile_stream_loadd(__tile1024i *dst, const void *base,
339
+ __SIZE_TYPE__ stride) {
340
+ dst->tile = _tile_loaddt1_internal(dst->row, dst->col, base, stride);
341
+ }
342
+
343
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
344
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
345
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
346
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
347
+ /// and store the 32-bit result back to tile "dst".
348
+ ///
349
+ /// \headerfile <immintrin.h>
350
+ ///
351
+ /// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
352
+ ///
353
+ /// \param dst
354
+ /// The destination tile. Max size is 1024 Bytes.
355
+ /// \param src0
356
+ /// The 1st source tile. Max size is 1024 Bytes.
357
+ /// \param src1
358
+ /// The 2nd source tile. Max size is 1024 Bytes.
359
+ __DEFAULT_FN_ATTRS_INT8
360
+ static __inline__ void __tile_dpbssd(__tile1024i *dst, __tile1024i src0,
361
+ __tile1024i src1) {
362
+ dst->tile = _tile_dpbssd_internal(src0.row, src1.col, src0.col, dst->tile,
363
+ src0.tile, src1.tile);
364
+ }
365
+
366
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
367
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
368
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
369
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
370
+ /// in "dst", and store the 32-bit result back to tile "dst".
371
+ ///
372
+ /// \headerfile <immintrin.h>
373
+ ///
374
+ /// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
375
+ ///
376
+ /// \param dst
377
+ /// The destination tile. Max size is 1024 Bytes.
378
+ /// \param src0
379
+ /// The 1st source tile. Max size is 1024 Bytes.
380
+ /// \param src1
381
+ /// The 2nd source tile. Max size is 1024 Bytes.
382
+ __DEFAULT_FN_ATTRS_INT8
383
+ static __inline__ void __tile_dpbsud(__tile1024i *dst, __tile1024i src0,
384
+ __tile1024i src1) {
385
+ dst->tile = _tile_dpbsud_internal(src0.row, src1.col, src0.col, dst->tile,
386
+ src0.tile, src1.tile);
387
+ }
388
+
389
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
390
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
391
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
392
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
393
+ /// and store the 32-bit result back to tile "dst".
394
+ ///
395
+ /// \headerfile <immintrin.h>
396
+ ///
397
+ /// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
398
+ ///
399
+ /// \param dst
400
+ /// The destination tile. Max size is 1024 Bytes.
401
+ /// \param src0
402
+ /// The 1st source tile. Max size is 1024 Bytes.
403
+ /// \param src1
404
+ /// The 2nd source tile. Max size is 1024 Bytes.
405
+ __DEFAULT_FN_ATTRS_INT8
406
+ static __inline__ void __tile_dpbusd(__tile1024i *dst, __tile1024i src0,
407
+ __tile1024i src1) {
408
+ dst->tile = _tile_dpbusd_internal(src0.row, src1.col, src0.col, dst->tile,
409
+ src0.tile, src1.tile);
410
+ }
411
+
412
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
413
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
414
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
415
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
416
+ /// "dst", and store the 32-bit result back to tile "dst".
417
+ ///
418
+ /// \headerfile <immintrin.h>
419
+ ///
420
+ /// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
421
+ ///
422
+ /// \param dst
423
+ /// The destination tile. Max size is 1024 Bytes.
424
+ /// \param src0
425
+ /// The 1st source tile. Max size is 1024 Bytes.
426
+ /// \param src1
427
+ /// The 2nd source tile. Max size is 1024 Bytes.
428
+ __DEFAULT_FN_ATTRS_INT8
429
+ static __inline__ void __tile_dpbuud(__tile1024i *dst, __tile1024i src0,
430
+ __tile1024i src1) {
431
+ dst->tile = _tile_dpbuud_internal(src0.row, src1.col, src0.col, dst->tile,
432
+ src0.tile, src1.tile);
433
+ }
434
+
435
+ /// Store the tile specified by "src" to memory specifieid by "base" address and
436
+ /// "stride".
437
+ ///
438
+ /// \headerfile <immintrin.h>
439
+ ///
440
+ /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
441
+ ///
442
+ /// \param dst
443
+ /// A destination tile. Max size is 1024 Bytes.
444
+ /// \param base
445
+ /// A pointer to base address.
446
+ /// \param stride
447
+ /// The stride between the rows' data to be stored in memory.
448
+ __DEFAULT_FN_ATTRS_TILE
449
+ static __inline__ void __tile_stored(void *base, __SIZE_TYPE__ stride,
450
+ __tile1024i src) {
451
+ _tile_stored_internal(src.row, src.col, base, stride, src.tile);
452
+ }
453
+
454
+ /// Zero the tile specified by "dst".
455
+ ///
456
+ /// \headerfile <immintrin.h>
457
+ ///
458
+ /// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
459
+ ///
460
+ /// \param dst
461
+ /// The destination tile to be zero. Max size is 1024 Bytes.
462
+ __DEFAULT_FN_ATTRS_TILE
463
+ static __inline__ void __tile_zero(__tile1024i *dst) {
464
+ dst->tile = __builtin_ia32_tilezero_internal(dst->row, dst->col);
465
+ }
466
+
467
+ /// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
468
+ /// src1, accumulating the intermediate single-precision (32-bit) floating-point
469
+ /// elements with elements in "dst", and store the 32-bit result back to tile
470
+ /// "dst".
471
+ ///
472
+ /// \headerfile <immintrin.h>
473
+ ///
474
+ /// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
475
+ ///
476
+ /// \param dst
477
+ /// The destination tile. Max size is 1024 Bytes.
478
+ /// \param src0
479
+ /// The 1st source tile. Max size is 1024 Bytes.
480
+ /// \param src1
481
+ /// The 2nd source tile. Max size is 1024 Bytes.
482
+ __DEFAULT_FN_ATTRS_BF16
483
+ static __inline__ void __tile_dpbf16ps(__tile1024i *dst, __tile1024i src0,
484
+ __tile1024i src1) {
485
+ dst->tile = _tile_dpbf16ps_internal(src0.row, src1.col, src0.col, dst->tile,
486
+ src0.tile, src1.tile);
487
+ }
488
+
489
+ #undef __DEFAULT_FN_ATTRS_TILE
490
+ #undef __DEFAULT_FN_ATTRS_INT8
491
+ #undef __DEFAULT_FN_ATTRS_BF16
492
+
493
+ #endif /* __x86_64__ */
494
+ #endif /* __AMXINTRIN_H */
@@ -639,6 +639,49 @@ __jcvt(double __a) {
639
639
  }
640
640
  #endif
641
641
 
642
+ /* 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);
647
+ }
648
+
649
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
650
+ __frint32z(double __a) {
651
+ return __builtin_arm_frint32z(__a);
652
+ }
653
+
654
+ static __inline__ float __attribute__((__always_inline__, __nodebug__))
655
+ __frint64zf(float __a) {
656
+ return __builtin_arm_frint64zf(__a);
657
+ }
658
+
659
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
660
+ __frint64z(double __a) {
661
+ return __builtin_arm_frint64z(__a);
662
+ }
663
+
664
+ static __inline__ float __attribute__((__always_inline__, __nodebug__))
665
+ __frint32xf(float __a) {
666
+ return __builtin_arm_frint32xf(__a);
667
+ }
668
+
669
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
670
+ __frint32x(double __a) {
671
+ return __builtin_arm_frint32x(__a);
672
+ }
673
+
674
+ static __inline__ float __attribute__((__always_inline__, __nodebug__))
675
+ __frint64xf(float __a) {
676
+ return __builtin_arm_frint64xf(__a);
677
+ }
678
+
679
+ static __inline__ double __attribute__((__always_inline__, __nodebug__))
680
+ __frint64x(double __a) {
681
+ return __builtin_arm_frint64x(__a);
682
+ }
683
+ #endif
684
+
642
685
  /* Armv8.7-A load/store 64-byte intrinsics */
643
686
  #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_LS64)
644
687
  typedef struct {
@@ -687,6 +730,12 @@ __arm_st64bv0(void *__addr, data512_t __value) {
687
730
  #define __arm_mte_ptrdiff(__ptra, __ptrb) __builtin_arm_subp(__ptra, __ptrb)
688
731
  #endif
689
732
 
733
+ /* Memory Operations Intrinsics */
734
+ #if __ARM_FEATURE_MOPS && __ARM_FEATURE_MEMORY_TAGGING
735
+ #define __arm_mops_memset_tag(__tagged_address, __value, __size) \
736
+ __builtin_arm_mops_memset_tag(__tagged_address, __value, __size)
737
+ #endif
738
+
690
739
  /* Transactional Memory Extension (TME) Intrinsics */
691
740
  #if __ARM_FEATURE_TME
692
741
 
@@ -709,6 +758,18 @@ __arm_st64bv0(void *__addr, data512_t __value) {
709
758
 
710
759
  #endif /* __ARM_FEATURE_TME */
711
760
 
761
+ /* Armv8.5-A Random number generation intrinsics */
762
+ #if __ARM_64BIT_STATE && defined(__ARM_FEATURE_RNG)
763
+ static __inline__ int __attribute__((__always_inline__, __nodebug__))
764
+ __rndr(uint64_t *__p) {
765
+ return __builtin_arm_rndr(__p);
766
+ }
767
+ static __inline__ int __attribute__((__always_inline__, __nodebug__))
768
+ __rndrrs(uint64_t *__p) {
769
+ return __builtin_arm_rndrrs(__p);
770
+ }
771
+ #endif
772
+
712
773
  #if defined(__cplusplus)
713
774
  }
714
775
  #endif