@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,279 @@
1
+ /*===------------ avx512bf16intrin.h - AVX512_BF16 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
+ #ifndef __IMMINTRIN_H
10
+ #error "Never use <avx512bf16intrin.h> directly; include <immintrin.h> instead."
11
+ #endif
12
+
13
+ #ifndef __AVX512BF16INTRIN_H
14
+ #define __AVX512BF16INTRIN_H
15
+
16
+ typedef short __m512bh __attribute__((__vector_size__(64), __aligned__(64)));
17
+ typedef short __m256bh __attribute__((__vector_size__(32), __aligned__(32)));
18
+ typedef unsigned short __bfloat16;
19
+
20
+ #define __DEFAULT_FN_ATTRS512 \
21
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512bf16"), \
22
+ __min_vector_width__(512)))
23
+ #define __DEFAULT_FN_ATTRS \
24
+ __attribute__((__always_inline__, __nodebug__, __target__("avx512bf16")))
25
+
26
+ /// Convert One BF16 Data to One Single Float Data.
27
+ ///
28
+ /// \headerfile <x86intrin.h>
29
+ ///
30
+ /// This intrinsic does not correspond to a specific instruction.
31
+ ///
32
+ /// \param __A
33
+ /// A bfloat data.
34
+ /// \returns A float data whose sign field and exponent field keep unchanged,
35
+ /// and fraction field is extended to 23 bits.
36
+ static __inline__ float __DEFAULT_FN_ATTRS _mm_cvtsbh_ss(__bfloat16 __A) {
37
+ return __builtin_ia32_cvtsbf162ss_32(__A);
38
+ }
39
+
40
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
41
+ ///
42
+ /// \headerfile <x86intrin.h>
43
+ ///
44
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
45
+ ///
46
+ /// \param __A
47
+ /// A 512-bit vector of [16 x float].
48
+ /// \param __B
49
+ /// A 512-bit vector of [16 x float].
50
+ /// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
51
+ /// conversion of __B, and higher 256 bits come from conversion of __A.
52
+ static __inline__ __m512bh __DEFAULT_FN_ATTRS512
53
+ _mm512_cvtne2ps_pbh(__m512 __A, __m512 __B) {
54
+ return (__m512bh)__builtin_ia32_cvtne2ps2bf16_512((__v16sf) __A,
55
+ (__v16sf) __B);
56
+ }
57
+
58
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
59
+ ///
60
+ /// \headerfile <x86intrin.h>
61
+ ///
62
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
63
+ ///
64
+ /// \param __A
65
+ /// A 512-bit vector of [16 x float].
66
+ /// \param __B
67
+ /// A 512-bit vector of [16 x float].
68
+ /// \param __W
69
+ /// A 512-bit vector of [32 x bfloat].
70
+ /// \param __U
71
+ /// A 32-bit mask value specifying what is chosen for each element.
72
+ /// A 1 means conversion of __A or __B. A 0 means element from __W.
73
+ /// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
74
+ /// conversion of __B, and higher 256 bits come from conversion of __A.
75
+ static __inline__ __m512bh __DEFAULT_FN_ATTRS512
76
+ _mm512_mask_cvtne2ps_pbh(__m512bh __W, __mmask32 __U, __m512 __A, __m512 __B) {
77
+ return (__m512bh)__builtin_ia32_selectw_512((__mmask32)__U,
78
+ (__v32hi)_mm512_cvtne2ps_pbh(__A, __B),
79
+ (__v32hi)__W);
80
+ }
81
+
82
+ /// Convert Two Packed Single Data to One Packed BF16 Data.
83
+ ///
84
+ /// \headerfile <x86intrin.h>
85
+ ///
86
+ /// This intrinsic corresponds to the <c> VCVTNE2PS2BF16 </c> instructions.
87
+ ///
88
+ /// \param __A
89
+ /// A 512-bit vector of [16 x float].
90
+ /// \param __B
91
+ /// A 512-bit vector of [16 x float].
92
+ /// \param __U
93
+ /// A 32-bit mask value specifying what is chosen for each element.
94
+ /// A 1 means conversion of __A or __B. A 0 means element is zero.
95
+ /// \returns A 512-bit vector of [32 x bfloat] whose lower 256 bits come from
96
+ /// conversion of __B, and higher 256 bits come from conversion of __A.
97
+ static __inline__ __m512bh __DEFAULT_FN_ATTRS512
98
+ _mm512_maskz_cvtne2ps_pbh(__mmask32 __U, __m512 __A, __m512 __B) {
99
+ return (__m512bh)__builtin_ia32_selectw_512((__mmask32)__U,
100
+ (__v32hi)_mm512_cvtne2ps_pbh(__A, __B),
101
+ (__v32hi)_mm512_setzero_si512());
102
+ }
103
+
104
+ /// Convert Packed Single Data to Packed BF16 Data.
105
+ ///
106
+ /// \headerfile <x86intrin.h>
107
+ ///
108
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
109
+ ///
110
+ /// \param __A
111
+ /// A 512-bit vector of [16 x float].
112
+ /// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
113
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS512
114
+ _mm512_cvtneps_pbh(__m512 __A) {
115
+ return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
116
+ (__v16hi)_mm256_undefined_si256(),
117
+ (__mmask16)-1);
118
+ }
119
+
120
+ /// Convert Packed Single Data to Packed BF16 Data.
121
+ ///
122
+ /// \headerfile <x86intrin.h>
123
+ ///
124
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
125
+ ///
126
+ /// \param __A
127
+ /// A 512-bit vector of [16 x float].
128
+ /// \param __W
129
+ /// A 256-bit vector of [16 x bfloat].
130
+ /// \param __U
131
+ /// A 16-bit mask value specifying what is chosen for each element.
132
+ /// A 1 means conversion of __A. A 0 means element from __W.
133
+ /// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
134
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS512
135
+ _mm512_mask_cvtneps_pbh(__m256bh __W, __mmask16 __U, __m512 __A) {
136
+ return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
137
+ (__v16hi)__W,
138
+ (__mmask16)__U);
139
+ }
140
+
141
+ /// Convert Packed Single Data to Packed BF16 Data.
142
+ ///
143
+ /// \headerfile <x86intrin.h>
144
+ ///
145
+ /// This intrinsic corresponds to the <c> VCVTNEPS2BF16 </c> instructions.
146
+ ///
147
+ /// \param __A
148
+ /// A 512-bit vector of [16 x float].
149
+ /// \param __U
150
+ /// A 16-bit mask value specifying what is chosen for each element.
151
+ /// A 1 means conversion of __A. A 0 means element is zero.
152
+ /// \returns A 256-bit vector of [16 x bfloat] come from conversion of __A.
153
+ static __inline__ __m256bh __DEFAULT_FN_ATTRS512
154
+ _mm512_maskz_cvtneps_pbh(__mmask16 __U, __m512 __A) {
155
+ return (__m256bh)__builtin_ia32_cvtneps2bf16_512_mask((__v16sf)__A,
156
+ (__v16hi)_mm256_setzero_si256(),
157
+ (__mmask16)__U);
158
+ }
159
+
160
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
161
+ ///
162
+ /// \headerfile <x86intrin.h>
163
+ ///
164
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
165
+ ///
166
+ /// \param __A
167
+ /// A 512-bit vector of [32 x bfloat].
168
+ /// \param __B
169
+ /// A 512-bit vector of [32 x bfloat].
170
+ /// \param __D
171
+ /// A 512-bit vector of [16 x float].
172
+ /// \returns A 512-bit vector of [16 x float] comes from Dot Product of
173
+ /// __A, __B and __D
174
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512
175
+ _mm512_dpbf16_ps(__m512 __D, __m512bh __A, __m512bh __B) {
176
+ return (__m512)__builtin_ia32_dpbf16ps_512((__v16sf) __D,
177
+ (__v16si) __A,
178
+ (__v16si) __B);
179
+ }
180
+
181
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
182
+ ///
183
+ /// \headerfile <x86intrin.h>
184
+ ///
185
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
186
+ ///
187
+ /// \param __A
188
+ /// A 512-bit vector of [32 x bfloat].
189
+ /// \param __B
190
+ /// A 512-bit vector of [32 x bfloat].
191
+ /// \param __D
192
+ /// A 512-bit vector of [16 x float].
193
+ /// \param __U
194
+ /// A 16-bit mask value specifying what is chosen for each element.
195
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means __D.
196
+ /// \returns A 512-bit vector of [16 x float] comes from Dot Product of
197
+ /// __A, __B and __D
198
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512
199
+ _mm512_mask_dpbf16_ps(__m512 __D, __mmask16 __U, __m512bh __A, __m512bh __B) {
200
+ return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
201
+ (__v16sf)_mm512_dpbf16_ps(__D, __A, __B),
202
+ (__v16sf)__D);
203
+ }
204
+
205
+ /// Dot Product of BF16 Pairs Accumulated into Packed Single Precision.
206
+ ///
207
+ /// \headerfile <x86intrin.h>
208
+ ///
209
+ /// This intrinsic corresponds to the <c> VDPBF16PS </c> instructions.
210
+ ///
211
+ /// \param __A
212
+ /// A 512-bit vector of [32 x bfloat].
213
+ /// \param __B
214
+ /// A 512-bit vector of [32 x bfloat].
215
+ /// \param __D
216
+ /// A 512-bit vector of [16 x float].
217
+ /// \param __U
218
+ /// A 16-bit mask value specifying what is chosen for each element.
219
+ /// A 1 means __A and __B's dot product accumulated with __D. A 0 means 0.
220
+ /// \returns A 512-bit vector of [16 x float] comes from Dot Product of
221
+ /// __A, __B and __D
222
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512
223
+ _mm512_maskz_dpbf16_ps(__mmask16 __U, __m512 __D, __m512bh __A, __m512bh __B) {
224
+ return (__m512)__builtin_ia32_selectps_512((__mmask16)__U,
225
+ (__v16sf)_mm512_dpbf16_ps(__D, __A, __B),
226
+ (__v16sf)_mm512_setzero_si512());
227
+ }
228
+
229
+ /// Convert Packed BF16 Data to Packed float Data.
230
+ ///
231
+ /// \headerfile <x86intrin.h>
232
+ ///
233
+ /// \param __A
234
+ /// A 256-bit vector of [16 x bfloat].
235
+ /// \returns A 512-bit vector of [16 x float] come from convertion of __A
236
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512 _mm512_cvtpbh_ps(__m256bh __A) {
237
+ return _mm512_castsi512_ps((__m512i)_mm512_slli_epi32(
238
+ (__m512i)_mm512_cvtepi16_epi32((__m256i)__A), 16));
239
+ }
240
+
241
+ /// Convert Packed BF16 Data to Packed float Data using zeroing mask.
242
+ ///
243
+ /// \headerfile <x86intrin.h>
244
+ ///
245
+ /// \param __U
246
+ /// A 16-bit mask. Elements are zeroed out when the corresponding mask
247
+ /// bit is not set.
248
+ /// \param __A
249
+ /// A 256-bit vector of [16 x bfloat].
250
+ /// \returns A 512-bit vector of [16 x float] come from convertion of __A
251
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512
252
+ _mm512_maskz_cvtpbh_ps(__mmask16 __U, __m256bh __A) {
253
+ return _mm512_castsi512_ps((__m512i)_mm512_slli_epi32(
254
+ (__m512i)_mm512_maskz_cvtepi16_epi32((__mmask16)__U, (__m256i)__A), 16));
255
+ }
256
+
257
+ /// Convert Packed BF16 Data to Packed float Data using merging mask.
258
+ ///
259
+ /// \headerfile <x86intrin.h>
260
+ ///
261
+ /// \param __S
262
+ /// A 512-bit vector of [16 x float]. Elements are copied from __S when
263
+ /// the corresponding mask bit is not set.
264
+ /// \param __U
265
+ /// A 16-bit mask.
266
+ /// \param __A
267
+ /// A 256-bit vector of [16 x bfloat].
268
+ /// \returns A 512-bit vector of [16 x float] come from convertion of __A
269
+ static __inline__ __m512 __DEFAULT_FN_ATTRS512
270
+ _mm512_mask_cvtpbh_ps(__m512 __S, __mmask16 __U, __m256bh __A) {
271
+ return _mm512_castsi512_ps((__m512i)_mm512_mask_slli_epi32(
272
+ (__m512i)__S, (__mmask16)__U,
273
+ (__m512i)_mm512_cvtepi16_epi32((__m256i)__A), 16));
274
+ }
275
+
276
+ #undef __DEFAULT_FN_ATTRS
277
+ #undef __DEFAULT_FN_ATTRS512
278
+
279
+ #endif
@@ -0,0 +1,83 @@
1
+ /*===------------- avx512bitalgintrin.h - BITALG intrinsics ------------------===
2
+ *
3
+ *
4
+ * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5
+ * See https://llvm.org/LICENSE.txt for license information.
6
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7
+ *
8
+ *===-----------------------------------------------------------------------===
9
+ */
10
+ #ifndef __IMMINTRIN_H
11
+ #error "Never use <avx512bitalgintrin.h> directly; include <immintrin.h> instead."
12
+ #endif
13
+
14
+ #ifndef __AVX512BITALGINTRIN_H
15
+ #define __AVX512BITALGINTRIN_H
16
+
17
+ /* Define the default attributes for the functions in this file. */
18
+ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx512bitalg"), __min_vector_width__(512)))
19
+
20
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
21
+ _mm512_popcnt_epi16(__m512i __A)
22
+ {
23
+ return (__m512i) __builtin_ia32_vpopcntw_512((__v32hi) __A);
24
+ }
25
+
26
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
27
+ _mm512_mask_popcnt_epi16(__m512i __A, __mmask32 __U, __m512i __B)
28
+ {
29
+ return (__m512i) __builtin_ia32_selectw_512((__mmask32) __U,
30
+ (__v32hi) _mm512_popcnt_epi16(__B),
31
+ (__v32hi) __A);
32
+ }
33
+
34
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
35
+ _mm512_maskz_popcnt_epi16(__mmask32 __U, __m512i __B)
36
+ {
37
+ return _mm512_mask_popcnt_epi16((__m512i) _mm512_setzero_si512(),
38
+ __U,
39
+ __B);
40
+ }
41
+
42
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
43
+ _mm512_popcnt_epi8(__m512i __A)
44
+ {
45
+ return (__m512i) __builtin_ia32_vpopcntb_512((__v64qi) __A);
46
+ }
47
+
48
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
49
+ _mm512_mask_popcnt_epi8(__m512i __A, __mmask64 __U, __m512i __B)
50
+ {
51
+ return (__m512i) __builtin_ia32_selectb_512((__mmask64) __U,
52
+ (__v64qi) _mm512_popcnt_epi8(__B),
53
+ (__v64qi) __A);
54
+ }
55
+
56
+ static __inline__ __m512i __DEFAULT_FN_ATTRS
57
+ _mm512_maskz_popcnt_epi8(__mmask64 __U, __m512i __B)
58
+ {
59
+ return _mm512_mask_popcnt_epi8((__m512i) _mm512_setzero_si512(),
60
+ __U,
61
+ __B);
62
+ }
63
+
64
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS
65
+ _mm512_mask_bitshuffle_epi64_mask(__mmask64 __U, __m512i __A, __m512i __B)
66
+ {
67
+ return (__mmask64) __builtin_ia32_vpshufbitqmb512_mask((__v64qi) __A,
68
+ (__v64qi) __B,
69
+ __U);
70
+ }
71
+
72
+ static __inline__ __mmask64 __DEFAULT_FN_ATTRS
73
+ _mm512_bitshuffle_epi64_mask(__m512i __A, __m512i __B)
74
+ {
75
+ return _mm512_mask_bitshuffle_epi64_mask((__mmask64) -1,
76
+ __A,
77
+ __B);
78
+ }
79
+
80
+
81
+ #undef __DEFAULT_FN_ATTRS
82
+
83
+ #endif