https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/120730
>From 5987219575feabd0eefba5932c21b0eba8ae4fb7 Mon Sep 17 00:00:00 2001 From: Florian Mayer <fma...@google.com> Date: Fri, 20 Dec 2024 05:35:56 -0800 Subject: [PATCH 1/3] simplify Created using spr 1.3.4 --- llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index 0768eccc8aeb35..ffd89466abeea9 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -1986,12 +1986,12 @@ void VPReverseVectorPointerRecipe::execute(VPTransformState &State) { // LastLane = 1 - RunTimeVF Value *LastLane = Builder.CreateSub(ConstantInt::get(IndexTy, 1), RunTimeVF); Value *Ptr = State.get(getOperand(0), VPLane(0)); - Value *ResultPtr = Builder.CreateGEP( - IndexedTy, Ptr, NumElt, "", - getGEPNoWrapFlags().withoutInBounds().withoutNoUnsignedSignedWrap()); - ResultPtr = Builder.CreateGEP( - IndexedTy, ResultPtr, LastLane, "", - getGEPNoWrapFlags().withoutInBounds().withoutNoUnsignedSignedWrap()); + Value *ResultPtr = + Builder.CreateGEP(IndexedTy, Ptr, NumElt, "", + getGEPNoWrapFlags().withoutNoUnsignedSignedWrap()); + ResultPtr = + Builder.CreateGEP(IndexedTy, ResultPtr, LastLane, "", + getGEPNoWrapFlags().withoutNoUnsignedSignedWrap()); State.set(this, ResultPtr, /*IsScalar*/ true); } >From e4e48cf7e0448f25ccdcdf7d7c262ac880853ddd Mon Sep 17 00:00:00 2001 From: Florian Mayer <fma...@google.com> Date: Fri, 20 Dec 2024 05:40:10 -0800 Subject: [PATCH 2/3] address comment Created using spr 1.3.4 --- llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index ffd89466abeea9..f97cae215ec087 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -1986,12 +1986,10 @@ void VPReverseVectorPointerRecipe::execute(VPTransformState &State) { // LastLane = 1 - RunTimeVF Value *LastLane = Builder.CreateSub(ConstantInt::get(IndexTy, 1), RunTimeVF); Value *Ptr = State.get(getOperand(0), VPLane(0)); - Value *ResultPtr = - Builder.CreateGEP(IndexedTy, Ptr, NumElt, "", - getGEPNoWrapFlags().withoutNoUnsignedSignedWrap()); - ResultPtr = - Builder.CreateGEP(IndexedTy, ResultPtr, LastLane, "", - getGEPNoWrapFlags().withoutNoUnsignedSignedWrap()); + // N.B. we deliberately do not use getGEPNoWrapFlags here, because this + // transform can invalidate `inbounds`. + Value *ResultPtr = Builder.CreateGEP(IndexedTy, Ptr, NumElt, ""); + ResultPtr = Builder.CreateGEP(IndexedTy, ResultPtr, LastLane, ""); State.set(this, ResultPtr, /*IsScalar*/ true); } >From 88971013ce379e6a7259544666c40c65410c4f00 Mon Sep 17 00:00:00 2001 From: Florian Mayer <fma...@google.com> Date: Fri, 20 Dec 2024 06:12:55 -0800 Subject: [PATCH 3/3] address Created using spr 1.3.4 --- llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 5 +++-- llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 1f6996cd9c1f49..65de01471a91ef 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -8436,10 +8436,11 @@ VPRecipeBuilder::tryToWidenMemory(Instruction *I, ArrayRef<VPValue *> Operands, Ptr->getUnderlyingValue()->stripPointerCasts()); VPSingleDefRecipe *VectorPtr; if (Reverse) + // N.B. we deliberately do pass getGEPNoWrapFlags here, because this + // transform can invalidate `inbounds`. VectorPtr = new VPReverseVectorPointerRecipe( Ptr, &Plan.getVF(), getLoadStoreType(I), - GEP && GEP->isInBounds() ? GEPNoWrapFlags::inBounds() - : GEPNoWrapFlags::none(), + GEPNoWrapFlags::none(), I->getDebugLoc()); else VectorPtr = new VPVectorPointerRecipe(Ptr, getLoadStoreType(I), diff --git a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp index f97cae215ec087..cda90d70e5c8da 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp +++ b/llvm/lib/Transforms/Vectorize/VPlanRecipes.cpp @@ -1986,10 +1986,10 @@ void VPReverseVectorPointerRecipe::execute(VPTransformState &State) { // LastLane = 1 - RunTimeVF Value *LastLane = Builder.CreateSub(ConstantInt::get(IndexTy, 1), RunTimeVF); Value *Ptr = State.get(getOperand(0), VPLane(0)); - // N.B. we deliberately do not use getGEPNoWrapFlags here, because this - // transform can invalidate `inbounds`. - Value *ResultPtr = Builder.CreateGEP(IndexedTy, Ptr, NumElt, ""); - ResultPtr = Builder.CreateGEP(IndexedTy, ResultPtr, LastLane, ""); + Value *ResultPtr = + Builder.CreateGEP(IndexedTy, Ptr, NumElt, "", getGEPNoWrapFlags()); + ResultPtr = Builder.CreateGEP(IndexedTy, ResultPtr, LastLane, "", + getGEPNoWrapFlags()); State.set(this, ResultPtr, /*IsScalar*/ true); } _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits