Skip to content

Commit b8f3709

Browse files
committed
Address review comments
1 parent 70f3b5d commit b8f3709

File tree

3 files changed

+4
-6
lines changed

3 files changed

+4
-6
lines changed

llvm/docs/vplan-early-exit.png

28.9 KB
Loading

llvm/lib/Transforms/Vectorize/LoopVectorize.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2778,10 +2778,7 @@ BasicBlock *InnerLoopVectorizer::createVectorizedLoopSkeleton(
27782778
}
27792779

27802780
static bool isValueIncomingFromBlock(BasicBlock *ExitingBB, Value *V,
2781-
Instruction *UI) {
2782-
PHINode *PHI = dyn_cast<PHINode>(UI);
2783-
assert(PHI && "Expected LCSSA form");
2784-
2781+
PHINode *PHI) {
27852782
// If this loop has an uncountable early exit then there could be
27862783
// different users of OrigPhi with either:
27872784
// 1. Multiple users, because each exiting block (countable or
@@ -2821,7 +2818,7 @@ void InnerLoopVectorizer::fixupIVUsers(PHINode *OrigPhi,
28212818
for (User *U : PostInc->users()) {
28222819
Instruction *UI = cast<Instruction>(U);
28232820
if (!OrigLoop->contains(UI)) {
2824-
if (isValueIncomingFromBlock(OrigLoopLatch, PostInc, UI))
2821+
if (isValueIncomingFromBlock(OrigLoopLatch, PostInc, cast<PHINode>(UI)))
28252822
MissingVals[cast<PHINode>(UI)] = EndValue;
28262823
}
28272824
}
@@ -2832,7 +2829,7 @@ void InnerLoopVectorizer::fixupIVUsers(PHINode *OrigPhi,
28322829
for (User *U : OrigPhi->users()) {
28332830
auto *UI = cast<Instruction>(U);
28342831
if (!OrigLoop->contains(UI)) {
2835-
if (!isValueIncomingFromBlock(OrigLoopLatch, OrigPhi, UI))
2832+
if (!isValueIncomingFromBlock(OrigLoopLatch, OrigPhi, cast<PHINode>(UI)))
28362833
continue;
28372834
IRBuilder<> B(MiddleBlock->getTerminator());
28382835

llvm/lib/Transforms/Vectorize/VPlanAnalysis.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ Type *VPTypeAnalysis::inferScalarTypeForRecipe(const VPInstruction *R) {
7878
case VPInstruction::CanonicalIVIncrementForPart:
7979
case VPInstruction::AnyOf:
8080
return SetResultTyFromOp();
81+
case VPInstruction::ExtractFirstActive:
8182
case VPInstruction::ExtractFromEnd: {
8283
Type *BaseTy = inferScalarType(R->getOperand(0));
8384
if (auto *VecTy = dyn_cast<VectorType>(BaseTy))

0 commit comments

Comments
 (0)