diff --git a/mlir/include/mlir/Dialect/Linalg/Passes.h b/mlir/include/mlir/Dialect/Linalg/Passes.h --- a/mlir/include/mlir/Dialect/Linalg/Passes.h +++ b/mlir/include/mlir/Dialect/Linalg/Passes.h @@ -38,31 +38,28 @@ std::unique_ptr createLinalgNamedOpConversionPass(); -std::unique_ptr> -createLinalgInlineScalarOperandsPass(); +std::unique_ptr createLinalgInlineScalarOperandsPass(); /// Create a pass to convert Linalg operations to scf.for loops and /// memref.load/memref.store accesses. -std::unique_ptr> createConvertLinalgToLoopsPass(); +std::unique_ptr createConvertLinalgToLoopsPass(); /// Create a pass to convert Linalg operations to scf.parallel loops and /// memref.load/memref.store accesses. -std::unique_ptr> -createConvertLinalgToParallelLoopsPass(); +std::unique_ptr createConvertLinalgToParallelLoopsPass(); /// Create a pass to convert Linalg operations to affine.for loops and /// affine_load/affine_store accesses. /// Placeholder for now, this is NYI. -std::unique_ptr> -createConvertLinalgToAffineLoopsPass(); +std::unique_ptr createConvertLinalgToAffineLoopsPass(); /// Create a pass to convert Linalg operations which work on tensors to use /// buffers instead. -std::unique_ptr> createLinalgBufferizePass(); +std::unique_ptr createLinalgBufferizePass(); /// Create a pass to convert named Linalg operations to Linalg generic /// operations. -std::unique_ptr> createLinalgGeneralizationPass(); +std::unique_ptr createLinalgGeneralizationPass(); /// Create a pass to convert Linalg operations to equivalent operations that /// work on primitive types, if possible. diff --git a/mlir/include/mlir/Dialect/Linalg/Passes.td b/mlir/include/mlir/Dialect/Linalg/Passes.td --- a/mlir/include/mlir/Dialect/Linalg/Passes.td +++ b/mlir/include/mlir/Dialect/Linalg/Passes.td @@ -55,7 +55,7 @@ let dependentDialects = ["linalg::LinalgDialect", "tensor::TensorDialect"]; } -def LinalgInlineScalarOperands : Pass<"linalg-inline-scalar-operands", "func::FuncOp"> { +def LinalgInlineScalarOperands : Pass<"linalg-inline-scalar-operands"> { let summary = "Inline scalar operands into linalg generic ops"; let constructor = "mlir::createLinalgInlineScalarOperandsPass()"; let dependentDialects = [ @@ -63,7 +63,7 @@ ]; } -def LinalgLowerToAffineLoops : Pass<"convert-linalg-to-affine-loops", "func::FuncOp"> { +def LinalgLowerToAffineLoops : Pass<"convert-linalg-to-affine-loops"> { let summary = "Lower the operations from the linalg dialect into affine " "loops"; let constructor = "mlir::createConvertLinalgToAffineLoopsPass()"; @@ -71,7 +71,7 @@ "affine::AffineDialect", "linalg::LinalgDialect", "memref::MemRefDialect"]; } -def LinalgLowerToLoops : Pass<"convert-linalg-to-loops", "func::FuncOp"> { +def LinalgLowerToLoops : Pass<"convert-linalg-to-loops"> { let summary = "Lower the operations from the linalg dialect into loops"; let constructor = "mlir::createConvertLinalgToLoopsPass()"; let dependentDialects = [ @@ -82,7 +82,7 @@ } def LinalgLowerToParallelLoops - : Pass<"convert-linalg-to-parallel-loops", "func::FuncOp"> { + : Pass<"convert-linalg-to-parallel-loops"> { let summary = "Lower the operations from the linalg dialect into parallel " "loops"; let constructor = "mlir::createConvertLinalgToParallelLoopsPass()"; @@ -94,7 +94,7 @@ ]; } -def LinalgBufferize : Pass<"linalg-bufferize", "func::FuncOp"> { +def LinalgBufferize : Pass<"linalg-bufferize"> { let summary = "Bufferize the linalg dialect"; let constructor = "mlir::createLinalgBufferizePass()"; let dependentDialects = [ @@ -105,7 +105,7 @@ ]; } -def LinalgGeneralization : Pass<"linalg-generalize-named-ops", "func::FuncOp"> { +def LinalgGeneralization : Pass<"linalg-generalize-named-ops"> { let summary = "Convert named ops into generic ops"; let constructor = "mlir::createLinalgGeneralizationPass()"; let dependentDialects = ["linalg::LinalgDialect"]; diff --git a/mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp b/mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Bufferize.cpp @@ -49,6 +49,6 @@ }; } // namespace -std::unique_ptr> mlir::createLinalgBufferizePass() { +std::unique_ptr mlir::createLinalgBufferizePass() { return std::make_unique(); } diff --git a/mlir/lib/Dialect/Linalg/Transforms/Generalization.cpp b/mlir/lib/Dialect/Linalg/Transforms/Generalization.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Generalization.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Generalization.cpp @@ -84,10 +84,9 @@ } // namespace void LinalgGeneralizationPass::runOnOperation() { - func::FuncOp func = getOperation(); RewritePatternSet patterns(&getContext()); populateLinalgNamedOpsGeneralizationPatterns(patterns); - (void)applyPatternsAndFoldGreedily(func.getBody(), std::move(patterns)); + (void)applyPatternsAndFoldGreedily(getOperation(), std::move(patterns)); } void mlir::linalg::populateLinalgNamedOpsGeneralizationPatterns( @@ -95,7 +94,6 @@ patterns.add(patterns.getContext()); } -std::unique_ptr> -mlir::createLinalgGeneralizationPass() { +std::unique_ptr mlir::createLinalgGeneralizationPass() { return std::make_unique(); } diff --git a/mlir/lib/Dialect/Linalg/Transforms/InlineScalarOperands.cpp b/mlir/lib/Dialect/Linalg/Transforms/InlineScalarOperands.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/InlineScalarOperands.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/InlineScalarOperands.cpp @@ -103,17 +103,15 @@ : public impl::LinalgInlineScalarOperandsBase< LinalgInlineScalarOperandsPass> { void runOnOperation() override { - func::FuncOp funcOp = getOperation(); - MLIRContext *context = funcOp.getContext(); - RewritePatternSet patterns(context); - + Operation *op = getOperation(); + MLIRContext &ctx = getContext(); + RewritePatternSet patterns(&ctx); populateInlineConstantOperandsPatterns(patterns); - (void)applyPatternsAndFoldGreedily(funcOp.getBody(), std::move(patterns)); + (void)applyPatternsAndFoldGreedily(op, std::move(patterns)); } }; } // namespace -std::unique_ptr> -mlir::createLinalgInlineScalarOperandsPass() { +std::unique_ptr mlir::createLinalgInlineScalarOperandsPass() { return std::make_unique(); } diff --git a/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp b/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp --- a/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp +++ b/mlir/lib/Dialect/Linalg/Transforms/Loops.cpp @@ -312,8 +312,8 @@ }; template -static void lowerLinalgToLoopsImpl(func::FuncOp funcOp) { - MLIRContext *context = funcOp.getContext(); +static void lowerLinalgToLoopsImpl(Operation *enclosingOp) { + MLIRContext *context = enclosingOp->getContext(); RewritePatternSet patterns(context); patterns.add>(context); memref::DimOp::getCanonicalizationPatterns(patterns, context); @@ -321,7 +321,7 @@ affine::AffineApplyOp::getCanonicalizationPatterns(patterns, context); patterns.add(context); // Just apply the patterns greedily. - (void)applyPatternsAndFoldGreedily(funcOp, std::move(patterns)); + (void)applyPatternsAndFoldGreedily(enclosingOp, std::move(patterns)); } struct LowerToAffineLoops @@ -352,18 +352,15 @@ } // namespace -std::unique_ptr> -mlir::createConvertLinalgToLoopsPass() { +std::unique_ptr mlir::createConvertLinalgToLoopsPass() { return std::make_unique(); } -std::unique_ptr> -mlir::createConvertLinalgToParallelLoopsPass() { +std::unique_ptr mlir::createConvertLinalgToParallelLoopsPass() { return std::make_unique(); } -std::unique_ptr> -mlir::createConvertLinalgToAffineLoopsPass() { +std::unique_ptr mlir::createConvertLinalgToAffineLoopsPass() { return std::make_unique(); }