| //FIXME(llvm21) This should be a library test, but old LLVM miscompiles things so we can't just |
| // test this properly everywhere. Once we require LLVM 22, remove this test and enable the |
| // commented-out tests in `library/coretests/tests/floats/mod.rs` instead. |
| //@ min-llvm-version: 22 |
| //@ run-pass |
| |
| use std::hint::black_box; |
| |
| const SNAN32: f32 = f32::from_bits(f32::NAN.to_bits() - 1); |
| const SNAN64: f64 = f64::from_bits(f64::NAN.to_bits() - 1); |
| |
| fn main() { |
| assert_eq!(SNAN32.min(black_box(9.0)), 9.0f32); |
| assert_eq!(black_box(SNAN32).min(-9.0), -9.0f32); |
| assert_eq!((9.0f32).min(black_box(SNAN32)), 9.0f32); |
| assert_eq!(black_box(-9.0f32).min(SNAN32), -9.0f32); |
| |
| assert_eq!(SNAN64.min(black_box(9.0)), 9.0f64); |
| assert_eq!(black_box(SNAN64).min(-9.0), -9.0f64); |
| assert_eq!((9.0f64).min(black_box(SNAN64)), 9.0f64); |
| assert_eq!(black_box(-9.0f64).min(SNAN64), -9.0f64); |
| } |