[llvm] [VPlan] Extract reverse operation for reverse accesses (PR #146525)
Shih-Po Hung via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 7 17:07:06 PDT 2025
================
@@ -917,6 +918,8 @@ Value *VPInstruction::generate(VPTransformState &State) {
return Res;
}
+ case VPInstruction::Reverse:
+ return Builder.CreateVectorReverse(State.get(getOperand(0)), "reverse");
----------------
arcbbb wrote:
Although I prefer using VF explicitly, I don't see a correctness issue with the first approach in the current state.
First approach: Reverse does not carry a VF operand.
1. EVL tailfolding must replace the Reverse recipe with a widen intrinsic recipe, since no VF is available.
Second approach: Reverse carries a VF operand.
1. EVL tailfolding can either replace VF with EVL (ensuring vp.reverse is generated) , or replace the Reverse recipe with a widen intrinsic recipe as in the first approach.
The two approaches seem similar to me.
Even though the function is named `optimizeMaskToEVL`, EVL transform for both WidenLoadRecipe and ReverseRecipe seems necessary for correctness.
https://github.com/llvm/llvm-project/pull/146525
More information about the llvm-commits
mailing list