xref: /openbsd-src/gnu/gcc/libgomp/testsuite/libgomp.c/ordered-3.c (revision 404b540a9034ac75a6199ad1a32d1bbc7a0d4210)
1*404b540aSrobert #include <stdlib.h>
2*404b540aSrobert 
3*404b540aSrobert int cnt;
4*404b540aSrobert 
5*404b540aSrobert void
check(int x)6*404b540aSrobert check (int x)
7*404b540aSrobert {
8*404b540aSrobert   if (cnt++ != x)
9*404b540aSrobert     abort ();
10*404b540aSrobert }
11*404b540aSrobert 
12*404b540aSrobert int
main(void)13*404b540aSrobert main (void)
14*404b540aSrobert {
15*404b540aSrobert   int j;
16*404b540aSrobert 
17*404b540aSrobert   cnt = 0;
18*404b540aSrobert #pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (0)
19*404b540aSrobert   for (j = 0; j < 1000; j++)
20*404b540aSrobert     {
21*404b540aSrobert #pragma omp ordered
22*404b540aSrobert       check (j);
23*404b540aSrobert     }
24*404b540aSrobert 
25*404b540aSrobert   cnt = 0;
26*404b540aSrobert #pragma omp parallel for ordered schedule (static, 1) num_threads (4) if (1)
27*404b540aSrobert   for (j = 0; j < 1000; j++)
28*404b540aSrobert     {
29*404b540aSrobert #pragma omp ordered
30*404b540aSrobert       check (j);
31*404b540aSrobert     }
32*404b540aSrobert 
33*404b540aSrobert   cnt = 0;
34*404b540aSrobert #pragma omp parallel for ordered schedule (runtime) num_threads (4) if (0)
35*404b540aSrobert   for (j = 0; j < 1000; j++)
36*404b540aSrobert     {
37*404b540aSrobert #pragma omp ordered
38*404b540aSrobert       check (j);
39*404b540aSrobert     }
40*404b540aSrobert 
41*404b540aSrobert   cnt = 0;
42*404b540aSrobert #pragma omp parallel for ordered schedule (runtime) num_threads (4) if (1)
43*404b540aSrobert   for (j = 0; j < 1000; j++)
44*404b540aSrobert     {
45*404b540aSrobert #pragma omp ordered
46*404b540aSrobert       check (j);
47*404b540aSrobert     }
48*404b540aSrobert 
49*404b540aSrobert   cnt = 0;
50*404b540aSrobert #pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (0)
51*404b540aSrobert   for (j = 0; j < 1000; j++)
52*404b540aSrobert     {
53*404b540aSrobert #pragma omp ordered
54*404b540aSrobert       check (j);
55*404b540aSrobert     }
56*404b540aSrobert 
57*404b540aSrobert   cnt = 0;
58*404b540aSrobert #pragma omp parallel for ordered schedule (dynamic) num_threads (4) if (1)
59*404b540aSrobert   for (j = 0; j < 1000; j++)
60*404b540aSrobert     {
61*404b540aSrobert #pragma omp ordered
62*404b540aSrobert       check (j);
63*404b540aSrobert     }
64*404b540aSrobert 
65*404b540aSrobert   cnt = 0;
66*404b540aSrobert #pragma omp parallel for ordered schedule (guided) num_threads (4) if (0)
67*404b540aSrobert   for (j = 0; j < 1000; j++)
68*404b540aSrobert     {
69*404b540aSrobert #pragma omp ordered
70*404b540aSrobert       check (j);
71*404b540aSrobert     }
72*404b540aSrobert 
73*404b540aSrobert   cnt = 0;
74*404b540aSrobert #pragma omp parallel for ordered schedule (guided) num_threads (4) if (1)
75*404b540aSrobert   for (j = 0; j < 1000; j++)
76*404b540aSrobert     {
77*404b540aSrobert #pragma omp ordered
78*404b540aSrobert       check (j);
79*404b540aSrobert     }
80*404b540aSrobert 
81*404b540aSrobert   return 0;
82*404b540aSrobert }
83