99
1010program acc_loop
1111
12- integer :: i, j
12+ integer :: i, j, k
1313 integer , parameter :: n = 10
1414 real , dimension (n) :: a, b
1515 real , dimension (n, n) :: c, d
@@ -209,9 +209,9 @@ program acc_loop
209209
210210! CHECK: [[TILESIZE1:%.*]] = arith.constant 2 : i32
211211! CHECK: [[TILESIZE2:%.*]] = arith.constant 2 : i32
212- ! CHECK: acc.loop {{.*}} tile({[[TILESIZE1]] : i32, [[TILESIZE2]] : i32}) control(%arg0 : i32) = (%{{.*}} : i32) to (%{{.*}} : i32) step (%{{.*}} : i32) {
212+ ! CHECK: acc.loop {{.*}} tile({[[TILESIZE1]] : i32, [[TILESIZE2]] : i32}) control(%arg0 : i32, %arg1 : i32 ) = (%{{.*}} : i32, i32 ) to (%{{.*}} : i32, i32 ) step (%{{.*}} : i32, i32) {
213213! CHECK: acc.yield
214- ! CHECK-NEXT: } attributes {inclusiveUpperbound = array<i1: true>, independent = [#acc.device_type<none>]}
214+ ! CHECK-NEXT: } attributes {inclusiveUpperbound = array<i1: true, true >, independent = [#acc.device_type<none>]}
215215
216216 ! $acc loop tile(tileSize)
217217 DO i = 1 , n
@@ -229,9 +229,9 @@ program acc_loop
229229 END DO
230230 END DO
231231
232- ! CHECK: acc.loop {{.*}} tile({%{{.*}} : i32, %{{.*}} : i32}) control(%arg0 : i32) = (%{{.*}} : i32) to (%{{.*}} : i32) step (%{{.*}} : i32) {
232+ ! CHECK: acc.loop {{.*}} tile({%{{.*}} : i32, %{{.*}} : i32}) control(%arg0 : i32, %arg1 : i32 ) = (%{{.*}} : i32, i32 ) to (%{{.*}} : i32, i32 ) step (%{{.*}} : i32, i32) {
233233! CHECK: acc.yield
234- ! CHECK-NEXT: } attributes {inclusiveUpperbound = array<i1: true>, independent = [#acc.device_type<none>]}
234+ ! CHECK-NEXT: } attributes {inclusiveUpperbound = array<i1: true, true >, independent = [#acc.device_type<none>]}
235235
236236 ! $acc loop collapse(2)
237237 DO i = 1 , n
@@ -246,6 +246,51 @@ program acc_loop
246246! CHECK: acc.yield
247247! CHECK-NEXT: } attributes {collapse = [2], collapseDeviceType = [#acc.device_type<none>]{{.*}}}
248248
249+ ! $acc loop collapse(2) tile(tileSize)
250+ DO i = 1 , n
251+ DO j = 1 , n
252+ c(i, j) = d(i, j)
253+ END DO
254+ END DO
255+
256+ ! CHECK: acc.loop {{.*}} tile({%{{.*}} : i32}) control(%arg0 : i32, %arg1 : i32) = (%{{.*}} : i32, i32) to (%{{.*}} : i32, i32) step (%{{.*}} : i32, i32) {
257+ ! CHECK: fir.store %arg0 to %{{.*}} : !fir.ref<i32>
258+ ! CHECK: fir.store %arg1 to %{{.*}} : !fir.ref<i32>
259+ ! CHECK: acc.yield
260+ ! CHECK-NEXT: } attributes {collapse = [2], collapseDeviceType = [#acc.device_type<none>]{{.*}}}
261+
262+ ! $acc loop collapse(2) tile(tileSize, tileSize, tileSize)
263+ DO i = 1 , n
264+ DO j = 1 , n
265+ DO k = 1 , n
266+ c(i, j) = d(i, j)
267+ END DO
268+ END DO
269+ END DO
270+
271+ ! CHECK: acc.loop {{.*}} tile({%{{.*}} : i32, %{{.*}} : i32, %{{.*}} : i32}) control(%arg0 : i32, %arg1 : i32, %arg2 : i32) = (%{{.*}} : i32, i32, i32) to (%{{.*}} : i32, i32, i32) step (%{{.*}} : i32, i32, i32) {
272+ ! CHECK: fir.store %arg0 to %{{.*}} : !fir.ref<i32>
273+ ! CHECK: fir.store %arg1 to %{{.*}} : !fir.ref<i32>
274+ ! CHECK: fir.store %arg2 to %{{.*}} : !fir.ref<i32>
275+ ! CHECK: acc.yield
276+ ! CHECK-NEXT: } attributes {collapse = [2], collapseDeviceType = [#acc.device_type<none>]{{.*}}}
277+
278+ ! $acc loop collapse(3) tile(tileSize, tileSize)
279+ DO i = 1 , n
280+ DO j = 1 , n
281+ DO k = 1 , n
282+ c(i, j) = d(i, j)
283+ END DO
284+ END DO
285+ END DO
286+
287+ ! CHECK: acc.loop {{.*}} tile({%{{.*}} : i32, %{{.*}} : i32}) control(%arg0 : i32, %arg1 : i32, %arg2 : i32) = (%{{.*}} : i32, i32, i32) to (%{{.*}} : i32, i32, i32) step (%{{.*}} : i32, i32, i32) {
288+ ! CHECK: fir.store %arg0 to %{{.*}} : !fir.ref<i32>
289+ ! CHECK: fir.store %arg1 to %{{.*}} : !fir.ref<i32>
290+ ! CHECK: fir.store %arg2 to %{{.*}} : !fir.ref<i32>
291+ ! CHECK: acc.yield
292+ ! CHECK-NEXT: } attributes {collapse = [3], collapseDeviceType = [#acc.device_type<none>]{{.*}}}
293+
249294 ! $acc loop
250295 DO i = 1 , n
251296 ! $acc loop
0 commit comments