Quoting from the AMD64 manual for EXTRQ:
Extracts specified bits from the lower 64 bits of the first operand (the destination XMM register). The
extracted bits are saved in the least-significant bit positions of the lower quadword of the destination;
the remaining bits in the lower quadword of the destination register are cleared to 0. The upper
quadword of the destination register is undefined.
However, the test here seems to assume that the upper bits are zero:
|
fn test_mm_extract_si64() { |
The comparison can evaluate to true or false as undefined bits are compared.
Same applies for the extracti, insert and inserti tests.
These start failing on i686 with LLVM 23.
Quoting from the AMD64 manual for EXTRQ:
However, the test here seems to assume that the upper bits are zero:
stdarch/crates/core_arch/src/x86/sse4a.rs
Line 154 in cb3aaba
The comparison can evaluate to true or false as undefined bits are compared.
Same applies for the extracti, insert and inserti tests.
These start failing on i686 with LLVM 23.