@cpp-linter/clang-tidy-win32-x64 15.0.2 → 17.0.6

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 (222) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy.exe +2 -2
  3. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_intrinsics.h +191 -0
  4. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_math.h +1 -1
  5. package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_texture_intrinsics.h +2 -0
  6. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_cmath.h +1 -1
  7. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_libdevice_declares.h +37 -30
  8. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_math.h +66 -84
  9. package/lib/clang/{15.0.2 → 17}/include/__clang_hip_runtime_wrapper.h +14 -0
  10. package/lib/clang/17/include/__clang_hip_stdlib.h +43 -0
  11. package/lib/clang/17/include/adxintrin.h +227 -0
  12. package/lib/clang/{15.0.2 → 17}/include/altivec.h +150 -138
  13. package/lib/clang/17/include/amxcomplexintrin.h +169 -0
  14. package/lib/clang/17/include/amxfp16intrin.h +58 -0
  15. package/lib/clang/{15.0.2 → 17}/include/amxintrin.h +32 -0
  16. package/lib/clang/{15.0.2 → 17}/include/arm_acle.h +86 -81
  17. package/lib/clang/{15.0.2 → 17}/include/arm_fp16.h +1 -1
  18. package/lib/clang/{15.0.2 → 17}/include/arm_neon.h +26534 -26541
  19. package/lib/clang/{15.0.2 → 17}/include/arm_neon_sve_bridge.h +0 -2
  20. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +642 -0
  21. package/lib/clang/{15.0.2 → 17}/include/arm_sve.h +7852 -7949
  22. package/lib/clang/17/include/avx2intrin.h +5263 -0
  23. package/lib/clang/{15.0.2 → 17}/include/avx512bf16intrin.h +18 -15
  24. package/lib/clang/{15.0.2 → 17}/include/avx512fintrin.h +19 -9
  25. package/lib/clang/{15.0.2 → 17}/include/avx512fp16intrin.h +18 -17
  26. package/lib/clang/{15.0.2 → 17}/include/avx512ifmavlintrin.h +13 -27
  27. package/lib/clang/{15.0.2 → 17}/include/avx512vlbf16intrin.h +31 -38
  28. package/lib/clang/{15.0.2 → 17}/include/avx512vlbwintrin.h +352 -0
  29. package/lib/clang/{15.0.2 → 17}/include/avx512vlfp16intrin.h +3 -0
  30. package/lib/clang/17/include/avxifmaintrin.h +177 -0
  31. package/lib/clang/{15.0.2 → 17}/include/avxintrin.h +32 -9
  32. package/lib/clang/17/include/avxneconvertintrin.h +484 -0
  33. package/lib/clang/17/include/avxvnniint16intrin.h +473 -0
  34. package/lib/clang/17/include/avxvnniint8intrin.h +471 -0
  35. package/lib/clang/17/include/bmi2intrin.h +255 -0
  36. package/lib/clang/{15.0.2 → 17}/include/clflushoptintrin.h +9 -0
  37. package/lib/clang/{15.0.2 → 17}/include/clzerointrin.h +7 -5
  38. package/lib/clang/17/include/cmpccxaddintrin.h +70 -0
  39. package/lib/clang/{15.0.2 → 17}/include/cpuid.h +11 -1
  40. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.h +9 -0
  41. package/lib/clang/17/include/cuda_wrappers/bits/basic_string.tcc +9 -0
  42. package/lib/clang/17/include/cuda_wrappers/bits/shared_ptr_base.h +9 -0
  43. package/lib/clang/17/include/cuda_wrappers/cmath +90 -0
  44. package/lib/clang/{15.0.2 → 17}/include/emmintrin.h +11 -1
  45. package/lib/clang/{15.0.2 → 17}/include/float.h +17 -10
  46. package/lib/clang/17/include/fmaintrin.h +780 -0
  47. package/lib/clang/{15.0.2 → 17}/include/gfniintrin.h +7 -5
  48. package/lib/clang/{15.0.2 → 17}/include/hlsl/hlsl_basic_types.h +3 -0
  49. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +480 -0
  50. package/lib/clang/{15.0.2 → 17}/include/immintrin.h +151 -11
  51. package/lib/clang/17/include/larchintrin.h +234 -0
  52. package/lib/clang/{15.0.2 → 17}/include/limits.h +8 -3
  53. package/lib/clang/17/include/llvm_libc_wrappers/ctype.h +85 -0
  54. package/lib/clang/17/include/llvm_libc_wrappers/inttypes.h +34 -0
  55. package/lib/clang/17/include/llvm_libc_wrappers/stdio.h +34 -0
  56. package/lib/clang/17/include/llvm_libc_wrappers/stdlib.h +42 -0
  57. package/lib/clang/17/include/llvm_libc_wrappers/string.h +37 -0
  58. package/lib/clang/17/include/mwaitxintrin.h +62 -0
  59. package/lib/clang/{15.0.2 → 17}/include/opencl-c-base.h +22 -0
  60. package/lib/clang/{15.0.2 → 17}/include/opencl-c.h +175 -145
  61. package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -1
  62. package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/new +1 -1
  63. package/lib/clang/{15.0.2 → 17}/include/pmmintrin.h +12 -6
  64. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/emmintrin.h +4 -3
  65. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/mm_malloc.h +1 -1
  66. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/mmintrin.h +2 -2
  67. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/pmmintrin.h +2 -2
  68. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/smmintrin.h +4 -4
  69. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/tmmintrin.h +2 -2
  70. package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/xmmintrin.h +2 -2
  71. package/lib/clang/17/include/prfchiintrin.h +61 -0
  72. package/lib/clang/17/include/raointintrin.h +203 -0
  73. package/lib/clang/17/include/rdseedintrin.h +105 -0
  74. package/lib/clang/17/include/riscv_ntlh.h +28 -0
  75. package/lib/clang/17/include/riscv_vector.h +400 -0
  76. package/lib/clang/17/include/sha512intrin.h +200 -0
  77. package/lib/clang/17/include/shaintrin.h +189 -0
  78. package/lib/clang/17/include/sifive_vector.h +16 -0
  79. package/lib/clang/17/include/sm3intrin.h +238 -0
  80. package/lib/clang/17/include/sm4intrin.h +269 -0
  81. package/lib/clang/{15.0.2 → 17}/include/smmintrin.h +2 -2
  82. package/lib/clang/{15.0.2 → 17}/include/stdalign.h +5 -0
  83. package/lib/clang/{15.0.2 → 17}/include/stdarg.h +23 -7
  84. package/lib/clang/{15.0.2 → 17}/include/stdatomic.h +14 -4
  85. package/lib/clang/{15.0.2 → 17}/include/stdbool.h +2 -2
  86. package/lib/clang/{15.0.2 → 17}/include/stddef.h +13 -1
  87. package/lib/clang/{15.0.2 → 17}/include/stdint.h +158 -40
  88. package/lib/clang/{15.0.2 → 17}/include/stdnoreturn.h +1 -1
  89. package/lib/clang/{15.0.2 → 17}/include/unwind.h +2 -1
  90. package/lib/clang/{15.0.2 → 17}/include/velintrin.h +1 -1
  91. package/lib/clang/{15.0.2 → 17}/include/wasm_simd128.h +132 -12
  92. package/lib/clang/{15.0.2 → 17}/include/x86gprintrin.h +19 -7
  93. package/lib/clang/{15.0.2 → 17}/include/xmmintrin.h +1 -2
  94. package/lib/clang/17/include/xsavecintrin.h +84 -0
  95. package/package.json +6 -6
  96. package/lib/clang/15.0.2/include/adxintrin.h +0 -72
  97. package/lib/clang/15.0.2/include/avx2intrin.h +0 -1148
  98. package/lib/clang/15.0.2/include/bmi2intrin.h +0 -81
  99. package/lib/clang/15.0.2/include/fmaintrin.h +0 -216
  100. package/lib/clang/15.0.2/include/hlsl/hlsl_intrinsics.h +0 -15
  101. package/lib/clang/15.0.2/include/mwaitxintrin.h +0 -33
  102. package/lib/clang/15.0.2/include/rdseedintrin.h +0 -42
  103. package/lib/clang/15.0.2/include/riscv_vector.h +0 -202
  104. package/lib/clang/15.0.2/include/shaintrin.h +0 -61
  105. package/lib/clang/15.0.2/include/xsavecintrin.h +0 -34
  106. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_builtin_vars.h +0 -0
  107. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_cmath.h +0 -0
  108. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_complex_builtins.h +0 -0
  109. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_device_functions.h +0 -0
  110. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_libdevice_declares.h +0 -0
  111. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_math_forward_declares.h +0 -0
  112. /package/lib/clang/{15.0.2 → 17}/include/__clang_cuda_runtime_wrapper.h +0 -0
  113. /package/lib/clang/{15.0.2 → 17}/include/__stddef_max_align_t.h +0 -0
  114. /package/lib/clang/{15.0.2 → 17}/include/__wmmintrin_aes.h +0 -0
  115. /package/lib/clang/{15.0.2 → 17}/include/__wmmintrin_pclmul.h +0 -0
  116. /package/lib/clang/{15.0.2 → 17}/include/ammintrin.h +0 -0
  117. /package/lib/clang/{15.0.2 → 17}/include/arm64intr.h +0 -0
  118. /package/lib/clang/{15.0.2 → 17}/include/arm_bf16.h +0 -0
  119. /package/lib/clang/{15.0.2 → 17}/include/arm_cde.h +0 -0
  120. /package/lib/clang/{15.0.2 → 17}/include/arm_cmse.h +0 -0
  121. /package/lib/clang/{15.0.2 → 17}/include/arm_mve.h +0 -0
  122. /package/lib/clang/{15.0.2 → 17}/include/armintr.h +0 -0
  123. /package/lib/clang/{15.0.2 → 17}/include/avx512bitalgintrin.h +0 -0
  124. /package/lib/clang/{15.0.2 → 17}/include/avx512bwintrin.h +0 -0
  125. /package/lib/clang/{15.0.2 → 17}/include/avx512cdintrin.h +0 -0
  126. /package/lib/clang/{15.0.2 → 17}/include/avx512dqintrin.h +0 -0
  127. /package/lib/clang/{15.0.2 → 17}/include/avx512erintrin.h +0 -0
  128. /package/lib/clang/{15.0.2 → 17}/include/avx512ifmaintrin.h +0 -0
  129. /package/lib/clang/{15.0.2 → 17}/include/avx512pfintrin.h +0 -0
  130. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmi2intrin.h +0 -0
  131. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmiintrin.h +0 -0
  132. /package/lib/clang/{15.0.2 → 17}/include/avx512vbmivlintrin.h +0 -0
  133. /package/lib/clang/{15.0.2 → 17}/include/avx512vlbitalgintrin.h +0 -0
  134. /package/lib/clang/{15.0.2 → 17}/include/avx512vlcdintrin.h +0 -0
  135. /package/lib/clang/{15.0.2 → 17}/include/avx512vldqintrin.h +0 -0
  136. /package/lib/clang/{15.0.2 → 17}/include/avx512vlintrin.h +0 -0
  137. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvbmi2intrin.h +0 -0
  138. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvnniintrin.h +0 -0
  139. /package/lib/clang/{15.0.2 → 17}/include/avx512vlvp2intersectintrin.h +0 -0
  140. /package/lib/clang/{15.0.2 → 17}/include/avx512vnniintrin.h +0 -0
  141. /package/lib/clang/{15.0.2 → 17}/include/avx512vp2intersectintrin.h +0 -0
  142. /package/lib/clang/{15.0.2 → 17}/include/avx512vpopcntdqintrin.h +0 -0
  143. /package/lib/clang/{15.0.2 → 17}/include/avx512vpopcntdqvlintrin.h +0 -0
  144. /package/lib/clang/{15.0.2 → 17}/include/avxvnniintrin.h +0 -0
  145. /package/lib/clang/{15.0.2 → 17}/include/bmiintrin.h +0 -0
  146. /package/lib/clang/{15.0.2 → 17}/include/builtins.h +0 -0
  147. /package/lib/clang/{15.0.2 → 17}/include/cet.h +0 -0
  148. /package/lib/clang/{15.0.2 → 17}/include/cetintrin.h +0 -0
  149. /package/lib/clang/{15.0.2 → 17}/include/cldemoteintrin.h +0 -0
  150. /package/lib/clang/{15.0.2 → 17}/include/clwbintrin.h +0 -0
  151. /package/lib/clang/{15.0.2 → 17}/include/crc32intrin.h +0 -0
  152. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/algorithm +0 -0
  153. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/complex +0 -0
  154. /package/lib/clang/{15.0.2 → 17}/include/cuda_wrappers/new +0 -0
  155. /package/lib/clang/{15.0.2 → 17}/include/enqcmdintrin.h +0 -0
  156. /package/lib/clang/{15.0.2 → 17}/include/f16cintrin.h +0 -0
  157. /package/lib/clang/{15.0.2 → 17}/include/fma4intrin.h +0 -0
  158. /package/lib/clang/{15.0.2 → 17}/include/fxsrintrin.h +0 -0
  159. /package/lib/clang/{15.0.2 → 17}/include/hexagon_circ_brev_intrinsics.h +0 -0
  160. /package/lib/clang/{15.0.2 → 17}/include/hexagon_protos.h +0 -0
  161. /package/lib/clang/{15.0.2 → 17}/include/hexagon_types.h +0 -0
  162. /package/lib/clang/{15.0.2 → 17}/include/hlsl.h +0 -0
  163. /package/lib/clang/{15.0.2 → 17}/include/hresetintrin.h +0 -0
  164. /package/lib/clang/{15.0.2 → 17}/include/htmintrin.h +0 -0
  165. /package/lib/clang/{15.0.2 → 17}/include/htmxlintrin.h +0 -0
  166. /package/lib/clang/{15.0.2 → 17}/include/hvx_hexagon_protos.h +0 -0
  167. /package/lib/clang/{15.0.2 → 17}/include/ia32intrin.h +0 -0
  168. /package/lib/clang/{15.0.2 → 17}/include/intrin.h +0 -0
  169. /package/lib/clang/{15.0.2 → 17}/include/inttypes.h +0 -0
  170. /package/lib/clang/{15.0.2 → 17}/include/invpcidintrin.h +0 -0
  171. /package/lib/clang/{15.0.2 → 17}/include/iso646.h +0 -0
  172. /package/lib/clang/{15.0.2 → 17}/include/keylockerintrin.h +0 -0
  173. /package/lib/clang/{15.0.2 → 17}/include/lwpintrin.h +0 -0
  174. /package/lib/clang/{15.0.2 → 17}/include/lzcntintrin.h +0 -0
  175. /package/lib/clang/{15.0.2 → 17}/include/mm3dnow.h +0 -0
  176. /package/lib/clang/{15.0.2 → 17}/include/mm_malloc.h +0 -0
  177. /package/lib/clang/{15.0.2 → 17}/include/mmintrin.h +0 -0
  178. /package/lib/clang/{15.0.2 → 17}/include/module.modulemap +0 -0
  179. /package/lib/clang/{15.0.2 → 17}/include/movdirintrin.h +0 -0
  180. /package/lib/clang/{15.0.2 → 17}/include/msa.h +0 -0
  181. /package/lib/clang/{15.0.2 → 17}/include/nmmintrin.h +0 -0
  182. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/cmath +0 -0
  183. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex +0 -0
  184. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex.h +0 -0
  185. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/complex_cmath.h +0 -0
  186. /package/lib/clang/{15.0.2 → 17}/include/openmp_wrappers/math.h +0 -0
  187. /package/lib/clang/{15.0.2 → 17}/include/pconfigintrin.h +0 -0
  188. /package/lib/clang/{15.0.2 → 17}/include/pkuintrin.h +0 -0
  189. /package/lib/clang/{15.0.2 → 17}/include/popcntintrin.h +0 -0
  190. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/bmi2intrin.h +0 -0
  191. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/bmiintrin.h +0 -0
  192. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/immintrin.h +0 -0
  193. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/x86gprintrin.h +0 -0
  194. /package/lib/clang/{15.0.2 → 17}/include/ppc_wrappers/x86intrin.h +0 -0
  195. /package/lib/clang/{15.0.2 → 17}/include/prfchwintrin.h +0 -0
  196. /package/lib/clang/{15.0.2 → 17}/include/ptwriteintrin.h +0 -0
  197. /package/lib/clang/{15.0.2 → 17}/include/rdpruintrin.h +0 -0
  198. /package/lib/clang/{15.0.2 → 17}/include/rtmintrin.h +0 -0
  199. /package/lib/clang/{15.0.2 → 17}/include/s390intrin.h +0 -0
  200. /package/lib/clang/{15.0.2 → 17}/include/serializeintrin.h +0 -0
  201. /package/lib/clang/{15.0.2 → 17}/include/sgxintrin.h +0 -0
  202. /package/lib/clang/{15.0.2 → 17}/include/tbmintrin.h +0 -0
  203. /package/lib/clang/{15.0.2 → 17}/include/tgmath.h +0 -0
  204. /package/lib/clang/{15.0.2 → 17}/include/tmmintrin.h +0 -0
  205. /package/lib/clang/{15.0.2 → 17}/include/tsxldtrkintrin.h +0 -0
  206. /package/lib/clang/{15.0.2 → 17}/include/uintrintrin.h +0 -0
  207. /package/lib/clang/{15.0.2 → 17}/include/vadefs.h +0 -0
  208. /package/lib/clang/{15.0.2 → 17}/include/vaesintrin.h +0 -0
  209. /package/lib/clang/{15.0.2 → 17}/include/varargs.h +0 -0
  210. /package/lib/clang/{15.0.2 → 17}/include/vecintrin.h +0 -0
  211. /package/lib/clang/{15.0.2 → 17}/include/velintrin_approx.h +0 -0
  212. /package/lib/clang/{15.0.2 → 17}/include/velintrin_gen.h +0 -0
  213. /package/lib/clang/{15.0.2 → 17}/include/vpclmulqdqintrin.h +0 -0
  214. /package/lib/clang/{15.0.2 → 17}/include/waitpkgintrin.h +0 -0
  215. /package/lib/clang/{15.0.2 → 17}/include/wbnoinvdintrin.h +0 -0
  216. /package/lib/clang/{15.0.2 → 17}/include/wmmintrin.h +0 -0
  217. /package/lib/clang/{15.0.2 → 17}/include/x86intrin.h +0 -0
  218. /package/lib/clang/{15.0.2 → 17}/include/xopintrin.h +0 -0
  219. /package/lib/clang/{15.0.2 → 17}/include/xsaveintrin.h +0 -0
  220. /package/lib/clang/{15.0.2 → 17}/include/xsaveoptintrin.h +0 -0
  221. /package/lib/clang/{15.0.2 → 17}/include/xsavesintrin.h +0 -0
  222. /package/lib/clang/{15.0.2 → 17}/include/xtestintrin.h +0 -0
