@@ -2448,21 +2448,26 @@ mod tests {
2448
2448
check_lt ( -0.0_f64 , 0.0_f64 ) ;
2449
2449
check_lt ( -0.0_f32 , 0.0_f32 ) ;
2450
2450
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
+ }
2466
2471
2467
2472
check_lt ( -f64:: NAN , f64:: NEG_INFINITY ) ;
2468
2473
check_gt ( 1.0_f64 , -f64:: NAN ) ;
0 commit comments