87 lines · plain
1! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s2 3subroutine test_unstructured1(a, b, c)4 integer :: i, j, k5 real :: a(:,:,:), b(:,:,:), c(:,:,:)6 7 !$acc data copy(a, b, c)8 9 !$acc kernels10 a(:,:,:) = 0.011 !$acc end kernels12 13 !$acc kernels14 do i = 1, 1015 do j = 1, 1016 do k = 1, 1017 end do18 end do19 end do20 !$acc end kernels21 22 do i = 1, 1023 do j = 1, 1024 do k = 1, 1025 end do26 end do27 28 if (a(1,2,3) > 10) stop 'just to be unstructured'29 end do30 31 !$acc end data32 33end subroutine34 35! CHECK-LABEL: func.func @_QPtest_unstructured136! CHECK: acc.data37! CHECK: acc.kernels38! CHECK: acc.kernels39! CHECK: fir.call @_FortranAStopStatementText40 41 42subroutine test_unstructured2(a, b, c)43 integer :: i, j, k44 real :: a(:,:,:), b(:,:,:), c(:,:,:)45 46 !$acc parallel loop47 do i = 1, 1048 do j = 1, 1049 do k = 1, 1050 if (a(1,2,3) > 10) stop 'just to be unstructured'51 end do52 end do53 end do54 55! CHECK-LABEL: func.func @_QPtest_unstructured256! CHECK: acc.parallel57! CHECK: acc.loop combined(parallel) private(%{{.*}} : !fir.ref<i32>) {58! CHECK: fir.call @_FortranAStopStatementText59! CHECK: acc.yield60! CHECK: acc.yield61! CHECK: } attributes {independent = [#acc.device_type<none>], unstructured}62! CHECK: acc.yield63 64end subroutine65 66subroutine test_unstructured3(a, b, c)67 integer :: i, j, k68 real :: a(:,:,:), b(:,:,:), c(:,:,:)69 70 !$acc parallel71 do i = 1, 1072 do j = 1, 1073 do k = 1, 1074 if (a(1,2,3) > 10) stop 'just to be unstructured'75 end do76 end do77 end do78 !$acc end parallel79 80! CHECK-LABEL: func.func @_QPtest_unstructured381! CHECK: acc.parallel82! CHECK: fir.call @_FortranAStopStatementText83! CHECK: acc.yield84! CHECK: acc.yield85 86end subroutine87