Print bug url for gcov-dump --help
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / subarrays-2.f90
blob81799f60733832cee1f0acea89d8106684a46378
1 program subarrays
2 integer, parameter :: n = 20, c = 10, low = 5, high = 10
3 integer :: i, a(n), b(n)
5 a(:) = 0
6 b(:) = 0
8 ! COPY
10 !$acc parallel copy (a(low:high))
11 !$acc loop
12 do i = low, high
13 a(i) = i
14 end do
15 !$acc end parallel
17 do i = low, high
18 b(i) = i
19 end do
21 call check (a, b, n)
23 ! COPYOUT
25 a(:) = 0
27 !$acc parallel copyout (a(low:high))
28 !$acc loop
29 do i = low, high
30 a(i) = i
31 end do
32 !$acc end parallel
34 do i = low, high
35 if (a(i) .ne. b(i)) call abort
36 end do
37 call check (a, b, n)
39 ! COPYIN
41 a(:) = 0
43 !$acc parallel copyout (a(low:high)) copyin (b(low:high))
44 !$acc loop
45 do i = low, high
46 a(i) = b(i)
47 end do
48 !$acc end parallel
50 call check (a, b, n)
52 ! PRESENT_OR_COPY
54 a(:) = 0
56 !$acc parallel pcopy (a(low:high))
57 !$acc loop
58 do i = low, high
59 a(i) = i
60 end do
61 !$acc end parallel
63 call check (a, b, n)
65 ! PRESENT_OR_COPYOUT
67 a(:) = 0
69 !$acc parallel pcopyout (a(low:high))
70 !$acc loop
71 do i = low, high
72 a(i) = i
73 end do
74 !$acc end parallel
76 call check (a, b, n)
78 ! PRESENT_OR_COPYIN
80 a(:) = 0
82 !$acc parallel pcopyout (a(low:high)) &
83 !$acc & pcopyin (b(low:high))
84 !$acc loop
85 do i = low, high
86 a(i) = b(i)
87 end do
88 !$acc end parallel
90 call check (a, b, n)
91 end program subarrays
93 subroutine check (a, b, n)
94 integer :: n, a(n), b(n)
95 integer :: i
97 do i = 1, n
98 if (a(i) .ne. b(i)) call abort
99 end do
100 end subroutine check