! Common source for CUF parse tree and unparsing tests.
!@cuf subroutine atcuf;
end

#ifdef _CUDA
    subroutine cudadefd;
end
#endif

module m
  real, allocatable, pinned ::pa(:)
 contains
  attributes(device) subroutine devicesub; end
  attributes(device) real function devicefunc(); devicefunc = 1.; end
  attributes(global) subroutine globalsub; end
  attributes(grid_global) subroutine gridglobalsub; end
  attributes(host) subroutine hostsub; end
  attributes(global) launch_bounds(1, 2) subroutine lbsub; end
  attributes(global) cluster_dims(1, 2, 3) subroutine cdsub; end
  attributes(device) subroutine attrs
    attributes(device) :: devx1
    real, device :: devx2
  end subroutine
  subroutine test
    logical isPinned
    real a(10), x, y, z
    !$cuf kernel do(1) <<<*, *, stream = 1>>>
    do j = 1, 10
    end do
    !$cuf kernel do <<<1, (2, 3), stream = 1>>>
    do j = 1, 10
    end do
    !$cuf kernel do <<<*, *>>> reduce(+:x,y) reduce(*:z)
    do j = 1, 10
      x = x + a(j)
      y = y + a(j)
      z = z * a(j)
    end do
    call globalsub<<<1, 2>>>
    call globalsub<<<1, 2, 3>>>
    call globalsub<<<1, 2, 3, 4>>>
    allocate(pa(32), pinned = isPinned)
  end subroutine
end module
