Skip to content

Commit fc1275e

Browse files
committed
First commit.
1 parent 34f3466 commit fc1275e

File tree

4 files changed

+21
-0
lines changed

4 files changed

+21
-0
lines changed

mlir/include/mlir/Dialect/MemRef/Transforms/Passes.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,10 @@ std::unique_ptr<Pass> createExpandStridedMetadataPass();
7777
/// components.
7878
std::unique_ptr<Pass> createExpandReallocPass(bool emitDeallocs = true);
7979

80+
/// Creates an operation pass to flatten multiple dimensional memrefs into
81+
/// 1-d memrefs.
82+
std::unique_ptr<Pass> createFlattenMemrefsPass();
83+
8084
//===----------------------------------------------------------------------===//
8185
// Registration
8286
//===----------------------------------------------------------------------===//

mlir/include/mlir/Dialect/MemRef/Transforms/Passes.td

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,5 +253,17 @@ def ExpandRealloc : Pass<"expand-realloc"> {
253253
];
254254
}
255255

256+
def FlattenMemrefsPass : Pass<"flatten-memref"> {
257+
let summary = "Flatten a multiple dimensional memref to 1-dimensional";
258+
let description = [{
259+
260+
}];
261+
262+
let constructor = "mlir::memref::createFlattenMemrefsPass()";
263+
let dependentDialects = [
264+
"affine::AffineDialect", "memref::MemRefDialect", "vector::VectorDialect"
265+
];
266+
}
267+
256268
#endif // MLIR_DIALECT_MEMREF_TRANSFORMS_PASSES
257269

mlir/include/mlir/Dialect/MemRef/Transforms/Transforms.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,9 @@ FailureOr<memref::AllocOp> multiBuffer(memref::AllocOp allocOp,
144144
/// ```
145145
void populateExtractAddressComputationsPatterns(RewritePatternSet &patterns);
146146

147+
148+
void populateFlattenMemrefsPatterns(RewritePatternSet &patterns);
149+
147150
/// Build a new memref::AllocaOp whose dynamic sizes are independent of all
148151
/// given independencies. If the op is already independent of all
149152
/// independencies, the same AllocaOp result is returned.

mlir/lib/Dialect/MemRef/Transforms/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ add_mlir_dialect_library(MLIRMemRefTransforms
88
EmulateWideInt.cpp
99
EmulateNarrowType.cpp
1010
ExtractAddressComputations.cpp
11+
FlattenMemRefs.cpp
1112
FoldMemRefAliasOps.cpp
1213
IndependenceTransforms.cpp
1314
MultiBuffer.cpp
@@ -23,6 +24,7 @@ add_mlir_dialect_library(MLIRMemRefTransforms
2324

2425
LINK_LIBS PUBLIC
2526
MLIRAffineTransforms
27+
MLIRAffineDialect
2628
MLIRAffineUtils
2729
MLIRArithDialect
2830
MLIRArithTransforms

0 commit comments

Comments
 (0)