Lines Matching refs:memref

19 func.func @condBranch(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
22 cf.br ^bb3(%arg1 : memref<2xf32>)
24 %0 = memref.alloc() : memref<2xf32>
25 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
26 cf.br ^bb3(%0 : memref<2xf32>)
27 ^bb3(%1: memref<2xf32>):
28 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
35 // CHECK: %[[ALLOC1:.*]] = memref.alloc
38 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
41 // CHECK-NEXT: memref.dealloc
62 %arg1: memref<?xf32>,
63 %arg2: memref<?xf32>,
67 cf.br ^bb3(%arg1 : memref<?xf32>)
69 %1 = memref.alloc(%0) : memref<?xf32>
70 test.buffer_based in(%arg1: memref<?xf32>) out(%1: memref<?xf32>)
71 cf.br ^bb3(%1 : memref<?xf32>)
72 ^bb3(%2: memref<?xf32>):
73 test.copy(%2, %arg2) : (memref<?xf32>, memref<?xf32>)
81 // CHECK-NEXT: %[[ALLOC1:.*]] = memref.alloc(%[[IDX]])
84 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
88 // CHECK-NEXT: memref.dealloc %[[ALLOC3]]
98 %arg1: memref<*xf32>,
99 %arg2: memref<*xf32>,
103 cf.br ^bb3(%arg1 : memref<*xf32>)
105 %1 = memref.alloc(%0) : memref<?xf32>
106 %2 = memref.cast %1 : memref<?xf32> to memref<*xf32>
107 test.buffer_based in(%arg1: memref<*xf32>) out(%2: memref<*xf32>)
108 cf.br ^bb3(%2 : memref<*xf32>)
109 ^bb3(%3: memref<*xf32>):
110 test.copy(%3, %arg2) : (memref<*xf32>, memref<*xf32>)
118 // CHECK-NEXT: %[[ALLOC1:.*]] = memref.alloc(%[[IDX]])
121 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
125 // CHECK-NEXT: memref.dealloc %[[ALLOC3]]
153 %arg1: memref<?xf32>,
154 %arg2: memref<?xf32>,
158 cf.br ^bb6(%arg1 : memref<?xf32>)
160 %1 = memref.alloc(%0) : memref<?xf32>
161 test.buffer_based in(%arg1: memref<?xf32>) out(%1: memref<?xf32>)
164 cf.br ^bb5(%1 : memref<?xf32>)
166 cf.br ^bb5(%1 : memref<?xf32>)
167 ^bb5(%2: memref<?xf32>):
168 cf.br ^bb6(%2 : memref<?xf32>)
169 ^bb6(%3: memref<?xf32>):
170 cf.br ^bb7(%3 : memref<?xf32>)
171 ^bb7(%4: memref<?xf32>):
172 test.copy(%4, %arg2) : (memref<?xf32>, memref<?xf32>)
181 // CHECK-NEXT: %[[ALLOC1:.*]] = memref.alloc(%[[IDX]])
190 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
196 // CHECK-NEXT: memref.dealloc %[[ALLOC4]]
206 func.func @emptyUsesValue(%arg0: memref<4xf32>) {
207 %0 = memref.alloc() : memref<4xf32>
210 // CHECK-NEXT: %[[ALLOC:.*]] = memref.alloc()
211 // CHECK-NEXT: memref.dealloc %[[ALLOC]]
227 func.func @criticalEdge(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
228 cf.cond_br %arg0, ^bb1, ^bb2(%arg1 : memref<2xf32>)
230 %0 = memref.alloc() : memref<2xf32>
231 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
232 cf.br ^bb2(%0 : memref<2xf32>)
233 ^bb2(%1: memref<2xf32>):
234 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
240 // CHECK: %[[ALLOC1:.*]] = memref.alloc()
243 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
245 // CHECK-NEXT: memref.dealloc
260 func.func @invCriticalEdge(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
261 %0 = memref.alloc() : memref<2xf32>
262 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
263 cf.cond_br %arg0, ^bb1, ^bb2(%arg1 : memref<2xf32>)
265 cf.br ^bb2(%0 : memref<2xf32>)
266 ^bb2(%1: memref<2xf32>):
267 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
288 func.func @ifElse(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
289 %0 = memref.alloc() : memref<2xf32>
290 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
292 ^bb1(%arg1, %0 : memref<2xf32>, memref<2xf32>),
293 ^bb2(%0, %arg1 : memref<2xf32>, memref<2xf32>)
294 ^bb1(%1: memref<2xf32>, %2: memref<2xf32>):
295 cf.br ^bb3(%1, %2 : memref<2xf32>, memref<2xf32>)
296 ^bb2(%3: memref<2xf32>, %4: memref<2xf32>):
297 cf.br ^bb3(%3, %4 : memref<2xf32>, memref<2xf32>)
298 ^bb3(%5: memref<2xf32>, %6: memref<2xf32>):
299 %7 = memref.alloc() : memref<2xf32>
300 test.buffer_based in(%5: memref<2xf32>) out(%7: memref<2xf32>)
301 test.copy(%7, %arg2) : (memref<2xf32>, memref<2xf32>)
305 // CHECK-NEXT: %[[FIRST_ALLOC:.*]] = memref.alloc()
307 // CHECK: %[[SECOND_ALLOC:.*]] = memref.alloc()
309 // CHECK: memref.dealloc %[[FIRST_ALLOC]]
311 // CHECK-NEXT: memref.dealloc %[[SECOND_ALLOC]]
326 func.func @ifElseNoUsers(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
327 %0 = memref.alloc() : memref<2xf32>
328 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
330 ^bb1(%arg1, %0 : memref<2xf32>, memref<2xf32>),
331 ^bb2(%0, %arg1 : memref<2xf32>, memref<2xf32>)
332 ^bb1(%1: memref<2xf32>, %2: memref<2xf32>):
333 cf.br ^bb3(%1, %2 : memref<2xf32>, memref<2xf32>)
334 ^bb2(%3: memref<2xf32>, %4: memref<2xf32>):
335 cf.br ^bb3(%3, %4 : memref<2xf32>, memref<2xf32>)
336 ^bb3(%5: memref<2xf32>, %6: memref<2xf32>):
337 test.copy(%arg1, %arg2) : (memref<2xf32>, memref<2xf32>)
341 // CHECK-NEXT: %[[FIRST_ALLOC:.*]] = memref.alloc()
343 // CHECK-NEXT: memref.dealloc %[[FIRST_ALLOC]]
361 func.func @ifElseNested(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
362 %0 = memref.alloc() : memref<2xf32>
363 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
365 ^bb1(%arg1, %0 : memref<2xf32>, memref<2xf32>),
366 ^bb2(%0, %arg1 : memref<2xf32>, memref<2xf32>)
367 ^bb1(%1: memref<2xf32>, %2: memref<2xf32>):
368 cf.br ^bb5(%1, %2 : memref<2xf32>, memref<2xf32>)
369 ^bb2(%3: memref<2xf32>, %4: memref<2xf32>):
370 cf.cond_br %arg0, ^bb3(%3 : memref<2xf32>), ^bb4(%4 : memref<2xf32>)
371 ^bb3(%5: memref<2xf32>):
372 cf.br ^bb5(%5, %3 : memref<2xf32>, memref<2xf32>)
373 ^bb4(%6: memref<2xf32>):
374 cf.br ^bb5(%3, %6 : memref<2xf32>, memref<2xf32>)
375 ^bb5(%7: memref<2xf32>, %8: memref<2xf32>):
376 %9 = memref.alloc() : memref<2xf32>
377 test.buffer_based in(%7: memref<2xf32>) out(%9: memref<2xf32>)
378 test.copy(%9, %arg2) : (memref<2xf32>, memref<2xf32>)
382 // CHECK-NEXT: %[[FIRST_ALLOC:.*]] = memref.alloc()
384 // CHECK: %[[SECOND_ALLOC:.*]] = memref.alloc()
386 // CHECK: memref.dealloc %[[FIRST_ALLOC]]
388 // CHECK-NEXT: memref.dealloc %[[SECOND_ALLOC]]
398 func.func @redundantOperations(%arg0: memref<2xf32>) {
399 %0 = memref.alloc() : memref<2xf32>
400 test.buffer_based in(%arg0: memref<2xf32>) out(%0: memref<2xf32>)
401 %1 = memref.alloc() : memref<2xf32>
402 test.buffer_based in(%0: memref<2xf32>) out(%1: memref<2xf32>)
407 // CHECK-NEXT: %[[FIRST_ALLOC:.*]] = memref.alloc()
409 // CHECK: %[[SECOND_ALLOC:.*]] = memref.alloc()
431 %arg0: memref<2xf32>,
432 %arg1: memref<2xf32>) {
435 %0 = memref.alloc() : memref<2xf32>
436 test.buffer_based in(%arg0: memref<2xf32>) out(%0: memref<2xf32>)
437 cf.br ^exit(%0 : memref<2xf32>)
439 %1 = memref.alloc() : memref<2xf32>
440 test.buffer_based in(%arg0: memref<2xf32>) out(%1: memref<2xf32>)
441 cf.br ^exit(%1 : memref<2xf32>)
442 ^exit(%arg2: memref<2xf32>):
443 test.copy(%arg2, %arg1) : (memref<2xf32>, memref<2xf32>)
449 // CHECK: %[[ALLOC0:.*]] = memref.alloc()
452 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
455 // CHECK-NEXT: %[[ALLOC2:.*]] = memref.alloc()
458 // CHECK-NEXT: memref.dealloc %[[ALLOC2]]
462 // CHECK-NEXT: memref.dealloc %[[ALLOC4]]
480 %arg0: memref<2xf32>,
481 %arg1: memref<2xf32>) {
482 %1 = memref.alloc() : memref<2xf32>
485 cf.br ^exit(%arg0 : memref<2xf32>)
487 test.buffer_based in(%arg0: memref<2xf32>) out(%1: memref<2xf32>)
488 memref.dealloc %1 : memref<2xf32>
489 cf.br ^exit(%1 : memref<2xf32>)
490 ^exit(%arg2: memref<2xf32>):
491 test.copy(%arg2, %arg1) : (memref<2xf32>, memref<2xf32>)
495 // CHECK-NEXT: %[[ALLOC0:.*]] = memref.alloc()
498 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
507 %arg0 : memref<2xf32>,
508 %arg1: memref<2xf32>) {
509 %0 = memref.alloc() : memref<2xf32>
510 test.buffer_based in(%arg0: memref<2xf32>) out(%0: memref<2xf32>)
511 test.copy(%0, %arg1) : (memref<2xf32>, memref<2xf32>)
515 // CHECK-NEXT: %[[ALLOC0:.*]] = memref.alloc()
517 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
525 func.func @moving_invalid_dealloc_op(%arg0 : memref<2xf32>, %arg1: memref<2xf32>) {
526 %0 = memref.alloc() : memref<2xf32>
527 test.buffer_based in(%arg0: memref<2xf32>) out(%0: memref<2xf32>)
528 memref.dealloc %0 : memref<2xf32>
529 test.copy(%0, %arg1) : (memref<2xf32>, memref<2xf32>)
533 // CHECK-NEXT: %[[ALLOC0:.*]] = memref.alloc()
535 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
549 %arg1: memref<2xf32>,
550 %arg2: memref<2xf32>) {
553 cf.br ^bb3(%arg1 : memref<2xf32>)
555 %0 = memref.alloc() : memref<2xf32>
556 test.region_buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>) {
558 %1 = memref.alloc() : memref<2xf32>
559 test.buffer_based in(%arg1: memref<2xf32>) out(%1: memref<2xf32>)
563 cf.br ^bb3(%0 : memref<2xf32>)
564 ^bb3(%1: memref<2xf32>):
565 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
572 // CHECK: %[[ALLOC1:.*]] = memref.alloc()
574 // CHECK: %[[ALLOC2:.*]] = memref.alloc()
576 // CHECK: memref.dealloc %[[ALLOC2]]
579 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
582 // CHECK-NEXT: memref.dealloc
593 %arg0: memref<5xf32>,
594 %arg1: memref<10xf32>,
595 %arg2: memref<5xf32>) -> (memref<10xf32>, memref<15xf32>) {
596 %x = memref.alloc() : memref<15xf32>
597 %y = memref.alloc() : memref<5xf32>
598 test.buffer_based in(%arg0: memref<5xf32>) out(%y: memref<5xf32>)
599 test.copy(%y, %arg2) : (memref<5xf32>, memref<5xf32>)
600 return %arg1, %x : memref<10xf32>, memref<15xf32>
602 // CHECK: (%[[ARG0:.*]]: memref<5xf32>, %[[ARG1:.*]]: memref<10xf32>,
603 // CHECK-SAME: %[[RESULT:.*]]: memref<5xf32>)
604 // CHECK: %[[X:.*]] = memref.alloc()
605 // CHECK: %[[Y:.*]] = memref.alloc()
607 // CHECK: memref.dealloc %[[Y]]
620 %arg1 : index) -> memref<?x?xf32> {
622 %1 = memref.alloc(%arg0, %arg0) : memref<?x?xf32>
623 %2 = scf.if %0 -> (memref<?x?xf32>) {
624 scf.yield %1 : memref<?x?xf32>
626 %3 = memref.alloc(%arg0, %arg1) : memref<?x?xf32>
627 scf.yield %1 : memref<?x?xf32>
629 return %2 : memref<?x?xf32>
632 // CHECK: %[[ALLOC0:.*]] = memref.alloc(%arg0, %arg0)
635 // CHECK: %[[ALLOC2:.*]] = memref.alloc(%arg0, %arg1)
636 // CHECK-NEXT: memref.dealloc %[[ALLOC2]]
650 %arg1 : index) -> memref<?x?xf32> {
652 %1 = memref.alloc(%arg0, %arg0) : memref<?x?xf32>
653 %2 = scf.if %0 -> (memref<?x?xf32>) {
654 scf.yield %1 : memref<?x?xf32>
656 %3 = memref.alloc(%arg0, %arg1) : memref<?x?xf32>
657 scf.yield %3 : memref<?x?xf32>
659 return %2 : memref<?x?xf32>
662 // CHECK: %[[ALLOC0:.*]] = memref.alloc(%arg0, %arg0)
666 // CHECK: %[[ALLOC3:.*]] = memref.alloc(%arg0, %arg1)
668 // CHECK: memref.dealloc %[[ALLOC3]]
670 // CHECK: memref.dealloc %[[ALLOC0]]
680 func.func @inner_region_control_flow(%arg0 : index) -> memref<?x?xf32> {
681 %0 = memref.alloc(%arg0, %arg0) : memref<?x?xf32>
682 %1 = test.region_if %0 : memref<?x?xf32> -> (memref<?x?xf32>) then {
683 ^bb0(%arg1 : memref<?x?xf32>):
684 test.region_if_yield %arg1 : memref<?x?xf32>
686 ^bb0(%arg1 : memref<?x?xf32>):
687 test.region_if_yield %arg1 : memref<?x?xf32>
689 ^bb0(%arg1 : memref<?x?xf32>):
690 test.region_if_yield %arg1 : memref<?x?xf32>
692 return %1 : memref<?x?xf32>
695 // CHECK: %[[ALLOC0:.*]] = memref.alloc(%arg0, %arg0)
708 func.func @subview(%arg0 : index, %arg1 : index, %arg2 : memref<?x?xf32>) {
709 %0 = memref.alloc() : memref<64x4xf32, offset: 0, strides: [4, 1]>
710 %1 = memref.subview %0[%arg0, %arg1][%arg0, %arg1][%arg0, %arg1] :
711 memref<64x4xf32, offset: 0, strides: [4, 1]>
712 to memref<?x?xf32, offset: ?, strides: [?, ?]>
714 (memref<?x?xf32, offset: ?, strides: [?, ?]>, memref<?x?xf32>)
718 // CHECK-NEXT: %[[ALLOC:.*]] = memref.alloc()
719 // CHECK-NEXT: memref.subview
721 // CHECK-NEXT: memref.dealloc %[[ALLOC]]
730 func.func @condBranchAlloca(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
733 cf.br ^bb3(%arg1 : memref<2xf32>)
735 %0 = memref.alloca() : memref<2xf32>
736 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
737 cf.br ^bb3(%0 : memref<2xf32>)
738 ^bb3(%1: memref<2xf32>):
739 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
744 // CHECK: %[[ALLOCA:.*]] = memref.alloca()
757 func.func @ifElseAlloca(%arg0: i1, %arg1: memref<2xf32>, %arg2: memref<2xf32>) {
758 %0 = memref.alloc() : memref<2xf32>
759 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
761 ^bb1(%arg1, %0 : memref<2xf32>, memref<2xf32>),
762 ^bb2(%0, %arg1 : memref<2xf32>, memref<2xf32>)
763 ^bb1(%1: memref<2xf32>, %2: memref<2xf32>):
764 cf.br ^bb3(%1, %2 : memref<2xf32>, memref<2xf32>)
765 ^bb2(%3: memref<2xf32>, %4: memref<2xf32>):
766 cf.br ^bb3(%3, %4 : memref<2xf32>, memref<2xf32>)
767 ^bb3(%5: memref<2xf32>, %6: memref<2xf32>):
768 %7 = memref.alloca() : memref<2xf32>
769 test.buffer_based in(%5: memref<2xf32>) out(%7: memref<2xf32>)
770 test.copy(%7, %arg2) : (memref<2xf32>, memref<2xf32>)
774 // CHECK-NEXT: %[[ALLOC:.*]] = memref.alloc()
776 // CHECK: %[[ALLOCA:.*]] = memref.alloca()
778 // CHECK: memref.dealloc %[[ALLOC]]
787 %arg1: memref<2xf32>,
788 %arg2: memref<2xf32>) {
789 %0 = memref.alloca() : memref<2xf32>
790 test.buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>)
792 ^bb1(%arg1, %0 : memref<2xf32>, memref<2xf32>),
793 ^bb2(%0, %arg1 : memref<2xf32>, memref<2xf32>)
794 ^bb1(%1: memref<2xf32>, %2: memref<2xf32>):
795 cf.br ^bb5(%1, %2 : memref<2xf32>, memref<2xf32>)
796 ^bb2(%3: memref<2xf32>, %4: memref<2xf32>):
797 cf.cond_br %arg0, ^bb3(%3 : memref<2xf32>), ^bb4(%4 : memref<2xf32>)
798 ^bb3(%5: memref<2xf32>):
799 cf.br ^bb5(%5, %3 : memref<2xf32>, memref<2xf32>)
800 ^bb4(%6: memref<2xf32>):
801 cf.br ^bb5(%3, %6 : memref<2xf32>, memref<2xf32>)
802 ^bb5(%7: memref<2xf32>, %8: memref<2xf32>):
803 %9 = memref.alloc() : memref<2xf32>
804 test.buffer_based in(%7: memref<2xf32>) out(%9: memref<2xf32>)
805 test.copy(%9, %arg2) : (memref<2xf32>, memref<2xf32>)
809 // CHECK-NEXT: %[[ALLOCA:.*]] = memref.alloca()
811 // CHECK: %[[ALLOC:.*]] = memref.alloc()
814 // CHECK-NEXT: memref.dealloc %[[ALLOC]]
822 %arg1: memref<2xf32>,
823 %arg2: memref<2xf32>) {
826 cf.br ^bb3(%arg1 : memref<2xf32>)
828 %0 = memref.alloc() : memref<2xf32>
829 test.region_buffer_based in(%arg1: memref<2xf32>) out(%0: memref<2xf32>) {
831 %1 = memref.alloca() : memref<2xf32>
832 test.buffer_based in(%arg1: memref<2xf32>) out(%1: memref<2xf32>)
836 cf.br ^bb3(%0 : memref<2xf32>)
837 ^bb3(%1: memref<2xf32>):
838 test.copy(%1, %arg2) : (memref<2xf32>, memref<2xf32>)
846 // CHECK: %[[ALLOC1:.*]] = memref.alloc()
848 // CHECK: %[[ALLOCA:.*]] = memref.alloca()
852 // CHECK-NEXT: memref.dealloc %[[ALLOC1]]
855 // CHECK-NEXT: memref.dealloc
862 %arg1 : index) -> memref<?x?xf32> {
864 %1 = memref.alloc(%arg0, %arg0) : memref<?x?xf32>
865 %2 = scf.if %0 -> (memref<?x?xf32>) {
866 scf.yield %1 : memref<?x?xf32>
868 %3 = memref.alloca(%arg0, %arg1) : memref<?x?xf32>
869 scf.yield %1 : memref<?x?xf32>
871 return %2 : memref<?x?xf32>
874 // CHECK: %[[ALLOC0:.*]] = memref.alloc(%arg0, %arg0)
877 // CHECK: %[[ALLOCA:.*]] = memref.alloca(%arg0, %arg1)
892 %buf: memref<2xf32>,
893 %res: memref<2xf32>) {
894 %0 = memref.alloc() : memref<2xf32>
896 iter_args(%iterBuf = %buf) -> memref<2xf32> {
898 %3 = memref.alloc() : memref<2xf32>
899 scf.yield %3 : memref<2xf32>
901 test.copy(%1, %res) : (memref<2xf32>, memref<2xf32>)
905 // CHECK: %[[ALLOC0:.*]] = memref.alloc()
906 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
911 // CHECK: memref.dealloc %[[IALLOC]]
912 // CHECK: %[[ALLOC3:.*]] = memref.alloc()
914 // CHECK: memref.dealloc %[[ALLOC3]]
918 // CHECK-NEXT: memref.dealloc %[[ALLOC2]]
933 %buf: memref<2xf32>,
934 %res: memref<2xf32>) {
935 %0 = memref.alloc() : memref<2xf32>
937 iter_args(%iterBuf = %buf) -> memref<2xf32> {
939 %3 = scf.if %2 -> (memref<2xf32>) {
940 scf.yield %0 : memref<2xf32>
942 scf.yield %iterBuf : memref<2xf32>
944 scf.yield %3 : memref<2xf32>
946 test.copy(%1, %res) : (memref<2xf32>, memref<2xf32>)
950 // CHECK: %[[ALLOC0:.*]] = memref.alloc()
957 // CHECK: memref.dealloc %[[ALLOC0]]
974 %buf: memref<2xf32>) -> memref<2xf32> {
975 %0 = memref.alloc() : memref<2xf32>
977 iter_args(%iterBuf = %buf) -> memref<2xf32> {
979 %3 = scf.if %2 -> (memref<2xf32>) {
980 %4 = memref.alloc() : memref<2xf32>
981 scf.yield %4 : memref<2xf32>
983 scf.yield %0 : memref<2xf32>
985 scf.yield %3 : memref<2xf32>
987 return %1 : memref<2xf32>
990 // CHECK: %[[ALLOC0:.*]] = memref.alloc()
994 // CHECK: memref.dealloc %[[IALLOC]]
997 // CHECK: %[[ALLOC4:.*]] = memref.alloc()
999 // CHECK-NEXT: memref.dealloc %[[ALLOC4]]
1006 // CHECK-NEXT: memref.dealloc %[[ALLOC3]]
1009 // CHECK: memref.dealloc %[[ALLOC0]]
1024 %buf: memref<2xf32>,
1025 %res: memref<2xf32>) {
1026 %0 = memref.alloc() : memref<2xf32>
1028 iter_args(%iterBuf = %buf) -> memref<2xf32> {
1030 iter_args(%iterBuf2 = %iterBuf) -> memref<2xf32> {
1032 iter_args(%iterBuf3 = %iterBuf2) -> memref<2xf32> {
1033 %4 = memref.alloc() : memref<2xf32>
1035 %6 = scf.if %5 -> (memref<2xf32>) {
1036 %7 = memref.alloc() : memref<2xf32>
1037 scf.yield %7 : memref<2xf32>
1039 scf.yield %iterBuf3 : memref<2xf32>
1041 scf.yield %6 : memref<2xf32>
1043 scf.yield %3 : memref<2xf32>
1045 scf.yield %2 : memref<2xf32>
1047 test.copy(%1, %res) : (memref<2xf32>, memref<2xf32>)
1051 // CHECK: %[[ALLOC0:.*]] = memref.alloc()
1052 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
1057 // CHECK-NEXT: memref.dealloc %[[IALLOC0]]
1061 // CHECK-NEXT: memref.dealloc %[[IALLOC1]]
1065 // CHECK: %[[ALLOC8:.*]] = memref.alloc()
1066 // CHECK-NEXT: memref.dealloc %[[ALLOC8]]
1069 // CHECK: %[[ALLOC11:.*]] = memref.alloc()
1071 // CHECK-NEXT: memref.dealloc %[[ALLOC11]]
1077 // CHECK: memref.dealloc %[[IALLOC2]]
1079 // CHECK-NEXT: memref.dealloc %[[ALLOC9]]
1083 // CHECK-NEXT: memref.dealloc %[[ALLOC6]]
1087 // CHECK-NEXT: memref.dealloc %[[ALLOC3]]
1091 // CHECK-NEXT: memref.dealloc %[[VAL_7]]
1097 %buffer = memref.alloc() : memref<1024xf32>
1100 %t = affine.load %buffer[%i] : memref<1024xf32>
1104 // CHECK: %[[M:.*]] = memref.alloc
1107 // CHECK-NEXT: memref.dealloc %[[M]]
1121 %arg2: memref<?xf32>,
1122 %arg3: memref<?xf32>) {
1124 cf.br ^loopHeader(%const0, %arg2 : i32, memref<?xf32>)
1126 ^loopHeader(%i : i32, %buff : memref<?xf32>):
1129 ^loopBody(%i, %buff : i32, memref<?xf32>),
1130 ^exit(%buff : memref<?xf32>)
1132 ^loopBody(%val : i32, %buff2: memref<?xf32>):
1136 %alloc1 = memref.alloc(%size) : memref<?xf32>
1137 cf.br ^loopHeader(%inc, %alloc1 : i32, memref<?xf32>)
1139 ^exit(%buff3 : memref<?xf32>):
1140 test.copy(%buff3, %arg3) : (memref<?xf32>, memref<?xf32>)
1154 %arg2: memref<2xf32>,
1155 %arg3: memref<2xf32>) {
1157 cf.br ^loopBody(%const0, %arg2 : i32, memref<2xf32>)
1159 ^loopBody(%val : i32, %buff2: memref<2xf32>):
1162 %alloc1 = memref.alloc() : memref<2xf32>
1163 cf.br ^loopHeader(%inc, %alloc1 : i32, memref<2xf32>)
1165 ^loopHeader(%i : i32, %buff : memref<2xf32>):
1168 ^loopBody(%i, %buff : i32, memref<2xf32>),
1169 ^exit(%buff : memref<2xf32>)
1171 ^exit(%buff3 : memref<2xf32>):
1172 test.copy(%buff3, %arg3) : (memref<2xf32>, memref<2xf32>)
1181 %arg2: memref<2xf32>,
1182 %arg3: memref<2xf32>) {
1184 %1 = shape.assuming %arg0 -> memref<2xf32> {
1185 %0 = memref.alloc() : memref<2xf32>
1186 shape.assuming_yield %arg2 : memref<2xf32>
1189 %3 = shape.assuming %arg0 -> memref<2xf32> {
1190 %2 = memref.alloc() : memref<2xf32>
1191 shape.assuming_yield %2 : memref<2xf32>
1193 test.copy(%3, %arg3) : (memref<2xf32>, memref<2xf32>)
1201 // CHECK-NEXT: %[[ALLOC0:.*]] = memref.alloc()
1202 // CHECK-NEXT: memref.dealloc %[[ALLOC0]]
1205 // CHECK-NEXT: %[[TMP_ALLOC:.*]] = memref.alloc()
1207 // CHECK-NEXT: memref.dealloc %[[TMP_ALLOC]]
1210 // CHECK-NEXT: memref.dealloc %[[ASSUMING_RESULT]]
1232 // CHECK: (%[[ARG0:.*]]: memref<?x?xf64>, %[[ARG1:.*]]: memref<?x?xf64>)
1235 // CHECK-NOT: memref.dealloc %[[RES0]]
1236 // CHECK: memref.dealloc %[[RES1]]
1238 func.func @dealloc_existing_clones(%arg0: memref<?x?xf64>, %arg1: memref<?x?xf64>) -> memref<?x?xf6…
1239 %0 = bufferization.clone %arg0 : memref<?x?xf64> to memref<?x?xf64>
1240 %1 = bufferization.clone %arg1 : memref<?x?xf64> to memref<?x?xf64>
1241 return %0 : memref<?x?xf64>
1248 %a = memref.alloc(%arg0) : memref<?xf32>
1250 …scf.while (%arg1 = %a, %arg2 = %a) : (memref<?xf32>, memref<?xf32>) -> (memref<?xf32>, memref<?xf3…
1254 // CHECK-NEXT: memref.dealloc %[[ARG2]]
1255 scf.condition(%0) %arg1, %arg2 : memref<?xf32>, memref<?xf32>
1257 ^bb0(%arg1: memref<?xf32>, %arg2: memref<?xf32>):
1258 // CHECK: %[[ALLOC2:.*]] = memref.alloc
1259 %b = memref.alloc(%arg0) : memref<?xf32>
1260 // CHECK: memref.dealloc %[[ARG2]]
1262 // CHECK: memref.dealloc %[[ALLOC2]]
1263 scf.yield %arg1, %b : memref<?xf32>, memref<?xf32>
1266 // CHECK-NEXT: memref.dealloc %[[WHILE]]#1
1267 // CHECK-NEXT: memref.dealloc %[[ALLOC]]
1275 // CHECK: %[[ALLOC:.*]] = memref.alloc
1276 %a = memref.alloc(%arg0) : memref<?xf32>
1280 // CHECK-NEXT: memref.dealloc %[[ALLOC]]
1286 … = %a, %arg2 = %a, %arg3 = %a) : (memref<?xf32>, memref<?xf32>, memref<?xf32>) -> (memref<?xf32>,
1288 scf.condition(%0) %arg1, %arg2, %arg3 : memref<?xf32>, memref<?xf32>, memref<?xf32>
1290 ^bb0(%arg1: memref<?xf32>, %arg2: memref<?xf32>, %arg3: memref<?xf32>):
1291 %b = memref.alloc(%arg0) : memref<?xf32>
1292 %q = memref.alloc(%arg0) : memref<?xf32>
1293 scf.yield %q, %b, %arg2: memref<?xf32>, memref<?xf32>, memref<?xf32>
1295 // CHECK-DAG: memref.dealloc %[[WHILE]]#0
1296 // CHECK-DAG: memref.dealloc %[[WHILE]]#1
1297 // CHECK-DAG: memref.dealloc %[[WHILE]]#2