2 ! { dg-additional-options "-msse2" { target sse2_runtime } }
3 ! { dg-additional-options "-mavx" { target avx_runtime } }
7 subroutine work( a
, b
, c
, n
)
10 double precision :: a(n
,n
), b(n
,n
), c(n
,n
), tmp
12 !$omp do simd collapse(2) private(tmp)
22 subroutine work_ref( a
, b
, c
, n
)
25 double precision :: a(n
,n
), b(n
,n
), c(n
,n
), tmp
34 end subroutine work_ref
36 subroutine init (a
, b
, n
)
38 double precision :: a(n
,n
), b(n
,n
)
52 subroutine check (a
, b
, n
)
54 double precision, parameter :: EPS
= 0.0000000000000001
55 double precision :: diff
, a(n
,n
), b(n
,n
)
58 diff
= a(i
,j
) - b(i
,j
)
59 if (diff
> EPS
.or
. -diff
> EPS
) STOP 1
68 double precision, dimension(32, 32) :: a
, b
, c
, c_ref
72 call work(a
, b
, c
, 32)
73 call work_ref(a
, b
, c_ref
, 32)
75 call check(c
, c_ref
, 32)