PR c++/86342 - -Wdeprecated-copy and system headers.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / kernels-map-1.f90
blob704ff622854ad970f7150207f663012a1b8c3024
1 ! Test the copy, copyin, copyout, pcopy, pcopyin, pcopyout, and pcreate
2 ! clauses on kernels constructs.
4 ! { dg-do run }
6 program map
7 integer, parameter :: n = 20, c = 10
8 integer :: i, a(n), b(n), d(n)
10 a(:) = 0
11 b(:) = 0
13 ! COPY
15 !$acc kernels copy (a)
16 !$acc loop
17 do i = 1, n
18 a(i) = i
19 end do
20 !$acc end kernels
22 do i = 1, n
23 b(i) = i
24 end do
26 call check (a, b, n)
28 ! COPYOUT
30 a(:) = 0
32 !$acc kernels copyout (a)
33 !$acc loop
34 do i = 1, n
35 a(i) = i
36 end do
37 !$acc end kernels
39 do i = 1, n
40 if (a(i) .ne. b(i)) call abort
41 end do
42 call check (a, b, n)
44 ! COPYIN
46 a(:) = 0
48 !$acc kernels copyout (a) copyin (b)
49 !$acc loop
50 do i = 1, n
51 a(i) = i
52 end do
53 !$acc end kernels
55 call check (a, b, n)
57 ! PRESENT_OR_COPY
59 !$acc kernels pcopy (a)
60 !$acc loop
61 do i = 1, n
62 a(i) = i
63 end do
64 !$acc end kernels
66 call check (a, b, n)
68 ! PRESENT_OR_COPYOUT
70 a(:) = 0
72 !$acc kernels pcopyout (a)
73 !$acc loop
74 do i = 1, n
75 a(i) = i
76 end do
77 !$acc end kernels
79 call check (a, b, n)
81 ! PRESENT_OR_COPYIN
83 a(:) = 0
85 !$acc kernels pcopyout (a) pcopyin (b)
86 !$acc loop
87 do i = 1, n
88 a(i) = i
89 end do
90 !$acc end kernels
92 call check (a, b, n)
94 ! PRESENT_OR_CREATE
96 a(:) = 0
98 !$acc kernels pcopyout (a) pcreate (d)
99 !$acc loop
100 do i = 1, n
101 d(i) = i
102 a(i) = d(i)
103 end do
104 !$acc end kernels
106 call check (a, b, n)
107 end program map
109 subroutine check (a, b, n)
110 integer :: n, a(n), b(n)
111 integer :: i
113 do i = 1, n
114 if (a(i) .ne. b(i)) call abort
115 end do
116 end subroutine check