[llvm] [VPlan] Extract reverse operation for reverse accesses (PR #146525)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 11 06:24:30 PDT 2025
================
@@ -2482,6 +2482,29 @@ static VPRecipeBase *optimizeMaskToEVL(VPValue *HeaderMask,
.Case<VPWidenStoreRecipe>([&](VPWidenStoreRecipe *S) {
VPValue *NewMask = GetNewMask(S->getMask());
VPValue *NewAddr = GetNewAddr(S->getAddr());
+ // Convert general reverse operations on stored value into vp.reverse,
+ // when the VPVectorEndPointerRecipe adjusting the access address uses
+ // EVL instead of VF.
+ if (match(NewAddr, m_VectorEndPointer(m_VPValue(), m_Specific(&EVL)))) {
+ VPValue *StoredVal = S->getStoredValue();
+ // Skip if the stored value is not defined in the loop region.
+ if (!StoredVal->isDefinedOutsideLoopRegions()) {
----------------
fhahn wrote:
Hmm, is this correct even if the value outside the region is a vector other than a broadcast?
https://github.com/llvm/llvm-project/pull/146525
More information about the llvm-commits
mailing list