blob: 07bcbfd2c875290db134ac1f2105653760eb5fd5 [file] [edit]
! Offloading test for generic target regions containing different kinds of
! loop constructs inside.
! REQUIRES: flang, amdgpu
! RUN: %libomptarget-compile-fortran-run-and-check-generic
program main
integer :: i1, i2, n1, n2, counter
n1 = 100
n2 = 50
counter = 0
!$omp target map(tofrom:counter)
!$omp teams distribute reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
!$omp end target
! CHECK: 1 100
print '(I2" "I0)', 1, counter
counter = 0
!$omp target map(tofrom:counter)
!$omp parallel do reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
!$omp parallel do reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
!$omp end target
! CHECK: 2 200
print '(I2" "I0)', 2, counter
counter = 0
!$omp target map(tofrom:counter)
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
counter = counter + 1
!$omp end target
! CHECK: 3 203
print '(I2" "I0)', 3, counter
counter = 0
!$omp target map(tofrom: counter)
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i1=1, n1
counter = counter + 1
end do
counter = counter + 1
!$omp end target
! CHECK: 4 102
print '(I2" "I0)', 4, counter
counter = 0
!$omp target teams distribute reduction(+:counter)
do i1=1, n1
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
end do
! CHECK: 5 5000
print '(I2" "I0)', 5, counter
counter = 0
!$omp target teams distribute reduction(+:counter)
do i1=1, n1
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
counter = counter + 1
end do
! CHECK: 6 5200
print '(I2" "I0)', 6, counter
counter = 0
!$omp target teams distribute reduction(+:counter)
do i1=1, n1
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
end do
! CHECK: 7 10000
print '(I2" "I0)', 7, counter
counter = 0
!$omp target teams distribute reduction(+:counter)
do i1=1, n1
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
counter = counter + 1
!$omp parallel do reduction(+:counter)
do i2=1, n2
counter = counter + 1
end do
counter = counter + 1
end do
! CHECK: 8 10300
print '(I2" "I0)', 8, counter
end program