Skip to content

Commit 3b28b6f

Browse files
committed
[InstCombine] Address review comments.
1 parent b1fbcdf commit 3b28b6f

File tree

5 files changed

+126
-32
lines changed

5 files changed

+126
-32
lines changed

llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -545,9 +545,15 @@ Instruction *InstCombinerImpl::foldSelectIntoOp(SelectInst &SI, Value *TrueVal,
545545
Value *NewSel = Builder.CreateSelect(SI.getCondition(), Swapped ? C : OOp,
546546
Swapped ? OOp : C, "", &SI);
547547
if (isa<FPMathOperator>(&SI)) {
548-
cast<Instruction>(NewSel)->setFastMathFlags(FMF);
549-
if (!TVI->hasNoInfs() && !FMF.noNaNs())
550-
cast<Instruction>(NewSel)->setHasNoInfs(false);
548+
FastMathFlags NewSelFMF = FMF;
549+
// We cannot propagate ninf from the original select, because OOp may be
550+
// inf and the flag only guarantees that FalseVal (op OOp) is never
551+
// infinity. Examples: -inf + +inf = NaN, -inf - -inf = NaN, 0 * inf = NaN
552+
// Specially, if the original select has both ninf and nnan, we can safely
553+
// propagate the flag.
554+
NewSelFMF.setNoInfs(TVI->hasNoInfs() ||
555+
(NewSelFMF.noInfs() && NewSelFMF.noNaNs()));
556+
cast<Instruction>(NewSel)->setFastMathFlags(NewSelFMF);
551557
}
552558
NewSel->takeName(TVI);
553559
BinaryOperator *BO =

llvm/test/Transforms/InstCombine/fold-select-fmul-if-zero.ll

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -481,7 +481,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_nsz_fmul(float %x, float %y) {
481481
define float @fmul_by_var_if_0_oeq_zero_f32_nsz_ninf_fmul(float %x, float %y) {
482482
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_nsz_ninf_fmul(
483483
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
484-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
484+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
485485
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul float [[X]], [[SCALED_X]]
486486
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
487487
;
@@ -509,7 +509,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_nsz_nnan_fmul(float %x, float %y) {
509509
define float @fmul_by_var_if_0_oeq_zero_f32_nnan_ninf_fmul(float %x, float %y) {
510510
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_nnan_ninf_fmul(
511511
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
512-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
512+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
513513
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
514514
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
515515
;
@@ -558,7 +558,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_nsz_inverted(f
558558
define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz(float %x, float %y) {
559559
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz(
560560
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
561-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
561+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
562562
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
563563
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
564564
;
@@ -571,7 +571,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz(float %x, float %
571571
define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz_commuted(float %x, float %y) {
572572
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz_commuted(
573573
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
574-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
574+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
575575
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
576576
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
577577
;
@@ -585,7 +585,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz_commuted(float %x
585585
define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_known_never_negzero(float %x, float nofpclass(nzero) %y) {
586586
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_known_never_negzero(
587587
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
588-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
588+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
589589
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
590590
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
591591
;
@@ -598,7 +598,7 @@ define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_known_never_ne
598598
define float @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_known_never_negzero_negsub(float %x, float nofpclass(nzero nsub) %y) {
599599
; CHECK-LABEL: @fmul_by_var_if_0_oeq_zero_f32_fmul_nnan_ninf_select_known_never_negzero_negsub(
600600
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
601-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
601+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[Y:%.*]], float 1.000000e+00
602602
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
603603
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
604604
;
@@ -705,7 +705,7 @@ define float @fmul_by_self_if_0_oeq_zero_f32(float %x) {
705705
define float @fmul_by_self_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz(float %x) {
706706
; CHECK-LABEL: @fmul_by_self_if_0_oeq_zero_f32_fmul_nnan_ninf_nsz(
707707
; CHECK-NEXT: [[X_IS_ZERO:%.*]] = fcmp oeq float [[X:%.*]], 0.000000e+00
708-
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan i1 [[X_IS_ZERO]], float [[X]], float 1.000000e+00
708+
; CHECK-NEXT: [[SCALED_X:%.*]] = select nnan ninf i1 [[X_IS_ZERO]], float [[X]], float 1.000000e+00
709709
; CHECK-NEXT: [[SCALED_IF_DENORMAL:%.*]] = fmul nnan float [[X]], [[SCALED_X]]
710710
; CHECK-NEXT: ret float [[SCALED_IF_DENORMAL]]
711711
;

llvm/test/Transforms/InstCombine/select-binop-foldable-floating-point.ll

Lines changed: 97 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ define float @select_fpclass_fadd(i1 %cond, float nofpclass(nan) %A, float %B) {
2525

2626
define float @select_fpclass_fadd_ninf1(i1 %cond, float nofpclass(nan) %A, float %B) {
2727
; CHECK-LABEL: @select_fpclass_fadd_ninf1(
28-
; CHECK-NEXT: [[C:%.*]] = select i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
28+
; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
2929
; CHECK-NEXT: [[D:%.*]] = fadd float [[A:%.*]], [[C]]
3030
; CHECK-NEXT: ret float [[D]]
3131
;
@@ -91,7 +91,7 @@ define float @select_nnan_fadd_swapped(i1 %cond, float %A, float %B) {
9191

9292
define float @select_nnan_fadd_fast_math(i1 %cond, float %A, float %B) {
9393
; CHECK-LABEL: @select_nnan_fadd_fast_math(
94-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
94+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float -0.000000e+00
9595
; CHECK-NEXT: [[D:%.*]] = fadd reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
9696
; CHECK-NEXT: ret float [[D]]
9797
;
@@ -102,7 +102,7 @@ define float @select_nnan_fadd_fast_math(i1 %cond, float %A, float %B) {
102102

103103
define float @select_nnan_fadd_swapped_fast_math(i1 %cond, float %A, float %B) {
104104
; CHECK-LABEL: @select_nnan_fadd_swapped_fast_math(
105-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float -0.000000e+00, float [[B:%.*]]
105+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float -0.000000e+00, float [[B:%.*]]
106106
; CHECK-NEXT: [[D:%.*]] = fadd reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
107107
; CHECK-NEXT: ret float [[D]]
108108
;
@@ -168,7 +168,7 @@ define float @select_nnan_fmul_swapped(i1 %cond, float %A, float %B) {
168168

169169
define float @select_nnan_fmul_fast_math(i1 %cond, float %A, float %B) {
170170
; CHECK-LABEL: @select_nnan_fmul_fast_math(
171-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
171+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
172172
; CHECK-NEXT: [[D:%.*]] = fmul reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
173173
; CHECK-NEXT: ret float [[D]]
174174
;
@@ -179,7 +179,7 @@ define float @select_nnan_fmul_fast_math(i1 %cond, float %A, float %B) {
179179

180180
define float @select_nnan_fmul_swapped_fast_math(i1 %cond, float %A, float %B) {
181181
; CHECK-LABEL: @select_nnan_fmul_swapped_fast_math(
182-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float 1.000000e+00, float [[B:%.*]]
182+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float 1.000000e+00, float [[B:%.*]]
183183
; CHECK-NEXT: [[D:%.*]] = fmul reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
184184
; CHECK-NEXT: ret float [[D]]
185185
;
@@ -188,6 +188,50 @@ define float @select_nnan_fmul_swapped_fast_math(i1 %cond, float %A, float %B) {
188188
ret float %D
189189
}
190190

191+
define float @select_fpclass_fmul_ninf1(i1 %cond, float nofpclass(nan) %A, float %B) {
192+
; CHECK-LABEL: @select_fpclass_fmul_ninf1(
193+
; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
194+
; CHECK-NEXT: [[D:%.*]] = fmul float [[A:%.*]], [[C]]
195+
; CHECK-NEXT: ret float [[D]]
196+
;
197+
%C = fmul ninf float %A, %B
198+
%D = select i1 %cond, float %C, float %A
199+
ret float %D
200+
}
201+
202+
define float @select_fpclass_fmul_ninf2(i1 %cond, float nofpclass(nan) %A, float %B) {
203+
; CHECK-LABEL: @select_fpclass_fmul_ninf2(
204+
; CHECK-NEXT: [[C:%.*]] = select i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
205+
; CHECK-NEXT: [[D:%.*]] = fmul float [[A:%.*]], [[C]]
206+
; CHECK-NEXT: ret float [[D]]
207+
;
208+
%C = fmul float %A, %B
209+
%D = select ninf i1 %cond, float %C, float %A
210+
ret float %D
211+
}
212+
213+
define float @select_fpclass_fmul_ninf3(i1 %cond, float nofpclass(nan) %A, float %B) {
214+
; CHECK-LABEL: @select_fpclass_fmul_ninf3(
215+
; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
216+
; CHECK-NEXT: [[D:%.*]] = fmul ninf float [[A:%.*]], [[C]]
217+
; CHECK-NEXT: ret float [[D]]
218+
;
219+
%C = fmul ninf float %A, %B
220+
%D = select ninf i1 %cond, float %C, float %A
221+
ret float %D
222+
}
223+
224+
define float @select_fpclass_fmul_nnan_ninf(i1 %cond, float nofpclass(nan) %A, float %B) {
225+
; CHECK-LABEL: @select_fpclass_fmul_nnan_ninf(
226+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
227+
; CHECK-NEXT: [[D:%.*]] = fmul float [[A:%.*]], [[C]]
228+
; CHECK-NEXT: ret float [[D]]
229+
;
230+
%C = fmul float %A, %B
231+
%D = select nnan ninf i1 %cond, float %C, float %A
232+
ret float %D
233+
}
234+
191235
define float @select_nnan_fsub(i1 %cond, float %A, float %B) {
192236
; CHECK-LABEL: @select_nnan_fsub(
193237
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
@@ -212,7 +256,7 @@ define float @select_nnan_fsub_swapped(i1 %cond, float %A, float %B) {
212256

213257
define float @select_nnan_fsub_fast_math(i1 %cond, float %A, float %B) {
214258
; CHECK-LABEL: @select_nnan_fsub_fast_math(
215-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
259+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
216260
; CHECK-NEXT: [[D:%.*]] = fsub reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
217261
; CHECK-NEXT: ret float [[D]]
218262
;
@@ -223,7 +267,7 @@ define float @select_nnan_fsub_fast_math(i1 %cond, float %A, float %B) {
223267

224268
define float @select_nnan_fsub_swapped_fast_math(i1 %cond, float %A, float %B) {
225269
; CHECK-LABEL: @select_nnan_fsub_swapped_fast_math(
226-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float 0.000000e+00, float [[B:%.*]]
270+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float 0.000000e+00, float [[B:%.*]]
227271
; CHECK-NEXT: [[D:%.*]] = fsub reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
228272
; CHECK-NEXT: ret float [[D]]
229273
;
@@ -232,6 +276,50 @@ define float @select_nnan_fsub_swapped_fast_math(i1 %cond, float %A, float %B) {
232276
ret float %D
233277
}
234278

279+
define float @select_fpclass_fsub_ninf1(i1 %cond, float nofpclass(nan) %A, float %B) {
280+
; CHECK-LABEL: @select_fpclass_fsub_ninf1(
281+
; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
282+
; CHECK-NEXT: [[D:%.*]] = fsub float [[A:%.*]], [[C]]
283+
; CHECK-NEXT: ret float [[D]]
284+
;
285+
%C = fsub ninf float %A, %B
286+
%D = select i1 %cond, float %C, float %A
287+
ret float %D
288+
}
289+
290+
define float @select_fpclass_fsub_ninf2(i1 %cond, float nofpclass(nan) %A, float %B) {
291+
; CHECK-LABEL: @select_fpclass_fsub_ninf2(
292+
; CHECK-NEXT: [[C:%.*]] = select i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
293+
; CHECK-NEXT: [[D:%.*]] = fsub float [[A:%.*]], [[C]]
294+
; CHECK-NEXT: ret float [[D]]
295+
;
296+
%C = fsub float %A, %B
297+
%D = select ninf i1 %cond, float %C, float %A
298+
ret float %D
299+
}
300+
301+
define float @select_fpclass_fsub_ninf3(i1 %cond, float nofpclass(nan) %A, float %B) {
302+
; CHECK-LABEL: @select_fpclass_fsub_ninf3(
303+
; CHECK-NEXT: [[C:%.*]] = select ninf i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
304+
; CHECK-NEXT: [[D:%.*]] = fsub ninf float [[A:%.*]], [[C]]
305+
; CHECK-NEXT: ret float [[D]]
306+
;
307+
%C = fsub ninf float %A, %B
308+
%D = select ninf i1 %cond, float %C, float %A
309+
ret float %D
310+
}
311+
312+
define float @select_fpclass_fsub_nnan_ninf(i1 %cond, float nofpclass(nan) %A, float %B) {
313+
; CHECK-LABEL: @select_fpclass_fsub_nnan_ninf(
314+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float 0.000000e+00
315+
; CHECK-NEXT: [[D:%.*]] = fsub float [[A:%.*]], [[C]]
316+
; CHECK-NEXT: ret float [[D]]
317+
;
318+
%C = fsub float %A, %B
319+
%D = select nnan ninf i1 %cond, float %C, float %A
320+
ret float %D
321+
}
322+
235323
define <4 x float> @select_nnan_nsz_fsub_v4f32(<4 x i1> %cond, <4 x float> %A, <4 x float> %B) {
236324
; CHECK-LABEL: @select_nnan_nsz_fsub_v4f32(
237325
; CHECK-NEXT: [[C:%.*]] = select nnan nsz <4 x i1> [[COND:%.*]], <4 x float> [[B:%.*]], <4 x float> zeroinitializer
@@ -290,7 +378,7 @@ define float @select_nnan_fdiv_swapped(i1 %cond, float %A, float %B) {
290378

291379
define float @select_nnan_fdiv_fast_math(i1 %cond, float %A, float %B) {
292380
; CHECK-LABEL: @select_nnan_fdiv_fast_math(
293-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
381+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float [[B:%.*]], float 1.000000e+00
294382
; CHECK-NEXT: [[D:%.*]] = fdiv reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
295383
; CHECK-NEXT: ret float [[D]]
296384
;
@@ -301,7 +389,7 @@ define float @select_nnan_fdiv_fast_math(i1 %cond, float %A, float %B) {
301389

302390
define float @select_nnan_fdiv_swapped_fast_math(i1 %cond, float %A, float %B) {
303391
; CHECK-LABEL: @select_nnan_fdiv_swapped_fast_math(
304-
; CHECK-NEXT: [[C:%.*]] = select nnan i1 [[COND:%.*]], float 1.000000e+00, float [[B:%.*]]
392+
; CHECK-NEXT: [[C:%.*]] = select nnan ninf i1 [[COND:%.*]], float 1.000000e+00, float [[B:%.*]]
305393
; CHECK-NEXT: [[D:%.*]] = fdiv reassoc nnan arcp contract afn float [[A:%.*]], [[C]]
306394
; CHECK-NEXT: ret float [[D]]
307395
;

llvm/test/Transforms/LoopVectorize/ARM/mve-selectandorcost.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ define float @test(ptr nocapture readonly %pA, ptr nocapture readonly %pB, i32 %
4545
; CHECK-NEXT: [[TMP7:%.*]] = fsub fast <4 x float> [[WIDE_LOAD]], [[WIDE_LOAD7]]
4646
; CHECK-NEXT: [[TMP8:%.*]] = call fast <4 x float> @llvm.fabs.v4f32(<4 x float> [[TMP7]])
4747
; CHECK-NEXT: [[TMP9:%.*]] = fdiv fast <4 x float> [[TMP8]], [[TMP6]]
48-
; CHECK-NEXT: [[TMP10:%.*]] = select <4 x i1> [[TMP20]], <4 x float> [[TMP9]], <4 x float> splat (float -0.000000e+00)
48+
; CHECK-NEXT: [[TMP10:%.*]] = select ninf <4 x i1> [[TMP20]], <4 x float> [[TMP9]], <4 x float> splat (float -0.000000e+00)
4949
; CHECK-NEXT: [[PREDPHI]] = fadd reassoc arcp contract afn <4 x float> [[VEC_PHI]], [[TMP10]]
5050
; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i32 [[INDEX]], 4
5151
; CHECK-NEXT: [[TMP11:%.*]] = icmp eq i32 [[INDEX_NEXT]], [[N_VEC]]

0 commit comments

Comments
 (0)