[Mlir-commits] [mlir] [MLIR][Affine] Normalize memref.alloc ops with non trivial layout map (PR #129875)
Uday Bondhugula
llvmlistbot at llvm.org
Fri Apr 4 17:24:06 PDT 2025
================
@@ -1819,8 +1817,40 @@ LogicalResult mlir::affine::normalizeMemRef(AllocLikeOp *allocOp) {
b.create<AllocLikeOp>(allocOp->getLoc(), newMemRefType, newDynamicSizes,
allocOp->getAlignmentAttr());
} else {
- newAlloc = b.create<AllocLikeOp>(allocOp->getLoc(), newMemRefType,
- allocOp->getAlignmentAttr());
+ mlir::ValueRange dynamicSizes = allocOp->getDynamicSizes();
+ mlir::ValueRange symbolOperands = allocOp->getSymbolOperands();
+ ArrayRef<int64_t> newShape = newMemRefType.getShape();
+ ArrayRef<int64_t> oldShape = memrefType.getShape();
+ SmallVector<Value> mapOperands(oldShape.size() + symbolOperands.size());
+ SmallVector<Value> dimensionOperands;
+ unsigned dimId = 0, symId = 0;
+ // Collect all the map operands of `allocOp` (both dynamic sizes and symbol
+ // operands), which will help us to compute the dynamic sizes of the new
+ // alloc op we are going to create.
+ for (unsigned i = 0, e = oldShape.size(); i < e; i++) {
+ if (oldShape[i] == ShapedType::kDynamic)
----------------
bondhugula wrote:
Use isDynamicDim
https://github.com/llvm/llvm-project/pull/129875
More information about the Mlir-commits
mailing list