xref: /llvm-project/mlir/test/Dialect/Bufferization/inlining.mlir (revision d5825621885d2230044cac669e003ce205ab0f12)
1// RUN: mlir-opt %s -inline | FileCheck %s
2
3// CHECK-LABEL: func @test_inline
4// CHECK-SAME: (%[[ARG:.*]]: memref<*xf32>)
5// CHECK-NOT: call
6// CHECK: %[[RES:.*]] = bufferization.clone %[[ARG]]
7// CHECK: bufferization.dealloc
8// CHECK: return %[[RES]]
9func.func @test_inline(%buf : memref<*xf32>) -> (memref<*xf32>, i1) {
10  %0:2 = call @inner_func(%buf) : (memref<*xf32>) -> (memref<*xf32>, i1)
11  return %0#0, %0#1 : memref<*xf32>, i1
12}
13
14func.func @inner_func(%buf : memref<*xf32>) -> (memref<*xf32>, i1) {
15  %true = arith.constant true
16  %clone = bufferization.clone %buf : memref<*xf32> to memref<*xf32>
17  %0 = bufferization.dealloc (%buf : memref<*xf32>) if (%true) retain (%clone : memref<*xf32>)
18  return %clone, %0 : memref<*xf32>, i1
19}
20