Skip to content

Commit 857d8d7

Browse files
dtcxzywtstellar
authored andcommitted
[InstCombine] Fix FMF propagation in foldSelectWithFCmpToFabs (#121580)
Consider the following pattern: ``` %cmp = fcmp <pred> double %x, 0.000000e+00 %negX = fneg <fmf> double %x %sel = select i1 %cmp, double %x, double %negX ``` We cannot propagate ninf from fneg to select since `%negX` may not be chosen. Similarly, we cannot propagate nnan unless `%negX` is guaranteed to be selected when `%x` is NaN. This patch also propagates nnan/ninf from fcmp to avoid regression in `PhaseOrdering/generate-fabs.ll`. Alive2: https://alive2.llvm.org/ce/z/t6U-tA Closes #121430 and #113989. (cherry picked from commit 3ec6a6b)
1 parent 99f3ed7 commit 857d8d7

File tree

3 files changed

+38
-30
lines changed

3 files changed

+38
-30
lines changed

llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2852,10 +2852,10 @@ static Instruction *foldSelectWithFCmpToFabs(SelectInst &SI,
28522852
if (!match(TrueVal, m_FNeg(m_Specific(X))))
28532853
return nullptr;
28542854

2855-
// Forward-propagate nnan and ninf from the fneg to the select.
2855+
// Forward-propagate nnan and ninf from the fcmp to the select.
28562856
// If all inputs are not those values, then the select is not either.
28572857
// Note: nsz is defined differently, so it may not be correct to propagate.
2858-
FastMathFlags FMF = cast<FPMathOperator>(TrueVal)->getFastMathFlags();
2858+
FastMathFlags FMF = cast<FPMathOperator>(CondVal)->getFastMathFlags();
28592859
if (FMF.noNaNs() && !SI.hasNoNaNs()) {
28602860
SI.setHasNoNaNs(true);
28612861
ChangedFMF = true;
@@ -2864,6 +2864,13 @@ static Instruction *foldSelectWithFCmpToFabs(SelectInst &SI,
28642864
SI.setHasNoInfs(true);
28652865
ChangedFMF = true;
28662866
}
2867+
// Forward-propagate nnan from the fneg to the select.
2868+
// The nnan flag can be propagated iff fneg is selected when X is NaN.
2869+
if (!SI.hasNoNaNs() && cast<FPMathOperator>(TrueVal)->hasNoNaNs() &&
2870+
(Swap ? FCmpInst::isOrdered(Pred) : FCmpInst::isUnordered(Pred))) {
2871+
SI.setHasNoNaNs(true);
2872+
ChangedFMF = true;
2873+
}
28672874

28682875
// With nsz, when 'Swap' is false:
28692876
// fold (X < +/-0.0) ? -X : X or (X <= +/-0.0) ? -X : X to fabs(X)

llvm/test/Transforms/InstCombine/fabs.ll

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -484,7 +484,7 @@ define double @select_fcmp_nnan_nsz_olt_zero(double %x) {
484484
; CHECK-LABEL: @select_fcmp_nnan_nsz_olt_zero(
485485
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp olt double [[X:%.*]], 0.000000e+00
486486
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz double [[X]]
487-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LTZERO]], double [[NEGX]], double [[X]]
487+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LTZERO]], double [[NEGX]], double [[X]]
488488
; CHECK-NEXT: ret double [[FABS]]
489489
;
490490
%ltzero = fcmp olt double %x, 0.0
@@ -523,7 +523,7 @@ define double @select_fcmp_nnan_nsz_olt_zero_unary_fneg(double %x) {
523523
; CHECK-LABEL: @select_fcmp_nnan_nsz_olt_zero_unary_fneg(
524524
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp olt double [[X:%.*]], 0.000000e+00
525525
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz double [[X]]
526-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LTZERO]], double [[NEGX]], double [[X]]
526+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LTZERO]], double [[NEGX]], double [[X]]
527527
; CHECK-NEXT: ret double [[FABS]]
528528
;
529529
%ltzero = fcmp olt double %x, 0.0
@@ -553,7 +553,7 @@ define float @select_fcmp_nnan_nsz_olt_negzero(float %x) {
553553
; CHECK-LABEL: @select_fcmp_nnan_nsz_olt_negzero(
554554
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp olt float [[X:%.*]], 0.000000e+00
555555
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan ninf nsz float [[X]]
556-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LTZERO]], float [[NEGX]], float [[X]]
556+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LTZERO]], float [[NEGX]], float [[X]]
557557
; CHECK-NEXT: ret float [[FABS]]
558558
;
559559
%ltzero = fcmp olt float %x, -0.0
@@ -579,7 +579,7 @@ define float @select_fcmp_nnan_nsz_ult_negzero(float %x) {
579579
; CHECK-LABEL: @select_fcmp_nnan_nsz_ult_negzero(
580580
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp ult float [[X:%.*]], 0.000000e+00
581581
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan ninf nsz float [[X]]
582-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LTZERO]], float [[NEGX]], float [[X]]
582+
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LTZERO]], float [[NEGX]], float [[X]]
583583
; CHECK-NEXT: ret float [[FABS]]
584584
;
585585
%ltzero = fcmp ult float %x, -0.0
@@ -592,7 +592,7 @@ define float @select_fcmp_nnan_nsz_olt_negzero_unary_fneg(float %x) {
592592
; CHECK-LABEL: @select_fcmp_nnan_nsz_olt_negzero_unary_fneg(
593593
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp olt float [[X:%.*]], 0.000000e+00
594594
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan ninf nsz float [[X]]
595-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LTZERO]], float [[NEGX]], float [[X]]
595+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LTZERO]], float [[NEGX]], float [[X]]
596596
; CHECK-NEXT: ret float [[FABS]]
597597
;
598598
%ltzero = fcmp olt float %x, -0.0
@@ -607,7 +607,7 @@ define float @select_fcmp_nnan_nsz_ult_negzero_unary_fneg(float %x) {
607607
; CHECK-LABEL: @select_fcmp_nnan_nsz_ult_negzero_unary_fneg(
608608
; CHECK-NEXT: [[LTZERO:%.*]] = fcmp ult float [[X:%.*]], 0.000000e+00
609609
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan ninf nsz float [[X]]
610-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LTZERO]], float [[NEGX]], float [[X]]
610+
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LTZERO]], float [[NEGX]], float [[X]]
611611
; CHECK-NEXT: ret float [[FABS]]
612612
;
613613
%ltzero = fcmp ult float %x, -0.0
@@ -622,7 +622,7 @@ define double @select_fcmp_nnan_nsz_ole_zero(double %x) {
622622
; CHECK-LABEL: @select_fcmp_nnan_nsz_ole_zero(
623623
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ole double [[X:%.*]], 0.000000e+00
624624
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast double [[X]]
625-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LEZERO]], double [[NEGX]], double [[X]]
625+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LEZERO]], double [[NEGX]], double [[X]]
626626
; CHECK-NEXT: ret double [[FABS]]
627627
;
628628
%lezero = fcmp ole double %x, 0.0
@@ -648,7 +648,7 @@ define double @select_fcmp_nnan_nsz_ule_zero(double %x) {
648648
; CHECK-LABEL: @select_fcmp_nnan_nsz_ule_zero(
649649
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ule double [[X:%.*]], 0.000000e+00
650650
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast double [[X]]
651-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LEZERO]], double [[NEGX]], double [[X]]
651+
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LEZERO]], double [[NEGX]], double [[X]]
652652
; CHECK-NEXT: ret double [[FABS]]
653653
;
654654
%lezero = fcmp ule double %x, 0.0
@@ -661,7 +661,7 @@ define double @select_fcmp_nnan_nsz_ole_zero_unary_fneg(double %x) {
661661
; CHECK-LABEL: @select_fcmp_nnan_nsz_ole_zero_unary_fneg(
662662
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ole double [[X:%.*]], 0.000000e+00
663663
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast double [[X]]
664-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LEZERO]], double [[NEGX]], double [[X]]
664+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LEZERO]], double [[NEGX]], double [[X]]
665665
; CHECK-NEXT: ret double [[FABS]]
666666
;
667667
%lezero = fcmp ole double %x, 0.0
@@ -676,7 +676,7 @@ define double @select_fcmp_nnan_nsz_ule_zero_unary_fneg(double %x) {
676676
; CHECK-LABEL: @select_fcmp_nnan_nsz_ule_zero_unary_fneg(
677677
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ule double [[X:%.*]], 0.000000e+00
678678
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast double [[X]]
679-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[LEZERO]], double [[NEGX]], double [[X]]
679+
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LEZERO]], double [[NEGX]], double [[X]]
680680
; CHECK-NEXT: ret double [[FABS]]
681681
;
682682
%lezero = fcmp ule double %x, 0.0
@@ -691,7 +691,7 @@ define float @select_fcmp_nnan_nsz_ole_negzero(float %x) {
691691
; CHECK-LABEL: @select_fcmp_nnan_nsz_ole_negzero(
692692
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ole float [[X:%.*]], 0.000000e+00
693693
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz float [[X]]
694-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LEZERO]], float [[NEGX]], float [[X]]
694+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LEZERO]], float [[NEGX]], float [[X]]
695695
; CHECK-NEXT: ret float [[FABS]]
696696
;
697697
%lezero = fcmp ole float %x, -0.0
@@ -730,7 +730,7 @@ define float @select_fcmp_nnan_nsz_ole_negzero_unary_fneg(float %x) {
730730
; CHECK-LABEL: @select_fcmp_nnan_nsz_ole_negzero_unary_fneg(
731731
; CHECK-NEXT: [[LEZERO:%.*]] = fcmp ole float [[X:%.*]], 0.000000e+00
732732
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz float [[X]]
733-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[LEZERO]], float [[NEGX]], float [[X]]
733+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[LEZERO]], float [[NEGX]], float [[X]]
734734
; CHECK-NEXT: ret float [[FABS]]
735735
;
736736
%lezero = fcmp ole float %x, -0.0
@@ -802,7 +802,7 @@ define <2 x float> @select_fcmp_nnan_nsz_ugt_zero(<2 x float> %x) {
802802
; CHECK-LABEL: @select_fcmp_nnan_nsz_ugt_zero(
803803
; CHECK-NEXT: [[GTZERO:%.*]] = fcmp ugt <2 x float> [[X:%.*]], zeroinitializer
804804
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz arcp <2 x float> [[X]]
805-
; CHECK-NEXT: [[FABS:%.*]] = select nnan <2 x i1> [[GTZERO]], <2 x float> [[X]], <2 x float> [[NEGX]]
805+
; CHECK-NEXT: [[FABS:%.*]] = select <2 x i1> [[GTZERO]], <2 x float> [[X]], <2 x float> [[NEGX]]
806806
; CHECK-NEXT: ret <2 x float> [[FABS]]
807807
;
808808
%gtzero = fcmp ugt <2 x float> %x, zeroinitializer
@@ -830,7 +830,7 @@ define <2 x float> @select_fcmp_nnan_nsz_ugt_zero_unary_fneg(<2 x float> %x) {
830830
; CHECK-LABEL: @select_fcmp_nnan_nsz_ugt_zero_unary_fneg(
831831
; CHECK-NEXT: [[GTZERO:%.*]] = fcmp ugt <2 x float> [[X:%.*]], zeroinitializer
832832
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz arcp <2 x float> [[X]]
833-
; CHECK-NEXT: [[FABS:%.*]] = select nnan <2 x i1> [[GTZERO]], <2 x float> [[X]], <2 x float> [[NEGX]]
833+
; CHECK-NEXT: [[FABS:%.*]] = select <2 x i1> [[GTZERO]], <2 x float> [[X]], <2 x float> [[NEGX]]
834834
; CHECK-NEXT: ret <2 x float> [[FABS]]
835835
;
836836
%gtzero = fcmp ugt <2 x float> %x, zeroinitializer
@@ -845,7 +845,7 @@ define half @select_fcmp_nnan_nsz_ogt_negzero(half %x) {
845845
; CHECK-LABEL: @select_fcmp_nnan_nsz_ogt_negzero(
846846
; CHECK-NEXT: [[GTZERO:%.*]] = fcmp ogt half [[X:%.*]], 0xH0000
847847
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast half [[X]]
848-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[GTZERO]], half [[X]], half [[NEGX]]
848+
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[GTZERO]], half [[X]], half [[NEGX]]
849849
; CHECK-NEXT: ret half [[FABS]]
850850
;
851851
%gtzero = fcmp ogt half %x, -0.0
@@ -860,7 +860,7 @@ define half @select_fcmp_nnan_nsz_ugt_negzero(half %x) {
860860
; CHECK-LABEL: @select_fcmp_nnan_nsz_ugt_negzero(
861861
; CHECK-NEXT: [[GTZERO:%.*]] = fcmp ugt half [[X:%.*]], 0xH0000
862862
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast half [[X]]
863-
; CHECK-NEXT: [[FABS:%.*]] = select nnan ninf i1 [[GTZERO]], half [[X]], half [[NEGX]]
863+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[GTZERO]], half [[X]], half [[NEGX]]
864864
; CHECK-NEXT: ret half [[FABS]]
865865
;
866866
%gtzero = fcmp ugt half %x, -0.0
@@ -890,7 +890,7 @@ define <2 x double> @select_fcmp_nnan_nsz_uge_zero(<2 x double> %x) {
890890
; CHECK-LABEL: @select_fcmp_nnan_nsz_uge_zero(
891891
; CHECK-NEXT: [[GEZERO:%.*]] = fcmp uge <2 x double> [[X:%.*]], zeroinitializer
892892
; CHECK-NEXT: [[NEGX:%.*]] = fneg reassoc nnan nsz <2 x double> [[X]]
893-
; CHECK-NEXT: [[FABS:%.*]] = select nnan <2 x i1> [[GEZERO]], <2 x double> [[X]], <2 x double> [[NEGX]]
893+
; CHECK-NEXT: [[FABS:%.*]] = select <2 x i1> [[GEZERO]], <2 x double> [[X]], <2 x double> [[NEGX]]
894894
; CHECK-NEXT: ret <2 x double> [[FABS]]
895895
;
896896
%gezero = fcmp uge <2 x double> %x, zeroinitializer
@@ -918,7 +918,7 @@ define <2 x double> @select_fcmp_nnan_nsz_uge_zero_unary_fneg(<2 x double> %x) {
918918
; CHECK-LABEL: @select_fcmp_nnan_nsz_uge_zero_unary_fneg(
919919
; CHECK-NEXT: [[GEZERO:%.*]] = fcmp uge <2 x double> [[X:%.*]], zeroinitializer
920920
; CHECK-NEXT: [[NEGX:%.*]] = fneg reassoc nnan nsz <2 x double> [[X]]
921-
; CHECK-NEXT: [[FABS:%.*]] = select nnan <2 x i1> [[GEZERO]], <2 x double> [[X]], <2 x double> [[NEGX]]
921+
; CHECK-NEXT: [[FABS:%.*]] = select <2 x i1> [[GEZERO]], <2 x double> [[X]], <2 x double> [[NEGX]]
922922
; CHECK-NEXT: ret <2 x double> [[FABS]]
923923
;
924924
%gezero = fcmp uge <2 x double> %x, zeroinitializer
@@ -948,7 +948,7 @@ define half @select_fcmp_nnan_nsz_uge_negzero(half %x) {
948948
; CHECK-LABEL: @select_fcmp_nnan_nsz_uge_negzero(
949949
; CHECK-NEXT: [[GEZERO:%.*]] = fcmp uge half [[X:%.*]], 0xH0000
950950
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz half [[X]]
951-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[GEZERO]], half [[X]], half [[NEGX]]
951+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[GEZERO]], half [[X]], half [[NEGX]]
952952
; CHECK-NEXT: ret half [[FABS]]
953953
;
954954
%gezero = fcmp uge half %x, -0.0
@@ -976,7 +976,7 @@ define half @select_fcmp_nnan_nsz_uge_negzero_unary_fneg(half %x) {
976976
; CHECK-LABEL: @select_fcmp_nnan_nsz_uge_negzero_unary_fneg(
977977
; CHECK-NEXT: [[GEZERO:%.*]] = fcmp uge half [[X:%.*]], 0xH0000
978978
; CHECK-NEXT: [[NEGX:%.*]] = fneg nnan nsz half [[X]]
979-
; CHECK-NEXT: [[FABS:%.*]] = select nnan i1 [[GEZERO]], half [[X]], half [[NEGX]]
979+
; CHECK-NEXT: [[FABS:%.*]] = select i1 [[GEZERO]], half [[X]], half [[NEGX]]
980980
; CHECK-NEXT: ret half [[FABS]]
981981
;
982982
%gezero = fcmp uge half %x, -0.0

llvm/test/Transforms/InstCombine/fneg-fabs.ll

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ define double @select_noFMF_nfabs_lt(double %x) {
2020
; One test where the neg has fmfs.
2121
define double @select_nsz_nfabs_lt_fmfProp(double %x) {
2222
; CHECK-LABEL: @select_nsz_nfabs_lt_fmfProp(
23-
; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz double @llvm.fabs.f64(double [[X:%.*]])
24-
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan ninf nsz double [[TMP1]]
23+
; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
24+
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan nsz double [[TMP1]]
2525
; CHECK-NEXT: ret double [[SEL]]
2626
;
2727
%cmp = fcmp olt double %x, 0.000000e+00
@@ -32,8 +32,8 @@ define double @select_nsz_nfabs_lt_fmfProp(double %x) {
3232

3333
define double @select_nsz_nnan_nfabs_lt_fmfProp(double %x) {
3434
; CHECK-LABEL: @select_nsz_nnan_nfabs_lt_fmfProp(
35-
; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz double @llvm.fabs.f64(double [[X:%.*]])
36-
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan ninf nsz double [[TMP1]]
35+
; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
36+
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan nsz double [[TMP1]]
3737
; CHECK-NEXT: ret double [[SEL]]
3838
;
3939
%cmp = fcmp olt double %x, 0.000000e+00
@@ -147,8 +147,9 @@ define double @select_noFMF_nfabs_gt(double %x) {
147147
; One test where the neg has fmfs.
148148
define double @select_nsz_nfabs_gt_fmfProp(double %x) {
149149
; CHECK-LABEL: @select_nsz_nfabs_gt_fmfProp(
150-
; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz double @llvm.fabs.f64(double [[X:%.*]])
151-
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan ninf nsz double [[TMP1]]
150+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ogt double [[X:%.*]], 0.000000e+00
151+
; CHECK-NEXT: [[NEGX:%.*]] = fneg fast double [[X]]
152+
; CHECK-NEXT: [[SEL:%.*]] = select nsz i1 [[CMP]], double [[NEGX]], double [[X]]
152153
; CHECK-NEXT: ret double [[SEL]]
153154
;
154155
%cmp = fcmp ogt double %x, 0.000000e+00
@@ -159,8 +160,8 @@ define double @select_nsz_nfabs_gt_fmfProp(double %x) {
159160

160161
define double @select_nsz_nnan_nfabs_gt_fmfProp(double %x) {
161162
; CHECK-LABEL: @select_nsz_nnan_nfabs_gt_fmfProp(
162-
; CHECK-NEXT: [[TMP1:%.*]] = call nnan ninf nsz double @llvm.fabs.f64(double [[X:%.*]])
163-
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan ninf nsz double [[TMP1]]
163+
; CHECK-NEXT: [[TMP1:%.*]] = call nnan nsz double @llvm.fabs.f64(double [[X:%.*]])
164+
; CHECK-NEXT: [[SEL:%.*]] = fneg nnan nsz double [[TMP1]]
164165
; CHECK-NEXT: ret double [[SEL]]
165166
;
166167
%cmp = fcmp ogt double %x, 0.000000e+00

0 commit comments

Comments
 (0)