13 #ifndef MLIR_DIALECT_LINALG_PASSES_H_ 14 #define MLIR_DIALECT_LINALG_PASSES_H_ 25 namespace bufferization {
26 struct OneShotBufferizationOptions;
38 std::unique_ptr<OperationPass<func::FuncOp>>
43 std::unique_ptr<OperationPass<func::FuncOp>>
52 std::unique_ptr<OperationPass<func::FuncOp>>
58 std::unique_ptr<OperationPass<func::FuncOp>>
80 std::unique_ptr<OperationPass<func::FuncOp>>
82 StringRef opName =
"",
const linalg::LinalgTilingAndFusionOptions &opt = {},
83 const linalg::LinalgTransformationFilter &filter =
84 linalg::LinalgTransformationFilter());
88 StringRef opName =
"",
89 const linalg::LinalgTilingOptions &opt = linalg::LinalgTilingOptions(),
90 const linalg::LinalgTransformationFilter &filter =
91 linalg::LinalgTransformationFilter());
95 StringRef opName =
"",
96 const linalg::LinalgPaddingOptions &opt = linalg::LinalgPaddingOptions(),
97 const linalg::LinalgTransformationFilter &filter =
98 linalg::LinalgTransformationFilter());
102 StringRef opName =
"",
const linalg::LinalgTransformationFilter &filter =
103 linalg::LinalgTransformationFilter());
108 const linalg::LinalgTransformationFilter &filter =
109 linalg::LinalgTransformationFilter());
112 std::unique_ptr<OperationPass<func::FuncOp>>
114 ArrayRef<int64_t> iteratorInterchange = {},
115 const linalg::LinalgTransformationFilter &filter =
116 linalg::LinalgTransformationFilter());
120 StringRef opName =
"",
121 const linalg::LinalgPeelOptions &opt = linalg::LinalgPeelOptions(),
122 const linalg::LinalgTransformationFilter &filter =
123 linalg::LinalgTransformationFilter());
127 StringRef opName =
"",
128 linalg::LinalgVectorizationOptions opt =
129 linalg::LinalgVectorizationOptions(),
130 const linalg::LinalgTransformationFilter &filter =
131 linalg::LinalgTransformationFilter(),
132 bool padVectorize =
false);
136 linalg::LinalgEnablingOptions opt = linalg::LinalgEnablingOptions(),
137 const linalg::LinalgTransformationFilter &filter =
138 linalg::LinalgTransformationFilter());
141 std::unique_ptr<OperationPass<func::FuncOp>>
143 linalg::LinalgVectorLoweringOptions opt =
144 linalg::LinalgVectorLoweringOptions(),
145 const linalg::LinalgTransformationFilter &filter =
146 linalg::LinalgTransformationFilter());
149 std::unique_ptr<OperationPass<func::FuncOp>>
157 #define GEN_PASS_REGISTRATION 158 #include "mlir/Dialect/Linalg/Passes.h.inc" 162 #endif // MLIR_DIALECT_LINALG_PASSES_H_ Include the generated interface declarations.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyInterchangePass(ArrayRef< int64_t > iteratorInterchange={}, const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyInterchangePass.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyPeelPass(StringRef opName="", const linalg::LinalgPeelOptions &opt=linalg::LinalgPeelOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyPeelPass.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyVectorizePass(StringRef opName="", linalg::LinalgVectorizationOptions opt=linalg::LinalgVectorizationOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter(), bool padVectorize=false)
Create a LinalgStrategyVectorizePass.
std::unique_ptr< Pass > createLinalgElementwiseOpFusionPass()
std::unique_ptr< Pass > createFoldReshapeOpsByLinearizationPass()
std::unique_ptr< OperationPass< func::FuncOp > > createConvertLinalgToLoopsPass()
Create a pass to convert Linalg operations to scf.for loops and memref.load/memref.store accesses.
std::unique_ptr< OperationPass< func::FuncOp > > createConvertLinalgToParallelLoopsPass()
Create a pass to convert Linalg operations to scf.parallel loops and memref.load/memref.store accesses.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyGeneralizePass(StringRef opName="", const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyGeneralizePass.
std::unique_ptr< OperationPass< func::FuncOp > > createConvertLinalgToAffineLoopsPass()
Create a pass to convert Linalg operations to affine.for loops and affine_load/affine_store accesses...
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgTilingPass(ArrayRef< int64_t > tileSizes={}, linalg::LinalgTilingLoopType loopType=linalg::LinalgTilingLoopType::Loops)
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyLowerVectorsPass(linalg::LinalgVectorLoweringOptions opt=linalg::LinalgVectorLoweringOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyLowerVectorsPass.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgGeneralizationPass()
Create a pass to convert named Linalg operations to Linalg generic operations.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyTileAndFusePass(StringRef opName="", const linalg::LinalgTilingAndFusionOptions &opt={}, const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Linalg strategy passes.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgBufferizePass()
Create a pass to convert Linalg operations which work on tensors to use buffers instead.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyPadPass(StringRef opName="", const linalg::LinalgPaddingOptions &opt=linalg::LinalgPaddingOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyPadPass.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyTilePass(StringRef opName="", const linalg::LinalgTilingOptions &opt=linalg::LinalgTilingOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyTilePass.
LinalgTilingLoopType
The type of loops to be generated during tiling.
std::unique_ptr< Pass > createLinalgFoldUnitExtentDimsPass()
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgInlineScalarOperandsPass()
std::unique_ptr< Pass > createLinalgNamedOpConversionPass()
std::unique_ptr< Pass > createLinalgDetensorizePass()
Create a pass to convert Linalg operations to equivalent operations that work on primitive types...
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyEnablePass(linalg::LinalgEnablingOptions opt=linalg::LinalgEnablingOptions(), const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyEnablePass.
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyRemoveMarkersPass()
Create a LinalgStrategyRemoveMarkersPass.
std::unique_ptr< Pass > createConvertElementwiseToLinalgPass()
std::unique_ptr< OperationPass< func::FuncOp > > createLinalgStrategyDecomposePass(const linalg::LinalgTransformationFilter &filter=linalg::LinalgTransformationFilter())
Create a LinalgStrategyDecomposePass.
std::unique_ptr< Pass > createLinalgInitTensorToAllocTensorPass()
Create a pass that rewrites init_tensor to alloc_tensor.