| ! RUN: %libomptarget-compile-fortran-run-and-check-generic | |
| ! REQUIRES: flang, amdgpu | |
| program main | |
| implicit none | |
| integer, parameter :: nnn = 1000 | |
| integer :: aaa(nnn), bbb | |
| integer :: x, y, got | |
| integer :: i | |
| x = 42 | |
| got = -1 | |
| !$omp target firstprivate(x) map(from:got) | |
| got = x + 1 | |
| !$omp end target | |
| if (got .ne. 43) then | |
| print *, "FAIL target firstprivate" | |
| stop 1 | |
| end if | |
| ! CHECK: PASS target firstprivate | |
| print *, "PASS target firstprivate" | |
| y = 10 | |
| got = -1 | |
| !$omp target firstprivate(y) nowait map(from:got) | |
| got = y + 1 | |
| !$omp end target | |
| !$omp taskwait | |
| if (got .ne. 11) then | |
| print *, "FAIL target firstprivate nowait" | |
| stop 1 | |
| end if | |
| ! CHECK: PASS target firstprivate nowait | |
| print *, "PASS target firstprivate nowait" | |
| aaa = 0 | |
| bbb = 1 | |
| !$omp target teams distribute parallel do firstprivate(bbb) | |
| do i = 1, nnn | |
| aaa(i) = bbb | |
| end do | |
| if (sum(abs(aaa)) .ne. nnn * bbb .or. any(aaa .ne. 1)) then | |
| print *, "FAIL target teams distribute parallel do firstprivate" | |
| stop 1 | |
| end if | |
| ! CHECK: PASS target teams distribute parallel do firstprivate | |
| print *, "PASS target teams distribute parallel do firstprivate" | |
| end program main |