[llvm] [VPlan] Extract reverse operation for reverse accesses (PR #146525)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 1 04:45:26 PDT 2025
================
@@ -7733,14 +7755,30 @@ VPRecipeBuilder::tryToWidenMemory(Instruction *I, ArrayRef<VPValue *> Operands,
Builder.insert(VectorPtr);
Ptr = VectorPtr;
}
- if (LoadInst *Load = dyn_cast<LoadInst>(I))
- return new VPWidenLoadRecipe(*Load, Ptr, Mask, Consecutive, Reverse,
- VPIRMetadata(*Load, LVer), I->getDebugLoc());
- StoreInst *Store = cast<StoreInst>(I);
- return new VPWidenStoreRecipe(*Store, Ptr, Operands[0], Mask, Consecutive,
- Reverse, VPIRMetadata(*Store, LVer),
- I->getDebugLoc());
+ if (Reverse && Mask)
+ Mask = Builder.createNaryOp(VPInstruction::Reverse, Mask, I->getDebugLoc());
+
+ if (auto *Load = dyn_cast<LoadInst>(I)) {
+ auto *LoadR =
+ new VPWidenLoadRecipe(*Load, Ptr, Mask, Consecutive,
+ VPIRMetadata(*Load, LVer), Load->getDebugLoc());
+ if (Reverse) {
+ Builder.insert(LoadR);
+ return new VPInstruction(VPInstruction::Reverse, {LoadR},
+ LoadR->getDebugLoc());
----------------
lukel97 wrote:
```suggestion
return new VPInstruction(VPInstruction::Reverse, LoadR,
LoadR->getDebugLoc());
```
https://github.com/llvm/llvm-project/pull/146525
More information about the llvm-commits
mailing list