[llvm] [VPlan] Emit VPVectorEndPointerRecipe for reverse interleave pointer adjustment (PR #144864)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 24 02:47:09 PDT 2025
================
@@ -1695,17 +1695,21 @@ class VPWidenGEPRecipe : public VPRecipeWithIRFlags {
/// A recipe to compute a pointer to the last element of each part of a widened
/// memory access for widened memory accesses of IndexedTy. Used for
-/// VPWidenMemoryRecipes that are reversed.
+/// VPWidenMemoryRecipes or VPInterleaveRecipes that are reversed.
class VPVectorEndPointerRecipe : public VPRecipeWithIRFlags,
public VPUnrollPartAccessor<2> {
Type *IndexedTy;
+ int64_t Stride;
+
public:
VPVectorEndPointerRecipe(VPValue *Ptr, VPValue *VF, Type *IndexedTy,
- GEPNoWrapFlags GEPFlags, DebugLoc DL)
+ int64_t Stride, GEPNoWrapFlags GEPFlags, DebugLoc DL)
: VPRecipeWithIRFlags(VPDef::VPVectorEndPointerSC,
ArrayRef<VPValue *>({Ptr, VF}), GEPFlags, DL),
- IndexedTy(IndexedTy) {}
+ IndexedTy(IndexedTy), Stride(Stride) {
+ assert(Stride != 0 && "Unexpected stride");
----------------
fhahn wrote:
```suggestion
assert(Stride != 0 && "Stride cannot be zero");
```
https://github.com/llvm/llvm-project/pull/144864
More information about the llvm-commits
mailing list