[llvm] [LV][EVL]Support reversed loads/stores. (PR #88025)

via llvm-commits llvm-commits at lists.llvm.org
Fri May 3 04:41:53 PDT 2024


================
@@ -9482,16 +9486,18 @@ void VPWidenStoreEVLRecipe::execute(VPTransformState &State) {
   CallInst *NewSI = nullptr;
   Value *StoredVal = State.get(StoredValue, 0);
   Value *EVL = State.get(getEVL(), VPIteration(0, 0));
-  Value *AllTrueMask = Builder.CreateVectorSplat(State.VF, Builder.getTrue());
-  if (isReverse()) {
-    auto *StoredValTy = cast<VectorType>(StoredVal->getType());
-    StoredVal = Builder.CreateIntrinsic(
-        StoredValTy, Intrinsic::experimental_vp_reverse,
-        {StoredVal, AllTrueMask, EVL}, nullptr, "vp.reverse");
-  }
-  Value *Mask = getMask() ? State.get(getMask(), 0) : AllTrueMask;
-  if (isReverse() && getMask())
-    Mask = reverseMask(Builder, Mask, EVL, AllTrueMask);
+  if (isReverse())
+    // Use cheap all-true mask for reverse rather than actual mask, it does not
+    // affect the result.
----------------
ayalz wrote:

```suggestion
```

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


More information about the llvm-commits mailing list