Fix ImmLogic.invert(), and with it, fcopysign and float_misc test.
Previously, `fcopysign` was mysteriously failing to pass the `float_misc` spec test. This was tracked down to bad logical-immediate masks used to separate the sign and not-sign bits. In particular, the masks for the and-not operations were wrong. The `invert()` function on an `ImmLogic` immediate, it turns out, assumed every immediate would be used by a 64-bit instruction; `ImmLogic` immediates are subtly different for 32-bit instructions. This change tracks the instruction size (32 or 64 bits) intended for use with each such immediate, and passes it back into `maybe_from_u64` when computing the inverted immediate. Addresses several of the failures (`float_misc`, `f32_bitwise`) for #1521 (test failures) and presumably helps #1519 (SpiderMonkey integration).
This commit is contained in:
2
build.rs
2
build.rs
@@ -243,8 +243,6 @@ fn should_panic(testsuite: &str, testname: &str) -> bool {
|
||||
| ("multi_value", "call")
|
||||
| ("spec_testsuite", "call")
|
||||
| ("spec_testsuite", "conversions")
|
||||
| ("spec_testsuite", "f32_bitwise")
|
||||
| ("spec_testsuite", "float_misc")
|
||||
| ("spec_testsuite", "i32")
|
||||
| ("spec_testsuite", "i64")
|
||||
| ("spec_testsuite", "int_exprs")
|
||||
|
||||
Reference in New Issue
Block a user