Skip to content

Commit 672edc9

Browse files
authored
Lower SLM to XeGPU (#409)
Signed-off-by: dchigarev <[email protected]>
1 parent ddc3dd3 commit 672edc9

File tree

6 files changed

+719
-91
lines changed

6 files changed

+719
-91
lines changed

include/gc/Transforms/Utils/ValueUtils.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,26 @@ FailureOr<SmallVector<int64_t>> getStaticStrides(Value val);
3333
// is not a memref.
3434
std::pair<Value, Value> getPtrAndOffset(OpBuilder &builder, Value operand);
3535

36+
// Create a 'mlir::vector' constant from a list of values.
37+
template <typename T>
38+
Value createTypedVector(PatternRewriter &rewriter, Location loc,
39+
ArrayRef<T> values, Type elementType) {
40+
mlir::VectorType vectorType =
41+
mlir::VectorType::get({static_cast<int64_t>(values.size())}, elementType);
42+
mlir::DenseElementsAttr denseAttr =
43+
mlir::DenseElementsAttr::get(vectorType, values);
44+
auto vector =
45+
rewriter.create<mlir::arith::ConstantOp>(loc, vectorType, denseAttr)
46+
.getResult();
47+
return vector;
48+
}
49+
50+
// Flatten a 2D memref to a 1D memref.
51+
Value flattenMemref(PatternRewriter &rewriter, Location loc, Value srcMemref);
52+
53+
// Return true if the memref has shared memory space.
54+
bool hasSharedMemSpace(mlir::Value memref);
55+
3656
} // namespace utils
3757
} // namespace mlir
3858

0 commit comments

Comments
 (0)