diff options
Diffstat (limited to 'gcc-4.9/libgomp/testsuite/libgomp.fortran/simd1.f90')
-rw-r--r-- | gcc-4.9/libgomp/testsuite/libgomp.fortran/simd1.f90 | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/gcc-4.9/libgomp/testsuite/libgomp.fortran/simd1.f90 b/gcc-4.9/libgomp/testsuite/libgomp.fortran/simd1.f90 new file mode 100644 index 000000000..b97d27f8d --- /dev/null +++ b/gcc-4.9/libgomp/testsuite/libgomp.fortran/simd1.f90 @@ -0,0 +1,35 @@ +! { dg-do run } +! { dg-additional-options "-msse2" { target sse2_runtime } } +! { dg-additional-options "-mavx" { target avx_runtime } } + + type dt + integer :: x = 0 + end type + type (dt) :: t + integer :: i, j, k, l, r, s, a(30) + integer, target :: q(30) + integer, pointer :: p(:) + !$omp declare reduction (foo : integer : & + !$omp & omp_out = omp_out + omp_in) initializer (omp_priv = 0) + !$omp declare reduction (+ : dt : omp_out%x = omp_out%x & + !$omp & + omp_in%x) + a(:) = 1 + q(:) = 1 + p => q + r = 0 + j = 10 + k = 20 + s = 0 + !$omp simd safelen (8) reduction(+:r, t) linear(j, k : 2) & + !$omp& private (l) aligned(p : 4) reduction(foo:s) + do i = 1, 30 + l = j + k + a(i) + p(i) + r = r + l + j = j + 2 + k = k + 2 + s = s + l + t%x = t%x + l + end do + if (r.ne.2700.or.j.ne.70.or.k.ne.80.or.s.ne.2700) call abort + if (t%x.ne.2700) call abort +end |