[llvm] [LV][EVL] Generate negative strided load/store for reversed load/store (PR #123608)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Tue Jan 21 06:35:19 PST 2025


================
@@ -2749,21 +2755,29 @@ void VPWidenStoreEVLRecipe::execute(VPTransformState &State) {
   CallInst *NewSI = nullptr;
   Value *StoredVal = State.get(StoredValue);
   Value *EVL = State.get(getEVL(), VPLane(0));
-  if (isReverse())
-    StoredVal = createReverseEVL(Builder, StoredVal, EVL, "vp.reverse");
   Value *Mask = nullptr;
-  if (VPValue *VPMask = getMask()) {
+  if (VPValue *VPMask = getMask())
     Mask = State.get(VPMask);
-    if (isReverse())
-      Mask = createReverseEVL(Builder, Mask, EVL, "vp.reverse.mask");
-  } else {
+  else
     Mask = Builder.CreateVectorSplat(State.VF, Builder.getTrue());
-  }
+
   Value *Addr = State.get(getAddr(), !CreateScatter);
   if (CreateScatter) {
     NewSI = Builder.CreateIntrinsic(Type::getVoidTy(EVL->getContext()),
                                     Intrinsic::vp_scatter,
                                     {StoredVal, Addr, Mask, EVL});
+  } else if (isReverse()) {
----------------
alexey-bataev wrote:

I mean can we have reverse flag set to true here at all?

https://github.com/llvm/llvm-project/pull/123608


More information about the llvm-commits mailing list