Skip to content

Commit dec6fa0

Browse files
committed
refactor: drop redundant reinterpret_cast in subview lowering
1 parent c5981b1 commit dec6fa0

1 file changed

Lines changed: 5 additions & 48 deletions

File tree

lib/PTO/Transforms/PTOViewToMemref.cpp

Lines changed: 5 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1153,53 +1153,10 @@ struct PTOViewToMemrefPass
11531153
auto sv = rewriter.create<memref::SubViewOp>(
11541154
loc, subViewMemRefType, src, mixedOffsets, mixedSizes, mixedStrides);
11551155

1156-
// Reinterpret the subview base as a parent-shaped tile view.
1157-
// valid_row/valid_col (below) carries the actual sub-tile extent.
1158-
SmallVector<OpFoldResult> parentMixedSizes;
1159-
SmallVector<OpFoldResult> parentMixedStrides;
1160-
parentMixedSizes.reserve(parentShape.size());
1161-
parentMixedStrides.reserve(srcStrides.size());
1162-
1163-
memref::ExtractStridedMetadataOp srcMd;
1164-
bool needDynamicMeta = false;
1165-
for (size_t i = 0; i < parentShape.size(); ++i)
1166-
needDynamicMeta |= (parentShape[i] == ShapedType::kDynamic);
1167-
for (int64_t s : srcStrides)
1168-
needDynamicMeta |= (s == ShapedType::kDynamic);
1169-
if (needDynamicMeta)
1170-
srcMd = rewriter.create<memref::ExtractStridedMetadataOp>(loc, src);
1171-
1172-
for (size_t i = 0; i < parentShape.size(); ++i) {
1173-
if (parentShape[i] == ShapedType::kDynamic) {
1174-
if (!srcMd) {
1175-
op.emitError("failed to materialize dynamic parent size for subview");
1176-
signalPassFailure();
1177-
return;
1178-
}
1179-
parentMixedSizes.push_back(srcMd.getSizes()[i]);
1180-
} else {
1181-
parentMixedSizes.push_back(rewriter.getIndexAttr(parentShape[i]));
1182-
}
1183-
}
1184-
1185-
for (size_t i = 0; i < srcStrides.size(); ++i) {
1186-
if (srcStrides[i] == ShapedType::kDynamic) {
1187-
if (!srcMd) {
1188-
op.emitError("failed to materialize dynamic parent stride for subview");
1189-
signalPassFailure();
1190-
return;
1191-
}
1192-
parentMixedStrides.push_back(srcMd.getStrides()[i]);
1193-
} else {
1194-
parentMixedStrides.push_back(rewriter.getIndexAttr(srcStrides[i]));
1195-
}
1196-
}
1197-
1198-
auto subAsParent = rewriter.create<memref::ReinterpretCastOp>(
1199-
loc, resultMemRefType, sv.getResult(), rewriter.getIndexAttr(0),
1200-
parentMixedSizes, parentMixedStrides);
1201-
12021156
// 6. Re-bind tile metadata (config + valid dims).
1157+
// BindTileOp already models metadata rebind + memref type bridge,
1158+
// so we can bind subview directly and avoid an intermediate
1159+
// memref.reinterpret_cast.
12031160
// subview defaults valid dims to subview shape unless user explicitly
12041161
// provides valid_row/valid_col.
12051162
Value vRow;
@@ -1212,8 +1169,8 @@ struct PTOViewToMemrefPass
12121169
staticSizes[1], op);
12131170

12141171
auto bindOp = rewriter.create<pto::BindTileOp>(
1215-
loc, resultMemRefType, subAsParent.getResult(),
1216-
vRow ? vRow : Value(), vCol ? vCol : Value(), configAttr);
1172+
loc, resultMemRefType, sv.getResult(), vRow ? vRow : Value(),
1173+
vCol ? vCol : Value(), configAttr);
12171174
markForceDynamicValidShape(bindOp,
12181175
resultTileTy && resultTileTy.hasDynamicValid(),
12191176
ctx);

0 commit comments

Comments
 (0)