Add support for ARMv8-R architecture
[official-gcc.git] / libgomp / testsuite / libgomp.fortran / examples-4 / simd-8.f90
blob3c7869d602ed1865a1e034c478bae9d8789de70f
1 ! { dg-do run }
2 ! { dg-additional-options "-msse2" { target sse2_runtime } }
3 ! { dg-additional-options "-mavx" { target avx_runtime } }
5 module work
7 integer :: P(1000)
8 real :: A(1000)
10 contains
11 function do_work(arr) result(pri)
12 implicit none
13 real, dimension(*) :: arr
15 real :: pri
16 integer :: i, j
18 !$omp simd private(j) lastprivate(pri)
19 do i = 1, 999
20 j = P(i)
22 pri = 0.5
23 if (mod(j-1, 2) == 0) then
24 pri = A(j+1) + arr(i)
25 endif
26 A(j) = pri * 1.5
27 pri = pri + A(j)
28 end do
30 end function do_work
32 end module work
34 program simd_8f
35 use work
36 implicit none
37 real :: pri, arr(1000), diff
38 integer :: i
39 real, parameter :: EPS = 0.005
41 do i = 1, 1000
42 P(i) = i
43 A(i) = (i-1) * 1.5
44 arr(i) = (i-1) * 1.8
45 end do
46 pri = do_work(arr)
48 diff = pri - 8237.25
50 if (diff > EPS .or. -diff > EPS) call abort
52 end program