Skip to content

Commit 97d67f7

Browse files
author
Tobias Gysi
committed
[mlir][linalg] Add vector transfer lowering patters to codegen strategy.
Add the vector transfer patterns and introduce the max transfer rank option on the codegen strategy. Reviewed By: nicolasvasilache Differential Revision: https://reviews.llvm.org/D111635
1 parent 67f94e5 commit 97d67f7

File tree

4 files changed

+10
-0
lines changed

4 files changed

+10
-0
lines changed

mlir/include/mlir/Dialect/Linalg/Transforms/CodegenStrategy.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,10 @@ struct CodegenStrategy {
224224
.enableHoistRedundantVectorTransfersOnTensor = val;
225225
return *this;
226226
}
227+
CodegenStrategy &setMaxTransferRank(int64_t val) {
228+
this->lateCodegenStrategyOptions.maxTransferRank = val;
229+
return *this;
230+
}
227231
CodegenStrategy &setEnableVectorTransferPartialRewrite(bool val) {
228232
this->lateCodegenStrategyOptions.enableVectorTransferPartialRewrite = val;
229233
return *this;

mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -835,6 +835,7 @@ struct LateCodegenStrategyOptions {
835835
bool enableHoistRedundantVectorTransfersOnTensor = true;
836836
/// Vector lowering operations may result in surprising behavior when
837837
/// composing multiple codegen strategies and must be enabled explicitly.
838+
int64_t maxTransferRank = 1;
838839
bool enableVectorTransferPartialRewrite = false;
839840
bool enableVectorContractLowering = false;
840841
bool enableVectorToSCFConversion = false;
@@ -852,6 +853,7 @@ struct LinalgEnablingOptions {
852853
/// Vector lowering options control how ops are lowered down to 1-D and scf.for
853854
/// form.
854855
struct LinalgVectorLoweringOptions {
856+
int64_t maxTransferRank = 1;
855857
bool enableVectorTransferPartialRewrite = false;
856858
bool enableVectorContractLowering = false;
857859
bool enableVectorToSCFConversion = false;

mlir/lib/Dialect/Linalg/Transforms/CodegenStrategy.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ void mlir::linalg::CodegenStrategy::configurePassPipeline(
4747
pm.addPass(createLinalgStrategyEnablePass());
4848
}
4949
LinalgVectorLoweringOptions vectorLoweringOptions;
50+
vectorLoweringOptions.maxTransferRank =
51+
lateCodegenStrategyOptions.maxTransferRank;
5052
vectorLoweringOptions.enableVectorTransferPartialRewrite =
5153
lateCodegenStrategyOptions.enableVectorTransferPartialRewrite;
5254
vectorLoweringOptions.enableVectorContractLowering =

mlir/lib/Dialect/Linalg/Transforms/LinalgStrategyPasses.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,8 @@ struct LinalgStrategyLowerVectorsPass
260260

261261
MLIRContext *context = funcOp.getContext();
262262
RewritePatternSet patterns(context);
263+
vector::populateVectorTransferLoweringPatterns(patterns,
264+
options.maxTransferRank);
263265
if (options.enableVectorTransferPartialRewrite) {
264266
patterns.add<vector::VectorTransferFullPartialRewriter>(
265267
context, options.vectorTransformOptions);

0 commit comments

Comments
 (0)