2222// CHECK-NEXT: ^bb3: // 2 preds: ^bb0, ^bb2
2323// CHECK-NEXT: aie.end
2424// CHECK-NEXT: }
25- // CHECK-NEXT: }
25+
26+ // CHECK: %[[TILE_1_2:.*]] = aie.tile(1, 2)
27+ // CHECK-DAG: %[[BUF_0:.*]] = aie.buffer(%[[TILE_1_2]]) {sym_name = "buf_0"} : memref<256xi32>
28+ // CHECK-DAG: %[[BUF_1:.*]] = aie.buffer(%[[TILE_1_2]]) {sym_name = "buf_1"} : memref<256xi32>
29+ // CHECK-DAG: %[[BUF_2:.*]] = aie.buffer(%[[TILE_1_2]]) {sym_name = "buf_2"} : memref<256xi32>
30+ // CHECK-DAG: %[[BUF_3:.*]] = aie.buffer(%[[TILE_1_2]]) {sym_name = "buf_3"} : memref<256xi32>
31+ // CHECK-DAG: %[[LOCK_0:.*]] = aie.lock(%{{.*}}, 0)
32+ // CHECK: aie.mem(%[[TILE_1_2]]) {
33+ // CHECK-NEXT: %[[VAL_0:.*]] = aie.dma_start(MM2S, 0, ^bb2, ^bb1)
34+ // CHECK-NEXT: ^bb1: // pred: ^bb0
35+ // CHECK-NEXT: %[[VAL_1:.*]] = aie.dma_start(MM2S, 1, ^bb5, ^bb4)
36+ // CHECK-NEXT: ^bb2: // 2 preds: ^bb0, ^bb3
37+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Acquire, 1)
38+ // CHECK-NEXT: aie.dma_bd(%[[BUF_0]] : memref<256xi32>, 0, 256)
39+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Release, 0)
40+ // CHECK-NEXT: aie.next_bd ^bb3
41+ // CHECK-NEXT: ^bb3: // pred: ^bb2
42+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Acquire, 1)
43+ // CHECK-NEXT: aie.dma_bd(%[[BUF_1]] : memref<256xi32>, 0, 256)
44+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Release, 0)
45+ // CHECK-NEXT: aie.next_bd ^bb2
46+ // CHECK-NEXT: ^bb4: // pred: ^bb1
47+ // CHECK-NEXT: aie.end
48+ // CHECK-NEXT: ^bb5: // 2 preds: ^bb1, ^bb6
49+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Acquire, 1)
50+ // CHECK-NEXT: aie.dma_bd(%[[BUF_2]] : memref<256xi32>, 0, 128)
51+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Release, 0)
52+ // CHECK-NEXT: aie.next_bd ^bb6
53+ // CHECK-NEXT: ^bb6: // pred: ^bb5
54+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Acquire, 1)
55+ // CHECK-NEXT: aie.dma_bd(%[[BUF_2]] : memref<256xi32>, 128, 128)
56+ // CHECK-NEXT: aie.use_lock(%[[LOCK_0]], Release, 0)
57+ // CHECK-NEXT: aie.next_bd ^bb5
2658
2759module @test {
2860 %t1 = aie.tile (1 , 1 )
2961
30- %mem13 = aie.mem (%t1 ) {
62+ %mem11 = aie.mem (%t1 ) {
3163 %dma0 = aie.dma_start (" MM2S" , 0 , ^bd0 , ^end )
3264 ^bd0 :
3365 aie.next_bd ^bd1 // point to the next BD, or termination
@@ -36,4 +68,65 @@ module @test {
3668 ^end :
3769 aie.end
3870 }
71+
72+
73+ %t2 = aie.tile (1 , 2 )
74+
75+ %buf_0 = aie.buffer (%t2 ) { sym_name = " buf_0" } : memref <256 xi32 >
76+ %buf_1 = aie.buffer (%t2 ) { sym_name = " buf_1" } : memref <256 xi32 >
77+ %buf_2 = aie.buffer (%t2 ) { sym_name = " buf_2" } : memref <256 xi32 >
78+ %buf_3 = aie.buffer (%t2 ) { sym_name = " buf_3" } : memref <256 xi32 >
79+
80+ %lock_0 = aie.lock (%t2 , 0 )
81+ %lock_1 = aie.lock (%t2 , 1 )
82+ %lock_2 = aie.lock (%t2 , 0 )
83+ %lock_3 = aie.lock (%t2 , 0 )
84+
85+ %mem12 = aie.mem (%t2 ) {
86+ %start1 = aie.dma_start (" MM2S" , 0 , ^bd0 , ^dma0 )
87+ ^dma0 :
88+ %start2 = aie.dma_start (" MM2S" , 1 , ^bd4 , ^end )
89+ ^bd0 :
90+ aie.use_lock (%lock_0 , Acquire , 1 )
91+ aie.dma_bd (%buf_0 : memref <256 xi32 >, 0 , 256 )
92+ aie.use_lock (%lock_0 , Release , 0 )
93+ aie.next_bd ^bd1
94+ ^bd1 :
95+ aie.use_lock (%lock_0 , Acquire , 1 )
96+ aie.dma_bd (%buf_1 : memref <256 xi32 >, 0 , 256 )
97+ aie.use_lock (%lock_0 , Release , 0 )
98+ aie.next_bd ^bd2
99+ ^bd2 :
100+ aie.use_lock (%lock_0 , Acquire , 1 )
101+ aie.dma_bd (%buf_0 : memref <256 xi32 >, 0 , 256 )
102+ aie.use_lock (%lock_0 , Release , 0 )
103+ aie.next_bd ^bd3
104+ ^bd3 :
105+ aie.use_lock (%lock_0 , Acquire , 1 )
106+ aie.dma_bd (%buf_1 : memref <256 xi32 >, 0 , 256 )
107+ aie.use_lock (%lock_0 , Release , 0 )
108+ aie.next_bd ^bd0
109+ ^end :
110+ aie.end
111+ ^bd4 :
112+ aie.use_lock (%lock_0 , Acquire , 1 )
113+ aie.dma_bd (%buf_2 : memref <256 xi32 >, 0 , 128 )
114+ aie.use_lock (%lock_0 , Release , 0 )
115+ aie.next_bd ^bd5
116+ ^bd5 :
117+ aie.use_lock (%lock_0 , Acquire , 1 )
118+ aie.dma_bd (%buf_2 : memref <256 xi32 >, 128 , 128 )
119+ aie.use_lock (%lock_0 , Release , 0 )
120+ aie.next_bd ^bd6
121+ ^bd6 :
122+ aie.use_lock (%lock_0 , Acquire , 1 )
123+ aie.dma_bd (%buf_2 : memref <256 xi32 >, 0 , 128 )
124+ aie.use_lock (%lock_0 , Release , 0 )
125+ aie.next_bd ^bd7
126+ ^bd7 :
127+ aie.use_lock (%lock_0 , Acquire , 1 )
128+ aie.dma_bd (%buf_2 : memref <256 xi32 >, 128 , 128 )
129+ aie.use_lock (%lock_0 , Release , 0 )
130+ aie.next_bd ^bd4
131+ }
39132}
0 commit comments