OpenMP-Examples/devices/sources/usm_scalar_ptr_ref_asc.1.f90
2024-11-13 11:07:08 -08:00

58 lines
952 B
Fortran

! @@name: usm_scalar_ptr_ref_asc.1
! @@type: F-free
! @@operation: compile
! @@expect: success
! @@version: omp_5.2
program main
!$omp requires unified_shared_memory
logical :: pass=.TRUE.
integer :: x
integer, target :: y
integer, pointer :: ptr
x = 0
! Case 1 : x is firstprivate
!$omp target
x = x + 1
!$omp end target
if(x /= 0 ) pass = .FALSE.
x = 0
ASSOCIATE( ax => x)
! Case 2 :
!$omp target
ax = ax + 1
!$omp end target
if(x /= 1 ) pass = .FALSE.
end ASSOCIATE
y = 0
ptr => y
! Case 3a : ptr is mapped
!$omp target
ptr = ptr + 1
!$omp end target
if(y /= 1 ) pass = .FALSE.
y = 0
! Case 3b : y is mapped
!$omp target
y = y + 1
!$omp end target
if(y /= 1 ) pass = .FALSE.
if(pass) then
print*, "PASSED"
else
print*, "FAILED"; stop 1
endif
end program