OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgomp/] [testsuite/] [libgomp.fortran/] [reduction2.f90] - Blame information for rev 735

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 735 jeremybenn
! { dg-do run }
2
!$ use omp_lib
3
 
4
  logical :: l, la (4), m, ma (4), v
5
  integer :: n, cnt
6
 
7
  l = .true.
8
  la = (/.true., .false., .true., .true./)
9
  m = .false.
10
  ma = (/.false., .false., .false., .true./)
11
  v = .false.
12
  cnt = -1
13
 
14
!$omp parallel num_threads (3) private (n) reduction (.or.:v) &
15
!$omp & reduction (.and.:l, la) reduction (.or.:m, ma)
16
!$ if (.not. l .or. any (.not. la)) v = .true.
17
!$ if (m .or. any (ma)) v = .true.
18
  n = omp_get_thread_num ()
19
  if (n .eq. 0) then
20
    cnt = omp_get_num_threads ()
21
    l = .false.
22
    la(3) = .false.
23
    ma(2) = .true.
24
  else if (n .eq. 1) then
25
    l = .false.
26
    la(4) = .false.
27
    ma(1) = .true.
28
  else
29
    la(3) = .false.
30
    m = .true.
31
    ma(1) = .true.
32
  end if
33
!$omp end parallel
34
  if (v) call abort
35
  if (cnt .eq. 3) then
36
    if (l .or. any (la .neqv. (/.true., .false., .false., .false./))) call abort
37
    if (.not. m .or. any (ma .neqv. (/.true., .true., .false., .true./))) call abort
38
  end if
39
 
40
  l = .true.
41
  la = (/.true., .false., .true., .true./)
42
  m = .false.
43
  ma = (/.false., .false., .false., .true./)
44
  v = .false.
45
  cnt = -1
46
 
47
!$omp parallel num_threads (3) private (n) reduction (.or.:v) &
48
!$omp & reduction (.eqv.:l, la) reduction (.neqv.:m, ma)
49
!$ if (.not. l .or. any (.not. la)) v = .true.
50
!$ if (m .or. any (ma)) v = .true.
51
  n = omp_get_thread_num ()
52
  if (n .eq. 0) then
53
    cnt = omp_get_num_threads ()
54
    l = .false.
55
    la(3) = .false.
56
    ma(2) = .true.
57
  else if (n .eq. 1) then
58
    l = .false.
59
    la(4) = .false.
60
    ma(1) = .true.
61
  else
62
    la(3) = .false.
63
    m = .true.
64
    ma(1) = .true.
65
  end if
66
!$omp end parallel
67
  if (v) call abort
68
  if (cnt .eq. 3) then
69
    if (.not. l .or. any (la .neqv. (/.true., .false., .true., .false./))) call abort
70
    if (.not. m .or. any (ma .neqv. (/.false., .true., .false., .true./))) call abort
71
  end if
72
 
73
end

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.