Skip to content

Commit 0645db8

Browse files
committed
!fixup drop poison generating flags after reassoc.
1 parent 82511af commit 0645db8

File tree

6 files changed

+109
-139
lines changed

6 files changed

+109
-139
lines changed

llvm/lib/Transforms/Utils/LoopUnroll.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -743,7 +743,7 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
743743
// latch. This is a reasonable default placement if we don't have block
744744
// frequencies, and if we do, well the layout will be adjusted later.
745745
auto BlockInsertPt = std::next(LatchBlock->getIterator());
746-
SmallVector<Value *> PartialReductions;
746+
SmallVector<Instruction *> PartialReductions;
747747
for (unsigned It = 1; It != ULO.Count; ++It) {
748748
SmallVector<BasicBlock *, 8> NewBlocks;
749749
SmallDenseMap<const Loop *, Loop *, 4> NewLoops;
@@ -773,8 +773,8 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
773773
if (Reductions.contains(OrigPHI)) {
774774
// Collect partial reduction results.
775775
if (PartialReductions.empty())
776-
PartialReductions.push_back(InVal);
777-
PartialReductions.push_back(VMap[InVal]);
776+
PartialReductions.push_back(cast<Instruction>(InVal));
777+
PartialReductions.push_back(cast<Instruction>(VMap[InVal]));
778778

779779
// Update the start value for the cloned phis to use the identity
780780
// value for the reduction.
@@ -1090,13 +1090,16 @@ llvm::UnrollLoop(Loop *L, UnrollLoopOptions ULO, LoopInfo *LI,
10901090
RdxResult = PartialReductions.front();
10911091
IRBuilder Builder(ExitBlock, ExitBlock->getFirstNonPHIIt());
10921092
RecurKind RK = Reductions.begin()->second.getRecurrenceKind();
1093-
for (Value *RdxPart : drop_begin(PartialReductions)) {
1093+
for (Instruction *RdxPart : drop_begin(PartialReductions)) {
10941094
RdxResult = Builder.CreateBinOp(
10951095
(Instruction::BinaryOps)RecurrenceDescriptor::getOpcode(RK),
10961096
RdxPart, RdxResult, "bin.rdx");
10971097
}
10981098
NeedToFixLCSSA = true;
1099+
for (Instruction *RdxPart : PartialReductions)
1100+
RdxPart->dropPoisonGeneratingFlags();
10991101
}
1102+
11001103
Phi.replaceAllUsesWith(RdxResult);
11011104
continue;
11021105
}

llvm/test/Transforms/LoopUnroll/AArch64/apple-unrolling.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -609,19 +609,19 @@ define i32 @test_add_reduction_unroll_partial(ptr %a, i64 noundef %n) {
609609
; OTHER-NEXT: [[RDX:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_NEXT:%.*]], %[[LOOP]] ]
610610
; OTHER-NEXT: [[GEP_A:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV]]
611611
; OTHER-NEXT: [[TMP0:%.*]] = load i32, ptr [[GEP_A]], align 2
612-
; OTHER-NEXT: [[RDX_NEXT]] = add nuw nsw i32 [[RDX]], [[TMP0]]
612+
; OTHER-NEXT: [[RDX_NEXT]] = add i32 [[RDX]], [[TMP0]]
613613
; OTHER-NEXT: [[IV_NEXT:%.*]] = add nuw nsw i64 [[IV]], 1
614614
; OTHER-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT]]
615615
; OTHER-NEXT: [[TMP1:%.*]] = load i32, ptr [[GEP_A_1]], align 2
616-
; OTHER-NEXT: [[RDX_NEXT_1]] = add nuw nsw i32 [[RDX_1]], [[TMP1]]
616+
; OTHER-NEXT: [[RDX_NEXT_1]] = add i32 [[RDX_1]], [[TMP1]]
617617
; OTHER-NEXT: [[IV_NEXT_1:%.*]] = add nuw nsw i64 [[IV]], 2
618618
; OTHER-NEXT: [[GEP_A_2:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT_1]]
619619
; OTHER-NEXT: [[TMP2:%.*]] = load i32, ptr [[GEP_A_2]], align 2
620-
; OTHER-NEXT: [[RDX_NEXT_2]] = add nuw nsw i32 [[RDX_2]], [[TMP2]]
620+
; OTHER-NEXT: [[RDX_NEXT_2]] = add i32 [[RDX_2]], [[TMP2]]
621621
; OTHER-NEXT: [[IV_NEXT_2:%.*]] = add nuw nsw i64 [[IV]], 3
622622
; OTHER-NEXT: [[GEP_A_3:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT_2]]
623623
; OTHER-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP_A_3]], align 2
624-
; OTHER-NEXT: [[RDX_NEXT_3]] = add nuw nsw i32 [[RDX_3]], [[TMP3]]
624+
; OTHER-NEXT: [[RDX_NEXT_3]] = add i32 [[RDX_3]], [[TMP3]]
625625
; OTHER-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
626626
; OTHER-NEXT: [[EC_3:%.*]] = icmp eq i64 [[IV_NEXT_3]], 1024
627627
; OTHER-NEXT: br i1 [[EC_3]], label %[[EXIT:.*]], label %[[LOOP]]
@@ -758,12 +758,12 @@ define i32 @test_add_and_mul_reduction_unroll_partial(ptr %a, i64 noundef %n) {
758758
; OTHER-NEXT: [[RDX_2:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_2_NEXT_1:%.*]], %[[LOOP]] ]
759759
; OTHER-NEXT: [[GEP_A:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV]]
760760
; OTHER-NEXT: [[TMP0:%.*]] = load i32, ptr [[GEP_A]], align 2
761-
; OTHER-NEXT: [[RDX_NEXT]] = add nuw nsw i32 [[RDX]], [[TMP0]]
761+
; OTHER-NEXT: [[RDX_NEXT]] = add i32 [[RDX]], [[TMP0]]
762762
; OTHER-NEXT: [[RDX_2_NEXT:%.*]] = mul i32 [[RDX_2]], [[TMP0]]
763763
; OTHER-NEXT: [[IV_NEXT:%.*]] = add nuw nsw i64 [[IV]], 1
764764
; OTHER-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT]]
765765
; OTHER-NEXT: [[TMP1:%.*]] = load i32, ptr [[GEP_A_1]], align 2
766-
; OTHER-NEXT: [[RDX_NEXT_1]] = add nuw nsw i32 [[RDX_1]], [[TMP1]]
766+
; OTHER-NEXT: [[RDX_NEXT_1]] = add i32 [[RDX_1]], [[TMP1]]
767767
; OTHER-NEXT: [[RDX_2_NEXT_1]] = mul i32 [[RDX_2_NEXT]], [[TMP1]]
768768
; OTHER-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
769769
; OTHER-NEXT: [[EC_1:%.*]] = icmp eq i64 [[IV_NEXT_1]], 1024
@@ -835,19 +835,19 @@ define i32 @test_add_reduction_runtime(ptr %a, i64 noundef %n) {
835835
; OTHER-NEXT: [[NITER:%.*]] = phi i64 [ 0, %[[ENTRY_NEW]] ], [ [[NITER_NEXT_3:%.*]], %[[LOOP]] ]
836836
; OTHER-NEXT: [[GEP_A:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV]]
837837
; OTHER-NEXT: [[TMP2:%.*]] = load i32, ptr [[GEP_A]], align 2
838-
; OTHER-NEXT: [[RDX_NEXT]] = add nuw nsw i32 [[RDX]], [[TMP2]]
838+
; OTHER-NEXT: [[RDX_NEXT]] = add i32 [[RDX]], [[TMP2]]
839839
; OTHER-NEXT: [[IV_NEXT:%.*]] = add nuw nsw i64 [[IV]], 1
840840
; OTHER-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT]]
841841
; OTHER-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP_A_1]], align 2
842-
; OTHER-NEXT: [[RDX_NEXT_1]] = add nuw nsw i32 [[RDX_1]], [[TMP3]]
842+
; OTHER-NEXT: [[RDX_NEXT_1]] = add i32 [[RDX_1]], [[TMP3]]
843843
; OTHER-NEXT: [[IV_NEXT_1:%.*]] = add nuw nsw i64 [[IV]], 2
844844
; OTHER-NEXT: [[GEP_A_2:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT_1]]
845845
; OTHER-NEXT: [[TMP4:%.*]] = load i32, ptr [[GEP_A_2]], align 2
846-
; OTHER-NEXT: [[RDX_NEXT_2]] = add nuw nsw i32 [[RDX_2]], [[TMP4]]
846+
; OTHER-NEXT: [[RDX_NEXT_2]] = add i32 [[RDX_2]], [[TMP4]]
847847
; OTHER-NEXT: [[IV_NEXT_2:%.*]] = add nuw nsw i64 [[IV]], 3
848848
; OTHER-NEXT: [[GEP_A_3:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT_2]]
849849
; OTHER-NEXT: [[TMP5:%.*]] = load i32, ptr [[GEP_A_3]], align 2
850-
; OTHER-NEXT: [[RDX_NEXT_3]] = add nuw nsw i32 [[RDX_3]], [[TMP5]]
850+
; OTHER-NEXT: [[RDX_NEXT_3]] = add i32 [[RDX_3]], [[TMP5]]
851851
; OTHER-NEXT: [[IV_NEXT_3]] = add nuw nsw i64 [[IV]], 4
852852
; OTHER-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
853853
; OTHER-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]

