This is a large series of runtime tests that help to add coverage for the specific cases intended to be supported by the PR stack that extends derived type map support in Flang+OpenMP. Primarily this will add functionality coverage, there's cases where things may work, but not optimally (or at least similarly to the status quo in Clang), addiitonal IR tests are added in the relevant segments of the related PRs to test for breakages like that. Pull Request: https://github.com/llvm/llvm-project/pull/82850
38 lines
926 B
Fortran
38 lines
926 B
Fortran
! Offloading test checking interaction of an
|
|
! enter and exit map of an array of scalars
|
|
! 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-pc-linux-gnu
|
|
! UNSUPPORTED: x86_64-pc-linux-gnu-LTO
|
|
|
|
! RUN: %libomptarget-compile-fortran-run-and-check-generic
|
|
program main
|
|
integer :: array(10)
|
|
|
|
do I = 1, 10
|
|
array(I) = I + I
|
|
end do
|
|
|
|
!$omp target enter data map(to: array)
|
|
! Shouldn't overwrite data already locked in
|
|
! on target via enter, this will then be
|
|
! overwritten by our exit
|
|
do I = 1, 10
|
|
array(I) = 10
|
|
end do
|
|
|
|
!$omp target
|
|
do i=1,10
|
|
array(i) = array(i) + i
|
|
end do
|
|
!$omp end target
|
|
|
|
!$omp target exit data map(from: array)
|
|
print*, array
|
|
end program
|
|
|
|
!CHECK: 3 6 9 12 15 18 21 24 27 30
|