1 ! { dg-do run { target openacc_nvidia_accel_selected } }
3 ! Tests to exercise the declare directive along with
17 !$acc declare create (z)
20 subroutine subr5 (a
, b
, c
, d
)
22 integer, parameter :: N
= 8
25 !$acc declare present_or_copyin (a)
27 !$acc declare present_or_create (b)
29 !$acc declare present_or_copyout (c)
31 !$acc declare present_or_copy (d)
45 subroutine subr4 (a
, b
)
47 integer, parameter :: N
= 8
50 !$acc declare present (a)
52 !$acc declare copyout (b)
64 subroutine subr3 (a
, c
)
66 integer, parameter :: N
= 8
69 !$acc declare present (a)
71 !$acc declare copyin (c)
84 subroutine subr2 (a
, b
, c
)
86 integer, parameter :: N
= 8
89 !$acc declare present (a)
91 !$acc declare create (b)
93 !$acc declare copy (c)
100 c(i
) = b(i
) + c(i
) + 1
108 integer, parameter :: N
= 8
111 !$acc declare present (a)
123 subroutine test (a
, e
)
127 integer, parameter :: N
= 8
130 if (acc_is_present (a
) .neqv
. e
) call abort
134 subroutine subr0 (a
, b
, c
, d
)
136 integer, parameter :: N
= 8
138 !$acc declare copy (a)
144 call test (a
, .true
.)
145 call test (b
, .false
.)
146 call test (c
, .false
.)
150 call test (a
, .true
.)
151 call test (b
, .false
.)
152 call test (c
, .false
.)
156 call test (a
, .true
.)
157 call test (b
, .false
.)
158 call test (c
, .false
.)
161 if (c(i
) .ne
. 8) call abort
166 call test (a
, .true
.)
167 call test (b
, .false
.)
168 call test (c
, .false
.)
171 if (a(i
) .ne
. 2) call abort
172 if (c(i
) .ne
. 8) call abort
177 call test (a
, .true
.)
178 call test (b
, .false
.)
179 call test (c
, .false
.)
182 if (b(i
) .ne
. 8) call abort
185 call subr5 (a
, b
, c
, d
)
187 call test (a
, .true
.)
188 call test (b
, .false
.)
189 call test (c
, .false
.)
190 call test (d
, .false
.)
193 if (c(i
) .ne
. 8) call abort
194 if (d(i
) .ne
. 13) call abort
203 integer, parameter :: N
= 8
215 if (acc_is_present (z
) .neqv
. .true
.) call abort
217 call subr0 (a
, b
, c
, d
)
219 call test (a
, .false
.)
220 call test (b
, .false
.)
221 call test (c
, .false
.)
222 call test (d
, .false
.)
225 if (a(i
) .ne
. 8) call abort
226 if (b(i
) .ne
. 8) call abort
227 if (c(i
) .ne
. 8) call abort
228 if (d(i
) .ne
. 13) call abort