@@ -151,9 +151,7 @@ define i1 @fcmp_ogt_select(i1 %cond, float %a, float %b) {
151
151
152
152
define i1 @test_fcmp_select_const_const (double %x ) {
153
153
; CHECK-LABEL: @test_fcmp_select_const_const(
154
- ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord double [[X:%.*]], 0.000000e+00
155
- ; CHECK-NEXT: [[SEL:%.*]] = select i1 [[CMP2]], double 0xFFFFFFFFFFFFFFFF, double 0.000000e+00
156
- ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq double [[SEL]], 0.000000e+00
154
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno double [[X:%.*]], 0.000000e+00
157
155
; CHECK-NEXT: ret i1 [[CMP1]]
158
156
;
159
157
%cmp1 = fcmp ord double %x , 0 .000000e+00
@@ -164,10 +162,10 @@ define i1 @test_fcmp_select_const_const(double %x) {
164
162
165
163
define i1 @test_fcmp_select_var_const (double %x , double %y ) {
166
164
; CHECK-LABEL: @test_fcmp_select_var_const(
167
- ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[X:%.*]], 0x3E80000000000000
168
- ; CHECK-NEXT: [[Y :%.*]] = select i1 [[CMP1]], double [[Y1 :%.*]], double 0.000000e+00
169
- ; CHECK-NEXT: [[TMP1 :%.*]] = fcmp olt double [[Y ]], 0x3E80000000000000
170
- ; CHECK-NEXT: ret i1 [[TMP1 ]]
165
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[X:%.*]], 0x3E80000000000000
166
+ ; CHECK-NEXT: [[TMP1 :%.*]] = fcmp olt double [[Y :%.*]], 0x3E80000000000000
167
+ ; CHECK-NEXT: [[CMP2 :%.*]] = select i1 [[CMP1 ]], i1 true, i1 [[TMP1]]
168
+ ; CHECK-NEXT: ret i1 [[CMP2 ]]
171
169
;
172
170
%cmp1 = fcmp ogt double %x , 0x3E80000000000000
173
171
%sel = select i1 %cmp1 , double %y , double 0 .000000e+00
@@ -177,10 +175,10 @@ define i1 @test_fcmp_select_var_const(double %x, double %y) {
177
175
178
176
define i1 @test_fcmp_select_var_const_fmf (double %x , double %y ) {
179
177
; CHECK-LABEL: @test_fcmp_select_var_const_fmf(
180
- ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ogt double [[X:%.*]], 0x3E80000000000000
181
- ; CHECK-NEXT: [[SEL :%.*]] = select i1 [[CMP1]], double [[Y :%.*]], double 0.000000e+00
182
- ; CHECK-NEXT: [[CMP2 :%.*]] = fcmp nnan olt double [[SEL ]], 0x3E80000000000000
183
- ; CHECK-NEXT: ret i1 [[CMP2 ]]
178
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp ule double [[X:%.*]], 0x3E80000000000000
179
+ ; CHECK-NEXT: [[CMP2 :%.*]] = fcmp nnan olt double [[SEL :%.*]], 0x3E80000000000000
180
+ ; CHECK-NEXT: [[CMP3 :%.*]] = select i1 [[CMP1 ]], i1 true, i1 [[CMP2]]
181
+ ; CHECK-NEXT: ret i1 [[CMP3 ]]
184
182
;
185
183
%cmp1 = fcmp ogt double %x , 0x3E80000000000000
186
184
%sel = select i1 %cmp1 , double %y , double 0 .000000e+00
@@ -190,9 +188,7 @@ define i1 @test_fcmp_select_var_const_fmf(double %x, double %y) {
190
188
191
189
define <2 x i1 > @test_fcmp_select_const_const_vec (<2 x double > %x ) {
192
190
; CHECK-LABEL: @test_fcmp_select_const_const_vec(
193
- ; CHECK-NEXT: [[CMP2:%.*]] = fcmp ord <2 x double> [[X:%.*]], zeroinitializer
194
- ; CHECK-NEXT: [[SEL:%.*]] = select <2 x i1> [[CMP2]], <2 x double> <double 0xFFFFFFFFFFFFFFFF, double 0xFFFFFFFFFFFFFFFF>, <2 x double> zeroinitializer
195
- ; CHECK-NEXT: [[CMP1:%.*]] = fcmp oeq <2 x double> [[SEL]], zeroinitializer
191
+ ; CHECK-NEXT: [[CMP1:%.*]] = fcmp uno <2 x double> [[X:%.*]], zeroinitializer
196
192
; CHECK-NEXT: ret <2 x i1> [[CMP1]]
197
193
;
198
194
%cmp1 = fcmp ord <2 x double > %x , zeroinitializer
0 commit comments