Skip to content

Commit 74eddb5

Browse files
committed
!fixup address latest comments, thanks
1 parent f5ee27b commit 74eddb5

File tree

4 files changed

+34
-29
lines changed

4 files changed

+34
-29
lines changed

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2380,10 +2380,8 @@ void InnerLoopVectorizer::introduceCheckBlockInVPlan(BasicBlock *CheckIRBB) {
23802380

23812381
// We just connected a new block to the scalar preheader. Update all
23822382
// ResumePhis by adding an incoming value for it, replicating the last value.
2383-
for (VPRecipeBase &R : *cast<VPBasicBlock>(ScalarPH)) {
2383+
for (VPRecipeBase &R : cast<VPBasicBlock>(ScalarPH)->phis()) {
23842384
auto *ResumePhi = cast<VPPhi>(&R);
2385-
if (ResumePhi->getNumIncoming() == ScalarPH->getNumPredecessors())
2386-
continue;
23872385
ResumePhi->addOperand(
23882386
ResumePhi->getOperand(ResumePhi->getNumOperands() - 1));
23892387
}
@@ -2534,7 +2532,7 @@ static void replaceVPBBWithIRVPBB(VPBasicBlock *VPBB, BasicBlock *IRBB) {
25342532
VPIRBasicBlock *IRVPBB = VPBB->getPlan()->createVPIRBasicBlock(IRBB);
25352533
for (auto &R : make_early_inc_range(*VPBB)) {
25362534
assert((IRVPBB->empty() || IRVPBB->back().isPhi() || !R.isPhi()) &&
2537-
"Tried to move phi recipe to end of block");
2535+
"Tried to move phi recipe after a non-phi recipe");
25382536
R.moveBefore(*IRVPBB, IRVPBB->end());
25392537
}
25402538

llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1081,11 +1081,12 @@ void VPPhi::execute(VPTransformState &State) {
10811081
State.setDebugLocFrom(getDebugLoc());
10821082
PHINode *NewPhi = State.Builder.CreatePHI(
10831083
State.TypeAnalysis.inferScalarType(this), 2, getName());
1084-
// TODO: Fixup incoming values once other recipes are enabled.
1085-
unsigned NumIncoming =
1086-
getParent() == getParent()->getPlan()->getScalarPreheader()
1087-
? getNumIncoming()
1088-
: 1;
1084+
unsigned NumIncoming = getNumIncoming();
1085+
if (getParent() != getParent()->getPlan()->getScalarPreheader()) {
1086+
// TODO: Fixup all incoming values of header phis once recipes defining them
1087+
// are introduced.
1088+
NumIncoming = 1;
1089+
}
10891090
for (unsigned Idx = 0; Idx != NumIncoming; ++Idx) {
10901091
Value *IncV = State.get(getIncomingValue(Idx), VPLane(0));
10911092
BasicBlock *PredBB = State.CFG.VPBB2IRBB.at(getIncomingBlock(Idx));
@@ -1099,9 +1100,15 @@ void VPPhi::print(raw_ostream &O, const Twine &Indent,
10991100
VPSlotTracker &SlotTracker) const {
11001101
O << Indent << "EMIT ";
11011102
printAsOperand(O, SlotTracker);
1102-
O << " = phi ";
1103-
1104-
printPhiOperands(O, SlotTracker);
1103+
const VPBasicBlock *Parent = getParent();
1104+
if (Parent == Parent->getPlan()->getScalarPreheader()) {
1105+
// TODO: Use regular printing for resume-phis as well
1106+
O << " = resume-phi ";
1107+
printOperands(O, SlotTracker);
1108+
} else {
1109+
O << " = phi ";
1110+
printPhiOperands(O, SlotTracker);
1111+
}
11051112
}
11061113
#endif
11071114

llvm/test/Transforms/LoopVectorize/vplan-printing-before-execute.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ define void @test_tc_less_than_16(ptr %A, i64 %N) {
4949
; CHECK-NEXT: No successors
5050
; CHECK-EMPTY:
5151
; CHECK-NEXT: scalar.ph:
52-
; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = phi [ vp<[[END1]]>, middle.block ], [ ir<%and>, ir-bb<entry> ]
53-
; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = phi [ vp<[[END2]]>, middle.block ], [ ir<%A>, ir-bb<entry> ]
52+
; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi vp<[[END1]]>, ir<%and>
53+
; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi vp<[[END2]]>, ir<%A>
5454
; CHECK-NEXT: Successor(s): ir-bb<loop>
5555
; CHECK-EMPTY:
5656
; CHECK-NEXT: ir-bb<loop>:
@@ -98,8 +98,8 @@ define void @test_tc_less_than_16(ptr %A, i64 %N) {
9898
; CHECK-NEXT: No successors
9999
; CHECK-EMPTY:
100100
; CHECK-NEXT: ir-bb<scalar.ph>:
101-
; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = phi [ vp<[[END1]]>, middle.block ], [ ir<%and>, ir-bb<entry> ]
102-
; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = phi [ vp<[[END2]]>, middle.block ], [ ir<%A>, ir-bb<entry> ]
101+
; CHECK-NEXT: EMIT vp<[[RESUME1:%.+]]> = resume-phi vp<[[END1]]>, ir<%and>
102+
; CHECK-NEXT: EMIT vp<[[RESUME2:%.+]]>.1 = resume-phi vp<[[END2]]>, ir<%A>
103103
; CHECK-NEXT: Successor(s): ir-bb<loop>
104104
; CHECK-EMPTY:
105105
; CHECK-NEXT: ir-bb<loop>:

llvm/test/Transforms/LoopVectorize/vplan-printing.ll

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ define void @print_call_and_memory(i64 %n, ptr noalias %y, ptr noalias %x) nounw
4646
; CHECK-NEXT: No successors
4747
; CHECK-EMPTY:
4848
; CHECK-NEXT: scalar.ph
49-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<for.body.preheader> ]
49+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
5050
; CHECK-NEXT: Successor(s): ir-bb<for.body>
5151
; CHECK-EMPTY:
5252
; CHECK-NEXT: ir-bb<for.body>:
@@ -117,7 +117,7 @@ define void @print_widen_gep_and_select(i64 %n, ptr noalias %y, ptr noalias %x,
117117
; CHECK-NEXT: No successors
118118
; CHECK-EMPTY:
119119
; CHECK-NEXT: scalar.ph
120-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<for.body.preheader> ]
120+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
121121
; CHECK-NEXT: Successor(s): ir-bb<for.body>
122122
; CHECK-EMPTY:
123123
; CHECK-NEXT: ir-bb<for.body>:
@@ -206,7 +206,7 @@ define void @print_replicate_predicated_phi(i64 %n, ptr %x) {
206206
; CHECK-NEXT: No successors
207207
; CHECK-EMPTY:
208208
; CHECK-NEXT: scalar.ph
209-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
209+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
210210
; CHECK-NEXT: Successor(s): ir-bb<for.body>
211211
; CHECK-EMPTY:
212212
; CHECK-NEXT: ir-bb<for.body>:
@@ -289,7 +289,7 @@ define void @print_interleave_groups(i32 %C, i32 %D) {
289289
; CHECK-NEXT: No successors
290290
; CHECK-EMPTY:
291291
; CHECK-NEXT: scalar.ph
292-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[IV_END]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
292+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[IV_END]]>, ir<0>
293293
; CHECK-NEXT: Successor(s): ir-bb<for.body>
294294
; CHECK-EMPTY:
295295
; CHECK-NEXT: ir-bb<for.body>:
@@ -394,7 +394,7 @@ define void @debug_loc_vpinstruction(ptr nocapture %asd, ptr nocapture %bsd) !db
394394
; CHECK-NEXT: No successors
395395
; CHECK-EMPTY:
396396
; CHECK-NEXT: scalar.ph:
397-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
397+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
398398
; CHECK-NEXT: Successor(s): ir-bb<loop>
399399
; CHECK-EMPTY:
400400
; CHECK-NEXT: ir-bb<loop>:
@@ -479,7 +479,7 @@ define void @print_expand_scev(i64 %y, ptr %ptr) {
479479
; CHECK-NEXT: No successors
480480
; CHECK-EMPTY:
481481
; CHECK-NEXT: scalar.ph
482-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[IV_END]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
482+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[IV_END]]>, ir<0>
483483
; CHECK-NEXT: Successor(s): ir-bb<loop>
484484
; CHECK-EMPTY:
485485
; CHECK-NEXT: ir-bb<loop>:
@@ -548,7 +548,7 @@ define i32 @print_exit_value(ptr %ptr, i32 %off) {
548548
; CHECK-NEXT: No successors
549549
; CHECK-EMPTY:
550550
; CHECK-NEXT: scalar.ph
551-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
551+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
552552
; CHECK-NEXT: Successor(s): ir-bb<loop>
553553
; CHECK-EMPTY:
554554
; CHECK-NEXT: ir-bb<loop>:
@@ -616,7 +616,7 @@ define void @print_fast_math_flags(i64 %n, ptr noalias %y, ptr noalias %x, ptr %
616616
; CHECK-NEXT: No successors
617617
; CHECK-EMPTY:
618618
; CHECK-NEXT: scalar.ph
619-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
619+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
620620
; CHECK-NEXT: Successor(s): ir-bb<loop>
621621
; CHECK-EMPTY:
622622
; CHECK-NEXT: ir-bb<loop>:
@@ -686,7 +686,7 @@ define void @print_exact_flags(i64 %n, ptr noalias %x) {
686686
; CHECK-NEXT: No successors
687687
; CHECK-EMPTY:
688688
; CHECK-NEXT: scalar.ph
689-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
689+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
690690
; CHECK-NEXT: Successor(s): ir-bb<loop>
691691
; CHECK-EMPTY:
692692
; CHECK-NEXT: ir-bb<loop>:
@@ -776,7 +776,7 @@ define void @print_call_flags(ptr readonly %src, ptr noalias %dest, i64 %n) {
776776
; CHECK-NEXT: No successors
777777
; CHECK-EMPTY:
778778
; CHECK-NEXT: scalar.ph
779-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
779+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
780780
; CHECK-NEXT: Successor(s): ir-bb<for.body>
781781
; CHECK-EMPTY:
782782
; CHECK-NEXT: ir-bb<for.body>:
@@ -855,7 +855,7 @@ define void @print_disjoint_flags(i64 %n, ptr noalias %x) {
855855
; CHECK-NEXT: No successors
856856
; CHECK-EMPTY:
857857
; CHECK-NEXT: scalar.ph
858-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
858+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
859859
; CHECK-NEXT: Successor(s): ir-bb<loop>
860860
; CHECK-EMPTY:
861861
; CHECK-NEXT: ir-bb<loop>:
@@ -972,8 +972,8 @@ define i16 @print_first_order_recurrence_and_result(ptr %ptr) {
972972
; CHECK-NEXT: No successors
973973
; CHECK-EMPTY:
974974
; CHECK-NEXT: scalar.ph
975-
; CHECK-NEXT: EMIT vp<[[RESUME_P:%.*]]> = phi [ vp<[[RESUME_1]]>, middle.block ], [ ir<22>, ir-bb<entry> ]
976-
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = phi [ vp<[[VTC]]>, middle.block ], [ ir<0>, ir-bb<entry> ]
975+
; CHECK-NEXT: EMIT vp<[[RESUME_P:%.*]]> = resume-phi vp<[[RESUME_1]]>, ir<22>
976+
; CHECK-NEXT: EMIT vp<[[RESUME_IV:%.+]]> = resume-phi vp<[[VTC]]>, ir<0>
977977
; CHECK-NEXT: Successor(s): ir-bb<loop>
978978
; CHECK-EMPTY:
979979
; CHECK-NEXT: ir-bb<loop>:

0 commit comments

Comments
 (0)