@@ -0,0 +1,269 @@
1
+ /*===--------------- sm4intrin.h - SM4 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 __IMMINTRIN_H
11
+ #error "Never use <sm4intrin.h> directly; include <immintrin.h> instead."
12
+ #endif // __IMMINTRIN_H
13
+
14
+ #ifndef __SM4INTRIN_H
15
+ #define __SM4INTRIN_H
16
+
17
+ /// This intrinsic performs four rounds of SM4 key expansion. The intrinsic
18
+ /// operates on independent 128-bit lanes. The calculated results are
19
+ /// stored in \a dst.
20
+ /// \headerfile <immintrin.h>
21
+ ///
22
+ /// \code
23
+ /// __m128i _mm_sm4key4_epi32(__m128i __A, __m128i __B)
24
+ /// \endcode
25
+ ///
26
+ /// This intrinsic corresponds to the \c VSM4KEY4 instruction.
27
+ ///
28
+ /// \param __A
29
+ /// A 128-bit vector of [4 x int].
30
+ /// \param __B
31
+ /// A 128-bit vector of [4 x int].
32
+ /// \returns
33
+ /// A 128-bit vector of [4 x int].
34
+ ///
35
+ /// \code{.operation}
36
+ /// DEFINE ROL32(dword, n) {
37
+ /// count := n % 32
38
+ /// dest := (dword << count) | (dword >> (32-count))
39
+ /// RETURN dest
40
+ /// }
41
+ /// DEFINE SBOX_BYTE(dword, i) {
42
+ /// RETURN sbox[dword.byte[i]]
43
+ /// }
44
+ /// DEFINE lower_t(dword) {
45
+ /// tmp.byte[0] := SBOX_BYTE(dword, 0)
46
+ /// tmp.byte[1] := SBOX_BYTE(dword, 1)
47
+ /// tmp.byte[2] := SBOX_BYTE(dword, 2)
48
+ /// tmp.byte[3] := SBOX_BYTE(dword, 3)
49
+ /// RETURN tmp
50
+ /// }
51
+ /// DEFINE L_KEY(dword) {
52
+ /// RETURN dword ^ ROL32(dword, 13) ^ ROL32(dword, 23)
53
+ /// }
54
+ /// DEFINE T_KEY(dword) {
55
+ /// RETURN L_KEY(lower_t(dword))
56
+ /// }
57
+ /// DEFINE F_KEY(X0, X1, X2, X3, round_key) {
58
+ /// RETURN X0 ^ T_KEY(X1 ^ X2 ^ X3 ^ round_key)
59
+ /// }
60
+ /// FOR i:= 0 to 0
61
+ /// P[0] := __B.xmm[i].dword[0]
62
+ /// P[1] := __B.xmm[i].dword[1]
63
+ /// P[2] := __B.xmm[i].dword[2]
64
+ /// P[3] := __B.xmm[i].dword[3]
65
+ /// C[0] := F_KEY(P[0], P[1], P[2], P[3], __A.xmm[i].dword[0])
66
+ /// C[1] := F_KEY(P[1], P[2], P[3], C[0], __A.xmm[i].dword[1])
67
+ /// C[2] := F_KEY(P[2], P[3], C[0], C[1], __A.xmm[i].dword[2])
68
+ /// C[3] := F_KEY(P[3], C[0], C[1], C[2], __A.xmm[i].dword[3])
69
+ /// DEST.xmm[i].dword[0] := C[0]
70
+ /// DEST.xmm[i].dword[1] := C[1]
71
+ /// DEST.xmm[i].dword[2] := C[2]
72
+ /// DEST.xmm[i].dword[3] := C[3]
73
+ /// ENDFOR
74
+ /// DEST[MAX:128] := 0
75
+ /// \endcode
76
+ #define _mm_sm4key4_epi32(A, B) \
77
+ (__m128i) __builtin_ia32_vsm4key4128((__v4su)A, (__v4su)B)
78
+
79
+ /// This intrinsic performs four rounds of SM4 key expansion. The intrinsic
80
+ /// operates on independent 128-bit lanes. The calculated results are
81
+ /// stored in \a dst.
82
+ /// \headerfile <immintrin.h>
83
+ ///
84
+ /// \code
85
+ /// __m256i _mm256_sm4key4_epi32(__m256i __A, __m256i __B)
86
+ /// \endcode
87
+ ///
88
+ /// This intrinsic corresponds to the \c VSM4KEY4 instruction.
89
+ ///
90
+ /// \param __A
91
+ /// A 256-bit vector of [8 x int].
92
+ /// \param __B
93
+ /// A 256-bit vector of [8 x int].
94
+ /// \returns
95
+ /// A 256-bit vector of [8 x int].
96
+ ///
97
+ /// \code{.operation}
98
+ /// DEFINE ROL32(dword, n) {
99
+ /// count := n % 32
100
+ /// dest := (dword << count) | (dword >> (32-count))
101
+ /// RETURN dest
102
+ /// }
103
+ /// DEFINE SBOX_BYTE(dword, i) {
104
+ /// RETURN sbox[dword.byte[i]]
105
+ /// }
106
+ /// DEFINE lower_t(dword) {
107
+ /// tmp.byte[0] := SBOX_BYTE(dword, 0)
108
+ /// tmp.byte[1] := SBOX_BYTE(dword, 1)
109
+ /// tmp.byte[2] := SBOX_BYTE(dword, 2)
110
+ /// tmp.byte[3] := SBOX_BYTE(dword, 3)
111
+ /// RETURN tmp
112
+ /// }
113
+ /// DEFINE L_KEY(dword) {
114
+ /// RETURN dword ^ ROL32(dword, 13) ^ ROL32(dword, 23)
115
+ /// }
116
+ /// DEFINE T_KEY(dword) {
117
+ /// RETURN L_KEY(lower_t(dword))
118
+ /// }
119
+ /// DEFINE F_KEY(X0, X1, X2, X3, round_key) {
120
+ /// RETURN X0 ^ T_KEY(X1 ^ X2 ^ X3 ^ round_key)
121
+ /// }
122
+ /// FOR i:= 0 to 1
123
+ /// P[0] := __B.xmm[i].dword[0]
124
+ /// P[1] := __B.xmm[i].dword[1]
125
+ /// P[2] := __B.xmm[i].dword[2]
126
+ /// P[3] := __B.xmm[i].dword[3]
127
+ /// C[0] := F_KEY(P[0], P[1], P[2], P[3], __A.xmm[i].dword[0])
128
+ /// C[1] := F_KEY(P[1], P[2], P[3], C[0], __A.xmm[i].dword[1])
129
+ /// C[2] := F_KEY(P[2], P[3], C[0], C[1], __A.xmm[i].dword[2])
130
+ /// C[3] := F_KEY(P[3], C[0], C[1], C[2], __A.xmm[i].dword[3])
131
+ /// DEST.xmm[i].dword[0] := C[0]
132
+ /// DEST.xmm[i].dword[1] := C[1]
133
+ /// DEST.xmm[i].dword[2] := C[2]
134
+ /// DEST.xmm[i].dword[3] := C[3]
135
+ /// ENDFOR
136
+ /// DEST[MAX:256] := 0
137
+ /// \endcode
138
+ #define _mm256_sm4key4_epi32(A, B) \
139
+ (__m256i) __builtin_ia32_vsm4key4256((__v8su)A, (__v8su)B)
140
+
141
+ /// This intrinisc performs four rounds of SM4 encryption. The intrinisc
142
+ /// operates on independent 128-bit lanes. The calculated results are
143
+ /// stored in \a dst.
144
+ /// \headerfile <immintrin.h>
145
+ ///
146
+ /// \code
147
+ /// __m128i _mm_sm4rnds4_epi32(__m128i __A, __m128i __B)
148
+ /// \endcode
149
+ ///
150
+ /// This intrinsic corresponds to the \c VSM4RNDS4 instruction.
151
+ ///
152
+ /// \param __A
153
+ /// A 128-bit vector of [4 x int].
154
+ /// \param __B
155
+ /// A 128-bit vector of [4 x int].
156
+ /// \returns
157
+ /// A 128-bit vector of [4 x int].
158
+ ///
159
+ /// \code{.operation}
160
+ /// DEFINE ROL32(dword, n) {
161
+ /// count := n % 32
162
+ /// dest := (dword << count) | (dword >> (32-count))
163
+ /// RETURN dest
164
+ /// }
165
+ /// DEFINE lower_t(dword) {
166
+ /// tmp.byte[0] := SBOX_BYTE(dword, 0)
167
+ /// tmp.byte[1] := SBOX_BYTE(dword, 1)
168
+ /// tmp.byte[2] := SBOX_BYTE(dword, 2)
169
+ /// tmp.byte[3] := SBOX_BYTE(dword, 3)
170
+ /// RETURN tmp
171
+ /// }
172
+ /// DEFINE L_RND(dword) {
173
+ /// tmp := dword
174
+ /// tmp := tmp ^ ROL32(dword, 2)
175
+ /// tmp := tmp ^ ROL32(dword, 10)
176
+ /// tmp := tmp ^ ROL32(dword, 18)
177
+ /// tmp := tmp ^ ROL32(dword, 24)
178
+ /// RETURN tmp
179
+ /// }
180
+ /// DEFINE T_RND(dword) {
181
+ /// RETURN L_RND(lower_t(dword))
182
+ /// }
183
+ /// DEFINE F_RND(X0, X1, X2, X3, round_key) {
184
+ /// RETURN X0 ^ T_RND(X1 ^ X2 ^ X3 ^ round_key)
185
+ /// }
186
+ /// FOR i:= 0 to 0
187
+ /// P[0] := __B.xmm[i].dword[0]
188
+ /// P[1] := __B.xmm[i].dword[1]
189
+ /// P[2] := __B.xmm[i].dword[2]
190
+ /// P[3] := __B.xmm[i].dword[3]
191
+ /// C[0] := F_RND(P[0], P[1], P[2], P[3], __A.xmm[i].dword[0])
192
+ /// C[1] := F_RND(P[1], P[2], P[3], C[0], __A.xmm[i].dword[1])
193
+ /// C[2] := F_RND(P[2], P[3], C[0], C[1], __A.xmm[i].dword[2])
194
+ /// C[3] := F_RND(P[3], C[0], C[1], C[2], __A.xmm[i].dword[3])
195
+ /// DEST.xmm[i].dword[0] := C[0]
196
+ /// DEST.xmm[i].dword[1] := C[1]
197
+ /// DEST.xmm[i].dword[2] := C[2]
198
+ /// DEST.xmm[i].dword[3] := C[3]
199
+ /// ENDFOR
200
+ /// DEST[MAX:128] := 0
201
+ /// \endcode
202
+ #define _mm_sm4rnds4_epi32(A, B) \
203
+ (__m128i) __builtin_ia32_vsm4rnds4128((__v4su)A, (__v4su)B)
204
+
205
+ /// This intrinisc performs four rounds of SM4 encryption. The intrinisc
206
+ /// operates on independent 128-bit lanes. The calculated results are
207
+ /// stored in \a dst.
208
+ /// \headerfile <immintrin.h>
209
+ ///
210
+ /// \code
211
+ /// __m256i _mm256_sm4rnds4_epi32(__m256i __A, __m256i __B)
212
+ /// \endcode
213
+ ///
214
+ /// This intrinsic corresponds to the \c VSM4RNDS4 instruction.
215
+ ///
216
+ /// \param __A
217
+ /// A 256-bit vector of [8 x int].
218
+ /// \param __B
219
+ /// A 256-bit vector of [8 x int].
220
+ /// \returns
221
+ /// A 256-bit vector of [8 x int].
222
+ ///
223
+ /// \code{.operation}
224
+ /// DEFINE ROL32(dword, n) {
225
+ /// count := n % 32
226
+ /// dest := (dword << count) | (dword >> (32-count))
227
+ /// RETURN dest
228
+ /// }
229
+ /// DEFINE lower_t(dword) {
230
+ /// tmp.byte[0] := SBOX_BYTE(dword, 0)
231
+ /// tmp.byte[1] := SBOX_BYTE(dword, 1)
232
+ /// tmp.byte[2] := SBOX_BYTE(dword, 2)
233
+ /// tmp.byte[3] := SBOX_BYTE(dword, 3)
234
+ /// RETURN tmp
235
+ /// }
236
+ /// DEFINE L_RND(dword) {
237
+ /// tmp := dword
238
+ /// tmp := tmp ^ ROL32(dword, 2)
239
+ /// tmp := tmp ^ ROL32(dword, 10)
240
+ /// tmp := tmp ^ ROL32(dword, 18)
241
+ /// tmp := tmp ^ ROL32(dword, 24)
242
+ /// RETURN tmp
243
+ /// }
244
+ /// DEFINE T_RND(dword) {
245
+ /// RETURN L_RND(lower_t(dword))
246
+ /// }
247
+ /// DEFINE F_RND(X0, X1, X2, X3, round_key) {
248
+ /// RETURN X0 ^ T_RND(X1 ^ X2 ^ X3 ^ round_key)
249
+ /// }
250
+ /// FOR i:= 0 to 0
251
+ /// P[0] := __B.xmm[i].dword[0]
252
+ /// P[1] := __B.xmm[i].dword[1]
253
+ /// P[2] := __B.xmm[i].dword[2]
254
+ /// P[3] := __B.xmm[i].dword[3]
255
+ /// C[0] := F_RND(P[0], P[1], P[2], P[3], __A.xmm[i].dword[0])
256
+ /// C[1] := F_RND(P[1], P[2], P[3], C[0], __A.xmm[i].dword[1])
257
+ /// C[2] := F_RND(P[2], P[3], C[0], C[1], __A.xmm[i].dword[2])
258
+ /// C[3] := F_RND(P[3], C[0], C[1], C[2], __A.xmm[i].dword[3])
259
+ /// DEST.xmm[i].dword[0] := C[0]
260
+ /// DEST.xmm[i].dword[1] := C[1]
261
+ /// DEST.xmm[i].dword[2] := C[2]
262
+ /// DEST.xmm[i].dword[3] := C[3]
263
+ /// ENDFOR
264
+ /// DEST[MAX:256] := 0
265
+ /// \endcode
266
+ #define _mm256_sm4rnds4_epi32(A, B) \
267
+ (__m256i) __builtin_ia32_vsm4rnds4256((__v8su)A, (__v8su)B)
268
+
269
+ #endif // __SM4INTRIN_H
@@ -818,7 +818,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_max_epu32(__m128i __V1,
818
818
  /// parameter, is copied to the result.
819
819
  /// \param N
820
820
  /// Specifies which bits from operand \a Y will be copied, which bits in the
821
- /// result they will be be copied to, and which bits in the result will be
821
+ /// result they will be copied to, and which bits in the result will be
822
822
  /// cleared. The following assignments are made: \n
823
823
  /// Bits [7:6] specify the bits to copy from operand \a Y: \n
824
824
  /// 00: Selects bits [31:0] from operand \a Y. \n
@@ -1145,7 +1145,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_testnzc_si128(__m128i __M,
1145
1145
  /// A 128-bit integer vector containing the bits to be tested.
1146
1146
  /// \returns TRUE if the bits specified in the operand are all set to 1; FALSE
1147
1147
  /// otherwise.
1148
- #define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V)))
1148
+ #define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_set1_epi32(-1))
1149
1149
 
1150
1150
  /// Tests whether the specified bits in a 128-bit integer vector are
1151
1151
  /// neither all zeros nor all ones.
@@ -10,6 +10,10 @@
10
10
  #ifndef __STDALIGN_H
11
11
  #define __STDALIGN_H
12
12
 
13
+ /* FIXME: This is using the placeholder dates Clang produces for these macros
14
+ in C2x mode; switch to the correct values once they've been published. */
15
+ #if defined(__cplusplus) || \
16
+ (defined(__STDC_VERSION__) && __STDC_VERSION__ < 202000L)
13
17
  #ifndef __cplusplus
