@@ -596,12 +596,15 @@ fn test_total_cmp() {
596
596
f16:: from_bits ( f16:: NAN . to_bits ( ) | quiet_bit_mask ( ) )
597
597
}
598
598
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
+ // }
602
605
603
606
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()));
605
608
assert_eq ! ( Ordering :: Equal , ( -f16:: INFINITY ) . total_cmp( & -f16:: INFINITY ) ) ;
606
609
assert_eq ! ( Ordering :: Equal , ( -f16:: MAX ) . total_cmp( & -f16:: MAX ) ) ;
607
610
assert_eq ! ( Ordering :: Equal , ( -2.5_f16 ) . total_cmp( & -2.5 ) ) ;
@@ -622,11 +625,11 @@ fn test_total_cmp() {
622
625
assert_eq ! ( Ordering :: Equal , 2.5_f16 . total_cmp( & 2.5 ) ) ;
623
626
assert_eq ! ( Ordering :: Equal , f16:: MAX . total_cmp( & f16:: MAX ) ) ;
624
627
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()));
626
629
assert_eq ! ( Ordering :: Equal , q_nan( ) . total_cmp( & q_nan( ) ) ) ;
627
630
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));
630
633
assert_eq ! ( Ordering :: Less , ( -f16:: INFINITY ) . total_cmp( & -f16:: MAX ) ) ;
631
634
assert_eq ! ( Ordering :: Less , ( -f16:: MAX ) . total_cmp( & -2.5 ) ) ;
632
635
assert_eq ! ( Ordering :: Less , ( -2.5_f16 ) . total_cmp( & -1.5 ) ) ;
@@ -646,11 +649,11 @@ fn test_total_cmp() {
646
649
assert_eq ! ( Ordering :: Less , 1.5_f16 . total_cmp( & 2.5 ) ) ;
647
650
assert_eq ! ( Ordering :: Less , 2.5_f16 . total_cmp( & f16:: MAX ) ) ;
648
651
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()));
651
654
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()));
654
657
assert_eq ! ( Ordering :: Greater , ( -f16:: MAX ) . total_cmp( & -f16:: INFINITY ) ) ;
655
658
assert_eq ! ( Ordering :: Greater , ( -2.5_f16 ) . total_cmp( & -f16:: MAX ) ) ;
656
659
assert_eq ! ( Ordering :: Greater , ( -1.5_f16 ) . total_cmp( & -2.5 ) ) ;
@@ -670,10 +673,10 @@ fn test_total_cmp() {
670
673
assert_eq ! ( Ordering :: Greater , 2.5_f16 . total_cmp( & 1.5 ) ) ;
671
674
assert_eq ! ( Ordering :: Greater , f16:: MAX . total_cmp( & 2.5 ) ) ;
672
675
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()));
675
678
676
- assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -s_nan( ) ) ) ;
679
+ // assert_eq!(Ordering::Less, (-q_nan()).total_cmp(&-s_nan()));
677
680
assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -f16:: INFINITY ) ) ;
678
681
assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -f16:: MAX ) ) ;
679
682
assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & -2.5 ) ) ;
@@ -694,29 +697,29 @@ fn test_total_cmp() {
694
697
assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & 2.5 ) ) ;
695
698
assert_eq ! ( Ordering :: Less , ( -q_nan( ) ) . total_cmp( & f16:: MAX ) ) ;
696
699
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()));
720
723
}
721
724
722
725
#[ test]
0 commit comments