[llvm] [VPlan] Emit VPVectorEndPointerRecipe for reverse interleave pointer adjustment (PR #144864)
Mel Chen via llvm-commits
llvm-commits at lists.llvm.org
Mon Jun 30 23:58:51 PDT 2025
================
@@ -1706,17 +1706,22 @@ 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;
+ /// The constant stride of the pointer computed by this recipe.
+ 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 && "Stride cannot be zero");
----------------
Mel-Chen wrote:
Yes, so far it must be negative.
ef6b46a55b9517f9de79b42424f6257cff83638f
https://github.com/llvm/llvm-project/pull/144864
More information about the llvm-commits
mailing list