annotate libgomp/testsuite/libgomp.oacc-c-c++-common/atomic_capture-2.c @ 143:76e1cf5455ef

add cbc_gc test
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 23 Dec 2018 19:24:05 +0900
parents 04ced10e8804
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 #include <stdlib.h>
kono
parents:
diff changeset
4
kono
parents:
diff changeset
5 int
kono
parents:
diff changeset
6 main(int argc, char **argv)
kono
parents:
diff changeset
7 {
kono
parents:
diff changeset
8 int iexp, igot, imax, imin;
kono
parents:
diff changeset
9 long long lexp, lgot;
kono
parents:
diff changeset
10 int N = 32;
kono
parents:
diff changeset
11 int i;
kono
parents:
diff changeset
12 int idata[N];
kono
parents:
diff changeset
13 long long ldata[N];
kono
parents:
diff changeset
14 float fexp, fgot;
kono
parents:
diff changeset
15 float fdata[N];
kono
parents:
diff changeset
16
kono
parents:
diff changeset
17 igot = 1234;
kono
parents:
diff changeset
18 iexp = 31;
kono
parents:
diff changeset
19
kono
parents:
diff changeset
20 for (i = 0; i < N; i++)
kono
parents:
diff changeset
21 idata[i] = i;
kono
parents:
diff changeset
22
kono
parents:
diff changeset
23 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
24 {
kono
parents:
diff changeset
25 #pragma acc parallel loop
kono
parents:
diff changeset
26 for (i = 0; i < N; i++)
kono
parents:
diff changeset
27 #pragma acc atomic capture
kono
parents:
diff changeset
28 { idata[i] = igot; igot = i; }
kono
parents:
diff changeset
29 }
kono
parents:
diff changeset
30
kono
parents:
diff changeset
31 imax = 0;
kono
parents:
diff changeset
32 imin = N;
kono
parents:
diff changeset
33
kono
parents:
diff changeset
34 for (i = 0; i < N; i++)
kono
parents:
diff changeset
35 {
kono
parents:
diff changeset
36 imax = idata[i] > imax ? idata[i] : imax;
kono
parents:
diff changeset
37 imin = idata[i] < imin ? idata[i] : imin;
kono
parents:
diff changeset
38 }
kono
parents:
diff changeset
39
kono
parents:
diff changeset
40 if (imax != 1234 || imin != 0)
kono
parents:
diff changeset
41 abort ();
kono
parents:
diff changeset
42
kono
parents:
diff changeset
43 return 0;
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 igot = 0;
kono
parents:
diff changeset
46 iexp = 32;
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 #pragma acc parallel loop
kono
parents:
diff changeset
51 for (i = 0; i < N; i++)
kono
parents:
diff changeset
52 #pragma acc atomic capture
kono
parents:
diff changeset
53 { idata[i] = igot; igot++; }
kono
parents:
diff changeset
54 }
kono
parents:
diff changeset
55
kono
parents:
diff changeset
56 if (iexp != igot)
kono
parents:
diff changeset
57 abort ();
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 igot = 0;
kono
parents:
diff changeset
60 iexp = 32;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
63 {
kono
parents:
diff changeset
64 #pragma acc parallel loop
kono
parents:
diff changeset
65 for (i = 0; i < N; i++)
kono
parents:
diff changeset
66 #pragma acc atomic capture
kono
parents:
diff changeset
67 { idata[i] = igot; ++igot; }
kono
parents:
diff changeset
68 }
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 if (iexp != igot)
kono
parents:
diff changeset
71 abort ();
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 igot = 0;
kono
parents:
diff changeset
74 iexp = 32;
kono
parents:
diff changeset
75
kono
parents:
diff changeset
76 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
77 {
kono
parents:
diff changeset
78 #pragma acc parallel loop
kono
parents:
diff changeset
79 for (i = 0; i < N; i++)
kono
parents:
diff changeset
80 #pragma acc atomic capture
kono
parents:
diff changeset
81 { ++igot; idata[i] = igot; }
kono
parents:
diff changeset
82 }
kono
parents:
diff changeset
83
kono
parents:
diff changeset
84 if (iexp != igot)
kono
parents:
diff changeset
85 abort ();
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 igot = 0;
kono
parents:
diff changeset
88 iexp = 32;
kono
parents:
diff changeset
89
kono
parents:
diff changeset
90 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
91 {
kono
parents:
diff changeset
92 #pragma acc parallel loop
kono
parents:
diff changeset
93 for (i = 0; i < N; i++)
kono
parents:
diff changeset
94 #pragma acc atomic capture
kono
parents:
diff changeset
95 { igot++; idata[i] = igot; }
kono
parents:
diff changeset
96 }
kono
parents:
diff changeset
97
kono
parents:
diff changeset
98 if (iexp != igot)
kono
parents:
diff changeset
99 abort ();
kono
parents:
diff changeset
100
kono
parents:
diff changeset
101 igot = 32;
kono
parents:
diff changeset
102 iexp = 0;
kono
parents:
diff changeset
103
kono
parents:
diff changeset
104 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
105 {
kono
parents:
diff changeset
106 #pragma acc parallel loop
kono
parents:
diff changeset
107 for (i = 0; i < N; i++)
kono
parents:
diff changeset
108 #pragma acc atomic capture
kono
parents:
diff changeset
109 { idata[i] = igot; igot--; }
kono
parents:
diff changeset
110 }
kono
parents:
diff changeset
111
kono
parents:
diff changeset
112 if (iexp != igot)
kono
parents:
diff changeset
113 abort ();
kono
parents:
diff changeset
114
kono
parents:
diff changeset
115 igot = 32;
kono
parents:
diff changeset
116 iexp = 0;
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
119 {
kono
parents:
diff changeset
120 #pragma acc parallel loop
kono
parents:
diff changeset
121 for (i = 0; i < N; i++)
kono
parents:
diff changeset
122 #pragma acc atomic capture
kono
parents:
diff changeset
123 { idata[i] = igot; --igot; }
kono
parents:
diff changeset
124 }
kono
parents:
diff changeset
125
kono
parents:
diff changeset
126 if (iexp != igot)
kono
parents:
diff changeset
127 abort ();
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 igot = 32;
kono
parents:
diff changeset
130 iexp = 0;
kono
parents:
diff changeset
131
kono
parents:
diff changeset
132 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
133 {
kono
parents:
diff changeset
134 #pragma acc parallel loop
kono
parents:
diff changeset
135 for (i = 0; i < N; i++)
kono
parents:
diff changeset
136 #pragma acc atomic capture
kono
parents:
diff changeset
137 { --igot; idata[i] = igot; }
kono
parents:
diff changeset
138 }
kono
parents:
diff changeset
139
kono
parents:
diff changeset
140 if (iexp != igot)
kono
parents:
diff changeset
141 abort ();
kono
parents:
diff changeset
142
kono
parents:
diff changeset
143 igot = 32;
kono
parents:
diff changeset
144 iexp = 0;
kono
parents:
diff changeset
145
kono
parents:
diff changeset
146 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
147 {
kono
parents:
diff changeset
148 #pragma acc parallel loop
kono
parents:
diff changeset
149 for (i = 0; i < N; i++)
kono
parents:
diff changeset
150 #pragma acc atomic capture
kono
parents:
diff changeset
151 { igot--; idata[i] = igot; }
kono
parents:
diff changeset
152 }
kono
parents:
diff changeset
153
kono
parents:
diff changeset
154 if (iexp != igot)
kono
parents:
diff changeset
155 abort ();
kono
parents:
diff changeset
156
kono
parents:
diff changeset
157 /* BINOP = + */
kono
parents:
diff changeset
158 igot = 0;
kono
parents:
diff changeset
159 iexp = 32;
kono
parents:
diff changeset
160
kono
parents:
diff changeset
161 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
162 {
kono
parents:
diff changeset
163 #pragma acc parallel loop
kono
parents:
diff changeset
164 for (i = 0; i < N; i++)
kono
parents:
diff changeset
165 {
kono
parents:
diff changeset
166 int expr = 1;
kono
parents:
diff changeset
167
kono
parents:
diff changeset
168 #pragma acc atomic capture
kono
parents:
diff changeset
169 { idata[i] = igot; igot += expr; }
kono
parents:
diff changeset
170 }
kono
parents:
diff changeset
171 }
kono
parents:
diff changeset
172
kono
parents:
diff changeset
173 if (iexp != igot)
kono
parents:
diff changeset
174 abort ();
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 igot = 0;
kono
parents:
diff changeset
177 iexp = 32;
kono
parents:
diff changeset
178
kono
parents:
diff changeset
179 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
180 {
kono
parents:
diff changeset
181 #pragma acc parallel loop
kono
parents:
diff changeset
182 for (i = 0; i < N; i++)
kono
parents:
diff changeset
183 {
kono
parents:
diff changeset
184 int expr = 1;
kono
parents:
diff changeset
185
kono
parents:
diff changeset
186 #pragma acc atomic capture
kono
parents:
diff changeset
187 { igot += expr; idata[i] = igot; }
kono
parents:
diff changeset
188 }
kono
parents:
diff changeset
189 }
kono
parents:
diff changeset
190
kono
parents:
diff changeset
191 if (iexp != igot)
kono
parents:
diff changeset
192 abort ();
kono
parents:
diff changeset
193
kono
parents:
diff changeset
194 igot = 0;
kono
parents:
diff changeset
195 iexp = 32;
kono
parents:
diff changeset
196
kono
parents:
diff changeset
197 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
198 {
kono
parents:
diff changeset
199 #pragma acc parallel loop
kono
parents:
diff changeset
200 for (i = 0; i < N; i++)
kono
parents:
diff changeset
201 {
kono
parents:
diff changeset
202 int expr = 1;
kono
parents:
diff changeset
203
kono
parents:
diff changeset
204 #pragma acc atomic capture
kono
parents:
diff changeset
205 { idata[i] = igot; igot = igot + expr; }
kono
parents:
diff changeset
206 }
kono
parents:
diff changeset
207 }
kono
parents:
diff changeset
208
kono
parents:
diff changeset
209 if (iexp != igot)
kono
parents:
diff changeset
210 abort ();
kono
parents:
diff changeset
211
kono
parents:
diff changeset
212 igot = 0;
kono
parents:
diff changeset
213 iexp = 32;
kono
parents:
diff changeset
214
kono
parents:
diff changeset
215 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
216 {
kono
parents:
diff changeset
217 #pragma acc parallel loop
kono
parents:
diff changeset
218 for (i = 0; i < N; i++)
kono
parents:
diff changeset
219 {
kono
parents:
diff changeset
220 int expr = 1;
kono
parents:
diff changeset
221
kono
parents:
diff changeset
222 #pragma acc atomic capture
kono
parents:
diff changeset
223 { idata[i] = igot; igot = expr + igot; }
kono
parents:
diff changeset
224 }
kono
parents:
diff changeset
225 }
kono
parents:
diff changeset
226
kono
parents:
diff changeset
227 if (iexp != igot)
kono
parents:
diff changeset
228 abort ();
kono
parents:
diff changeset
229
kono
parents:
diff changeset
230 igot = 0;
kono
parents:
diff changeset
231 iexp = 32;
kono
parents:
diff changeset
232
kono
parents:
diff changeset
233 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
234 {
kono
parents:
diff changeset
235 #pragma acc parallel loop
kono
parents:
diff changeset
236 for (i = 0; i < N; i++)
kono
parents:
diff changeset
237 {
kono
parents:
diff changeset
238 int expr = 1;
kono
parents:
diff changeset
239
kono
parents:
diff changeset
240 #pragma acc atomic capture
kono
parents:
diff changeset
241 { igot = igot + expr; idata[i] = igot; }
kono
parents:
diff changeset
242 }
kono
parents:
diff changeset
243 }
kono
parents:
diff changeset
244
kono
parents:
diff changeset
245 if (iexp != igot)
kono
parents:
diff changeset
246 abort ();
kono
parents:
diff changeset
247
kono
parents:
diff changeset
248
kono
parents:
diff changeset
249 igot = 0;
kono
parents:
diff changeset
250 iexp = 32;
kono
parents:
diff changeset
251
kono
parents:
diff changeset
252 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
253 {
kono
parents:
diff changeset
254 #pragma acc parallel loop
kono
parents:
diff changeset
255 for (i = 0; i < N; i++)
kono
parents:
diff changeset
256 {
kono
parents:
diff changeset
257 int expr = 1;
kono
parents:
diff changeset
258
kono
parents:
diff changeset
259 #pragma acc atomic capture
kono
parents:
diff changeset
260 { igot = expr + igot; idata[i] = igot; }
kono
parents:
diff changeset
261 }
kono
parents:
diff changeset
262 }
kono
parents:
diff changeset
263
kono
parents:
diff changeset
264 if (iexp != igot)
kono
parents:
diff changeset
265 abort ();
kono
parents:
diff changeset
266
kono
parents:
diff changeset
267 /* BINOP = * */
kono
parents:
diff changeset
268 lgot = 1LL;
kono
parents:
diff changeset
269 lexp = 1LL << 32;
kono
parents:
diff changeset
270
kono
parents:
diff changeset
271 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
272 {
kono
parents:
diff changeset
273 #pragma acc parallel loop
kono
parents:
diff changeset
274 for (i = 0; i < N; i++)
kono
parents:
diff changeset
275 {
kono
parents:
diff changeset
276 long long expr = 2LL;
kono
parents:
diff changeset
277
kono
parents:
diff changeset
278 #pragma acc atomic capture
kono
parents:
diff changeset
279 { ldata[i] = lgot; lgot *= expr; }
kono
parents:
diff changeset
280 }
kono
parents:
diff changeset
281 }
kono
parents:
diff changeset
282
kono
parents:
diff changeset
283 if (lexp != lgot)
kono
parents:
diff changeset
284 abort ();
kono
parents:
diff changeset
285
kono
parents:
diff changeset
286 lgot = 1LL;
kono
parents:
diff changeset
287 lexp = 1LL << 32;
kono
parents:
diff changeset
288
kono
parents:
diff changeset
289 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
290 {
kono
parents:
diff changeset
291 #pragma acc parallel loop
kono
parents:
diff changeset
292 for (i = 0; i < N; i++)
kono
parents:
diff changeset
293 {
kono
parents:
diff changeset
294 long long expr = 2LL;
kono
parents:
diff changeset
295
kono
parents:
diff changeset
296 #pragma acc atomic capture
kono
parents:
diff changeset
297 { lgot *= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
298 }
kono
parents:
diff changeset
299 }
kono
parents:
diff changeset
300
kono
parents:
diff changeset
301 if (lexp != lgot)
kono
parents:
diff changeset
302 abort ();
kono
parents:
diff changeset
303
kono
parents:
diff changeset
304 lgot = 1LL;
kono
parents:
diff changeset
305 lexp = 1LL << 32;
kono
parents:
diff changeset
306
kono
parents:
diff changeset
307 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
308 {
kono
parents:
diff changeset
309 #pragma acc parallel loop
kono
parents:
diff changeset
310 for (i = 0; i < N; i++)
kono
parents:
diff changeset
311 {
kono
parents:
diff changeset
312 long long expr = 2LL;
kono
parents:
diff changeset
313
kono
parents:
diff changeset
314 #pragma acc atomic capture
kono
parents:
diff changeset
315 { ldata[i] = lgot; lgot = lgot * expr; }
kono
parents:
diff changeset
316 }
kono
parents:
diff changeset
317 }
kono
parents:
diff changeset
318
kono
parents:
diff changeset
319 if (lexp != lgot)
kono
parents:
diff changeset
320 abort ();
kono
parents:
diff changeset
321
kono
parents:
diff changeset
322 lgot = 1LL;
kono
parents:
diff changeset
323 lexp = 1LL << 32;
kono
parents:
diff changeset
324
kono
parents:
diff changeset
325 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
326 {
kono
parents:
diff changeset
327 #pragma acc parallel loop
kono
parents:
diff changeset
328 for (i = 0; i < N; i++)
kono
parents:
diff changeset
329 {
kono
parents:
diff changeset
330 long long expr = 2LL;
kono
parents:
diff changeset
331
kono
parents:
diff changeset
332 #pragma acc atomic capture
kono
parents:
diff changeset
333 { ldata[i] = lgot; lgot = expr * lgot; }
kono
parents:
diff changeset
334 }
kono
parents:
diff changeset
335 }
kono
parents:
diff changeset
336
kono
parents:
diff changeset
337 if (lexp != lgot)
kono
parents:
diff changeset
338 abort ();
kono
parents:
diff changeset
339
kono
parents:
diff changeset
340 lgot = 1LL;
kono
parents:
diff changeset
341 lexp = 1LL << 32;
kono
parents:
diff changeset
342
kono
parents:
diff changeset
343 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
344 {
kono
parents:
diff changeset
345 #pragma acc parallel loop
kono
parents:
diff changeset
346 for (i = 0; i < N; i++)
kono
parents:
diff changeset
347 {
kono
parents:
diff changeset
348 long long expr = 2LL;
kono
parents:
diff changeset
349
kono
parents:
diff changeset
350 #pragma acc atomic capture
kono
parents:
diff changeset
351 { lgot = lgot * expr; ldata[i] = lgot; }
kono
parents:
diff changeset
352 }
kono
parents:
diff changeset
353 }
kono
parents:
diff changeset
354
kono
parents:
diff changeset
355 if (lexp != lgot)
kono
parents:
diff changeset
356 abort ();
kono
parents:
diff changeset
357
kono
parents:
diff changeset
358 lgot = 1LL;
kono
parents:
diff changeset
359 lexp = 1LL << 32;
kono
parents:
diff changeset
360
kono
parents:
diff changeset
361 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
362 {
kono
parents:
diff changeset
363 #pragma acc parallel loop
kono
parents:
diff changeset
364 for (i = 0; i < N; i++)
kono
parents:
diff changeset
365 {
kono
parents:
diff changeset
366 long long expr = 2;
kono
parents:
diff changeset
367
kono
parents:
diff changeset
368 #pragma acc atomic capture
kono
parents:
diff changeset
369 { lgot = expr * lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
370 }
kono
parents:
diff changeset
371 }
kono
parents:
diff changeset
372
kono
parents:
diff changeset
373 if (lexp != lgot)
kono
parents:
diff changeset
374 abort ();
kono
parents:
diff changeset
375
kono
parents:
diff changeset
376 /* BINOP = - */
kono
parents:
diff changeset
377 igot = 32;
kono
parents:
diff changeset
378 iexp = 0;
kono
parents:
diff changeset
379
kono
parents:
diff changeset
380 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
381 {
kono
parents:
diff changeset
382 #pragma acc parallel loop
kono
parents:
diff changeset
383 for (i = 0; i < N; i++)
kono
parents:
diff changeset
384 {
kono
parents:
diff changeset
385 int expr = 1;
kono
parents:
diff changeset
386
kono
parents:
diff changeset
387 #pragma acc atomic capture
kono
parents:
diff changeset
388 { idata[i] = igot; igot -= expr; }
kono
parents:
diff changeset
389 }
kono
parents:
diff changeset
390 }
kono
parents:
diff changeset
391
kono
parents:
diff changeset
392 if (iexp != igot)
kono
parents:
diff changeset
393 abort ();
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 igot = 32;
kono
parents:
diff changeset
396 iexp = 0;
kono
parents:
diff changeset
397
kono
parents:
diff changeset
398 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
399 {
kono
parents:
diff changeset
400 #pragma acc parallel loop
kono
parents:
diff changeset
401 for (i = 0; i < N; i++)
kono
parents:
diff changeset
402 {
kono
parents:
diff changeset
403 int expr = 1;
kono
parents:
diff changeset
404
kono
parents:
diff changeset
405 #pragma acc atomic capture
kono
parents:
diff changeset
406 { igot -= expr; idata[i] = igot; }
kono
parents:
diff changeset
407 }
kono
parents:
diff changeset
408 }
kono
parents:
diff changeset
409
kono
parents:
diff changeset
410 if (iexp != igot)
kono
parents:
diff changeset
411 abort ();
kono
parents:
diff changeset
412
kono
parents:
diff changeset
413 igot = 32;
kono
parents:
diff changeset
414 iexp = 0;
kono
parents:
diff changeset
415
kono
parents:
diff changeset
416 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
417 {
kono
parents:
diff changeset
418 #pragma acc parallel loop
kono
parents:
diff changeset
419 for (i = 0; i < N; i++)
kono
parents:
diff changeset
420 {
kono
parents:
diff changeset
421 int expr = 1;
kono
parents:
diff changeset
422
kono
parents:
diff changeset
423 #pragma acc atomic capture
kono
parents:
diff changeset
424 { idata[i] = igot; igot = igot - expr; }
kono
parents:
diff changeset
425 }
kono
parents:
diff changeset
426 }
kono
parents:
diff changeset
427
kono
parents:
diff changeset
428 if (iexp != igot)
kono
parents:
diff changeset
429 abort ();
kono
parents:
diff changeset
430
kono
parents:
diff changeset
431 igot = 1;
kono
parents:
diff changeset
432 iexp = 1;
kono
parents:
diff changeset
433
kono
parents:
diff changeset
434 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
435 {
kono
parents:
diff changeset
436 #pragma acc parallel loop
kono
parents:
diff changeset
437 for (i = 0; i < N; i++)
kono
parents:
diff changeset
438 {
kono
parents:
diff changeset
439 int expr = 1;
kono
parents:
diff changeset
440
kono
parents:
diff changeset
441 #pragma acc atomic capture
kono
parents:
diff changeset
442 { idata[i] = igot; igot = expr - igot; }
kono
parents:
diff changeset
443 }
kono
parents:
diff changeset
444 }
kono
parents:
diff changeset
445
kono
parents:
diff changeset
446 for (i = 0; i < N; i++)
kono
parents:
diff changeset
447 if (i % 2 == 0)
kono
parents:
diff changeset
448 {
kono
parents:
diff changeset
449 if (idata[i] != 1)
kono
parents:
diff changeset
450 abort ();
kono
parents:
diff changeset
451 }
kono
parents:
diff changeset
452 else
kono
parents:
diff changeset
453 {
kono
parents:
diff changeset
454 if (idata[i] != 0)
kono
parents:
diff changeset
455 abort ();
kono
parents:
diff changeset
456 }
kono
parents:
diff changeset
457
kono
parents:
diff changeset
458 if (iexp != igot)
kono
parents:
diff changeset
459 abort ();
kono
parents:
diff changeset
460
kono
parents:
diff changeset
461 igot = 1;
kono
parents:
diff changeset
462 iexp = -31;
kono
parents:
diff changeset
463
kono
parents:
diff changeset
464 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
465 {
kono
parents:
diff changeset
466 #pragma acc parallel loop
kono
parents:
diff changeset
467 for (i = 0; i < N; i++)
kono
parents:
diff changeset
468 {
kono
parents:
diff changeset
469 int expr = 1;
kono
parents:
diff changeset
470
kono
parents:
diff changeset
471 #pragma acc atomic capture
kono
parents:
diff changeset
472 { igot = igot - expr; idata[i] = igot; }
kono
parents:
diff changeset
473 }
kono
parents:
diff changeset
474 }
kono
parents:
diff changeset
475
kono
parents:
diff changeset
476 if (iexp != igot)
kono
parents:
diff changeset
477 abort ();
kono
parents:
diff changeset
478
kono
parents:
diff changeset
479 igot = 1;
kono
parents:
diff changeset
480 iexp = 1;
kono
parents:
diff changeset
481
kono
parents:
diff changeset
482 #pragma acc data copy (igot, idata[0:N])
kono
parents:
diff changeset
483 {
kono
parents:
diff changeset
484 #pragma acc parallel loop
kono
parents:
diff changeset
485 for (i = 0; i < N; i++)
kono
parents:
diff changeset
486 {
kono
parents:
diff changeset
487 int expr = 1;
kono
parents:
diff changeset
488
kono
parents:
diff changeset
489 #pragma acc atomic capture
kono
parents:
diff changeset
490 { igot = expr - igot; idata[i] = igot; }
kono
parents:
diff changeset
491 }
kono
parents:
diff changeset
492 }
kono
parents:
diff changeset
493
kono
parents:
diff changeset
494 for (i = 0; i < N; i++)
kono
parents:
diff changeset
495 if (i % 2 == 0)
kono
parents:
diff changeset
496 {
kono
parents:
diff changeset
497 if (idata[i] != 0)
kono
parents:
diff changeset
498 abort ();
kono
parents:
diff changeset
499 }
kono
parents:
diff changeset
500 else
kono
parents:
diff changeset
501 {
kono
parents:
diff changeset
502 if (idata[i] != 1)
kono
parents:
diff changeset
503 abort ();
kono
parents:
diff changeset
504 }
kono
parents:
diff changeset
505
kono
parents:
diff changeset
506 if (iexp != igot)
kono
parents:
diff changeset
507 abort ();
kono
parents:
diff changeset
508
kono
parents:
diff changeset
509 /* BINOP = / */
kono
parents:
diff changeset
510 lgot = 1LL << 32;
kono
parents:
diff changeset
511 lexp = 1LL;
kono
parents:
diff changeset
512
kono
parents:
diff changeset
513 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
514 {
kono
parents:
diff changeset
515 #pragma acc parallel loop
kono
parents:
diff changeset
516 for (i = 0; i < N; i++)
kono
parents:
diff changeset
517 {
kono
parents:
diff changeset
518 long long expr = 2LL;
kono
parents:
diff changeset
519
kono
parents:
diff changeset
520 #pragma acc atomic capture
kono
parents:
diff changeset
521 { ldata[i] = lgot; lgot /= expr; }
kono
parents:
diff changeset
522 }
kono
parents:
diff changeset
523 }
kono
parents:
diff changeset
524
kono
parents:
diff changeset
525 if (lexp != lgot)
kono
parents:
diff changeset
526 abort ();
kono
parents:
diff changeset
527
kono
parents:
diff changeset
528 lgot = 1LL << 32;
kono
parents:
diff changeset
529 lexp = 1LL;
kono
parents:
diff changeset
530
kono
parents:
diff changeset
531 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
532 {
kono
parents:
diff changeset
533 #pragma acc parallel loop
kono
parents:
diff changeset
534 for (i = 0; i < N; i++)
kono
parents:
diff changeset
535 {
kono
parents:
diff changeset
536 long long expr = 2LL;
kono
parents:
diff changeset
537
kono
parents:
diff changeset
538 #pragma acc atomic capture
kono
parents:
diff changeset
539 { lgot /= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
540 }
kono
parents:
diff changeset
541 }
kono
parents:
diff changeset
542
kono
parents:
diff changeset
543 if (lexp != lgot)
kono
parents:
diff changeset
544 abort ();
kono
parents:
diff changeset
545
kono
parents:
diff changeset
546 lgot = 1LL << 32;
kono
parents:
diff changeset
547 lexp = 1LL;
kono
parents:
diff changeset
548
kono
parents:
diff changeset
549 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
550 {
kono
parents:
diff changeset
551 #pragma acc parallel loop
kono
parents:
diff changeset
552 for (i = 0; i < N; i++)
kono
parents:
diff changeset
553 {
kono
parents:
diff changeset
554 long long expr = 2LL;
kono
parents:
diff changeset
555
kono
parents:
diff changeset
556 #pragma acc atomic capture
kono
parents:
diff changeset
557 { ldata[i] = lgot; lgot = lgot / expr; }
kono
parents:
diff changeset
558 }
kono
parents:
diff changeset
559 }
kono
parents:
diff changeset
560
kono
parents:
diff changeset
561 if (lexp != lgot)
kono
parents:
diff changeset
562 abort ();
kono
parents:
diff changeset
563
kono
parents:
diff changeset
564 lgot = 2LL;
kono
parents:
diff changeset
565 lexp = 2LL;
kono
parents:
diff changeset
566
kono
parents:
diff changeset
567 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
568 {
kono
parents:
diff changeset
569 #pragma acc parallel loop
kono
parents:
diff changeset
570 for (i = 0; i < N; i++)
kono
parents:
diff changeset
571 {
kono
parents:
diff changeset
572 long long expr = 1LL << N;
kono
parents:
diff changeset
573
kono
parents:
diff changeset
574 #pragma acc atomic capture
kono
parents:
diff changeset
575 { ldata[i] = lgot; lgot = expr / lgot; }
kono
parents:
diff changeset
576 }
kono
parents:
diff changeset
577 }
kono
parents:
diff changeset
578
kono
parents:
diff changeset
579 if (lexp != lgot)
kono
parents:
diff changeset
580 abort ();
kono
parents:
diff changeset
581
kono
parents:
diff changeset
582 lgot = 2LL;
kono
parents:
diff changeset
583 lexp = 2LL;
kono
parents:
diff changeset
584
kono
parents:
diff changeset
585 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
586 {
kono
parents:
diff changeset
587 #pragma acc parallel loop
kono
parents:
diff changeset
588 for (i = 0; i < N; i++)
kono
parents:
diff changeset
589 {
kono
parents:
diff changeset
590 long long expr = 1LL << N;
kono
parents:
diff changeset
591
kono
parents:
diff changeset
592 #pragma acc atomic capture
kono
parents:
diff changeset
593 { lgot = lgot / expr; ldata[i] = lgot; }
kono
parents:
diff changeset
594 }
kono
parents:
diff changeset
595 }
kono
parents:
diff changeset
596
kono
parents:
diff changeset
597 if (lexp != lgot)
kono
parents:
diff changeset
598 abort ();
kono
parents:
diff changeset
599
kono
parents:
diff changeset
600 lgot = 2LL;
kono
parents:
diff changeset
601 lexp = 2LL;
kono
parents:
diff changeset
602
kono
parents:
diff changeset
603 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
604 {
kono
parents:
diff changeset
605 #pragma acc parallel loop
kono
parents:
diff changeset
606 for (i = 0; i < N; i++)
kono
parents:
diff changeset
607 {
kono
parents:
diff changeset
608 long long expr = 1LL << N;
kono
parents:
diff changeset
609
kono
parents:
diff changeset
610 #pragma acc atomic capture
kono
parents:
diff changeset
611 { lgot = expr / lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
612 }
kono
parents:
diff changeset
613 }
kono
parents:
diff changeset
614
kono
parents:
diff changeset
615 if (lexp != lgot)
kono
parents:
diff changeset
616 abort ();
kono
parents:
diff changeset
617
kono
parents:
diff changeset
618 /* BINOP = & */
kono
parents:
diff changeset
619 lgot = ~0LL;
kono
parents:
diff changeset
620 lexp = 0LL;
kono
parents:
diff changeset
621
kono
parents:
diff changeset
622 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
623 {
kono
parents:
diff changeset
624 #pragma acc parallel loop
kono
parents:
diff changeset
625 for (i = 0; i < N; i++)
kono
parents:
diff changeset
626 {
kono
parents:
diff changeset
627 long long expr = ~(1 << i);
kono
parents:
diff changeset
628
kono
parents:
diff changeset
629 #pragma acc atomic capture
kono
parents:
diff changeset
630 { ldata[i] = lgot; lgot &= expr; }
kono
parents:
diff changeset
631 }
kono
parents:
diff changeset
632 }
kono
parents:
diff changeset
633
kono
parents:
diff changeset
634 if (lexp != lgot)
kono
parents:
diff changeset
635 abort ();
kono
parents:
diff changeset
636
kono
parents:
diff changeset
637 lgot = ~0LL;
kono
parents:
diff changeset
638 iexp = 0LL;
kono
parents:
diff changeset
639
kono
parents:
diff changeset
640 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
641 {
kono
parents:
diff changeset
642 #pragma acc parallel loop
kono
parents:
diff changeset
643 for (i = 0; i < N; i++)
kono
parents:
diff changeset
644 {
kono
parents:
diff changeset
645 long long expr = ~(1 << i);
kono
parents:
diff changeset
646
kono
parents:
diff changeset
647 #pragma acc atomic capture
kono
parents:
diff changeset
648 { lgot &= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
649 }
kono
parents:
diff changeset
650 }
kono
parents:
diff changeset
651
kono
parents:
diff changeset
652 if (lexp != lgot)
kono
parents:
diff changeset
653 abort ();
kono
parents:
diff changeset
654
kono
parents:
diff changeset
655 lgot = ~0LL;
kono
parents:
diff changeset
656 lexp = 0LL;
kono
parents:
diff changeset
657
kono
parents:
diff changeset
658 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
659 {
kono
parents:
diff changeset
660 #pragma acc parallel loop
kono
parents:
diff changeset
661 for (i = 0; i < N; i++)
kono
parents:
diff changeset
662 {
kono
parents:
diff changeset
663 long long expr = ~(1 << i);
kono
parents:
diff changeset
664
kono
parents:
diff changeset
665 #pragma acc atomic capture
kono
parents:
diff changeset
666 { ldata[i] = lgot; lgot = lgot & expr; }
kono
parents:
diff changeset
667 }
kono
parents:
diff changeset
668 }
kono
parents:
diff changeset
669
kono
parents:
diff changeset
670 if (lexp != lgot)
kono
parents:
diff changeset
671 abort ();
kono
parents:
diff changeset
672
kono
parents:
diff changeset
673 lgot = ~0LL;
kono
parents:
diff changeset
674 lexp = 0LL;
kono
parents:
diff changeset
675
kono
parents:
diff changeset
676 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
677 {
kono
parents:
diff changeset
678 #pragma acc parallel loop
kono
parents:
diff changeset
679 for (i = 0; i < N; i++)
kono
parents:
diff changeset
680 {
kono
parents:
diff changeset
681 long long expr = ~(1 << i);
kono
parents:
diff changeset
682
kono
parents:
diff changeset
683 #pragma acc atomic capture
kono
parents:
diff changeset
684 { ldata[i] = lgot; lgot = expr & lgot; }
kono
parents:
diff changeset
685 }
kono
parents:
diff changeset
686 }
kono
parents:
diff changeset
687
kono
parents:
diff changeset
688 if (lexp != lgot)
kono
parents:
diff changeset
689 abort ();
kono
parents:
diff changeset
690
kono
parents:
diff changeset
691 lgot = ~0LL;
kono
parents:
diff changeset
692 iexp = 0LL;
kono
parents:
diff changeset
693
kono
parents:
diff changeset
694 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
695 {
kono
parents:
diff changeset
696 #pragma acc parallel loop
kono
parents:
diff changeset
697 for (i = 0; i < N; i++)
kono
parents:
diff changeset
698 {
kono
parents:
diff changeset
699 long long expr = ~(1 << i);
kono
parents:
diff changeset
700
kono
parents:
diff changeset
701 #pragma acc atomic capture
kono
parents:
diff changeset
702 { lgot = lgot & expr; ldata[i] = lgot; }
kono
parents:
diff changeset
703 }
kono
parents:
diff changeset
704 }
kono
parents:
diff changeset
705
kono
parents:
diff changeset
706 if (lexp != lgot)
kono
parents:
diff changeset
707 abort ();
kono
parents:
diff changeset
708
kono
parents:
diff changeset
709 lgot = ~0LL;
kono
parents:
diff changeset
710 lexp = 0LL;
kono
parents:
diff changeset
711
kono
parents:
diff changeset
712 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
713 {
kono
parents:
diff changeset
714 #pragma acc parallel loop
kono
parents:
diff changeset
715 for (i = 0; i < N; i++)
kono
parents:
diff changeset
716 {
kono
parents:
diff changeset
717 long long expr = ~(1 << i);
kono
parents:
diff changeset
718
kono
parents:
diff changeset
719 #pragma acc atomic capture
kono
parents:
diff changeset
720 { lgot = expr & lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
721 }
kono
parents:
diff changeset
722 }
kono
parents:
diff changeset
723
kono
parents:
diff changeset
724 if (lexp != lgot)
kono
parents:
diff changeset
725 abort ();
kono
parents:
diff changeset
726
kono
parents:
diff changeset
727 /* BINOP = ^ */
kono
parents:
diff changeset
728 lgot = ~0LL;
kono
parents:
diff changeset
729 lexp = 0LL;
kono
parents:
diff changeset
730
kono
parents:
diff changeset
731 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
732 {
kono
parents:
diff changeset
733 #pragma acc parallel loop
kono
parents:
diff changeset
734 for (i = 0; i < N; i++)
kono
parents:
diff changeset
735 {
kono
parents:
diff changeset
736 long long expr = 1 << i;
kono
parents:
diff changeset
737
kono
parents:
diff changeset
738 #pragma acc atomic capture
kono
parents:
diff changeset
739 { ldata[i] = lgot; lgot ^= expr; }
kono
parents:
diff changeset
740 }
kono
parents:
diff changeset
741 }
kono
parents:
diff changeset
742
kono
parents:
diff changeset
743 if (lexp != lgot)
kono
parents:
diff changeset
744 abort ();
kono
parents:
diff changeset
745
kono
parents:
diff changeset
746 lgot = ~0LL;
kono
parents:
diff changeset
747 iexp = 0LL;
kono
parents:
diff changeset
748
kono
parents:
diff changeset
749 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
750 {
kono
parents:
diff changeset
751 #pragma acc parallel loop
kono
parents:
diff changeset
752 for (i = 0; i < N; i++)
kono
parents:
diff changeset
753 {
kono
parents:
diff changeset
754 long long expr = ~(1 << i);
kono
parents:
diff changeset
755
kono
parents:
diff changeset
756 #pragma acc atomic capture
kono
parents:
diff changeset
757 { lgot ^= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
758 }
kono
parents:
diff changeset
759 }
kono
parents:
diff changeset
760
kono
parents:
diff changeset
761 if (lexp != lgot)
kono
parents:
diff changeset
762 abort ();
kono
parents:
diff changeset
763
kono
parents:
diff changeset
764 lgot = ~0LL;
kono
parents:
diff changeset
765 lexp = 0LL;
kono
parents:
diff changeset
766
kono
parents:
diff changeset
767 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
768 {
kono
parents:
diff changeset
769 #pragma acc parallel loop
kono
parents:
diff changeset
770 for (i = 0; i < N; i++)
kono
parents:
diff changeset
771 {
kono
parents:
diff changeset
772 long long expr = ~(1 << i);
kono
parents:
diff changeset
773
kono
parents:
diff changeset
774 #pragma acc atomic capture
kono
parents:
diff changeset
775 { ldata[i] = lgot; lgot = lgot ^ expr; }
kono
parents:
diff changeset
776 }
kono
parents:
diff changeset
777 }
kono
parents:
diff changeset
778
kono
parents:
diff changeset
779 if (lexp != lgot)
kono
parents:
diff changeset
780 abort ();
kono
parents:
diff changeset
781
kono
parents:
diff changeset
782 lgot = ~0LL;
kono
parents:
diff changeset
783 lexp = 0LL;
kono
parents:
diff changeset
784
kono
parents:
diff changeset
785 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
786 {
kono
parents:
diff changeset
787 #pragma acc parallel loop
kono
parents:
diff changeset
788 for (i = 0; i < N; i++)
kono
parents:
diff changeset
789 {
kono
parents:
diff changeset
790 long long expr = ~(1 << i);
kono
parents:
diff changeset
791
kono
parents:
diff changeset
792 #pragma acc atomic capture
kono
parents:
diff changeset
793 { ldata[i] = lgot; lgot = expr ^ lgot; }
kono
parents:
diff changeset
794 }
kono
parents:
diff changeset
795 }
kono
parents:
diff changeset
796
kono
parents:
diff changeset
797 if (lexp != lgot)
kono
parents:
diff changeset
798 abort ();
kono
parents:
diff changeset
799
kono
parents:
diff changeset
800 lgot = ~0LL;
kono
parents:
diff changeset
801 iexp = 0LL;
kono
parents:
diff changeset
802
kono
parents:
diff changeset
803 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
804 {
kono
parents:
diff changeset
805 #pragma acc parallel loop
kono
parents:
diff changeset
806 for (i = 0; i < N; i++)
kono
parents:
diff changeset
807 {
kono
parents:
diff changeset
808 long long expr = ~(1 << i);
kono
parents:
diff changeset
809
kono
parents:
diff changeset
810 #pragma acc atomic capture
kono
parents:
diff changeset
811 { lgot = lgot ^ expr; ldata[i] = lgot; }
kono
parents:
diff changeset
812 }
kono
parents:
diff changeset
813 }
kono
parents:
diff changeset
814
kono
parents:
diff changeset
815 if (lexp != lgot)
kono
parents:
diff changeset
816 abort ();
kono
parents:
diff changeset
817
kono
parents:
diff changeset
818 lgot = ~0LL;
kono
parents:
diff changeset
819 lexp = 0LL;
kono
parents:
diff changeset
820
kono
parents:
diff changeset
821 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
822 {
kono
parents:
diff changeset
823 #pragma acc parallel loop
kono
parents:
diff changeset
824 for (i = 0; i < N; i++)
kono
parents:
diff changeset
825 {
kono
parents:
diff changeset
826 long long expr = ~(1 << i);
kono
parents:
diff changeset
827
kono
parents:
diff changeset
828 #pragma acc atomic capture
kono
parents:
diff changeset
829 { lgot = expr ^ lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
830 }
kono
parents:
diff changeset
831 }
kono
parents:
diff changeset
832
kono
parents:
diff changeset
833 if (lexp != lgot)
kono
parents:
diff changeset
834 abort ();
kono
parents:
diff changeset
835
kono
parents:
diff changeset
836 /* BINOP = | */
kono
parents:
diff changeset
837 lgot = 0LL;
kono
parents:
diff changeset
838 lexp = ~0LL;
kono
parents:
diff changeset
839
kono
parents:
diff changeset
840 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
841 {
kono
parents:
diff changeset
842 #pragma acc parallel loop
kono
parents:
diff changeset
843 for (i = 0; i < N; i++)
kono
parents:
diff changeset
844 {
kono
parents:
diff changeset
845 long long expr = 1 << i;
kono
parents:
diff changeset
846
kono
parents:
diff changeset
847 #pragma acc atomic capture
kono
parents:
diff changeset
848 { ldata[i] = lgot; lgot |= expr; }
kono
parents:
diff changeset
849 }
kono
parents:
diff changeset
850 }
kono
parents:
diff changeset
851
kono
parents:
diff changeset
852 if (lexp != lgot)
kono
parents:
diff changeset
853 abort ();
kono
parents:
diff changeset
854
kono
parents:
diff changeset
855 lgot = 0LL;
kono
parents:
diff changeset
856 iexp = ~0LL;
kono
parents:
diff changeset
857
kono
parents:
diff changeset
858 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
859 {
kono
parents:
diff changeset
860 #pragma acc parallel loop
kono
parents:
diff changeset
861 for (i = 0; i < N; i++)
kono
parents:
diff changeset
862 {
kono
parents:
diff changeset
863 long long expr = ~(1 << i);
kono
parents:
diff changeset
864
kono
parents:
diff changeset
865 #pragma acc atomic capture
kono
parents:
diff changeset
866 { lgot |= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
867 }
kono
parents:
diff changeset
868 }
kono
parents:
diff changeset
869
kono
parents:
diff changeset
870 if (lexp != lgot)
kono
parents:
diff changeset
871 abort ();
kono
parents:
diff changeset
872
kono
parents:
diff changeset
873 lgot = 0LL;
kono
parents:
diff changeset
874 lexp = ~0LL;
kono
parents:
diff changeset
875
kono
parents:
diff changeset
876 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
877 {
kono
parents:
diff changeset
878 #pragma acc parallel loop
kono
parents:
diff changeset
879 for (i = 0; i < N; i++)
kono
parents:
diff changeset
880 {
kono
parents:
diff changeset
881 long long expr = ~(1 << i);
kono
parents:
diff changeset
882
kono
parents:
diff changeset
883 #pragma acc atomic capture
kono
parents:
diff changeset
884 { ldata[i] = lgot; lgot = lgot | expr; }
kono
parents:
diff changeset
885 }
kono
parents:
diff changeset
886 }
kono
parents:
diff changeset
887
kono
parents:
diff changeset
888 if (lexp != lgot)
kono
parents:
diff changeset
889 abort ();
kono
parents:
diff changeset
890
kono
parents:
diff changeset
891 lgot = 0LL;
kono
parents:
diff changeset
892 lexp = ~0LL;
kono
parents:
diff changeset
893
kono
parents:
diff changeset
894 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
895 {
kono
parents:
diff changeset
896 #pragma acc parallel loop
kono
parents:
diff changeset
897 for (i = 0; i < N; i++)
kono
parents:
diff changeset
898 {
kono
parents:
diff changeset
899 long long expr = ~(1 << i);
kono
parents:
diff changeset
900
kono
parents:
diff changeset
901 #pragma acc atomic capture
kono
parents:
diff changeset
902 { ldata[i] = lgot; lgot = expr | lgot; }
kono
parents:
diff changeset
903 }
kono
parents:
diff changeset
904 }
kono
parents:
diff changeset
905
kono
parents:
diff changeset
906 if (lexp != lgot)
kono
parents:
diff changeset
907 abort ();
kono
parents:
diff changeset
908
kono
parents:
diff changeset
909 lgot = 0LL;
kono
parents:
diff changeset
910 iexp = ~0LL;
kono
parents:
diff changeset
911
kono
parents:
diff changeset
912 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
913 {
kono
parents:
diff changeset
914 #pragma acc parallel loop
kono
parents:
diff changeset
915 for (i = 0; i < N; i++)
kono
parents:
diff changeset
916 {
kono
parents:
diff changeset
917 long long expr = ~(1 << i);
kono
parents:
diff changeset
918
kono
parents:
diff changeset
919 #pragma acc atomic capture
kono
parents:
diff changeset
920 { lgot = lgot | expr; ldata[i] = lgot; }
kono
parents:
diff changeset
921 }
kono
parents:
diff changeset
922 }
kono
parents:
diff changeset
923
kono
parents:
diff changeset
924 if (lexp != lgot)
kono
parents:
diff changeset
925 abort ();
kono
parents:
diff changeset
926
kono
parents:
diff changeset
927 lgot = 0LL;
kono
parents:
diff changeset
928 lexp = ~0LL;
kono
parents:
diff changeset
929
kono
parents:
diff changeset
930 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
931 {
kono
parents:
diff changeset
932 #pragma acc parallel loop
kono
parents:
diff changeset
933 for (i = 0; i < N; i++)
kono
parents:
diff changeset
934 {
kono
parents:
diff changeset
935 long long expr = ~(1 << i);
kono
parents:
diff changeset
936
kono
parents:
diff changeset
937 #pragma acc atomic capture
kono
parents:
diff changeset
938 { lgot = expr | lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
939 }
kono
parents:
diff changeset
940 }
kono
parents:
diff changeset
941
kono
parents:
diff changeset
942 if (lexp != lgot)
kono
parents:
diff changeset
943 abort ();
kono
parents:
diff changeset
944
kono
parents:
diff changeset
945 /* BINOP = << */
kono
parents:
diff changeset
946 lgot = 1LL;
kono
parents:
diff changeset
947 lexp = 1LL << N;
kono
parents:
diff changeset
948
kono
parents:
diff changeset
949 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
950 {
kono
parents:
diff changeset
951 #pragma acc parallel loop
kono
parents:
diff changeset
952 for (i = 0; i < N; i++)
kono
parents:
diff changeset
953 {
kono
parents:
diff changeset
954 long long expr = 1LL;
kono
parents:
diff changeset
955
kono
parents:
diff changeset
956 #pragma acc atomic capture
kono
parents:
diff changeset
957 { ldata[i] = lgot; lgot <<= expr; }
kono
parents:
diff changeset
958 }
kono
parents:
diff changeset
959 }
kono
parents:
diff changeset
960
kono
parents:
diff changeset
961 if (lexp != lgot)
kono
parents:
diff changeset
962 abort ();
kono
parents:
diff changeset
963
kono
parents:
diff changeset
964 lgot = 1LL;
kono
parents:
diff changeset
965 iexp = 1LL << N;
kono
parents:
diff changeset
966
kono
parents:
diff changeset
967 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
968 {
kono
parents:
diff changeset
969 #pragma acc parallel loop
kono
parents:
diff changeset
970 for (i = 0; i < N; i++)
kono
parents:
diff changeset
971 {
kono
parents:
diff changeset
972 long long expr = 1LL;
kono
parents:
diff changeset
973
kono
parents:
diff changeset
974 #pragma acc atomic capture
kono
parents:
diff changeset
975 { lgot <<= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
976 }
kono
parents:
diff changeset
977 }
kono
parents:
diff changeset
978
kono
parents:
diff changeset
979 if (lexp != lgot)
kono
parents:
diff changeset
980 abort ();
kono
parents:
diff changeset
981
kono
parents:
diff changeset
982 lgot = 1LL;
kono
parents:
diff changeset
983 lexp = 1LL << N;
kono
parents:
diff changeset
984
kono
parents:
diff changeset
985 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
986 {
kono
parents:
diff changeset
987 #pragma acc parallel loop
kono
parents:
diff changeset
988 for (i = 0; i < N; i++)
kono
parents:
diff changeset
989 {
kono
parents:
diff changeset
990 long long expr = 1LL;
kono
parents:
diff changeset
991
kono
parents:
diff changeset
992 #pragma acc atomic capture
kono
parents:
diff changeset
993 { ldata[i] = lgot; lgot = lgot << expr; }
kono
parents:
diff changeset
994 }
kono
parents:
diff changeset
995 }
kono
parents:
diff changeset
996
kono
parents:
diff changeset
997 if (lexp != lgot)
kono
parents:
diff changeset
998 abort ();
kono
parents:
diff changeset
999
kono
parents:
diff changeset
1000 lgot = 1LL;
kono
parents:
diff changeset
1001 lexp = 2LL;
kono
parents:
diff changeset
1002
kono
parents:
diff changeset
1003 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1004 {
kono
parents:
diff changeset
1005 #pragma acc parallel loop
kono
parents:
diff changeset
1006 for (i = 0; i < 1; i++)
kono
parents:
diff changeset
1007 {
kono
parents:
diff changeset
1008 long long expr = 1LL;
kono
parents:
diff changeset
1009
kono
parents:
diff changeset
1010 #pragma acc atomic capture
kono
parents:
diff changeset
1011 { ldata[i] = lgot; lgot = expr << lgot; }
kono
parents:
diff changeset
1012 }
kono
parents:
diff changeset
1013 }
kono
parents:
diff changeset
1014
kono
parents:
diff changeset
1015 if (lexp != lgot)
kono
parents:
diff changeset
1016 abort ();
kono
parents:
diff changeset
1017
kono
parents:
diff changeset
1018 lgot = 1LL;
kono
parents:
diff changeset
1019 lexp = 2LL;
kono
parents:
diff changeset
1020
kono
parents:
diff changeset
1021 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1022 {
kono
parents:
diff changeset
1023 #pragma acc parallel loop
kono
parents:
diff changeset
1024 for (i = 0; i < 1; i++)
kono
parents:
diff changeset
1025 {
kono
parents:
diff changeset
1026 long long expr = 1LL;
kono
parents:
diff changeset
1027
kono
parents:
diff changeset
1028 #pragma acc atomic capture
kono
parents:
diff changeset
1029 { lgot = lgot << expr; ldata[i] = lgot; }
kono
parents:
diff changeset
1030 }
kono
parents:
diff changeset
1031 }
kono
parents:
diff changeset
1032
kono
parents:
diff changeset
1033 if (lexp != lgot)
kono
parents:
diff changeset
1034 abort ();
kono
parents:
diff changeset
1035
kono
parents:
diff changeset
1036 lgot = 1LL;
kono
parents:
diff changeset
1037 lexp = 2LL;
kono
parents:
diff changeset
1038
kono
parents:
diff changeset
1039 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1040 {
kono
parents:
diff changeset
1041 #pragma acc parallel loop
kono
parents:
diff changeset
1042 for (i = 0; i < 1; i++)
kono
parents:
diff changeset
1043 {
kono
parents:
diff changeset
1044 long long expr = 1LL;
kono
parents:
diff changeset
1045
kono
parents:
diff changeset
1046 #pragma acc atomic capture
kono
parents:
diff changeset
1047 { lgot = expr << lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
1048 }
kono
parents:
diff changeset
1049 }
kono
parents:
diff changeset
1050
kono
parents:
diff changeset
1051 if (lexp != lgot)
kono
parents:
diff changeset
1052 abort ();
kono
parents:
diff changeset
1053
kono
parents:
diff changeset
1054 /* BINOP = >> */
kono
parents:
diff changeset
1055 lgot = 1LL << N;
kono
parents:
diff changeset
1056 lexp = 1LL;
kono
parents:
diff changeset
1057
kono
parents:
diff changeset
1058 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1059 {
kono
parents:
diff changeset
1060 #pragma acc parallel loop
kono
parents:
diff changeset
1061 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1062 {
kono
parents:
diff changeset
1063 long long expr = 1LL;
kono
parents:
diff changeset
1064
kono
parents:
diff changeset
1065 #pragma acc atomic capture
kono
parents:
diff changeset
1066 { ldata[i] = lgot; lgot >>= expr; }
kono
parents:
diff changeset
1067 }
kono
parents:
diff changeset
1068 }
kono
parents:
diff changeset
1069
kono
parents:
diff changeset
1070 if (lexp != lgot)
kono
parents:
diff changeset
1071 abort ();
kono
parents:
diff changeset
1072
kono
parents:
diff changeset
1073 lgot = 1LL << N;
kono
parents:
diff changeset
1074 iexp = 1LL;
kono
parents:
diff changeset
1075
kono
parents:
diff changeset
1076 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1077 {
kono
parents:
diff changeset
1078 #pragma acc parallel loop
kono
parents:
diff changeset
1079 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1080 {
kono
parents:
diff changeset
1081 long long expr = 1LL;
kono
parents:
diff changeset
1082
kono
parents:
diff changeset
1083 #pragma acc atomic capture
kono
parents:
diff changeset
1084 { lgot >>= expr; ldata[i] = lgot; }
kono
parents:
diff changeset
1085 }
kono
parents:
diff changeset
1086 }
kono
parents:
diff changeset
1087
kono
parents:
diff changeset
1088 if (lexp != lgot)
kono
parents:
diff changeset
1089 abort ();
kono
parents:
diff changeset
1090
kono
parents:
diff changeset
1091 lgot = 1LL << N;
kono
parents:
diff changeset
1092 lexp = 1LL;
kono
parents:
diff changeset
1093
kono
parents:
diff changeset
1094 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1095 {
kono
parents:
diff changeset
1096 #pragma acc parallel loop
kono
parents:
diff changeset
1097 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1098 {
kono
parents:
diff changeset
1099 long long expr = 1LL;
kono
parents:
diff changeset
1100
kono
parents:
diff changeset
1101 #pragma acc atomic capture
kono
parents:
diff changeset
1102 { ldata[i] = lgot; lgot = lgot >> expr; }
kono
parents:
diff changeset
1103 }
kono
parents:
diff changeset
1104 }
kono
parents:
diff changeset
1105
kono
parents:
diff changeset
1106 if (lexp != lgot)
kono
parents:
diff changeset
1107 abort ();
kono
parents:
diff changeset
1108
kono
parents:
diff changeset
1109 lgot = 1LL;
kono
parents:
diff changeset
1110 lexp = 1LL << (N - 1);
kono
parents:
diff changeset
1111
kono
parents:
diff changeset
1112 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1113 {
kono
parents:
diff changeset
1114 #pragma acc parallel loop
kono
parents:
diff changeset
1115 for (i = 0; i < 1; i++)
kono
parents:
diff changeset
1116 {
kono
parents:
diff changeset
1117 long long expr = 1LL << N;
kono
parents:
diff changeset
1118
kono
parents:
diff changeset
1119 #pragma acc atomic capture
kono
parents:
diff changeset
1120 { ldata[i] = lgot; lgot = expr >> lgot; }
kono
parents:
diff changeset
1121 }
kono
parents:
diff changeset
1122 }
kono
parents:
diff changeset
1123
kono
parents:
diff changeset
1124 if (lexp != lgot)
kono
parents:
diff changeset
1125 abort ();
kono
parents:
diff changeset
1126
kono
parents:
diff changeset
1127 lgot = 1LL << N;
kono
parents:
diff changeset
1128 lexp = 1LL;
kono
parents:
diff changeset
1129
kono
parents:
diff changeset
1130 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1131 {
kono
parents:
diff changeset
1132 #pragma acc parallel loop
kono
parents:
diff changeset
1133 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1134 {
kono
parents:
diff changeset
1135 long long expr = 1LL;
kono
parents:
diff changeset
1136
kono
parents:
diff changeset
1137 #pragma acc atomic capture
kono
parents:
diff changeset
1138 { lgot = lgot >> expr; ldata[i] = lgot; }
kono
parents:
diff changeset
1139 }
kono
parents:
diff changeset
1140 }
kono
parents:
diff changeset
1141
kono
parents:
diff changeset
1142 if (lexp != lgot)
kono
parents:
diff changeset
1143 abort ();
kono
parents:
diff changeset
1144
kono
parents:
diff changeset
1145 lgot = 1LL;
kono
parents:
diff changeset
1146 lexp = 1LL << (N - 1);
kono
parents:
diff changeset
1147
kono
parents:
diff changeset
1148 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1149 {
kono
parents:
diff changeset
1150 #pragma acc parallel loop
kono
parents:
diff changeset
1151 for (i = 0; i < 1; i++)
kono
parents:
diff changeset
1152 {
kono
parents:
diff changeset
1153 long long expr = 1LL << N;
kono
parents:
diff changeset
1154
kono
parents:
diff changeset
1155 #pragma acc atomic capture
kono
parents:
diff changeset
1156 { lgot = expr >> lgot; ldata[i] = lgot; }
kono
parents:
diff changeset
1157 }
kono
parents:
diff changeset
1158 }
kono
parents:
diff changeset
1159
kono
parents:
diff changeset
1160 if (lexp != lgot)
kono
parents:
diff changeset
1161 abort ();
kono
parents:
diff changeset
1162
kono
parents:
diff changeset
1163 // FLOAT FLOAT FLOAT
kono
parents:
diff changeset
1164
kono
parents:
diff changeset
1165 /* BINOP = + */
kono
parents:
diff changeset
1166 fgot = 0.0;
kono
parents:
diff changeset
1167 fexp = 32.0;
kono
parents:
diff changeset
1168
kono
parents:
diff changeset
1169 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1170 {
kono
parents:
diff changeset
1171 #pragma acc parallel loop
kono
parents:
diff changeset
1172 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1173 {
kono
parents:
diff changeset
1174 float expr = 1.0;
kono
parents:
diff changeset
1175
kono
parents:
diff changeset
1176 #pragma acc atomic capture
kono
parents:
diff changeset
1177 { fdata[i] = fgot; fgot += expr; }
kono
parents:
diff changeset
1178 }
kono
parents:
diff changeset
1179 }
kono
parents:
diff changeset
1180
kono
parents:
diff changeset
1181 if (fexp != fgot)
kono
parents:
diff changeset
1182 abort ();
kono
parents:
diff changeset
1183
kono
parents:
diff changeset
1184 fgot = 0.0;
kono
parents:
diff changeset
1185 fexp = 32.0;
kono
parents:
diff changeset
1186
kono
parents:
diff changeset
1187 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1188 {
kono
parents:
diff changeset
1189 #pragma acc parallel loop
kono
parents:
diff changeset
1190 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1191 {
kono
parents:
diff changeset
1192 float expr = 1.0;
kono
parents:
diff changeset
1193
kono
parents:
diff changeset
1194 #pragma acc atomic capture
kono
parents:
diff changeset
1195 { fgot += expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1196 }
kono
parents:
diff changeset
1197 }
kono
parents:
diff changeset
1198
kono
parents:
diff changeset
1199 if (fexp != fgot)
kono
parents:
diff changeset
1200 abort ();
kono
parents:
diff changeset
1201
kono
parents:
diff changeset
1202 fgot = 0.0;
kono
parents:
diff changeset
1203 fexp = 32.0;
kono
parents:
diff changeset
1204
kono
parents:
diff changeset
1205 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1206 {
kono
parents:
diff changeset
1207 #pragma acc parallel loop
kono
parents:
diff changeset
1208 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1209 {
kono
parents:
diff changeset
1210 float expr = 1.0;
kono
parents:
diff changeset
1211
kono
parents:
diff changeset
1212 #pragma acc atomic capture
kono
parents:
diff changeset
1213 { idata[i] = fgot; fgot = fgot + expr; }
kono
parents:
diff changeset
1214 }
kono
parents:
diff changeset
1215 }
kono
parents:
diff changeset
1216
kono
parents:
diff changeset
1217 if (fexp != fgot)
kono
parents:
diff changeset
1218 abort ();
kono
parents:
diff changeset
1219
kono
parents:
diff changeset
1220 fgot = 0.0;
kono
parents:
diff changeset
1221 fexp = 32.0;
kono
parents:
diff changeset
1222
kono
parents:
diff changeset
1223 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1224 {
kono
parents:
diff changeset
1225 #pragma acc parallel loop
kono
parents:
diff changeset
1226 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1227 {
kono
parents:
diff changeset
1228 float expr = 1.0;
kono
parents:
diff changeset
1229
kono
parents:
diff changeset
1230 #pragma acc atomic capture
kono
parents:
diff changeset
1231 { fdata[i] = fgot; fgot = expr + fgot; }
kono
parents:
diff changeset
1232 }
kono
parents:
diff changeset
1233 }
kono
parents:
diff changeset
1234
kono
parents:
diff changeset
1235 if (fexp != fgot)
kono
parents:
diff changeset
1236 abort ();
kono
parents:
diff changeset
1237
kono
parents:
diff changeset
1238 fgot = 0.0;
kono
parents:
diff changeset
1239 fexp = 32.0;
kono
parents:
diff changeset
1240
kono
parents:
diff changeset
1241 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1242 {
kono
parents:
diff changeset
1243 #pragma acc parallel loop
kono
parents:
diff changeset
1244 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1245 {
kono
parents:
diff changeset
1246 float expr = 1.0;
kono
parents:
diff changeset
1247
kono
parents:
diff changeset
1248 #pragma acc atomic capture
kono
parents:
diff changeset
1249 { fgot = fgot + expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1250 }
kono
parents:
diff changeset
1251 }
kono
parents:
diff changeset
1252
kono
parents:
diff changeset
1253 if (fexp != fgot)
kono
parents:
diff changeset
1254 abort ();
kono
parents:
diff changeset
1255
kono
parents:
diff changeset
1256 fgot = 0.0;
kono
parents:
diff changeset
1257 fexp = 32.0;
kono
parents:
diff changeset
1258
kono
parents:
diff changeset
1259 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1260 {
kono
parents:
diff changeset
1261 #pragma acc parallel loop
kono
parents:
diff changeset
1262 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1263 {
kono
parents:
diff changeset
1264 float expr = 1.0;
kono
parents:
diff changeset
1265
kono
parents:
diff changeset
1266 #pragma acc atomic capture
kono
parents:
diff changeset
1267 { fgot = expr + fgot; fdata[i] = fgot; }
kono
parents:
diff changeset
1268 }
kono
parents:
diff changeset
1269 }
kono
parents:
diff changeset
1270
kono
parents:
diff changeset
1271 if (fexp != fgot)
kono
parents:
diff changeset
1272 abort ();
kono
parents:
diff changeset
1273
kono
parents:
diff changeset
1274 /* BINOP = * */
kono
parents:
diff changeset
1275 fgot = 1.0;
kono
parents:
diff changeset
1276 fexp = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1277
kono
parents:
diff changeset
1278 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1279 {
kono
parents:
diff changeset
1280 #pragma acc parallel loop
kono
parents:
diff changeset
1281 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1282 {
kono
parents:
diff changeset
1283 float expr = 2.0;
kono
parents:
diff changeset
1284
kono
parents:
diff changeset
1285 #pragma acc atomic capture
kono
parents:
diff changeset
1286 { fdata[i] = fgot; fgot *= expr; }
kono
parents:
diff changeset
1287 }
kono
parents:
diff changeset
1288 }
kono
parents:
diff changeset
1289
kono
parents:
diff changeset
1290 if (fexp != fgot)
kono
parents:
diff changeset
1291 abort ();
kono
parents:
diff changeset
1292
kono
parents:
diff changeset
1293 fgot = 1.0;
kono
parents:
diff changeset
1294 fexp = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1295
kono
parents:
diff changeset
1296 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1297 {
kono
parents:
diff changeset
1298 #pragma acc parallel loop
kono
parents:
diff changeset
1299 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1300 {
kono
parents:
diff changeset
1301 float expr = 2.0;
kono
parents:
diff changeset
1302
kono
parents:
diff changeset
1303 #pragma acc atomic capture
kono
parents:
diff changeset
1304 { fgot *= expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1305 }
kono
parents:
diff changeset
1306 }
kono
parents:
diff changeset
1307
kono
parents:
diff changeset
1308 if (fexp != fgot)
kono
parents:
diff changeset
1309 abort ();
kono
parents:
diff changeset
1310
kono
parents:
diff changeset
1311 fgot = 1.0;
kono
parents:
diff changeset
1312 fexp = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1313
kono
parents:
diff changeset
1314 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1315 {
kono
parents:
diff changeset
1316 #pragma acc parallel loop
kono
parents:
diff changeset
1317 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1318 {
kono
parents:
diff changeset
1319 float expr = 2.0;
kono
parents:
diff changeset
1320
kono
parents:
diff changeset
1321 #pragma acc atomic capture
kono
parents:
diff changeset
1322 { fdata[i] = fgot; fgot = fgot * expr; }
kono
parents:
diff changeset
1323 }
kono
parents:
diff changeset
1324 }
kono
parents:
diff changeset
1325
kono
parents:
diff changeset
1326 if (fexp != fgot)
kono
parents:
diff changeset
1327 abort ();
kono
parents:
diff changeset
1328
kono
parents:
diff changeset
1329 fgot = 1.0;
kono
parents:
diff changeset
1330 fexp = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1331
kono
parents:
diff changeset
1332 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1333 {
kono
parents:
diff changeset
1334 #pragma acc parallel loop
kono
parents:
diff changeset
1335 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1336 {
kono
parents:
diff changeset
1337 float expr = 2.0;
kono
parents:
diff changeset
1338
kono
parents:
diff changeset
1339 #pragma acc atomic capture
kono
parents:
diff changeset
1340 { fdata[i] = fgot; fgot = expr * fgot; }
kono
parents:
diff changeset
1341 }
kono
parents:
diff changeset
1342 }
kono
parents:
diff changeset
1343
kono
parents:
diff changeset
1344 if (fexp != fgot)
kono
parents:
diff changeset
1345 abort ();
kono
parents:
diff changeset
1346
kono
parents:
diff changeset
1347 lgot = 1LL;
kono
parents:
diff changeset
1348 lexp = 1LL << 32;
kono
parents:
diff changeset
1349
kono
parents:
diff changeset
1350 #pragma acc data copy (lgot, ldata[0:N])
kono
parents:
diff changeset
1351 {
kono
parents:
diff changeset
1352 #pragma acc parallel loop
kono
parents:
diff changeset
1353 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1354 {
kono
parents:
diff changeset
1355 long long expr = 2LL;
kono
parents:
diff changeset
1356
kono
parents:
diff changeset
1357 #pragma acc atomic capture
kono
parents:
diff changeset
1358 { lgot = lgot * expr; ldata[i] = lgot; }
kono
parents:
diff changeset
1359 }
kono
parents:
diff changeset
1360 }
kono
parents:
diff changeset
1361
kono
parents:
diff changeset
1362 if (lexp != lgot)
kono
parents:
diff changeset
1363 abort ();
kono
parents:
diff changeset
1364
kono
parents:
diff changeset
1365 fgot = 1.0;
kono
parents:
diff changeset
1366 fexp = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1367
kono
parents:
diff changeset
1368 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1369 {
kono
parents:
diff changeset
1370 #pragma acc parallel loop
kono
parents:
diff changeset
1371 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1372 {
kono
parents:
diff changeset
1373 long long expr = 2;
kono
parents:
diff changeset
1374
kono
parents:
diff changeset
1375 #pragma acc atomic capture
kono
parents:
diff changeset
1376 { fgot = expr * fgot; fdata[i] = fgot; }
kono
parents:
diff changeset
1377 }
kono
parents:
diff changeset
1378 }
kono
parents:
diff changeset
1379
kono
parents:
diff changeset
1380 if (fexp != fgot)
kono
parents:
diff changeset
1381 abort ();
kono
parents:
diff changeset
1382
kono
parents:
diff changeset
1383 /* BINOP = - */
kono
parents:
diff changeset
1384 fgot = 32.0;
kono
parents:
diff changeset
1385 fexp = 0.0;
kono
parents:
diff changeset
1386
kono
parents:
diff changeset
1387 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1388 {
kono
parents:
diff changeset
1389 #pragma acc parallel loop
kono
parents:
diff changeset
1390 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1391 {
kono
parents:
diff changeset
1392 float expr = 1.0;
kono
parents:
diff changeset
1393
kono
parents:
diff changeset
1394 #pragma acc atomic capture
kono
parents:
diff changeset
1395 { fdata[i] = fgot; fgot -= expr; }
kono
parents:
diff changeset
1396 }
kono
parents:
diff changeset
1397 }
kono
parents:
diff changeset
1398
kono
parents:
diff changeset
1399 if (fexp != fgot)
kono
parents:
diff changeset
1400 abort ();
kono
parents:
diff changeset
1401
kono
parents:
diff changeset
1402 fgot = 32.0;
kono
parents:
diff changeset
1403 fexp = 0.0;
kono
parents:
diff changeset
1404
kono
parents:
diff changeset
1405 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1406 {
kono
parents:
diff changeset
1407 #pragma acc parallel loop
kono
parents:
diff changeset
1408 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1409 {
kono
parents:
diff changeset
1410 float expr = 1.0;
kono
parents:
diff changeset
1411
kono
parents:
diff changeset
1412 #pragma acc atomic capture
kono
parents:
diff changeset
1413 { fgot -= expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1414 }
kono
parents:
diff changeset
1415 }
kono
parents:
diff changeset
1416
kono
parents:
diff changeset
1417 if (fexp != fgot)
kono
parents:
diff changeset
1418 abort ();
kono
parents:
diff changeset
1419
kono
parents:
diff changeset
1420 fgot = 32.0;
kono
parents:
diff changeset
1421 fexp = 0.0;
kono
parents:
diff changeset
1422
kono
parents:
diff changeset
1423 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1424 {
kono
parents:
diff changeset
1425 #pragma acc parallel loop
kono
parents:
diff changeset
1426 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1427 {
kono
parents:
diff changeset
1428 float expr = 1.0;
kono
parents:
diff changeset
1429
kono
parents:
diff changeset
1430 #pragma acc atomic capture
kono
parents:
diff changeset
1431 { fdata[i] = fgot; fgot = fgot - expr; }
kono
parents:
diff changeset
1432 }
kono
parents:
diff changeset
1433 }
kono
parents:
diff changeset
1434
kono
parents:
diff changeset
1435 if (fexp != fgot)
kono
parents:
diff changeset
1436 abort ();
kono
parents:
diff changeset
1437
kono
parents:
diff changeset
1438 fgot = 1.0;
kono
parents:
diff changeset
1439 fexp = 1.0;
kono
parents:
diff changeset
1440
kono
parents:
diff changeset
1441 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1442 {
kono
parents:
diff changeset
1443 #pragma acc parallel loop
kono
parents:
diff changeset
1444 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1445 {
kono
parents:
diff changeset
1446 float expr = 1.0;
kono
parents:
diff changeset
1447
kono
parents:
diff changeset
1448 #pragma acc atomic capture
kono
parents:
diff changeset
1449 { fdata[i] = fgot; fgot = expr - fgot; }
kono
parents:
diff changeset
1450 }
kono
parents:
diff changeset
1451 }
kono
parents:
diff changeset
1452
kono
parents:
diff changeset
1453 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1454 if (i % 2 == 0)
kono
parents:
diff changeset
1455 {
kono
parents:
diff changeset
1456 if (fdata[i] != 1.0)
kono
parents:
diff changeset
1457 abort ();
kono
parents:
diff changeset
1458 }
kono
parents:
diff changeset
1459 else
kono
parents:
diff changeset
1460 {
kono
parents:
diff changeset
1461 if (fdata[i] != 0.0)
kono
parents:
diff changeset
1462 abort ();
kono
parents:
diff changeset
1463 }
kono
parents:
diff changeset
1464
kono
parents:
diff changeset
1465 if (fexp != fgot)
kono
parents:
diff changeset
1466 abort ();
kono
parents:
diff changeset
1467
kono
parents:
diff changeset
1468 fgot = 1.0;
kono
parents:
diff changeset
1469 fexp = -31.0;
kono
parents:
diff changeset
1470
kono
parents:
diff changeset
1471 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1472 {
kono
parents:
diff changeset
1473 #pragma acc parallel loop
kono
parents:
diff changeset
1474 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1475 {
kono
parents:
diff changeset
1476 float expr = 1.0;
kono
parents:
diff changeset
1477
kono
parents:
diff changeset
1478 #pragma acc atomic capture
kono
parents:
diff changeset
1479 { fgot = fgot - expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1480 }
kono
parents:
diff changeset
1481 }
kono
parents:
diff changeset
1482
kono
parents:
diff changeset
1483 if (fexp != fgot)
kono
parents:
diff changeset
1484 abort ();
kono
parents:
diff changeset
1485
kono
parents:
diff changeset
1486 fgot = 1.0;
kono
parents:
diff changeset
1487 fexp = 1.0;
kono
parents:
diff changeset
1488
kono
parents:
diff changeset
1489 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1490 {
kono
parents:
diff changeset
1491 #pragma acc parallel loop
kono
parents:
diff changeset
1492 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1493 {
kono
parents:
diff changeset
1494 float expr = 1.0;
kono
parents:
diff changeset
1495
kono
parents:
diff changeset
1496 #pragma acc atomic capture
kono
parents:
diff changeset
1497 { fgot = expr - fgot; fdata[i] = fgot; }
kono
parents:
diff changeset
1498 }
kono
parents:
diff changeset
1499 }
kono
parents:
diff changeset
1500
kono
parents:
diff changeset
1501 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1502 if (i % 2 == 0)
kono
parents:
diff changeset
1503 {
kono
parents:
diff changeset
1504 if (fdata[i] != 0.0)
kono
parents:
diff changeset
1505 abort ();
kono
parents:
diff changeset
1506 }
kono
parents:
diff changeset
1507 else
kono
parents:
diff changeset
1508 {
kono
parents:
diff changeset
1509 if (fdata[i] != 1.0)
kono
parents:
diff changeset
1510 abort ();
kono
parents:
diff changeset
1511 }
kono
parents:
diff changeset
1512
kono
parents:
diff changeset
1513 if (fexp != fgot)
kono
parents:
diff changeset
1514 abort ();
kono
parents:
diff changeset
1515
kono
parents:
diff changeset
1516 /* BINOP = / */
kono
parents:
diff changeset
1517 fgot = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1518 fexp = 1.0;
kono
parents:
diff changeset
1519
kono
parents:
diff changeset
1520 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1521 {
kono
parents:
diff changeset
1522 #pragma acc parallel loop
kono
parents:
diff changeset
1523 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1524 {
kono
parents:
diff changeset
1525 float expr = 2.0;
kono
parents:
diff changeset
1526
kono
parents:
diff changeset
1527 #pragma acc atomic capture
kono
parents:
diff changeset
1528 { fdata[i] = fgot; fgot /= expr; }
kono
parents:
diff changeset
1529 }
kono
parents:
diff changeset
1530 }
kono
parents:
diff changeset
1531
kono
parents:
diff changeset
1532 if (fexp != fgot)
kono
parents:
diff changeset
1533 abort ();
kono
parents:
diff changeset
1534
kono
parents:
diff changeset
1535 fgot = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1536 fexp = 1.0;
kono
parents:
diff changeset
1537
kono
parents:
diff changeset
1538 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1539 {
kono
parents:
diff changeset
1540 #pragma acc parallel loop
kono
parents:
diff changeset
1541 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1542 {
kono
parents:
diff changeset
1543 float expr = 2.0;
kono
parents:
diff changeset
1544
kono
parents:
diff changeset
1545 #pragma acc atomic capture
kono
parents:
diff changeset
1546 { fgot /= expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1547 }
kono
parents:
diff changeset
1548 }
kono
parents:
diff changeset
1549
kono
parents:
diff changeset
1550 if (fexp != fgot)
kono
parents:
diff changeset
1551 abort ();
kono
parents:
diff changeset
1552
kono
parents:
diff changeset
1553 fgot = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1554 fexp = 1.0;
kono
parents:
diff changeset
1555
kono
parents:
diff changeset
1556 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1557 {
kono
parents:
diff changeset
1558 #pragma acc parallel loop
kono
parents:
diff changeset
1559 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1560 {
kono
parents:
diff changeset
1561 float expr = 2.0;
kono
parents:
diff changeset
1562
kono
parents:
diff changeset
1563 #pragma acc atomic capture
kono
parents:
diff changeset
1564 { fdata[i] = fgot; fgot = fgot / expr; }
kono
parents:
diff changeset
1565 }
kono
parents:
diff changeset
1566 }
kono
parents:
diff changeset
1567
kono
parents:
diff changeset
1568 if (fexp != fgot)
kono
parents:
diff changeset
1569 abort ();
kono
parents:
diff changeset
1570
kono
parents:
diff changeset
1571 fgot = 8192.0*8192.0*64.0;
kono
parents:
diff changeset
1572 fexp = 1.0;
kono
parents:
diff changeset
1573
kono
parents:
diff changeset
1574 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1575 {
kono
parents:
diff changeset
1576 #pragma acc parallel loop
kono
parents:
diff changeset
1577 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1578 {
kono
parents:
diff changeset
1579 float expr = 1.0;
kono
parents:
diff changeset
1580
kono
parents:
diff changeset
1581 #pragma acc atomic capture
kono
parents:
diff changeset
1582 { fdata[i] = fgot; fgot = expr / fgot; }
kono
parents:
diff changeset
1583 }
kono
parents:
diff changeset
1584 }
kono
parents:
diff changeset
1585
kono
parents:
diff changeset
1586 if (fexp != fgot)
kono
parents:
diff changeset
1587 abort ();
kono
parents:
diff changeset
1588
kono
parents:
diff changeset
1589 fgot = 4.0;
kono
parents:
diff changeset
1590 fexp = 4.0;
kono
parents:
diff changeset
1591
kono
parents:
diff changeset
1592 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1593 {
kono
parents:
diff changeset
1594 #pragma acc parallel loop
kono
parents:
diff changeset
1595 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1596 {
kono
parents:
diff changeset
1597 long long expr = 1LL << N;
kono
parents:
diff changeset
1598
kono
parents:
diff changeset
1599 #pragma acc atomic capture
kono
parents:
diff changeset
1600 { fgot = fgot / expr; fdata[i] = fgot; }
kono
parents:
diff changeset
1601 }
kono
parents:
diff changeset
1602 }
kono
parents:
diff changeset
1603
kono
parents:
diff changeset
1604 if (fexp != fgot)
kono
parents:
diff changeset
1605 abort ();
kono
parents:
diff changeset
1606
kono
parents:
diff changeset
1607 fgot = 4.0;
kono
parents:
diff changeset
1608 fexp = 4.0;
kono
parents:
diff changeset
1609
kono
parents:
diff changeset
1610 #pragma acc data copy (fgot, fdata[0:N])
kono
parents:
diff changeset
1611 {
kono
parents:
diff changeset
1612 #pragma acc parallel loop
kono
parents:
diff changeset
1613 for (i = 0; i < N; i++)
kono
parents:
diff changeset
1614 {
kono
parents:
diff changeset
1615 float expr = 2.0;
kono
parents:
diff changeset
1616
kono
parents:
diff changeset
1617 #pragma acc atomic capture
kono
parents:
diff changeset
1618 { fgot = expr / fgot; fdata[i] = fgot; }
kono
parents:
diff changeset
1619 }
kono
parents:
diff changeset
1620 }
kono
parents:
diff changeset
1621
kono
parents:
diff changeset
1622 if (fexp != fgot)
kono
parents:
diff changeset
1623 abort ();
kono
parents:
diff changeset
1624
kono
parents:
diff changeset
1625 return 0;
kono
parents:
diff changeset
1626 }