[Mlir-commits] [mlir] [mlir][tensor] Apply `InsertSliceOfTransferWriteOpFolder` only when `transfer_write` overwrites all elements of `insert_slice` (PR #108803)
Benjamin Maxwell
llvmlistbot at llvm.org
Wed Sep 18 05:02:41 PDT 2024
================
@@ -154,6 +166,25 @@ LogicalResult InsertSliceOfTransferWriteOpFolder::matchAndRewrite(
return success();
}
+bool InsertSliceOfTransferWriteOpFolder::doesTransferWriteCoverInsertSlice(
+ vector::TransferWriteOp writeOp, tensor::InsertSliceOp insertSliceOp,
+ MLIRContext *context) {
+ auto destType = cast<ShapedType>(writeOp.getOperand(0).getType());
+ auto insertSliceType = insertSliceOp.getSourceType();
+
+ if (destType.hasStaticShape() && insertSliceType.hasStaticShape()) {
+ for (int64_t d = 0, e = insertSliceType.getRank(); d < e; ++d) {
+ if (destType.getDimSize(d) != insertSliceType.getDimSize(d))
+ return false;
+ }
+ return true;
+ }
+
+ // Todo: ValueBoundsConstraintSet for dynamic shapes.
+
+ return true;
----------------
MacDue wrote:
Shouldn't this return `false` if it can't prove it's safe?
https://github.com/llvm/llvm-project/pull/108803
More information about the Mlir-commits
mailing list