@@ -229,3 +229,122 @@ func.func @store_with_a_region_after_containing_a_store(%arg0: memref<f32>) -> m
229
229
memref.store %1 , %arg0 [] {tag_name = " post" } : memref <f32 >
230
230
return {tag = " return" } %arg0 : memref <f32 >
231
231
}
232
+
233
+ // CHECK-LABEL: test_tag: store_with_a_loop_region_before::before:
234
+ // CHECK: operand #0
235
+ // CHECK: - pre
236
+ // CHECK: test_tag: inside_region:
237
+ // CHECK: operand #0
238
+ // CHECK: - region
239
+ // CHECK: test_tag: after:
240
+ // CHECK: operand #0
241
+ // CHECK: - region
242
+ // CHECK: test_tag: return:
243
+ // CHECK: operand #0
244
+ // CHECK: - post
245
+ func.func @store_with_a_loop_region_before (%arg0: memref <f32 >) -> memref <f32 > {
246
+ %0 = arith.constant 0.0 : f32
247
+ %1 = arith.constant 1.0 : f32
248
+ memref.store %0 , %arg0 [] {tag_name = " pre" } : memref <f32 >
249
+ memref.load %arg0 [] {tag = " store_with_a_loop_region_before::before" } : memref <f32 >
250
+ test.store_with_a_loop_region %arg0 attributes { tag_name = " region" , store_before_region = true } {
251
+ memref.load %arg0 [] {tag = " inside_region" } : memref <f32 >
252
+ test.store_with_a_region_terminator
253
+ } : memref <f32 >
254
+ memref.load %arg0 [] {tag = " after" } : memref <f32 >
255
+ memref.store %1 , %arg0 [] {tag_name = " post" } : memref <f32 >
256
+ return {tag = " return" } %arg0 : memref <f32 >
257
+ }
258
+
259
+ // CHECK-LABEL: test_tag: store_with_a_loop_region_after::before:
260
+ // CHECK: operand #0
261
+ // CHECK: - pre
262
+ // CHECK: test_tag: inside_region:
263
+ // CHECK: operand #0
264
+ // CHECK: - pre
265
+ // CHECK: test_tag: after:
266
+ // CHECK: operand #0
267
+ // CHECK: - region
268
+ // CHECK: test_tag: return:
269
+ // CHECK: operand #0
270
+ // CHECK: - post
271
+ func.func @store_with_a_loop_region_after (%arg0: memref <f32 >) -> memref <f32 > {
272
+ %0 = arith.constant 0.0 : f32
273
+ %1 = arith.constant 1.0 : f32
274
+ memref.store %0 , %arg0 [] {tag_name = " pre" } : memref <f32 >
275
+ memref.load %arg0 [] {tag = " store_with_a_loop_region_after::before" } : memref <f32 >
276
+ test.store_with_a_loop_region %arg0 attributes { tag_name = " region" , store_before_region = false } {
277
+ memref.load %arg0 [] {tag = " inside_region" } : memref <f32 >
278
+ test.store_with_a_region_terminator
279
+ } : memref <f32 >
280
+ memref.load %arg0 [] {tag = " after" } : memref <f32 >
281
+ memref.store %1 , %arg0 [] {tag_name = " post" } : memref <f32 >
282
+ return {tag = " return" } %arg0 : memref <f32 >
283
+ }
284
+
285
+ // CHECK-LABEL: test_tag: store_with_a_loop_region_before_containing_a_store::before:
286
+ // CHECK: operand #0
287
+ // CHECK: - pre
288
+ // CHECK: test_tag: enter_region:
289
+ // CHECK: operand #0
290
+ // CHECK-DAG: - region
291
+ // CHECK-DAG: - inner
292
+ // CHECK: test_tag: exit_region:
293
+ // CHECK: operand #0
294
+ // CHECK: - inner
295
+ // CHECK: test_tag: after:
296
+ // CHECK: operand #0
297
+ // CHECK-DAG: - region
298
+ // CHECK-DAG: - inner
299
+ // CHECK: test_tag: return:
300
+ // CHECK: operand #0
301
+ // CHECK: - post
302
+ func.func @store_with_a_loop_region_before_containing_a_store (%arg0: memref <f32 >) -> memref <f32 > {
303
+ %0 = arith.constant 0.0 : f32
304
+ %1 = arith.constant 1.0 : f32
305
+ memref.store %0 , %arg0 [] {tag_name = " pre" } : memref <f32 >
306
+ memref.load %arg0 [] {tag = " store_with_a_loop_region_before_containing_a_store::before" } : memref <f32 >
307
+ test.store_with_a_loop_region %arg0 attributes { tag_name = " region" , store_before_region = true } {
308
+ memref.load %arg0 [] {tag = " enter_region" } : memref <f32 >
309
+ %2 = arith.constant 2.0 : f32
310
+ memref.store %2 , %arg0 [] {tag_name = " inner" } : memref <f32 >
311
+ memref.load %arg0 [] {tag = " exit_region" } : memref <f32 >
312
+ test.store_with_a_region_terminator
313
+ } : memref <f32 >
314
+ memref.load %arg0 [] {tag = " after" } : memref <f32 >
315
+ memref.store %1 , %arg0 [] {tag_name = " post" } : memref <f32 >
316
+ return {tag = " return" } %arg0 : memref <f32 >
317
+ }
318
+
319
+ // CHECK-LABEL: test_tag: store_with_a_loop_region_after_containing_a_store::before:
320
+ // CHECK: operand #0
321
+ // CHECK: - pre
322
+ // CHECK: test_tag: enter_region:
323
+ // CHECK: operand #0
324
+ // CHECK-DAG: - pre
325
+ // CHECK-DAG: - inner
326
+ // CHECK: test_tag: exit_region:
327
+ // CHECK: operand #0
328
+ // CHECK: - inner
329
+ // CHECK: test_tag: after:
330
+ // CHECK: operand #0
331
+ // CHECK: - region
332
+ // CHECK: test_tag: return:
333
+ // CHECK: operand #0
334
+ // CHECK: - post
335
+ func.func @store_with_a_loop_region_after_containing_a_store (%arg0: memref <f32 >) -> memref <f32 > {
336
+ %0 = arith.constant 0.0 : f32
337
+ %1 = arith.constant 1.0 : f32
338
+ memref.store %0 , %arg0 [] {tag_name = " pre" } : memref <f32 >
339
+ memref.load %arg0 [] {tag = " store_with_a_loop_region_after_containing_a_store::before" } : memref <f32 >
340
+ test.store_with_a_loop_region %arg0 attributes { tag_name = " region" , store_before_region = false } {
341
+ memref.load %arg0 [] {tag = " enter_region" } : memref <f32 >
342
+ %2 = arith.constant 2.0 : f32
343
+ memref.store %2 , %arg0 [] {tag_name = " inner" } : memref <f32 >
344
+ memref.load %arg0 [] {tag = " exit_region" } : memref <f32 >
345
+ test.store_with_a_region_terminator
346
+ } : memref <f32 >
347
+ memref.load %arg0 [] {tag = " after" } : memref <f32 >
348
+ memref.store %1 , %arg0 [] {tag_name = " post" } : memref <f32 >
349
+ return {tag = " return" } %arg0 : memref <f32 >
350
+ }
0 commit comments