[llvm] [LV] Convert scatter w/uniform addr and mask being header mask to scalar store. (PR #172799)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Tue May 5 12:53:38 PDT 2026
================
@@ -8045,40 +8126,43 @@ void LoopVectorizationPlanner::buildVPlansWithVPRecipes(ElementCount MinVF,
OrigLoop, *LI, Legal->getWidestInductionType(),
getDebugLocFromInstOrOperands(Legal->getPrimaryInduction()), PSE, &LVer);
- VPlanTransforms::simplifyRecipes(*VPlan0);
- VPlanTransforms::handleEarlyExits(*VPlan0, Legal->hasUncountableEarlyExit());
- VPlanTransforms::addMiddleCheck(*VPlan0, CM.foldTailByMasking());
- RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::createLoopRegions, *VPlan0);
-
// Create recipes for header phis.
VPlanTransforms::createHeaderPhiRecipes(
*VPlan0, PSE, *OrigLoop, Legal->getInductionVars(),
Legal->getReductionVars(), Legal->getFixedOrderRecurrences(),
CM.getInLoopReductions(), Hints.allowReordering());
- if (CM.foldTailByMasking())
- RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::foldTailByMasking, *VPlan0);
- RUN_VPLAN_PASS_NO_VERIFY(VPlanTransforms::introduceMasksAndLinearize,
- *VPlan0);
+ VPlanTransforms::simplifyRecipes(*VPlan0);
auto MaxVFTimes2 = MaxVF * 2;
for (ElementCount VF = MinVF; ElementCount::isKnownLT(VF, MaxVFTimes2);) {
VFRange SubRange = {VF, MaxVFTimes2};
if (auto Plan = tryToBuildVPlanWithVPRecipes(
std::unique_ptr<VPlan>(VPlan0->duplicate()), SubRange, &LVer)) {
+ // Add the start VF to prevent optimizations on scalar VF.
+ Plan->addVF(SubRange.Start);
+ Plan->setName("Initial VPlan");
----------------
fhahn wrote:
I think you can move this back to the original position, right?
https://github.com/llvm/llvm-project/pull/172799
More information about the llvm-commits
mailing list