]> git.ipfire.org Git - thirdparty/gcc.git/blob - libgomp/testsuite/libgomp.oacc-fortran/kernels-loop-data-update.f95
cab1f2c674c9d31a3253942ceb4ca4badc24dcd8
[thirdparty/gcc.git] / libgomp / testsuite / libgomp.oacc-fortran / kernels-loop-data-update.f95
1 ! { dg-do run }
2 ! { dg-options "-ftree-parallelize-loops=32" }
3
4 program main
5 implicit none
6 integer, parameter :: n = 1024
7 integer, dimension (0:n-1) :: a, b, c
8 integer :: i, ii
9
10 !$acc enter data create (a(0:n-1), b(0:n-1), c(0:n-1))
11
12 !$acc kernels present (a(0:n-1))
13 do i = 0, n - 1
14 a(i) = i * 2
15 end do
16 !$acc end kernels
17
18 do i = 0, n -1
19 b(i) = i * 4
20 end do
21
22 !$acc update device (b(0:n-1))
23
24 !$acc kernels present (a(0:n-1), b(0:n-1), c(0:n-1))
25 do ii = 0, n - 1
26 c(ii) = a(ii) + b(ii)
27 end do
28 !$acc end kernels
29
30 !$acc exit data copyout (a(0:n-1), c(0:n-1))
31
32 do i = 0, n - 1
33 if (c(i) .ne. a(i) + b(i)) call abort
34 end do
35
36 end program main