diff --git a/mlir/include/mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h b/mlir/include/mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h index f5941d32e683f..7c943f07066c7 100644 --- a/mlir/include/mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h +++ b/mlir/include/mlir/Dialect/Vector/Transforms/VectorRewritePatterns.h @@ -20,7 +20,9 @@ #include "mlir/Dialect/Vector/Transforms/VectorTransformsEnums.h.inc" namespace mlir { +class ConversionTarget; class RewritePatternSet; +class TypeConverter; namespace arith { class AndIOp; @@ -375,6 +377,13 @@ void populateVectorNarrowTypeRewritePatterns(RewritePatternSet &patterns, void populateVectorTransposeNarrowTypeRewritePatterns( RewritePatternSet &patterns, PatternBenefit benefit = 1); +/// Populates patterns for ND vectors (N >= 2) linearization and sets up the +/// provided ConversionTarget with the appropriate legality configuration for +/// the ops to get converted properly. +void populateVectorLinearizeTypeConversionsAndLegality( + TypeConverter &typeConverter, RewritePatternSet &patterns, + ConversionTarget &target); + } // namespace vector } // namespace mlir diff --git a/mlir/include/mlir/Transforms/DialectConversion.h b/mlir/include/mlir/Transforms/DialectConversion.h index 51e3e413b516f..5081b4c06a617 100644 --- a/mlir/include/mlir/Transforms/DialectConversion.h +++ b/mlir/include/mlir/Transforms/DialectConversion.h @@ -604,6 +604,29 @@ class OpInterfaceConversionPattern : public ConversionPattern { using ConversionPattern::matchAndRewrite; }; +/// OpTraitConversionPattern is a wrapper around ConversionPattern that allows +/// for matching and rewriting against instances of an operation that possess a +/// given trait. +template