Skip gnat.dg/prot7.adb on hppa.
[official-gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / data-1.f90
blobeeb06f3c84ffdbe5e41c5dbd6e36b7458c86b742
1 ! { dg-do run }
2 ! { dg-additional-options "-cpp" }
4 function is_mapped (n) result (rc)
5 use openacc
7 integer, intent (in) :: n
8 logical rc
10 #if ACC_MEM_SHARED
11 integer i
13 rc = .TRUE.
14 i = n
15 #else
16 rc = acc_is_present (n, sizeof (n))
17 #endif
19 end function is_mapped
21 program main
22 integer i, j
23 logical is_mapped
25 i = -1
26 j = -2
28 !$acc data copyin (i, j)
29 if (is_mapped (i) .eqv. .FALSE.) stop 1
30 if (is_mapped (j) .eqv. .FALSE.) stop 2
32 if (i .ne. -1 .or. j .ne. -2) stop 3
34 i = 2
35 j = 1
37 if (i .ne. 2 .or. j .ne. 1) stop 4
38 !$acc end data
40 if (i .ne. 2 .or. j .ne. 1) stop 5
42 i = -1
43 j = -2
45 !$acc data copyout (i, j)
46 if (is_mapped (i) .eqv. .FALSE.) stop 6
47 if (is_mapped (j) .eqv. .FALSE.) stop 7
49 if (i .ne. -1 .or. j .ne. -2) stop 8
51 i = 2
52 j = 1
54 if (i .ne. 2 .or. j .ne. 1) stop 9
56 !$acc parallel present (i, j)
57 i = 4
58 j = 2
59 !$acc end parallel
60 !$acc end data
62 if (i .ne. 4 .or. j .ne. 2) stop 10
64 i = -1
65 j = -2
67 !$acc data create (i, j)
68 if (is_mapped (i) .eqv. .FALSE.) stop 11
69 if (is_mapped (j) .eqv. .FALSE.) stop 12
71 if (i .ne. -1 .or. j .ne. -2) stop 13
73 i = 2
74 j = 1
76 if (i .ne. 2 .or. j .ne. 1) stop 14
77 !$acc end data
79 if (i .ne. 2 .or. j .ne. 1) stop 15
81 i = -1
82 j = -2
84 !$acc data present_or_copyin (i, j)
85 if (is_mapped (i) .eqv. .FALSE.) stop 16
86 if (is_mapped (j) .eqv. .FALSE.) stop 17
88 if (i .ne. -1 .or. j .ne. -2) stop 18
90 i = 2
91 j = 1
93 if (i .ne. 2 .or. j .ne. 1) stop 19
94 !$acc end data
96 if (i .ne. 2 .or. j .ne. 1) stop 20
98 i = -1
99 j = -2
101 !$acc data present_or_copyout (i, j)
102 if (is_mapped (i) .eqv. .FALSE.) stop 21
103 if (is_mapped (j) .eqv. .FALSE.) stop 22
105 if (i .ne. -1 .or. j .ne. -2) stop 23
107 i = 2
108 j = 1
110 if (i .ne. 2 .or. j .ne. 1) stop 24
112 !$acc parallel present (i, j)
113 i = 4
114 j = 2
115 !$acc end parallel
116 !$acc end data
118 if (i .ne. 4 .or. j .ne. 2) stop 25
120 i = -1
121 j = -2
123 !$acc data present_or_copy (i, j)
124 if (is_mapped (i) .eqv. .FALSE.) stop 26
125 if (is_mapped (j) .eqv. .FALSE.) stop 27
127 if (i .ne. -1 .or. j .ne. -2) stop 28
129 i = 2
130 j = 1
132 if (i .ne. 2 .or. j .ne. 1) stop 29
133 !$acc end data
135 #if ACC_MEM_SHARED
136 if (i .ne. 2 .or. j .ne. 1) stop 30
137 #else
138 if (i .ne. -1 .or. j .ne. -2) stop 31
139 #endif
141 i = -1
142 j = -2
144 !$acc data present_or_create (i, j)
145 if (is_mapped (i) .eqv. .FALSE.) stop 32
146 if (is_mapped (j) .eqv. .FALSE.) stop 33
148 i = 2
149 j = 1
151 if (i .ne. 2 .or. j .ne. 1) stop 34
152 !$acc end data
154 if (i .ne. 2 .or. j .ne. 1) stop 35
156 i = -1
157 j = -2
159 !$acc data copyin (i, j)
160 !$acc data present (i, j)
161 if (is_mapped (i) .eqv. .FALSE.) stop 36
162 if (is_mapped (j) .eqv. .FALSE.) stop 37
164 if (i .ne. -1 .or. j .ne. -2) stop 38
166 i = 2
167 j = 1
169 if (i .ne. 2 .or. j .ne. 1) stop 39
170 !$acc end data
171 !$acc end data
173 if (i .ne. 2 .or. j .ne. 1) stop 40
175 i = -1
176 j = -2
178 !$acc data copyin (i, j)
179 !$acc data present (i, j)
180 if (is_mapped (i) .eqv. .FALSE.) stop 41
181 if (is_mapped (j) .eqv. .FALSE.) stop 42
183 if (i .ne. -1 .or. j .ne. -2) stop 43
185 i = 2
186 j = 1
188 if (i .ne. 2 .or. j .ne. 1) stop 44
189 !$acc end data
190 !$acc end data
192 if (i .ne. 2 .or. j .ne. 1) stop 45
194 i = -1
195 j = -2
197 !$acc data
198 #if !ACC_MEM_SHARED
199 if (is_mapped (i) .eqv. .TRUE.) stop 46
200 if (is_mapped (j) .eqv. .TRUE.) stop 47
201 #endif
202 if (i .ne. -1 .or. j .ne. -2) stop 48
204 i = 2
205 j = 1
207 if (i .ne. 2 .or. j .ne. 1) stop 49
208 !$acc end data
210 if (i .ne. 2 .or. j .ne. 1) stop 50
212 end program main