You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have access to an Intel Ice Lake CPU which has AVX-512 (and VAES / VPCLMULQDQ) support, it was this CPU that produced the below results.
When I follow the updated CONTRIBUTING.MD (#390) with -C target-cpu=native I get quite a few codegen tests for core_arch to fail. The reason seems to be that LLVM (or the disassembler) for some of these instructions doesn't report back their normal name, e.g. aesenc but rather their vectorized counter-part, e.g. vaesenc even though the right instruction was generated. This confuses the tool that checks the disassembly for the instruction and lets the test fail. I think this happens on all CPUs that support AVX-512 (i.e. starting from Skylake-X for Intel).
For completeness: I'm running on Arch Linux with rust nightly (cargo 1.49.0-nightly (79b397d72 2020-10-15)) and this invocation (on an Ice Lake CPU): RUSTFLAGS="-C target-cpu=native" TARGET=x86_64-unknown-linux-gnu cargo +nightly test --release -p core_arch
Here's a structural example:
---- core_arch::x86::sse::assert__mm_stream_ps_movntps stdout ----
disassembly for stdarch_test_shim__mm_stream_ps_movntps:
0: lea 0x11d316(%rip),%rax # 20cd5d <anon.264e4d374f3812f9c2d5070410b589dc.255.llvm.10815413451089272223+0x7>
1: lea 0x1e75c2(%rip),%rcx # 2d7010 <_ZN12stdarch_test11_DONT_DEDUP17h5804a9238811d034E>
2: mov %rax,(%rcx)
3: vmovntps %xmm0,(%rdi)
4: retq
5: nopw %cs:0x0(%rax,%rax,1)
6:
thread 'core_arch::x86::sse::assert__mm_stream_ps_movntps' panicked at 'failed to find instruction `movntps` in the disassembly', crates/stdarch-test/src/lib.rs:144:9
For the intrinsics we don't actually make any guarantees on what instructions the compiler will generate, so the tests are actually more picky than they should be. In general you shouldn't be using any -C target-cpu flags when running the tests except for ARM which needs -C target-feature=+neon.
DevJPM
added a commit
to DevJPM/stdarch
that referenced
this issue
Oct 25, 2020
I have access to an Intel Ice Lake CPU which has AVX-512 (and VAES / VPCLMULQDQ) support, it was this CPU that produced the below results.
When I follow the updated CONTRIBUTING.MD (#390) with
-C target-cpu=native
I get quite a few codegen tests forcore_arch
to fail. The reason seems to be that LLVM (or the disassembler) for some of these instructions doesn't report back their normal name, e.g.aesenc
but rather their vectorized counter-part, e.g.vaesenc
even though the right instruction was generated. This confuses the tool that checks the disassembly for the instruction and lets the test fail. I think this happens on all CPUs that support AVX-512 (i.e. starting from Skylake-X for Intel).For completeness: I'm running on Arch Linux with rust nightly (
cargo 1.49.0-nightly (79b397d72 2020-10-15)
) and this invocation (on an Ice Lake CPU):RUSTFLAGS="-C target-cpu=native" TARGET=x86_64-unknown-linux-gnu cargo +nightly test --release -p core_arch
Here's a structural example:
And here's the list of tests that fail:
The text was updated successfully, but these errors were encountered: