@cpp-linter/clang-tidy-linux-arm64 17.0.6 → 19.1.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 (252) hide show
  1. package/README.md +2 -2
  2. package/bin/clang-tidy +2 -2
  3. package/lib/clang/{17 → 19}/include/__clang_cuda_device_functions.h +2 -2
  4. package/lib/clang/{17 → 19}/include/__clang_cuda_intrinsics.h +1 -3
  5. package/lib/clang/{17 → 19}/include/__clang_cuda_libdevice_declares.h +2 -2
  6. package/lib/clang/{17 → 19}/include/__clang_cuda_math.h +2 -2
  7. package/lib/clang/{17 → 19}/include/__clang_cuda_runtime_wrapper.h +2 -2
  8. package/lib/clang/{17 → 19}/include/__clang_hip_math.h +192 -171
  9. package/lib/clang/{17 → 19}/include/__clang_hip_runtime_wrapper.h +34 -26
  10. package/lib/clang/19/include/__stdarg___gnuc_va_list.h +13 -0
  11. package/lib/clang/19/include/__stdarg___va_copy.h +12 -0
  12. package/lib/clang/19/include/__stdarg_header_macro.h +12 -0
  13. package/lib/clang/19/include/__stdarg_va_arg.h +22 -0
  14. package/lib/clang/19/include/__stdarg_va_copy.h +12 -0
  15. package/lib/clang/19/include/__stdarg_va_list.h +13 -0
  16. package/lib/clang/19/include/__stddef_header_macro.h +12 -0
  17. package/lib/clang/{17 → 19}/include/__stddef_max_align_t.h +1 -1
  18. package/lib/clang/19/include/__stddef_null.h +29 -0
  19. package/lib/clang/19/include/__stddef_nullptr_t.h +29 -0
  20. package/lib/clang/19/include/__stddef_offsetof.h +17 -0
  21. package/lib/clang/19/include/__stddef_ptrdiff_t.h +20 -0
  22. package/lib/clang/19/include/__stddef_rsize_t.h +20 -0
  23. package/lib/clang/19/include/__stddef_size_t.h +20 -0
  24. package/lib/clang/19/include/__stddef_unreachable.h +21 -0
  25. package/lib/clang/19/include/__stddef_wchar_t.h +28 -0
  26. package/lib/clang/19/include/__stddef_wint_t.h +15 -0
  27. package/lib/clang/{17/include/adxintrin.h → 19/include/adcintrin.h} +27 -94
  28. package/lib/clang/19/include/adxintrin.h +102 -0
  29. package/lib/clang/{17 → 19}/include/altivec.h +31 -12
  30. package/lib/clang/{17 → 19}/include/ammintrin.h +4 -4
  31. package/lib/clang/{17 → 19}/include/arm_acle.h +138 -32
  32. package/lib/clang/{17 → 19}/include/arm_fp16.h +1 -1
  33. package/lib/clang/{17 → 19}/include/arm_neon.h +43361 -43608
  34. package/lib/clang/19/include/arm_sme.h +2819 -0
  35. package/lib/clang/{17 → 19}/include/arm_sve.h +30202 -23615
  36. package/lib/clang/19/include/arm_vector_types.h +345 -0
  37. package/lib/clang/{17 → 19}/include/avx2intrin.h +24 -3
  38. package/lib/clang/{17 → 19}/include/avx512bf16intrin.h +3 -2
  39. package/lib/clang/{17 → 19}/include/avx512bitalgintrin.h +4 -1
  40. package/lib/clang/{17 → 19}/include/avx512bwintrin.h +28 -38
  41. package/lib/clang/{17 → 19}/include/avx512cdintrin.h +3 -1
  42. package/lib/clang/{17 → 19}/include/avx512dqintrin.h +4 -2
  43. package/lib/clang/{17 → 19}/include/avx512fintrin.h +7 -3
  44. package/lib/clang/{17 → 19}/include/avx512fp16intrin.h +44 -42
  45. package/lib/clang/{17 → 19}/include/avx512ifmaintrin.h +3 -1
  46. package/lib/clang/{17 → 19}/include/avx512ifmavlintrin.h +8 -2
  47. package/lib/clang/{17 → 19}/include/avx512vbmi2intrin.h +1 -1
  48. package/lib/clang/{17 → 19}/include/avx512vbmiintrin.h +3 -2
  49. package/lib/clang/{17 → 19}/include/avx512vbmivlintrin.h +8 -3
  50. package/lib/clang/{17 → 19}/include/avx512vlbf16intrin.h +8 -6
  51. package/lib/clang/{17 → 19}/include/avx512vlbitalgintrin.h +8 -2
  52. package/lib/clang/{17 → 19}/include/avx512vlbwintrin.h +8 -2
  53. package/lib/clang/{17 → 19}/include/avx512vlcdintrin.h +8 -3
  54. package/lib/clang/{17 → 19}/include/avx512vldqintrin.h +8 -2
  55. package/lib/clang/{17 → 19}/include/avx512vlfp16intrin.h +2 -2
  56. package/lib/clang/{17 → 19}/include/avx512vlintrin.h +8 -2
  57. package/lib/clang/{17 → 19}/include/avx512vlvbmi2intrin.h +8 -2
  58. package/lib/clang/{17 → 19}/include/avx512vlvnniintrin.h +8 -2
  59. package/lib/clang/{17 → 19}/include/avx512vlvp2intersectintrin.h +6 -4
  60. package/lib/clang/{17 → 19}/include/avx512vnniintrin.h +3 -2
  61. package/lib/clang/{17 → 19}/include/avx512vp2intersectintrin.h +3 -2
  62. package/lib/clang/{17 → 19}/include/avx512vpopcntdqintrin.h +3 -1
  63. package/lib/clang/{17 → 19}/include/avx512vpopcntdqvlintrin.h +6 -2
  64. package/lib/clang/{17 → 19}/include/avxintrin.h +67 -49
  65. package/lib/clang/{17 → 19}/include/bmiintrin.h +233 -50
  66. package/lib/clang/{17 → 19}/include/builtins.h +3 -0
  67. package/lib/clang/{17 → 19}/include/cpuid.h +23 -3
  68. package/lib/clang/{17 → 19}/include/cuda_wrappers/algorithm +1 -1
  69. package/lib/clang/{17 → 19}/include/emmintrin.h +311 -180
  70. package/lib/clang/{17 → 19}/include/float.h +28 -0
  71. package/lib/clang/{17 → 19}/include/fmaintrin.h +32 -16
  72. package/lib/clang/{17 → 19}/include/gfniintrin.h +23 -6
  73. package/lib/clang/{17 → 19}/include/hlsl/hlsl_basic_types.h +10 -3
  74. package/lib/clang/19/include/hlsl/hlsl_intrinsics.h +1697 -0
  75. package/lib/clang/19/include/ia32intrin.h +863 -0
  76. package/lib/clang/{17 → 19}/include/immintrin.h +149 -160
  77. package/lib/clang/{17 → 19}/include/intrin.h +61 -221
  78. package/lib/clang/19/include/intrin0.h +247 -0
  79. package/lib/clang/{17 → 19}/include/inttypes.h +4 -0
  80. package/lib/clang/{17 → 19}/include/iso646.h +4 -0
  81. package/lib/clang/{17 → 19}/include/keylockerintrin.h +5 -8
  82. package/lib/clang/{17 → 19}/include/larchintrin.h +13 -1
  83. package/lib/clang/19/include/lasxintrin.h +3884 -0
  84. package/lib/clang/{17 → 19}/include/limits.h +7 -4
  85. package/lib/clang/{17/include/llvm_libc_wrappers/stdio.h → 19/include/llvm_libc_wrappers/assert.h} +7 -7
  86. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/ctype.h +17 -0
  87. package/lib/clang/19/include/llvm_libc_wrappers/stdio.h +80 -0
  88. package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/stdlib.h +4 -1
  89. package/lib/clang/19/include/llvm_libc_wrappers/string.h +96 -0
  90. package/lib/clang/{17/include/llvm_libc_wrappers/string.h → 19/include/llvm_libc_wrappers/time.h} +9 -12
  91. package/lib/clang/19/include/lsxintrin.h +3750 -0
  92. package/lib/clang/19/include/mm3dnow.h +22 -0
  93. package/lib/clang/{17 → 19}/include/mmintrin.h +83 -89
  94. package/lib/clang/19/include/module.modulemap +330 -0
  95. package/lib/clang/{17 → 19}/include/opencl-c-base.h +9 -0
  96. package/lib/clang/{17 → 19}/include/opencl-c.h +15 -0
  97. package/lib/clang/{17 → 19}/include/openmp_wrappers/cmath +1 -1
  98. package/lib/clang/{17 → 19}/include/pmmintrin.h +3 -2
  99. package/lib/clang/19/include/ppc_wrappers/nmmintrin.h +26 -0
  100. package/lib/clang/{17 → 19}/include/ppc_wrappers/smmintrin.h +35 -15
  101. package/lib/clang/{17 → 19}/include/prfchwintrin.h +10 -8
  102. package/lib/clang/19/include/ptrauth.h +330 -0
  103. package/lib/clang/19/include/riscv_bitmanip.h +195 -0
  104. package/lib/clang/19/include/riscv_crypto.h +170 -0
  105. package/lib/clang/{17 → 19}/include/riscv_ntlh.h +3 -5
  106. package/lib/clang/{17 → 19}/include/riscv_vector.h +31 -4
  107. package/lib/clang/19/include/sifive_vector.h +118 -0
  108. package/lib/clang/{17 → 19}/include/smmintrin.h +15 -15
  109. package/lib/clang/{17 → 19}/include/stdalign.h +6 -3
  110. package/lib/clang/19/include/stdarg.h +75 -0
  111. package/lib/clang/{17 → 19}/include/stdatomic.h +14 -6
  112. package/lib/clang/{17 → 19}/include/stdbool.h +5 -0
  113. package/lib/clang/19/include/stdckdint.h +42 -0
  114. package/lib/clang/19/include/stddef.h +139 -0
  115. package/lib/clang/{17 → 19}/include/stdint.h +24 -48
  116. package/lib/clang/{17 → 19}/include/stdnoreturn.h +8 -2
  117. package/lib/clang/{17 → 19}/include/tmmintrin.h +27 -18
  118. package/lib/clang/19/include/usermsrintrin.h +51 -0
  119. package/lib/clang/{17 → 19}/include/vaesintrin.h +4 -2
  120. package/lib/clang/{17 → 19}/include/varargs.h +5 -1
  121. package/lib/clang/{17 → 19}/include/vecintrin.h +217 -199
  122. package/lib/clang/{17 → 19}/include/x86gprintrin.h +10 -12
  123. package/lib/clang/19/include/x86intrin.h +53 -0
  124. package/lib/clang/{17 → 19}/include/xmmintrin.h +294 -104
  125. package/lib/clang/19/include/yvals_core.h +25 -0
  126. package/lib/clang/19/include/zos_wrappers/builtins.h +18 -0
  127. package/package.json +6 -6
  128. package/lib/clang/17/include/arm_sme_draft_spec_subject_to_change.h +0 -642
  129. package/lib/clang/17/include/avx512erintrin.h +0 -271
  130. package/lib/clang/17/include/avx512pfintrin.h +0 -97
  131. package/lib/clang/17/include/hlsl/hlsl_intrinsics.h +0 -480
  132. package/lib/clang/17/include/ia32intrin.h +0 -441
  133. package/lib/clang/17/include/mm3dnow.h +0 -157
  134. package/lib/clang/17/include/module.modulemap +0 -164
  135. package/lib/clang/17/include/sifive_vector.h +0 -16
  136. package/lib/clang/17/include/stdarg.h +0 -51
  137. package/lib/clang/17/include/stddef.h +0 -133
  138. package/lib/clang/17/include/x86intrin.h +0 -67
  139. /package/lib/clang/{17 → 19}/include/__clang_cuda_builtin_vars.h +0 -0
  140. /package/lib/clang/{17 → 19}/include/__clang_cuda_cmath.h +0 -0
  141. /package/lib/clang/{17 → 19}/include/__clang_cuda_complex_builtins.h +0 -0
  142. /package/lib/clang/{17 → 19}/include/__clang_cuda_math_forward_declares.h +0 -0
  143. /package/lib/clang/{17 → 19}/include/__clang_cuda_texture_intrinsics.h +0 -0
  144. /package/lib/clang/{17 → 19}/include/__clang_hip_cmath.h +0 -0
  145. /package/lib/clang/{17 → 19}/include/__clang_hip_libdevice_declares.h +0 -0
  146. /package/lib/clang/{17 → 19}/include/__clang_hip_stdlib.h +0 -0
  147. /package/lib/clang/{17 → 19}/include/__wmmintrin_aes.h +0 -0
  148. /package/lib/clang/{17 → 19}/include/__wmmintrin_pclmul.h +0 -0
  149. /package/lib/clang/{17 → 19}/include/amxcomplexintrin.h +0 -0
  150. /package/lib/clang/{17 → 19}/include/amxfp16intrin.h +0 -0
  151. /package/lib/clang/{17 → 19}/include/amxintrin.h +0 -0
  152. /package/lib/clang/{17 → 19}/include/arm64intr.h +0 -0
  153. /package/lib/clang/{17 → 19}/include/arm_bf16.h +0 -0
  154. /package/lib/clang/{17 → 19}/include/arm_cde.h +0 -0
  155. /package/lib/clang/{17 → 19}/include/arm_cmse.h +0 -0
  156. /package/lib/clang/{17 → 19}/include/arm_mve.h +0 -0
  157. /package/lib/clang/{17 → 19}/include/arm_neon_sve_bridge.h +0 -0
  158. /package/lib/clang/{17 → 19}/include/armintr.h +0 -0
  159. /package/lib/clang/{17 → 19}/include/avxifmaintrin.h +0 -0
  160. /package/lib/clang/{17 → 19}/include/avxneconvertintrin.h +0 -0
  161. /package/lib/clang/{17 → 19}/include/avxvnniint16intrin.h +0 -0
  162. /package/lib/clang/{17 → 19}/include/avxvnniint8intrin.h +0 -0
  163. /package/lib/clang/{17 → 19}/include/avxvnniintrin.h +0 -0
  164. /package/lib/clang/{17 → 19}/include/bmi2intrin.h +0 -0
  165. /package/lib/clang/{17 → 19}/include/cet.h +0 -0
  166. /package/lib/clang/{17 → 19}/include/cetintrin.h +0 -0
  167. /package/lib/clang/{17 → 19}/include/cldemoteintrin.h +0 -0
  168. /package/lib/clang/{17 → 19}/include/clflushoptintrin.h +0 -0
  169. /package/lib/clang/{17 → 19}/include/clwbintrin.h +0 -0
  170. /package/lib/clang/{17 → 19}/include/clzerointrin.h +0 -0
  171. /package/lib/clang/{17 → 19}/include/cmpccxaddintrin.h +0 -0
  172. /package/lib/clang/{17 → 19}/include/crc32intrin.h +0 -0
  173. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.h +0 -0
  174. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/basic_string.tcc +0 -0
  175. /package/lib/clang/{17 → 19}/include/cuda_wrappers/bits/shared_ptr_base.h +0 -0
  176. /package/lib/clang/{17 → 19}/include/cuda_wrappers/cmath +0 -0
  177. /package/lib/clang/{17 → 19}/include/cuda_wrappers/complex +0 -0
  178. /package/lib/clang/{17 → 19}/include/cuda_wrappers/new +0 -0
  179. /package/lib/clang/{17 → 19}/include/enqcmdintrin.h +0 -0
  180. /package/lib/clang/{17 → 19}/include/f16cintrin.h +0 -0
  181. /package/lib/clang/{17 → 19}/include/fma4intrin.h +0 -0
  182. /package/lib/clang/{17 → 19}/include/fxsrintrin.h +0 -0
  183. /package/lib/clang/{17 → 19}/include/hexagon_circ_brev_intrinsics.h +0 -0
  184. /package/lib/clang/{17 → 19}/include/hexagon_protos.h +0 -0
  185. /package/lib/clang/{17 → 19}/include/hexagon_types.h +0 -0
  186. /package/lib/clang/{17 → 19}/include/hlsl.h +0 -0
  187. /package/lib/clang/{17 → 19}/include/hresetintrin.h +0 -0
  188. /package/lib/clang/{17 → 19}/include/htmintrin.h +0 -0
  189. /package/lib/clang/{17 → 19}/include/htmxlintrin.h +0 -0
  190. /package/lib/clang/{17 → 19}/include/hvx_hexagon_protos.h +0 -0
  191. /package/lib/clang/{17 → 19}/include/invpcidintrin.h +0 -0
  192. /package/lib/clang/{17 → 19}/include/llvm_libc_wrappers/inttypes.h +0 -0
  193. /package/lib/clang/{17 → 19}/include/lwpintrin.h +0 -0
  194. /package/lib/clang/{17 → 19}/include/lzcntintrin.h +0 -0
  195. /package/lib/clang/{17 → 19}/include/mm_malloc.h +0 -0
  196. /package/lib/clang/{17 → 19}/include/movdirintrin.h +0 -0
  197. /package/lib/clang/{17 → 19}/include/msa.h +0 -0
  198. /package/lib/clang/{17 → 19}/include/mwaitxintrin.h +0 -0
  199. /package/lib/clang/{17 → 19}/include/nmmintrin.h +0 -0
  200. /package/lib/clang/{17 → 19}/include/openmp_wrappers/__clang_openmp_device_functions.h +0 -0
  201. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex +0 -0
  202. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex.h +0 -0
  203. /package/lib/clang/{17 → 19}/include/openmp_wrappers/complex_cmath.h +0 -0
  204. /package/lib/clang/{17 → 19}/include/openmp_wrappers/math.h +0 -0
  205. /package/lib/clang/{17 → 19}/include/openmp_wrappers/new +0 -0
  206. /package/lib/clang/{17 → 19}/include/pconfigintrin.h +0 -0
  207. /package/lib/clang/{17 → 19}/include/pkuintrin.h +0 -0
  208. /package/lib/clang/{17 → 19}/include/popcntintrin.h +0 -0
  209. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmi2intrin.h +0 -0
  210. /package/lib/clang/{17 → 19}/include/ppc_wrappers/bmiintrin.h +0 -0
  211. /package/lib/clang/{17 → 19}/include/ppc_wrappers/emmintrin.h +0 -0
  212. /package/lib/clang/{17 → 19}/include/ppc_wrappers/immintrin.h +0 -0
  213. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mm_malloc.h +0 -0
  214. /package/lib/clang/{17 → 19}/include/ppc_wrappers/mmintrin.h +0 -0
  215. /package/lib/clang/{17 → 19}/include/ppc_wrappers/pmmintrin.h +0 -0
  216. /package/lib/clang/{17 → 19}/include/ppc_wrappers/tmmintrin.h +0 -0
  217. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86gprintrin.h +0 -0
  218. /package/lib/clang/{17 → 19}/include/ppc_wrappers/x86intrin.h +0 -0
  219. /package/lib/clang/{17 → 19}/include/ppc_wrappers/xmmintrin.h +0 -0
  220. /package/lib/clang/{17 → 19}/include/prfchiintrin.h +0 -0
  221. /package/lib/clang/{17 → 19}/include/ptwriteintrin.h +0 -0
  222. /package/lib/clang/{17 → 19}/include/raointintrin.h +0 -0
  223. /package/lib/clang/{17 → 19}/include/rdpruintrin.h +0 -0
  224. /package/lib/clang/{17 → 19}/include/rdseedintrin.h +0 -0
  225. /package/lib/clang/{17 → 19}/include/rtmintrin.h +0 -0
  226. /package/lib/clang/{17 → 19}/include/s390intrin.h +0 -0
  227. /package/lib/clang/{17 → 19}/include/serializeintrin.h +0 -0
  228. /package/lib/clang/{17 → 19}/include/sgxintrin.h +0 -0
  229. /package/lib/clang/{17 → 19}/include/sha512intrin.h +0 -0
  230. /package/lib/clang/{17 → 19}/include/shaintrin.h +0 -0
  231. /package/lib/clang/{17 → 19}/include/sm3intrin.h +0 -0
  232. /package/lib/clang/{17 → 19}/include/sm4intrin.h +0 -0
  233. /package/lib/clang/{17 → 19}/include/tbmintrin.h +0 -0
  234. /package/lib/clang/{17 → 19}/include/tgmath.h +0 -0
  235. /package/lib/clang/{17 → 19}/include/tsxldtrkintrin.h +0 -0
  236. /package/lib/clang/{17 → 19}/include/uintrintrin.h +0 -0
  237. /package/lib/clang/{17 → 19}/include/unwind.h +0 -0
  238. /package/lib/clang/{17 → 19}/include/vadefs.h +0 -0
  239. /package/lib/clang/{17 → 19}/include/velintrin.h +0 -0
  240. /package/lib/clang/{17 → 19}/include/velintrin_approx.h +0 -0
  241. /package/lib/clang/{17 → 19}/include/velintrin_gen.h +0 -0
  242. /package/lib/clang/{17 → 19}/include/vpclmulqdqintrin.h +0 -0
  243. /package/lib/clang/{17 → 19}/include/waitpkgintrin.h +0 -0
  244. /package/lib/clang/{17 → 19}/include/wasm_simd128.h +0 -0
  245. /package/lib/clang/{17 → 19}/include/wbnoinvdintrin.h +0 -0
  246. /package/lib/clang/{17 → 19}/include/wmmintrin.h +0 -0
  247. /package/lib/clang/{17 → 19}/include/xopintrin.h +0 -0
  248. /package/lib/clang/{17 → 19}/include/xsavecintrin.h +0 -0
  249. /package/lib/clang/{17 → 19}/include/xsaveintrin.h +0 -0
  250. /package/lib/clang/{17 → 19}/include/xsaveoptintrin.h +0 -0
  251. /package/lib/clang/{17 → 19}/include/xsavesintrin.h +0 -0
  252. /package/lib/clang/{17 → 19}/include/xtestintrin.h +0 -0
