[llvm] [VPlan] Support VPReverseVectorPointer in DataWithEVL vectorization (PR #113667)
Shih-Po Hung via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 18 02:34:47 PST 2024
================
@@ -1462,15 +1462,22 @@ static void transformRecipestoEVLRecipes(VPlan &Plan, VPValue &EVL) {
assert(OrigMask && "Unmasked recipe when folding tail");
return HeaderMask == OrigMask ? nullptr : OrigMask;
};
+ auto SetEVLForReversePointer = [&EVL](VPValue *V) -> void {
+ if (auto *R = dyn_cast_if_present<VPReverseVectorPointerRecipe>(
+ V->getDefiningRecipe()))
+ R->setOperand(1, &EVL);
+ };
VPRecipeBase *NewRecipe =
TypeSwitch<VPRecipeBase *, VPRecipeBase *>(CurRecipe)
.Case<VPWidenLoadRecipe>([&](VPWidenLoadRecipe *L) {
VPValue *NewMask = GetNewMask(L->getMask());
+ SetEVLForReversePointer(L->getAddr());
----------------
arcbbb wrote:
Updated, instead I traverse each user of VF to find all `VPReverseVectorPointerRecipe`.
https://github.com/llvm/llvm-project/pull/113667
More information about the llvm-commits
mailing list