1
1
// RUN: polygeist-opt --canonicalize --split-input-file %s -allow-unregistered-dialect | FileCheck %s
2
2
3
3
module {
4
+ func.func private @print3 (i32 , i32 , i32 ) -> ()
5
+ func.func private @print1 (i32 ) -> ()
4
6
func.func private @run (%c: i32 , %rng : index ) -> memref <?xi32 > {
5
7
%c0 = arith.constant 0 : index
6
8
%c1 = arith.constant 1 : index
@@ -14,7 +16,7 @@ module {
14
16
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
15
17
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
16
18
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
17
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
19
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
18
20
}
19
21
affine.store %c , %prev [0 ] : memref <?xi32 >
20
22
return %prev : memref <?xi32 >
@@ -26,7 +28,7 @@ module {
26
28
// CHECK-NEXT: %[[i1:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 1] : memref<?xi32>
27
29
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 4] : memref<?xi32>
28
30
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 11] : memref<?xi32>
29
- // CHECK-NEXT: "test.use" (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
31
+ // CHECK-NEXT: func.call @print3 (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
30
32
// CHECK-NEXT: }
31
33
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
32
34
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -45,11 +47,11 @@ module {
45
47
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
46
48
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
47
49
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
48
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
50
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
49
51
}
50
52
affine.store %c , %prev [0 ] : memref <?xi32 >
51
53
%v = affine.load %tmp [3 , 4 ] : memref <16 x16 xi32 >
52
- " test.use " (%v ) : (i32 ) -> ()
54
+ func.call @print1 (%v ) : (i32 ) -> ()
53
55
return %prev : memref <?xi32 >
54
56
}
55
57
@@ -64,11 +66,11 @@ module {
64
66
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 1] : memref<?xi32>
65
67
// CHECK-NEXT: %[[i4:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 4] : memref<?xi32>
66
68
// CHECK-NEXT: %[[i5:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 11] : memref<?xi32>
67
- // CHECK-NEXT: "test.use" (%[[i3]], %[[i4]], %[[i5]]) : (i32, i32, i32) -> ()
69
+ // CHECK-NEXT: func.call @print3 (%[[i3]], %[[i4]], %[[i5]]) : (i32, i32, i32) -> ()
68
70
// CHECK-NEXT: }
69
71
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
70
72
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i1]][3, 4] : memref<16x16xi32>
71
- // CHECK-NEXT: "test.use" (%[[i2]]) : (i32) -> ()
73
+ // CHECK-NEXT: call @print1 (%[[i2]]) : (i32) -> ()
72
74
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
73
75
// CHECK-NEXT: }
74
76
@@ -87,7 +89,7 @@ module {
87
89
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
88
90
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
89
91
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
90
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
92
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
91
93
}
92
94
affine.store %c , %prev [0 ] : memref <?xi32 >
93
95
return %prev : memref <?xi32 >
@@ -99,7 +101,7 @@ module {
99
101
// CHECK-NEXT: %[[i1:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 1] : memref<?xi32>
100
102
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 4] : memref<?xi32>
101
103
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i0]][%arg3 * 3 + %arg2 * 10 + 11] : memref<?xi32>
102
- // CHECK-NEXT: "test.use" (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
104
+ // CHECK-NEXT: func.call @print3 (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
103
105
// CHECK-NEXT: }
104
106
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
105
107
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -120,7 +122,7 @@ module {
120
122
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
121
123
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
122
124
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
123
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
125
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
124
126
}
125
127
affine.store %c , %prev [0 ] : memref <?xi32 >
126
128
return %prev : memref <?xi32 >
@@ -139,7 +141,7 @@ module {
139
141
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i1:.+]][%arg2, %arg3] : memref<16x16xi32>
140
142
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i1:.+]][%arg2, %arg3 + 1] : memref<16x16xi32>
141
143
// CHECK-NEXT: %[[i4:.+]] = affine.load %[[i1:.+]][%arg2 + 1, %arg3] : memref<16x16xi32>
142
- // CHECK-NEXT: "test.use" (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
144
+ // CHECK-NEXT: func.call @print3 (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
143
145
// CHECK-NEXT: }
144
146
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
145
147
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -162,7 +164,7 @@ module {
162
164
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
163
165
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
164
166
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
165
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
167
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
166
168
}
167
169
affine.store %c , %prev [0 ] : memref <?xi32 >
168
170
return %prev : memref <?xi32 >
@@ -183,7 +185,7 @@ module {
183
185
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i1:.+]][%arg3, %arg4] : memref<16x16xi32>
184
186
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i1:.+]][%arg3, %arg4 + 1] : memref<16x16xi32>
185
187
// CHECK-NEXT: %[[i4:.+]] = affine.load %[[i1:.+]][%arg3 + 1, %arg4] : memref<16x16xi32>
186
- // CHECK-NEXT: "test.use" (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
188
+ // CHECK-NEXT: func.call @print3 (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
187
189
// CHECK-NEXT: }
188
190
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
189
191
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -206,7 +208,7 @@ module {
206
208
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
207
209
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
208
210
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
209
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
211
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
210
212
}
211
213
affine.store %c , %prev [0 ] : memref <?xi32 >
212
214
return %prev : memref <?xi32 >
@@ -218,7 +220,7 @@ module {
218
220
// CHECK-NEXT: %[[i1:.+]] = affine.load %[[i0:.+]][%arg4 * 3 + %arg3 * 10 + 1] : memref<?xi32>
219
221
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i0:.+]][%arg4 * 3 + %arg3 * 10 + 4] : memref<?xi32>
220
222
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i0:.+]][%arg4 * 3 + %arg3 * 10 + 11] : memref<?xi32>
221
- // CHECK-NEXT: "test.use" (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
223
+ // CHECK-NEXT: func.call @print3 (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
222
224
// CHECK-NEXT: }
223
225
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
224
226
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -241,7 +243,7 @@ module {
241
243
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
242
244
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
243
245
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
244
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
246
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
245
247
}
246
248
affine.store %c , %prev [0 ] : memref <?xi32 >
247
249
return %prev : memref <?xi32 >
@@ -262,7 +264,7 @@ module {
262
264
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i1]][%arg3, %arg4] : memref<16x16xi32>
263
265
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i1]][%arg3, %arg4 + 1] : memref<16x16xi32>
264
266
// CHECK-NEXT: %[[i4:.+]] = affine.load %[[i1]][%arg3 + 1, %arg4] : memref<16x16xi32>
265
- // CHECK-NEXT: "test.use" (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
267
+ // CHECK-NEXT: call @print3 (%[[i2]], %[[i3]], %[[i4]]) : (i32, i32, i32) -> ()
266
268
// CHECK-NEXT: }
267
269
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
268
270
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
@@ -283,7 +285,7 @@ module {
283
285
%v = affine.load %tmp [%arg4 , %arg5 ] : memref <16 x16 xi32 >
284
286
%v2 = affine.load %tmp [%arg4 , 1 + %arg5 ] : memref <16 x16 xi32 >
285
287
%v3 = affine.load %tmp [1 + %arg4 , %arg5 ] : memref <16 x16 xi32 >
286
- " test.use " (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
288
+ func.call @print3 (%v , %v2 , %v3 ) : (i32 , i32 , i32 ) -> ()
287
289
}
288
290
affine.store %c , %prev [0 ] : memref <?xi32 >
289
291
return %prev : memref <?xi32 >
@@ -295,7 +297,7 @@ module {
295
297
// CHECK-NEXT: %[[i1:.+]] = affine.load %[[i0]][%arg5 * 3 + %arg4 * 10 + symbol(%arg3)] : memref<?xi32>
296
298
// CHECK-NEXT: %[[i2:.+]] = affine.load %[[i0]][%arg5 * 3 + %arg4 * 10 + symbol(%arg3) + 3] : memref<?xi32>
297
299
// CHECK-NEXT: %[[i3:.+]] = affine.load %[[i0]][%arg5 * 3 + %arg4 * 10 + symbol(%arg3) + 10] : memref<?xi32>
298
- // CHECK-NEXT: "test.use" (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
300
+ // CHECK-NEXT: func.call @print3 (%[[i1]], %[[i2]], %[[i3]]) : (i32, i32, i32) -> ()
299
301
// CHECK-NEXT: }
300
302
// CHECK-NEXT: affine.store %arg0, %[[i0]][0] : memref<?xi32>
301
303
// CHECK-NEXT: return %[[i0]] : memref<?xi32>
0 commit comments