diff --git a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h --- a/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h +++ b/mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h @@ -24,8 +24,10 @@ /// Populates passes to convert from TOSA to Linalg on buffers. At the end of /// the pass, the function will only contain linalg ops or standard ops if the -/// pipeline succeeds. -void addTosaToLinalgPasses(OpPassManager &pm); +/// pipeline succeeds. The option to disable decompositions is available for +/// benchmarking performance improvements from the canonicalizations. +void addTosaToLinalgPasses(OpPassManager &pm, + bool disableTosaDecompositions = false); /// Populates conversion passes from TOSA dialect to Linalg dialect. void populateTosaToLinalgConversionPatterns(RewritePatternSet *patterns); diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp --- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp +++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp @@ -67,9 +67,11 @@ return std::make_unique(); } -void mlir::tosa::addTosaToLinalgPasses(OpPassManager &pm) { +void mlir::tosa::addTosaToLinalgPasses(OpPassManager &pm, + bool disableTosaDecompositions) { // Optional decompositions are designed to benefit linalg. - pm.addNestedPass(mlir::tosa::createTosaOptionalDecompositions()); + if (!disableTosaDecompositions) + pm.addNestedPass(mlir::tosa::createTosaOptionalDecompositions()); pm.addNestedPass(mlir::createCanonicalizerPass()); pm.addNestedPass(tosa::createTosaMakeBroadcastablePass());