@@ -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