blob: 9b7a250d340765a92c8a7fcf6c2fde4b3cd36210 [file] [log] [blame]
Jim Cownie18d84732014-05-10 17:02:09 +00001<ompts:test>
2<ompts:testdescription></ompts:testdescription>
3<ompts:ompversion>2.0</ompts:ompversion>
4<ompts:directive>omp single nowait</ompts:directive>
5<ompts:dependences>omp critical,omp atomic</ompts:dependences>
6<ompts:testcode>
7#include <stdio.h>
8#include "omp_testsuite.h"
9
10int my_iterations;
11#pragma omp threadprivate(my_iterations)
12
13int <ompts:testcode:functionname>omp_single_nowait</ompts:testcode:functionname>(FILE * logFile)
14{
15 <ompts:orphan:vars>
16 int nr_iterations;
17 </ompts:orphan:vars>
18
19 int total_iterations = 0;
20 int i;
21
22 nr_iterations = 0;
23 my_iterations = 0;
24
25#pragma omp parallel private(i)
26 {
27 for (i = 0; i < LOOPCOUNT; i++)
28 {
29 <ompts:orphan>
30 <ompts:check>#pragma omp single nowait</ompts:check>
31 {
32#pragma omp atomic
33 nr_iterations++;
34 } /* end of single*/
35 </ompts:orphan>
36 } /* end of for */
37 } /* end of parallel */
38
39#pragma omp parallel private(i)
40 {
41 my_iterations = 0;
42 for (i = 0; i < LOOPCOUNT; i++)
43 {
44 <ompts:orphan>
45 <ompts:check>#pragma omp single nowait</ompts:check>
46 {
47 my_iterations++;
48 } /* end of single*/
49 </ompts:orphan>
50 } /* end of for */
51#pragma omp critical
52 {
53 total_iterations += my_iterations;
54 }
55
56 } /* end of parallel */
57 return ((nr_iterations == LOOPCOUNT) && (total_iterations == LOOPCOUNT));
58} /* end of check_single_nowait*/
59</ompts:testcode>
60</ompts:test>