comparison libgomp/testsuite/libgomp.c/atomic-10.c @ 0:a06113de4d67

first commit
author kent <kent@cr.ie.u-ryukyu.ac.jp>
date Fri, 17 Jul 2009 14:47:48 +0900
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:a06113de4d67
1 /* { dg-do run } */
2
3 extern void abort (void);
4 int x1, x2, x3, x4, x5;
5 volatile int y6 = 9, y2, y3, y4, y5;
6 volatile unsigned char z1, z2, z3, z4, z5;
7 float a1, a2, a3, a4;
8
9 void
10 f1 (void)
11 {
12 #pragma omp atomic
13 x1++;
14 #pragma omp atomic
15 x2--;
16 #pragma omp atomic
17 ++x3;
18 #pragma omp atomic
19 --x4;
20 #pragma omp atomic
21 x5 += 1;
22 #pragma omp atomic
23 x1 -= y6;
24 #pragma omp atomic
25 x2 |= 1;
26 #pragma omp atomic
27 x3 &= 1;
28 #pragma omp atomic
29 x4 ^= 1;
30 #pragma omp atomic
31 x5 *= 3;
32 #pragma omp atomic
33 x1 /= 3;
34 #pragma omp atomic
35 x2 /= 3;
36 #pragma omp atomic
37 x3 <<= 3;
38 #pragma omp atomic
39 x4 >>= 3;
40 }
41
42 void
43 f2 (void)
44 {
45 #pragma omp atomic
46 y6++;
47 #pragma omp atomic
48 y2--;
49 #pragma omp atomic
50 ++y3;
51 #pragma omp atomic
52 --y4;
53 #pragma omp atomic
54 y5 += 1;
55 #pragma omp atomic
56 y6 -= x1;
57 #pragma omp atomic
58 y2 |= 1;
59 #pragma omp atomic
60 y3 &= 1;
61 #pragma omp atomic
62 y4 ^= 1;
63 #pragma omp atomic
64 y5 *= 3;
65 #pragma omp atomic
66 y6 /= 3;
67 #pragma omp atomic
68 y2 /= 3;
69 #pragma omp atomic
70 y3 <<= 3;
71 #pragma omp atomic
72 y4 >>= 3;
73 }
74
75 void
76 f3 (void)
77 {
78 #pragma omp atomic
79 z1++;
80 #pragma omp atomic
81 z2--;
82 #pragma omp atomic
83 ++z3;
84 #pragma omp atomic
85 --z4;
86 #pragma omp atomic
87 z5 += 1;
88 #pragma omp atomic
89 z1 |= 1;
90 #pragma omp atomic
91 z2 &= 1;
92 #pragma omp atomic
93 z3 ^= 1;
94 #pragma omp atomic
95 z4 *= 3;
96 #pragma omp atomic
97 z5 /= 3;
98 #pragma omp atomic
99 z1 /= 3;
100 #pragma omp atomic
101 z2 <<= 3;
102 #pragma omp atomic
103 z3 >>= 3;
104 }
105
106 void
107 f4 (void)
108 {
109 #pragma omp atomic
110 a1 += 8.0;
111 #pragma omp atomic
112 a2 *= 3.5;
113 #pragma omp atomic
114 a3 -= a1 + a2;
115 #pragma omp atomic
116 a4 /= 2.0;
117 }
118
119 int
120 main (void)
121 {
122 f1 ();
123 if (x1 != -2 || x2 != 0 || x3 != 8 || x4 != -1 || x5 != 3)
124 abort ();
125 f2 ();
126 if (y6 != 4 || y2 != 0 || y3 != 8 || y4 != -1 || y5 != 3)
127 abort ();
128 f3 ();
129 if (z1 != 0 || z2 != 8 || z3 != 0 || z4 != 253 || z5 != 0)
130 abort ();
131 a1 = 7;
132 a2 = 10;
133 a3 = 11;
134 a4 = 13;
135 f4 ();
136 if (a1 != 15.0 || a2 != 35.0 || a3 != -39.0 || a4 != 6.5)
137 abort ();
138 return 0;
139 }