Skip to content

Commit 1281d90

Browse files
author
git apple-llvm automerger
committed
Merge commit 'bac4714b45fe' from apple/master into swift/master-next
2 parents 72820bc + bac4714 commit 1281d90

File tree

1 file changed

+50
-50
lines changed

1 file changed

+50
-50
lines changed

llvm/test/Transforms/InstCombine/unordered-fcmp-select.ll

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,139 +2,139 @@
22
; RUN: opt -S -instcombine < %s | FileCheck %s
33

44
define float @select_max_ugt(float %a, float %b) {
5-
; CHECK-LABEL: @select_max_ugt(
6-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp ole float [[A:%.*]], [[B:%.*]]
5+
; CHECK-LABEL: define {{[^@]+}}@select_max_ugt(
6+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp arcp ole float [[A:%.*]], [[B:%.*]]
77
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
88
; CHECK-NEXT: ret float [[SEL]]
99
;
10-
%cmp = fcmp ugt float %a, %b
11-
%sel = select i1 %cmp, float %a, float %b
10+
%cmp = fcmp arcp ugt float %a, %b
11+
%sel = select arcp i1 %cmp, float %a, float %b
1212
ret float %sel
1313
}
1414

1515
define float @select_max_uge(float %a, float %b) {
16-
; CHECK-LABEL: @select_max_uge(
17-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp olt float [[A:%.*]], [[B:%.*]]
16+
; CHECK-LABEL: define {{[^@]+}}@select_max_uge(
17+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp nnan olt float [[A:%.*]], [[B:%.*]]
1818
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
1919
; CHECK-NEXT: ret float [[SEL]]
2020
;
21-
%cmp = fcmp uge float %a, %b
22-
%sel = select i1 %cmp, float %a, float %b
21+
%cmp = fcmp nnan uge float %a, %b
22+
%sel = select ninf i1 %cmp, float %a, float %b
2323
ret float %sel
2424
}
2525

2626
define float @select_min_ugt(float %a, float %b) {
27-
; CHECK-LABEL: @select_min_ugt(
28-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp ole float [[A:%.*]], [[B:%.*]]
27+
; CHECK-LABEL: define {{[^@]+}}@select_min_ugt(
28+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp fast ole float [[A:%.*]], [[B:%.*]]
2929
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[A]], float [[B]]
3030
; CHECK-NEXT: ret float [[SEL]]
3131
;
32-
%cmp = fcmp ugt float %a, %b
33-
%sel = select i1 %cmp, float %b, float %a
32+
%cmp = fcmp fast ugt float %a, %b
33+
%sel = select reassoc i1 %cmp, float %b, float %a
3434
ret float %sel
3535
}
3636

3737
define float @select_min_uge(float %a, float %b) {
38-
; CHECK-LABEL: @select_min_uge(
39-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp olt float [[A:%.*]], [[B:%.*]]
38+
; CHECK-LABEL: define {{[^@]+}}@select_min_uge(
39+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp nsz olt float [[A:%.*]], [[B:%.*]]
4040
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[A]], float [[B]]
4141
; CHECK-NEXT: ret float [[SEL]]
4242
;
43-
%cmp = fcmp uge float %a, %b
44-
%sel = select i1 %cmp, float %b, float %a
43+
%cmp = fcmp nsz uge float %a, %b
44+
%sel = select fast i1 %cmp, float %b, float %a
4545
ret float %sel
4646
}
4747

4848
define float @select_max_ult(float %a, float %b) {
49-
; CHECK-LABEL: @select_max_ult(
50-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp oge float [[A:%.*]], [[B:%.*]]
49+
; CHECK-LABEL: define {{[^@]+}}@select_max_ult(
50+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp arcp oge float [[A:%.*]], [[B:%.*]]
5151
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[A]], float [[B]]
5252
; CHECK-NEXT: ret float [[SEL]]
5353
;
54-
%cmp = fcmp ult float %a, %b
55-
%sel = select i1 %cmp, float %b, float %a
54+
%cmp = fcmp arcp ult float %a, %b
55+
%sel = select ninf nnan i1 %cmp, float %b, float %a
5656
ret float %sel
5757
}
5858

5959
define float @select_max_ule(float %a, float %b) {
60-
; CHECK-LABEL: @select_max_ule(
61-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp ogt float [[A:%.*]], [[B:%.*]]
60+
; CHECK-LABEL: define {{[^@]+}}@select_max_ule(
61+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp fast ogt float [[A:%.*]], [[B:%.*]]
6262
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[A]], float [[B]]
6363
; CHECK-NEXT: ret float [[SEL]]
6464
;
65-
%cmp = fcmp ule float %a, %b
66-
%sel = select i1 %cmp, float %b, float %a
65+
%cmp = fcmp fast ule float %a, %b
66+
%sel = select nsz i1 %cmp, float %b, float %a
6767
ret float %sel
6868
}
6969

7070
define float @select_min_ult(float %a, float %b) {
71-
; CHECK-LABEL: @select_min_ult(
72-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp oge float [[A:%.*]], [[B:%.*]]
71+
; CHECK-LABEL: define {{[^@]+}}@select_min_ult(
72+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp nsz oge float [[A:%.*]], [[B:%.*]]
7373
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
7474
; CHECK-NEXT: ret float [[SEL]]
7575
;
76-
%cmp = fcmp ult float %a, %b
77-
%sel = select i1 %cmp, float %a, float %b
76+
%cmp = fcmp nsz ult float %a, %b
77+
%sel = select fast i1 %cmp, float %a, float %b
7878
ret float %sel
7979
}
8080

8181
define float @select_min_ule(float %a, float %b) {
82-
; CHECK-LABEL: @select_min_ule(
83-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp ogt float [[A:%.*]], [[B:%.*]]
82+
; CHECK-LABEL: define {{[^@]+}}@select_min_ule(
83+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp arcp ogt float [[A:%.*]], [[B:%.*]]
8484
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
8585
; CHECK-NEXT: ret float [[SEL]]
8686
;
87-
%cmp = fcmp ule float %a, %b
88-
%sel = select i1 %cmp, float %a, float %b
87+
%cmp = fcmp arcp ule float %a, %b
88+
%sel = select ninf i1 %cmp, float %a, float %b
8989
ret float %sel
9090
}
9191

9292
define float @select_fcmp_une(float %a, float %b) {
93-
; CHECK-LABEL: @select_fcmp_une(
94-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp oeq float [[A:%.*]], [[B:%.*]]
93+
; CHECK-LABEL: define {{[^@]+}}@select_fcmp_une(
94+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp reassoc oeq float [[A:%.*]], [[B:%.*]]
9595
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
9696
; CHECK-NEXT: ret float [[SEL]]
9797
;
98-
%cmp = fcmp une float %a, %b
99-
%sel = select i1 %cmp, float %a, float %b
98+
%cmp = fcmp reassoc une float %a, %b
99+
%sel = select nnan i1 %cmp, float %a, float %b
100100
ret float %sel
101101
}
102102

103103
define float @select_fcmp_ueq(float %a, float %b) {
104-
; CHECK-LABEL: @select_fcmp_ueq(
105-
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp one float [[A:%.*]], [[B:%.*]]
104+
; CHECK-LABEL: define {{[^@]+}}@select_fcmp_ueq(
105+
; CHECK-NEXT: [[CMP_INV:%.*]] = fcmp reassoc one float [[A:%.*]], [[B:%.*]]
106106
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP_INV]], float [[B]], float [[A]]
107107
; CHECK-NEXT: ret float [[SEL]]
108108
;
109-
%cmp = fcmp ueq float %a, %b
110-
%sel = select i1 %cmp, float %a, float %b
109+
%cmp = fcmp reassoc ueq float %a, %b
110+
%sel = select arcp nnan i1 %cmp, float %a, float %b
111111
ret float %sel
112112
}
113113

114114
declare void @foo(i1)
115115

116116
define float @select_max_ugt_2_use_cmp(float %a, float %b) {
117-
; CHECK-LABEL: @select_max_ugt_2_use_cmp(
118-
; CHECK-NEXT: [[CMP:%.*]] = fcmp ugt float [[A:%.*]], [[B:%.*]]
117+
; CHECK-LABEL: define {{[^@]+}}@select_max_ugt_2_use_cmp(
118+
; CHECK-NEXT: [[CMP:%.*]] = fcmp reassoc ugt float [[A:%.*]], [[B:%.*]]
119119
; CHECK-NEXT: call void @foo(i1 [[CMP]])
120-
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], float [[A]], float [[B]]
120+
; CHECK-NEXT: [[SEL:%.*]] = select fast i1 [[CMP]], float [[A]], float [[B]]
121121
; CHECK-NEXT: ret float [[SEL]]
122122
;
123-
%cmp = fcmp ugt float %a, %b
123+
%cmp = fcmp reassoc ugt float %a, %b
124124
call void @foo(i1 %cmp)
125-
%sel = select i1 %cmp, float %a, float %b
125+
%sel = select fast i1 %cmp, float %a, float %b
126126
ret float %sel
127127
}
128128

129129
define float @select_min_uge_2_use_cmp(float %a, float %b) {
130-
; CHECK-LABEL: @select_min_uge_2_use_cmp(
131-
; CHECK-NEXT: [[CMP:%.*]] = fcmp uge float [[A:%.*]], [[B:%.*]]
130+
; CHECK-LABEL: define {{[^@]+}}@select_min_uge_2_use_cmp(
131+
; CHECK-NEXT: [[CMP:%.*]] = fcmp ninf uge float [[A:%.*]], [[B:%.*]]
132132
; CHECK-NEXT: call void @foo(i1 [[CMP]])
133-
; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP]], float [[B]], float [[A]]
133+
; CHECK-NEXT: [[SEL:%.*]] = select nsz i1 [[CMP]], float [[B]], float [[A]]
134134
; CHECK-NEXT: ret float [[SEL]]
135135
;
136-
%cmp = fcmp uge float %a, %b
136+
%cmp = fcmp ninf uge float %a, %b
137137
call void @foo(i1 %cmp)
138-
%sel = select i1 %cmp, float %b, float %a
138+
%sel = select nsz i1 %cmp, float %b, float %a
139139
ret float %sel
140140
}

0 commit comments

Comments
 (0)