14
18
  #define alignas _Alignas
15
19
  #define alignof _Alignof
@@ -17,5 +21,6 @@
17
21
 
18
22
  #define __alignas_is_defined 1
19
23
  #define __alignof_is_defined 1
24
+ #endif /* __STDC_VERSION__ */
20
25
 
21
26
  #endif /* __STDALIGN_H */
@@ -8,13 +8,30 @@
8
8
  */
9
9
 
10
10
  #ifndef __STDARG_H
11
- #define __STDARG_H
12
11
 
12
+ #ifndef __GNUC_VA_LIST
13
+ #define __GNUC_VA_LIST
14
+ typedef __builtin_va_list __gnuc_va_list;
15
+ #endif
16
+
17
+ #ifdef __need___va_list
18
+ #undef __need___va_list
19
+ #else
20
+ #define __STDARG_H
13
21
  #ifndef _VA_LIST
14
22
  typedef __builtin_va_list va_list;
15
23
  #define _VA_LIST
16
24
  #endif
25
+
26
+ /* FIXME: This is using the placeholder dates Clang produces for these macros
27
+ in C2x mode; switch to the correct values once they've been published. */
28
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L
29
+ /* C2x does not require the second parameter for va_start. */
30
+ #define va_start(ap, ...) __builtin_va_start(ap, 0)
31
+ #else
32
+ /* Versions before C2x do require the second parameter. */
17
33
  #define va_start(ap, param) __builtin_va_start(ap, param)
