@@ -596,12 +596,15 @@ fn test_total_cmp() {
596596 f16:: from_bits ( f16:: NAN . to_bits ( ) | quiet_bit_mask ( ) )
597597 }
598598
599- fn s_nan ( ) -> f16 {
600- f16:: from_bits ( ( f16:: NAN . to_bits ( ) & !quiet_bit_mask ( ) ) + 42 )
601- }
599+ // FIXME(f16_f128): Tests involving sNaN are disabled because without optimizations,
600+ // `total_cmp` is getting incorrectly lowered to code that includes a `extend`/`trunc` round
601+ // trip, which quiets sNaNs. See: https://github.com/llvm/llvm-project/issues/104915
602+ // fn s_nan() -> f16 {
603+ // f16::from_bits((f16::NAN.to_bits() & !quiet_bit_mask()) + 42)
604+ // }
602605
603606 assert_eq ! ( Ordering :: Equal , ( -q_nan( ) ) . total_cmp( & -q_nan( ) ) ) ;
604- assert_eq ! ( Ordering :: Equal , ( -s_nan( ) ) . total_cmp( & -s_nan( ) ) ) ;
607+ // assert_eq!(Ordering::Equal, (-s_nan()).total_cmp(&-s_nan()));
605608 assert_eq ! ( Ordering :: Equal , ( -f16:: INFINITY ) . total_cmp( & -f16:: INFINITY ) ) ;
606609 assert_eq ! ( Ordering :: Equal , ( -f16:: MAX ) . total_cmp( & -f16:: MAX ) ) ;
607610 assert_eq ! ( Ordering :: Equal , ( -2.5_f16 ) . total_cmp( & -2.5 ) ) ;
@@ -622,11 +625,11 @@ fn test_total_cmp() {
622625 assert_eq ! ( Ordering :: Equal , 2.5_f16 . total_cmp( & 2.5 ) ) ;
623626 assert_eq ! ( Ordering :: Equal , f16:: MAX . total_cmp( & f16:: MAX ) ) ;
624627 assert_eq ! ( Ordering :: Equal , f16:: INFINITY . total_cmp( & f16:: INFINITY ) ) ;
625- assert_eq ! ( Ordering :: Equal , s_nan( ) . total_cmp( & s_nan( ) ) ) ;
628+ // assert_eq!(Ordering::Equal, s_nan().total_cmp(&s_nan()));
626629 assert_eq ! ( Ordering :: Equal , q_nan( ) . total_cmp( & q_nan( ) ) ) ;
627630
628- assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -s_nan( ) ) ) ;
629- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -f16:: INFINITY ) ) ;
631+ // assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&-s_nan()));
632+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-f16::INFINITY));
630633 assert_eq ! ( Ordering :: Less , ( -f16:: INFINITY ) . total_cmp( & -f16:: MAX ) ) ;
631634 assert_eq ! ( Ordering :: Less , ( -f16:: MAX ) . total_cmp( & -2.5 ) ) ;
632635 assert_eq ! ( Ordering :: Less , ( -2.5_f16 ) . total_cmp( & -1.5 ) ) ;
@@ -646,11 +649,11 @@ fn test_total_cmp() {
646649 assert_eq ! ( Ordering :: Less , 1.5_f16 . total_cmp( & 2.5 ) ) ;
647650 assert_eq ! ( Ordering :: Less , 2.5_f16 . total_cmp( & f16:: MAX ) ) ;
648651 assert_eq ! ( Ordering :: Less , f16:: MAX . total_cmp( & f16:: INFINITY ) ) ;
649- assert_eq ! ( Ordering :: Less , f16:: INFINITY . total_cmp( & s_nan( ) ) ) ;
650- assert_eq ! ( Ordering :: Less , s_nan( ) . total_cmp( & q_nan( ) ) ) ;
652+ // assert_eq!(Ordering::Less, f16::INFINITY.total_cmp(&s_nan()));
653+ // assert_eq!(Ordering::Less, s_nan().total_cmp(&q_nan()));
651654
652- assert_eq ! ( Ordering :: Greater , ( -s_nan( ) ) . total_cmp( & -q_nan( ) ) ) ;
653- assert_eq ! ( Ordering :: Greater , ( -f16:: INFINITY ) . total_cmp( & -s_nan( ) ) ) ;
655+ // assert_eq!(Ordering::Greater, (-s_nan()).total_cmp(&-q_nan()));
656+ // assert_eq!(Ordering::Greater, (-f16::INFINITY).total_cmp(&-s_nan()));
654657 assert_eq ! ( Ordering :: Greater , ( -f16:: MAX ) . total_cmp( & -f16:: INFINITY ) ) ;
655658 assert_eq ! ( Ordering :: Greater , ( -2.5_f16 ) . total_cmp( & -f16:: MAX ) ) ;
656659 assert_eq ! ( Ordering :: Greater , ( -1.5_f16 ) . total_cmp( & -2.5 ) ) ;
@@ -670,10 +673,10 @@ fn test_total_cmp() {
670673 assert_eq ! ( Ordering :: Greater , 2.5_f16 . total_cmp( & 1.5 ) ) ;
671674 assert_eq ! ( Ordering :: Greater , f16:: MAX . total_cmp( & 2.5 ) ) ;
672675 assert_eq ! ( Ordering :: Greater , f16:: INFINITY . total_cmp( & f16:: MAX ) ) ;
673- assert_eq ! ( Ordering :: Greater , s_nan( ) . total_cmp( & f16:: INFINITY ) ) ;
674- assert_eq ! ( Ordering :: Greater , q_nan( ) . total_cmp( & s_nan( ) ) ) ;
676+ // assert_eq!(Ordering::Greater, s_nan().total_cmp(&f16::INFINITY));
677+ // assert_eq!(Ordering::Greater, q_nan().total_cmp(&s_nan()));
675678
676- assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -s_nan( ) ) ) ;
679+ // assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&-s_nan()));
677680 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -f16:: INFINITY ) ) ;
678681 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -f16:: MAX ) ) ;
679682 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -2.5 ) ) ;
@@ -694,29 +697,29 @@ fn test_total_cmp() {
694697 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & 2.5 ) ) ;
695698 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & f16:: MAX ) ) ;
696699 assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & f16:: INFINITY ) ) ;
697- assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & s_nan( ) ) ) ;
698-
699- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -f16:: INFINITY ) ) ;
700- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -f16:: MAX ) ) ;
701- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -2.5 ) ) ;
702- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -1.5 ) ) ;
703- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -1.0 ) ) ;
704- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -0.5 ) ) ;
705- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -f16:: MIN_POSITIVE ) ) ;
706- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -max_subnorm( ) ) ) ;
707- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -min_subnorm( ) ) ) ;
708- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & -0.0 ) ) ;
709- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & 0.0 ) ) ;
710- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & min_subnorm( ) ) ) ;
711- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & max_subnorm( ) ) ) ;
712- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & f16:: MIN_POSITIVE ) ) ;
713- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & 0.5 ) ) ;
714- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & 1.0 ) ) ;
715- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & 1.5 ) ) ;
716- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & 2.5 ) ) ;
717- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & f16:: MAX ) ) ;
718- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & f16:: INFINITY ) ) ;
719- assert_eq ! ( Ordering :: Less , ( -s_nan( ) ) . total_cmp( & s_nan( ) ) ) ;
700+ // assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&s_nan()));
701+
702+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-f16::INFINITY));
703+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-f16::MAX));
704+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-2.5));
705+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-1.5));
706+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-1.0));
707+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-0.5));
708+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-f16::MIN_POSITIVE));
709+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-max_subnorm()));
710+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-min_subnorm()));
711+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&-0.0));
712+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&0.0));
713+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&min_subnorm()));
714+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&max_subnorm()));
715+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&f16::MIN_POSITIVE));
716+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&0.5));
717+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&1.0));
718+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&1.5));
719+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&2.5));
720+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&f16::MAX));
721+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&f16::INFINITY));
722+ // assert_eq!(Ordering::Less, (-s_nan()).total_cmp(&s_nan()));
720723}
721724
722725#[ test]
0 commit comments