diff --git a/compiler/src/iree/compiler/DispatchCreation/Passes.cpp b/compiler/src/iree/compiler/DispatchCreation/Passes.cpp index afee21cbbcd8..9cf5732962fd 100644 --- a/compiler/src/iree/compiler/DispatchCreation/Passes.cpp +++ b/compiler/src/iree/compiler/DispatchCreation/Passes.cpp @@ -127,9 +127,12 @@ static void addCleanupPatterns(OpPassManager &passManager) { //===----------------------------------------------------------------------===// void addDispatchRegionCreationPreprocessingPasses(OpPassManager &passManager) { - // 1. Do some simple elementwise op fusion. This could be skipped, - // but could reduce the surface area of ops to handle later. FunctionLikeNest(passManager) + .addPass(IREE::Flow::createCanonicalizerPass) + .addPass(mlir::createCSEPass) + .addPass(DispatchCreation::createFusionPreprocessingPass) + // 1. Do some simple elementwise op fusion. This could be skipped, + // but could reduce the surface area of ops to handle later. .addPass([]() { return DispatchCreation::createElementwiseOpFusionPass( ElementwiseOpFusionPassOptions{ @@ -148,6 +151,7 @@ void addDispatchRegionCreationPreprocessingPasses(OpPassManager &passManager) { // 3. Perform elementwise operation fusion again (now with higher // dimensionality). + .addPass(DispatchCreation::createFusionPreprocessingPass) .addPass([]() { return DispatchCreation::createElementwiseOpFusionPass( ElementwiseOpFusionPassOptions{ @@ -294,12 +298,6 @@ void buildDispatchCreationPassPipeline( IREE::Util::createFixedPointIteratorPass(std::move(ipoPipeline))); } - FunctionLikeNest(passManager) - // Preprocess the input to a form more amenable for fusion. - .addPass(DispatchCreation::createFusionPreprocessingPass) - .addPass(IREE::Flow::createCanonicalizerPass) - .addPass(mlir::createCSEPass); - addDispatchRegionCreationPreprocessingPasses(passManager); addDispatchRegionCreationPasses(passManager);