@cpp-linter/clang-tidy-win32-x64 12.0.1

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 (164) hide show
  1. package/LICENSE.TXT +279 -0
  2. package/README.md +7 -0
  3. package/bin/clang-tidy.exe +4 -0
  4. package/lib/clang/12.0.1/include/__clang_cuda_builtin_vars.h +121 -0
  5. package/lib/clang/12.0.1/include/__clang_cuda_cmath.h +512 -0
  6. package/lib/clang/12.0.1/include/__clang_cuda_complex_builtins.h +285 -0
  7. package/lib/clang/12.0.1/include/__clang_cuda_device_functions.h +1486 -0
  8. package/lib/clang/12.0.1/include/__clang_cuda_intrinsics.h +486 -0
  9. package/lib/clang/12.0.1/include/__clang_cuda_libdevice_declares.h +462 -0
  10. package/lib/clang/12.0.1/include/__clang_cuda_math.h +348 -0
  11. package/lib/clang/12.0.1/include/__clang_cuda_math_forward_declares.h +284 -0
  12. package/lib/clang/12.0.1/include/__clang_cuda_runtime_wrapper.h +443 -0
  13. package/lib/clang/12.0.1/include/__clang_hip_cmath.h +664 -0
  14. package/lib/clang/12.0.1/include/__clang_hip_libdevice_declares.h +334 -0
  15. package/lib/clang/12.0.1/include/__clang_hip_math.h +1275 -0
  16. package/lib/clang/12.0.1/include/__clang_hip_runtime_wrapper.h +69 -0
  17. package/lib/clang/12.0.1/include/__stddef_max_align_t.h +27 -0
  18. package/lib/clang/12.0.1/include/__wmmintrin_aes.h +140 -0
  19. package/lib/clang/12.0.1/include/__wmmintrin_pclmul.h +48 -0
  20. package/lib/clang/12.0.1/include/adxintrin.h +72 -0
  21. package/lib/clang/12.0.1/include/altivec.h +18239 -0
  22. package/lib/clang/12.0.1/include/ammintrin.h +179 -0
  23. package/lib/clang/12.0.1/include/amxintrin.h +278 -0
  24. package/lib/clang/12.0.1/include/arm64intr.h +35 -0
  25. package/lib/clang/12.0.1/include/arm_acle.h +716 -0
  26. package/lib/clang/12.0.1/include/arm_bf16.h +20 -0
  27. package/lib/clang/12.0.1/include/arm_cde.h +410 -0
  28. package/lib/clang/12.0.1/include/arm_cmse.h +217 -0
  29. package/lib/clang/12.0.1/include/arm_fp16.h +596 -0
  30. package/lib/clang/12.0.1/include/arm_mve.h +19187 -0
  31. package/lib/clang/12.0.1/include/arm_neon.h +68982 -0
  32. package/lib/clang/12.0.1/include/arm_sve.h +18148 -0
  33. package/lib/clang/12.0.1/include/armintr.h +31 -0
  34. package/lib/clang/12.0.1/include/avx2intrin.h +1148 -0
  35. package/lib/clang/12.0.1/include/avx512bf16intrin.h +279 -0
  36. package/lib/clang/12.0.1/include/avx512bitalgintrin.h +83 -0
  37. package/lib/clang/12.0.1/include/avx512bwintrin.h +2024 -0
  38. package/lib/clang/12.0.1/include/avx512cdintrin.h +123 -0
  39. package/lib/clang/12.0.1/include/avx512dqintrin.h +1377 -0
  40. package/lib/clang/12.0.1/include/avx512erintrin.h +271 -0
  41. package/lib/clang/12.0.1/include/avx512fintrin.h +9618 -0
  42. package/lib/clang/12.0.1/include/avx512ifmaintrin.h +68 -0
  43. package/lib/clang/12.0.1/include/avx512ifmavlintrin.h +119 -0
  44. package/lib/clang/12.0.1/include/avx512pfintrin.h +97 -0
  45. package/lib/clang/12.0.1/include/avx512vbmi2intrin.h +357 -0
  46. package/lib/clang/12.0.1/include/avx512vbmiintrin.h +105 -0
  47. package/lib/clang/12.0.1/include/avx512vbmivlintrin.h +188 -0
  48. package/lib/clang/12.0.1/include/avx512vlbf16intrin.h +474 -0
  49. package/lib/clang/12.0.1/include/avx512vlbitalgintrin.h +145 -0
  50. package/lib/clang/12.0.1/include/avx512vlbwintrin.h +2809 -0
  51. package/lib/clang/12.0.1/include/avx512vlcdintrin.h +225 -0
  52. package/lib/clang/12.0.1/include/avx512vldqintrin.h +1167 -0
  53. package/lib/clang/12.0.1/include/avx512vlintrin.h +8445 -0
  54. package/lib/clang/12.0.1/include/avx512vlvbmi2intrin.h +689 -0
  55. package/lib/clang/12.0.1/include/avx512vlvnniintrin.h +304 -0
  56. package/lib/clang/12.0.1/include/avx512vlvp2intersectintrin.h +121 -0
  57. package/lib/clang/12.0.1/include/avx512vnniintrin.h +115 -0
  58. package/lib/clang/12.0.1/include/avx512vp2intersectintrin.h +77 -0
  59. package/lib/clang/12.0.1/include/avx512vpopcntdqintrin.h +54 -0
  60. package/lib/clang/12.0.1/include/avx512vpopcntdqvlintrin.h +91 -0
  61. package/lib/clang/12.0.1/include/avxintrin.h +5053 -0
  62. package/lib/clang/12.0.1/include/avxvnniintrin.h +225 -0
  63. package/lib/clang/12.0.1/include/bmi2intrin.h +81 -0
  64. package/lib/clang/12.0.1/include/bmiintrin.h +427 -0
  65. package/lib/clang/12.0.1/include/cet.h +66 -0
  66. package/lib/clang/12.0.1/include/cetintrin.h +99 -0
  67. package/lib/clang/12.0.1/include/cldemoteintrin.h +36 -0
  68. package/lib/clang/12.0.1/include/clflushoptintrin.h +27 -0
  69. package/lib/clang/12.0.1/include/clwbintrin.h +38 -0
  70. package/lib/clang/12.0.1/include/clzerointrin.h +36 -0
  71. package/lib/clang/12.0.1/include/cpuid.h +319 -0
  72. package/lib/clang/12.0.1/include/cuda_wrappers/algorithm +116 -0
  73. package/lib/clang/12.0.1/include/cuda_wrappers/complex +82 -0
  74. package/lib/clang/12.0.1/include/cuda_wrappers/new +106 -0
  75. package/lib/clang/12.0.1/include/emmintrin.h +4981 -0
  76. package/lib/clang/12.0.1/include/enqcmdintrin.h +63 -0
  77. package/lib/clang/12.0.1/include/f16cintrin.h +162 -0
  78. package/lib/clang/12.0.1/include/float.h +152 -0
  79. package/lib/clang/12.0.1/include/fma4intrin.h +218 -0
  80. package/lib/clang/12.0.1/include/fmaintrin.h +216 -0
  81. package/lib/clang/12.0.1/include/fxsrintrin.h +91 -0
  82. package/lib/clang/12.0.1/include/gfniintrin.h +193 -0
  83. package/lib/clang/12.0.1/include/hresetintrin.h +49 -0
  84. package/lib/clang/12.0.1/include/htmintrin.h +212 -0
  85. package/lib/clang/12.0.1/include/htmxlintrin.h +345 -0
  86. package/lib/clang/12.0.1/include/ia32intrin.h +441 -0
  87. package/lib/clang/12.0.1/include/immintrin.h +600 -0
  88. package/lib/clang/12.0.1/include/intrin.h +585 -0
  89. package/lib/clang/12.0.1/include/inttypes.h +97 -0
  90. package/lib/clang/12.0.1/include/invpcidintrin.h +23 -0
  91. package/lib/clang/12.0.1/include/iso646.h +27 -0
  92. package/lib/clang/12.0.1/include/keylockerintrin.h +506 -0
  93. package/lib/clang/12.0.1/include/limits.h +102 -0
  94. package/lib/clang/12.0.1/include/lwpintrin.h +136 -0
  95. package/lib/clang/12.0.1/include/lzcntintrin.h +104 -0
  96. package/lib/clang/12.0.1/include/mm3dnow.h +157 -0
  97. package/lib/clang/12.0.1/include/mm_malloc.h +67 -0
  98. package/lib/clang/12.0.1/include/mmintrin.h +1558 -0
  99. package/lib/clang/12.0.1/include/module.modulemap +164 -0
  100. package/lib/clang/12.0.1/include/movdirintrin.h +49 -0
  101. package/lib/clang/12.0.1/include/msa.h +573 -0
  102. package/lib/clang/12.0.1/include/mwaitxintrin.h +33 -0
  103. package/lib/clang/12.0.1/include/nmmintrin.h +16 -0
  104. package/lib/clang/12.0.1/include/opencl-c-base.h +589 -0
  105. package/lib/clang/12.0.1/include/opencl-c.h +17162 -0
  106. package/lib/clang/12.0.1/include/openmp_wrappers/__clang_openmp_device_functions.h +42 -0
  107. package/lib/clang/12.0.1/include/openmp_wrappers/cmath +78 -0
  108. package/lib/clang/12.0.1/include/openmp_wrappers/complex +52 -0
  109. package/lib/clang/12.0.1/include/openmp_wrappers/complex.h +27 -0
  110. package/lib/clang/12.0.1/include/openmp_wrappers/complex_cmath.h +388 -0
  111. package/lib/clang/12.0.1/include/openmp_wrappers/math.h +51 -0
  112. package/lib/clang/12.0.1/include/openmp_wrappers/new +70 -0
  113. package/lib/clang/12.0.1/include/pconfigintrin.h +40 -0
  114. package/lib/clang/12.0.1/include/pkuintrin.h +34 -0
  115. package/lib/clang/12.0.1/include/pmmintrin.h +290 -0
  116. package/lib/clang/12.0.1/include/popcntintrin.h +59 -0
  117. package/lib/clang/12.0.1/include/ppc_wrappers/emmintrin.h +2324 -0
  118. package/lib/clang/12.0.1/include/ppc_wrappers/mm_malloc.h +50 -0
  119. package/lib/clang/12.0.1/include/ppc_wrappers/mmintrin.h +1450 -0
  120. package/lib/clang/12.0.1/include/ppc_wrappers/pmmintrin.h +150 -0
  121. package/lib/clang/12.0.1/include/ppc_wrappers/smmintrin.h +109 -0
  122. package/lib/clang/12.0.1/include/ppc_wrappers/tmmintrin.h +495 -0
  123. package/lib/clang/12.0.1/include/ppc_wrappers/xmmintrin.h +1843 -0
  124. package/lib/clang/12.0.1/include/prfchwintrin.h +55 -0
  125. package/lib/clang/12.0.1/include/ptwriteintrin.h +37 -0
  126. package/lib/clang/12.0.1/include/rdseedintrin.h +42 -0
  127. package/lib/clang/12.0.1/include/rtmintrin.h +45 -0
  128. package/lib/clang/12.0.1/include/s390intrin.h +25 -0
  129. package/lib/clang/12.0.1/include/serializeintrin.h +30 -0
  130. package/lib/clang/12.0.1/include/sgxintrin.h +60 -0
  131. package/lib/clang/12.0.1/include/shaintrin.h +61 -0
  132. package/lib/clang/12.0.1/include/smmintrin.h +2430 -0
  133. package/lib/clang/12.0.1/include/stdalign.h +21 -0
  134. package/lib/clang/12.0.1/include/stdarg.h +35 -0
  135. package/lib/clang/12.0.1/include/stdatomic.h +176 -0
  136. package/lib/clang/12.0.1/include/stdbool.h +31 -0
  137. package/lib/clang/12.0.1/include/stddef.h +121 -0
  138. package/lib/clang/12.0.1/include/stdint.h +693 -0
  139. package/lib/clang/12.0.1/include/stdnoreturn.h +16 -0
  140. package/lib/clang/12.0.1/include/tbmintrin.h +140 -0
  141. package/lib/clang/12.0.1/include/tgmath.h +1368 -0
  142. package/lib/clang/12.0.1/include/tmmintrin.h +771 -0
  143. package/lib/clang/12.0.1/include/tsxldtrkintrin.h +56 -0
  144. package/lib/clang/12.0.1/include/uintrintrin.h +150 -0
  145. package/lib/clang/12.0.1/include/unwind.h +327 -0
  146. package/lib/clang/12.0.1/include/vadefs.h +51 -0
  147. package/lib/clang/12.0.1/include/vaesintrin.h +84 -0
  148. package/lib/clang/12.0.1/include/varargs.h +12 -0
  149. package/lib/clang/12.0.1/include/vecintrin.h +10998 -0
  150. package/lib/clang/12.0.1/include/vpclmulqdqintrin.h +28 -0
  151. package/lib/clang/12.0.1/include/waitpkgintrin.h +42 -0
  152. package/lib/clang/12.0.1/include/wasm_simd128.h +1167 -0
  153. package/lib/clang/12.0.1/include/wbnoinvdintrin.h +24 -0
  154. package/lib/clang/12.0.1/include/wmmintrin.h +19 -0
  155. package/lib/clang/12.0.1/include/x86gprintrin.h +23 -0
  156. package/lib/clang/12.0.1/include/x86intrin.h +63 -0
  157. package/lib/clang/12.0.1/include/xmmintrin.h +3008 -0
  158. package/lib/clang/12.0.1/include/xopintrin.h +770 -0
  159. package/lib/clang/12.0.1/include/xsavecintrin.h +34 -0
  160. package/lib/clang/12.0.1/include/xsaveintrin.h +63 -0
  161. package/lib/clang/12.0.1/include/xsaveoptintrin.h +34 -0
  162. package/lib/clang/12.0.1/include/xsavesintrin.h +44 -0
  163. package/lib/clang/12.0.1/include/xtestintrin.h +27 -0
  164. package/package.json +32 -0
