When AVX512 was introduced, it introduced many new instructions for 128 and 256 bit vectors, too. When Intel decided to make AVX512 for servers only, they introduced new instruction sets AVX-VNNI, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT8 and AVX-VNNI-INT16 for desktop computers. But currently, in Rust, we have no way to check for these features (we can't do all of AVX-NE-CONVERT due to the lack of f16 type yet). LLVM does have these intrinsics and code generation features. Also, Rust doesn't have SHA512, SM3 and SM4 intrinsics (LLVM has the intrinsics). These will be very important as all these intrinsics will be available in Arrow Lake and Lunar Lake, which will be of major importance in 2025.
New target-features:
[ ] AVX-VNNI
[ ] AVX-IFMA
[ ] AVX-NE-CONVERT
[ ] AVX-VNNI-INT8
[ ] AVX-VNNI-INT16
We would need to introduce these target-features and port the existing intrinsics to them.
New Intrinsic Families:
[ ] SHA512
[ ] SM3
[ ] SM4
[ ] AMX
After f16 is stabilized, we would need to do AVX512-FP16 and F16C too (and complete AVX-NE-CONVERT).
Also, there is an inconsistency between is_x86_feature_detected and cfg(target_feature). For "backported" AVX512 intrinsics, like GFNI, VAES, VPCLMULQDQ (and probably VNNI AND IFMA, too), cfg(target_feature) can detect the feature in CPU, but the detect macro is unable to. This happens in AlderLake and RaptorLake, but it will also be an issue in ArrowLake and LunarLake.
When AVX512 was introduced, it introduced many new instructions for 128 and 256 bit vectors, too. When Intel decided to make AVX512 for servers only, they introduced new instruction sets
AVX-VNNI
,AVX-IFMA
,AVX-NE-CONVERT
,AVX-VNNI-INT8
andAVX-VNNI-INT16
for desktop computers. But currently, in Rust, we have no way to check for these features (we can't do all ofAVX-NE-CONVERT
due to the lack off16
type yet). LLVM does have these intrinsics and code generation features. Also, Rust doesn't haveSHA512
,SM3
andSM4
intrinsics (LLVM has the intrinsics). These will be very important as all these intrinsics will be available in Arrow Lake and Lunar Lake, which will be of major importance in 2025.New
target-feature
s:We would need to introduce these
target-feature
s and port the existing intrinsics to them.New Intrinsic Families:
After
f16
is stabilized, we would need to do AVX512-FP16 and F16C too (and complete AVX-NE-CONVERT).Also, there is an inconsistency between
is_x86_feature_detected
andcfg(target_feature)
. For "backported" AVX512 intrinsics, like GFNI, VAES, VPCLMULQDQ (and probably VNNI AND IFMA, too),cfg(target_feature)
can detect the feature in CPU, but the detect macro is unable to. This happens in AlderLake and RaptorLake, but it will also be an issue in ArrowLake and LunarLake.