34
+ #endif
18
35
  #define va_end(ap) __builtin_va_end(ap)
19
36
  #define va_arg(ap, type) __builtin_va_arg(ap, type)
20
37
 
@@ -23,13 +40,12 @@ typedef __builtin_va_list va_list;
23
40
  */
24
41
  #define __va_copy(d,s) __builtin_va_copy(d,s)
25
42
 
26
- #if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__)
43
+ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || \
44
+ (defined(__cplusplus) && __cplusplus >= 201103L) || \
45
+ !defined(__STRICT_ANSI__)
27
46
  #define va_copy(dest, src) __builtin_va_copy(dest, src)
28
47
  #endif
29
48
 
30
- #ifndef __GNUC_VA_LIST
31
- #define __GNUC_VA_LIST 1
32
- typedef __builtin_va_list __gnuc_va_list;
33
- #endif
34
-
35
49
  #endif /* __STDARG_H */
50
+
51
+ #endif /* not __STDARG_H */
@@ -15,10 +15,12 @@
15
15
  *
16
16
  * Exclude the MSVC path as well as the MSVC header as of the 14.31.30818
17
17
  * explicitly disallows `stdatomic.h` in the C mode via an `#error`. Fallback
18
- * to the clang resource header until that is fully supported.
18
+ * to the clang resource header until that is fully supported. The
19
+ * `stdatomic.h` header requires C++ 23 or newer.
19
20
  */
