[GlobalOpt] Centralize data-tiling options under an if-statement. (#15537)
Also add canonicalier and cse passes after IPO. It introduces
arith.constant ops that can be folded into constant attributes for some
ops.
diff --git a/compiler/src/iree/compiler/GlobalOptimization/Passes.cpp b/compiler/src/iree/compiler/GlobalOptimization/Passes.cpp
index f56b0c3..850c683 100644
--- a/compiler/src/iree/compiler/GlobalOptimization/Passes.cpp
+++ b/compiler/src/iree/compiler/GlobalOptimization/Passes.cpp
@@ -79,16 +79,17 @@
clEnableQuantizedMatmulReassociation);
})
.addPass(mlir::createCanonicalizerPass)
- .addPass(mlir::createCSEPass)
- // Expand all vectors in vecmat/matvec ops into matrices for tiling.
- .addPredicatedPass(transformOptions.options.dataTiling,
- createExpandVectorsPass)
- // Enable data tiling after they are in a canonical form.
- .addPredicatedPass(transformOptions.options.dataTiling,
- createSetEncodingPass)
- .addPass(mlir::createCanonicalizerPass)
.addPass(mlir::createCSEPass);
- mainPassManager.addPass(createMaterializeHomogeneousEncodingsPass());
+
+ // Enable data tiling after they are in a canonical form.
+ if (transformOptions.options.dataTiling) {
+ // Expand all vectors in vecmat/matvec ops into matrices for tiling.
+ mainPassManager.addPass(createExpandVectorsPass());
+ mainPassManager.addPass(createSetEncodingPass());
+ mainPassManager.addPass(createMaterializeHomogeneousEncodingsPass());
+ mainPassManager.addPass(createCanonicalizerPass());
+ mainPassManager.addPass(createCSEPass());
+ }
OpPassManager pipeline(ModuleOp::getOperationName());
FunctionLikeNest(pipeline)
@@ -101,6 +102,8 @@
pipeline.addPass(IREE::Util::createApplyPatternsPass());
pipeline.addPass(IREE::Util::createFoldGlobalsPass());
pipeline.addPass(IREE::Util::createIPOPass());
+ pipeline.addPass(createCanonicalizerPass());
+ pipeline.addPass(createCSEPass());
if (transformOptions.options.constExprHoisting) {
pipeline.addPass(IREE::Util::createHoistIntoGlobalsPass(