[Mlir-commits] [mlir] [mlir][bufferization] Empty tensor elimination for materialize_in_destination (PR #65468)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Wed Sep 6 14:24:16 PDT 2023
================
@@ -158,3 +158,31 @@ func.func @bbarg_of_unknown_op_2(%f: f32) {
// CHECK: {__inplace_operands_attr__ = ["false"]} : (tensor<10xf32>) -> ()
return
}
+
+// -----
+
+// CHECK: func @materialize_in_destination_aliasing(
+func.func @materialize_in_destination_aliasing(%t: tensor<?xf32>, %p1: index, %p2: index, %sz: index) -> tensor<5xf32> {
+ %buffer = tensor.empty(%sz) : tensor<?xf32>
+ // CHECK: tensor.extract_slice
+ // CHECK-SAME: {__inplace_operands_attr__ = ["true", "none"]}
+ %src = tensor.extract_slice %t[%p1][5][1] : tensor<?xf32> to tensor<5xf32>
+ // CHECK: tensor.extract_slice
+ // CHECK-SAME: {__inplace_operands_attr__ = ["false", "none"]}
+ %dest = tensor.extract_slice %t[%p2][5][1] : tensor<?xf32> to tensor<5xf32>
+ // CHECK: bufferization.materialize_in_destination
+ // CHECK-SAME: {__inplace_operands_attr__ = ["true", "true"]}
+ %r = bufferization.materialize_in_destination %src in %dest : tensor<5xf32>
+ return %r : tensor<5xf32>
+}
+
+// -----
+
+// CHECK: func @materialize_in_destination(
+func.func @materialize_in_destination(%t: tensor<?xf32>, %sz: index) -> tensor<?xf32> {
+ %buffer = tensor.empty(%sz) : tensor<?xf32>
+ // CHECK: bufferization.materialize_in_destination
+ // CHECK-SAME: {__inplace_operands_attr__ = ["true", "true"]}
+ %r = bufferization.materialize_in_destination %buffer in %buffer : tensor<?xf32>
----------------
srcarroll wrote:
I might be missing the point of this test, but why is `%buffer` both src and dst here?
https://github.com/llvm/llvm-project/pull/65468
More information about the Mlir-commits
mailing list