blob: b087f8154d2deab24c90a7c5945939136bfa8d5c [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:directive>do ordered</ompts:directive>
3<ompts:version>2.0</ompts:version>
4<ompts:dependences>parallel private, critical</ompts:dependences>
5<ompts:testcode>
6 INTEGER FUNCTION i_islarger(i)
7 IMPLICIT NONE
8 INTEGER i, islarger
9 INTEGER last_i
10 COMMON /mycom/ last_i
11 IF ( i .GT. last_i) THEN
12 islarger = 1
13 ELSE
14 islarger = 0
15 END If
16 last_i = i
17 i_islarger = islarger
18 END
19
20 INTEGER FUNCTION <ompts:testcode:functionname>do_ordered</ompts:testcode:functionname>()
21 IMPLICIT NONE
22 INTEGER known_sum, is_larger
23 INTEGER last_i
24 INTEGER i_islarger
25 COMMON /mycom/ last_i
26
27<ompts:orphan:parms> i </ompts:orphan:parms>
28
29<ompts:orphan:vars>
30 INTEGER sum, i, my_islarger
31 COMMON /orphvars/ my_islarger, sum
32</ompts:orphan:vars>
33
34 sum = 0
35 is_larger = 1
36 last_i = 0
37!$omp parallel private(my_islarger)
38 my_islarger = 1
39!$omp do schedule(static,1) ordered
40 DO i=1, 99
41<ompts:orphan>
42<ompts:check>
43!$omp ordered
44</ompts:check>
45 IF (i_islarger(i) .EQ. 1 .AND. my_islarger .EQ. 1) THEN
46 my_islarger = 1
47 ELSE
48 my_islarger = 0
49 END IF
50 sum = sum + i
51<ompts:check>
52!$omp end ordered
53</ompts:check>
54</ompts:orphan>
55 END DO
56!$omp end do
57!$omp critical
58 IF (is_larger .EQ. 1 .AND. my_islarger .EQ. 1 ) THEN
59 is_larger = 1
60 ELSE
61 is_larger = 0
62 END IF
63!$omp end critical
64!$omp end parallel
65 known_sum = (99*100)/2
66 IF ( known_sum .EQ. sum .AND. is_larger .EQ. 1) THEN
67 <testfunctionname></testfunctionname> = 1
68 ELSE
69 <testfunctionname></testfunctionname> = 0
70 END IF
71 END
72</ompts:testcode>
73</ompts:test>