llvm/test/Transforms/LoopUnroll/runtime-loop5.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,19 @@ define i3 @test(ptr %a, i3 %n) {
8282
; UNROLL-4-NEXT: [[NITER:%.*]] = phi i3 [ 0, [[FOR_BODY_PREHEADER_NEW]] ], [ [[NITER_NEXT_3:%.*]], [[FOR_BODY]] ]
8383
; UNROLL-4-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i3, ptr [[A:%.*]], i64 [[INDVARS_IV]]
8484
; UNROLL-4-NEXT: [[TMP2:%.*]] = load i3, ptr [[ARRAYIDX]], align 1
85-
; UNROLL-4-NEXT: [[ADD1]] = add nsw i3 [[TMP2]], [[SUM_02]]
85+
; UNROLL-4-NEXT: [[ADD1]] = add i3 [[TMP2]], [[SUM_02]]
8686
; UNROLL-4-NEXT: [[INDVARS_IV_NEXT:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 1
8787
; UNROLL-4-NEXT: [[ARRAYIDX_1:%.*]] = getelementptr inbounds i3, ptr [[A]], i64 [[INDVARS_IV_NEXT]]
8888
; UNROLL-4-NEXT: [[TMP3:%.*]] = load i3, ptr [[ARRAYIDX_1]], align 1
89-
; UNROLL-4-NEXT: [[ADD]] = add nsw i3 [[TMP3]], [[SUM_02_1]]
89+
; UNROLL-4-NEXT: [[ADD]] = add i3 [[TMP3]], [[SUM_02_1]]
9090
; UNROLL-4-NEXT: [[INDVARS_IV_NEXT_1:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 2
9191
; UNROLL-4-NEXT: [[ARRAYIDX_2:%.*]] = getelementptr inbounds i3, ptr [[A]], i64 [[INDVARS_IV_NEXT_1]]
9292
; UNROLL-4-NEXT: [[TMP4:%.*]] = load i3, ptr [[ARRAYIDX_2]], align 1
93-
; UNROLL-4-NEXT: [[ADD_2]] = add nsw i3 [[TMP4]], [[ADD_1]]
93+
; UNROLL-4-NEXT: [[ADD_2]] = add i3 [[TMP4]], [[ADD_1]]
9494
; UNROLL-4-NEXT: [[INDVARS_IV_NEXT_2:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 3
9595
; UNROLL-4-NEXT: [[ARRAYIDX_3:%.*]] = getelementptr inbounds i3, ptr [[A]], i64 [[INDVARS_IV_NEXT_2]]
9696
; UNROLL-4-NEXT: [[TMP5:%.*]] = load i3, ptr [[ARRAYIDX_3]], align 1
97-
; UNROLL-4-NEXT: [[ADD_3]] = add nsw i3 [[TMP5]], [[SUM_02_3]]
97+
; UNROLL-4-NEXT: [[ADD_3]] = add i3 [[TMP5]], [[SUM_02_3]]
9898
; UNROLL-4-NEXT: [[INDVARS_IV_NEXT_3]] = add nuw nsw i64 [[INDVARS_IV]], 4
9999
; UNROLL-4-NEXT: [[NITER_NEXT_3]] = add i3 [[NITER]], -4
100100
; UNROLL-4-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i3 [[NITER_NEXT_3]], [[UNROLL_ITER]]

llvm/test/Transforms/LoopUnroll/runtime-unroll-reductions.ll

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@ define i32 @test_add_reduction(ptr %a, i64 %n) {
1414
; CHECK-NEXT: br label %[[LOOP:.*]]
1515
; CHECK: [[LOOP]]:
1616
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, %[[ENTRY_NEW]] ], [ [[IV_NEXT_1:%.*]], %[[LOOP]] ]
17-
; CHECK-NEXT: [[RDX:%.*]] = phi i32 [ 0, %[[ENTRY_NEW]] ], [ [[RDX_NEXT_1:%.*]], %[[LOOP]] ]
17+
; CHECK-NEXT: [[RDX_1:%.*]] = phi i32 [ 0, %[[ENTRY_NEW]] ], [ [[RDX_NEXT_1:%.*]], %[[LOOP]] ]
18+
; CHECK-NEXT: [[RDX:%.*]] = phi i32 [ 0, %[[ENTRY_NEW]] ], [ [[RDX_NEXT:%.*]], %[[LOOP]] ]
1819
; CHECK-NEXT: [[NITER:%.*]] = phi i64 [ 0, %[[ENTRY_NEW]] ], [ [[NITER_NEXT_1:%.*]], %[[LOOP]] ]
1920
; CHECK-NEXT: [[GEP_A:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV]]
2021
; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[GEP_A]], align 2
21-
; CHECK-NEXT: [[RDX_NEXT:%.*]] = add nuw nsw i32 [[RDX]], [[TMP2]]
22+
; CHECK-NEXT: [[RDX_NEXT]] = add i32 [[RDX]], [[TMP2]]
2223
; CHECK-NEXT: [[IV_NEXT:%.*]] = add nuw nsw i64 [[IV]], 1
2324
; CHECK-NEXT: [[GEP_A_1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[IV_NEXT]]
2425
; CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[GEP_A_1]], align 2
25-
; CHECK-NEXT: [[RDX_NEXT_1]] = add nuw nsw i32 [[RDX_NEXT]], [[TMP3]]
26+
; CHECK-NEXT: [[RDX_NEXT_1]] = add i32 [[RDX_1]], [[TMP3]]
2627
; CHECK-NEXT: [[IV_NEXT_1]] = add nuw nsw i64 [[IV]], 2
2728
; CHECK-NEXT: [[NITER_NEXT_1]] = add i64 [[NITER]], 2
2829
; CHECK-NEXT: [[NITER_NCMP_1:%.*]] = icmp eq i64 [[NITER_NEXT_1]], [[UNROLL_ITER]]
@@ -31,11 +32,12 @@ define i32 @test_add_reduction(ptr %a, i64 %n) {
3132
; CHECK-NEXT: [[RES_PH_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
3233
; CHECK-NEXT: [[IV_UNR_PH:%.*]] = phi i64 [ [[IV_NEXT_1]], %[[LOOP]] ]
3334
; CHECK-NEXT: [[RDX_UNR_PH:%.*]] = phi i32 [ [[RDX_NEXT_1]], %[[LOOP]] ]
35+
; CHECK-NEXT: [[BIN_RDX:%.*]] = add i32 [[RDX_NEXT_1]], [[RDX_NEXT]]
3436
; CHECK-NEXT: br label %[[EXIT_UNR_LCSSA]]
3537
; CHECK: [[EXIT_UNR_LCSSA]]:
36-
; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[RES_PH_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
38+
; CHECK-NEXT: [[RES_PH:%.*]] = phi i32 [ poison, %[[ENTRY]] ], [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
3739
; CHECK-NEXT: [[IV_UNR:%.*]] = phi i64 [ 0, %[[ENTRY]] ], [ [[IV_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
38-
; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[RDX_UNR_PH]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
40+
; CHECK-NEXT: [[RDX_UNR:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[BIN_RDX]], %[[EXIT_UNR_LCSSA_LOOPEXIT]] ]
3941
; CHECK-NEXT: [[LCMP_MOD:%.*]] = icmp ne i64 [[XTRAITER]], 0
4042
; CHECK-NEXT: br i1 [[LCMP_MOD]], label %[[LOOP_EPIL_PREHEADER:.*]], label %[[EXIT:.*]]
4143
; CHECK: [[LOOP_EPIL_PREHEADER]]:

llvm/test/Transforms/LoopUnroll/runtime-unroll-remainder.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -77,28 +77,28 @@ define i32 @unroll(ptr nocapture readonly %a, ptr nocapture readonly %b, i32 %N)
7777
; CHECK-NEXT: [[ARRAYIDX2_2:%.*]] = getelementptr inbounds nuw i32, ptr [[B]], i64 [[INDVARS_IV]]
7878
; CHECK-NEXT: [[TMP12:%.*]] = load i32, ptr [[ARRAYIDX2_2]], align 4
7979
; CHECK-NEXT: [[MUL_2:%.*]] = mul nsw i32 [[TMP12]], [[TMP11]]
80-
; CHECK-NEXT: [[ADD_2]] = add nsw i32 [[MUL_2]], [[C_010]]
80+
; CHECK-NEXT: [[ADD_2]] = add i32 [[MUL_2]], [[C_010]]
8181
; CHECK-NEXT: [[INDVARS_IV_NEXT:%.*]] = or disjoint i64 [[INDVARS_IV]], 1
8282
; CHECK-NEXT: [[ARRAYIDX_1:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS_IV_NEXT]]
8383
; CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[ARRAYIDX_1]], align 4
8484
; CHECK-NEXT: [[ARRAYIDX2_1:%.*]] = getelementptr inbounds nuw i32, ptr [[B]], i64 [[INDVARS_IV_NEXT]]
8585
; CHECK-NEXT: [[TMP10:%.*]] = load i32, ptr [[ARRAYIDX2_1]], align 4
8686
; CHECK-NEXT: [[MUL_1:%.*]] = mul nsw i32 [[TMP10]], [[TMP9]]
87-
; CHECK-NEXT: [[ADD_5]] = add nsw i32 [[MUL_1]], [[C_010_1]]
87+
; CHECK-NEXT: [[ADD_5]] = add i32 [[MUL_1]], [[C_010_1]]
8888
; CHECK-NEXT: [[INDVARS_IV_NEXT_1:%.*]] = or disjoint i64 [[INDVARS_IV]], 2
8989
; CHECK-NEXT: [[ARRAYIDX_2:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS_IV_NEXT_1]]
9090
; CHECK-NEXT: [[TMP15:%.*]] = load i32, ptr [[ARRAYIDX_2]], align 4
9191
; CHECK-NEXT: [[ARRAYIDX2_4:%.*]] = getelementptr inbounds nuw i32, ptr [[B]], i64 [[INDVARS_IV_NEXT_1]]
9292
; CHECK-NEXT: [[TMP16:%.*]] = load i32, ptr [[ARRAYIDX2_4]], align 4
9393
; CHECK-NEXT: [[MUL_4:%.*]] = mul nsw i32 [[TMP16]], [[TMP15]]
94-
; CHECK-NEXT: [[ADD_4]] = add nsw i32 [[MUL_4]], [[C_010_2]]
94+
; CHECK-NEXT: [[ADD_4]] = add i32 [[MUL_4]], [[C_010_2]]
9595
; CHECK-NEXT: [[INDVARS_IV_NEXT_2:%.*]] = or disjoint i64 [[INDVARS_IV]], 3
9696
; CHECK-NEXT: [[ARRAYIDX_3:%.*]] = getelementptr inbounds nuw i32, ptr [[A]], i64 [[INDVARS_IV_NEXT_2]]
9797
; CHECK-NEXT: [[TMP13:%.*]] = load i32, ptr [[ARRAYIDX_3]], align 4
9898
; CHECK-NEXT: [[ARRAYIDX2_3:%.*]] = getelementptr inbounds nuw i32, ptr [[B]], i64 [[INDVARS_IV_NEXT_2]]
9999
; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr [[ARRAYIDX2_3]], align 4
100100
; CHECK-NEXT: [[MUL_3:%.*]] = mul nsw i32 [[TMP14]], [[TMP13]]
101-
; CHECK-NEXT: [[ADD_6]] = add nsw i32 [[MUL_3]], [[C_010_3]]
101+
; CHECK-NEXT: [[ADD_6]] = add i32 [[MUL_3]], [[C_010_3]]
102102
; CHECK-NEXT: [[INDVARS_IV_NEXT_3]] = add nuw nsw i64 [[INDVARS_IV]], 4
103103
; CHECK-NEXT: [[NITER_NEXT_3]] = add i64 [[NITER]], 4
104104
; CHECK-NEXT: [[NITER_NCMP_3:%.*]] = icmp eq i64 [[NITER_NEXT_3]], [[UNROLL_ITER]]

0 commit comments

Comments
 (0)