20
21
  #if __STDC_HOSTED__ && \
21
- __has_include_next(<stdatomic.h>) && !(defined(_MSC_VER) && !defined(__cplusplus))
22
+ __has_include_next(<stdatomic.h>) && \
23
+ (!defined(_MSC_VER) || (defined(__cplusplus) && __cplusplus >= 202002L))
22
24
  # include_next <stdatomic.h>
23
25
  #else
24
26
 
@@ -43,9 +45,17 @@ extern "C" {
43
45
  #define ATOMIC_POINTER_LOCK_FREE __CLANG_ATOMIC_POINTER_LOCK_FREE
44
46
 
45
47
  /* 7.17.2 Initialization */
46
-
48
+ /* FIXME: This is using the placeholder dates Clang produces for these macros
49
+ in C2x mode; switch to the correct values once they've been published. */
50
+ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 202000L) || \
51
+ defined(__cplusplus)
52
+ /* ATOMIC_VAR_INIT was removed in C2x, but still remains in C++23. */
47
53
  #define ATOMIC_VAR_INIT(value) (value)
48
- #if (__STDC_VERSION__ >= 201710L || __cplusplus >= 202002L) && \
54
+ #endif
55
+
56
+ #if ((defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201710L && \
57
+ __STDC_VERSION__ < 202000L) || \
58
+ (defined(__cplusplus) && __cplusplus >= 202002L)) && \
49
59
  !defined(_CLANG_DISABLE_CRT_DEPRECATION_WARNINGS)
