Skip to content

Commit aeee038

Browse files
committed
Skip signaling NaN tests on x86
1 parent 56210ef commit aeee038

File tree

1 file changed

+20
-15
lines changed

1 file changed

+20
-15
lines changed

src/float.rs

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2448,21 +2448,26 @@ mod tests {
24482448
check_lt(-0.0_f64, 0.0_f64);
24492449
check_lt(-0.0_f32, 0.0_f32);
24502450

2451-
let s_nan = f64::from_bits(0x7ff4000000000000);
2452-
let q_nan = f64::from_bits(0x7ff8000000000000);
2453-
check_lt(s_nan, q_nan);
2454-
2455-
let neg_s_nan = f64::from_bits(0xfff4000000000000);
2456-
let neg_q_nan = f64::from_bits(0xfff8000000000000);
2457-
check_lt(neg_q_nan, neg_s_nan);
2458-
2459-
let s_nan = f32::from_bits(0x7fa00000);
2460-
let q_nan = f32::from_bits(0x7fc00000);
2461-
check_lt(s_nan, q_nan);
2462-
2463-
let neg_s_nan = f32::from_bits(0xffa00000);
2464-
let neg_q_nan = f32::from_bits(0xffc00000);
2465-
check_lt(neg_q_nan, neg_s_nan);
2451+
// x87 registers don't preserve the exact value of signaling NaN:
2452+
// https://github.com/rust-lang/rust/issues/115567
2453+
#[cfg(not(target_arch = "x86"))]
2454+
{
2455+
let s_nan = f64::from_bits(0x7ff4000000000000);
2456+
let q_nan = f64::from_bits(0x7ff8000000000000);
2457+
check_lt(s_nan, q_nan);
2458+
2459+
let neg_s_nan = f64::from_bits(0xfff4000000000000);
2460+
let neg_q_nan = f64::from_bits(0xfff8000000000000);
2461+
check_lt(neg_q_nan, neg_s_nan);
2462+
2463+
let s_nan = f32::from_bits(0x7fa00000);
2464+
let q_nan = f32::from_bits(0x7fc00000);
2465+
check_lt(s_nan, q_nan);
2466+
2467+
let neg_s_nan = f32::from_bits(0xffa00000);
2468+
let neg_q_nan = f32::from_bits(0xffc00000);
2469+
check_lt(neg_q_nan, neg_s_nan);
2470+
}
24662471

24672472
check_lt(-f64::NAN, f64::NEG_INFINITY);
24682473
check_gt(1.0_f64, -f64::NAN);

0 commit comments

Comments
 (0)