! Offloading test checking the use of the depend clause on
! the target construct
! REQUIRES: flang, amdgcn-amd-amdhsa
! UNSUPPORTED: nvptx64-nvidia-cuda
! UNSUPPORTED: nvptx64-nvidia-cuda-LTO
! UNSUPPORTED: aarch64-unknown-linux-gnu
! UNSUPPORTED: aarch64-unknown-linux-gnu-LTO
! UNSUPPORTED: x86_64-unknown-linux-gnu
! UNSUPPORTED: x86_64-unknown-linux-gnu-LTO

! RUN: %libomptarget-compile-fortran-run-and-check-generic
program main
  implicit none
  integer :: a = 0
  INTERFACE
     FUNCTION omp_get_device_num() BIND(C)
       USE, INTRINSIC :: iso_c_binding, ONLY: C_INT
       integer :: omp_get_device_num
     END FUNCTION omp_get_device_num
  END INTERFACE

  call foo(5, a)
  print*, "======= FORTRAN Test passed! ======="
  print*, "foo(5) returned ", a, ", expected 6\n"

  !       stop 0
  contains
    subroutine foo(N, r)
      integer, intent(in) :: N
      integer, intent(out) :: r
      integer :: z, i, accumulator
      z = 1
      accumulator = 0
      ! Spawn 3 threads
      !$omp parallel num_threads(3)

      ! A single thread will then create two tasks - one is the 'producer' and
      ! potentially slower task that updates 'z' to 'N'. The second is an
      ! offloaded target task that increments 'z'. If the depend clauses work
      ! properly, the target task should wait for the 'producer' task to
      ! complete before incrementing 'z'. We use 'omp single' here because the
      ! depend clause establishes dependencies between sibling tasks only.
      ! This is the easiest way of creating two sibling tasks.
      !$omp single
      !$omp task depend(out: z) shared(z)
      do i=1, 32766
         ! dumb loop nest to slow down the update of 'z'.
         ! Adding a function call slows down the producer to the point
         ! that removing the depend clause from the target construct below
         ! frequently results in the wrong answer.
         accumulator = accumulator + omp_get_device_num()
      end do
      z = N
      !$omp end task

      ! z is 5 now. Increment z to 6.
      !$omp target map(tofrom: z) depend(in:z)
      z = z + 1
      !$omp end target
      !$omp end single
      !$omp end parallel
      ! Use 'accumulator' so it is not optimized away by the compiler.
      print *, accumulator
      r = z
    end subroutine foo

!CHECK: ======= FORTRAN Test passed! =======
!CHECK: foo(5) returned 6 , expected 6
end program main
