@@ -15,15 +15,13 @@ func.func @dealloc_deallocated_in_retained(%arg0: memref<2xi32>, %arg1: i1, %arg
15
15
// CHECK-LABEL: func @dealloc_deallocated_in_retained
16
16
// CHECK-SAME: ([[ARG0:%.+]]: memref<2xi32>, [[ARG1:%.+]]: i1, [[ARG2:%.+]]: memref<2xi32>, [[ARG3:%.+]]: i1)
17
17
// CHECK-NEXT: arith.constant false
18
- // CHECK-NEXT: bufferization.dealloc
19
18
// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[ARG2]] : memref<2xi32>) if ([[ARG1]]) retain ([[ARG0]] : memref<2xi32>)
20
19
// CHECK-NEXT: [[O1:%.+]] = arith.ori [[V1]], [[ARG1]]
21
20
// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[ARG0]] : memref<2xi32>) if ([[ARG1]]) retain ([[ARG0]], [[ARG2]] : memref<2xi32>, memref<2xi32>)
22
21
// COM: the RemoveRetainedMemrefsGuaranteedToNotAlias pattern removes all the
23
22
// COM: retained memrefs since the list of memrefs to be deallocated becomes empty
24
23
// COM: due to the pattern under test (and thus there is no memref the retain values
25
24
// COM: could alias to)
26
- // CHECK-NEXT: bufferization.dealloc
27
25
// CHECK-NOT: if
28
26
// CHECK-NEXT: [[V3:%.+]] = arith.ori [[ARG3]], [[ARG1]]
29
27
// CHECK-NEXT: [[V4:%.+]] = arith.ori [[ARG3]], [[ARG1]]
@@ -50,27 +48,25 @@ func.func @dealloc_deallocated_in_retained_extract_base_memref(%arg0: memref<2xi
50
48
// CHECK-NEXT: arith.constant false
51
49
// CHECK-NEXT: [[BASE0:%[a-zA-Z0-9_]+]]{{.*}} = memref.extract_strided_metadata [[ARG0]] :
52
50
// CHECK-NEXT: [[BASE1:%[a-zA-Z0-9_]+]]{{.*}} = memref.extract_strided_metadata [[ARG2]] :
53
- // CHECK-NEXT: bufferization.dealloc
54
51
// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[BASE1]] : memref<i32>) if ([[ARG1]]) retain ([[ARG0]] : memref<2xi32>)
55
52
// CHECK-NEXT: [[O1:%.+]] = arith.ori [[V1]], [[ARG1]]
56
53
// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[BASE0]] : memref<i32>) if ([[ARG1]]) retain ([[ARG0]], [[ARG2]] : memref<2xi32>, memref<2xi32>)
57
54
// COM: the RemoveRetainedMemrefsGuaranteedToNotAlias pattern removes all the
58
55
// COM: retained memrefs since the list of memrefs to be deallocated becomes empty
59
56
// COM: due to the pattern under test (and thus there is no memref the retain values
60
57
// COM: could alias to)
61
- // CHECK-NEXT: bufferization.dealloc
62
58
// CHECK-NOT: if
63
59
// CHECK-NEXT: [[V3:%.+]] = arith.ori [[ARG3]], [[ARG1]]
64
60
// CHECK-NEXT: [[V4:%.+]] = arith.ori [[ARG3]], [[ARG1]]
65
61
// CHECK-NEXT: return [[ARG1]], [[O1]], [[V2]]#0, [[V2]]#1, [[V3]], %false{{[0-9_]*}}, [[V4]] :
66
62
67
63
// -----
68
64
69
- func.func @remove_retained_memrefs_guarateed_to_not_alias (%arg0: i1 , %arg1: memref <2 xi32 >) -> (i1 , i1 ) {
65
+ func.func @remove_retained_memrefs_guarateed_to_not_alias (%arg0: i1 , %arg1: memref <2 xi32 >) -> (i1 , i1 , memref < 2 x i32 > ) {
70
66
%alloc = memref.alloc () : memref <2 xi32 >
71
67
%alloc0 = memref.alloc () : memref <2 xi32 >
72
68
%0:2 = bufferization.dealloc (%alloc : memref <2 xi32 >) if (%arg0 ) retain (%alloc0 , %arg1 : memref <2 xi32 >, memref <2 xi32 >)
73
- return %0#0 , %0#1 : i1 , i1
69
+ return %0#0 , %0#1 , %alloc : i1 , i1 , memref < 2 x i32 >
74
70
}
75
71
76
72
// CHECK-LABEL: func @remove_retained_memrefs_guarateed_to_not_alias
@@ -79,7 +75,7 @@ func.func @remove_retained_memrefs_guarateed_to_not_alias(%arg0: i1, %arg1: memr
79
75
// CHECK-NEXT: [[ALLOC:%.+]] = memref.alloc(
80
76
// CHECK-NEXT: bufferization.dealloc ([[ALLOC]] : memref<2xi32>) if ([[ARG0]])
81
77
// CHECK-NOT: retain
82
- // CHECK-NEXT: return [[FALSE]], [[FALSE]] :
78
+ // CHECK-NEXT: return [[FALSE]], [[FALSE]], [[ALLOC]] :
83
79
84
80
// -----
85
81
@@ -104,7 +100,6 @@ func.func @dealloc_split_when_no_other_aliasing(%arg0: i1, %arg1: memref<2xi32>,
104
100
// CHECK-NEXT: [[V1:%.+]] = bufferization.dealloc ([[ALLOC0]] : memref<2xi32>) if ([[ARG0]]) retain ([[V0]] : memref<2xi32>)
105
101
// CHECK-NEXT: [[V2:%.+]]:2 = bufferization.dealloc ([[ARG2]] : memref<2xi32>) if ([[ARG3]]) retain ([[ARG1]], [[V0]] : memref<2xi32>, memref<2xi32>)
106
102
// CHECK-NEXT: [[V3:%.+]] = arith.ori [[V1]], [[V2]]#1
107
- // CHECK-NEXT: bufferization.dealloc
108
103
// CHECK-NEXT: return [[V2]]#0, [[V3]] :
109
104
110
105
// -----
0 commit comments