Add support for ARMv8-R architecture
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / examples-4 / target_data-1.f90
blob98e5c0b8f77752a04676760c9549f89f3bc51dc8
1 ! { dg-do run }
3 module e_51_1_mod
4 contains
5 subroutine init (v1, v2, N)
6 integer :: i, N
7 real :: v1(N), v2(N)
8 do i = 1, N
9 v1(i) = i + 2.0
10 v2(i) = i - 3.0
11 end do
12 end subroutine
14 subroutine check (p, N)
15 integer :: i, N
16 real, parameter :: EPS = 0.00001
17 real :: diff, p(N)
18 do i = 1, N
19 diff = p(i) - (i + 2.0) * (i - 3.0)
20 if (diff > EPS .or. -diff > EPS) call abort
21 end do
22 end subroutine
24 subroutine vec_mult (N)
25 real :: p(N), v1(N), v2(N)
26 integer :: i, N
27 call init (v1, v2, N)
28 !$omp target data map(to: v1, v2) map(from: p)
29 !$omp target
30 !$omp parallel do
31 do i = 1, N
32 p(i) = v1(i) * v2(i)
33 end do
34 !$omp end target
35 !$omp end target data
36 call check (p, N)
37 end subroutine
38 end module
40 program e_51_1
41 use e_51_1_mod, only : vec_mult
42 integer :: n
43 n = 1000
44 call vec_mult (n)
45 end program