[llvm] [LV][EVL] Support interleaved access with tail folding by EVL (PR #152070)
Mel Chen via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 25 01:14:34 PDT 2025
================
@@ -2417,11 +2418,14 @@ class LLVM_ABI_FOR_TEST VPBlendRecipe : public VPSingleDefRecipe {
}
};
-/// VPInterleaveRecipe is a recipe for transforming an interleave group of load
-/// or stores into one wide load/store and shuffles. The first operand of a
-/// VPInterleave recipe is the address, followed by the stored values, followed
-/// by an optional mask.
-class LLVM_ABI_FOR_TEST VPInterleaveRecipe : public VPRecipeBase {
+/// A common base class for interleaved memory operations.
+/// Interleaved memory operation is a memory access method that combines
+/// multiple strided loads/stores into a single wide load/store with shuffles.
+/// The first operand must be the address. The optional operands are, in order,
+/// the stored values and the mask.
+/// TODO: Inherit from VPIRMetadata
+class LLVM_ABI_FOR_TEST VPInterleaveBase : public VPRecipeBase {
+protected:
const InterleaveGroup<Instruction> *IG;
----------------
Mel-Chen wrote:
6df82f3be785215d19307f12f526cc33b2490766
Currently only IG and NeedsMaskForGaps can be made private, since they both already have getter functions. HasMask does not have a getter function yet. As for the constructor, it still needs to be called by the constructors of VPInterleaveRecipe and VPInterleaveEVLRecipe, so it has to remain protected.
https://github.com/llvm/llvm-project/pull/152070
More information about the llvm-commits
mailing list