[llvm] [LV][EVL] Support interleaved access with tail folding by EVL (PR #152070)

Luke Lau via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 18 00:48:02 PDT 2025


================
@@ -3671,8 +3674,159 @@ void VPInterleaveRecipe::print(raw_ostream &O, const Twine &Indent,
 }
 #endif
 
-InstructionCost VPInterleaveRecipe::computeCost(ElementCount VF,
-                                                VPCostContext &Ctx) const {
+void VPInterleaveEVLRecipe::execute(VPTransformState &State) {
+  assert(!State.Lane && "Interleave group being replicated.");
+  assert(State.VF.isScalable() &&
+         "Only support scalable VF for EVL tail-folding.");
+  assert(!NeedsMaskForGaps &&
----------------
lukel97 wrote:

Just to check my understanding, the reason as to why we won't hit this assert today is because in RISCVTargetTransformInfo.cpp we always return an invalid cost for a scalable vector with `UseMaskForGaps` in `getInterleavedMemoryOpCost`?

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


More information about the llvm-commits mailing list