@@ -0,0 +1,179 @@
1
+ /*===---- ammintrin.h - SSE4a intrinsics -----------------------------------===
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 __AMMINTRIN_H
11
+ #define __AMMINTRIN_H
12
+
13
+ #include <pmmintrin.h>
14
+
15
+ /* Define the default attributes for the functions in this file. */
16
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sse4a"), __min_vector_width__(128)))
17
+
18
+ /// Extracts the specified bits from the lower 64 bits of the 128-bit
19
+ /// integer vector operand at the index \a idx and of the length \a len.
20
+ ///
21
+ /// \headerfile <x86intrin.h>
22
+ ///
23
+ /// \code
24
+ /// __m128i _mm_extracti_si64(__m128i x, const int len, const int idx);
25
+ /// \endcode
26
+ ///
27
+ /// This intrinsic corresponds to the <c> EXTRQ </c> instruction.
28
+ ///
29
+ /// \param x
30
+ /// The value from which bits are extracted.
31
+ /// \param len
32
+ /// Bits [5:0] specify the length; the other bits are ignored. If bits [5:0]
33
+ /// are zero, the length is interpreted as 64.
34
+ /// \param idx
35
+ /// Bits [5:0] specify the index of the least significant bit; the other
36
+ /// bits are ignored. If the sum of the index and length is greater than 64,
37
+ /// the result is undefined. If the length and index are both zero, bits
38
+ /// [63:0] of parameter \a x are extracted. If the length is zero but the
39
+ /// index is non-zero, the result is undefined.
40
+ /// \returns A 128-bit integer vector whose lower 64 bits contain the bits
41
+ /// extracted from the source operand.
42
+ #define _mm_extracti_si64(x, len, idx) \
43
+ ((__m128i)__builtin_ia32_extrqi((__v2di)(__m128i)(x), \
44
+ (char)(len), (char)(idx)))
45
+
46
+ /// Extracts the specified bits from the lower 64 bits of the 128-bit
47
+ /// integer vector operand at the index and of the length specified by
48
+ /// \a __y.
49
+ ///
50
+ /// \headerfile <x86intrin.h>
51
+ ///
52
+ /// This intrinsic corresponds to the <c> EXTRQ </c> instruction.
53
+ ///
54
+ /// \param __x
55
+ /// The value from which bits are extracted.
56
+ /// \param __y
57
+ /// Specifies the index of the least significant bit at [13:8] and the
58
+ /// length at [5:0]; all other bits are ignored. If bits [5:0] are zero, the
59
+ /// length is interpreted as 64. If the sum of the index and length is
60
+ /// greater than 64, the result is undefined. If the length and index are
61
+ /// both zero, bits [63:0] of parameter \a __x are extracted. If the length
62
+ /// is zero but the index is non-zero, the result is undefined.
63
+ /// \returns A 128-bit vector whose lower 64 bits contain the bits extracted
64
+ /// from the source operand.
65
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
66
+ _mm_extract_si64(__m128i __x, __m128i __y)
67
+ {
68
+ return (__m128i)__builtin_ia32_extrq((__v2di)__x, (__v16qi)__y);
69
+ }
70
+
71
+ /// Inserts bits of a specified length from the source integer vector
72
+ /// \a y into the lower 64 bits of the destination integer vector \a x at
73
+ /// the index \a idx and of the length \a len.
74
+ ///
75
+ /// \headerfile <x86intrin.h>
76
+ ///
77
+ /// \code
78
+ /// __m128i _mm_inserti_si64(__m128i x, __m128i y, const int len,
79
+ /// const int idx);
80
+ /// \endcode
81
+ ///
82
+ /// This intrinsic corresponds to the <c> INSERTQ </c> instruction.
83
+ ///
84
+ /// \param x
85
+ /// The destination operand where bits will be inserted. The inserted bits
86
+ /// are defined by the length \a len and by the index \a idx specifying the
87
+ /// least significant bit.
88
+ /// \param y
89
+ /// The source operand containing the bits to be extracted. The extracted
90
+ /// bits are the least significant bits of operand \a y of length \a len.
91
+ /// \param len
92
+ /// Bits [5:0] specify the length; the other bits are ignored. If bits [5:0]
93
+ /// are zero, the length is interpreted as 64.
94
+ /// \param idx
95
+ /// Bits [5:0] specify the index of the least significant bit; the other
96
+ /// bits are ignored. If the sum of the index and length is greater than 64,
97
+ /// the result is undefined. If the length and index are both zero, bits
98
+ /// [63:0] of parameter \a y are inserted into parameter \a x. If the length
99
+ /// is zero but the index is non-zero, the result is undefined.
100
+ /// \returns A 128-bit integer vector containing the original lower 64-bits of
101
+ /// destination operand \a x with the specified bitfields replaced by the
102
+ /// lower bits of source operand \a y. The upper 64 bits of the return value
103
+ /// are undefined.
104
+ #define _mm_inserti_si64(x, y, len, idx) \
105
+ ((__m128i)__builtin_ia32_insertqi((__v2di)(__m128i)(x), \
106
+ (__v2di)(__m128i)(y), \
107
+ (char)(len), (char)(idx)))
108
+
109
+ /// Inserts bits of a specified length from the source integer vector
110
+ /// \a __y into the lower 64 bits of the destination integer vector \a __x
111
+ /// at the index and of the length specified by \a __y.
112
+ ///
113
+ /// \headerfile <x86intrin.h>
114
+ ///
115
+ /// This intrinsic corresponds to the <c> INSERTQ </c> instruction.
116
+ ///
117
+ /// \param __x
118
+ /// The destination operand where bits will be inserted. The inserted bits
119
+ /// are defined by the length and by the index of the least significant bit
120
+ /// specified by operand \a __y.
121
+ /// \param __y
122
+ /// The source operand containing the bits to be extracted. The extracted
123
+ /// bits are the least significant bits of operand \a __y with length
124
+ /// specified by bits [69:64]. These are inserted into the destination at the
125
+ /// index specified by bits [77:72]; all other bits are ignored. If bits
126
+ /// [69:64] are zero, the length is interpreted as 64. If the sum of the
127
+ /// index and length is greater than 64, the result is undefined. If the
128
+ /// length and index are both zero, bits [63:0] of parameter \a __y are
129
+ /// inserted into parameter \a __x. If the length is zero but the index is
130
+ /// non-zero, the result is undefined.
131
+ /// \returns A 128-bit integer vector containing the original lower 64-bits of
132
+ /// destination operand \a __x with the specified bitfields replaced by the
133
+ /// lower bits of source operand \a __y. The upper 64 bits of the return
134
+ /// value are undefined.
135
+ static __inline__ __m128i __DEFAULT_FN_ATTRS
136
+ _mm_insert_si64(__m128i __x, __m128i __y)
137
+ {
138
+ return (__m128i)__builtin_ia32_insertq((__v2di)__x, (__v2di)__y);
139
+ }
140
+
141
+ /// Stores a 64-bit double-precision value in a 64-bit memory location.
142
+ /// To minimize caching, the data is flagged as non-temporal (unlikely to be
143
+ /// used again soon).
144
+ ///
145
+ /// \headerfile <x86intrin.h>
146
+ ///
147
+ /// This intrinsic corresponds to the <c> MOVNTSD </c> instruction.
148
+ ///
149
+ /// \param __p
150
+ /// The 64-bit memory location used to store the register value.
151
+ /// \param __a
152
+ /// The 64-bit double-precision floating-point register value to be stored.
153
+ static __inline__ void __DEFAULT_FN_ATTRS
154
+ _mm_stream_sd(double *__p, __m128d __a)
155
+ {
156
+ __builtin_ia32_movntsd(__p, (__v2df)__a);
157
+ }
158
+
159
+ /// Stores a 32-bit single-precision floating-point value in a 32-bit
160
+ /// memory location. To minimize caching, the data is flagged as
161
+ /// non-temporal (unlikely to be used again soon).
162
+ ///
163
+ /// \headerfile <x86intrin.h>
164
+ ///
165
+ /// This intrinsic corresponds to the <c> MOVNTSS </c> instruction.
166
+ ///
167
+ /// \param __p
168
+ /// The 32-bit memory location used to store the register value.
169
+ /// \param __a
170
+ /// The 32-bit single-precision floating-point register value to be stored.
171
+ static __inline__ void __DEFAULT_FN_ATTRS
172
+ _mm_stream_ss(float *__p, __m128 __a)
173
+ {
174
+ __builtin_ia32_movntss(__p, (__v4sf)__a);
175
+ }
176
+
177
+ #undef __DEFAULT_FN_ATTRS
178
+
179
+ #endif /* __AMMINTRIN_H */
@@ -0,0 +1,278 @@
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 __DEFAULT_FN_ATTRS_TILE \
19
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-tile")))
20
+
21
+ /// Load tile configuration from a 64-byte memory location specified by
22
+ /// "mem_addr". The tile configuration includes the tile type palette, the
23
+ /// number of bytes per row, and the number of rows. If the specified
24
+ /// palette_id is zero, that signifies the init state for both the tile
25
+ /// config and the tile data, and the tiles are zeroed. Any invalid
26
+ /// configurations will result in #GP fault.
27
+ ///
28
+ /// \headerfile <x86intrin.h>
29
+ ///
30
+ /// This intrinsic corresponds to the <c> LDTILECFG </c> instruction.
31
+ ///
32
+ /// \param __config
33
+ /// A pointer to 512-bits configuration
34
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
35
+ _tile_loadconfig(const void *__config) {
36
+ __builtin_ia32_tile_loadconfig(__config);
37
+ }
38
+
39
+ /// Stores the current tile configuration to a 64-byte memory location
40
+ /// specified by "mem_addr". The tile configuration includes the tile type
41
+ /// palette, the number of bytes per row, and the number of rows. If tiles
42
+ /// are not configured, all zeroes will be stored to memory.
43
+ ///
44
+ /// \headerfile <x86intrin.h>
45
+ ///
46
+ /// This intrinsic corresponds to the <c> STTILECFG </c> instruction.
47
+ ///
48
+ /// \param __config
49
+ /// A pointer to 512-bits configuration
50
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE
51
+ _tile_storeconfig(void *__config) {
52
+ __builtin_ia32_tile_storeconfig(__config);
53
+ }
54
+
55
+ /// Release the tile configuration to return to the init state, which
56
+ /// releases all storage it currently holds.
57
+ ///
58
+ /// \headerfile <x86intrin.h>
59
+ ///
60
+ /// This intrinsic corresponds to the <c> TILERELEASE </c> instruction.
61
+ static __inline__ void __DEFAULT_FN_ATTRS_TILE _tile_release(void) {
62
+ __builtin_ia32_tilerelease();
63
+ }
64
+
65
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
66
+ /// destination tile "dst" using the tile configuration previously configured
67
+ /// via "_tile_loadconfig".
68
+ ///
69
+ /// \headerfile <x86intrin.h>
70
+ ///
71
+ /// This intrinsic corresponds to the <c> TILELOADD </c> instruction.
72
+ ///
73
+ /// \param dst
74
+ /// A destination tile. Max size is 1024 Bytes.
75
+ /// \param base
76
+ /// A pointer to base address.
77
+ /// \param stride
78
+ /// The stride between the rows' data to be loaded in memory.
79
+ #define _tile_loadd(dst, base, stride) \
80
+ __builtin_ia32_tileloadd64((dst), ((const void *)(base)), \
81
+ (__SIZE_TYPE__)(stride))
82
+
83
+ /// Load tile rows from memory specifieid by "base" address and "stride" into
84
+ /// destination tile "dst" using the tile configuration previously configured
85
+ /// via "_tile_loadconfig". This intrinsic provides a hint to the implementation
86
+ /// that the data will likely not be reused in the near future and the data
87
+ /// caching can be optimized accordingly.
88
+ ///
89
+ /// \headerfile <x86intrin.h>
90
+ ///
91
+ /// This intrinsic corresponds to the <c> TILELOADDT1 </c> instruction.
92
+ ///
93
+ /// \param dst
94
+ /// A destination tile. Max size is 1024 Bytes.
95
+ /// \param base
96
+ /// A pointer to base address.
97
+ /// \param stride
98
+ /// The stride between the rows' data to be loaded in memory.
99
+ #define _tile_stream_loadd(dst, base, stride) \
100
+ __builtin_ia32_tileloaddt164((dst), ((const void *)(base)), \
101
+ (__SIZE_TYPE__)(stride))
102
+
103
+ /// Store the tile specified by "src" to memory specifieid by "base" address and
104
+ /// "stride" using the tile configuration previously configured via
105
+ /// "_tile_loadconfig".
106
+ ///
107
+ /// \headerfile <x86intrin.h>
108
+ ///
109
+ /// This intrinsic corresponds to the <c> TILESTORED </c> instruction.
110
+ ///
111
+ /// \param dst
112
+ /// A destination tile. Max size is 1024 Bytes.
113
+ /// \param base
114
+ /// A pointer to base address.
115
+ /// \param stride
116
+ /// The stride between the rows' data to be stored in memory.
117
+ #define _tile_stored(dst, base, stride) \
118
+ __builtin_ia32_tilestored64((dst), ((void *)(base)), (__SIZE_TYPE__)(stride))
119
+
120
+ /// Zero the tile specified by "tdest".
121
+ ///
122
+ /// \headerfile <x86intrin.h>
123
+ ///
124
+ /// This intrinsic corresponds to the <c> TILEZERO </c> instruction.
125
+ ///
126
+ /// \param tile
127
+ /// The destination tile to be zero. Max size is 1024 Bytes.
128
+ #define _tile_zero(tile) __builtin_ia32_tilezero((tile))
129
+
130
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
131
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
132
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
133
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
134
+ /// and store the 32-bit result back to tile "dst".
135
+ ///
136
+ /// \headerfile <x86intrin.h>
137
+ ///
138
+ /// This intrinsic corresponds to the <c> TDPBSSD </c> instruction.
139
+ ///
140
+ /// \param dst
141
+ /// The destination tile. Max size is 1024 Bytes.
142
+ /// \param src0
143
+ /// The 1st source tile. Max size is 1024 Bytes.
144
+ /// \param src1
145
+ /// The 2nd source tile. Max size is 1024 Bytes.
146
+ #define _tile_dpbssd(dst, src0, src1) \
147
+ __builtin_ia32_tdpbssd((dst), (src0), (src1))
148
+
149
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
150
+ /// Multiply groups of 4 adjacent pairs of signed 8-bit integers in src0 with
151
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
152
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer
153
+ /// in "dst", and store the 32-bit result back to tile "dst".
154
+ ///
155
+ /// \headerfile <x86intrin.h>
156
+ ///
157
+ /// This intrinsic corresponds to the <c> TDPBSUD </c> instruction.
158
+ ///
159
+ /// \param dst
160
+ /// The destination tile. Max size is 1024 Bytes.
161
+ /// \param src0
162
+ /// The 1st source tile. Max size is 1024 Bytes.
163
+ /// \param src1
164
+ /// The 2nd source tile. Max size is 1024 Bytes.
165
+ #define _tile_dpbsud(dst, src0, src1) \
166
+ __builtin_ia32_tdpbsud((dst), (src0), (src1))
167
+
168
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
169
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
170
+ /// corresponding signed 8-bit integers in src1, producing 4 intermediate 32-bit
171
+ /// results. Sum these 4 results with the corresponding 32-bit integer in "dst",
172
+ /// and store the 32-bit result back to tile "dst".
173
+ ///
174
+ /// \headerfile <x86intrin.h>
175
+ ///
176
+ /// This intrinsic corresponds to the <c> TDPBUSD </c> instruction.
177
+ ///
178
+ /// \param dst
179
+ /// The destination tile. Max size is 1024 Bytes.
180
+ /// \param src0
181
+ /// The 1st source tile. Max size is 1024 Bytes.
182
+ /// \param src1
183
+ /// The 2nd source tile. Max size is 1024 Bytes.
184
+ #define _tile_dpbusd(dst, src0, src1) \
185
+ __builtin_ia32_tdpbusd((dst), (src0), (src1))
186
+
187
+ /// Compute dot-product of bytes in tiles with a source/destination accumulator.
188
+ /// Multiply groups of 4 adjacent pairs of unsigned 8-bit integers in src0 with
189
+ /// corresponding unsigned 8-bit integers in src1, producing 4 intermediate
190
+ /// 32-bit results. Sum these 4 results with the corresponding 32-bit integer in
191
+ /// "dst", and store the 32-bit result back to tile "dst".
192
+ ///
193
+ /// \headerfile <x86intrin.h>
194
+ ///
195
+ /// This intrinsic corresponds to the <c> TDPBUUD </c> instruction.
196
+ ///
197
+ /// \param dst
198
+ /// The destination tile. Max size is 1024 Bytes.
199
+ /// \param src0
200
+ /// The 1st source tile. Max size is 1024 Bytes.
201
+ /// \param src1
202
+ /// The 2nd source tile. Max size is 1024 Bytes.
203
+ #define _tile_dpbuud(dst, src0, src1) \
204
+ __builtin_ia32_tdpbuud((dst), (src0), (src1))
205
+
206
+ /// Compute dot-product of BF16 (16-bit) floating-point pairs in tiles src0 and
207
+ /// src1, accumulating the intermediate single-precision (32-bit) floating-point
208
+ /// elements with elements in "dst", and store the 32-bit result back to tile
209
+ /// "dst".
210
+ ///
211
+ /// \headerfile <x86intrin.h>
212
+ ///
213
+ /// This intrinsic corresponds to the <c> TDPBF16PS </c> instruction.
214
+ ///
215
+ /// \param dst
216
+ /// The destination tile. Max size is 1024 Bytes.
217
+ /// \param src0
218
+ /// The 1st source tile. Max size is 1024 Bytes.
219
+ /// \param src1
220
+ /// The 2nd source tile. Max size is 1024 Bytes.
221
+ #define _tile_dpbf16ps(dst, src0, src1) \
222
+ __builtin_ia32_tdpbf16ps((dst), (src0), (src1))
223
+
224
+ #define __DEFAULT_FN_ATTRS_INT8 \
225
+ __attribute__((__always_inline__, __nodebug__, __target__("amx-int8")))
226
+
227
+ typedef int _tile1024i __attribute__((__vector_size__(1024), __aligned__(64)));
228
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
229
+ _tile_loadd_internal(unsigned short m, unsigned short n, const void *base,
230
+ __SIZE_TYPE__ stride) {
231
+ return __builtin_ia32_tileloadd64_internal(m, n, base,
232
+ (__SIZE_TYPE__)(stride));
233
+ }
234
+
235
+ static __inline__ _tile1024i __DEFAULT_FN_ATTRS_INT8
236
+ _tile_dpbssd_internal(unsigned short m, unsigned short n, unsigned short k,
237
+ _tile1024i dst, _tile1024i src1, _tile1024i src2) {
238
+ return __builtin_ia32_tdpbssd_internal(m, n, k, dst, src1, src2);
239
+ }
240
+
241
+ static __inline__ void __DEFAULT_FN_ATTRS_INT8
242
+ _tile_stored_internal(unsigned short m, unsigned short n, void *base,
243
+ __SIZE_TYPE__ stride, _tile1024i tile) {
244
+ return __builtin_ia32_tilestored64_internal(m, n, base,
245
+ (__SIZE_TYPE__)(stride), tile);
246
+ }
247
+
248
+ typedef struct __tile1024i_str {
249
+ const unsigned short row;
250
+ const unsigned short col;
251
+ _tile1024i tile;
252
+ } __tile1024i;
253
+
254
+ __DEFAULT_FN_ATTRS_TILE
255
+ static void __tile_loadd(__tile1024i *dst, const void *base,
256
+ __SIZE_TYPE__ stride) {
257
+ dst->tile = _tile_loadd_internal(dst->row, dst->col, base, stride);
258
+ }
259
+
260
+ __DEFAULT_FN_ATTRS_INT8
261
+ static void __tile_dpbssd(__tile1024i *dst, __tile1024i src1,
262
+ __tile1024i src2) {
263
+ dst->tile = _tile_dpbssd_internal(src1.row, src2.col, src1.col, dst->tile,
264
+ src1.tile, src2.tile);
265
+ }
266
+
267
+ __DEFAULT_FN_ATTRS_TILE
268
+ static void __tile_stored(void *base, __SIZE_TYPE__ stride, __tile1024i src) {
269
+ _tile_stored_internal(src.row, src.col, base, stride, src.tile);
270
+ }
271
+
272
+ __DEFAULT_FN_ATTRS_TILE
273
+ static void __tile_zero(__tile1024i *dst) {
274
+ dst->tile = __builtin_ia32_tilezero_internal(dst->row, dst->col);
275
+ }
276
+
277
+ #endif /* __x86_64__ */
278
+ #endif /* __AMXINTRIN_H */
@@ -0,0 +1,35 @@
1
+ /*===---- arm64intr.h - ARM64 Windows intrinsics -------------------------------===
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
+ /* Only include this if we're compiling for the windows platform. */
11
+ #ifndef _MSC_VER
12
+ #include_next <arm64intr.h>
13
+ #else
14
+
15
+ #ifndef __ARM64INTR_H
16
+ #define __ARM64INTR_H
17
+
18
+ typedef enum
19
+ {
20
+ _ARM64_BARRIER_SY = 0xF,
21
+ _ARM64_BARRIER_ST = 0xE,
22
+ _ARM64_BARRIER_LD = 0xD,
23
+ _ARM64_BARRIER_ISH = 0xB,
24
+ _ARM64_BARRIER_ISHST = 0xA,
25
+ _ARM64_BARRIER_ISHLD = 0x9,
26
+ _ARM64_BARRIER_NSH = 0x7,
27
+ _ARM64_BARRIER_NSHST = 0x6,
28
+ _ARM64_BARRIER_NSHLD = 0x5,
29
+ _ARM64_BARRIER_OSH = 0x3,
30
+ _ARM64_BARRIER_OSHST = 0x2,
31
+ _ARM64_BARRIER_OSHLD = 0x1
32
+ } _ARM64INTR_BARRIER_TYPE;
33
+
34
+ #endif /* __ARM64INTR_H */
35
+ #endif /* _MSC_VER */