annotate libgomp/testsuite/libgomp.c/atomic-11.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* { dg-do run } */
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 extern void abort (void);
kono
parents:
diff changeset
4 int x = 6;
kono
parents:
diff changeset
5 float y;
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 int
kono
parents:
diff changeset
8 main (void)
kono
parents:
diff changeset
9 {
kono
parents:
diff changeset
10 int v;
kono
parents:
diff changeset
11 float f;
kono
parents:
diff changeset
12 #pragma omp atomic read
kono
parents:
diff changeset
13 v = x;
kono
parents:
diff changeset
14 if (v != 6)
kono
parents:
diff changeset
15 abort ();
kono
parents:
diff changeset
16 #pragma omp atomic write
kono
parents:
diff changeset
17 x = 17;
kono
parents:
diff changeset
18 #pragma omp atomic read
kono
parents:
diff changeset
19 v = x;
kono
parents:
diff changeset
20 if (v != 17)
kono
parents:
diff changeset
21 abort ();
kono
parents:
diff changeset
22 #pragma omp atomic update
kono
parents:
diff changeset
23 x++;
kono
parents:
diff changeset
24 #pragma omp atomic read
kono
parents:
diff changeset
25 v = x;
kono
parents:
diff changeset
26 if (v != 18)
kono
parents:
diff changeset
27 abort ();
kono
parents:
diff changeset
28 #pragma omp atomic capture
kono
parents:
diff changeset
29 v = x++;
kono
parents:
diff changeset
30 if (v != 18)
kono
parents:
diff changeset
31 abort ();
kono
parents:
diff changeset
32 #pragma omp atomic read
kono
parents:
diff changeset
33 v = x;
kono
parents:
diff changeset
34 if (v != 19)
kono
parents:
diff changeset
35 abort ();
kono
parents:
diff changeset
36 #pragma omp atomic capture
kono
parents:
diff changeset
37 v = ++x;
kono
parents:
diff changeset
38 if (v != 20)
kono
parents:
diff changeset
39 abort ();
kono
parents:
diff changeset
40 #pragma omp atomic read
kono
parents:
diff changeset
41 v = x;
kono
parents:
diff changeset
42 if (v != 20)
kono
parents:
diff changeset
43 abort ();
kono
parents:
diff changeset
44 #pragma omp atomic capture
kono
parents:
diff changeset
45 { v = x; x *= 3; }
kono
parents:
diff changeset
46 if (v != 20)
kono
parents:
diff changeset
47 abort ();
kono
parents:
diff changeset
48 #pragma omp atomic read
kono
parents:
diff changeset
49 v = x;
kono
parents:
diff changeset
50 if (v != 60)
kono
parents:
diff changeset
51 abort ();
kono
parents:
diff changeset
52 #pragma omp atomic capture
kono
parents:
diff changeset
53 {
kono
parents:
diff changeset
54 x |= 2;
kono
parents:
diff changeset
55 v = x;
kono
parents:
diff changeset
56 }
kono
parents:
diff changeset
57 if (v != 62)
kono
parents:
diff changeset
58 abort ();
kono
parents:
diff changeset
59 #pragma omp atomic read
kono
parents:
diff changeset
60 v = x;
kono
parents:
diff changeset
61 if (v != 62)
kono
parents:
diff changeset
62 abort ();
kono
parents:
diff changeset
63 #pragma omp atomic capture
kono
parents:
diff changeset
64 { v = x; x++; }
kono
parents:
diff changeset
65 if (v != 62)
kono
parents:
diff changeset
66 abort ();
kono
parents:
diff changeset
67 #pragma omp atomic capture
kono
parents:
diff changeset
68 { v = x; ++x; }
kono
parents:
diff changeset
69 if (v != 63)
kono
parents:
diff changeset
70 abort ();
kono
parents:
diff changeset
71 #pragma omp atomic capture
kono
parents:
diff changeset
72 {
kono
parents:
diff changeset
73 ++x;
kono
parents:
diff changeset
74 v = x;
kono
parents:
diff changeset
75 }
kono
parents:
diff changeset
76 if (v != 65)
kono
parents:
diff changeset
77 abort ();
kono
parents:
diff changeset
78 #pragma omp atomic capture
kono
parents:
diff changeset
79 {x++;v=x;}if (v != 66)
kono
parents:
diff changeset
80 abort ();
kono
parents:
diff changeset
81 #pragma omp atomic read
kono
parents:
diff changeset
82 v = x;
kono
parents:
diff changeset
83 if (v != 66)
kono
parents:
diff changeset
84 abort ();
kono
parents:
diff changeset
85 #pragma omp atomic capture
kono
parents:
diff changeset
86 { v = x; x--; }
kono
parents:
diff changeset
87 if (v != 66)
kono
parents:
diff changeset
88 abort ();
kono
parents:
diff changeset
89 #pragma omp atomic capture
kono
parents:
diff changeset
90 { v = x; --x; }
kono
parents:
diff changeset
91 if (v != 65)
kono
parents:
diff changeset
92 abort ();
kono
parents:
diff changeset
93 #pragma omp atomic capture
kono
parents:
diff changeset
94 {
kono
parents:
diff changeset
95 --x;
kono
parents:
diff changeset
96 v = x;
kono
parents:
diff changeset
97 }
kono
parents:
diff changeset
98 if (v != 63)
kono
parents:
diff changeset
99 abort ();
kono
parents:
diff changeset
100 #pragma omp atomic capture
kono
parents:
diff changeset
101 { x--; v = x; } if (v != 62)
kono
parents:
diff changeset
102 abort ();
kono
parents:
diff changeset
103 #pragma omp atomic read
kono
parents:
diff changeset
104 v = x;
kono
parents:
diff changeset
105 if (v != 62)
kono
parents:
diff changeset
106 abort ();
kono
parents:
diff changeset
107 #pragma omp atomic write
kono
parents:
diff changeset
108 y = 17.5f;
kono
parents:
diff changeset
109 #pragma omp atomic read
kono
parents:
diff changeset
110 f = y;
kono
parents:
diff changeset
111 if (f != 17.5)
kono
parents:
diff changeset
112 abort ();
kono
parents:
diff changeset
113 #pragma omp atomic update
kono
parents:
diff changeset
114 y *= 2.0f;
kono
parents:
diff changeset
115 #pragma omp atomic read
kono
parents:
diff changeset
116 f = y;
kono
parents:
diff changeset
117 if (y != 35.0)
kono
parents:
diff changeset
118 abort ();
kono
parents:
diff changeset
119 #pragma omp atomic capture
kono
parents:
diff changeset
120 f = y *= 2.0f;
kono
parents:
diff changeset
121 if (f != 70.0)
kono
parents:
diff changeset
122 abort ();
kono
parents:
diff changeset
123 #pragma omp atomic capture
kono
parents:
diff changeset
124 f = y++;
kono
parents:
diff changeset
125 if (f != 70.0)
kono
parents:
diff changeset
126 abort ();
kono
parents:
diff changeset
127 #pragma omp atomic read
kono
parents:
diff changeset
128 f = y;
kono
parents:
diff changeset
129 if (f != 71.0)
kono
parents:
diff changeset
130 abort ();
kono
parents:
diff changeset
131 #pragma omp atomic capture
kono
parents:
diff changeset
132 f = --y;
kono
parents:
diff changeset
133 if (f != 70.0)
kono
parents:
diff changeset
134 abort ();
kono
parents:
diff changeset
135 #pragma omp atomic read
kono
parents:
diff changeset
136 f = y;
kono
parents:
diff changeset
137 if (f != 70.0)
kono
parents:
diff changeset
138 abort ();
kono
parents:
diff changeset
139 #pragma omp atomic capture
kono
parents:
diff changeset
140 { f = y; y /= 2.0f; }
kono
parents:
diff changeset
141 if (f != 70.0)
kono
parents:
diff changeset
142 abort ();
kono
parents:
diff changeset
143 #pragma omp atomic read
kono
parents:
diff changeset
144 f = y;
kono
parents:
diff changeset
145 if (f != 35.0)
kono
parents:
diff changeset
146 abort ();
kono
parents:
diff changeset
147 #pragma omp atomic capture
kono
parents:
diff changeset
148 { y /= 2.0f; f = y; }
kono
parents:
diff changeset
149 if (f != 17.5)
kono
parents:
diff changeset
150 abort ();
kono
parents:
diff changeset
151 #pragma omp atomic read
kono
parents:
diff changeset
152 f = y;
kono
parents:
diff changeset
153 if (f != 17.5)
kono
parents:
diff changeset
154 abort ();
kono
parents:
diff changeset
155 return 0;
kono
parents:
diff changeset
156 }