50
60
  /* ATOMIC_VAR_INIT was deprecated in C17 and C++20. */
51
61
  #pragma clang deprecated(ATOMIC_VAR_INIT)
@@ -12,7 +12,7 @@
12
12
 
13
13
  #define __bool_true_false_are_defined 1
14
14
 
15
- #if __STDC_VERSION__ > 201710L
15
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ > 201710L
16
16
  /* FIXME: We should be issuing a deprecation warning here, but cannot yet due
17
17
  * to system headers which include this header file unconditionally.
18
18
  */
@@ -23,7 +23,7 @@
23
23
  #elif defined(__GNUC__) && !defined(__STRICT_ANSI__)
24
24
  /* Define _Bool as a GNU extension. */
25
25
  #define _Bool bool
26
- #if __cplusplus < 201103L
26
+ #if defined(__cplusplus) && __cplusplus < 201103L
27
27
  /* For C++98, define bool, false, true as a GNU extension. */
28
28
  #define bool bool
29
29
  #define false false
@@ -97,8 +97,20 @@ using ::std::nullptr_t;
97
97
  #undef __need_NULL
98
98
  #endif /* defined(__need_NULL) */
99
99
 
100
+ /* FIXME: This is using the placeholder dates Clang produces for these macros
101
+ in C2x mode; switch to the correct values once they've been published. */
102
+ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L
103
+ typedef typeof(nullptr) nullptr_t;
104
+ #endif /* defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L */
105
+
106
+ #if defined(__need_STDDEF_H_misc) && defined(__STDC_VERSION__) && \
107
+ __STDC_VERSION__ >= 202000L
108
+ #define unreachable() __builtin_unreachable()
109
+ #endif /* defined(__need_STDDEF_H_misc) && >= C23 */
110
+
100
111
  #if defined(__need_STDDEF_H_misc)
101
- #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
112
+ #if (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L) || \
113
+ (defined(__cplusplus) && __cplusplus >= 201103L)
102
114
  #include "__stddef_max_align_t.h"
103
115
  #endif
104
116
  #define offsetof(t, d) __builtin_offsetof(t, d)