From 7f369819774d376f043200220f1a2d36d53487a2 Mon Sep 17 00:00:00 2001 From: Florian Hahn Date: Sat, 26 Jun 2021 13:11:18 +0100 Subject: [PATCH] [LV] Adjust trip count based on IsOrdered in widenPHIInstruction (NFC). Suggested in D104197, avoids the early exit. --- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index f28dbaa..b53c144 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -4801,11 +4801,8 @@ void InnerLoopVectorizer::widenPHIInstruction(Instruction *PN, bool IsOrdered = State.VF.isVector() && Cost->isInLoopReduction(cast(PN)) && Cost->useOrderedReductions(*RdxDesc); - - for (unsigned Part = 0; Part < State.UF; ++Part) { - // This is phase one of vectorizing PHIs. - if (Part > 0 && IsOrdered) - return; + unsigned LastPartForNewPhi = IsOrdered ? 1 : State.UF; + for (unsigned Part = 0; Part < LastPartForNewPhi; ++Part) { Value *EntryPart = PHINode::Create( VecTy, 2, "vec.phi", &*LoopVectorBody->getFirstInsertionPt()); State.set(PhiR, EntryPart, Part); -- 2.7.4