error[E0658]: use of unstable library feature 'stdsimd'
--> src/cpu_features/x86.rs:50:12
|
50 | && is_x86_feature_detected!("avx512ifma")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #27731 <https://github.com/rust-lang/rust/issues/27731> for more information
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
It was notified on zulip before
Note that this worked in 1.42, so this is a stable-to-stable regression.
This basically #68905. We re-stabilized some of the avx512 features that were used by BLAKE3, but it seems that we missed rav1e.
@Amanieu Any chance you could prepare a fix? I think this is worth a stable point release.
Summarizing some discussions in the lang team meeting, regarding CPU feature naming: there are inconsistencies in feature naming between LLVM, GCC, GAS, and the Linux kernel, but we have a mild technical reason to defer to LLVM (doing otherwise requires renaming the feature). So let's defer to LLVM naming of CPU features, which doesn't tend to use underscores.
In https://github.com/rust-lang/stdarch/pull/849 I stabilized all remaining x86 features for feature detection.
@rfcbot fcp merge
Team member @Amanieu has proposed to merge this. The next step is review by the rest of the tagged team members:
No concerns currently listed.
Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!
See this document for info about what commands tagged team members can give me.
Why wasn't this caught by the crater runs for 1.43? It builds stuff from github, no?
:bell: This is now entering its final comment period, as per the review above. :bell:
Hmm yeah there were issues compiling the asm files:
[INFO] [stderr] Caused by:
[INFO] [stderr] process didn't exit successfully: `/opt/rustwide/target/debug/build/rav1e-3a89a641e64125d3/build-script-build` (exit code: 101)
[INFO] [stderr] --- stdout
[INFO] [stderr] cargo:rustc-cfg=nasm_x86_64
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/ipred.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/ipred.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/me.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/me.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/itx_ssse3.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/itx_ssse3.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/ipred_ssse3.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/ipred_ssse3.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/satd.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/satd.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/mc.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/cdef.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/cdef.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/itx.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/itx.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/sad_sse2.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/sad_sse2.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/tables.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/tables.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc_ssse3.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/mc_ssse3.o"
[INFO] [stderr] running: "nasm" "-felf64" "-gdwarf" "-I/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/" "-Isrc/" "/opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/sad_avx.asm" "-o" "/opt/rustwide/target/debug/build/rav1e-05e9929c2949d6bf/out/src/x86/sad_avx.o"
[INFO] [stderr]
[INFO] [stderr] --- stderr
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: parser: instruction expected
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2767: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: symbol `vpdpbusd' redefined
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2768: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: parser: instruction expected
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2768: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: symbol `vpdpbusd' redefined
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2812: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: parser: instruction expected
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2812: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: symbol `vpdpbusd' redefined
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2813: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: parser: instruction expected
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:2813: ... from macro `PREP_8TAP' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:5506: error: symbol `vpdpbusd' redefined
[...]
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:4417: ... from macro `W_MASK' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:6009: error: symbol `vpshldw' redefined
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:4417: ... from macro `W_MASK' defined here
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:6009: error: parser: instruction expected
[INFO] [stderr] /opt/rustwide/cargo-home/git/checkouts/rav1e-14e16d25dd5cd9c0/91658bd/src/x86/mc.asm:4417: ... from macro `W_MASK' defined here
[INFO] [stderr] thread '<unnamed>' panicked at 'nonzero exit status: exit code: 1', /opt/rustwide/cargo-home/registry/src/github.com-1ecc6299db9ec823/nasm-rs-0.1.7/src/lib.rs:343:9
I looks like the assembler is too old and doesn't recognize the AVX-512 instructions
cc @rust-lang/infra We missed a regression on crater because it had an old version of nasm, which caused the rav1e crate to fail to compile. It seems that nasm 2.14 is required for the AVX512 instruction used.
I looks like the assembler is too old and doesn't recognize the AVX-512 instructions
Hmm yeah that might be it. It seems to run Ubuntu 18.04 LTS which uses nasm 2.13. An update to 20.04 LTS will bring nasm 2.14 and probably fix the issue short term but not long term once rav1e starts requiring newer nasm versions.
(removing stable-nominated tag, as we nominate PR's for backport, not issues)
Most helpful comment
@Amanieu Any chance you could prepare a fix? I think this is worth a stable point release.