56 lines
1.6 KiB
Fortran
56 lines
1.6 KiB
Fortran
! { dg-do run }
|
|
!$ use omp_lib
|
|
|
|
integer (kind = 4) :: i, ia (6), j, ja (6), k, ka (6), ta (6), n, cnt, x
|
|
logical :: v
|
|
|
|
i = int(Z'ffff0f')
|
|
ia = int(Z'f0ff0f')
|
|
j = int(Z'0f0000')
|
|
ja = int(Z'0f5a00')
|
|
k = int(Z'055aa0')
|
|
ka = int(Z'05a5a5')
|
|
v = .false.
|
|
cnt = -1
|
|
x = not(0)
|
|
|
|
!$omp parallel num_threads (3) private (n) reduction (.or.:v) &
|
|
!$omp & reduction (iand:i, ia) reduction (ior:j, ja) reduction (ieor:k, ka)
|
|
!$ if (i .ne. x .or. any (ia .ne. x)) v = .true.
|
|
!$ if (j .ne. 0 .or. any (ja .ne. 0)) v = .true.
|
|
!$ if (k .ne. 0 .or. any (ka .ne. 0)) v = .true.
|
|
n = omp_get_thread_num ()
|
|
if (n .eq. 0) then
|
|
cnt = omp_get_num_threads ()
|
|
i = int(Z'ff7fff')
|
|
ia(3:5) = int(Z'fffff1')
|
|
j = int(Z'078000')
|
|
ja(1:3) = 1
|
|
k = int(Z'78')
|
|
ka(3:6) = int(Z'f0f')
|
|
else if (n .eq. 1) then
|
|
i = int(Z'ffff77')
|
|
ia(2:5) = int(Z'ffafff')
|
|
j = int(Z'007800')
|
|
ja(2:5) = 8
|
|
k = int(Z'57')
|
|
ka(3:4) = int(Z'f0108')
|
|
else
|
|
i = int(Z'777fff')
|
|
ia(1:2) = int(Z'fffff3')
|
|
j = int(Z'000780')
|
|
ja(5:6) = int(Z'f00')
|
|
k = int(Z'1000')
|
|
ka(6:6) = int(Z'777')
|
|
end if
|
|
!$omp end parallel
|
|
if (v) stop 1
|
|
if (cnt .eq. 3) then
|
|
ta = (/int(Z'f0ff03'), int(Z'f0af03'), int(Z'f0af01'), int(Z'f0af01'), int(Z'f0af01'), int(Z'f0ff0f')/)
|
|
if (i .ne. int(Z'777f07') .or. any (ia .ne. ta)) stop 2
|
|
ta = (/int(Z'f5a01'), int(Z'f5a09'), int(Z'f5a09'), int(Z'f5a08'), int(Z'f5f08'), int(Z'f5f00')/)
|
|
if (j .ne. int(Z'fff80') .or. any (ja .ne. ta)) stop 3
|
|
ta = (/int(Z'5a5a5'), int(Z'5a5a5'), int(Z'aaba2'), int(Z'aaba2'), int(Z'5aaaa'), int(Z'5addd')/)
|
|
if (k .ne. int(Z'54a8f') .or. any (ka .ne. ta)) stop 4
|
|
end if
|
|
end
|