[llvm] [LV] Follow up to uncountable exit with side effects vectorization (PR #201589)
Graham Hunter via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 9 06:40:50 PDT 2026
================
@@ -4272,54 +4301,36 @@ static bool handleUncountableExitsWithSideEffects(
return false;
}
- // Check GEPs to see if we can link them to a widen IV recipe with a step of
- // 1; we're only interested in contiguous accesses for the condition load
- // right now.
- for (auto *GEP : GEPs) {
- VPValue *MaybeIV = nullptr;
- if (!match(GEP, m_VPInstruction<Instruction::GetElementPtr>(
- m_LiveIn(), m_VPValue(MaybeIV))))
- return false;
-
- auto *WIV = dyn_cast<VPWidenInductionRecipe>(MaybeIV);
- if (!WIV)
- return false;
-
- if (!match(WIV->getStartValue(), m_SpecificInt(0)) ||
- !match(WIV->getStepValue(), m_SpecificInt(1)))
- return false;
- }
-
- // Find an insertion point. Default to the end of the header but override
- // if we find a memory op that needs masking before the condition load.
- auto InsertIt = HeaderVPBB->end();
- VPRecipeBase *CondR = (*Cond)->getDefiningRecipe();
- bool CondMoveNeeded = CondR->getParent() != HeaderVPBB;
- for (VPRecipeBase &R : *HeaderVPBB) {
- if (&R == CondLoad)
- continue;
+ // Check for a single GEP for the condition load to see if we can link it to
+ // a widen IV recipe with a step of 1; we're only interested in contiguous
+ // accesses for the condition load right now.
+ auto *IV = cast<VPWidenInductionRecipe>(&HeaderVPBB->front());
+ if (!match(IV->getStartValue(), m_SpecificInt(0)) ||
+ !match(IV->getStepValue(), m_SpecificInt(1)))
+ return false;
+ if (GEPs.size() != 1)
+ return false;
+ if (!match(GEPs.front(), m_VPInstruction<Instruction::GetElementPtr>(
----------------
huntergr-arm wrote:
Removed the separate GEPs.
https://github.com/llvm/llvm-project/pull/201589
More information about the llvm-commits
mailing list