85 lines
1.6 KiB
Fortran
85 lines
1.6 KiB
Fortran
! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s
|
|
|
|
subroutine test_unstructured1(a, b, c)
|
|
integer :: i, j, k
|
|
real :: a(:,:,:), b(:,:,:), c(:,:,:)
|
|
|
|
!$acc data copy(a, b, c)
|
|
|
|
!$acc kernels
|
|
a(:,:,:) = 0.0
|
|
!$acc end kernels
|
|
|
|
!$acc kernels
|
|
do i = 1, 10
|
|
do j = 1, 10
|
|
do k = 1, 10
|
|
end do
|
|
end do
|
|
end do
|
|
!$acc end kernels
|
|
|
|
do i = 1, 10
|
|
do j = 1, 10
|
|
do k = 1, 10
|
|
end do
|
|
end do
|
|
|
|
if (a(1,2,3) > 10) stop 'just to be unstructured'
|
|
end do
|
|
|
|
!$acc end data
|
|
|
|
end subroutine
|
|
|
|
! CHECK-LABEL: func.func @_QPtest_unstructured1
|
|
! CHECK: acc.data
|
|
! CHECK: acc.kernels
|
|
! CHECK: acc.kernels
|
|
! CHECK: fir.call @_FortranAStopStatementText
|
|
|
|
|
|
subroutine test_unstructured2(a, b, c)
|
|
integer :: i, j, k
|
|
real :: a(:,:,:), b(:,:,:), c(:,:,:)
|
|
|
|
!$acc parallel loop
|
|
do i = 1, 10
|
|
do j = 1, 10
|
|
do k = 1, 10
|
|
if (a(1,2,3) > 10) stop 'just to be unstructured'
|
|
end do
|
|
end do
|
|
end do
|
|
|
|
! CHECK-LABEL: func.func @_QPtest_unstructured2
|
|
! CHECK: acc.parallel
|
|
! CHECK: acc.loop
|
|
! CHECK: fir.call @_FortranAStopStatementText
|
|
! CHECK: acc.yield
|
|
! CHECK: acc.yield
|
|
! CHECK: acc.yield
|
|
|
|
end subroutine
|
|
|
|
subroutine test_unstructured3(a, b, c)
|
|
integer :: i, j, k
|
|
real :: a(:,:,:), b(:,:,:), c(:,:,:)
|
|
|
|
!$acc parallel
|
|
do i = 1, 10
|
|
do j = 1, 10
|
|
do k = 1, 10
|
|
if (a(1,2,3) > 10) stop 'just to be unstructured'
|
|
end do
|
|
end do
|
|
end do
|
|
!$acc end parallel
|
|
|
|
! CHECK-LABEL: func.func @_QPtest_unstructured3
|
|
! CHECK: acc.parallel
|
|
! CHECK: fir.call @_FortranAStopStatementText
|
|
! CHECK: acc.yield
|
|
! CHECK: acc.yield
|
|
|
|
end subroutine
|