@@ -19,18 +19,17 @@
19
19
  to use it as a potentially faster version of BSF. */
20
20
  #define __RELAXED_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
21
21
 
22
- #define _tzcnt_u16(a) (__tzcnt_u16((a)))
23
-
24
22
  /// Counts the number of trailing zero bits in the operand.
25
23
  ///
26
24
  /// \headerfile <x86intrin.h>
27
25
  ///
28
- /// This intrinsic corresponds to the <c> TZCNT </c> instruction.
26
+ /// This intrinsic corresponds to the \c TZCNT instruction.
29
27
  ///
30
28
  /// \param __X
31
29
  /// An unsigned 16-bit integer whose trailing zeros are to be counted.
32
30
  /// \returns An unsigned 16-bit integer containing the number of trailing zero
33
31
  /// bits in the operand.
32
+ /// \see _tzcnt_u16
34
33
  static __inline__ unsigned short __RELAXED_FN_ATTRS
35
34
  __tzcnt_u16(unsigned short __X)
36
35
  {
@@ -41,13 +40,30 @@ __tzcnt_u16(unsigned short __X)
41
40
  ///
42
41
  /// \headerfile <x86intrin.h>
43
42
  ///
44
- /// This intrinsic corresponds to the <c> TZCNT </c> instruction.
43
+ /// \code
44
+ /// unsigned short _tzcnt_u16(unsigned short __X);
45
+ /// \endcode
46
+ ///
47
+ /// This intrinsic corresponds to the \c TZCNT instruction.
48
+ ///
49
+ /// \param __X
50
+ /// An unsigned 16-bit integer whose trailing zeros are to be counted.
51
+ /// \returns An unsigned 16-bit integer containing the number of trailing zero
52
+ /// bits in the operand.
53
+ /// \see __tzcnt_u16
54
+ #define _tzcnt_u16 __tzcnt_u16
55
+
56
+ /// Counts the number of trailing zero bits in the operand.
57
+ ///
58
+ /// \headerfile <x86intrin.h>
59
+ ///
60
+ /// This intrinsic corresponds to the \c TZCNT instruction.
45
61
  ///
46
62
  /// \param __X
47
63
  /// An unsigned 32-bit integer whose trailing zeros are to be counted.
48
64
  /// \returns An unsigned 32-bit integer containing the number of trailing zero
49
65
  /// bits in the operand.
50
- /// \see _mm_tzcnt_32
66
+ /// \see { _mm_tzcnt_32 _tzcnt_u32 }
51
67
  static __inline__ unsigned int __RELAXED_FN_ATTRS
52
68
  __tzcnt_u32(unsigned int __X)
53
69
  {
@@ -58,20 +74,35 @@ __tzcnt_u32(unsigned int __X)
58
74
  ///
59
75
  /// \headerfile <x86intrin.h>
60
76
  ///
61
- /// This intrinsic corresponds to the <c> TZCNT </c> instruction.
77
+ /// This intrinsic corresponds to the \c TZCNT instruction.
62
78
  ///
63
79
  /// \param __X
64
80
  /// An unsigned 32-bit integer whose trailing zeros are to be counted.
65
- /// \returns An 32-bit integer containing the number of trailing zero bits in
81
+ /// \returns A 32-bit integer containing the number of trailing zero bits in
66
82
  /// the operand.
67
- /// \see __tzcnt_u32
83
+ /// \see { __tzcnt_u32 _tzcnt_u32 }
68
84
  static __inline__ int __RELAXED_FN_ATTRS
69
85
  _mm_tzcnt_32(unsigned int __X)
70
86
  {
71
87
  return (int)__builtin_ia32_tzcnt_u32(__X);
72
88
  }
73
89
 
74
- #define _tzcnt_u32(a) (__tzcnt_u32((a)))
90
+ /// Counts the number of trailing zero bits in the operand.
91
+ ///
92
+ /// \headerfile <x86intrin.h>
93
+ ///
94
+ /// \code
95
+ /// unsigned int _tzcnt_u32(unsigned int __X);
96
+ /// \endcode
97
+ ///
98
+ /// This intrinsic corresponds to the \c TZCNT instruction.
99
+ ///
100
+ /// \param __X
101
+ /// An unsigned 32-bit integer whose trailing zeros are to be counted.
102
+ /// \returns An unsigned 32-bit integer containing the number of trailing zero
103
+ /// bits in the operand.
104
+ /// \see { _mm_tzcnt_32 __tzcnt_u32 }
105
+ #define _tzcnt_u32 __tzcnt_u32
75
106
 
76
107
  #ifdef __x86_64__
77
108
 
@@ -79,13 +110,13 @@ _mm_tzcnt_32(unsigned int __X)
79
110
  ///
80
111
  /// \headerfile <x86intrin.h>
81
112
  ///
82
- /// This intrinsic corresponds to the <c> TZCNT </c> instruction.
113
+ /// This intrinsic corresponds to the \c TZCNT instruction.
83
114
  ///
84
115
  /// \param __X
85
116
  /// An unsigned 64-bit integer whose trailing zeros are to be counted.
86
117
  /// \returns An unsigned 64-bit integer containing the number of trailing zero
87
118
  /// bits in the operand.
88
- /// \see _mm_tzcnt_64
119
+ /// \see { _mm_tzcnt_64 _tzcnt_u64 }
89
120
  static __inline__ unsigned long long __RELAXED_FN_ATTRS
90
121
  __tzcnt_u64(unsigned long long __X)
91
122
  {
@@ -96,46 +127,51 @@ __tzcnt_u64(unsigned long long __X)
96
127
  ///
97
128
  /// \headerfile <x86intrin.h>
98
129
  ///
99
- /// This intrinsic corresponds to the <c> TZCNT </c> instruction.
130
+ /// This intrinsic corresponds to the \c TZCNT instruction.
100
131
  ///
101
132
  /// \param __X
102
133
  /// An unsigned 64-bit integer whose trailing zeros are to be counted.
103
134
  /// \returns An 64-bit integer containing the number of trailing zero bits in
104
135
  /// the operand.
105
- /// \see __tzcnt_u64
136
+ /// \see { __tzcnt_u64 _tzcnt_u64 }
106
137
  static __inline__ long long __RELAXED_FN_ATTRS
107
138
  _mm_tzcnt_64(unsigned long long __X)
108
139
  {
109
140
  return (long long)__builtin_ia32_tzcnt_u64(__X);
110
141
  }
111
142
 
112
- #define _tzcnt_u64(a) (__tzcnt_u64((a)))
143
+ /// Counts the number of trailing zero bits in the operand.
144
+ ///
145
+ /// \headerfile <x86intrin.h>
146
+ ///
147
+ /// \code
148
+ /// unsigned long long _tzcnt_u64(unsigned long long __X);
149
+ /// \endcode
150
+ ///
151
+ /// This intrinsic corresponds to the \c TZCNT instruction.
152
+ ///
153
+ /// \param __X
154
+ /// An unsigned 64-bit integer whose trailing zeros are to be counted.
155
+ /// \returns An unsigned 64-bit integer containing the number of trailing zero
156
+ /// bits in the operand.
157
+ /// \see { _mm_tzcnt_64 __tzcnt_u64
158
+ #define _tzcnt_u64 __tzcnt_u64
113
159
 
114
160
  #endif /* __x86_64__ */
115
161
 
116
162
  #undef __RELAXED_FN_ATTRS
117
163
 
118
- #if !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) || \
119
- defined(__BMI__)
164
+ #if !defined(__SCE__) || __has_feature(modules) || defined(__BMI__)
120
165
 
121
166
  /* Define the default attributes for the functions in this file. */
122
167
  #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("bmi")))
123
168
 
124
- #define _andn_u32(a, b) (__andn_u32((a), (b)))
125
-
126
- /* _bextr_u32 != __bextr_u32 */
127
- #define _blsi_u32(a) (__blsi_u32((a)))
128
-
129
- #define _blsmsk_u32(a) (__blsmsk_u32((a)))
130
-
131
- #define _blsr_u32(a) (__blsr_u32((a)))
132
-
133
169
  /// Performs a bitwise AND of the second operand with the one's
134
170
  /// complement of the first operand.
135
171
  ///
136
172
  /// \headerfile <x86intrin.h>
137
173
  ///
138
- /// This intrinsic corresponds to the <c> ANDN </c> instruction.
174
+ /// This intrinsic corresponds to the \c ANDN instruction.
139
175
  ///
140
176
  /// \param __X
141
177
  /// An unsigned integer containing one of the operands.
@@ -143,19 +179,40 @@ _mm_tzcnt_64(unsigned long long __X)
143
179
  /// An unsigned integer containing one of the operands.
144
180
  /// \returns An unsigned integer containing the bitwise AND of the second
145
181
  /// operand with the one's complement of the first operand.
182
+ /// \see _andn_u32
146
183
  static __inline__ unsigned int __DEFAULT_FN_ATTRS
147
184
  __andn_u32(unsigned int __X, unsigned int __Y)
148
185
  {
149
186
  return ~__X & __Y;
150
187
  }
151
188
 
189
+ /// Performs a bitwise AND of the second operand with the one's
190
+ /// complement of the first operand.
191
+ ///
192
+ /// \headerfile <x86intrin.h>
193
+ ///
194
+ /// \code
195
+ /// unsigned int _andn_u32(unsigned int __X, unsigned int __Y);
196
+ /// \endcode
197
+ ///
198
+ /// This intrinsic corresponds to the \c ANDN instruction.
199
+ ///
200
+ /// \param __X
201
+ /// An unsigned integer containing one of the operands.
202
+ /// \param __Y
203
+ /// An unsigned integer containing one of the operands.
204
+ /// \returns An unsigned integer containing the bitwise AND of the second
205
+ /// operand with the one's complement of the first operand.
206
+ /// \see __andn_u32
207
+ #define _andn_u32 __andn_u32
208
+
152
209
  /* AMD-specified, double-leading-underscore version of BEXTR */
153
210
  /// Extracts the specified bits from the first operand and returns them
154
211
  /// in the least significant bits of the result.
155
212
  ///
156
213
  /// \headerfile <x86intrin.h>
157
214
  ///
158
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
215
+ /// This intrinsic corresponds to the \c BEXTR instruction.
159
216
  ///
160
217
  /// \param __X
161
218
  /// An unsigned integer whose bits are to be extracted.
@@ -178,7 +235,7 @@ __bextr_u32(unsigned int __X, unsigned int __Y)
178
235
  ///
179
236
  /// \headerfile <x86intrin.h>
180
237
  ///
181
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
238
+ /// This intrinsic corresponds to the \c BEXTR instruction.
182
239
  ///
183
240
  /// \param __X
184
241
  /// An unsigned integer whose bits are to be extracted.
@@ -203,7 +260,7 @@ _bextr_u32(unsigned int __X, unsigned int __Y, unsigned int __Z)
203
260
  ///
204
261
  /// \headerfile <x86intrin.h>
205
262
  ///
206
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
263
+ /// This intrinsic corresponds to the \c BEXTR instruction.
207
264
  ///
208
265
  /// \param __X
209
266
  /// An unsigned integer whose bits are to be extracted.
@@ -224,69 +281,117 @@ _bextr2_u32(unsigned int __X, unsigned int __Y) {
224
281
  ///
225
282
  /// \headerfile <x86intrin.h>
226
283
  ///
227
- /// This intrinsic corresponds to the <c> BLSI </c> instruction.
284
+ /// This intrinsic corresponds to the \c BLSI instruction.
228
285
  ///
229
286
  /// \param __X
230
287
  /// An unsigned integer whose bits are to be cleared.
231
288
  /// \returns An unsigned integer containing the result of clearing the bits from
232
289
  /// the source operand.
290
+ /// \see _blsi_u32
233
291
  static __inline__ unsigned int __DEFAULT_FN_ATTRS
234
292
  __blsi_u32(unsigned int __X)
235
293
  {
236
294
  return __X & -__X;
237
295
  }
238
296
 
297
+ /// Clears all bits in the source except for the least significant bit
298
+ /// containing a value of 1 and returns the result.
299
+ ///
300
+ /// \headerfile <x86intrin.h>
301
+ ///
302
+ /// \code
303
+ /// unsigned int _blsi_u32(unsigned int __X);
304
+ /// \endcode
305
+ ///
306
+ /// This intrinsic corresponds to the \c BLSI instruction.
307
+ ///
308
+ /// \param __X
309
+ /// An unsigned integer whose bits are to be cleared.
310
+ /// \returns An unsigned integer containing the result of clearing the bits from
311
+ /// the source operand.
312
+ /// \see __blsi_u32
313
+ #define _blsi_u32 __blsi_u32
314
+
239
315
  /// Creates a mask whose bits are set to 1, using bit 0 up to and
240
316
  /// including the least significant bit that is set to 1 in the source
241
317
  /// operand and returns the result.
242
318
  ///
243
319
  /// \headerfile <x86intrin.h>
244
320
  ///
245
- /// This intrinsic corresponds to the <c> BLSMSK </c> instruction.
321
+ /// This intrinsic corresponds to the \c BLSMSK instruction.
246
322
  ///
247
323
  /// \param __X
248
324
  /// An unsigned integer used to create the mask.
249
325
  /// \returns An unsigned integer containing the newly created mask.
326
+ /// \see _blsmsk_u32
250
327
  static __inline__ unsigned int __DEFAULT_FN_ATTRS
251
328
  __blsmsk_u32(unsigned int __X)
252
329
  {
253
330
  return __X ^ (__X - 1);
254
331
  }
255
332
 
333
+ /// Creates a mask whose bits are set to 1, using bit 0 up to and
334
+ /// including the least significant bit that is set to 1 in the source
335
+ /// operand and returns the result.
336
+ ///
337
+ /// \headerfile <x86intrin.h>
338
+ ///
339
+ /// \code
340
+ /// unsigned int _blsmsk_u32(unsigned int __X);
341
+ /// \endcode
342
+ ///
343
+ /// This intrinsic corresponds to the \c BLSMSK instruction.
344
+ ///
345
+ /// \param __X
346
+ /// An unsigned integer used to create the mask.
347
+ /// \returns An unsigned integer containing the newly created mask.
348
+ /// \see __blsmsk_u32
349
+ #define _blsmsk_u32 __blsmsk_u32
350
+
256
351
  /// Clears the least significant bit that is set to 1 in the source
257
352
  /// operand and returns the result.
258
353
  ///
259
354
  /// \headerfile <x86intrin.h>
260
355
  ///
261
- /// This intrinsic corresponds to the <c> BLSR </c> instruction.
356
+ /// This intrinsic corresponds to the \c BLSR instruction.
262
357
  ///
263
358
  /// \param __X
264
359
  /// An unsigned integer containing the operand to be cleared.
265
360
  /// \returns An unsigned integer containing the result of clearing the source
266
361
  /// operand.
362
+ /// \see _blsr_u32
267
363
  static __inline__ unsigned int __DEFAULT_FN_ATTRS
268
364
  __blsr_u32(unsigned int __X)
269
365
  {
270
366
  return __X & (__X - 1);
271
367
  }
272
368
 
273
- #ifdef __x86_64__
274
-
275
- #define _andn_u64(a, b) (__andn_u64((a), (b)))
276
-
277
- /* _bextr_u64 != __bextr_u64 */
278
- #define _blsi_u64(a) (__blsi_u64((a)))
279
-
280
- #define _blsmsk_u64(a) (__blsmsk_u64((a)))
369
+ /// Clears the least significant bit that is set to 1 in the source
370
+ /// operand and returns the result.
371
+ ///
372
+ /// \headerfile <x86intrin.h>
373
+ ///
374
+ /// \code
375
+ /// unsigned int _bls4_u32(unsigned int __X);
376
+ /// \endcode
377
+ ///
378
+ /// This intrinsic corresponds to the \c BLSR instruction.
379
+ ///
380
+ /// \param __X
381
+ /// An unsigned integer containing the operand to be cleared.
382
+ /// \returns An unsigned integer containing the result of clearing the source
383
+ /// operand.
384
+ /// \see __blsr_u32
385
+ #define _blsr_u32 __blsr_u32
281
386
 
282
- #define _blsr_u64(a) (__blsr_u64((a)))
387
+ #ifdef __x86_64__
283
388
 
284
389
  /// Performs a bitwise AND of the second operand with the one's
285
390
  /// complement of the first operand.
286
391
  ///
287
392
  /// \headerfile <x86intrin.h>
288
393
  ///
289
- /// This intrinsic corresponds to the <c> ANDN </c> instruction.
394
+ /// This intrinsic corresponds to the \c ANDN instruction.
290
395
  ///
291
396
  /// \param __X
292
397
  /// An unsigned 64-bit integer containing one of the operands.
@@ -294,19 +399,41 @@ __blsr_u32(unsigned int __X)
294
399
  /// An unsigned 64-bit integer containing one of the operands.
295
400
  /// \returns An unsigned 64-bit integer containing the bitwise AND of the second
296
401
  /// operand with the one's complement of the first operand.
402
+ /// \see _andn_u64
297
403
  static __inline__ unsigned long long __DEFAULT_FN_ATTRS
298
404
  __andn_u64 (unsigned long long __X, unsigned long long __Y)
299
405
  {
300
406
  return ~__X & __Y;
301
407
  }
302
408
 
409
+ /// Performs a bitwise AND of the second operand with the one's
410
+ /// complement of the first operand.
411
+ ///
412
+ /// \headerfile <x86intrin.h>
413
+ ///
414
+ /// \code
415
+ /// unsigned long long _andn_u64(unsigned long long __X,
416
+ /// unsigned long long __Y);
417
+ /// \endcode
418
+ ///
419
+ /// This intrinsic corresponds to the \c ANDN instruction.
420
+ ///
421
+ /// \param __X
422
+ /// An unsigned 64-bit integer containing one of the operands.
423
+ /// \param __Y
424
+ /// An unsigned 64-bit integer containing one of the operands.
425
+ /// \returns An unsigned 64-bit integer containing the bitwise AND of the second
426
+ /// operand with the one's complement of the first operand.
427
+ /// \see __andn_u64
428
+ #define _andn_u64 __andn_u64
429
+
303
430
  /* AMD-specified, double-leading-underscore version of BEXTR */
304
431
  /// Extracts the specified bits from the first operand and returns them
305
432
  /// in the least significant bits of the result.
306
433
  ///
307
434
  /// \headerfile <x86intrin.h>
308
435
  ///
309
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
436
+ /// This intrinsic corresponds to the \c BEXTR instruction.
310
437
  ///
311
438
  /// \param __X
312
439
  /// An unsigned 64-bit integer whose bits are to be extracted.
@@ -329,7 +456,7 @@ __bextr_u64(unsigned long long __X, unsigned long long __Y)
329
456
  ///
330
457
  /// \headerfile <x86intrin.h>
331
458
  ///
332
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
459
+ /// This intrinsic corresponds to the \c BEXTR instruction.
333
460
  ///
334
461
  /// \param __X
335
462
  /// An unsigned 64-bit integer whose bits are to be extracted.
@@ -354,7 +481,7 @@ _bextr_u64(unsigned long long __X, unsigned int __Y, unsigned int __Z)
354
481
  ///
355
482
  /// \headerfile <x86intrin.h>
356
483
  ///
357
- /// This intrinsic corresponds to the <c> BEXTR </c> instruction.
484
+ /// This intrinsic corresponds to the \c BEXTR instruction.
358
485
  ///
359
486
  /// \param __X
360
487
  /// An unsigned 64-bit integer whose bits are to be extracted.
@@ -375,57 +502,113 @@ _bextr2_u64(unsigned long long __X, unsigned long long __Y) {
375
502
  ///
376
503
  /// \headerfile <x86intrin.h>
377
504
  ///
378
- /// This intrinsic corresponds to the <c> BLSI </c> instruction.
505
+ /// This intrinsic corresponds to the \c BLSI instruction.
379
506
  ///
380
507
  /// \param __X
381
508
  /// An unsigned 64-bit integer whose bits are to be cleared.
382
509
  /// \returns An unsigned 64-bit integer containing the result of clearing the
383
510
  /// bits from the source operand.
511
+ /// \see _blsi_u64
384
512
  static __inline__ unsigned long long __DEFAULT_FN_ATTRS
385
513
  __blsi_u64(unsigned long long __X)
386
514
  {
387
515
  return __X & -__X;
388
516
  }
389
517
 
518
+ /// Clears all bits in the source except for the least significant bit
519
+ /// containing a value of 1 and returns the result.
520
+ ///
521
+ /// \headerfile <x86intrin.h>
522
+ ///
523
+ /// \code
524
+ /// unsigned long long _blsi_u64(unsigned long long __X);
525
+ /// \endcode
526
+ ///
527
+ /// This intrinsic corresponds to the \c BLSI instruction.
528
+ ///
529
+ /// \param __X
530
+ /// An unsigned 64-bit integer whose bits are to be cleared.
531
+ /// \returns An unsigned 64-bit integer containing the result of clearing the
532
+ /// bits from the source operand.
533
+ /// \see __blsi_u64
534
+ #define _blsi_u64 __blsi_u64
535
+
390
536
  /// Creates a mask whose bits are set to 1, using bit 0 up to and
391
537
  /// including the least significant bit that is set to 1 in the source
392
538
  /// operand and returns the result.
393
539
  ///
394
540
  /// \headerfile <x86intrin.h>
395
541
  ///
396
- /// This intrinsic corresponds to the <c> BLSMSK </c> instruction.
542
+ /// This intrinsic corresponds to the \c BLSMSK instruction.
397
543
  ///
398
544
  /// \param __X
399
545
  /// An unsigned 64-bit integer used to create the mask.
400
546
  /// \returns An unsigned 64-bit integer containing the newly created mask.
547
+ /// \see _blsmsk_u64
401
548
  static __inline__ unsigned long long __DEFAULT_FN_ATTRS
402
549
  __blsmsk_u64(unsigned long long __X)
403
550
  {
404
551
  return __X ^ (__X - 1);
405
552
  }
406
553
 
554
+ /// Creates a mask whose bits are set to 1, using bit 0 up to and
555
+ /// including the least significant bit that is set to 1 in the source
556
+ /// operand and returns the result.
557
+ ///
558
+ /// \headerfile <x86intrin.h>
559
+ ///
560
+ /// \code
561
+ /// unsigned long long _blsmsk_u64(unsigned long long __X);
562
+ /// \endcode
563
+ ///
564
+ /// This intrinsic corresponds to the \c BLSMSK instruction.
565
+ ///
566
+ /// \param __X
567
+ /// An unsigned 64-bit integer used to create the mask.
568
+ /// \returns An unsigned 64-bit integer containing the newly created mask.
569
+ /// \see __blsmsk_u64
570
+ #define _blsmsk_u64 __blsmsk_u64
571
+
407
572
  /// Clears the least significant bit that is set to 1 in the source
408
573
  /// operand and returns the result.
409
574
  ///
410
575
  /// \headerfile <x86intrin.h>
411
576
  ///
412
- /// This intrinsic corresponds to the <c> BLSR </c> instruction.
577
+ /// This intrinsic corresponds to the \c BLSR instruction.
413
578
  ///
414
579
  /// \param __X
415
580
  /// An unsigned 64-bit integer containing the operand to be cleared.
416
581
  /// \returns An unsigned 64-bit integer containing the result of clearing the
417
582
  /// source operand.
583
+ /// \see _blsr_u64
418
584
  static __inline__ unsigned long long __DEFAULT_FN_ATTRS
419
585
  __blsr_u64(unsigned long long __X)
420
586
  {
421
587
  return __X & (__X - 1);
422
588
  }
423
589
 
590
+ /// Clears the least significant bit that is set to 1 in the source
591
+ /// operand and returns the result.
592
+ ///
593
+ /// \headerfile <x86intrin.h>
594
+ ///
595
+ /// \code
596
+ /// unsigned long long _blsr_u64(unsigned long long __X);
597
+ /// \endcode
598
+ ///
599
+ /// This intrinsic corresponds to the \c BLSR instruction.
600
+ ///
601
+ /// \param __X
602
+ /// An unsigned 64-bit integer containing the operand to be cleared.
603
+ /// \returns An unsigned 64-bit integer containing the result of clearing the
604
+ /// source operand.
605
+ /// \see __blsr_u64
606
+ #define _blsr_u64 __blsr_u64
607
+
424
608
  #endif /* __x86_64__ */
425
609
 
426
610
  #undef __DEFAULT_FN_ATTRS
427
611
 
428
- #endif /* !(defined(_MSC_VER) || defined(__SCE__)) || __has_feature(modules) \
429
- || defined(__BMI__) */
612
+ #endif /* !defined(__SCE__) || __has_feature(modules) || defined(__BMI__) */
430
613
 
431
614
  #endif /* __BMIINTRIN_H */
@@ -13,4 +13,7 @@
13
13
  #ifndef __BUILTINS_H
14
14
  #define __BUILTINS_H
15
15
 
16
+ #if defined(__MVS__) && __has_include_next(<builtins.h>)
17
+ #include_next <builtins.h>
18
+ #endif /* __MVS__ */
16
19
  #endif /* __BUILTINS_H */
@@ -10,7 +10,7 @@
10
10
  #ifndef __CPUID_H
11
11
  #define __CPUID_H
12
12
 
13
- #if !(__x86_64__ || __i386__)
13
+ #if !defined(__x86_64__) && !defined(__i386__)
14
14
  #error this header is for x86 only
15
15
  #endif
16
16
 
@@ -200,6 +200,9 @@
200
200
  #define bit_AMXINT8 0x02000000
201
201
 
202
202
  /* Features in %eax for leaf 7 sub-leaf 1 */
203
+ #define bit_SHA512 0x00000001
204
+ #define bit_SM3 0x00000002
205
+ #define bit_SM4 0x00000004
203
206
  #define bit_RAOINT 0x00000008
204
207
  #define bit_AVXVNNI 0x00000010
205
208
  #define bit_AVX512BF16 0x00000020
@@ -211,7 +214,12 @@
211
214
  /* Features in %edx for leaf 7 sub-leaf 1 */
212
215
  #define bit_AVXVNNIINT8 0x00000010
213
216
  #define bit_AVXNECONVERT 0x00000020
217
+ #define bit_AMXCOMPLEX 0x00000100
218
+ #define bit_AVXVNNIINT16 0x00000400
214
219
  #define bit_PREFETCHI 0x00004000
220
+ #define bit_USERMSR 0x00008000
221
+ #define bit_AVX10 0x00080000
222
+ #define bit_APXF 0x00200000
215
223
 
216
224
  /* Features in %eax for leaf 13 sub-leaf 1 */
217
225
  #define bit_XSAVEOPT 0x00000001
@@ -244,8 +252,11 @@
244
252
  #define bit_RDPRU 0x00000010
245
253
  #define bit_WBNOINVD 0x00000200
246
254
 
255
+ /* Features in %ebx for leaf 0x24 */
256
+ #define bit_AVX10_256 0x00020000
257
+ #define bit_AVX10_512 0x00040000
247
258
 
248
- #if __i386__
259
+ #ifdef __i386__
249
260
  #define __cpuid(__leaf, __eax, __ebx, __ecx, __edx) \
250
261
  __asm("cpuid" : "=a"(__eax), "=b" (__ebx), "=c"(__ecx), "=d"(__edx) \
251
262
  : "0"(__leaf))
@@ -274,7 +285,7 @@ static __inline unsigned int __get_cpuid_max (unsigned int __leaf,
274
285
  unsigned int *__sig)
275
286
  {
276
287
  unsigned int __eax, __ebx, __ecx, __edx;
277
- #if __i386__
288
+ #ifdef __i386__
278
289
  int __cpuid_supported;
279
290
 
280
291
  __asm(" pushfl\n"
@@ -328,4 +339,13 @@ static __inline int __get_cpuid_count (unsigned int __leaf,
328
339
  return 1;
329
340
  }
330
341
 
342
+ // In some configurations, __cpuidex is defined as a builtin (primarily
343
+ // -fms-extensions) which will conflict with the __cpuidex definition below.
344
+ #if !(__has_builtin(__cpuidex))
345
+ static __inline void __cpuidex(int __cpu_info[4], int __leaf, int __subleaf) {
346
+ __cpuid_count(__leaf, __subleaf, __cpu_info[0], __cpu_info[1], __cpu_info[2],
347
+ __cpu_info[3]);
348
+ }
349
+ #endif
350
+
331
351
  #endif /* __CPUID_H */
@@ -99,7 +99,7 @@ template <class __T>
99
99
  __attribute__((enable_if(true, "")))
100
100
  inline _CPP14_CONSTEXPR __host__ __device__ const __T &
101
101
  min(const __T &__a, const __T &__b) {
102
- return __a < __b ? __a : __b;
102
+ return __b < __a ? __b : __a;
103
103
  }
104
104
 
105
105
  #pragma pop_macro("_CPP14_CONSTEXPR")