Skip to content

Commit b4f33b7

Browse files
committed
refactor: drop redundant reinterpret_cast in subview lowering
1 parent 956eb67 commit b4f33b7

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
@@ -1087,53 +1087,10 @@ struct PTOViewToMemrefPass
10871087
auto sv = rewriter.create<memref::SubViewOp>(
10881088
loc, subViewMemRefType, src, mixedOffsets, mixedSizes, mixedStrides);
10891089

1090-
// Reinterpret the subview base as a parent-shaped tile view.
1091-
// valid_row/valid_col (below) carries the actual sub-tile extent.
1092-
SmallVector<OpFoldResult> parentMixedSizes;
1093-
SmallVector<OpFoldResult> parentMixedStrides;
1094-
parentMixedSizes.reserve(parentShape.size());
1095-
parentMixedStrides.reserve(srcStrides.size());
1096-
1097-
memref::ExtractStridedMetadataOp srcMd;
1098-
bool needDynamicMeta = false;
1099-
for (size_t i = 0; i < parentShape.size(); ++i)
1100-
needDynamicMeta |= (parentShape[i] == ShapedType::kDynamic);
1101-
for (int64_t s : srcStrides)
1102-
needDynamicMeta |= (s == ShapedType::kDynamic);
1103-
if (needDynamicMeta)
1104-
srcMd = rewriter.create<memref::ExtractStridedMetadataOp>(loc, src);
1105-
1106-
for (size_t i = 0; i < parentShape.size(); ++i) {
1107-
if (parentShape[i] == ShapedType::kDynamic) {
1108-
if (!srcMd) {
1109-
op.emitError("failed to materialize dynamic parent size for subview");
1110-
signalPassFailure();
1111-
return;
1112-
}
1113-
parentMixedSizes.push_back(srcMd.getSizes()[i]);
1114-
} else {
1115-
parentMixedSizes.push_back(rewriter.getIndexAttr(parentShape[i]));
1116-
}
1117-
}
1118-
1119-
for (size_t i = 0; i < srcStrides.size(); ++i) {
1120-
if (srcStrides[i] == ShapedType::kDynamic) {
1121-
if (!srcMd) {
1122-
op.emitError("failed to materialize dynamic parent stride for subview");
1123-
signalPassFailure();
1124-
return;
1125-
}
1126-
parentMixedStrides.push_back(srcMd.getStrides()[i]);
1127-
} else {
1128-
parentMixedStrides.push_back(rewriter.getIndexAttr(srcStrides[i]));
1129-
}
1130-
}
1131-
1132-
auto subAsParent = rewriter.create<memref::ReinterpretCastOp>(
1133-
loc, resultMemRefType, sv.getResult(), rewriter.getIndexAttr(0),
1134-
parentMixedSizes, parentMixedStrides);
1135-
11361090
// 6. Re-bind tile metadata (config + valid dims).
1091+
// BindTileOp already models metadata rebind + memref type bridge,
1092+
// so we can bind subview directly and avoid an intermediate
1093+
// memref.reinterpret_cast.
11371094
// subview defaults valid dims to subview shape unless user explicitly
11381095
// provides valid_row/valid_col.
11391096
Value vRow;
@@ -1146,8 +1103,8 @@ struct PTOViewToMemrefPass
11461103
staticSizes[1], op);
11471104

11481105
auto bindOp = rewriter.create<pto::BindTileOp>(
1149-
loc, resultMemRefType, subAsParent.getResult(),
1150-
vRow ? vRow : Value(), vCol ? vCol : Value(), configAttr);
1106+
loc, resultMemRefType, sv.getResult(), vRow ? vRow : Value(),
1107+
vCol ? vCol : Value(), configAttr);
11511108
markForceDynamicValidShape(bindOp,
11521109
resultTileTy && resultTileTy.hasDynamicValid(),
11531110
ctx);

0 commit comments

Comments
 (0)