Adds a flag to optionally disable tosa decompositions
authornot-jenni <jennik@google.com>
Mon, 28 Feb 2022 23:30:13 +0000 (15:30 -0800)
committerRob Suderman <rob.suderman@gmail.com>
Mon, 28 Feb 2022 23:41:13 +0000 (15:41 -0800)
Reviewed By: rsuderman

Differential Revision: https://reviews.llvm.org/D120338

mlir/include/mlir/Conversion/TosaToLinalg/TosaToLinalg.h
mlir/lib/Conversion/TosaToLinalg/TosaToLinalgPass.cpp

index ec44d01..fc7fd37 100644 (file)
@@ -24,8 +24,10 @@ std::unique_ptr<Pass> createTosaToLinalgNamed();
 
 /// 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);
index 55b6726..583ea05 100644 (file)
@@ -67,9 +67,11 @@ std::unique_ptr<Pass> mlir::tosa::createTosaToLinalg() {
   return std::make_unique<TosaToLinalg>();
 }
 
-void mlir::tosa::addTosaToLinalgPasses(OpPassManager &pm) {
+void mlir::tosa::addTosaToLinalgPasses(OpPassManager &pm,
+                                       bool disableTosaDecompositions) {
   // Optional decompositions are designed to benefit linalg.
-  pm.addNestedPass<FuncOp>(mlir::tosa::createTosaOptionalDecompositions());
+  if (!disableTosaDecompositions)
+    pm.addNestedPass<FuncOp>(mlir::tosa::createTosaOptionalDecompositions());
   pm.addNestedPass<FuncOp>(mlir::createCanonicalizerPass());
 
   pm.addNestedPass<FuncOp>(tosa::createTosaMakeBroadcastablePass());