[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