@@ -474,11 +474,6 @@ void addConvDecomposePassPipeline(OpPassManager &funcPassManager,
474
474
LinalgFoldUnitExtentDimsPassOptions opts;
475
475
opts.useRankReducingSlices = true ;
476
476
funcPassManager.addPass (mlir::createLinalgFoldUnitExtentDimsPass (opts));
477
-
478
- // Vectorization passes
479
- // FIXME(newling) https://github.com/nod-ai/iree-amd-aie/issues/820
480
- enableVectorizationPasses = false ;
481
- appendVectorizationToPipeline (funcPassManager, enableVectorizationPasses);
482
477
funcPassManager.addPass (createCanonicalizerPass ());
483
478
484
479
// Comprehensive bufferization
@@ -521,7 +516,8 @@ void buildAMDAIETransformPassPipeline(
521
516
enableVectorizationPasses);
522
517
} else if (useLowerToAIEPipeline == LowerToAIEPassPipeline::AIR) {
523
518
addMLIRAIRLoweringPasses (modulePassManager, device, useTilePipeline,
524
- matmulElementwiseFusion);
519
+ matmulElementwiseFusion,
520
+ enableVectorizationPasses);
525
521
} else {
526
522
assert (
527
523
false &&
@@ -567,6 +563,7 @@ void addAMDAIEObjectFifoLoweringPasses(OpPassManager &passManager,
567
563
{
568
564
// Vectorization passes
569
565
OpPassManager &funcPassManager = passManager.nest <func::FuncOp>();
566
+ // FIXME(newling) https://github.com/nod-ai/iree-amd-aie/issues/820
570
567
enableVectorizationPasses =
571
568
(useTilePipeline == TilePassPipeline::ConvDecomposePipeline)
572
569
? false
@@ -679,10 +676,21 @@ void addMLIRAIELoweringPasses(OpPassManager &pm) {
679
676
// for details.
680
677
void addMLIRAIRLoweringPasses (OpPassManager &passManager, AMDAIEDevice device,
681
678
TilePassPipeline useTilePipeline,
682
- bool matmulElementwiseFusion) {
679
+ bool matmulElementwiseFusion,
680
+ bool enableVectorizationPasses) {
683
681
// Add passes for preparing for lowering to MLIR-AIR
684
682
passManager.addPass (createEraseHALDescriptorTypeFromMemRefPass ());
685
683
passManager.addPass (memref::createFoldMemRefAliasOpsPass ());
684
+ {
685
+ // Vectorization passes
686
+ OpPassManager &funcPassManager = passManager.nest <func::FuncOp>();
687
+ // FIXME(newling) https://github.com/nod-ai/iree-amd-aie/issues/820
688
+ enableVectorizationPasses =
689
+ (useTilePipeline == TilePassPipeline::ConvDecomposePipeline)
690
+ ? false
691
+ : enableVectorizationPasses;
692
+ appendVectorizationToPipeline (funcPassManager, enableVectorizationPasses);
693
+ }
686
694
passManager.addPass (createAMDAIEBridgeToAIRPass ());
687
695
688
696
// Running canonicalization for all pipelines here results in failures.
@@ -847,8 +855,6 @@ void addMLIRAIRLoweringPasses(OpPassManager &passManager, AMDAIEDevice device,
847
855
addMLIRAIELoweringPasses (passManager);
848
856
}
849
857
850
-
851
-
852
858
// NOTE: this runs on the top-level program module containing all hal.executable
853
859
// ops.
854
860
void buildAMDAIELinkingPassPipeline (OpPassManager &passManager) {
0 commit comments