-
Notifications
You must be signed in to change notification settings - Fork 13.4k
AVX10 feature mismatch between GCC and LLVM #135394
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@llvm/issue-subscribers-backend-x86 Author: Sayantan Chakraborty (sayantn)
The Intel Software Developers Manual (March 2025) specifies that AVX10.1 supports the following AVX512 instruction families (Volume 1, Table 16-2)
- AVX512F
- AVX512CD
- AVX512BW
- AVX512DQ
- AVX512VBMI
- AVX512IFMA
- AVX512VNNI
- AVX512BF16
- AVX512VPOPCNTDQ
- AVX512VBMI2
- VAES
- GFNI
- VPCLMULQDQ
- AVX512-BITALG
- AVX512-FP16
With the following additional note GCC and LLVM agree to enable all
Both seems to be following the Intel spec, but in different ways, which is not good for the ecosystem in general, and creates more confusion between end users. This would probably require some collaboration with GCC (and possible Intel too). GCC version
|
Note |
Even in the current git version (see here) |
Thanks for the report! According to latest SDM, both |
According to SDM, they require both VAES/VPCLMULQDQ and AVX10.1 CPUID bits. Fixes: #135394
…5489) According to SDM, they require both VAES/VPCLMULQDQ and AVX10.1 CPUID bits. Fixes: llvm#135394 (cherry picked from commit ebba554)
…5489) According to SDM, they require both VAES/VPCLMULQDQ and AVX10.1 CPUID bits. Fixes: llvm#135394
Add the AVX10 target features Parent rust-lang#138843 Adds the `avx10_target_feature` feature gate, and `avx10.1` and `avx10.2` target features. It is confirmed that Intel is dropping AVX10/256 (see [this comment](rust-lang#111137 (comment))), so this should be safe to implement now. The LLVM fix for llvm/llvm-project#135394 was merged, and has been backported to LLVM20, and the patch has also been propagated to rustc in rust-lang#140502 `@rustbot` label O-x86_64 O-x86_32 A-target-feature A-SIMD
Rollup merge of rust-lang#139675 - sayantn:avx10, r=Amanieu Add the AVX10 target features Parent rust-lang#138843 Adds the `avx10_target_feature` feature gate, and `avx10.1` and `avx10.2` target features. It is confirmed that Intel is dropping AVX10/256 (see [this comment](rust-lang#111137 (comment))), so this should be safe to implement now. The LLVM fix for llvm/llvm-project#135394 was merged, and has been backported to LLVM20, and the patch has also been propagated to rustc in rust-lang#140502 `@rustbot` label O-x86_64 O-x86_32 A-target-feature A-SIMD
The Intel Software Developers Manual (March 2025) specifies that AVX10.1 supports the following AVX512 instruction families (Volume 1, Table 16-2)
With the following additional note
GCC and LLVM agree to enable all
avx512*
features, but they do not seem to agree aboutvaes
,vpclmulqdq
andgfni
gcc -mavx10.1-512 -Q --help=target
shows thatavx10.1-512
implies none of GFNI, VAES and VPCLMULQDQX86.td
shows thatavx10.1-512
implies only VAES and VPCLMULQDQ, not GFNIBoth seems to be following the Intel spec, but in different ways, which is not good for the ecosystem in general, and creates more confusion between end users. This would probably require some collaboration with GCC (and possible Intel too).
GCC version
The text was updated successfully, but these errors were encountered: