Skip to content

Commit 69352c9

Browse files
author
Kavitha Madhu
committed
Pass options in Default pipeline
1 parent ce5940f commit 69352c9

File tree

5 files changed

+29
-19
lines changed

5 files changed

+29
-19
lines changed

include/TPP/PassBundles.td

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,7 @@ def DefaultTppPasses : Pass<"default-tpp-passes", "ModuleOp"> {
3737
"unsigned", "Grid-sizes for parallel tasks.">,
3838
Option<"linalgToVector", "linalg-to-vector",
3939
"bool", /*default=*/"true",
40-
"Lower linalg directly to vector.">,
41-
Option<"vectorToXsmm", "vector-to-xsmm",
42-
"bool", /*default=*/"true",
43-
"Lower vector to xsmm.">
40+
"Lower linalg directly to vector.">
4441
];
4542
}
4643

lib/TPP/DefaultPipeline.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ llvm::cl::list<unsigned>
5353
llvm::cl::list_init<unsigned>(SmallVector<unsigned>{2, 8}),
5454
llvm::cl::CommaSeparated);
5555

56+
llvm::cl::opt<bool> linalgToVector("linalg-to-vector",
57+
llvm::cl::desc("Lower linalg to vector"),
58+
llvm::cl::init(false));
59+
5660
namespace mlir {
5761
namespace tpp {
5862
#define GEN_PASS_DEF_DEFAULTPIPELINE
@@ -124,8 +128,8 @@ struct DefaultPipeline : public tpp::impl::DefaultPipelineBase<DefaultPipeline>,
124128
pm.addPass(createGpuPipeline(GpuPipelineOptions{gpuBackend}));
125129
} else {
126130
// Apply the default preprocessing pass
127-
DefaultTppPassesOptions tppDefaultOptions{linalgToLoops,
128-
parallelTaskGrid};
131+
DefaultTppPassesOptions tppDefaultOptions{linalgToLoops, parallelTaskGrid,
132+
linalgToVector};
129133
pm.addPass(createDefaultTppPasses(tppDefaultOptions));
130134
}
131135

lib/TPP/DefaultTppPasses.cpp

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
#include "TPP/Dialect/Perf/PerfDialect.h"
2222
#include "TPP/Dialect/Xsmm/XsmmDialect.h"
2323
#include "TPP/PassUtils.h"
24+
#include "mlir/Transforms/Passes.h"
2425

2526
using namespace mlir;
2627
using namespace mlir::tpp;
@@ -97,8 +98,14 @@ struct DefaultTppPasses
9798
// Bufferize: tensor->memref.
9899
pm.addPass(createBufferize());
99100

100-
// Lower all Tile operations.
101-
pm.addNestedPass<func::FuncOp>(createLinalgLowering());
101+
if (linalgToVector) {
102+
pm.addNestedPass<func::FuncOp>(createVectorizationPass());
103+
pm.addNestedPass<func::FuncOp>(createVectorContractPass());
104+
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
105+
} else {
106+
// Lower all Tile operations.
107+
pm.addNestedPass<func::FuncOp>(createLinalgLowering());
108+
}
102109
pm.addPass(createCleanup());
103110
}
104111

@@ -109,10 +116,18 @@ struct DefaultTppPasses
109116
// Low leve parallelization passes.
110117
LowLevelParallelizationOptions LowLevelParallelization{parallelTaskGrid};
111118
pm.addPass(createLowLevelParallelization(LowLevelParallelization));
112-
113-
// Covert all local TPP-related dialects.
114-
pm.addPass(createLocalDialectsLowering());
115-
119+
if (linalgToVector) {
120+
pm.addPass(createConvertVectorToSCFPass());
121+
} else {
122+
// Covert all local TPP-related dialects.
123+
pm.addPass(createLocalDialectsLowering());
124+
125+
pm.addNestedPass<func::FuncOp>(createIntelAMXTileConfigInsertionPass());
126+
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
127+
pm.addNestedPass<func::FuncOp>(createLoopInvariantCodeMotionPass());
128+
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
129+
pm.addNestedPass<func::FuncOp>(createIntelAMXTileConfigHoistingPass());
130+
}
116131
// Clean up after the default pipeline.
117132
pm.addNestedPass<func::FuncOp>(createPostprocessing());
118133
}

lib/TPP/PassBundles/LowLevelParallelization.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,5 @@ struct LowLevelParallelization
6565
mlir::tpp::SCFParallelLoopTilingOptions tilingOptions;
6666
tilingOptions.tileSizes = parallelTaskGrid;
6767
pm.addPass(createSCFParallelLoopTiling(tilingOptions));
68-
69-
pm.addNestedPass<func::FuncOp>(createIntelAMXTileConfigInsertionPass());
70-
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
71-
pm.addNestedPass<func::FuncOp>(createLoopInvariantCodeMotionPass());
72-
pm.addNestedPass<func::FuncOp>(createCanonicalizerPass());
73-
pm.addNestedPass<func::FuncOp>(createIntelAMXTileConfigHoistingPass());
7468
}
7569
};

lib/TPP/Transforms/Vectorization.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ struct LinalgGenericToVector : OpRewritePattern<linalg::GenericOp> {
4444
SmallVector<int64_t> shape;
4545
SmallVector<ReassociationIndices> indices;
4646
int index = 0;
47-
for (int i = 0; i < dyn_cast<ShapedType>(linalgOp.getOperand(0).getType())
47+
for (size_t i = 0; i < dyn_cast<ShapedType>(linalgOp.getOperand(0).getType())
4848
.getShape()
4949
.size();
5050
i++) {

0 commit comments

Comments
 (0)