xref: /llvm-project/flang/test/Lower/OpenACC/acc-unstructured.f90 (revision d82b52139a418a4c6eb6d95e553c25506988b169)
1! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
2
3subroutine test_unstructured1(a, b, c)
4  integer :: i, j, k
5  real :: a(:,:,:), b(:,:,:), c(:,:,:)
6
7  !$acc data copy(a, b, c)
8
9  !$acc kernels
10  a(:,:,:) = 0.0
11  !$acc end kernels
12
13  !$acc kernels
14  do i = 1, 10
15    do j = 1, 10
16      do k = 1, 10
17      end do
18    end do
19  end do
20  !$acc end kernels
21
22  do i = 1, 10
23    do j = 1, 10
24      do k = 1, 10
25      end do
26    end do
27
28    if (a(1,2,3) > 10) stop 'just to be unstructured'
29  end do
30
31  !$acc end data
32
33end subroutine
34
35! CHECK-LABEL: func.func @_QPtest_unstructured1
36! CHECK: acc.data
37! CHECK: acc.kernels
38! CHECK: acc.kernels
39! CHECK: fir.call @_FortranAStopStatementText
40
41
42subroutine test_unstructured2(a, b, c)
43  integer :: i, j, k
44  real :: a(:,:,:), b(:,:,:), c(:,:,:)
45
46  !$acc parallel loop
47  do i = 1, 10
48    do j = 1, 10
49      do k = 1, 10
50        if (a(1,2,3) > 10) stop 'just to be unstructured'
51      end do
52    end do
53  end do
54
55! CHECK-LABEL: func.func @_QPtest_unstructured2
56! CHECK: acc.parallel
57! CHECK: acc.loop
58! CHECK: fir.call @_FortranAStopStatementText
59! CHECK: acc.yield
60! CHECK: acc.yield
61! CHECK: acc.yield
62
63end subroutine
64
65subroutine test_unstructured3(a, b, c)
66  integer :: i, j, k
67  real :: a(:,:,:), b(:,:,:), c(:,:,:)
68
69  !$acc parallel
70  do i = 1, 10
71    do j = 1, 10
72      do k = 1, 10
73        if (a(1,2,3) > 10) stop 'just to be unstructured'
74      end do
75    end do
76  end do
77  !$acc end parallel
78
79! CHECK-LABEL: func.func @_QPtest_unstructured3
80! CHECK: acc.parallel
81! CHECK: fir.call @_FortranAStopStatementText
82! CHECK: acc.yield
83! CHECK: acc.yield
84
85end subroutine
86