llvm-project/flang/test/Parser/cuf-sanity-common
Peter Klausler 27f71807da
[flang] CUDA Fortran - part 2/5: symbols & scopes
Add representations of CUDA Fortran data and subprogram attributes
to the symbol table and scopes of semantics.  Set them in name
resolution, and emit them to module files.

Depends on https://reviews.llvm.org/D150159.

Differential Revision: https://reviews.llvm.org/D150161
2023-05-31 10:19:32 -07:00

38 lines
1.0 KiB
Plaintext

! 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
!$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
call globalsub<<<1, 2>>>
call globalsub<<<1, 2, 3>>>
call globalsub<<<1, 2, 3, 4>>>
allocate(pa(32), stream = 1, pinned = isPinned)
end subroutine
end module