xref: /llvm-project/clang/test/OpenMP/atomic_ast_print.cpp (revision 7c1d9b15eee3a34678addab2bab66f3020ac0753)
1 // RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -ast-print %s | FileCheck %s
2 // RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s
3 // RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s
4 
5 // RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -ast-print %s | FileCheck %s
6 // RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s
7 // RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s
8 
9 // RUN: %clang_cc1 -DOMP51 -verify -fopenmp -ast-print %s | FileCheck --check-prefixes=CHECK,CHECK-51 %s
10 // RUN: %clang_cc1 -DOMP51 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s
11 // RUN: %clang_cc1 -DOMP51 -fopenmp -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck --check-prefixes=CHECK,CHECK-51 %s
12 
13 // RUN: %clang_cc1 -DOMP51 -verify -fopenmp-simd -ast-print %s | FileCheck --check-prefixes=CHECK,CHECK-51 %s
14 // RUN: %clang_cc1 -DOMP51 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s
15 // RUN: %clang_cc1 -DOMP51 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck --check-prefixes=CHECK,CHECK-51 %s
16 // expected-no-diagnostics
17 
18 #ifndef HEADER
19 #define HEADER
20 
21 template <class T>
foo(T argc)22 T foo(T argc) {
23   T v = T();
24   T c = T();
25   T b = T();
26   T a = T();
27 #pragma omp atomic
28   a++;
29 #pragma omp atomic read
30   a = argc;
31 #pragma omp atomic write
32   a = argc + argc;
33 #pragma omp atomic update
34   a = a + argc;
35 #pragma omp atomic capture
36   a = b++;
37 #pragma omp atomic capture
38   {
39     a = b;
40     b++;
41   }
42 #ifdef OMP51
43 #pragma omp atomic compare
44   { a = a > b ? b : a; }
45 #pragma omp atomic compare
46   { a = a < b ? b : a; }
47 #pragma omp atomic compare
48   { a = a == b ? c : a; }
49 #pragma omp atomic compare capture
50   { v = a; if (a > b) { a = b; } }
51 #pragma omp atomic compare capture
52   { v = a; if (a < b) { a = b; } }
53 #pragma omp atomic compare capture
54   { v = a == b; if (v) a = c; }
55 #endif
56 #pragma omp atomic seq_cst
57   a++;
58 #pragma omp atomic read seq_cst
59   a = argc;
60 #pragma omp atomic seq_cst write
61   a = argc + argc;
62 #pragma omp atomic update seq_cst
63   a = a + argc;
64 #pragma omp atomic seq_cst capture
65   a = b++;
66 #pragma omp atomic capture seq_cst
67   {
68     a = b;
69     b++;
70   }
71 #ifdef OMP51
72 #pragma omp atomic compare seq_cst
73   { a = a > b ? b : a; }
74 #pragma omp atomic seq_cst compare
75   { a = a < b ? b : a; }
76 #pragma omp atomic compare seq_cst
77   { a = a == b ? c : a; }
78 #pragma omp atomic compare capture seq_cst
79   { v = a; if (a > b) { a = b; } }
80 #pragma omp atomic compare seq_cst capture
81   { v = a; if (a < b) { a = b; } }
82 #pragma omp atomic compare capture seq_cst
83   { v = a == b; if (v) a = c; }
84 #endif
85 #pragma omp atomic
86   a++;
87 #pragma omp atomic read
88   a = argc;
89 #pragma omp atomic write
90   a = argc + argc;
91 #pragma omp atomic update
92   a = a + argc;
93 #pragma omp atomic acq_rel capture
94   a = b++;
95 #pragma omp atomic capture acq_rel
96   {
97     a = b;
98     b++;
99   }
100 #ifdef OMP51
101 #pragma omp atomic compare acq_rel
102   { a = a > b ? b : a; }
103 #pragma omp atomic acq_rel compare
104   { a = a < b ? b : a; }
105 #pragma omp atomic compare acq_rel
106   { a = a == b ? c : a; }
107 #pragma omp atomic compare capture acq_rel
108   { v = a; if (a > b) { a = b; } }
109 #pragma omp atomic compare acq_rel capture
110   { v = a; if (a < b) { a = b; } }
111 #pragma omp atomic compare capture acq_rel
112   { v = a == b; if (v) a = c; }
113 #endif
114 #pragma omp atomic
115   a++;
116 #pragma omp atomic read acquire
117   a = argc;
118 #pragma omp atomic write
119   a = argc + argc;
120 #pragma omp atomic update
121   a = a + argc;
122 #pragma omp atomic acquire capture
123   a = b++;
124 #pragma omp atomic capture acquire
125   {
126     a = b;
127     b++;
128   }
129 #ifdef OMP51
130 #pragma omp atomic compare acquire
131   { a = a > b ? b : a; }
132 #pragma omp atomic acquire compare
133   { a = a < b ? b : a; }
134 #pragma omp atomic compare acquire
135   { a = a == b ? c : a; }
136 #pragma omp atomic compare capture acquire
137   { v = a; if (a > b) { a = b; } }
138 #pragma omp atomic compare acquire capture
139   { v = a; if (a < b) { a = b; } }
140 #pragma omp atomic compare capture acquire
141   { v = a == b; if (v) a = c; }
142 #endif
143 #pragma omp atomic release
144   a++;
145 #pragma omp atomic read
146   a = argc;
147 #pragma omp atomic release write
148   a = argc + argc;
149 #pragma omp atomic update release
150   a = a + argc;
151 #pragma omp atomic release capture
152   a = b++;
153 #pragma omp atomic capture release
154   {
155     a = b;
156     b++;
157   }
158 #ifdef OMP51
159 #pragma omp atomic compare release
160   { a = a > b ? b : a; }
161 #pragma omp atomic release compare
162   { a = a < b ? b : a; }
163 #pragma omp atomic compare release
164   { a = a == b ? c : a; }
165 #pragma omp atomic compare capture release
166   { v = a; if (a > b) { a = b; } }
167 #pragma omp atomic compare release capture
168   { v = a; if (a < b) { a = b; } }
169 #pragma omp atomic compare capture release
170   { v = a == b; if (v) a = c; }
171 #endif
172 #pragma omp atomic relaxed
173   a++;
174 #pragma omp atomic read
175   a = argc;
176 #pragma omp atomic relaxed write
177   a = argc + argc;
178 #pragma omp atomic update relaxed
179   a = a + argc;
180 #pragma omp atomic relaxed capture
181   a = b++;
182 #pragma omp atomic capture relaxed
183   {
184     a = b;
185     b++;
186   }
187 #ifdef OMP51
188 #pragma omp atomic compare relaxed
189   { a = a > b ? b : a; }
190 #pragma omp atomic relaxed compare
191   { a = a < b ? b : a; }
192 #pragma omp atomic compare relaxed
193   { a = a == b ? c : a; }
194 #pragma omp atomic compare capture relaxed
195   { v = a; if (a > b) { a = b; } }
196 #pragma omp atomic compare relaxed capture
197   { v = a; if (a < b) { a = b; } }
198 #pragma omp atomic compare capture relaxed
199   { v = a == b; if (v) a = c; }
200 #endif
201 #pragma omp atomic hint(6)
202   a++;
203 #pragma omp atomic read hint(6)
204   a = argc;
205 #pragma omp atomic hint(6) write
206   a = argc + argc;
207 #pragma omp atomic update hint(6)
208   a = a + argc;
209 #pragma omp atomic hint(6) capture
210   a = b++;
211 #pragma omp atomic capture hint(6)
212   {
213     a = b;
214     b++;
215   }
216 #ifdef OMP51
217 #pragma omp atomic compare hint(6)
218   { a = a > b ? b : a; }
219 #pragma omp atomic hint(6) compare
220   { a = a < b ? b : a; }
221 #pragma omp atomic compare hint(6)
222   { a = a == b ? c : a; }
223 #pragma omp atomic compare capture hint(6)
224   { v = a; if (a > b) { a = b; } }
225 #pragma omp atomic compare hint(6) capture
226   { v = a; if (a < b) { a = b; } }
227 #pragma omp atomic compare capture hint(6)
228   { v = a == b; if (v) a = c; }
229 #pragma omp atomic compare fail(acquire)
230   { if (a < c) { a = c; } }
231 #pragma omp atomic compare fail(relaxed)
232   { if (a < c) { a = c; } }
233 #pragma omp atomic compare fail(seq_cst)
234   { if (a < c) { a = c; } }
235 #pragma omp atomic compare seq_cst weak
236   { if(a == b) { a = c; } }
237 #endif
238   return T();
239 }
240 
241 // CHECK: T a = T();
242 // CHECK-NEXT: #pragma omp atomic{{$}}
243 // CHECK-NEXT: a++;
244 // CHECK-NEXT: #pragma omp atomic read
245 // CHECK-NEXT: a = argc;
246 // CHECK-NEXT: #pragma omp atomic write
247 // CHECK-NEXT: a = argc + argc;
248 // CHECK-NEXT: #pragma omp atomic update
249 // CHECK-NEXT: a = a + argc;
250 // CHECK-NEXT: #pragma omp atomic capture
251 // CHECK-NEXT: a = b++;
252 // CHECK-NEXT: #pragma omp atomic capture
253 // CHECK-NEXT: {
254 // CHECK-NEXT: a = b;
255 // CHECK-NEXT: b++;
256 // CHECK-NEXT: }
257 // CHECK-51-NEXT: #pragma omp atomic compare
258 // CHECK-51-NEXT: {
259 // CHECK-51-NEXT: a = a > b ? b : a;
260 // CHECK-51-NEXT: }
261 // CHECK-51-NEXT: #pragma omp atomic compare
262 // CHECK-51-NEXT: {
263 // CHECK-51-NEXT: a = a < b ? b : a;
264 // CHECK-51-NEXT: }
265 // CHECK-51-NEXT: #pragma omp atomic compare
266 // CHECK-51-NEXT: {
267 // CHECK-51-NEXT: a = a == b ? c : a;
268 // CHECK-51-NEXT: }
269 // CHECK-51-NEXT: #pragma omp atomic compare capture
270 // CHECK-51-NEXT: {
271 // CHECK-51-NEXT: v = a;
272 // CHECK-51-NEXT: if (a > b) {
273 // CHECK-51-NEXT: a = b;
274 // CHECK-51-NEXT: }
275 // CHECK-51-NEXT: }
276 // CHECK-51-NEXT: #pragma omp atomic compare capture
277 // CHECK-51-NEXT: {
278 // CHECK-51-NEXT: v = a;
279 // CHECK-51-NEXT: if (a < b) {
280 // CHECK-51-NEXT: a = b;
281 // CHECK-51-NEXT: }
282 // CHECK-51-NEXT: }
283 // CHECK-51-NEXT: #pragma omp atomic compare capture
284 // CHECK-51-NEXT: {
285 // CHECK-51-NEXT: v = a == b;
286 // CHECK-51-NEXT: if (v)
287 // CHECK-51-NEXT: a = c;
288 // CHECK-51-NEXT: }
289 // CHECK-NEXT: #pragma omp atomic seq_cst
290 // CHECK-NEXT: a++;
291 // CHECK-NEXT: #pragma omp atomic read seq_cst
292 // CHECK-NEXT: a = argc;
293 // CHECK-NEXT: #pragma omp atomic seq_cst write
294 // CHECK-NEXT: a = argc + argc;
295 // CHECK-NEXT: #pragma omp atomic update seq_cst
296 // CHECK-NEXT: a = a + argc;
297 // CHECK-NEXT: #pragma omp atomic seq_cst capture
298 // CHECK-NEXT: a = b++;
299 // CHECK-NEXT: #pragma omp atomic capture seq_cst
300 // CHECK-NEXT: {
301 // CHECK-NEXT: a = b;
302 // CHECK-NEXT: b++;
303 // CHECK-NEXT: }
304 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
305 // CHECK-51-NEXT: {
306 // CHECK-51-NEXT: a = a > b ? b : a;
307 // CHECK-51-NEXT: }
308 // CHECK-51-NEXT: #pragma omp atomic seq_cst compare
309 // CHECK-51-NEXT: {
310 // CHECK-51-NEXT: a = a < b ? b : a;
311 // CHECK-51-NEXT: }
312 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
313 // CHECK-51-NEXT: {
314 // CHECK-51-NEXT: a = a == b ? c : a;
315 // CHECK-51-NEXT: }
316 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
317 // CHECK-51-NEXT: {
318 // CHECK-51-NEXT: v = a;
319 // CHECK-51-NEXT: if (a > b) {
320 // CHECK-51-NEXT: a = b;
321 // CHECK-51-NEXT: }
322 // CHECK-51-NEXT: }
323 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst capture
324 // CHECK-51-NEXT: {
325 // CHECK-51-NEXT: v = a;
326 // CHECK-51-NEXT: if (a < b) {
327 // CHECK-51-NEXT: a = b;
328 // CHECK-51-NEXT: }
329 // CHECK-51-NEXT: }
330 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
331 // CHECK-51-NEXT: {
332 // CHECK-51-NEXT: v = a == b;
333 // CHECK-51-NEXT: if (v)
334 // CHECK-51-NEXT: a = c;
335 // CHECK-51-NEXT: }
336 // CHECK-NEXT: #pragma omp atomic
337 // CHECK-NEXT: a++;
338 // CHECK-NEXT: #pragma omp atomic read
339 // CHECK-NEXT: a = argc;
340 // CHECK-NEXT: #pragma omp atomic write
341 // CHECK-NEXT: a = argc + argc;
342 // CHECK-NEXT: #pragma omp atomic update
343 // CHECK-NEXT: a = a + argc;
344 // CHECK-NEXT: #pragma omp atomic acq_rel capture
345 // CHECK-NEXT: a = b++;
346 // CHECK-NEXT: #pragma omp atomic capture acq_rel
347 // CHECK-NEXT: {
348 // CHECK-NEXT: a = b;
349 // CHECK-NEXT: b++;
350 // CHECK-NEXT: }
351 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
352 // CHECK-51-NEXT: {
353 // CHECK-51-NEXT: a = a > b ? b : a;
354 // CHECK-51-NEXT: }
355 // CHECK-51-NEXT: #pragma omp atomic acq_rel compare
356 // CHECK-51-NEXT: {
357 // CHECK-51-NEXT: a = a < b ? b : a;
358 // CHECK-51-NEXT: }
359 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
360 // CHECK-51-NEXT: {
361 // CHECK-51-NEXT: a = a == b ? c : a;
362 // CHECK-51-NEXT: }
363 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
364 // CHECK-51-NEXT: {
365 // CHECK-51-NEXT: v = a;
366 // CHECK-51-NEXT: if (a > b) {
367 // CHECK-51-NEXT: a = b;
368 // CHECK-51-NEXT: }
369 // CHECK-51-NEXT: }
370 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel capture
371 // CHECK-51-NEXT: {
372 // CHECK-51-NEXT: v = a;
373 // CHECK-51-NEXT: if (a < b) {
374 // CHECK-51-NEXT: a = b;
375 // CHECK-51-NEXT: }
376 // CHECK-51-NEXT: }
377 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
378 // CHECK-51-NEXT: {
379 // CHECK-51-NEXT: v = a == b;
380 // CHECK-51-NEXT: if (v)
381 // CHECK-51-NEXT: a = c;
382 // CHECK-51-NEXT: }
383 // CHECK-NEXT: #pragma omp atomic
384 // CHECK-NEXT: a++;
385 // CHECK-NEXT: #pragma omp atomic read acquire
386 // CHECK-NEXT: a = argc;
387 // CHECK-NEXT: #pragma omp atomic write
388 // CHECK-NEXT: a = argc + argc;
389 // CHECK-NEXT: #pragma omp atomic update
390 // CHECK-NEXT: a = a + argc;
391 // CHECK-NEXT: #pragma omp atomic acquire capture
392 // CHECK-NEXT: a = b++;
393 // CHECK-NEXT: #pragma omp atomic capture acquire
394 // CHECK-NEXT: {
395 // CHECK-NEXT: a = b;
396 // CHECK-NEXT: b++;
397 // CHECK-NEXT: }
398 // CHECK-51-NEXT: #pragma omp atomic compare acquire
399 // CHECK-51-NEXT: {
400 // CHECK-51-NEXT: a = a > b ? b : a;
401 // CHECK-51-NEXT: }
402 // CHECK-51-NEXT: #pragma omp atomic acquire compare
403 // CHECK-51-NEXT: {
404 // CHECK-51-NEXT: a = a < b ? b : a;
405 // CHECK-51-NEXT: }
406 // CHECK-51-NEXT: #pragma omp atomic compare acquire
407 // CHECK-51-NEXT: {
408 // CHECK-51-NEXT: a = a == b ? c : a;
409 // CHECK-51-NEXT: }
410 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
411 // CHECK-51-NEXT: {
412 // CHECK-51-NEXT: v = a;
413 // CHECK-51-NEXT: if (a > b) {
414 // CHECK-51-NEXT: a = b;
415 // CHECK-51-NEXT: }
416 // CHECK-51-NEXT: }
417 // CHECK-51-NEXT: #pragma omp atomic compare acquire capture
418 // CHECK-51-NEXT: {
419 // CHECK-51-NEXT: v = a;
420 // CHECK-51-NEXT: if (a < b) {
421 // CHECK-51-NEXT: a = b;
422 // CHECK-51-NEXT: }
423 // CHECK-51-NEXT: }
424 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
425 // CHECK-51-NEXT: {
426 // CHECK-51-NEXT: v = a == b;
427 // CHECK-51-NEXT: if (v)
428 // CHECK-51-NEXT: a = c;
429 // CHECK-51-NEXT: }
430 // CHECK-NEXT: #pragma omp atomic release
431 // CHECK-NEXT: a++;
432 // CHECK-NEXT: #pragma omp atomic read
433 // CHECK-NEXT: a = argc;
434 // CHECK-NEXT: #pragma omp atomic release write
435 // CHECK-NEXT: a = argc + argc;
436 // CHECK-NEXT: #pragma omp atomic update release
437 // CHECK-NEXT: a = a + argc;
438 // CHECK-NEXT: #pragma omp atomic release capture
439 // CHECK-NEXT: a = b++;
440 // CHECK-NEXT: #pragma omp atomic capture release
441 // CHECK-NEXT: {
442 // CHECK-NEXT: a = b;
443 // CHECK-NEXT: b++;
444 // CHECK-NEXT: }
445 // CHECK-51-NEXT: #pragma omp atomic compare release
446 // CHECK-51-NEXT: {
447 // CHECK-51-NEXT: a = a > b ? b : a;
448 // CHECK-51-NEXT: }
449 // CHECK-51-NEXT: #pragma omp atomic release compare
450 // CHECK-51-NEXT: {
451 // CHECK-51-NEXT: a = a < b ? b : a;
452 // CHECK-51-NEXT: }
453 // CHECK-51-NEXT: #pragma omp atomic compare release
454 // CHECK-51-NEXT: {
455 // CHECK-51-NEXT: a = a == b ? c : a;
456 // CHECK-51-NEXT: }
457 // CHECK-51-NEXT: #pragma omp atomic compare capture release
458 // CHECK-51-NEXT: {
459 // CHECK-51-NEXT: v = a;
460 // CHECK-51-NEXT: if (a > b) {
461 // CHECK-51-NEXT: a = b;
462 // CHECK-51-NEXT: }
463 // CHECK-51-NEXT: }
464 // CHECK-51-NEXT: #pragma omp atomic compare release capture
465 // CHECK-51-NEXT: {
466 // CHECK-51-NEXT: v = a;
467 // CHECK-51-NEXT: if (a < b) {
468 // CHECK-51-NEXT: a = b;
469 // CHECK-51-NEXT: }
470 // CHECK-51-NEXT: }
471 // CHECK-51-NEXT: #pragma omp atomic compare capture release
472 // CHECK-51-NEXT: {
473 // CHECK-51-NEXT: v = a == b;
474 // CHECK-51-NEXT: if (v)
475 // CHECK-51-NEXT: a = c;
476 // CHECK-51-NEXT: }
477 // CHECK-NEXT: #pragma omp atomic relaxed
478 // CHECK-NEXT: a++;
479 // CHECK-NEXT: #pragma omp atomic read
480 // CHECK-NEXT: a = argc;
481 // CHECK-NEXT: #pragma omp atomic relaxed write
482 // CHECK-NEXT: a = argc + argc;
483 // CHECK-NEXT: #pragma omp atomic update relaxed
484 // CHECK-NEXT: a = a + argc;
485 // CHECK-NEXT: #pragma omp atomic relaxed capture
486 // CHECK-NEXT: a = b++;
487 // CHECK-NEXT: #pragma omp atomic capture relaxed
488 // CHECK-NEXT: {
489 // CHECK-NEXT: a = b;
490 // CHECK-NEXT: b++;
491 // CHECK-NEXT: }
492 // CHECK-51-NEXT: #pragma omp atomic compare relaxed
493 // CHECK-51-NEXT: {
494 // CHECK-51-NEXT: a = a > b ? b : a;
495 // CHECK-51-NEXT: }
496 // CHECK-51-NEXT: #pragma omp atomic relaxed compare
497 // CHECK-51-NEXT: {
498 // CHECK-51-NEXT: a = a < b ? b : a;
499 // CHECK-51-NEXT: }
500 // CHECK-51-NEXT: #pragma omp atomic compare relaxed
501 // CHECK-51-NEXT: {
502 // CHECK-51-NEXT: a = a == b ? c : a;
503 // CHECK-51-NEXT: }
504 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
505 // CHECK-51-NEXT: {
506 // CHECK-51-NEXT: v = a;
507 // CHECK-51-NEXT: if (a > b) {
508 // CHECK-51-NEXT: a = b;
509 // CHECK-51-NEXT: }
510 // CHECK-51-NEXT: }
511 // CHECK-51-NEXT: #pragma omp atomic compare relaxed capture
512 // CHECK-51-NEXT: {
513 // CHECK-51-NEXT: v = a;
514 // CHECK-51-NEXT: if (a < b) {
515 // CHECK-51-NEXT: a = b;
516 // CHECK-51-NEXT: }
517 // CHECK-51-NEXT: }
518 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
519 // CHECK-51-NEXT: {
520 // CHECK-51-NEXT: v = a == b;
521 // CHECK-51-NEXT: if (v)
522 // CHECK-51-NEXT: a = c;
523 // CHECK-51-NEXT: }
524 // CHECK-NEXT: #pragma omp atomic hint(6)
525 // CHECK-NEXT: a++;
526 // CHECK-NEXT: #pragma omp atomic read hint(6)
527 // CHECK-NEXT: a = argc;
528 // CHECK-NEXT: #pragma omp atomic hint(6) write
529 // CHECK-NEXT: a = argc + argc;
530 // CHECK-NEXT: #pragma omp atomic update hint(6)
531 // CHECK-NEXT: a = a + argc;
532 // CHECK-NEXT: #pragma omp atomic hint(6) capture
533 // CHECK-NEXT: a = b++;
534 // CHECK-NEXT: #pragma omp atomic capture hint(6)
535 // CHECK-NEXT: {
536 // CHECK-NEXT: a = b;
537 // CHECK-NEXT: b++;
538 // CHECK-NEXT: }
539 // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
540 // CHECK-51-NEXT: {
541 // CHECK-51-NEXT: a = a > b ? b : a;
542 // CHECK-51-NEXT: }
543 // CHECK-51-NEXT: #pragma omp atomic hint(6) compare
544 // CHECK-51-NEXT: {
545 // CHECK-51-NEXT: a = a < b ? b : a;
546 // CHECK-51-NEXT: }
547 // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
548 // CHECK-51-NEXT: {
549 // CHECK-51-NEXT: a = a == b ? c : a;
550 // CHECK-51-NEXT: }
551 // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
552 // CHECK-51-NEXT: {
553 // CHECK-51-NEXT: v = a;
554 // CHECK-51-NEXT: if (a > b) {
555 // CHECK-51-NEXT: a = b;
556 // CHECK-51-NEXT: }
557 // CHECK-51-NEXT: }
558 // CHECK-51-NEXT: #pragma omp atomic compare hint(6) capture
559 // CHECK-51-NEXT: {
560 // CHECK-51-NEXT: v = a;
561 // CHECK-51-NEXT: if (a < b) {
562 // CHECK-51-NEXT: a = b;
563 // CHECK-51-NEXT: }
564 // CHECK-51-NEXT: }
565 // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
566 // CHECK-51-NEXT: {
567 // CHECK-51-NEXT: v = a == b;
568 // CHECK-51-NEXT: if (v)
569 // CHECK-51-NEXT: a = c;
570 // CHECK-51-NEXT: }
571 // CHECK: int a = int();
572 // CHECK-NEXT: #pragma omp atomic
573 // CHECK-NEXT: a++;
574 // CHECK-NEXT: #pragma omp atomic read
575 // CHECK-NEXT: a = argc;
576 // CHECK-NEXT: #pragma omp atomic write
577 // CHECK-NEXT: a = argc + argc;
578 // CHECK-NEXT: #pragma omp atomic update
579 // CHECK-NEXT: a = a + argc;
580 // CHECK-NEXT: #pragma omp atomic capture
581 // CHECK-NEXT: a = b++;
582 // CHECK-NEXT: #pragma omp atomic capture
583 // CHECK-NEXT: {
584 // CHECK-NEXT: a = b;
585 // CHECK-NEXT: b++;
586 // CHECK-NEXT: }
587 // CHECK-51-NEXT: #pragma omp atomic compare
588 // CHECK-51-NEXT: {
589 // CHECK-51-NEXT: a = a > b ? b : a;
590 // CHECK-51-NEXT: }
591 // CHECK-51-NEXT: #pragma omp atomic compare
592 // CHECK-51-NEXT: {
593 // CHECK-51-NEXT: a = a < b ? b : a;
594 // CHECK-51-NEXT: }
595 // CHECK-51-NEXT: #pragma omp atomic compare
596 // CHECK-51-NEXT: {
597 // CHECK-51-NEXT: a = a == b ? c : a;
598 // CHECK-51-NEXT: }
599 // CHECK-51-NEXT: #pragma omp atomic compare capture
600 // CHECK-51-NEXT: {
601 // CHECK-51-NEXT: v = a;
602 // CHECK-51-NEXT: if (a > b) {
603 // CHECK-51-NEXT: a = b;
604 // CHECK-51-NEXT: }
605 // CHECK-51-NEXT: }
606 // CHECK-51-NEXT: #pragma omp atomic compare capture
607 // CHECK-51-NEXT: {
608 // CHECK-51-NEXT: v = a;
609 // CHECK-51-NEXT: if (a < b) {
610 // CHECK-51-NEXT: a = b;
611 // CHECK-51-NEXT: }
612 // CHECK-51-NEXT: }
613 // CHECK-51-NEXT: #pragma omp atomic compare capture
614 // CHECK-51-NEXT: {
615 // CHECK-51-NEXT: v = a == b;
616 // CHECK-51-NEXT: if (v)
617 // CHECK-51-NEXT: a = c;
618 // CHECK-51-NEXT: }
619 // CHECK-NEXT: #pragma omp atomic seq_cst
620 // CHECK-NEXT: a++;
621 // CHECK-NEXT: #pragma omp atomic read seq_cst
622 // CHECK-NEXT: a = argc;
623 // CHECK-NEXT: #pragma omp atomic seq_cst write
624 // CHECK-NEXT: a = argc + argc;
625 // CHECK-NEXT: #pragma omp atomic update seq_cst
626 // CHECK-NEXT: a = a + argc;
627 // CHECK-NEXT: #pragma omp atomic seq_cst capture
628 // CHECK-NEXT: a = b++;
629 // CHECK-NEXT: #pragma omp atomic capture seq_cst
630 // CHECK-NEXT: {
631 // CHECK-NEXT: a = b;
632 // CHECK-NEXT: b++;
633 // CHECK-NEXT: }
634 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
635 // CHECK-51-NEXT: {
636 // CHECK-51-NEXT: a = a > b ? b : a;
637 // CHECK-51-NEXT: }
638 // CHECK-51-NEXT: #pragma omp atomic seq_cst compare
639 // CHECK-51-NEXT: {
640 // CHECK-51-NEXT: a = a < b ? b : a;
641 // CHECK-51-NEXT: }
642 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
643 // CHECK-51-NEXT: {
644 // CHECK-51-NEXT: a = a == b ? c : a;
645 // CHECK-51-NEXT: }
646 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
647 // CHECK-51-NEXT: {
648 // CHECK-51-NEXT: v = a;
649 // CHECK-51-NEXT: if (a > b) {
650 // CHECK-51-NEXT: a = b;
651 // CHECK-51-NEXT: }
652 // CHECK-51-NEXT: }
653 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst capture
654 // CHECK-51-NEXT: {
655 // CHECK-51-NEXT: v = a;
656 // CHECK-51-NEXT: if (a < b) {
657 // CHECK-51-NEXT: a = b;
658 // CHECK-51-NEXT: }
659 // CHECK-51-NEXT: }
660 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
661 // CHECK-51-NEXT: {
662 // CHECK-51-NEXT: v = a == b;
663 // CHECK-51-NEXT: if (v)
664 // CHECK-51-NEXT: a = c;
665 // CHECK-51-NEXT: }
666 // CHECK-NEXT: #pragma omp atomic
667 // CHECK-NEXT: a++;
668 // CHECK-NEXT: #pragma omp atomic read
669 // CHECK-NEXT: a = argc;
670 // CHECK-NEXT: #pragma omp atomic write
671 // CHECK-NEXT: a = argc + argc;
672 // CHECK-NEXT: #pragma omp atomic update
673 // CHECK-NEXT: a = a + argc;
674 // CHECK-NEXT: #pragma omp atomic acq_rel capture
675 // CHECK-NEXT: a = b++;
676 // CHECK-NEXT: #pragma omp atomic capture acq_rel
677 // CHECK-NEXT: {
678 // CHECK-NEXT: a = b;
679 // CHECK-NEXT: b++;
680 // CHECK-NEXT: }
681 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
682 // CHECK-51-NEXT: {
683 // CHECK-51-NEXT: a = a > b ? b : a;
684 // CHECK-51-NEXT: }
685 // CHECK-51-NEXT: #pragma omp atomic acq_rel compare
686 // CHECK-51-NEXT: {
687 // CHECK-51-NEXT: a = a < b ? b : a;
688 // CHECK-51-NEXT: }
689 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
690 // CHECK-51-NEXT: {
691 // CHECK-51-NEXT: a = a == b ? c : a;
692 // CHECK-51-NEXT: }
693 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
694 // CHECK-51-NEXT: {
695 // CHECK-51-NEXT: v = a;
696 // CHECK-51-NEXT: if (a > b) {
697 // CHECK-51-NEXT: a = b;
698 // CHECK-51-NEXT: }
699 // CHECK-51-NEXT: }
700 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel capture
701 // CHECK-51-NEXT: {
702 // CHECK-51-NEXT: v = a;
703 // CHECK-51-NEXT: if (a < b) {
704 // CHECK-51-NEXT: a = b;
705 // CHECK-51-NEXT: }
706 // CHECK-51-NEXT: }
707 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
708 // CHECK-51-NEXT: {
709 // CHECK-51-NEXT: v = a == b;
710 // CHECK-51-NEXT: if (v)
711 // CHECK-51-NEXT: a = c;
712 // CHECK-51-NEXT: }
713 // CHECK-NEXT: #pragma omp atomic
714 // CHECK-NEXT: a++;
715 // CHECK-NEXT: #pragma omp atomic read acquire
716 // CHECK-NEXT: a = argc;
717 // CHECK-NEXT: #pragma omp atomic write
718 // CHECK-NEXT: a = argc + argc;
719 // CHECK-NEXT: #pragma omp atomic update
720 // CHECK-NEXT: a = a + argc;
721 // CHECK-NEXT: #pragma omp atomic acquire capture
722 // CHECK-NEXT: a = b++;
723 // CHECK-NEXT: #pragma omp atomic capture acquire
724 // CHECK-NEXT: {
725 // CHECK-NEXT: a = b;
726 // CHECK-NEXT: b++;
727 // CHECK-NEXT: }
728 // CHECK-51-NEXT: #pragma omp atomic compare acquire
729 // CHECK-51-NEXT: {
730 // CHECK-51-NEXT: a = a > b ? b : a;
731 // CHECK-51-NEXT: }
732 // CHECK-51-NEXT: #pragma omp atomic acquire compare
733 // CHECK-51-NEXT: {
734 // CHECK-51-NEXT: a = a < b ? b : a;
735 // CHECK-51-NEXT: }
736 // CHECK-51-NEXT: #pragma omp atomic compare acquire
737 // CHECK-51-NEXT: {
738 // CHECK-51-NEXT: a = a == b ? c : a;
739 // CHECK-51-NEXT: }
740 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
741 // CHECK-51-NEXT: {
742 // CHECK-51-NEXT: v = a;
743 // CHECK-51-NEXT: if (a > b) {
744 // CHECK-51-NEXT: a = b;
745 // CHECK-51-NEXT: }
746 // CHECK-51-NEXT: }
747 // CHECK-51-NEXT: #pragma omp atomic compare acquire capture
748 // CHECK-51-NEXT: {
749 // CHECK-51-NEXT: v = a;
750 // CHECK-51-NEXT: if (a < b) {
751 // CHECK-51-NEXT: a = b;
752 // CHECK-51-NEXT: }
753 // CHECK-51-NEXT: }
754 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
755 // CHECK-51-NEXT: {
756 // CHECK-51-NEXT: v = a == b;
757 // CHECK-51-NEXT: if (v)
758 // CHECK-51-NEXT: a = c;
759 // CHECK-51-NEXT: }
760 // CHECK-NEXT: #pragma omp atomic release
761 // CHECK-NEXT: a++;
762 // CHECK-NEXT: #pragma omp atomic read
763 // CHECK-NEXT: a = argc;
764 // CHECK-NEXT: #pragma omp atomic release write
765 // CHECK-NEXT: a = argc + argc;
766 // CHECK-NEXT: #pragma omp atomic update release
767 // CHECK-NEXT: a = a + argc;
768 // CHECK-NEXT: #pragma omp atomic release capture
769 // CHECK-NEXT: a = b++;
770 // CHECK-NEXT: #pragma omp atomic capture release
771 // CHECK-NEXT: {
772 // CHECK-NEXT: a = b;
773 // CHECK-NEXT: b++;
774 // CHECK-NEXT: }
775 // CHECK-51-NEXT: #pragma omp atomic compare release
776 // CHECK-51-NEXT: {
777 // CHECK-51-NEXT: a = a > b ? b : a;
778 // CHECK-51-NEXT: }
779 // CHECK-51-NEXT: #pragma omp atomic release compare
780 // CHECK-51-NEXT: {
781 // CHECK-51-NEXT: a = a < b ? b : a;
782 // CHECK-51-NEXT: }
783 // CHECK-51-NEXT: #pragma omp atomic compare release
784 // CHECK-51-NEXT: {
785 // CHECK-51-NEXT: a = a == b ? c : a;
786 // CHECK-51-NEXT: }
787 // CHECK-51-NEXT: #pragma omp atomic compare capture release
788 // CHECK-51-NEXT: {
789 // CHECK-51-NEXT: v = a;
790 // CHECK-51-NEXT: if (a > b) {
791 // CHECK-51-NEXT: a = b;
792 // CHECK-51-NEXT: }
793 // CHECK-51-NEXT: }
794 // CHECK-51-NEXT: #pragma omp atomic compare release capture
795 // CHECK-51-NEXT: {
796 // CHECK-51-NEXT: v = a;
797 // CHECK-51-NEXT: if (a < b) {
798 // CHECK-51-NEXT: a = b;
799 // CHECK-51-NEXT: }
800 // CHECK-51-NEXT: }
801 // CHECK-51-NEXT: #pragma omp atomic compare capture release
802 // CHECK-51-NEXT: {
803 // CHECK-51-NEXT: v = a == b;
804 // CHECK-51-NEXT: if (v)
805 // CHECK-51-NEXT: a = c;
806 // CHECK-51-NEXT: }
807 // CHECK-NEXT: #pragma omp atomic relaxed
808 // CHECK-NEXT: a++;
809 // CHECK-NEXT: #pragma omp atomic read
810 // CHECK-NEXT: a = argc;
811 // CHECK-NEXT: #pragma omp atomic relaxed write
812 // CHECK-NEXT: a = argc + argc;
813 // CHECK-NEXT: #pragma omp atomic update relaxed
814 // CHECK-NEXT: a = a + argc;
815 // CHECK-NEXT: #pragma omp atomic relaxed capture
816 // CHECK-NEXT: a = b++;
817 // CHECK-NEXT: #pragma omp atomic capture relaxed
818 // CHECK-NEXT: {
819 // CHECK-NEXT: a = b;
820 // CHECK-NEXT: b++;
821 // CHECK-NEXT: }
822 // CHECK-51-NEXT: #pragma omp atomic compare relaxed
823 // CHECK-51-NEXT: {
824 // CHECK-51-NEXT: a = a > b ? b : a;
825 // CHECK-51-NEXT: }
826 // CHECK-51-NEXT: #pragma omp atomic relaxed compare
827 // CHECK-51-NEXT: {
828 // CHECK-51-NEXT: a = a < b ? b : a;
829 // CHECK-51-NEXT: }
830 // CHECK-51-NEXT: #pragma omp atomic compare relaxed
831 // CHECK-51-NEXT: {
832 // CHECK-51-NEXT: a = a == b ? c : a;
833 // CHECK-51-NEXT: }
834 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
835 // CHECK-51-NEXT: {
836 // CHECK-51-NEXT: v = a;
837 // CHECK-51-NEXT: if (a > b) {
838 // CHECK-51-NEXT: a = b;
839 // CHECK-51-NEXT: }
840 // CHECK-51-NEXT: }
841 // CHECK-51-NEXT: #pragma omp atomic compare relaxed capture
842 // CHECK-51-NEXT: {
843 // CHECK-51-NEXT: v = a;
844 // CHECK-51-NEXT: if (a < b) {
845 // CHECK-51-NEXT: a = b;
846 // CHECK-51-NEXT: }
847 // CHECK-51-NEXT: }
848 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
849 // CHECK-51-NEXT: {
850 // CHECK-51-NEXT: v = a == b;
851 // CHECK-51-NEXT: if (v)
852 // CHECK-51-NEXT: a = c;
853 // CHECK-51-NEXT: }
854 // CHECK-NEXT: #pragma omp atomic hint(6)
855 // CHECK-NEXT: a++;
856 // CHECK-NEXT: #pragma omp atomic read hint(6)
857 // CHECK-NEXT: a = argc;
858 // CHECK-NEXT: #pragma omp atomic hint(6) write
859 // CHECK-NEXT: a = argc + argc;
860 // CHECK-NEXT: #pragma omp atomic update hint(6)
861 // CHECK-NEXT: a = a + argc;
862 // CHECK-NEXT: #pragma omp atomic hint(6) capture
863 // CHECK-NEXT: a = b++;
864 // CHECK-NEXT: #pragma omp atomic capture hint(6)
865 // CHECK-NEXT: {
866 // CHECK-NEXT: a = b;
867 // CHECK-NEXT: b++;
868 // CHECK-NEXT: }
869 // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
870 // CHECK-51-NEXT: {
871 // CHECK-51-NEXT: a = a > b ? b : a;
872 // CHECK-51-NEXT: }
873 // CHECK-51-NEXT: #pragma omp atomic hint(6) compare
874 // CHECK-51-NEXT: {
875 // CHECK-51-NEXT: a = a < b ? b : a;
876 // CHECK-51-NEXT: }
877 // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
878 // CHECK-51-NEXT: {
879 // CHECK-51-NEXT: a = a == b ? c : a;
880 // CHECK-51-NEXT: }
881 // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
882 // CHECK-51-NEXT: {
883 // CHECK-51-NEXT: v = a;
884 // CHECK-51-NEXT: if (a > b) {
885 // CHECK-51-NEXT: a = b;
886 // CHECK-51-NEXT: }
887 // CHECK-51-NEXT: }
888 // CHECK-51-NEXT: #pragma omp atomic compare hint(6) capture
889 // CHECK-51-NEXT: {
890 // CHECK-51-NEXT: v = a;
891 // CHECK-51-NEXT: if (a < b) {
892 // CHECK-51-NEXT: a = b;
893 // CHECK-51-NEXT: }
894 // CHECK-51-NEXT: }
895 // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
896 // CHECK-51-NEXT: {
897 // CHECK-51-NEXT: v = a == b;
898 // CHECK-51-NEXT: if (v)
899 // CHECK-51-NEXT: a = c;
900 // CHECK-51-NEXT: }
901 
main(int argc,char ** argv)902 int main(int argc, char **argv) {
903   int v = 0;
904   int c = 0;
905   int b = 0;
906   int a = 0;
907 // CHECK: int a = 0;
908 #pragma omp atomic
909   a++;
910 #pragma omp atomic read
911   a = argc;
912 #pragma omp atomic write
913   a = argc + argc;
914 #pragma omp atomic update
915   a = a + argc;
916 #pragma omp atomic capture
917   a = b++;
918 #pragma omp atomic capture
919   {
920     a = b;
921     b++;
922   }
923 #ifdef OMP51
924 #pragma omp atomic compare
925   { a = a > b ? b : a; }
926 #pragma omp atomic compare
927   { a = a < b ? b : a; }
928 #pragma omp atomic compare
929   { a = a == b ? c : a; }
930 #pragma omp atomic compare capture
931   { v = a; if (a > b) { a = b; } }
932 #pragma omp atomic compare capture
933   { v = a; if (a < b) { a = b; } }
934 #pragma omp atomic compare capture
935   { v = a == b; if (v) a = c; }
936 #endif
937 #pragma omp atomic seq_cst
938   a++;
939 #pragma omp atomic read seq_cst
940   a = argc;
941 #pragma omp atomic seq_cst write
942   a = argc + argc;
943 #pragma omp atomic update seq_cst
944   a = a + argc;
945 #pragma omp atomic seq_cst capture
946   a = b++;
947 #pragma omp atomic capture seq_cst
948   {
949     a = b;
950     b++;
951   }
952 #ifdef OMP51
953 #pragma omp atomic compare seq_cst
954   { a = a > b ? b : a; }
955 #pragma omp atomic seq_cst compare
956   { a = a < b ? b : a; }
957 #pragma omp atomic compare seq_cst
958   { a = a == b ? c : a; }
959 #pragma omp atomic compare capture seq_cst
960   { v = a; if (a > b) { a = b; } }
961 #pragma omp atomic compare seq_cst capture
962   { v = a; if (a < b) { a = b; } }
963 #pragma omp atomic compare capture seq_cst
964   { v = a == b; if (v) a = c; }
965 #endif
966 #pragma omp atomic
967   a++;
968 #pragma omp atomic read
969   a = argc;
970 #pragma omp atomic write
971   a = argc + argc;
972 #pragma omp atomic update
973   a = a + argc;
974 #pragma omp atomic acq_rel capture
975   a = b++;
976 #pragma omp atomic capture acq_rel
977   {
978     a = b;
979     b++;
980   }
981 #ifdef OMP51
982 #pragma omp atomic compare acq_rel
983   { a = a > b ? b : a; }
984 #pragma omp atomic acq_rel compare
985   { a = a < b ? b : a; }
986 #pragma omp atomic compare acq_rel
987   { a = a == b ? c : a; }
988 #pragma omp atomic compare capture acq_rel
989   { v = a; if (a > b) { a = b; } }
990 #pragma omp atomic compare acq_rel capture
991   { v = a; if (a < b) { a = b; } }
992 #pragma omp atomic compare capture acq_rel
993   { v = a == b; if (v) a = c; }
994 #endif
995 #pragma omp atomic
996   a++;
997 #pragma omp atomic read acquire
998   a = argc;
999 #pragma omp atomic write
1000   a = argc + argc;
1001 #pragma omp atomic update
1002   a = a + argc;
1003 #pragma omp atomic acquire capture
1004   a = b++;
1005 #pragma omp atomic capture acquire
1006   {
1007     a = b;
1008     b++;
1009   }
1010 #ifdef OMP51
1011 #pragma omp atomic compare acquire
1012   { a = a > b ? b : a; }
1013 #pragma omp atomic acquire compare
1014   { a = a < b ? b : a; }
1015 #pragma omp atomic compare acquire
1016   { a = a == b ? c : a; }
1017 #pragma omp atomic compare capture acquire
1018   { v = a; if (a > b) { a = b; } }
1019 #pragma omp atomic compare acquire capture
1020   { v = a; if (a < b) { a = b; } }
1021 #pragma omp atomic compare capture acquire
1022   { v = a == b; if (v) a = c; }
1023 #endif
1024 #pragma omp atomic release
1025   a++;
1026 #pragma omp atomic read
1027   a = argc;
1028 #pragma omp atomic release write
1029   a = argc + argc;
1030 #pragma omp atomic update release
1031   a = a + argc;
1032 #pragma omp atomic release capture
1033   a = b++;
1034 #pragma omp atomic capture release
1035   {
1036     a = b;
1037     b++;
1038   }
1039 #ifdef OMP51
1040 #pragma omp atomic compare release
1041   { a = a > b ? b : a; }
1042 #pragma omp atomic release compare
1043   { a = a < b ? b : a; }
1044 #pragma omp atomic compare release
1045   { a = a == b ? c : a; }
1046 #pragma omp atomic compare capture release
1047   { v = a; if (a > b) { a = b; } }
1048 #pragma omp atomic compare release capture
1049   { v = a; if (a < b) { a = b; } }
1050 #pragma omp atomic compare capture release
1051   { v = a == b; if (v) a = c; }
1052 #endif
1053 #pragma omp atomic relaxed
1054   a++;
1055 #pragma omp atomic read
1056   a = argc;
1057 #pragma omp atomic relaxed write
1058   a = argc + argc;
1059 #pragma omp atomic update relaxed
1060   a = a + argc;
1061 #pragma omp atomic relaxed capture
1062   a = b++;
1063 #pragma omp atomic capture relaxed
1064   {
1065     a = b;
1066     b++;
1067   }
1068 #ifdef OMP51
1069 #pragma omp atomic compare relaxed
1070   { a = a > b ? b : a; }
1071 #pragma omp atomic relaxed compare
1072   { a = a < b ? b : a; }
1073 #pragma omp atomic compare relaxed
1074   { a = a == b ? c : a; }
1075 #pragma omp atomic compare capture relaxed
1076   { v = a; if (a > b) { a = b; } }
1077 #pragma omp atomic compare relaxed capture
1078   { v = a; if (a < b) { a = b; } }
1079 #pragma omp atomic compare capture relaxed
1080   { v = a == b; if (v) a = c; }
1081 #endif
1082 #pragma omp atomic hint(6)
1083   a++;
1084 #pragma omp atomic read hint(6)
1085   a = argc;
1086 #pragma omp atomic hint(6) write
1087   a = argc + argc;
1088 #pragma omp atomic update hint(6)
1089   a = a + argc;
1090 #pragma omp atomic hint(6) capture
1091   a = b++;
1092 #pragma omp atomic capture hint(6)
1093   {
1094     a = b;
1095     b++;
1096   }
1097 #ifdef OMP51
1098 #pragma omp atomic compare hint(6)
1099   { a = a > b ? b : a; }
1100 #pragma omp atomic hint(6) compare
1101   { a = a < b ? b : a; }
1102 #pragma omp atomic compare hint(6)
1103   { a = a == b ? c : a; }
1104 #pragma omp atomic compare capture hint(6)
1105   { v = a; if (a > b) { a = b; } }
1106 #pragma omp atomic compare hint(6) capture
1107   { v = a; if (a < b) { a = b; } }
1108 #pragma omp atomic compare capture hint(6)
1109   { v = a == b; if (v) a = c; }
1110 #pragma omp atomic compare fail(acquire)
1111   if(a < b) { a = b; }
1112 #pragma omp atomic compare fail(relaxed)
1113   if(a < b) { a = b; }
1114 #pragma omp atomic compare fail(seq_cst)
1115   if(a < b) { a = b; }
1116 #pragma omp atomic compare seq_cst weak
1117   if(a == b) { a = c; }
1118 #endif
1119   // CHECK-NEXT: #pragma omp atomic
1120   // CHECK-NEXT: a++;
1121   // CHECK-NEXT: #pragma omp atomic read
1122   // CHECK-NEXT: a = argc;
1123   // CHECK-NEXT: #pragma omp atomic write
1124   // CHECK-NEXT: a = argc + argc;
1125   // CHECK-NEXT: #pragma omp atomic update
1126   // CHECK-NEXT: a = a + argc;
1127   // CHECK-NEXT: #pragma omp atomic capture
1128   // CHECK-NEXT: a = b++;
1129   // CHECK-NEXT: #pragma omp atomic capture
1130   // CHECK-NEXT: {
1131   // CHECK-NEXT: a = b;
1132   // CHECK-NEXT: b++;
1133   // CHECK-NEXT: }
1134   // CHECK-51-NEXT: #pragma omp atomic compare
1135   // CHECK-51-NEXT: {
1136   // CHECK-51-NEXT: a = a > b ? b : a;
1137   // CHECK-51-NEXT: }
1138   // CHECK-51-NEXT: #pragma omp atomic compare
1139   // CHECK-51-NEXT: {
1140   // CHECK-51-NEXT: a = a < b ? b : a;
1141   // CHECK-51-NEXT: }
1142   // CHECK-51-NEXT: #pragma omp atomic compare
1143   // CHECK-51-NEXT: {
1144   // CHECK-51-NEXT: a = a == b ? c : a;
1145   // CHECK-51-NEXT: }
1146   // CHECK-51-NEXT: #pragma omp atomic compare capture
1147   // CHECK-51-NEXT: {
1148   // CHECK-51-NEXT: v = a;
1149   // CHECK-51-NEXT: if (a > b) {
1150   // CHECK-51-NEXT: a = b;
1151   // CHECK-51-NEXT: }
1152   // CHECK-51-NEXT: }
1153   // CHECK-51-NEXT: #pragma omp atomic compare capture
1154   // CHECK-51-NEXT: {
1155   // CHECK-51-NEXT: v = a;
1156   // CHECK-51-NEXT: if (a < b) {
1157   // CHECK-51-NEXT: a = b;
1158   // CHECK-51-NEXT: }
1159   // CHECK-51-NEXT: }
1160   // CHECK-51-NEXT: #pragma omp atomic compare capture
1161   // CHECK-51-NEXT: {
1162   // CHECK-51-NEXT: v = a == b;
1163   // CHECK-51-NEXT: if (v)
1164   // CHECK-51-NEXT: a = c;
1165   // CHECK-51-NEXT: }
1166   // CHECK-NEXT: #pragma omp atomic seq_cst
1167   // CHECK-NEXT: a++;
1168   // CHECK-NEXT: #pragma omp atomic read seq_cst
1169   // CHECK-NEXT: a = argc;
1170   // CHECK-NEXT: #pragma omp atomic seq_cst write
1171   // CHECK-NEXT: a = argc + argc;
1172   // CHECK-NEXT: #pragma omp atomic update seq_cst
1173   // CHECK-NEXT: a = a + argc;
1174   // CHECK-NEXT: #pragma omp atomic seq_cst capture
1175   // CHECK-NEXT: a = b++;
1176   // CHECK-NEXT: #pragma omp atomic capture seq_cst
1177   // CHECK-NEXT: {
1178   // CHECK-NEXT: a = b;
1179   // CHECK-NEXT: b++;
1180   // CHECK-NEXT: }
1181   // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
1182   // CHECK-51-NEXT: {
1183   // CHECK-51-NEXT: a = a > b ? b : a;
1184   // CHECK-51-NEXT: }
1185   // CHECK-51-NEXT: #pragma omp atomic seq_cst compare
1186   // CHECK-51-NEXT: {
1187   // CHECK-51-NEXT: a = a < b ? b : a;
1188   // CHECK-51-NEXT: }
1189   // CHECK-51-NEXT: #pragma omp atomic compare seq_cst
1190   // CHECK-51-NEXT: {
1191   // CHECK-51-NEXT: a = a == b ? c : a;
1192   // CHECK-51-NEXT: }
1193   // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
1194   // CHECK-51-NEXT: {
1195   // CHECK-51-NEXT: v = a;
1196   // CHECK-51-NEXT: if (a > b) {
1197   // CHECK-51-NEXT: a = b;
1198   // CHECK-51-NEXT: }
1199   // CHECK-51-NEXT: }
1200   // CHECK-51-NEXT: #pragma omp atomic compare seq_cst capture
1201   // CHECK-51-NEXT: {
1202   // CHECK-51-NEXT: v = a;
1203   // CHECK-51-NEXT: if (a < b) {
1204   // CHECK-51-NEXT: a = b;
1205   // CHECK-51-NEXT: }
1206   // CHECK-51-NEXT: }
1207   // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
1208   // CHECK-51-NEXT: {
1209   // CHECK-51-NEXT: v = a == b;
1210   // CHECK-51-NEXT: if (v)
1211   // CHECK-51-NEXT: a = c;
1212   // CHECK-51-NEXT: }
1213   // CHECK-NEXT: #pragma omp atomic
1214   // CHECK-NEXT: a++;
1215   // CHECK-NEXT: #pragma omp atomic read
1216   // CHECK-NEXT: a = argc;
1217   // CHECK-NEXT: #pragma omp atomic write
1218   // CHECK-NEXT: a = argc + argc;
1219   // CHECK-NEXT: #pragma omp atomic update
1220   // CHECK-NEXT: a = a + argc;
1221   // CHECK-NEXT: #pragma omp atomic acq_rel capture
1222   // CHECK-NEXT: a = b++;
1223   // CHECK-NEXT: #pragma omp atomic capture acq_rel
1224   // CHECK-NEXT: {
1225   // CHECK-NEXT: a = b;
1226   // CHECK-NEXT: b++;
1227   // CHECK-NEXT: }
1228   // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
1229   // CHECK-51-NEXT: {
1230   // CHECK-51-NEXT: a = a > b ? b : a;
1231   // CHECK-51-NEXT: }
1232   // CHECK-51-NEXT: #pragma omp atomic acq_rel compare
1233   // CHECK-51-NEXT: {
1234   // CHECK-51-NEXT: a = a < b ? b : a;
1235   // CHECK-51-NEXT: }
1236   // CHECK-51-NEXT: #pragma omp atomic compare acq_rel
1237   // CHECK-51-NEXT: {
1238   // CHECK-51-NEXT: a = a == b ? c : a;
1239   // CHECK-51-NEXT: }
1240   // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1241   // CHECK-51-NEXT: {
1242   // CHECK-51-NEXT: v = a;
1243   // CHECK-51-NEXT: if (a > b) {
1244   // CHECK-51-NEXT: a = b;
1245   // CHECK-51-NEXT: }
1246   // CHECK-51-NEXT: }
1247   // CHECK-51-NEXT: #pragma omp atomic compare acq_rel capture
1248   // CHECK-51-NEXT: {
1249   // CHECK-51-NEXT: v = a;
1250   // CHECK-51-NEXT: if (a < b) {
1251   // CHECK-51-NEXT: a = b;
1252   // CHECK-51-NEXT: }
1253   // CHECK-51-NEXT: }
1254   // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1255   // CHECK-51-NEXT: {
1256   // CHECK-51-NEXT: v = a == b;
1257   // CHECK-51-NEXT: if (v)
1258   // CHECK-51-NEXT: a = c;
1259   // CHECK-51-NEXT: }
1260   // CHECK-NEXT: #pragma omp atomic
1261   // CHECK-NEXT: a++;
1262   // CHECK-NEXT: #pragma omp atomic read acquire
1263   // CHECK-NEXT: a = argc;
1264   // CHECK-NEXT: #pragma omp atomic write
1265   // CHECK-NEXT: a = argc + argc;
1266   // CHECK-NEXT: #pragma omp atomic update
1267   // CHECK-NEXT: a = a + argc;
1268   // CHECK-NEXT: #pragma omp atomic acquire capture
1269   // CHECK-NEXT: a = b++;
1270   // CHECK-NEXT: #pragma omp atomic capture acquire
1271   // CHECK-NEXT: {
1272   // CHECK-NEXT: a = b;
1273   // CHECK-NEXT: b++;
1274   // CHECK-NEXT: }
1275   // CHECK-51-NEXT: #pragma omp atomic compare acquire
1276   // CHECK-51-NEXT: {
1277   // CHECK-51-NEXT: a = a > b ? b : a;
1278   // CHECK-51-NEXT: }
1279   // CHECK-51-NEXT: #pragma omp atomic acquire compare
1280   // CHECK-51-NEXT: {
1281   // CHECK-51-NEXT: a = a < b ? b : a;
1282   // CHECK-51-NEXT: }
1283   // CHECK-51-NEXT: #pragma omp atomic compare acquire
1284   // CHECK-51-NEXT: {
1285   // CHECK-51-NEXT: a = a == b ? c : a;
1286   // CHECK-51-NEXT: }
1287   // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
1288   // CHECK-51-NEXT: {
1289   // CHECK-51-NEXT: v = a;
1290   // CHECK-51-NEXT: if (a > b) {
1291   // CHECK-51-NEXT: a = b;
1292   // CHECK-51-NEXT: }
1293   // CHECK-51-NEXT: }
1294   // CHECK-51-NEXT: #pragma omp atomic compare acquire capture
1295   // CHECK-51-NEXT: {
1296   // CHECK-51-NEXT: v = a;
1297   // CHECK-51-NEXT: if (a < b) {
1298   // CHECK-51-NEXT: a = b;
1299   // CHECK-51-NEXT: }
1300   // CHECK-51-NEXT: }
1301   // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
1302   // CHECK-51-NEXT: {
1303   // CHECK-51-NEXT: v = a == b;
1304   // CHECK-51-NEXT: if (v)
1305   // CHECK-51-NEXT: a = c;
1306   // CHECK-51-NEXT: }
1307   // CHECK-NEXT: #pragma omp atomic release
1308   // CHECK-NEXT: a++;
1309   // CHECK-NEXT: #pragma omp atomic read
1310   // CHECK-NEXT: a = argc;
1311   // CHECK-NEXT: #pragma omp atomic release write
1312   // CHECK-NEXT: a = argc + argc;
1313   // CHECK-NEXT: #pragma omp atomic update release
1314   // CHECK-NEXT: a = a + argc;
1315   // CHECK-NEXT: #pragma omp atomic release capture
1316   // CHECK-NEXT: a = b++;
1317   // CHECK-NEXT: #pragma omp atomic capture release
1318   // CHECK-NEXT: {
1319   // CHECK-NEXT: a = b;
1320   // CHECK-NEXT: b++;
1321   // CHECK-NEXT: }
1322   // CHECK-51-NEXT: #pragma omp atomic compare release
1323   // CHECK-51-NEXT: {
1324   // CHECK-51-NEXT: a = a > b ? b : a;
1325   // CHECK-51-NEXT: }
1326   // CHECK-51-NEXT: #pragma omp atomic release compare
1327   // CHECK-51-NEXT: {
1328   // CHECK-51-NEXT: a = a < b ? b : a;
1329   // CHECK-51-NEXT: }
1330   // CHECK-51-NEXT: #pragma omp atomic compare release
1331   // CHECK-51-NEXT: {
1332   // CHECK-51-NEXT: a = a == b ? c : a;
1333   // CHECK-51-NEXT: }
1334   // CHECK-51-NEXT: #pragma omp atomic compare capture release
1335   // CHECK-51-NEXT: {
1336   // CHECK-51-NEXT: v = a;
1337   // CHECK-51-NEXT: if (a > b) {
1338   // CHECK-51-NEXT: a = b;
1339   // CHECK-51-NEXT: }
1340   // CHECK-51-NEXT: }
1341   // CHECK-51-NEXT: #pragma omp atomic compare release capture
1342   // CHECK-51-NEXT: {
1343   // CHECK-51-NEXT: v = a;
1344   // CHECK-51-NEXT: if (a < b) {
1345   // CHECK-51-NEXT: a = b;
1346   // CHECK-51-NEXT: }
1347   // CHECK-51-NEXT: }
1348   // CHECK-51-NEXT: #pragma omp atomic compare capture release
1349   // CHECK-51-NEXT: {
1350   // CHECK-51-NEXT: v = a == b;
1351   // CHECK-51-NEXT: if (v)
1352   // CHECK-51-NEXT: a = c;
1353   // CHECK-51-NEXT: }
1354   // CHECK-NEXT: #pragma omp atomic relaxed
1355   // CHECK-NEXT: a++;
1356   // CHECK-NEXT: #pragma omp atomic read
1357   // CHECK-NEXT: a = argc;
1358   // CHECK-NEXT: #pragma omp atomic relaxed write
1359   // CHECK-NEXT: a = argc + argc;
1360   // CHECK-NEXT: #pragma omp atomic update relaxed
1361   // CHECK-NEXT: a = a + argc;
1362   // CHECK-NEXT: #pragma omp atomic relaxed capture
1363   // CHECK-NEXT: a = b++;
1364   // CHECK-NEXT: #pragma omp atomic capture relaxed
1365   // CHECK-NEXT: {
1366   // CHECK-NEXT: a = b;
1367   // CHECK-NEXT: b++;
1368   // CHECK-NEXT: }
1369   // CHECK-51-NEXT: #pragma omp atomic compare relaxed
1370   // CHECK-51-NEXT: {
1371   // CHECK-51-NEXT: a = a > b ? b : a;
1372   // CHECK-51-NEXT: }
1373   // CHECK-51-NEXT: #pragma omp atomic relaxed compare
1374   // CHECK-51-NEXT: {
1375   // CHECK-51-NEXT: a = a < b ? b : a;
1376   // CHECK-51-NEXT: }
1377   // CHECK-51-NEXT: #pragma omp atomic compare relaxed
1378   // CHECK-51-NEXT: {
1379   // CHECK-51-NEXT: a = a == b ? c : a;
1380   // CHECK-51-NEXT: }
1381   // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
1382   // CHECK-51-NEXT: {
1383   // CHECK-51-NEXT: v = a;
1384   // CHECK-51-NEXT: if (a > b) {
1385   // CHECK-51-NEXT: a = b;
1386   // CHECK-51-NEXT: }
1387   // CHECK-51-NEXT: }
1388   // CHECK-51-NEXT: #pragma omp atomic compare relaxed capture
1389   // CHECK-51-NEXT: {
1390   // CHECK-51-NEXT: v = a;
1391   // CHECK-51-NEXT: if (a < b) {
1392   // CHECK-51-NEXT: a = b;
1393   // CHECK-51-NEXT: }
1394   // CHECK-51-NEXT: }
1395   // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
1396   // CHECK-51-NEXT: {
1397   // CHECK-51-NEXT: v = a == b;
1398   // CHECK-51-NEXT: if (v)
1399   // CHECK-51-NEXT: a = c;
1400   // CHECK-51-NEXT: }
1401   // CHECK-NEXT: #pragma omp atomic hint(6)
1402   // CHECK-NEXT: a++;
1403   // CHECK-NEXT: #pragma omp atomic read hint(6)
1404   // CHECK-NEXT: a = argc;
1405   // CHECK-NEXT: #pragma omp atomic hint(6) write
1406   // CHECK-NEXT: a = argc + argc;
1407   // CHECK-NEXT: #pragma omp atomic update hint(6)
1408   // CHECK-NEXT: a = a + argc;
1409   // CHECK-NEXT: #pragma omp atomic hint(6) capture
1410   // CHECK-NEXT: a = b++;
1411   // CHECK-NEXT: #pragma omp atomic capture hint(6)
1412   // CHECK-NEXT: {
1413   // CHECK-NEXT: a = b;
1414   // CHECK-NEXT: b++;
1415   // CHECK-NEXT: }
1416   // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
1417   // CHECK-51-NEXT: {
1418   // CHECK-51-NEXT: a = a > b ? b : a;
1419   // CHECK-51-NEXT: }
1420   // CHECK-51-NEXT: #pragma omp atomic hint(6) compare
1421   // CHECK-51-NEXT: {
1422   // CHECK-51-NEXT: a = a < b ? b : a;
1423   // CHECK-51-NEXT: }
1424   // CHECK-51-NEXT: #pragma omp atomic compare hint(6)
1425   // CHECK-51-NEXT: {
1426   // CHECK-51-NEXT: a = a == b ? c : a;
1427   // CHECK-51-NEXT: }
1428   // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
1429   // CHECK-51-NEXT: {
1430   // CHECK-51-NEXT: v = a;
1431   // CHECK-51-NEXT: if (a > b) {
1432   // CHECK-51-NEXT: a = b;
1433   // CHECK-51-NEXT: }
1434   // CHECK-51-NEXT: }
1435   // CHECK-51-NEXT: #pragma omp atomic compare hint(6) capture
1436   // CHECK-51-NEXT: {
1437   // CHECK-51-NEXT: v = a;
1438   // CHECK-51-NEXT: if (a < b) {
1439   // CHECK-51-NEXT: a = b;
1440   // CHECK-51-NEXT: }
1441   // CHECK-51-NEXT: }
1442   // CHECK-51-NEXT: #pragma omp atomic compare capture hint(6)
1443   // CHECK-51-NEXT: {
1444   // CHECK-51-NEXT: v = a == b;
1445   // CHECK-51-NEXT: if (v)
1446   // CHECK-51-NEXT: a = c;
1447   // CHECK-51-NEXT: }
1448   // CHECK-51-NEXT: #pragma omp atomic compare fail(acquire)
1449   // CHECK-51-NEXT: if (a < b) {
1450   // CHECK-51-NEXT: a = b;
1451   // CHECK-51-NEXT: }
1452   // CHECK-51-NEXT: #pragma omp atomic compare fail(relaxed)
1453   // CHECK-51-NEXT: if (a < b) {
1454   // CHECK-51-NEXT: a = b;
1455   // CHECK-51-NEXT: }
1456   // CHECK-51-NEXT: #pragma omp atomic compare fail(seq_cst)
1457   // CHECK-51-NEXT: if (a < b) {
1458   // CHECK-51-NEXT: a = b;
1459   // CHECK-51-NEXT: }
1460   // CHECK-51-NEXT: #pragma omp atomic compare seq_cst weak
1461   // CHECK-51-NEXT: if (a == b) {
1462   // CHECK-51-NEXT: a = c;
1463   // CHECK-51-NEXT: }
1464   // expect-note@+1 {{in instantiation of function template specialization 'foo<int>' requested here}}
1465   return foo(a);
1466 }
1467 
1468 #ifdef OMP51
1469 
ffoo(Ty * x,Ty e,Ty d)1470 template <typename Ty> Ty ffoo(Ty *x, Ty e, Ty d) {
1471   Ty v;
1472   bool r;
1473 
1474 #pragma omp atomic compare capture
1475   {
1476     v = *x;
1477     if (*x > e)
1478       *x = e;
1479   }
1480 #pragma omp atomic compare capture
1481   {
1482     v = *x;
1483     if (*x < e)
1484       *x = e;
1485   }
1486 #pragma omp atomic compare capture
1487   {
1488     v = *x;
1489     if (*x == e)
1490       *x = d;
1491   }
1492 #pragma omp atomic compare capture
1493   {
1494     if (*x > e)
1495       *x = e;
1496     v = *x;
1497   }
1498 #pragma omp atomic compare capture
1499   {
1500     if (*x < e)
1501       *x = e;
1502     v = *x;
1503   }
1504 #pragma omp atomic compare capture
1505   {
1506     if (*x == e)
1507       *x = d;
1508     v = *x;
1509   }
1510 #pragma omp atomic compare capture
1511   {
1512     if (*x == e)
1513       *x = d;
1514     else
1515       v = *x;
1516   }
1517 #pragma omp atomic compare capture
1518   {
1519     r = *x == e;
1520     if (r)
1521       *x = d;
1522   }
1523 #pragma omp atomic compare capture
1524   {
1525     r = *x == e;
1526     if (r)
1527       *x = d;
1528     else
1529       v = *x;
1530   }
1531 
1532 #pragma omp atomic compare capture acq_rel
1533   {
1534     v = *x;
1535     if (*x > e)
1536       *x = e;
1537   }
1538 #pragma omp atomic compare capture acq_rel
1539   {
1540     v = *x;
1541     if (*x < e)
1542       *x = e;
1543   }
1544 #pragma omp atomic compare capture acq_rel
1545   {
1546     v = *x;
1547     if (*x == e)
1548       *x = d;
1549   }
1550 #pragma omp atomic compare capture acq_rel
1551   {
1552     if (*x > e)
1553       *x = e;
1554     v = *x;
1555   }
1556 #pragma omp atomic compare capture acq_rel
1557   {
1558     if (*x < e)
1559       *x = e;
1560     v = *x;
1561   }
1562 #pragma omp atomic compare capture acq_rel
1563   {
1564     if (*x == e)
1565       *x = d;
1566     v = *x;
1567   }
1568 #pragma omp atomic compare capture acq_rel
1569   {
1570     if (*x == e)
1571       *x = d;
1572     else
1573       v = *x;
1574   }
1575 #pragma omp atomic compare capture acq_rel
1576   {
1577     r = *x == e;
1578     if (r)
1579       *x = d;
1580   }
1581 #pragma omp atomic compare capture acq_rel
1582   {
1583     r = *x == e;
1584     if (r)
1585       *x = d;
1586     else
1587       v = *x;
1588   }
1589 
1590 #pragma omp atomic compare capture acquire
1591   {
1592     v = *x;
1593     if (*x > e)
1594       *x = e;
1595   }
1596 #pragma omp atomic compare capture acquire
1597   {
1598     v = *x;
1599     if (*x < e)
1600       *x = e;
1601   }
1602 #pragma omp atomic compare capture acquire
1603   {
1604     v = *x;
1605     if (*x == e)
1606       *x = d;
1607   }
1608 #pragma omp atomic compare capture acquire
1609   {
1610     if (*x > e)
1611       *x = e;
1612     v = *x;
1613   }
1614 #pragma omp atomic compare capture acquire
1615   {
1616     if (*x < e)
1617       *x = e;
1618     v = *x;
1619   }
1620 #pragma omp atomic compare capture acquire
1621   {
1622     if (*x == e)
1623       *x = d;
1624     v = *x;
1625   }
1626 #pragma omp atomic compare capture acquire
1627   {
1628     if (*x == e)
1629       *x = d;
1630     else
1631       v = *x;
1632   }
1633 #pragma omp atomic compare capture acquire
1634   {
1635     r = *x == e;
1636     if (r)
1637       *x = d;
1638   }
1639 #pragma omp atomic compare capture acquire
1640   {
1641     r = *x == e;
1642     if (r)
1643       *x = d;
1644     else
1645       v = *x;
1646   }
1647 
1648 #pragma omp atomic compare capture relaxed
1649   {
1650     v = *x;
1651     if (*x > e)
1652       *x = e;
1653   }
1654 #pragma omp atomic compare capture relaxed
1655   {
1656     v = *x;
1657     if (*x < e)
1658       *x = e;
1659   }
1660 #pragma omp atomic compare capture relaxed
1661   {
1662     v = *x;
1663     if (*x == e)
1664       *x = d;
1665   }
1666 #pragma omp atomic compare capture relaxed
1667   {
1668     if (*x > e)
1669       *x = e;
1670     v = *x;
1671   }
1672 #pragma omp atomic compare capture relaxed
1673   {
1674     if (*x < e)
1675       *x = e;
1676     v = *x;
1677   }
1678 #pragma omp atomic compare capture relaxed
1679   {
1680     if (*x == e)
1681       *x = d;
1682     v = *x;
1683   }
1684 #pragma omp atomic compare capture relaxed
1685   {
1686     if (*x == e)
1687       *x = d;
1688     else
1689       v = *x;
1690   }
1691 #pragma omp atomic compare capture relaxed
1692   {
1693     r = *x == e;
1694     if (r)
1695       *x = d;
1696   }
1697 #pragma omp atomic compare capture relaxed
1698   {
1699     r = *x == e;
1700     if (r)
1701       *x = d;
1702     else
1703       v = *x;
1704   }
1705 
1706 #pragma omp atomic compare capture release
1707   {
1708     v = *x;
1709     if (*x > e)
1710       *x = e;
1711   }
1712 #pragma omp atomic compare capture release
1713   {
1714     v = *x;
1715     if (*x < e)
1716       *x = e;
1717   }
1718 #pragma omp atomic compare capture release
1719   {
1720     v = *x;
1721     if (*x == e)
1722       *x = d;
1723   }
1724 #pragma omp atomic compare capture release
1725   {
1726     if (*x > e)
1727       *x = e;
1728     v = *x;
1729   }
1730 #pragma omp atomic compare capture release
1731   {
1732     if (*x < e)
1733       *x = e;
1734     v = *x;
1735   }
1736 #pragma omp atomic compare capture release
1737   {
1738     if (*x == e)
1739       *x = d;
1740     v = *x;
1741   }
1742 #pragma omp atomic compare capture release
1743   {
1744     if (*x == e)
1745       *x = d;
1746     else
1747       v = *x;
1748   }
1749 #pragma omp atomic compare capture release
1750   {
1751     r = *x == e;
1752     if (r)
1753       *x = d;
1754   }
1755 #pragma omp atomic compare capture release
1756   {
1757     r = *x == e;
1758     if (r)
1759       *x = d;
1760     else
1761       v = *x;
1762   }
1763 
1764 #pragma omp atomic compare capture seq_cst
1765   {
1766     v = *x;
1767     if (*x > e)
1768       *x = e;
1769   }
1770 #pragma omp atomic compare capture seq_cst
1771   {
1772     v = *x;
1773     if (*x < e)
1774       *x = e;
1775   }
1776 #pragma omp atomic compare capture seq_cst
1777   {
1778     v = *x;
1779     if (*x == e)
1780       *x = d;
1781   }
1782 #pragma omp atomic compare capture seq_cst
1783   {
1784     if (*x > e)
1785       *x = e;
1786     v = *x;
1787   }
1788 #pragma omp atomic compare capture seq_cst
1789   {
1790     if (*x < e)
1791       *x = e;
1792     v = *x;
1793   }
1794 #pragma omp atomic compare capture seq_cst
1795   {
1796     if (*x == e)
1797       *x = d;
1798     v = *x;
1799   }
1800 #pragma omp atomic compare capture seq_cst
1801   {
1802     if (*x == e)
1803       *x = d;
1804     else
1805       v = *x;
1806   }
1807 #pragma omp atomic compare capture seq_cst
1808   {
1809     r = *x == e;
1810     if (r)
1811       *x = d;
1812   }
1813 #pragma omp atomic compare capture seq_cst
1814   {
1815     r = *x == e;
1816     if (r)
1817       *x = d;
1818     else
1819       v = *x;
1820   }
1821 
1822   return v;
1823 }
1824 
bbaarr()1825 void bbaarr() {
1826   {
1827     char x, e, d;
1828     ffoo(&x, e, d);
1829   }
1830 
1831   {
1832     unsigned char x, e, d;
1833     ffoo(&x, e, d);
1834   }
1835 
1836   {
1837     short x, e, d;
1838     ffoo(&x, e, d);
1839   }
1840 
1841   {
1842     unsigned short x, e, d;
1843     ffoo(&x, e, d);
1844   }
1845 
1846   {
1847     int x, e, d;
1848     ffoo(&x, e, d);
1849   }
1850 
1851   {
1852     unsigned int x, e, d;
1853     ffoo(&x, e, d);
1854   }
1855 
1856   {
1857     long x, e, d;
1858     ffoo(&x, e, d);
1859   }
1860 
1861   {
1862     unsigned long x, e, d;
1863     ffoo(&x, e, d);
1864   }
1865 
1866   {
1867     long long x, e, d;
1868     ffoo(&x, e, d);
1869   }
1870 
1871   {
1872     unsigned long long x, e, d;
1873     ffoo(&x, e, d);
1874   }
1875 
1876   {
1877     float x, e, d;
1878     ffoo(&x, e, d);
1879   }
1880 
1881   {
1882     double x, e, d;
1883     ffoo(&x, e, d);
1884   }
1885 }
1886 
1887 // CHECK-51: template <typename Ty> Ty ffoo(Ty *x, Ty e, Ty d) {
1888 // CHECK-51-NEXT: Ty v;
1889 // CHECK-51-NEXT: bool r;
1890 // CHECK-51-NEXT: #pragma omp atomic compare capture
1891 // CHECK-51-NEXT: {
1892 // CHECK-51-NEXT: v = *x;
1893 // CHECK-51-NEXT: if (*x > e)
1894 // CHECK-51-NEXT: *x = e;
1895 // CHECK-51-NEXT: }
1896 // CHECK-51-NEXT: #pragma omp atomic compare capture
1897 // CHECK-51-NEXT: {
1898 // CHECK-51-NEXT: v = *x;
1899 // CHECK-51-NEXT: if (*x < e)
1900 // CHECK-51-NEXT: *x = e;
1901 // CHECK-51-NEXT: }
1902 // CHECK-51-NEXT: #pragma omp atomic compare capture
1903 // CHECK-51-NEXT: {
1904 // CHECK-51-NEXT: v = *x;
1905 // CHECK-51-NEXT: if (*x == e)
1906 // CHECK-51-NEXT: *x = d;
1907 // CHECK-51-NEXT: }
1908 // CHECK-51-NEXT: #pragma omp atomic compare capture
1909 // CHECK-51-NEXT: {
1910 // CHECK-51-NEXT: if (*x > e)
1911 // CHECK-51-NEXT: *x = e;
1912 // CHECK-51-NEXT: v = *x;
1913 // CHECK-51-NEXT: }
1914 // CHECK-51-NEXT: #pragma omp atomic compare capture
1915 // CHECK-51-NEXT: {
1916 // CHECK-51-NEXT: if (*x < e)
1917 // CHECK-51-NEXT: *x = e;
1918 // CHECK-51-NEXT: v = *x;
1919 // CHECK-51-NEXT: }
1920 // CHECK-51-NEXT: #pragma omp atomic compare capture
1921 // CHECK-51-NEXT: {
1922 // CHECK-51-NEXT: if (*x == e)
1923 // CHECK-51-NEXT: *x = d;
1924 // CHECK-51-NEXT: v = *x;
1925 // CHECK-51-NEXT: }
1926 // CHECK-51-NEXT: #pragma omp atomic compare capture
1927 // CHECK-51-NEXT: {
1928 // CHECK-51-NEXT: if (*x == e)
1929 // CHECK-51-NEXT: *x = d;
1930 // CHECK-51-NEXT: else
1931 // CHECK-51-NEXT: v = *x;
1932 // CHECK-51-NEXT: }
1933 // CHECK-51-NEXT: #pragma omp atomic compare capture
1934 // CHECK-51-NEXT: {
1935 // CHECK-51-NEXT: r = *x == e;
1936 // CHECK-51-NEXT: if (r)
1937 // CHECK-51-NEXT: *x = d;
1938 // CHECK-51-NEXT: }
1939 // CHECK-51-NEXT: #pragma omp atomic compare capture
1940 // CHECK-51-NEXT: {
1941 // CHECK-51-NEXT: r = *x == e;
1942 // CHECK-51-NEXT: if (r)
1943 // CHECK-51-NEXT: *x = d;
1944 // CHECK-51-NEXT: else
1945 // CHECK-51-NEXT: v = *x;
1946 // CHECK-51-NEXT: }
1947 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1948 // CHECK-51-NEXT: {
1949 // CHECK-51-NEXT: v = *x;
1950 // CHECK-51-NEXT: if (*x > e)
1951 // CHECK-51-NEXT: *x = e;
1952 // CHECK-51-NEXT: }
1953 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1954 // CHECK-51-NEXT: {
1955 // CHECK-51-NEXT: v = *x;
1956 // CHECK-51-NEXT: if (*x < e)
1957 // CHECK-51-NEXT: *x = e;
1958 // CHECK-51-NEXT: }
1959 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1960 // CHECK-51-NEXT: {
1961 // CHECK-51-NEXT: v = *x;
1962 // CHECK-51-NEXT: if (*x == e)
1963 // CHECK-51-NEXT: *x = d;
1964 // CHECK-51-NEXT: }
1965 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1966 // CHECK-51-NEXT: {
1967 // CHECK-51-NEXT: if (*x > e)
1968 // CHECK-51-NEXT: *x = e;
1969 // CHECK-51-NEXT: v = *x;
1970 // CHECK-51-NEXT: }
1971 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1972 // CHECK-51-NEXT: {
1973 // CHECK-51-NEXT: if (*x < e)
1974 // CHECK-51-NEXT: *x = e;
1975 // CHECK-51-NEXT: v = *x;
1976 // CHECK-51-NEXT: }
1977 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1978 // CHECK-51-NEXT: {
1979 // CHECK-51-NEXT: if (*x == e)
1980 // CHECK-51-NEXT: *x = d;
1981 // CHECK-51-NEXT: v = *x;
1982 // CHECK-51-NEXT: }
1983 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1984 // CHECK-51-NEXT: {
1985 // CHECK-51-NEXT: if (*x == e)
1986 // CHECK-51-NEXT: *x = d;
1987 // CHECK-51-NEXT: else
1988 // CHECK-51-NEXT: v = *x;
1989 // CHECK-51-NEXT: }
1990 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1991 // CHECK-51-NEXT: {
1992 // CHECK-51-NEXT: r = *x == e;
1993 // CHECK-51-NEXT: if (r)
1994 // CHECK-51-NEXT: *x = d;
1995 // CHECK-51-NEXT: }
1996 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
1997 // CHECK-51-NEXT: {
1998 // CHECK-51-NEXT: r = *x == e;
1999 // CHECK-51-NEXT: if (r)
2000 // CHECK-51-NEXT: *x = d;
2001 // CHECK-51-NEXT: else
2002 // CHECK-51-NEXT: v = *x;
2003 // CHECK-51-NEXT: }
2004 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2005 // CHECK-51-NEXT: {
2006 // CHECK-51-NEXT: v = *x;
2007 // CHECK-51-NEXT: if (*x > e)
2008 // CHECK-51-NEXT: *x = e;
2009 // CHECK-51-NEXT: }
2010 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2011 // CHECK-51-NEXT: {
2012 // CHECK-51-NEXT: v = *x;
2013 // CHECK-51-NEXT: if (*x < e)
2014 // CHECK-51-NEXT: *x = e;
2015 // CHECK-51-NEXT: }
2016 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2017 // CHECK-51-NEXT: {
2018 // CHECK-51-NEXT: v = *x;
2019 // CHECK-51-NEXT: if (*x == e)
2020 // CHECK-51-NEXT: *x = d;
2021 // CHECK-51-NEXT: }
2022 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2023 // CHECK-51-NEXT: {
2024 // CHECK-51-NEXT: if (*x > e)
2025 // CHECK-51-NEXT: *x = e;
2026 // CHECK-51-NEXT: v = *x;
2027 // CHECK-51-NEXT: }
2028 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2029 // CHECK-51-NEXT: {
2030 // CHECK-51-NEXT: if (*x < e)
2031 // CHECK-51-NEXT: *x = e;
2032 // CHECK-51-NEXT: v = *x;
2033 // CHECK-51-NEXT: }
2034 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2035 // CHECK-51-NEXT: {
2036 // CHECK-51-NEXT: if (*x == e)
2037 // CHECK-51-NEXT: *x = d;
2038 // CHECK-51-NEXT: v = *x;
2039 // CHECK-51-NEXT: }
2040 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2041 // CHECK-51-NEXT: {
2042 // CHECK-51-NEXT: if (*x == e)
2043 // CHECK-51-NEXT: *x = d;
2044 // CHECK-51-NEXT: else
2045 // CHECK-51-NEXT: v = *x;
2046 // CHECK-51-NEXT: }
2047 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2048 // CHECK-51-NEXT: {
2049 // CHECK-51-NEXT: r = *x == e;
2050 // CHECK-51-NEXT: if (r)
2051 // CHECK-51-NEXT: *x = d;
2052 // CHECK-51-NEXT: }
2053 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2054 // CHECK-51-NEXT: {
2055 // CHECK-51-NEXT: r = *x == e;
2056 // CHECK-51-NEXT: if (r)
2057 // CHECK-51-NEXT: *x = d;
2058 // CHECK-51-NEXT: else
2059 // CHECK-51-NEXT: v = *x;
2060 // CHECK-51-NEXT: }
2061 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2062 // CHECK-51-NEXT: {
2063 // CHECK-51-NEXT: v = *x;
2064 // CHECK-51-NEXT: if (*x > e)
2065 // CHECK-51-NEXT: *x = e;
2066 // CHECK-51-NEXT: }
2067 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2068 // CHECK-51-NEXT: {
2069 // CHECK-51-NEXT: v = *x;
2070 // CHECK-51-NEXT: if (*x < e)
2071 // CHECK-51-NEXT: *x = e;
2072 // CHECK-51-NEXT: }
2073 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2074 // CHECK-51-NEXT: {
2075 // CHECK-51-NEXT: v = *x;
2076 // CHECK-51-NEXT: if (*x == e)
2077 // CHECK-51-NEXT: *x = d;
2078 // CHECK-51-NEXT: }
2079 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2080 // CHECK-51-NEXT: {
2081 // CHECK-51-NEXT: if (*x > e)
2082 // CHECK-51-NEXT: *x = e;
2083 // CHECK-51-NEXT: v = *x;
2084 // CHECK-51-NEXT: }
2085 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2086 // CHECK-51-NEXT: {
2087 // CHECK-51-NEXT: if (*x < e)
2088 // CHECK-51-NEXT: *x = e;
2089 // CHECK-51-NEXT: v = *x;
2090 // CHECK-51-NEXT: }
2091 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2092 // CHECK-51-NEXT: {
2093 // CHECK-51-NEXT: if (*x == e)
2094 // CHECK-51-NEXT: *x = d;
2095 // CHECK-51-NEXT: v = *x;
2096 // CHECK-51-NEXT: }
2097 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2098 // CHECK-51-NEXT: {
2099 // CHECK-51-NEXT: if (*x == e)
2100 // CHECK-51-NEXT: *x = d;
2101 // CHECK-51-NEXT: else
2102 // CHECK-51-NEXT: v = *x;
2103 // CHECK-51-NEXT: }
2104 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2105 // CHECK-51-NEXT: {
2106 // CHECK-51-NEXT: r = *x == e;
2107 // CHECK-51-NEXT: if (r)
2108 // CHECK-51-NEXT: *x = d;
2109 // CHECK-51-NEXT: }
2110 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2111 // CHECK-51-NEXT: {
2112 // CHECK-51-NEXT: r = *x == e;
2113 // CHECK-51-NEXT: if (r)
2114 // CHECK-51-NEXT: *x = d;
2115 // CHECK-51-NEXT: else
2116 // CHECK-51-NEXT: v = *x;
2117 // CHECK-51-NEXT: }
2118 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2119 // CHECK-51-NEXT: {
2120 // CHECK-51-NEXT: v = *x;
2121 // CHECK-51-NEXT: if (*x > e)
2122 // CHECK-51-NEXT: *x = e;
2123 // CHECK-51-NEXT: }
2124 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2125 // CHECK-51-NEXT: {
2126 // CHECK-51-NEXT: v = *x;
2127 // CHECK-51-NEXT: if (*x < e)
2128 // CHECK-51-NEXT: *x = e;
2129 // CHECK-51-NEXT: }
2130 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2131 // CHECK-51-NEXT: {
2132 // CHECK-51-NEXT: v = *x;
2133 // CHECK-51-NEXT: if (*x == e)
2134 // CHECK-51-NEXT: *x = d;
2135 // CHECK-51-NEXT: }
2136 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2137 // CHECK-51-NEXT: {
2138 // CHECK-51-NEXT: if (*x > e)
2139 // CHECK-51-NEXT: *x = e;
2140 // CHECK-51-NEXT: v = *x;
2141 // CHECK-51-NEXT: }
2142 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2143 // CHECK-51-NEXT: {
2144 // CHECK-51-NEXT: if (*x < e)
2145 // CHECK-51-NEXT: *x = e;
2146 // CHECK-51-NEXT: v = *x;
2147 // CHECK-51-NEXT: }
2148 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2149 // CHECK-51-NEXT: {
2150 // CHECK-51-NEXT: if (*x == e)
2151 // CHECK-51-NEXT: *x = d;
2152 // CHECK-51-NEXT: v = *x;
2153 // CHECK-51-NEXT: }
2154 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2155 // CHECK-51-NEXT: {
2156 // CHECK-51-NEXT: if (*x == e)
2157 // CHECK-51-NEXT: *x = d;
2158 // CHECK-51-NEXT: else
2159 // CHECK-51-NEXT: v = *x;
2160 // CHECK-51-NEXT: }
2161 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2162 // CHECK-51-NEXT: {
2163 // CHECK-51-NEXT: r = *x == e;
2164 // CHECK-51-NEXT: if (r)
2165 // CHECK-51-NEXT: *x = d;
2166 // CHECK-51-NEXT: }
2167 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2168 // CHECK-51-NEXT: {
2169 // CHECK-51-NEXT: r = *x == e;
2170 // CHECK-51-NEXT: if (r)
2171 // CHECK-51-NEXT: *x = d;
2172 // CHECK-51-NEXT: else
2173 // CHECK-51-NEXT: v = *x;
2174 // CHECK-51-NEXT: }
2175 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2176 // CHECK-51-NEXT: {
2177 // CHECK-51-NEXT: v = *x;
2178 // CHECK-51-NEXT: if (*x > e)
2179 // CHECK-51-NEXT: *x = e;
2180 // CHECK-51-NEXT: }
2181 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2182 // CHECK-51-NEXT: {
2183 // CHECK-51-NEXT: v = *x;
2184 // CHECK-51-NEXT: if (*x < e)
2185 // CHECK-51-NEXT: *x = e;
2186 // CHECK-51-NEXT: }
2187 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2188 // CHECK-51-NEXT: {
2189 // CHECK-51-NEXT: v = *x;
2190 // CHECK-51-NEXT: if (*x == e)
2191 // CHECK-51-NEXT: *x = d;
2192 // CHECK-51-NEXT: }
2193 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2194 // CHECK-51-NEXT: {
2195 // CHECK-51-NEXT: if (*x > e)
2196 // CHECK-51-NEXT: *x = e;
2197 // CHECK-51-NEXT: v = *x;
2198 // CHECK-51-NEXT: }
2199 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2200 // CHECK-51-NEXT: {
2201 // CHECK-51-NEXT: if (*x < e)
2202 // CHECK-51-NEXT: *x = e;
2203 // CHECK-51-NEXT: v = *x;
2204 // CHECK-51-NEXT: }
2205 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2206 // CHECK-51-NEXT: {
2207 // CHECK-51-NEXT: if (*x == e)
2208 // CHECK-51-NEXT: *x = d;
2209 // CHECK-51-NEXT: v = *x;
2210 // CHECK-51-NEXT: }
2211 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2212 // CHECK-51-NEXT: {
2213 // CHECK-51-NEXT: if (*x == e)
2214 // CHECK-51-NEXT: *x = d;
2215 // CHECK-51-NEXT: else
2216 // CHECK-51-NEXT: v = *x;
2217 // CHECK-51-NEXT: }
2218 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2219 // CHECK-51-NEXT: {
2220 // CHECK-51-NEXT: r = *x == e;
2221 // CHECK-51-NEXT: if (r)
2222 // CHECK-51-NEXT: *x = d;
2223 // CHECK-51-NEXT: }
2224 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2225 // CHECK-51-NEXT: {
2226 // CHECK-51-NEXT: r = *x == e;
2227 // CHECK-51-NEXT: if (r)
2228 // CHECK-51-NEXT: *x = d;
2229 // CHECK-51-NEXT: else
2230 // CHECK-51-NEXT: v = *x;
2231 // CHECK-51-NEXT: }
2232 // CHECK-51-NEXT: return v;
2233 // CHECK-51-NEXT: }
2234 // CHECK-51-NEXT: template<> char ffoo<char>(char *x, char e, char d) {
2235 // CHECK-51-NEXT: char v;
2236 // CHECK-51-NEXT: bool r;
2237 // CHECK-51-NEXT: #pragma omp atomic compare capture
2238 // CHECK-51-NEXT: {
2239 // CHECK-51-NEXT: v = *x;
2240 // CHECK-51-NEXT: if (*x > e)
2241 // CHECK-51-NEXT: *x = e;
2242 // CHECK-51-NEXT: }
2243 // CHECK-51-NEXT: #pragma omp atomic compare capture
2244 // CHECK-51-NEXT: {
2245 // CHECK-51-NEXT: v = *x;
2246 // CHECK-51-NEXT: if (*x < e)
2247 // CHECK-51-NEXT: *x = e;
2248 // CHECK-51-NEXT: }
2249 // CHECK-51-NEXT: #pragma omp atomic compare capture
2250 // CHECK-51-NEXT: {
2251 // CHECK-51-NEXT: v = *x;
2252 // CHECK-51-NEXT: if (*x == e)
2253 // CHECK-51-NEXT: *x = d;
2254 // CHECK-51-NEXT: }
2255 // CHECK-51-NEXT: #pragma omp atomic compare capture
2256 // CHECK-51-NEXT: {
2257 // CHECK-51-NEXT: if (*x > e)
2258 // CHECK-51-NEXT: *x = e;
2259 // CHECK-51-NEXT: v = *x;
2260 // CHECK-51-NEXT: }
2261 // CHECK-51-NEXT: #pragma omp atomic compare capture
2262 // CHECK-51-NEXT: {
2263 // CHECK-51-NEXT: if (*x < e)
2264 // CHECK-51-NEXT: *x = e;
2265 // CHECK-51-NEXT: v = *x;
2266 // CHECK-51-NEXT: }
2267 // CHECK-51-NEXT: #pragma omp atomic compare capture
2268 // CHECK-51-NEXT: {
2269 // CHECK-51-NEXT: if (*x == e)
2270 // CHECK-51-NEXT: *x = d;
2271 // CHECK-51-NEXT: v = *x;
2272 // CHECK-51-NEXT: }
2273 // CHECK-51-NEXT: #pragma omp atomic compare capture
2274 // CHECK-51-NEXT: {
2275 // CHECK-51-NEXT: if (*x == e)
2276 // CHECK-51-NEXT: *x = d;
2277 // CHECK-51-NEXT: else
2278 // CHECK-51-NEXT: v = *x;
2279 // CHECK-51-NEXT: }
2280 // CHECK-51-NEXT: #pragma omp atomic compare capture
2281 // CHECK-51-NEXT: {
2282 // CHECK-51-NEXT: r = *x == e;
2283 // CHECK-51-NEXT: if (r)
2284 // CHECK-51-NEXT: *x = d;
2285 // CHECK-51-NEXT: }
2286 // CHECK-51-NEXT: #pragma omp atomic compare capture
2287 // CHECK-51-NEXT: {
2288 // CHECK-51-NEXT: r = *x == e;
2289 // CHECK-51-NEXT: if (r)
2290 // CHECK-51-NEXT: *x = d;
2291 // CHECK-51-NEXT: else
2292 // CHECK-51-NEXT: v = *x;
2293 // CHECK-51-NEXT: }
2294 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2295 // CHECK-51-NEXT: {
2296 // CHECK-51-NEXT: v = *x;
2297 // CHECK-51-NEXT: if (*x > e)
2298 // CHECK-51-NEXT: *x = e;
2299 // CHECK-51-NEXT: }
2300 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2301 // CHECK-51-NEXT: {
2302 // CHECK-51-NEXT: v = *x;
2303 // CHECK-51-NEXT: if (*x < e)
2304 // CHECK-51-NEXT: *x = e;
2305 // CHECK-51-NEXT: }
2306 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2307 // CHECK-51-NEXT: {
2308 // CHECK-51-NEXT: v = *x;
2309 // CHECK-51-NEXT: if (*x == e)
2310 // CHECK-51-NEXT: *x = d;
2311 // CHECK-51-NEXT: }
2312 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2313 // CHECK-51-NEXT: {
2314 // CHECK-51-NEXT: if (*x > e)
2315 // CHECK-51-NEXT: *x = e;
2316 // CHECK-51-NEXT: v = *x;
2317 // CHECK-51-NEXT: }
2318 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2319 // CHECK-51-NEXT: {
2320 // CHECK-51-NEXT: if (*x < e)
2321 // CHECK-51-NEXT: *x = e;
2322 // CHECK-51-NEXT: v = *x;
2323 // CHECK-51-NEXT: }
2324 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2325 // CHECK-51-NEXT: {
2326 // CHECK-51-NEXT: if (*x == e)
2327 // CHECK-51-NEXT: *x = d;
2328 // CHECK-51-NEXT: v = *x;
2329 // CHECK-51-NEXT: }
2330 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2331 // CHECK-51-NEXT: {
2332 // CHECK-51-NEXT: if (*x == e)
2333 // CHECK-51-NEXT: *x = d;
2334 // CHECK-51-NEXT: else
2335 // CHECK-51-NEXT: v = *x;
2336 // CHECK-51-NEXT: }
2337 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2338 // CHECK-51-NEXT: {
2339 // CHECK-51-NEXT: r = *x == e;
2340 // CHECK-51-NEXT: if (r)
2341 // CHECK-51-NEXT: *x = d;
2342 // CHECK-51-NEXT: }
2343 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2344 // CHECK-51-NEXT: {
2345 // CHECK-51-NEXT: r = *x == e;
2346 // CHECK-51-NEXT: if (r)
2347 // CHECK-51-NEXT: *x = d;
2348 // CHECK-51-NEXT: else
2349 // CHECK-51-NEXT: v = *x;
2350 // CHECK-51-NEXT: }
2351 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2352 // CHECK-51-NEXT: {
2353 // CHECK-51-NEXT: v = *x;
2354 // CHECK-51-NEXT: if (*x > e)
2355 // CHECK-51-NEXT: *x = e;
2356 // CHECK-51-NEXT: }
2357 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2358 // CHECK-51-NEXT: {
2359 // CHECK-51-NEXT: v = *x;
2360 // CHECK-51-NEXT: if (*x < e)
2361 // CHECK-51-NEXT: *x = e;
2362 // CHECK-51-NEXT: }
2363 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2364 // CHECK-51-NEXT: {
2365 // CHECK-51-NEXT: v = *x;
2366 // CHECK-51-NEXT: if (*x == e)
2367 // CHECK-51-NEXT: *x = d;
2368 // CHECK-51-NEXT: }
2369 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2370 // CHECK-51-NEXT: {
2371 // CHECK-51-NEXT: if (*x > e)
2372 // CHECK-51-NEXT: *x = e;
2373 // CHECK-51-NEXT: v = *x;
2374 // CHECK-51-NEXT: }
2375 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2376 // CHECK-51-NEXT: {
2377 // CHECK-51-NEXT: if (*x < e)
2378 // CHECK-51-NEXT: *x = e;
2379 // CHECK-51-NEXT: v = *x;
2380 // CHECK-51-NEXT: }
2381 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2382 // CHECK-51-NEXT: {
2383 // CHECK-51-NEXT: if (*x == e)
2384 // CHECK-51-NEXT: *x = d;
2385 // CHECK-51-NEXT: v = *x;
2386 // CHECK-51-NEXT: }
2387 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2388 // CHECK-51-NEXT: {
2389 // CHECK-51-NEXT: if (*x == e)
2390 // CHECK-51-NEXT: *x = d;
2391 // CHECK-51-NEXT: else
2392 // CHECK-51-NEXT: v = *x;
2393 // CHECK-51-NEXT: }
2394 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2395 // CHECK-51-NEXT: {
2396 // CHECK-51-NEXT: r = *x == e;
2397 // CHECK-51-NEXT: if (r)
2398 // CHECK-51-NEXT: *x = d;
2399 // CHECK-51-NEXT: }
2400 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2401 // CHECK-51-NEXT: {
2402 // CHECK-51-NEXT: r = *x == e;
2403 // CHECK-51-NEXT: if (r)
2404 // CHECK-51-NEXT: *x = d;
2405 // CHECK-51-NEXT: else
2406 // CHECK-51-NEXT: v = *x;
2407 // CHECK-51-NEXT: }
2408 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2409 // CHECK-51-NEXT: {
2410 // CHECK-51-NEXT: v = *x;
2411 // CHECK-51-NEXT: if (*x > e)
2412 // CHECK-51-NEXT: *x = e;
2413 // CHECK-51-NEXT: }
2414 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2415 // CHECK-51-NEXT: {
2416 // CHECK-51-NEXT: v = *x;
2417 // CHECK-51-NEXT: if (*x < e)
2418 // CHECK-51-NEXT: *x = e;
2419 // CHECK-51-NEXT: }
2420 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2421 // CHECK-51-NEXT: {
2422 // CHECK-51-NEXT: v = *x;
2423 // CHECK-51-NEXT: if (*x == e)
2424 // CHECK-51-NEXT: *x = d;
2425 // CHECK-51-NEXT: }
2426 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2427 // CHECK-51-NEXT: {
2428 // CHECK-51-NEXT: if (*x > e)
2429 // CHECK-51-NEXT: *x = e;
2430 // CHECK-51-NEXT: v = *x;
2431 // CHECK-51-NEXT: }
2432 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2433 // CHECK-51-NEXT: {
2434 // CHECK-51-NEXT: if (*x < e)
2435 // CHECK-51-NEXT: *x = e;
2436 // CHECK-51-NEXT: v = *x;
2437 // CHECK-51-NEXT: }
2438 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2439 // CHECK-51-NEXT: {
2440 // CHECK-51-NEXT: if (*x == e)
2441 // CHECK-51-NEXT: *x = d;
2442 // CHECK-51-NEXT: v = *x;
2443 // CHECK-51-NEXT: }
2444 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2445 // CHECK-51-NEXT: {
2446 // CHECK-51-NEXT: if (*x == e)
2447 // CHECK-51-NEXT: *x = d;
2448 // CHECK-51-NEXT: else
2449 // CHECK-51-NEXT: v = *x;
2450 // CHECK-51-NEXT: }
2451 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2452 // CHECK-51-NEXT: {
2453 // CHECK-51-NEXT: r = *x == e;
2454 // CHECK-51-NEXT: if (r)
2455 // CHECK-51-NEXT: *x = d;
2456 // CHECK-51-NEXT: }
2457 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2458 // CHECK-51-NEXT: {
2459 // CHECK-51-NEXT: r = *x == e;
2460 // CHECK-51-NEXT: if (r)
2461 // CHECK-51-NEXT: *x = d;
2462 // CHECK-51-NEXT: else
2463 // CHECK-51-NEXT: v = *x;
2464 // CHECK-51-NEXT: }
2465 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2466 // CHECK-51-NEXT: {
2467 // CHECK-51-NEXT: v = *x;
2468 // CHECK-51-NEXT: if (*x > e)
2469 // CHECK-51-NEXT: *x = e;
2470 // CHECK-51-NEXT: }
2471 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2472 // CHECK-51-NEXT: {
2473 // CHECK-51-NEXT: v = *x;
2474 // CHECK-51-NEXT: if (*x < e)
2475 // CHECK-51-NEXT: *x = e;
2476 // CHECK-51-NEXT: }
2477 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2478 // CHECK-51-NEXT: {
2479 // CHECK-51-NEXT: v = *x;
2480 // CHECK-51-NEXT: if (*x == e)
2481 // CHECK-51-NEXT: *x = d;
2482 // CHECK-51-NEXT: }
2483 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2484 // CHECK-51-NEXT: {
2485 // CHECK-51-NEXT: if (*x > e)
2486 // CHECK-51-NEXT: *x = e;
2487 // CHECK-51-NEXT: v = *x;
2488 // CHECK-51-NEXT: }
2489 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2490 // CHECK-51-NEXT: {
2491 // CHECK-51-NEXT: if (*x < e)
2492 // CHECK-51-NEXT: *x = e;
2493 // CHECK-51-NEXT: v = *x;
2494 // CHECK-51-NEXT: }
2495 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2496 // CHECK-51-NEXT: {
2497 // CHECK-51-NEXT: if (*x == e)
2498 // CHECK-51-NEXT: *x = d;
2499 // CHECK-51-NEXT: v = *x;
2500 // CHECK-51-NEXT: }
2501 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2502 // CHECK-51-NEXT: {
2503 // CHECK-51-NEXT: if (*x == e)
2504 // CHECK-51-NEXT: *x = d;
2505 // CHECK-51-NEXT: else
2506 // CHECK-51-NEXT: v = *x;
2507 // CHECK-51-NEXT: }
2508 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2509 // CHECK-51-NEXT: {
2510 // CHECK-51-NEXT: r = *x == e;
2511 // CHECK-51-NEXT: if (r)
2512 // CHECK-51-NEXT: *x = d;
2513 // CHECK-51-NEXT: }
2514 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2515 // CHECK-51-NEXT: {
2516 // CHECK-51-NEXT: r = *x == e;
2517 // CHECK-51-NEXT: if (r)
2518 // CHECK-51-NEXT: *x = d;
2519 // CHECK-51-NEXT: else
2520 // CHECK-51-NEXT: v = *x;
2521 // CHECK-51-NEXT: }
2522 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2523 // CHECK-51-NEXT: {
2524 // CHECK-51-NEXT: v = *x;
2525 // CHECK-51-NEXT: if (*x > e)
2526 // CHECK-51-NEXT: *x = e;
2527 // CHECK-51-NEXT: }
2528 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2529 // CHECK-51-NEXT: {
2530 // CHECK-51-NEXT: v = *x;
2531 // CHECK-51-NEXT: if (*x < e)
2532 // CHECK-51-NEXT: *x = e;
2533 // CHECK-51-NEXT: }
2534 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2535 // CHECK-51-NEXT: {
2536 // CHECK-51-NEXT: v = *x;
2537 // CHECK-51-NEXT: if (*x == e)
2538 // CHECK-51-NEXT: *x = d;
2539 // CHECK-51-NEXT: }
2540 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2541 // CHECK-51-NEXT: {
2542 // CHECK-51-NEXT: if (*x > e)
2543 // CHECK-51-NEXT: *x = e;
2544 // CHECK-51-NEXT: v = *x;
2545 // CHECK-51-NEXT: }
2546 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2547 // CHECK-51-NEXT: {
2548 // CHECK-51-NEXT: if (*x < e)
2549 // CHECK-51-NEXT: *x = e;
2550 // CHECK-51-NEXT: v = *x;
2551 // CHECK-51-NEXT: }
2552 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2553 // CHECK-51-NEXT: {
2554 // CHECK-51-NEXT: if (*x == e)
2555 // CHECK-51-NEXT: *x = d;
2556 // CHECK-51-NEXT: v = *x;
2557 // CHECK-51-NEXT: }
2558 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2559 // CHECK-51-NEXT: {
2560 // CHECK-51-NEXT: if (*x == e)
2561 // CHECK-51-NEXT: *x = d;
2562 // CHECK-51-NEXT: else
2563 // CHECK-51-NEXT: v = *x;
2564 // CHECK-51-NEXT: }
2565 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2566 // CHECK-51-NEXT: {
2567 // CHECK-51-NEXT: r = *x == e;
2568 // CHECK-51-NEXT: if (r)
2569 // CHECK-51-NEXT: *x = d;
2570 // CHECK-51-NEXT: }
2571 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2572 // CHECK-51-NEXT: {
2573 // CHECK-51-NEXT: r = *x == e;
2574 // CHECK-51-NEXT: if (r)
2575 // CHECK-51-NEXT: *x = d;
2576 // CHECK-51-NEXT: else
2577 // CHECK-51-NEXT: v = *x;
2578 // CHECK-51-NEXT: }
2579 // CHECK-51-NEXT: return v;
2580 // CHECK-51-NEXT: }
2581 // CHECK-51-NEXT: template<> unsigned char ffoo<unsigned char>(unsigned char *x, unsigned char e, unsigned char d) {
2582 // CHECK-51-NEXT: unsigned char v;
2583 // CHECK-51-NEXT: bool r;
2584 // CHECK-51-NEXT: #pragma omp atomic compare capture
2585 // CHECK-51-NEXT: {
2586 // CHECK-51-NEXT: v = *x;
2587 // CHECK-51-NEXT: if (*x > e)
2588 // CHECK-51-NEXT: *x = e;
2589 // CHECK-51-NEXT: }
2590 // CHECK-51-NEXT: #pragma omp atomic compare capture
2591 // CHECK-51-NEXT: {
2592 // CHECK-51-NEXT: v = *x;
2593 // CHECK-51-NEXT: if (*x < e)
2594 // CHECK-51-NEXT: *x = e;
2595 // CHECK-51-NEXT: }
2596 // CHECK-51-NEXT: #pragma omp atomic compare capture
2597 // CHECK-51-NEXT: {
2598 // CHECK-51-NEXT: v = *x;
2599 // CHECK-51-NEXT: if (*x == e)
2600 // CHECK-51-NEXT: *x = d;
2601 // CHECK-51-NEXT: }
2602 // CHECK-51-NEXT: #pragma omp atomic compare capture
2603 // CHECK-51-NEXT: {
2604 // CHECK-51-NEXT: if (*x > e)
2605 // CHECK-51-NEXT: *x = e;
2606 // CHECK-51-NEXT: v = *x;
2607 // CHECK-51-NEXT: }
2608 // CHECK-51-NEXT: #pragma omp atomic compare capture
2609 // CHECK-51-NEXT: {
2610 // CHECK-51-NEXT: if (*x < e)
2611 // CHECK-51-NEXT: *x = e;
2612 // CHECK-51-NEXT: v = *x;
2613 // CHECK-51-NEXT: }
2614 // CHECK-51-NEXT: #pragma omp atomic compare capture
2615 // CHECK-51-NEXT: {
2616 // CHECK-51-NEXT: if (*x == e)
2617 // CHECK-51-NEXT: *x = d;
2618 // CHECK-51-NEXT: v = *x;
2619 // CHECK-51-NEXT: }
2620 // CHECK-51-NEXT: #pragma omp atomic compare capture
2621 // CHECK-51-NEXT: {
2622 // CHECK-51-NEXT: if (*x == e)
2623 // CHECK-51-NEXT: *x = d;
2624 // CHECK-51-NEXT: else
2625 // CHECK-51-NEXT: v = *x;
2626 // CHECK-51-NEXT: }
2627 // CHECK-51-NEXT: #pragma omp atomic compare capture
2628 // CHECK-51-NEXT: {
2629 // CHECK-51-NEXT: r = *x == e;
2630 // CHECK-51-NEXT: if (r)
2631 // CHECK-51-NEXT: *x = d;
2632 // CHECK-51-NEXT: }
2633 // CHECK-51-NEXT: #pragma omp atomic compare capture
2634 // CHECK-51-NEXT: {
2635 // CHECK-51-NEXT: r = *x == e;
2636 // CHECK-51-NEXT: if (r)
2637 // CHECK-51-NEXT: *x = d;
2638 // CHECK-51-NEXT: else
2639 // CHECK-51-NEXT: v = *x;
2640 // CHECK-51-NEXT: }
2641 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2642 // CHECK-51-NEXT: {
2643 // CHECK-51-NEXT: v = *x;
2644 // CHECK-51-NEXT: if (*x > e)
2645 // CHECK-51-NEXT: *x = e;
2646 // CHECK-51-NEXT: }
2647 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2648 // CHECK-51-NEXT: {
2649 // CHECK-51-NEXT: v = *x;
2650 // CHECK-51-NEXT: if (*x < e)
2651 // CHECK-51-NEXT: *x = e;
2652 // CHECK-51-NEXT: }
2653 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2654 // CHECK-51-NEXT: {
2655 // CHECK-51-NEXT: v = *x;
2656 // CHECK-51-NEXT: if (*x == e)
2657 // CHECK-51-NEXT: *x = d;
2658 // CHECK-51-NEXT: }
2659 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2660 // CHECK-51-NEXT: {
2661 // CHECK-51-NEXT: if (*x > e)
2662 // CHECK-51-NEXT: *x = e;
2663 // CHECK-51-NEXT: v = *x;
2664 // CHECK-51-NEXT: }
2665 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2666 // CHECK-51-NEXT: {
2667 // CHECK-51-NEXT: if (*x < e)
2668 // CHECK-51-NEXT: *x = e;
2669 // CHECK-51-NEXT: v = *x;
2670 // CHECK-51-NEXT: }
2671 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2672 // CHECK-51-NEXT: {
2673 // CHECK-51-NEXT: if (*x == e)
2674 // CHECK-51-NEXT: *x = d;
2675 // CHECK-51-NEXT: v = *x;
2676 // CHECK-51-NEXT: }
2677 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2678 // CHECK-51-NEXT: {
2679 // CHECK-51-NEXT: if (*x == e)
2680 // CHECK-51-NEXT: *x = d;
2681 // CHECK-51-NEXT: else
2682 // CHECK-51-NEXT: v = *x;
2683 // CHECK-51-NEXT: }
2684 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2685 // CHECK-51-NEXT: {
2686 // CHECK-51-NEXT: r = *x == e;
2687 // CHECK-51-NEXT: if (r)
2688 // CHECK-51-NEXT: *x = d;
2689 // CHECK-51-NEXT: }
2690 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2691 // CHECK-51-NEXT: {
2692 // CHECK-51-NEXT: r = *x == e;
2693 // CHECK-51-NEXT: if (r)
2694 // CHECK-51-NEXT: *x = d;
2695 // CHECK-51-NEXT: else
2696 // CHECK-51-NEXT: v = *x;
2697 // CHECK-51-NEXT: }
2698 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2699 // CHECK-51-NEXT: {
2700 // CHECK-51-NEXT: v = *x;
2701 // CHECK-51-NEXT: if (*x > e)
2702 // CHECK-51-NEXT: *x = e;
2703 // CHECK-51-NEXT: }
2704 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2705 // CHECK-51-NEXT: {
2706 // CHECK-51-NEXT: v = *x;
2707 // CHECK-51-NEXT: if (*x < e)
2708 // CHECK-51-NEXT: *x = e;
2709 // CHECK-51-NEXT: }
2710 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2711 // CHECK-51-NEXT: {
2712 // CHECK-51-NEXT: v = *x;
2713 // CHECK-51-NEXT: if (*x == e)
2714 // CHECK-51-NEXT: *x = d;
2715 // CHECK-51-NEXT: }
2716 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2717 // CHECK-51-NEXT: {
2718 // CHECK-51-NEXT: if (*x > e)
2719 // CHECK-51-NEXT: *x = e;
2720 // CHECK-51-NEXT: v = *x;
2721 // CHECK-51-NEXT: }
2722 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2723 // CHECK-51-NEXT: {
2724 // CHECK-51-NEXT: if (*x < e)
2725 // CHECK-51-NEXT: *x = e;
2726 // CHECK-51-NEXT: v = *x;
2727 // CHECK-51-NEXT: }
2728 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2729 // CHECK-51-NEXT: {
2730 // CHECK-51-NEXT: if (*x == e)
2731 // CHECK-51-NEXT: *x = d;
2732 // CHECK-51-NEXT: v = *x;
2733 // CHECK-51-NEXT: }
2734 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2735 // CHECK-51-NEXT: {
2736 // CHECK-51-NEXT: if (*x == e)
2737 // CHECK-51-NEXT: *x = d;
2738 // CHECK-51-NEXT: else
2739 // CHECK-51-NEXT: v = *x;
2740 // CHECK-51-NEXT: }
2741 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2742 // CHECK-51-NEXT: {
2743 // CHECK-51-NEXT: r = *x == e;
2744 // CHECK-51-NEXT: if (r)
2745 // CHECK-51-NEXT: *x = d;
2746 // CHECK-51-NEXT: }
2747 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
2748 // CHECK-51-NEXT: {
2749 // CHECK-51-NEXT: r = *x == e;
2750 // CHECK-51-NEXT: if (r)
2751 // CHECK-51-NEXT: *x = d;
2752 // CHECK-51-NEXT: else
2753 // CHECK-51-NEXT: v = *x;
2754 // CHECK-51-NEXT: }
2755 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2756 // CHECK-51-NEXT: {
2757 // CHECK-51-NEXT: v = *x;
2758 // CHECK-51-NEXT: if (*x > e)
2759 // CHECK-51-NEXT: *x = e;
2760 // CHECK-51-NEXT: }
2761 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2762 // CHECK-51-NEXT: {
2763 // CHECK-51-NEXT: v = *x;
2764 // CHECK-51-NEXT: if (*x < e)
2765 // CHECK-51-NEXT: *x = e;
2766 // CHECK-51-NEXT: }
2767 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2768 // CHECK-51-NEXT: {
2769 // CHECK-51-NEXT: v = *x;
2770 // CHECK-51-NEXT: if (*x == e)
2771 // CHECK-51-NEXT: *x = d;
2772 // CHECK-51-NEXT: }
2773 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2774 // CHECK-51-NEXT: {
2775 // CHECK-51-NEXT: if (*x > e)
2776 // CHECK-51-NEXT: *x = e;
2777 // CHECK-51-NEXT: v = *x;
2778 // CHECK-51-NEXT: }
2779 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2780 // CHECK-51-NEXT: {
2781 // CHECK-51-NEXT: if (*x < e)
2782 // CHECK-51-NEXT: *x = e;
2783 // CHECK-51-NEXT: v = *x;
2784 // CHECK-51-NEXT: }
2785 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2786 // CHECK-51-NEXT: {
2787 // CHECK-51-NEXT: if (*x == e)
2788 // CHECK-51-NEXT: *x = d;
2789 // CHECK-51-NEXT: v = *x;
2790 // CHECK-51-NEXT: }
2791 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2792 // CHECK-51-NEXT: {
2793 // CHECK-51-NEXT: if (*x == e)
2794 // CHECK-51-NEXT: *x = d;
2795 // CHECK-51-NEXT: else
2796 // CHECK-51-NEXT: v = *x;
2797 // CHECK-51-NEXT: }
2798 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2799 // CHECK-51-NEXT: {
2800 // CHECK-51-NEXT: r = *x == e;
2801 // CHECK-51-NEXT: if (r)
2802 // CHECK-51-NEXT: *x = d;
2803 // CHECK-51-NEXT: }
2804 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
2805 // CHECK-51-NEXT: {
2806 // CHECK-51-NEXT: r = *x == e;
2807 // CHECK-51-NEXT: if (r)
2808 // CHECK-51-NEXT: *x = d;
2809 // CHECK-51-NEXT: else
2810 // CHECK-51-NEXT: v = *x;
2811 // CHECK-51-NEXT: }
2812 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2813 // CHECK-51-NEXT: {
2814 // CHECK-51-NEXT: v = *x;
2815 // CHECK-51-NEXT: if (*x > e)
2816 // CHECK-51-NEXT: *x = e;
2817 // CHECK-51-NEXT: }
2818 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2819 // CHECK-51-NEXT: {
2820 // CHECK-51-NEXT: v = *x;
2821 // CHECK-51-NEXT: if (*x < e)
2822 // CHECK-51-NEXT: *x = e;
2823 // CHECK-51-NEXT: }
2824 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2825 // CHECK-51-NEXT: {
2826 // CHECK-51-NEXT: v = *x;
2827 // CHECK-51-NEXT: if (*x == e)
2828 // CHECK-51-NEXT: *x = d;
2829 // CHECK-51-NEXT: }
2830 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2831 // CHECK-51-NEXT: {
2832 // CHECK-51-NEXT: if (*x > e)
2833 // CHECK-51-NEXT: *x = e;
2834 // CHECK-51-NEXT: v = *x;
2835 // CHECK-51-NEXT: }
2836 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2837 // CHECK-51-NEXT: {
2838 // CHECK-51-NEXT: if (*x < e)
2839 // CHECK-51-NEXT: *x = e;
2840 // CHECK-51-NEXT: v = *x;
2841 // CHECK-51-NEXT: }
2842 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2843 // CHECK-51-NEXT: {
2844 // CHECK-51-NEXT: if (*x == e)
2845 // CHECK-51-NEXT: *x = d;
2846 // CHECK-51-NEXT: v = *x;
2847 // CHECK-51-NEXT: }
2848 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2849 // CHECK-51-NEXT: {
2850 // CHECK-51-NEXT: if (*x == e)
2851 // CHECK-51-NEXT: *x = d;
2852 // CHECK-51-NEXT: else
2853 // CHECK-51-NEXT: v = *x;
2854 // CHECK-51-NEXT: }
2855 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2856 // CHECK-51-NEXT: {
2857 // CHECK-51-NEXT: r = *x == e;
2858 // CHECK-51-NEXT: if (r)
2859 // CHECK-51-NEXT: *x = d;
2860 // CHECK-51-NEXT: }
2861 // CHECK-51-NEXT: #pragma omp atomic compare capture release
2862 // CHECK-51-NEXT: {
2863 // CHECK-51-NEXT: r = *x == e;
2864 // CHECK-51-NEXT: if (r)
2865 // CHECK-51-NEXT: *x = d;
2866 // CHECK-51-NEXT: else
2867 // CHECK-51-NEXT: v = *x;
2868 // CHECK-51-NEXT: }
2869 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2870 // CHECK-51-NEXT: {
2871 // CHECK-51-NEXT: v = *x;
2872 // CHECK-51-NEXT: if (*x > e)
2873 // CHECK-51-NEXT: *x = e;
2874 // CHECK-51-NEXT: }
2875 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2876 // CHECK-51-NEXT: {
2877 // CHECK-51-NEXT: v = *x;
2878 // CHECK-51-NEXT: if (*x < e)
2879 // CHECK-51-NEXT: *x = e;
2880 // CHECK-51-NEXT: }
2881 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2882 // CHECK-51-NEXT: {
2883 // CHECK-51-NEXT: v = *x;
2884 // CHECK-51-NEXT: if (*x == e)
2885 // CHECK-51-NEXT: *x = d;
2886 // CHECK-51-NEXT: }
2887 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2888 // CHECK-51-NEXT: {
2889 // CHECK-51-NEXT: if (*x > e)
2890 // CHECK-51-NEXT: *x = e;
2891 // CHECK-51-NEXT: v = *x;
2892 // CHECK-51-NEXT: }
2893 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2894 // CHECK-51-NEXT: {
2895 // CHECK-51-NEXT: if (*x < e)
2896 // CHECK-51-NEXT: *x = e;
2897 // CHECK-51-NEXT: v = *x;
2898 // CHECK-51-NEXT: }
2899 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2900 // CHECK-51-NEXT: {
2901 // CHECK-51-NEXT: if (*x == e)
2902 // CHECK-51-NEXT: *x = d;
2903 // CHECK-51-NEXT: v = *x;
2904 // CHECK-51-NEXT: }
2905 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2906 // CHECK-51-NEXT: {
2907 // CHECK-51-NEXT: if (*x == e)
2908 // CHECK-51-NEXT: *x = d;
2909 // CHECK-51-NEXT: else
2910 // CHECK-51-NEXT: v = *x;
2911 // CHECK-51-NEXT: }
2912 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2913 // CHECK-51-NEXT: {
2914 // CHECK-51-NEXT: r = *x == e;
2915 // CHECK-51-NEXT: if (r)
2916 // CHECK-51-NEXT: *x = d;
2917 // CHECK-51-NEXT: }
2918 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
2919 // CHECK-51-NEXT: {
2920 // CHECK-51-NEXT: r = *x == e;
2921 // CHECK-51-NEXT: if (r)
2922 // CHECK-51-NEXT: *x = d;
2923 // CHECK-51-NEXT: else
2924 // CHECK-51-NEXT: v = *x;
2925 // CHECK-51-NEXT: }
2926 // CHECK-51-NEXT: return v;
2927 // CHECK-51-NEXT: }
2928 // CHECK-51-NEXT: template<> short ffoo<short>(short *x, short e, short d) {
2929 // CHECK-51-NEXT: short v;
2930 // CHECK-51-NEXT: bool r;
2931 // CHECK-51-NEXT: #pragma omp atomic compare capture
2932 // CHECK-51-NEXT: {
2933 // CHECK-51-NEXT: v = *x;
2934 // CHECK-51-NEXT: if (*x > e)
2935 // CHECK-51-NEXT: *x = e;
2936 // CHECK-51-NEXT: }
2937 // CHECK-51-NEXT: #pragma omp atomic compare capture
2938 // CHECK-51-NEXT: {
2939 // CHECK-51-NEXT: v = *x;
2940 // CHECK-51-NEXT: if (*x < e)
2941 // CHECK-51-NEXT: *x = e;
2942 // CHECK-51-NEXT: }
2943 // CHECK-51-NEXT: #pragma omp atomic compare capture
2944 // CHECK-51-NEXT: {
2945 // CHECK-51-NEXT: v = *x;
2946 // CHECK-51-NEXT: if (*x == e)
2947 // CHECK-51-NEXT: *x = d;
2948 // CHECK-51-NEXT: }
2949 // CHECK-51-NEXT: #pragma omp atomic compare capture
2950 // CHECK-51-NEXT: {
2951 // CHECK-51-NEXT: if (*x > e)
2952 // CHECK-51-NEXT: *x = e;
2953 // CHECK-51-NEXT: v = *x;
2954 // CHECK-51-NEXT: }
2955 // CHECK-51-NEXT: #pragma omp atomic compare capture
2956 // CHECK-51-NEXT: {
2957 // CHECK-51-NEXT: if (*x < e)
2958 // CHECK-51-NEXT: *x = e;
2959 // CHECK-51-NEXT: v = *x;
2960 // CHECK-51-NEXT: }
2961 // CHECK-51-NEXT: #pragma omp atomic compare capture
2962 // CHECK-51-NEXT: {
2963 // CHECK-51-NEXT: if (*x == e)
2964 // CHECK-51-NEXT: *x = d;
2965 // CHECK-51-NEXT: v = *x;
2966 // CHECK-51-NEXT: }
2967 // CHECK-51-NEXT: #pragma omp atomic compare capture
2968 // CHECK-51-NEXT: {
2969 // CHECK-51-NEXT: if (*x == e)
2970 // CHECK-51-NEXT: *x = d;
2971 // CHECK-51-NEXT: else
2972 // CHECK-51-NEXT: v = *x;
2973 // CHECK-51-NEXT: }
2974 // CHECK-51-NEXT: #pragma omp atomic compare capture
2975 // CHECK-51-NEXT: {
2976 // CHECK-51-NEXT: r = *x == e;
2977 // CHECK-51-NEXT: if (r)
2978 // CHECK-51-NEXT: *x = d;
2979 // CHECK-51-NEXT: }
2980 // CHECK-51-NEXT: #pragma omp atomic compare capture
2981 // CHECK-51-NEXT: {
2982 // CHECK-51-NEXT: r = *x == e;
2983 // CHECK-51-NEXT: if (r)
2984 // CHECK-51-NEXT: *x = d;
2985 // CHECK-51-NEXT: else
2986 // CHECK-51-NEXT: v = *x;
2987 // CHECK-51-NEXT: }
2988 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2989 // CHECK-51-NEXT: {
2990 // CHECK-51-NEXT: v = *x;
2991 // CHECK-51-NEXT: if (*x > e)
2992 // CHECK-51-NEXT: *x = e;
2993 // CHECK-51-NEXT: }
2994 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
2995 // CHECK-51-NEXT: {
2996 // CHECK-51-NEXT: v = *x;
2997 // CHECK-51-NEXT: if (*x < e)
2998 // CHECK-51-NEXT: *x = e;
2999 // CHECK-51-NEXT: }
3000 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3001 // CHECK-51-NEXT: {
3002 // CHECK-51-NEXT: v = *x;
3003 // CHECK-51-NEXT: if (*x == e)
3004 // CHECK-51-NEXT: *x = d;
3005 // CHECK-51-NEXT: }
3006 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3007 // CHECK-51-NEXT: {
3008 // CHECK-51-NEXT: if (*x > e)
3009 // CHECK-51-NEXT: *x = e;
3010 // CHECK-51-NEXT: v = *x;
3011 // CHECK-51-NEXT: }
3012 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3013 // CHECK-51-NEXT: {
3014 // CHECK-51-NEXT: if (*x < e)
3015 // CHECK-51-NEXT: *x = e;
3016 // CHECK-51-NEXT: v = *x;
3017 // CHECK-51-NEXT: }
3018 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3019 // CHECK-51-NEXT: {
3020 // CHECK-51-NEXT: if (*x == e)
3021 // CHECK-51-NEXT: *x = d;
3022 // CHECK-51-NEXT: v = *x;
3023 // CHECK-51-NEXT: }
3024 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3025 // CHECK-51-NEXT: {
3026 // CHECK-51-NEXT: if (*x == e)
3027 // CHECK-51-NEXT: *x = d;
3028 // CHECK-51-NEXT: else
3029 // CHECK-51-NEXT: v = *x;
3030 // CHECK-51-NEXT: }
3031 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3032 // CHECK-51-NEXT: {
3033 // CHECK-51-NEXT: r = *x == e;
3034 // CHECK-51-NEXT: if (r)
3035 // CHECK-51-NEXT: *x = d;
3036 // CHECK-51-NEXT: }
3037 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3038 // CHECK-51-NEXT: {
3039 // CHECK-51-NEXT: r = *x == e;
3040 // CHECK-51-NEXT: if (r)
3041 // CHECK-51-NEXT: *x = d;
3042 // CHECK-51-NEXT: else
3043 // CHECK-51-NEXT: v = *x;
3044 // CHECK-51-NEXT: }
3045 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3046 // CHECK-51-NEXT: {
3047 // CHECK-51-NEXT: v = *x;
3048 // CHECK-51-NEXT: if (*x > e)
3049 // CHECK-51-NEXT: *x = e;
3050 // CHECK-51-NEXT: }
3051 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3052 // CHECK-51-NEXT: {
3053 // CHECK-51-NEXT: v = *x;
3054 // CHECK-51-NEXT: if (*x < e)
3055 // CHECK-51-NEXT: *x = e;
3056 // CHECK-51-NEXT: }
3057 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3058 // CHECK-51-NEXT: {
3059 // CHECK-51-NEXT: v = *x;
3060 // CHECK-51-NEXT: if (*x == e)
3061 // CHECK-51-NEXT: *x = d;
3062 // CHECK-51-NEXT: }
3063 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3064 // CHECK-51-NEXT: {
3065 // CHECK-51-NEXT: if (*x > e)
3066 // CHECK-51-NEXT: *x = e;
3067 // CHECK-51-NEXT: v = *x;
3068 // CHECK-51-NEXT: }
3069 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3070 // CHECK-51-NEXT: {
3071 // CHECK-51-NEXT: if (*x < e)
3072 // CHECK-51-NEXT: *x = e;
3073 // CHECK-51-NEXT: v = *x;
3074 // CHECK-51-NEXT: }
3075 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3076 // CHECK-51-NEXT: {
3077 // CHECK-51-NEXT: if (*x == e)
3078 // CHECK-51-NEXT: *x = d;
3079 // CHECK-51-NEXT: v = *x;
3080 // CHECK-51-NEXT: }
3081 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3082 // CHECK-51-NEXT: {
3083 // CHECK-51-NEXT: if (*x == e)
3084 // CHECK-51-NEXT: *x = d;
3085 // CHECK-51-NEXT: else
3086 // CHECK-51-NEXT: v = *x;
3087 // CHECK-51-NEXT: }
3088 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3089 // CHECK-51-NEXT: {
3090 // CHECK-51-NEXT: r = *x == e;
3091 // CHECK-51-NEXT: if (r)
3092 // CHECK-51-NEXT: *x = d;
3093 // CHECK-51-NEXT: }
3094 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3095 // CHECK-51-NEXT: {
3096 // CHECK-51-NEXT: r = *x == e;
3097 // CHECK-51-NEXT: if (r)
3098 // CHECK-51-NEXT: *x = d;
3099 // CHECK-51-NEXT: else
3100 // CHECK-51-NEXT: v = *x;
3101 // CHECK-51-NEXT: }
3102 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3103 // CHECK-51-NEXT: {
3104 // CHECK-51-NEXT: v = *x;
3105 // CHECK-51-NEXT: if (*x > e)
3106 // CHECK-51-NEXT: *x = e;
3107 // CHECK-51-NEXT: }
3108 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3109 // CHECK-51-NEXT: {
3110 // CHECK-51-NEXT: v = *x;
3111 // CHECK-51-NEXT: if (*x < e)
3112 // CHECK-51-NEXT: *x = e;
3113 // CHECK-51-NEXT: }
3114 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3115 // CHECK-51-NEXT: {
3116 // CHECK-51-NEXT: v = *x;
3117 // CHECK-51-NEXT: if (*x == e)
3118 // CHECK-51-NEXT: *x = d;
3119 // CHECK-51-NEXT: }
3120 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3121 // CHECK-51-NEXT: {
3122 // CHECK-51-NEXT: if (*x > e)
3123 // CHECK-51-NEXT: *x = e;
3124 // CHECK-51-NEXT: v = *x;
3125 // CHECK-51-NEXT: }
3126 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3127 // CHECK-51-NEXT: {
3128 // CHECK-51-NEXT: if (*x < e)
3129 // CHECK-51-NEXT: *x = e;
3130 // CHECK-51-NEXT: v = *x;
3131 // CHECK-51-NEXT: }
3132 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3133 // CHECK-51-NEXT: {
3134 // CHECK-51-NEXT: if (*x == e)
3135 // CHECK-51-NEXT: *x = d;
3136 // CHECK-51-NEXT: v = *x;
3137 // CHECK-51-NEXT: }
3138 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3139 // CHECK-51-NEXT: {
3140 // CHECK-51-NEXT: if (*x == e)
3141 // CHECK-51-NEXT: *x = d;
3142 // CHECK-51-NEXT: else
3143 // CHECK-51-NEXT: v = *x;
3144 // CHECK-51-NEXT: }
3145 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3146 // CHECK-51-NEXT: {
3147 // CHECK-51-NEXT: r = *x == e;
3148 // CHECK-51-NEXT: if (r)
3149 // CHECK-51-NEXT: *x = d;
3150 // CHECK-51-NEXT: }
3151 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3152 // CHECK-51-NEXT: {
3153 // CHECK-51-NEXT: r = *x == e;
3154 // CHECK-51-NEXT: if (r)
3155 // CHECK-51-NEXT: *x = d;
3156 // CHECK-51-NEXT: else
3157 // CHECK-51-NEXT: v = *x;
3158 // CHECK-51-NEXT: }
3159 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3160 // CHECK-51-NEXT: {
3161 // CHECK-51-NEXT: v = *x;
3162 // CHECK-51-NEXT: if (*x > e)
3163 // CHECK-51-NEXT: *x = e;
3164 // CHECK-51-NEXT: }
3165 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3166 // CHECK-51-NEXT: {
3167 // CHECK-51-NEXT: v = *x;
3168 // CHECK-51-NEXT: if (*x < e)
3169 // CHECK-51-NEXT: *x = e;
3170 // CHECK-51-NEXT: }
3171 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3172 // CHECK-51-NEXT: {
3173 // CHECK-51-NEXT: v = *x;
3174 // CHECK-51-NEXT: if (*x == e)
3175 // CHECK-51-NEXT: *x = d;
3176 // CHECK-51-NEXT: }
3177 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3178 // CHECK-51-NEXT: {
3179 // CHECK-51-NEXT: if (*x > e)
3180 // CHECK-51-NEXT: *x = e;
3181 // CHECK-51-NEXT: v = *x;
3182 // CHECK-51-NEXT: }
3183 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3184 // CHECK-51-NEXT: {
3185 // CHECK-51-NEXT: if (*x < e)
3186 // CHECK-51-NEXT: *x = e;
3187 // CHECK-51-NEXT: v = *x;
3188 // CHECK-51-NEXT: }
3189 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3190 // CHECK-51-NEXT: {
3191 // CHECK-51-NEXT: if (*x == e)
3192 // CHECK-51-NEXT: *x = d;
3193 // CHECK-51-NEXT: v = *x;
3194 // CHECK-51-NEXT: }
3195 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3196 // CHECK-51-NEXT: {
3197 // CHECK-51-NEXT: if (*x == e)
3198 // CHECK-51-NEXT: *x = d;
3199 // CHECK-51-NEXT: else
3200 // CHECK-51-NEXT: v = *x;
3201 // CHECK-51-NEXT: }
3202 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3203 // CHECK-51-NEXT: {
3204 // CHECK-51-NEXT: r = *x == e;
3205 // CHECK-51-NEXT: if (r)
3206 // CHECK-51-NEXT: *x = d;
3207 // CHECK-51-NEXT: }
3208 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3209 // CHECK-51-NEXT: {
3210 // CHECK-51-NEXT: r = *x == e;
3211 // CHECK-51-NEXT: if (r)
3212 // CHECK-51-NEXT: *x = d;
3213 // CHECK-51-NEXT: else
3214 // CHECK-51-NEXT: v = *x;
3215 // CHECK-51-NEXT: }
3216 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3217 // CHECK-51-NEXT: {
3218 // CHECK-51-NEXT: v = *x;
3219 // CHECK-51-NEXT: if (*x > e)
3220 // CHECK-51-NEXT: *x = e;
3221 // CHECK-51-NEXT: }
3222 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3223 // CHECK-51-NEXT: {
3224 // CHECK-51-NEXT: v = *x;
3225 // CHECK-51-NEXT: if (*x < e)
3226 // CHECK-51-NEXT: *x = e;
3227 // CHECK-51-NEXT: }
3228 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3229 // CHECK-51-NEXT: {
3230 // CHECK-51-NEXT: v = *x;
3231 // CHECK-51-NEXT: if (*x == e)
3232 // CHECK-51-NEXT: *x = d;
3233 // CHECK-51-NEXT: }
3234 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3235 // CHECK-51-NEXT: {
3236 // CHECK-51-NEXT: if (*x > e)
3237 // CHECK-51-NEXT: *x = e;
3238 // CHECK-51-NEXT: v = *x;
3239 // CHECK-51-NEXT: }
3240 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3241 // CHECK-51-NEXT: {
3242 // CHECK-51-NEXT: if (*x < e)
3243 // CHECK-51-NEXT: *x = e;
3244 // CHECK-51-NEXT: v = *x;
3245 // CHECK-51-NEXT: }
3246 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3247 // CHECK-51-NEXT: {
3248 // CHECK-51-NEXT: if (*x == e)
3249 // CHECK-51-NEXT: *x = d;
3250 // CHECK-51-NEXT: v = *x;
3251 // CHECK-51-NEXT: }
3252 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3253 // CHECK-51-NEXT: {
3254 // CHECK-51-NEXT: if (*x == e)
3255 // CHECK-51-NEXT: *x = d;
3256 // CHECK-51-NEXT: else
3257 // CHECK-51-NEXT: v = *x;
3258 // CHECK-51-NEXT: }
3259 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3260 // CHECK-51-NEXT: {
3261 // CHECK-51-NEXT: r = *x == e;
3262 // CHECK-51-NEXT: if (r)
3263 // CHECK-51-NEXT: *x = d;
3264 // CHECK-51-NEXT: }
3265 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3266 // CHECK-51-NEXT: {
3267 // CHECK-51-NEXT: r = *x == e;
3268 // CHECK-51-NEXT: if (r)
3269 // CHECK-51-NEXT: *x = d;
3270 // CHECK-51-NEXT: else
3271 // CHECK-51-NEXT: v = *x;
3272 // CHECK-51-NEXT: }
3273 // CHECK-51-NEXT: return v;
3274 // CHECK-51-NEXT: }
3275 // CHECK-51-NEXT: template<> unsigned short ffoo<unsigned short>(unsigned short *x, unsigned short e, unsigned short d) {
3276 // CHECK-51-NEXT: unsigned short v;
3277 // CHECK-51-NEXT: bool r;
3278 // CHECK-51-NEXT: #pragma omp atomic compare capture
3279 // CHECK-51-NEXT: {
3280 // CHECK-51-NEXT: v = *x;
3281 // CHECK-51-NEXT: if (*x > e)
3282 // CHECK-51-NEXT: *x = e;
3283 // CHECK-51-NEXT: }
3284 // CHECK-51-NEXT: #pragma omp atomic compare capture
3285 // CHECK-51-NEXT: {
3286 // CHECK-51-NEXT: v = *x;
3287 // CHECK-51-NEXT: if (*x < e)
3288 // CHECK-51-NEXT: *x = e;
3289 // CHECK-51-NEXT: }
3290 // CHECK-51-NEXT: #pragma omp atomic compare capture
3291 // CHECK-51-NEXT: {
3292 // CHECK-51-NEXT: v = *x;
3293 // CHECK-51-NEXT: if (*x == e)
3294 // CHECK-51-NEXT: *x = d;
3295 // CHECK-51-NEXT: }
3296 // CHECK-51-NEXT: #pragma omp atomic compare capture
3297 // CHECK-51-NEXT: {
3298 // CHECK-51-NEXT: if (*x > e)
3299 // CHECK-51-NEXT: *x = e;
3300 // CHECK-51-NEXT: v = *x;
3301 // CHECK-51-NEXT: }
3302 // CHECK-51-NEXT: #pragma omp atomic compare capture
3303 // CHECK-51-NEXT: {
3304 // CHECK-51-NEXT: if (*x < e)
3305 // CHECK-51-NEXT: *x = e;
3306 // CHECK-51-NEXT: v = *x;
3307 // CHECK-51-NEXT: }
3308 // CHECK-51-NEXT: #pragma omp atomic compare capture
3309 // CHECK-51-NEXT: {
3310 // CHECK-51-NEXT: if (*x == e)
3311 // CHECK-51-NEXT: *x = d;
3312 // CHECK-51-NEXT: v = *x;
3313 // CHECK-51-NEXT: }
3314 // CHECK-51-NEXT: #pragma omp atomic compare capture
3315 // CHECK-51-NEXT: {
3316 // CHECK-51-NEXT: if (*x == e)
3317 // CHECK-51-NEXT: *x = d;
3318 // CHECK-51-NEXT: else
3319 // CHECK-51-NEXT: v = *x;
3320 // CHECK-51-NEXT: }
3321 // CHECK-51-NEXT: #pragma omp atomic compare capture
3322 // CHECK-51-NEXT: {
3323 // CHECK-51-NEXT: r = *x == e;
3324 // CHECK-51-NEXT: if (r)
3325 // CHECK-51-NEXT: *x = d;
3326 // CHECK-51-NEXT: }
3327 // CHECK-51-NEXT: #pragma omp atomic compare capture
3328 // CHECK-51-NEXT: {
3329 // CHECK-51-NEXT: r = *x == e;
3330 // CHECK-51-NEXT: if (r)
3331 // CHECK-51-NEXT: *x = d;
3332 // CHECK-51-NEXT: else
3333 // CHECK-51-NEXT: v = *x;
3334 // CHECK-51-NEXT: }
3335 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3336 // CHECK-51-NEXT: {
3337 // CHECK-51-NEXT: v = *x;
3338 // CHECK-51-NEXT: if (*x > e)
3339 // CHECK-51-NEXT: *x = e;
3340 // CHECK-51-NEXT: }
3341 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3342 // CHECK-51-NEXT: {
3343 // CHECK-51-NEXT: v = *x;
3344 // CHECK-51-NEXT: if (*x < e)
3345 // CHECK-51-NEXT: *x = e;
3346 // CHECK-51-NEXT: }
3347 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3348 // CHECK-51-NEXT: {
3349 // CHECK-51-NEXT: v = *x;
3350 // CHECK-51-NEXT: if (*x == e)
3351 // CHECK-51-NEXT: *x = d;
3352 // CHECK-51-NEXT: }
3353 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3354 // CHECK-51-NEXT: {
3355 // CHECK-51-NEXT: if (*x > e)
3356 // CHECK-51-NEXT: *x = e;
3357 // CHECK-51-NEXT: v = *x;
3358 // CHECK-51-NEXT: }
3359 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3360 // CHECK-51-NEXT: {
3361 // CHECK-51-NEXT: if (*x < e)
3362 // CHECK-51-NEXT: *x = e;
3363 // CHECK-51-NEXT: v = *x;
3364 // CHECK-51-NEXT: }
3365 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3366 // CHECK-51-NEXT: {
3367 // CHECK-51-NEXT: if (*x == e)
3368 // CHECK-51-NEXT: *x = d;
3369 // CHECK-51-NEXT: v = *x;
3370 // CHECK-51-NEXT: }
3371 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3372 // CHECK-51-NEXT: {
3373 // CHECK-51-NEXT: if (*x == e)
3374 // CHECK-51-NEXT: *x = d;
3375 // CHECK-51-NEXT: else
3376 // CHECK-51-NEXT: v = *x;
3377 // CHECK-51-NEXT: }
3378 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3379 // CHECK-51-NEXT: {
3380 // CHECK-51-NEXT: r = *x == e;
3381 // CHECK-51-NEXT: if (r)
3382 // CHECK-51-NEXT: *x = d;
3383 // CHECK-51-NEXT: }
3384 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3385 // CHECK-51-NEXT: {
3386 // CHECK-51-NEXT: r = *x == e;
3387 // CHECK-51-NEXT: if (r)
3388 // CHECK-51-NEXT: *x = d;
3389 // CHECK-51-NEXT: else
3390 // CHECK-51-NEXT: v = *x;
3391 // CHECK-51-NEXT: }
3392 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3393 // CHECK-51-NEXT: {
3394 // CHECK-51-NEXT: v = *x;
3395 // CHECK-51-NEXT: if (*x > e)
3396 // CHECK-51-NEXT: *x = e;
3397 // CHECK-51-NEXT: }
3398 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3399 // CHECK-51-NEXT: {
3400 // CHECK-51-NEXT: v = *x;
3401 // CHECK-51-NEXT: if (*x < e)
3402 // CHECK-51-NEXT: *x = e;
3403 // CHECK-51-NEXT: }
3404 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3405 // CHECK-51-NEXT: {
3406 // CHECK-51-NEXT: v = *x;
3407 // CHECK-51-NEXT: if (*x == e)
3408 // CHECK-51-NEXT: *x = d;
3409 // CHECK-51-NEXT: }
3410 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3411 // CHECK-51-NEXT: {
3412 // CHECK-51-NEXT: if (*x > e)
3413 // CHECK-51-NEXT: *x = e;
3414 // CHECK-51-NEXT: v = *x;
3415 // CHECK-51-NEXT: }
3416 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3417 // CHECK-51-NEXT: {
3418 // CHECK-51-NEXT: if (*x < e)
3419 // CHECK-51-NEXT: *x = e;
3420 // CHECK-51-NEXT: v = *x;
3421 // CHECK-51-NEXT: }
3422 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3423 // CHECK-51-NEXT: {
3424 // CHECK-51-NEXT: if (*x == e)
3425 // CHECK-51-NEXT: *x = d;
3426 // CHECK-51-NEXT: v = *x;
3427 // CHECK-51-NEXT: }
3428 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3429 // CHECK-51-NEXT: {
3430 // CHECK-51-NEXT: if (*x == e)
3431 // CHECK-51-NEXT: *x = d;
3432 // CHECK-51-NEXT: else
3433 // CHECK-51-NEXT: v = *x;
3434 // CHECK-51-NEXT: }
3435 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3436 // CHECK-51-NEXT: {
3437 // CHECK-51-NEXT: r = *x == e;
3438 // CHECK-51-NEXT: if (r)
3439 // CHECK-51-NEXT: *x = d;
3440 // CHECK-51-NEXT: }
3441 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3442 // CHECK-51-NEXT: {
3443 // CHECK-51-NEXT: r = *x == e;
3444 // CHECK-51-NEXT: if (r)
3445 // CHECK-51-NEXT: *x = d;
3446 // CHECK-51-NEXT: else
3447 // CHECK-51-NEXT: v = *x;
3448 // CHECK-51-NEXT: }
3449 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3450 // CHECK-51-NEXT: {
3451 // CHECK-51-NEXT: v = *x;
3452 // CHECK-51-NEXT: if (*x > e)
3453 // CHECK-51-NEXT: *x = e;
3454 // CHECK-51-NEXT: }
3455 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3456 // CHECK-51-NEXT: {
3457 // CHECK-51-NEXT: v = *x;
3458 // CHECK-51-NEXT: if (*x < e)
3459 // CHECK-51-NEXT: *x = e;
3460 // CHECK-51-NEXT: }
3461 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3462 // CHECK-51-NEXT: {
3463 // CHECK-51-NEXT: v = *x;
3464 // CHECK-51-NEXT: if (*x == e)
3465 // CHECK-51-NEXT: *x = d;
3466 // CHECK-51-NEXT: }
3467 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3468 // CHECK-51-NEXT: {
3469 // CHECK-51-NEXT: if (*x > e)
3470 // CHECK-51-NEXT: *x = e;
3471 // CHECK-51-NEXT: v = *x;
3472 // CHECK-51-NEXT: }
3473 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3474 // CHECK-51-NEXT: {
3475 // CHECK-51-NEXT: if (*x < e)
3476 // CHECK-51-NEXT: *x = e;
3477 // CHECK-51-NEXT: v = *x;
3478 // CHECK-51-NEXT: }
3479 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3480 // CHECK-51-NEXT: {
3481 // CHECK-51-NEXT: if (*x == e)
3482 // CHECK-51-NEXT: *x = d;
3483 // CHECK-51-NEXT: v = *x;
3484 // CHECK-51-NEXT: }
3485 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3486 // CHECK-51-NEXT: {
3487 // CHECK-51-NEXT: if (*x == e)
3488 // CHECK-51-NEXT: *x = d;
3489 // CHECK-51-NEXT: else
3490 // CHECK-51-NEXT: v = *x;
3491 // CHECK-51-NEXT: }
3492 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3493 // CHECK-51-NEXT: {
3494 // CHECK-51-NEXT: r = *x == e;
3495 // CHECK-51-NEXT: if (r)
3496 // CHECK-51-NEXT: *x = d;
3497 // CHECK-51-NEXT: }
3498 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3499 // CHECK-51-NEXT: {
3500 // CHECK-51-NEXT: r = *x == e;
3501 // CHECK-51-NEXT: if (r)
3502 // CHECK-51-NEXT: *x = d;
3503 // CHECK-51-NEXT: else
3504 // CHECK-51-NEXT: v = *x;
3505 // CHECK-51-NEXT: }
3506 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3507 // CHECK-51-NEXT: {
3508 // CHECK-51-NEXT: v = *x;
3509 // CHECK-51-NEXT: if (*x > e)
3510 // CHECK-51-NEXT: *x = e;
3511 // CHECK-51-NEXT: }
3512 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3513 // CHECK-51-NEXT: {
3514 // CHECK-51-NEXT: v = *x;
3515 // CHECK-51-NEXT: if (*x < e)
3516 // CHECK-51-NEXT: *x = e;
3517 // CHECK-51-NEXT: }
3518 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3519 // CHECK-51-NEXT: {
3520 // CHECK-51-NEXT: v = *x;
3521 // CHECK-51-NEXT: if (*x == e)
3522 // CHECK-51-NEXT: *x = d;
3523 // CHECK-51-NEXT: }
3524 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3525 // CHECK-51-NEXT: {
3526 // CHECK-51-NEXT: if (*x > e)
3527 // CHECK-51-NEXT: *x = e;
3528 // CHECK-51-NEXT: v = *x;
3529 // CHECK-51-NEXT: }
3530 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3531 // CHECK-51-NEXT: {
3532 // CHECK-51-NEXT: if (*x < e)
3533 // CHECK-51-NEXT: *x = e;
3534 // CHECK-51-NEXT: v = *x;
3535 // CHECK-51-NEXT: }
3536 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3537 // CHECK-51-NEXT: {
3538 // CHECK-51-NEXT: if (*x == e)
3539 // CHECK-51-NEXT: *x = d;
3540 // CHECK-51-NEXT: v = *x;
3541 // CHECK-51-NEXT: }
3542 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3543 // CHECK-51-NEXT: {
3544 // CHECK-51-NEXT: if (*x == e)
3545 // CHECK-51-NEXT: *x = d;
3546 // CHECK-51-NEXT: else
3547 // CHECK-51-NEXT: v = *x;
3548 // CHECK-51-NEXT: }
3549 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3550 // CHECK-51-NEXT: {
3551 // CHECK-51-NEXT: r = *x == e;
3552 // CHECK-51-NEXT: if (r)
3553 // CHECK-51-NEXT: *x = d;
3554 // CHECK-51-NEXT: }
3555 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3556 // CHECK-51-NEXT: {
3557 // CHECK-51-NEXT: r = *x == e;
3558 // CHECK-51-NEXT: if (r)
3559 // CHECK-51-NEXT: *x = d;
3560 // CHECK-51-NEXT: else
3561 // CHECK-51-NEXT: v = *x;
3562 // CHECK-51-NEXT: }
3563 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3564 // CHECK-51-NEXT: {
3565 // CHECK-51-NEXT: v = *x;
3566 // CHECK-51-NEXT: if (*x > e)
3567 // CHECK-51-NEXT: *x = e;
3568 // CHECK-51-NEXT: }
3569 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3570 // CHECK-51-NEXT: {
3571 // CHECK-51-NEXT: v = *x;
3572 // CHECK-51-NEXT: if (*x < e)
3573 // CHECK-51-NEXT: *x = e;
3574 // CHECK-51-NEXT: }
3575 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3576 // CHECK-51-NEXT: {
3577 // CHECK-51-NEXT: v = *x;
3578 // CHECK-51-NEXT: if (*x == e)
3579 // CHECK-51-NEXT: *x = d;
3580 // CHECK-51-NEXT: }
3581 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3582 // CHECK-51-NEXT: {
3583 // CHECK-51-NEXT: if (*x > e)
3584 // CHECK-51-NEXT: *x = e;
3585 // CHECK-51-NEXT: v = *x;
3586 // CHECK-51-NEXT: }
3587 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3588 // CHECK-51-NEXT: {
3589 // CHECK-51-NEXT: if (*x < e)
3590 // CHECK-51-NEXT: *x = e;
3591 // CHECK-51-NEXT: v = *x;
3592 // CHECK-51-NEXT: }
3593 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3594 // CHECK-51-NEXT: {
3595 // CHECK-51-NEXT: if (*x == e)
3596 // CHECK-51-NEXT: *x = d;
3597 // CHECK-51-NEXT: v = *x;
3598 // CHECK-51-NEXT: }
3599 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3600 // CHECK-51-NEXT: {
3601 // CHECK-51-NEXT: if (*x == e)
3602 // CHECK-51-NEXT: *x = d;
3603 // CHECK-51-NEXT: else
3604 // CHECK-51-NEXT: v = *x;
3605 // CHECK-51-NEXT: }
3606 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3607 // CHECK-51-NEXT: {
3608 // CHECK-51-NEXT: r = *x == e;
3609 // CHECK-51-NEXT: if (r)
3610 // CHECK-51-NEXT: *x = d;
3611 // CHECK-51-NEXT: }
3612 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3613 // CHECK-51-NEXT: {
3614 // CHECK-51-NEXT: r = *x == e;
3615 // CHECK-51-NEXT: if (r)
3616 // CHECK-51-NEXT: *x = d;
3617 // CHECK-51-NEXT: else
3618 // CHECK-51-NEXT: v = *x;
3619 // CHECK-51-NEXT: }
3620 // CHECK-51-NEXT: return v;
3621 // CHECK-51-NEXT: }
3622 // CHECK-51-NEXT: template<> int ffoo<int>(int *x, int e, int d) {
3623 // CHECK-51-NEXT: int v;
3624 // CHECK-51-NEXT: bool r;
3625 // CHECK-51-NEXT: #pragma omp atomic compare capture
3626 // CHECK-51-NEXT: {
3627 // CHECK-51-NEXT: v = *x;
3628 // CHECK-51-NEXT: if (*x > e)
3629 // CHECK-51-NEXT: *x = e;
3630 // CHECK-51-NEXT: }
3631 // CHECK-51-NEXT: #pragma omp atomic compare capture
3632 // CHECK-51-NEXT: {
3633 // CHECK-51-NEXT: v = *x;
3634 // CHECK-51-NEXT: if (*x < e)
3635 // CHECK-51-NEXT: *x = e;
3636 // CHECK-51-NEXT: }
3637 // CHECK-51-NEXT: #pragma omp atomic compare capture
3638 // CHECK-51-NEXT: {
3639 // CHECK-51-NEXT: v = *x;
3640 // CHECK-51-NEXT: if (*x == e)
3641 // CHECK-51-NEXT: *x = d;
3642 // CHECK-51-NEXT: }
3643 // CHECK-51-NEXT: #pragma omp atomic compare capture
3644 // CHECK-51-NEXT: {
3645 // CHECK-51-NEXT: if (*x > e)
3646 // CHECK-51-NEXT: *x = e;
3647 // CHECK-51-NEXT: v = *x;
3648 // CHECK-51-NEXT: }
3649 // CHECK-51-NEXT: #pragma omp atomic compare capture
3650 // CHECK-51-NEXT: {
3651 // CHECK-51-NEXT: if (*x < e)
3652 // CHECK-51-NEXT: *x = e;
3653 // CHECK-51-NEXT: v = *x;
3654 // CHECK-51-NEXT: }
3655 // CHECK-51-NEXT: #pragma omp atomic compare capture
3656 // CHECK-51-NEXT: {
3657 // CHECK-51-NEXT: if (*x == e)
3658 // CHECK-51-NEXT: *x = d;
3659 // CHECK-51-NEXT: v = *x;
3660 // CHECK-51-NEXT: }
3661 // CHECK-51-NEXT: #pragma omp atomic compare capture
3662 // CHECK-51-NEXT: {
3663 // CHECK-51-NEXT: if (*x == e)
3664 // CHECK-51-NEXT: *x = d;
3665 // CHECK-51-NEXT: else
3666 // CHECK-51-NEXT: v = *x;
3667 // CHECK-51-NEXT: }
3668 // CHECK-51-NEXT: #pragma omp atomic compare capture
3669 // CHECK-51-NEXT: {
3670 // CHECK-51-NEXT: r = *x == e;
3671 // CHECK-51-NEXT: if (r)
3672 // CHECK-51-NEXT: *x = d;
3673 // CHECK-51-NEXT: }
3674 // CHECK-51-NEXT: #pragma omp atomic compare capture
3675 // CHECK-51-NEXT: {
3676 // CHECK-51-NEXT: r = *x == e;
3677 // CHECK-51-NEXT: if (r)
3678 // CHECK-51-NEXT: *x = d;
3679 // CHECK-51-NEXT: else
3680 // CHECK-51-NEXT: v = *x;
3681 // CHECK-51-NEXT: }
3682 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3683 // CHECK-51-NEXT: {
3684 // CHECK-51-NEXT: v = *x;
3685 // CHECK-51-NEXT: if (*x > e)
3686 // CHECK-51-NEXT: *x = e;
3687 // CHECK-51-NEXT: }
3688 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3689 // CHECK-51-NEXT: {
3690 // CHECK-51-NEXT: v = *x;
3691 // CHECK-51-NEXT: if (*x < e)
3692 // CHECK-51-NEXT: *x = e;
3693 // CHECK-51-NEXT: }
3694 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3695 // CHECK-51-NEXT: {
3696 // CHECK-51-NEXT: v = *x;
3697 // CHECK-51-NEXT: if (*x == e)
3698 // CHECK-51-NEXT: *x = d;
3699 // CHECK-51-NEXT: }
3700 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3701 // CHECK-51-NEXT: {
3702 // CHECK-51-NEXT: if (*x > e)
3703 // CHECK-51-NEXT: *x = e;
3704 // CHECK-51-NEXT: v = *x;
3705 // CHECK-51-NEXT: }
3706 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3707 // CHECK-51-NEXT: {
3708 // CHECK-51-NEXT: if (*x < e)
3709 // CHECK-51-NEXT: *x = e;
3710 // CHECK-51-NEXT: v = *x;
3711 // CHECK-51-NEXT: }
3712 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3713 // CHECK-51-NEXT: {
3714 // CHECK-51-NEXT: if (*x == e)
3715 // CHECK-51-NEXT: *x = d;
3716 // CHECK-51-NEXT: v = *x;
3717 // CHECK-51-NEXT: }
3718 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3719 // CHECK-51-NEXT: {
3720 // CHECK-51-NEXT: if (*x == e)
3721 // CHECK-51-NEXT: *x = d;
3722 // CHECK-51-NEXT: else
3723 // CHECK-51-NEXT: v = *x;
3724 // CHECK-51-NEXT: }
3725 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3726 // CHECK-51-NEXT: {
3727 // CHECK-51-NEXT: r = *x == e;
3728 // CHECK-51-NEXT: if (r)
3729 // CHECK-51-NEXT: *x = d;
3730 // CHECK-51-NEXT: }
3731 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
3732 // CHECK-51-NEXT: {
3733 // CHECK-51-NEXT: r = *x == e;
3734 // CHECK-51-NEXT: if (r)
3735 // CHECK-51-NEXT: *x = d;
3736 // CHECK-51-NEXT: else
3737 // CHECK-51-NEXT: v = *x;
3738 // CHECK-51-NEXT: }
3739 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3740 // CHECK-51-NEXT: {
3741 // CHECK-51-NEXT: v = *x;
3742 // CHECK-51-NEXT: if (*x > e)
3743 // CHECK-51-NEXT: *x = e;
3744 // CHECK-51-NEXT: }
3745 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3746 // CHECK-51-NEXT: {
3747 // CHECK-51-NEXT: v = *x;
3748 // CHECK-51-NEXT: if (*x < e)
3749 // CHECK-51-NEXT: *x = e;
3750 // CHECK-51-NEXT: }
3751 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3752 // CHECK-51-NEXT: {
3753 // CHECK-51-NEXT: v = *x;
3754 // CHECK-51-NEXT: if (*x == e)
3755 // CHECK-51-NEXT: *x = d;
3756 // CHECK-51-NEXT: }
3757 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3758 // CHECK-51-NEXT: {
3759 // CHECK-51-NEXT: if (*x > e)
3760 // CHECK-51-NEXT: *x = e;
3761 // CHECK-51-NEXT: v = *x;
3762 // CHECK-51-NEXT: }
3763 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3764 // CHECK-51-NEXT: {
3765 // CHECK-51-NEXT: if (*x < e)
3766 // CHECK-51-NEXT: *x = e;
3767 // CHECK-51-NEXT: v = *x;
3768 // CHECK-51-NEXT: }
3769 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3770 // CHECK-51-NEXT: {
3771 // CHECK-51-NEXT: if (*x == e)
3772 // CHECK-51-NEXT: *x = d;
3773 // CHECK-51-NEXT: v = *x;
3774 // CHECK-51-NEXT: }
3775 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3776 // CHECK-51-NEXT: {
3777 // CHECK-51-NEXT: if (*x == e)
3778 // CHECK-51-NEXT: *x = d;
3779 // CHECK-51-NEXT: else
3780 // CHECK-51-NEXT: v = *x;
3781 // CHECK-51-NEXT: }
3782 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3783 // CHECK-51-NEXT: {
3784 // CHECK-51-NEXT: r = *x == e;
3785 // CHECK-51-NEXT: if (r)
3786 // CHECK-51-NEXT: *x = d;
3787 // CHECK-51-NEXT: }
3788 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
3789 // CHECK-51-NEXT: {
3790 // CHECK-51-NEXT: r = *x == e;
3791 // CHECK-51-NEXT: if (r)
3792 // CHECK-51-NEXT: *x = d;
3793 // CHECK-51-NEXT: else
3794 // CHECK-51-NEXT: v = *x;
3795 // CHECK-51-NEXT: }
3796 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3797 // CHECK-51-NEXT: {
3798 // CHECK-51-NEXT: v = *x;
3799 // CHECK-51-NEXT: if (*x > e)
3800 // CHECK-51-NEXT: *x = e;
3801 // CHECK-51-NEXT: }
3802 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3803 // CHECK-51-NEXT: {
3804 // CHECK-51-NEXT: v = *x;
3805 // CHECK-51-NEXT: if (*x < e)
3806 // CHECK-51-NEXT: *x = e;
3807 // CHECK-51-NEXT: }
3808 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3809 // CHECK-51-NEXT: {
3810 // CHECK-51-NEXT: v = *x;
3811 // CHECK-51-NEXT: if (*x == e)
3812 // CHECK-51-NEXT: *x = d;
3813 // CHECK-51-NEXT: }
3814 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3815 // CHECK-51-NEXT: {
3816 // CHECK-51-NEXT: if (*x > e)
3817 // CHECK-51-NEXT: *x = e;
3818 // CHECK-51-NEXT: v = *x;
3819 // CHECK-51-NEXT: }
3820 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3821 // CHECK-51-NEXT: {
3822 // CHECK-51-NEXT: if (*x < e)
3823 // CHECK-51-NEXT: *x = e;
3824 // CHECK-51-NEXT: v = *x;
3825 // CHECK-51-NEXT: }
3826 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3827 // CHECK-51-NEXT: {
3828 // CHECK-51-NEXT: if (*x == e)
3829 // CHECK-51-NEXT: *x = d;
3830 // CHECK-51-NEXT: v = *x;
3831 // CHECK-51-NEXT: }
3832 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3833 // CHECK-51-NEXT: {
3834 // CHECK-51-NEXT: if (*x == e)
3835 // CHECK-51-NEXT: *x = d;
3836 // CHECK-51-NEXT: else
3837 // CHECK-51-NEXT: v = *x;
3838 // CHECK-51-NEXT: }
3839 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3840 // CHECK-51-NEXT: {
3841 // CHECK-51-NEXT: r = *x == e;
3842 // CHECK-51-NEXT: if (r)
3843 // CHECK-51-NEXT: *x = d;
3844 // CHECK-51-NEXT: }
3845 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
3846 // CHECK-51-NEXT: {
3847 // CHECK-51-NEXT: r = *x == e;
3848 // CHECK-51-NEXT: if (r)
3849 // CHECK-51-NEXT: *x = d;
3850 // CHECK-51-NEXT: else
3851 // CHECK-51-NEXT: v = *x;
3852 // CHECK-51-NEXT: }
3853 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3854 // CHECK-51-NEXT: {
3855 // CHECK-51-NEXT: v = *x;
3856 // CHECK-51-NEXT: if (*x > e)
3857 // CHECK-51-NEXT: *x = e;
3858 // CHECK-51-NEXT: }
3859 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3860 // CHECK-51-NEXT: {
3861 // CHECK-51-NEXT: v = *x;
3862 // CHECK-51-NEXT: if (*x < e)
3863 // CHECK-51-NEXT: *x = e;
3864 // CHECK-51-NEXT: }
3865 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3866 // CHECK-51-NEXT: {
3867 // CHECK-51-NEXT: v = *x;
3868 // CHECK-51-NEXT: if (*x == e)
3869 // CHECK-51-NEXT: *x = d;
3870 // CHECK-51-NEXT: }
3871 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3872 // CHECK-51-NEXT: {
3873 // CHECK-51-NEXT: if (*x > e)
3874 // CHECK-51-NEXT: *x = e;
3875 // CHECK-51-NEXT: v = *x;
3876 // CHECK-51-NEXT: }
3877 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3878 // CHECK-51-NEXT: {
3879 // CHECK-51-NEXT: if (*x < e)
3880 // CHECK-51-NEXT: *x = e;
3881 // CHECK-51-NEXT: v = *x;
3882 // CHECK-51-NEXT: }
3883 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3884 // CHECK-51-NEXT: {
3885 // CHECK-51-NEXT: if (*x == e)
3886 // CHECK-51-NEXT: *x = d;
3887 // CHECK-51-NEXT: v = *x;
3888 // CHECK-51-NEXT: }
3889 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3890 // CHECK-51-NEXT: {
3891 // CHECK-51-NEXT: if (*x == e)
3892 // CHECK-51-NEXT: *x = d;
3893 // CHECK-51-NEXT: else
3894 // CHECK-51-NEXT: v = *x;
3895 // CHECK-51-NEXT: }
3896 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3897 // CHECK-51-NEXT: {
3898 // CHECK-51-NEXT: r = *x == e;
3899 // CHECK-51-NEXT: if (r)
3900 // CHECK-51-NEXT: *x = d;
3901 // CHECK-51-NEXT: }
3902 // CHECK-51-NEXT: #pragma omp atomic compare capture release
3903 // CHECK-51-NEXT: {
3904 // CHECK-51-NEXT: r = *x == e;
3905 // CHECK-51-NEXT: if (r)
3906 // CHECK-51-NEXT: *x = d;
3907 // CHECK-51-NEXT: else
3908 // CHECK-51-NEXT: v = *x;
3909 // CHECK-51-NEXT: }
3910 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3911 // CHECK-51-NEXT: {
3912 // CHECK-51-NEXT: v = *x;
3913 // CHECK-51-NEXT: if (*x > e)
3914 // CHECK-51-NEXT: *x = e;
3915 // CHECK-51-NEXT: }
3916 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3917 // CHECK-51-NEXT: {
3918 // CHECK-51-NEXT: v = *x;
3919 // CHECK-51-NEXT: if (*x < e)
3920 // CHECK-51-NEXT: *x = e;
3921 // CHECK-51-NEXT: }
3922 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3923 // CHECK-51-NEXT: {
3924 // CHECK-51-NEXT: v = *x;
3925 // CHECK-51-NEXT: if (*x == e)
3926 // CHECK-51-NEXT: *x = d;
3927 // CHECK-51-NEXT: }
3928 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3929 // CHECK-51-NEXT: {
3930 // CHECK-51-NEXT: if (*x > e)
3931 // CHECK-51-NEXT: *x = e;
3932 // CHECK-51-NEXT: v = *x;
3933 // CHECK-51-NEXT: }
3934 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3935 // CHECK-51-NEXT: {
3936 // CHECK-51-NEXT: if (*x < e)
3937 // CHECK-51-NEXT: *x = e;
3938 // CHECK-51-NEXT: v = *x;
3939 // CHECK-51-NEXT: }
3940 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3941 // CHECK-51-NEXT: {
3942 // CHECK-51-NEXT: if (*x == e)
3943 // CHECK-51-NEXT: *x = d;
3944 // CHECK-51-NEXT: v = *x;
3945 // CHECK-51-NEXT: }
3946 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3947 // CHECK-51-NEXT: {
3948 // CHECK-51-NEXT: if (*x == e)
3949 // CHECK-51-NEXT: *x = d;
3950 // CHECK-51-NEXT: else
3951 // CHECK-51-NEXT: v = *x;
3952 // CHECK-51-NEXT: }
3953 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3954 // CHECK-51-NEXT: {
3955 // CHECK-51-NEXT: r = *x == e;
3956 // CHECK-51-NEXT: if (r)
3957 // CHECK-51-NEXT: *x = d;
3958 // CHECK-51-NEXT: }
3959 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
3960 // CHECK-51-NEXT: {
3961 // CHECK-51-NEXT: r = *x == e;
3962 // CHECK-51-NEXT: if (r)
3963 // CHECK-51-NEXT: *x = d;
3964 // CHECK-51-NEXT: else
3965 // CHECK-51-NEXT: v = *x;
3966 // CHECK-51-NEXT: }
3967 // CHECK-51-NEXT: return v;
3968 // CHECK-51-NEXT: }
3969 // CHECK-51-NEXT: template<> unsigned int ffoo<unsigned int>(unsigned int *x, unsigned int e, unsigned int d) {
3970 // CHECK-51-NEXT: unsigned int v;
3971 // CHECK-51-NEXT: bool r;
3972 // CHECK-51-NEXT: #pragma omp atomic compare capture
3973 // CHECK-51-NEXT: {
3974 // CHECK-51-NEXT: v = *x;
3975 // CHECK-51-NEXT: if (*x > e)
3976 // CHECK-51-NEXT: *x = e;
3977 // CHECK-51-NEXT: }
3978 // CHECK-51-NEXT: #pragma omp atomic compare capture
3979 // CHECK-51-NEXT: {
3980 // CHECK-51-NEXT: v = *x;
3981 // CHECK-51-NEXT: if (*x < e)
3982 // CHECK-51-NEXT: *x = e;
3983 // CHECK-51-NEXT: }
3984 // CHECK-51-NEXT: #pragma omp atomic compare capture
3985 // CHECK-51-NEXT: {
3986 // CHECK-51-NEXT: v = *x;
3987 // CHECK-51-NEXT: if (*x == e)
3988 // CHECK-51-NEXT: *x = d;
3989 // CHECK-51-NEXT: }
3990 // CHECK-51-NEXT: #pragma omp atomic compare capture
3991 // CHECK-51-NEXT: {
3992 // CHECK-51-NEXT: if (*x > e)
3993 // CHECK-51-NEXT: *x = e;
3994 // CHECK-51-NEXT: v = *x;
3995 // CHECK-51-NEXT: }
3996 // CHECK-51-NEXT: #pragma omp atomic compare capture
3997 // CHECK-51-NEXT: {
3998 // CHECK-51-NEXT: if (*x < e)
3999 // CHECK-51-NEXT: *x = e;
4000 // CHECK-51-NEXT: v = *x;
4001 // CHECK-51-NEXT: }
4002 // CHECK-51-NEXT: #pragma omp atomic compare capture
4003 // CHECK-51-NEXT: {
4004 // CHECK-51-NEXT: if (*x == e)
4005 // CHECK-51-NEXT: *x = d;
4006 // CHECK-51-NEXT: v = *x;
4007 // CHECK-51-NEXT: }
4008 // CHECK-51-NEXT: #pragma omp atomic compare capture
4009 // CHECK-51-NEXT: {
4010 // CHECK-51-NEXT: if (*x == e)
4011 // CHECK-51-NEXT: *x = d;
4012 // CHECK-51-NEXT: else
4013 // CHECK-51-NEXT: v = *x;
4014 // CHECK-51-NEXT: }
4015 // CHECK-51-NEXT: #pragma omp atomic compare capture
4016 // CHECK-51-NEXT: {
4017 // CHECK-51-NEXT: r = *x == e;
4018 // CHECK-51-NEXT: if (r)
4019 // CHECK-51-NEXT: *x = d;
4020 // CHECK-51-NEXT: }
4021 // CHECK-51-NEXT: #pragma omp atomic compare capture
4022 // CHECK-51-NEXT: {
4023 // CHECK-51-NEXT: r = *x == e;
4024 // CHECK-51-NEXT: if (r)
4025 // CHECK-51-NEXT: *x = d;
4026 // CHECK-51-NEXT: else
4027 // CHECK-51-NEXT: v = *x;
4028 // CHECK-51-NEXT: }
4029 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4030 // CHECK-51-NEXT: {
4031 // CHECK-51-NEXT: v = *x;
4032 // CHECK-51-NEXT: if (*x > e)
4033 // CHECK-51-NEXT: *x = e;
4034 // CHECK-51-NEXT: }
4035 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4036 // CHECK-51-NEXT: {
4037 // CHECK-51-NEXT: v = *x;
4038 // CHECK-51-NEXT: if (*x < e)
4039 // CHECK-51-NEXT: *x = e;
4040 // CHECK-51-NEXT: }
4041 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4042 // CHECK-51-NEXT: {
4043 // CHECK-51-NEXT: v = *x;
4044 // CHECK-51-NEXT: if (*x == e)
4045 // CHECK-51-NEXT: *x = d;
4046 // CHECK-51-NEXT: }
4047 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4048 // CHECK-51-NEXT: {
4049 // CHECK-51-NEXT: if (*x > e)
4050 // CHECK-51-NEXT: *x = e;
4051 // CHECK-51-NEXT: v = *x;
4052 // CHECK-51-NEXT: }
4053 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4054 // CHECK-51-NEXT: {
4055 // CHECK-51-NEXT: if (*x < e)
4056 // CHECK-51-NEXT: *x = e;
4057 // CHECK-51-NEXT: v = *x;
4058 // CHECK-51-NEXT: }
4059 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4060 // CHECK-51-NEXT: {
4061 // CHECK-51-NEXT: if (*x == e)
4062 // CHECK-51-NEXT: *x = d;
4063 // CHECK-51-NEXT: v = *x;
4064 // CHECK-51-NEXT: }
4065 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4066 // CHECK-51-NEXT: {
4067 // CHECK-51-NEXT: if (*x == e)
4068 // CHECK-51-NEXT: *x = d;
4069 // CHECK-51-NEXT: else
4070 // CHECK-51-NEXT: v = *x;
4071 // CHECK-51-NEXT: }
4072 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4073 // CHECK-51-NEXT: {
4074 // CHECK-51-NEXT: r = *x == e;
4075 // CHECK-51-NEXT: if (r)
4076 // CHECK-51-NEXT: *x = d;
4077 // CHECK-51-NEXT: }
4078 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4079 // CHECK-51-NEXT: {
4080 // CHECK-51-NEXT: r = *x == e;
4081 // CHECK-51-NEXT: if (r)
4082 // CHECK-51-NEXT: *x = d;
4083 // CHECK-51-NEXT: else
4084 // CHECK-51-NEXT: v = *x;
4085 // CHECK-51-NEXT: }
4086 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4087 // CHECK-51-NEXT: {
4088 // CHECK-51-NEXT: v = *x;
4089 // CHECK-51-NEXT: if (*x > e)
4090 // CHECK-51-NEXT: *x = e;
4091 // CHECK-51-NEXT: }
4092 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4093 // CHECK-51-NEXT: {
4094 // CHECK-51-NEXT: v = *x;
4095 // CHECK-51-NEXT: if (*x < e)
4096 // CHECK-51-NEXT: *x = e;
4097 // CHECK-51-NEXT: }
4098 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4099 // CHECK-51-NEXT: {
4100 // CHECK-51-NEXT: v = *x;
4101 // CHECK-51-NEXT: if (*x == e)
4102 // CHECK-51-NEXT: *x = d;
4103 // CHECK-51-NEXT: }
4104 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4105 // CHECK-51-NEXT: {
4106 // CHECK-51-NEXT: if (*x > e)
4107 // CHECK-51-NEXT: *x = e;
4108 // CHECK-51-NEXT: v = *x;
4109 // CHECK-51-NEXT: }
4110 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4111 // CHECK-51-NEXT: {
4112 // CHECK-51-NEXT: if (*x < e)
4113 // CHECK-51-NEXT: *x = e;
4114 // CHECK-51-NEXT: v = *x;
4115 // CHECK-51-NEXT: }
4116 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4117 // CHECK-51-NEXT: {
4118 // CHECK-51-NEXT: if (*x == e)
4119 // CHECK-51-NEXT: *x = d;
4120 // CHECK-51-NEXT: v = *x;
4121 // CHECK-51-NEXT: }
4122 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4123 // CHECK-51-NEXT: {
4124 // CHECK-51-NEXT: if (*x == e)
4125 // CHECK-51-NEXT: *x = d;
4126 // CHECK-51-NEXT: else
4127 // CHECK-51-NEXT: v = *x;
4128 // CHECK-51-NEXT: }
4129 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4130 // CHECK-51-NEXT: {
4131 // CHECK-51-NEXT: r = *x == e;
4132 // CHECK-51-NEXT: if (r)
4133 // CHECK-51-NEXT: *x = d;
4134 // CHECK-51-NEXT: }
4135 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4136 // CHECK-51-NEXT: {
4137 // CHECK-51-NEXT: r = *x == e;
4138 // CHECK-51-NEXT: if (r)
4139 // CHECK-51-NEXT: *x = d;
4140 // CHECK-51-NEXT: else
4141 // CHECK-51-NEXT: v = *x;
4142 // CHECK-51-NEXT: }
4143 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4144 // CHECK-51-NEXT: {
4145 // CHECK-51-NEXT: v = *x;
4146 // CHECK-51-NEXT: if (*x > e)
4147 // CHECK-51-NEXT: *x = e;
4148 // CHECK-51-NEXT: }
4149 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4150 // CHECK-51-NEXT: {
4151 // CHECK-51-NEXT: v = *x;
4152 // CHECK-51-NEXT: if (*x < e)
4153 // CHECK-51-NEXT: *x = e;
4154 // CHECK-51-NEXT: }
4155 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4156 // CHECK-51-NEXT: {
4157 // CHECK-51-NEXT: v = *x;
4158 // CHECK-51-NEXT: if (*x == e)
4159 // CHECK-51-NEXT: *x = d;
4160 // CHECK-51-NEXT: }
4161 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4162 // CHECK-51-NEXT: {
4163 // CHECK-51-NEXT: if (*x > e)
4164 // CHECK-51-NEXT: *x = e;
4165 // CHECK-51-NEXT: v = *x;
4166 // CHECK-51-NEXT: }
4167 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4168 // CHECK-51-NEXT: {
4169 // CHECK-51-NEXT: if (*x < e)
4170 // CHECK-51-NEXT: *x = e;
4171 // CHECK-51-NEXT: v = *x;
4172 // CHECK-51-NEXT: }
4173 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4174 // CHECK-51-NEXT: {
4175 // CHECK-51-NEXT: if (*x == e)
4176 // CHECK-51-NEXT: *x = d;
4177 // CHECK-51-NEXT: v = *x;
4178 // CHECK-51-NEXT: }
4179 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4180 // CHECK-51-NEXT: {
4181 // CHECK-51-NEXT: if (*x == e)
4182 // CHECK-51-NEXT: *x = d;
4183 // CHECK-51-NEXT: else
4184 // CHECK-51-NEXT: v = *x;
4185 // CHECK-51-NEXT: }
4186 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4187 // CHECK-51-NEXT: {
4188 // CHECK-51-NEXT: r = *x == e;
4189 // CHECK-51-NEXT: if (r)
4190 // CHECK-51-NEXT: *x = d;
4191 // CHECK-51-NEXT: }
4192 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4193 // CHECK-51-NEXT: {
4194 // CHECK-51-NEXT: r = *x == e;
4195 // CHECK-51-NEXT: if (r)
4196 // CHECK-51-NEXT: *x = d;
4197 // CHECK-51-NEXT: else
4198 // CHECK-51-NEXT: v = *x;
4199 // CHECK-51-NEXT: }
4200 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4201 // CHECK-51-NEXT: {
4202 // CHECK-51-NEXT: v = *x;
4203 // CHECK-51-NEXT: if (*x > e)
4204 // CHECK-51-NEXT: *x = e;
4205 // CHECK-51-NEXT: }
4206 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4207 // CHECK-51-NEXT: {
4208 // CHECK-51-NEXT: v = *x;
4209 // CHECK-51-NEXT: if (*x < e)
4210 // CHECK-51-NEXT: *x = e;
4211 // CHECK-51-NEXT: }
4212 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4213 // CHECK-51-NEXT: {
4214 // CHECK-51-NEXT: v = *x;
4215 // CHECK-51-NEXT: if (*x == e)
4216 // CHECK-51-NEXT: *x = d;
4217 // CHECK-51-NEXT: }
4218 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4219 // CHECK-51-NEXT: {
4220 // CHECK-51-NEXT: if (*x > e)
4221 // CHECK-51-NEXT: *x = e;
4222 // CHECK-51-NEXT: v = *x;
4223 // CHECK-51-NEXT: }
4224 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4225 // CHECK-51-NEXT: {
4226 // CHECK-51-NEXT: if (*x < e)
4227 // CHECK-51-NEXT: *x = e;
4228 // CHECK-51-NEXT: v = *x;
4229 // CHECK-51-NEXT: }
4230 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4231 // CHECK-51-NEXT: {
4232 // CHECK-51-NEXT: if (*x == e)
4233 // CHECK-51-NEXT: *x = d;
4234 // CHECK-51-NEXT: v = *x;
4235 // CHECK-51-NEXT: }
4236 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4237 // CHECK-51-NEXT: {
4238 // CHECK-51-NEXT: if (*x == e)
4239 // CHECK-51-NEXT: *x = d;
4240 // CHECK-51-NEXT: else
4241 // CHECK-51-NEXT: v = *x;
4242 // CHECK-51-NEXT: }
4243 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4244 // CHECK-51-NEXT: {
4245 // CHECK-51-NEXT: r = *x == e;
4246 // CHECK-51-NEXT: if (r)
4247 // CHECK-51-NEXT: *x = d;
4248 // CHECK-51-NEXT: }
4249 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4250 // CHECK-51-NEXT: {
4251 // CHECK-51-NEXT: r = *x == e;
4252 // CHECK-51-NEXT: if (r)
4253 // CHECK-51-NEXT: *x = d;
4254 // CHECK-51-NEXT: else
4255 // CHECK-51-NEXT: v = *x;
4256 // CHECK-51-NEXT: }
4257 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4258 // CHECK-51-NEXT: {
4259 // CHECK-51-NEXT: v = *x;
4260 // CHECK-51-NEXT: if (*x > e)
4261 // CHECK-51-NEXT: *x = e;
4262 // CHECK-51-NEXT: }
4263 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4264 // CHECK-51-NEXT: {
4265 // CHECK-51-NEXT: v = *x;
4266 // CHECK-51-NEXT: if (*x < e)
4267 // CHECK-51-NEXT: *x = e;
4268 // CHECK-51-NEXT: }
4269 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4270 // CHECK-51-NEXT: {
4271 // CHECK-51-NEXT: v = *x;
4272 // CHECK-51-NEXT: if (*x == e)
4273 // CHECK-51-NEXT: *x = d;
4274 // CHECK-51-NEXT: }
4275 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4276 // CHECK-51-NEXT: {
4277 // CHECK-51-NEXT: if (*x > e)
4278 // CHECK-51-NEXT: *x = e;
4279 // CHECK-51-NEXT: v = *x;
4280 // CHECK-51-NEXT: }
4281 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4282 // CHECK-51-NEXT: {
4283 // CHECK-51-NEXT: if (*x < e)
4284 // CHECK-51-NEXT: *x = e;
4285 // CHECK-51-NEXT: v = *x;
4286 // CHECK-51-NEXT: }
4287 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4288 // CHECK-51-NEXT: {
4289 // CHECK-51-NEXT: if (*x == e)
4290 // CHECK-51-NEXT: *x = d;
4291 // CHECK-51-NEXT: v = *x;
4292 // CHECK-51-NEXT: }
4293 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4294 // CHECK-51-NEXT: {
4295 // CHECK-51-NEXT: if (*x == e)
4296 // CHECK-51-NEXT: *x = d;
4297 // CHECK-51-NEXT: else
4298 // CHECK-51-NEXT: v = *x;
4299 // CHECK-51-NEXT: }
4300 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4301 // CHECK-51-NEXT: {
4302 // CHECK-51-NEXT: r = *x == e;
4303 // CHECK-51-NEXT: if (r)
4304 // CHECK-51-NEXT: *x = d;
4305 // CHECK-51-NEXT: }
4306 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4307 // CHECK-51-NEXT: {
4308 // CHECK-51-NEXT: r = *x == e;
4309 // CHECK-51-NEXT: if (r)
4310 // CHECK-51-NEXT: *x = d;
4311 // CHECK-51-NEXT: else
4312 // CHECK-51-NEXT: v = *x;
4313 // CHECK-51-NEXT: }
4314 // CHECK-51-NEXT: return v;
4315 // CHECK-51-NEXT: }
4316 // CHECK-51-NEXT: template<> long ffoo<long>(long *x, long e, long d) {
4317 // CHECK-51-NEXT: long v;
4318 // CHECK-51-NEXT: bool r;
4319 // CHECK-51-NEXT: #pragma omp atomic compare capture
4320 // CHECK-51-NEXT: {
4321 // CHECK-51-NEXT: v = *x;
4322 // CHECK-51-NEXT: if (*x > e)
4323 // CHECK-51-NEXT: *x = e;
4324 // CHECK-51-NEXT: }
4325 // CHECK-51-NEXT: #pragma omp atomic compare capture
4326 // CHECK-51-NEXT: {
4327 // CHECK-51-NEXT: v = *x;
4328 // CHECK-51-NEXT: if (*x < e)
4329 // CHECK-51-NEXT: *x = e;
4330 // CHECK-51-NEXT: }
4331 // CHECK-51-NEXT: #pragma omp atomic compare capture
4332 // CHECK-51-NEXT: {
4333 // CHECK-51-NEXT: v = *x;
4334 // CHECK-51-NEXT: if (*x == e)
4335 // CHECK-51-NEXT: *x = d;
4336 // CHECK-51-NEXT: }
4337 // CHECK-51-NEXT: #pragma omp atomic compare capture
4338 // CHECK-51-NEXT: {
4339 // CHECK-51-NEXT: if (*x > e)
4340 // CHECK-51-NEXT: *x = e;
4341 // CHECK-51-NEXT: v = *x;
4342 // CHECK-51-NEXT: }
4343 // CHECK-51-NEXT: #pragma omp atomic compare capture
4344 // CHECK-51-NEXT: {
4345 // CHECK-51-NEXT: if (*x < e)
4346 // CHECK-51-NEXT: *x = e;
4347 // CHECK-51-NEXT: v = *x;
4348 // CHECK-51-NEXT: }
4349 // CHECK-51-NEXT: #pragma omp atomic compare capture
4350 // CHECK-51-NEXT: {
4351 // CHECK-51-NEXT: if (*x == e)
4352 // CHECK-51-NEXT: *x = d;
4353 // CHECK-51-NEXT: v = *x;
4354 // CHECK-51-NEXT: }
4355 // CHECK-51-NEXT: #pragma omp atomic compare capture
4356 // CHECK-51-NEXT: {
4357 // CHECK-51-NEXT: if (*x == e)
4358 // CHECK-51-NEXT: *x = d;
4359 // CHECK-51-NEXT: else
4360 // CHECK-51-NEXT: v = *x;
4361 // CHECK-51-NEXT: }
4362 // CHECK-51-NEXT: #pragma omp atomic compare capture
4363 // CHECK-51-NEXT: {
4364 // CHECK-51-NEXT: r = *x == e;
4365 // CHECK-51-NEXT: if (r)
4366 // CHECK-51-NEXT: *x = d;
4367 // CHECK-51-NEXT: }
4368 // CHECK-51-NEXT: #pragma omp atomic compare capture
4369 // CHECK-51-NEXT: {
4370 // CHECK-51-NEXT: r = *x == e;
4371 // CHECK-51-NEXT: if (r)
4372 // CHECK-51-NEXT: *x = d;
4373 // CHECK-51-NEXT: else
4374 // CHECK-51-NEXT: v = *x;
4375 // CHECK-51-NEXT: }
4376 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4377 // CHECK-51-NEXT: {
4378 // CHECK-51-NEXT: v = *x;
4379 // CHECK-51-NEXT: if (*x > e)
4380 // CHECK-51-NEXT: *x = e;
4381 // CHECK-51-NEXT: }
4382 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4383 // CHECK-51-NEXT: {
4384 // CHECK-51-NEXT: v = *x;
4385 // CHECK-51-NEXT: if (*x < e)
4386 // CHECK-51-NEXT: *x = e;
4387 // CHECK-51-NEXT: }
4388 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4389 // CHECK-51-NEXT: {
4390 // CHECK-51-NEXT: v = *x;
4391 // CHECK-51-NEXT: if (*x == e)
4392 // CHECK-51-NEXT: *x = d;
4393 // CHECK-51-NEXT: }
4394 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4395 // CHECK-51-NEXT: {
4396 // CHECK-51-NEXT: if (*x > e)
4397 // CHECK-51-NEXT: *x = e;
4398 // CHECK-51-NEXT: v = *x;
4399 // CHECK-51-NEXT: }
4400 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4401 // CHECK-51-NEXT: {
4402 // CHECK-51-NEXT: if (*x < e)
4403 // CHECK-51-NEXT: *x = e;
4404 // CHECK-51-NEXT: v = *x;
4405 // CHECK-51-NEXT: }
4406 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4407 // CHECK-51-NEXT: {
4408 // CHECK-51-NEXT: if (*x == e)
4409 // CHECK-51-NEXT: *x = d;
4410 // CHECK-51-NEXT: v = *x;
4411 // CHECK-51-NEXT: }
4412 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4413 // CHECK-51-NEXT: {
4414 // CHECK-51-NEXT: if (*x == e)
4415 // CHECK-51-NEXT: *x = d;
4416 // CHECK-51-NEXT: else
4417 // CHECK-51-NEXT: v = *x;
4418 // CHECK-51-NEXT: }
4419 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4420 // CHECK-51-NEXT: {
4421 // CHECK-51-NEXT: r = *x == e;
4422 // CHECK-51-NEXT: if (r)
4423 // CHECK-51-NEXT: *x = d;
4424 // CHECK-51-NEXT: }
4425 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4426 // CHECK-51-NEXT: {
4427 // CHECK-51-NEXT: r = *x == e;
4428 // CHECK-51-NEXT: if (r)
4429 // CHECK-51-NEXT: *x = d;
4430 // CHECK-51-NEXT: else
4431 // CHECK-51-NEXT: v = *x;
4432 // CHECK-51-NEXT: }
4433 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4434 // CHECK-51-NEXT: {
4435 // CHECK-51-NEXT: v = *x;
4436 // CHECK-51-NEXT: if (*x > e)
4437 // CHECK-51-NEXT: *x = e;
4438 // CHECK-51-NEXT: }
4439 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4440 // CHECK-51-NEXT: {
4441 // CHECK-51-NEXT: v = *x;
4442 // CHECK-51-NEXT: if (*x < e)
4443 // CHECK-51-NEXT: *x = e;
4444 // CHECK-51-NEXT: }
4445 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4446 // CHECK-51-NEXT: {
4447 // CHECK-51-NEXT: v = *x;
4448 // CHECK-51-NEXT: if (*x == e)
4449 // CHECK-51-NEXT: *x = d;
4450 // CHECK-51-NEXT: }
4451 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4452 // CHECK-51-NEXT: {
4453 // CHECK-51-NEXT: if (*x > e)
4454 // CHECK-51-NEXT: *x = e;
4455 // CHECK-51-NEXT: v = *x;
4456 // CHECK-51-NEXT: }
4457 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4458 // CHECK-51-NEXT: {
4459 // CHECK-51-NEXT: if (*x < e)
4460 // CHECK-51-NEXT: *x = e;
4461 // CHECK-51-NEXT: v = *x;
4462 // CHECK-51-NEXT: }
4463 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4464 // CHECK-51-NEXT: {
4465 // CHECK-51-NEXT: if (*x == e)
4466 // CHECK-51-NEXT: *x = d;
4467 // CHECK-51-NEXT: v = *x;
4468 // CHECK-51-NEXT: }
4469 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4470 // CHECK-51-NEXT: {
4471 // CHECK-51-NEXT: if (*x == e)
4472 // CHECK-51-NEXT: *x = d;
4473 // CHECK-51-NEXT: else
4474 // CHECK-51-NEXT: v = *x;
4475 // CHECK-51-NEXT: }
4476 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4477 // CHECK-51-NEXT: {
4478 // CHECK-51-NEXT: r = *x == e;
4479 // CHECK-51-NEXT: if (r)
4480 // CHECK-51-NEXT: *x = d;
4481 // CHECK-51-NEXT: }
4482 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4483 // CHECK-51-NEXT: {
4484 // CHECK-51-NEXT: r = *x == e;
4485 // CHECK-51-NEXT: if (r)
4486 // CHECK-51-NEXT: *x = d;
4487 // CHECK-51-NEXT: else
4488 // CHECK-51-NEXT: v = *x;
4489 // CHECK-51-NEXT: }
4490 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4491 // CHECK-51-NEXT: {
4492 // CHECK-51-NEXT: v = *x;
4493 // CHECK-51-NEXT: if (*x > e)
4494 // CHECK-51-NEXT: *x = e;
4495 // CHECK-51-NEXT: }
4496 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4497 // CHECK-51-NEXT: {
4498 // CHECK-51-NEXT: v = *x;
4499 // CHECK-51-NEXT: if (*x < e)
4500 // CHECK-51-NEXT: *x = e;
4501 // CHECK-51-NEXT: }
4502 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4503 // CHECK-51-NEXT: {
4504 // CHECK-51-NEXT: v = *x;
4505 // CHECK-51-NEXT: if (*x == e)
4506 // CHECK-51-NEXT: *x = d;
4507 // CHECK-51-NEXT: }
4508 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4509 // CHECK-51-NEXT: {
4510 // CHECK-51-NEXT: if (*x > e)
4511 // CHECK-51-NEXT: *x = e;
4512 // CHECK-51-NEXT: v = *x;
4513 // CHECK-51-NEXT: }
4514 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4515 // CHECK-51-NEXT: {
4516 // CHECK-51-NEXT: if (*x < e)
4517 // CHECK-51-NEXT: *x = e;
4518 // CHECK-51-NEXT: v = *x;
4519 // CHECK-51-NEXT: }
4520 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4521 // CHECK-51-NEXT: {
4522 // CHECK-51-NEXT: if (*x == e)
4523 // CHECK-51-NEXT: *x = d;
4524 // CHECK-51-NEXT: v = *x;
4525 // CHECK-51-NEXT: }
4526 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4527 // CHECK-51-NEXT: {
4528 // CHECK-51-NEXT: if (*x == e)
4529 // CHECK-51-NEXT: *x = d;
4530 // CHECK-51-NEXT: else
4531 // CHECK-51-NEXT: v = *x;
4532 // CHECK-51-NEXT: }
4533 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4534 // CHECK-51-NEXT: {
4535 // CHECK-51-NEXT: r = *x == e;
4536 // CHECK-51-NEXT: if (r)
4537 // CHECK-51-NEXT: *x = d;
4538 // CHECK-51-NEXT: }
4539 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4540 // CHECK-51-NEXT: {
4541 // CHECK-51-NEXT: r = *x == e;
4542 // CHECK-51-NEXT: if (r)
4543 // CHECK-51-NEXT: *x = d;
4544 // CHECK-51-NEXT: else
4545 // CHECK-51-NEXT: v = *x;
4546 // CHECK-51-NEXT: }
4547 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4548 // CHECK-51-NEXT: {
4549 // CHECK-51-NEXT: v = *x;
4550 // CHECK-51-NEXT: if (*x > e)
4551 // CHECK-51-NEXT: *x = e;
4552 // CHECK-51-NEXT: }
4553 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4554 // CHECK-51-NEXT: {
4555 // CHECK-51-NEXT: v = *x;
4556 // CHECK-51-NEXT: if (*x < e)
4557 // CHECK-51-NEXT: *x = e;
4558 // CHECK-51-NEXT: }
4559 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4560 // CHECK-51-NEXT: {
4561 // CHECK-51-NEXT: v = *x;
4562 // CHECK-51-NEXT: if (*x == e)
4563 // CHECK-51-NEXT: *x = d;
4564 // CHECK-51-NEXT: }
4565 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4566 // CHECK-51-NEXT: {
4567 // CHECK-51-NEXT: if (*x > e)
4568 // CHECK-51-NEXT: *x = e;
4569 // CHECK-51-NEXT: v = *x;
4570 // CHECK-51-NEXT: }
4571 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4572 // CHECK-51-NEXT: {
4573 // CHECK-51-NEXT: if (*x < e)
4574 // CHECK-51-NEXT: *x = e;
4575 // CHECK-51-NEXT: v = *x;
4576 // CHECK-51-NEXT: }
4577 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4578 // CHECK-51-NEXT: {
4579 // CHECK-51-NEXT: if (*x == e)
4580 // CHECK-51-NEXT: *x = d;
4581 // CHECK-51-NEXT: v = *x;
4582 // CHECK-51-NEXT: }
4583 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4584 // CHECK-51-NEXT: {
4585 // CHECK-51-NEXT: if (*x == e)
4586 // CHECK-51-NEXT: *x = d;
4587 // CHECK-51-NEXT: else
4588 // CHECK-51-NEXT: v = *x;
4589 // CHECK-51-NEXT: }
4590 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4591 // CHECK-51-NEXT: {
4592 // CHECK-51-NEXT: r = *x == e;
4593 // CHECK-51-NEXT: if (r)
4594 // CHECK-51-NEXT: *x = d;
4595 // CHECK-51-NEXT: }
4596 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4597 // CHECK-51-NEXT: {
4598 // CHECK-51-NEXT: r = *x == e;
4599 // CHECK-51-NEXT: if (r)
4600 // CHECK-51-NEXT: *x = d;
4601 // CHECK-51-NEXT: else
4602 // CHECK-51-NEXT: v = *x;
4603 // CHECK-51-NEXT: }
4604 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4605 // CHECK-51-NEXT: {
4606 // CHECK-51-NEXT: v = *x;
4607 // CHECK-51-NEXT: if (*x > e)
4608 // CHECK-51-NEXT: *x = e;
4609 // CHECK-51-NEXT: }
4610 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4611 // CHECK-51-NEXT: {
4612 // CHECK-51-NEXT: v = *x;
4613 // CHECK-51-NEXT: if (*x < e)
4614 // CHECK-51-NEXT: *x = e;
4615 // CHECK-51-NEXT: }
4616 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4617 // CHECK-51-NEXT: {
4618 // CHECK-51-NEXT: v = *x;
4619 // CHECK-51-NEXT: if (*x == e)
4620 // CHECK-51-NEXT: *x = d;
4621 // CHECK-51-NEXT: }
4622 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4623 // CHECK-51-NEXT: {
4624 // CHECK-51-NEXT: if (*x > e)
4625 // CHECK-51-NEXT: *x = e;
4626 // CHECK-51-NEXT: v = *x;
4627 // CHECK-51-NEXT: }
4628 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4629 // CHECK-51-NEXT: {
4630 // CHECK-51-NEXT: if (*x < e)
4631 // CHECK-51-NEXT: *x = e;
4632 // CHECK-51-NEXT: v = *x;
4633 // CHECK-51-NEXT: }
4634 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4635 // CHECK-51-NEXT: {
4636 // CHECK-51-NEXT: if (*x == e)
4637 // CHECK-51-NEXT: *x = d;
4638 // CHECK-51-NEXT: v = *x;
4639 // CHECK-51-NEXT: }
4640 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4641 // CHECK-51-NEXT: {
4642 // CHECK-51-NEXT: if (*x == e)
4643 // CHECK-51-NEXT: *x = d;
4644 // CHECK-51-NEXT: else
4645 // CHECK-51-NEXT: v = *x;
4646 // CHECK-51-NEXT: }
4647 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4648 // CHECK-51-NEXT: {
4649 // CHECK-51-NEXT: r = *x == e;
4650 // CHECK-51-NEXT: if (r)
4651 // CHECK-51-NEXT: *x = d;
4652 // CHECK-51-NEXT: }
4653 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4654 // CHECK-51-NEXT: {
4655 // CHECK-51-NEXT: r = *x == e;
4656 // CHECK-51-NEXT: if (r)
4657 // CHECK-51-NEXT: *x = d;
4658 // CHECK-51-NEXT: else
4659 // CHECK-51-NEXT: v = *x;
4660 // CHECK-51-NEXT: }
4661 // CHECK-51-NEXT: return v;
4662 // CHECK-51-NEXT: }
4663 // CHECK-51-NEXT: template<> unsigned long ffoo<unsigned long>(unsigned long *x, unsigned long e, unsigned long d) {
4664 // CHECK-51-NEXT: unsigned long v;
4665 // CHECK-51-NEXT: bool r;
4666 // CHECK-51-NEXT: #pragma omp atomic compare capture
4667 // CHECK-51-NEXT: {
4668 // CHECK-51-NEXT: v = *x;
4669 // CHECK-51-NEXT: if (*x > e)
4670 // CHECK-51-NEXT: *x = e;
4671 // CHECK-51-NEXT: }
4672 // CHECK-51-NEXT: #pragma omp atomic compare capture
4673 // CHECK-51-NEXT: {
4674 // CHECK-51-NEXT: v = *x;
4675 // CHECK-51-NEXT: if (*x < e)
4676 // CHECK-51-NEXT: *x = e;
4677 // CHECK-51-NEXT: }
4678 // CHECK-51-NEXT: #pragma omp atomic compare capture
4679 // CHECK-51-NEXT: {
4680 // CHECK-51-NEXT: v = *x;
4681 // CHECK-51-NEXT: if (*x == e)
4682 // CHECK-51-NEXT: *x = d;
4683 // CHECK-51-NEXT: }
4684 // CHECK-51-NEXT: #pragma omp atomic compare capture
4685 // CHECK-51-NEXT: {
4686 // CHECK-51-NEXT: if (*x > e)
4687 // CHECK-51-NEXT: *x = e;
4688 // CHECK-51-NEXT: v = *x;
4689 // CHECK-51-NEXT: }
4690 // CHECK-51-NEXT: #pragma omp atomic compare capture
4691 // CHECK-51-NEXT: {
4692 // CHECK-51-NEXT: if (*x < e)
4693 // CHECK-51-NEXT: *x = e;
4694 // CHECK-51-NEXT: v = *x;
4695 // CHECK-51-NEXT: }
4696 // CHECK-51-NEXT: #pragma omp atomic compare capture
4697 // CHECK-51-NEXT: {
4698 // CHECK-51-NEXT: if (*x == e)
4699 // CHECK-51-NEXT: *x = d;
4700 // CHECK-51-NEXT: v = *x;
4701 // CHECK-51-NEXT: }
4702 // CHECK-51-NEXT: #pragma omp atomic compare capture
4703 // CHECK-51-NEXT: {
4704 // CHECK-51-NEXT: if (*x == e)
4705 // CHECK-51-NEXT: *x = d;
4706 // CHECK-51-NEXT: else
4707 // CHECK-51-NEXT: v = *x;
4708 // CHECK-51-NEXT: }
4709 // CHECK-51-NEXT: #pragma omp atomic compare capture
4710 // CHECK-51-NEXT: {
4711 // CHECK-51-NEXT: r = *x == e;
4712 // CHECK-51-NEXT: if (r)
4713 // CHECK-51-NEXT: *x = d;
4714 // CHECK-51-NEXT: }
4715 // CHECK-51-NEXT: #pragma omp atomic compare capture
4716 // CHECK-51-NEXT: {
4717 // CHECK-51-NEXT: r = *x == e;
4718 // CHECK-51-NEXT: if (r)
4719 // CHECK-51-NEXT: *x = d;
4720 // CHECK-51-NEXT: else
4721 // CHECK-51-NEXT: v = *x;
4722 // CHECK-51-NEXT: }
4723 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4724 // CHECK-51-NEXT: {
4725 // CHECK-51-NEXT: v = *x;
4726 // CHECK-51-NEXT: if (*x > e)
4727 // CHECK-51-NEXT: *x = e;
4728 // CHECK-51-NEXT: }
4729 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4730 // CHECK-51-NEXT: {
4731 // CHECK-51-NEXT: v = *x;
4732 // CHECK-51-NEXT: if (*x < e)
4733 // CHECK-51-NEXT: *x = e;
4734 // CHECK-51-NEXT: }
4735 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4736 // CHECK-51-NEXT: {
4737 // CHECK-51-NEXT: v = *x;
4738 // CHECK-51-NEXT: if (*x == e)
4739 // CHECK-51-NEXT: *x = d;
4740 // CHECK-51-NEXT: }
4741 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4742 // CHECK-51-NEXT: {
4743 // CHECK-51-NEXT: if (*x > e)
4744 // CHECK-51-NEXT: *x = e;
4745 // CHECK-51-NEXT: v = *x;
4746 // CHECK-51-NEXT: }
4747 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4748 // CHECK-51-NEXT: {
4749 // CHECK-51-NEXT: if (*x < e)
4750 // CHECK-51-NEXT: *x = e;
4751 // CHECK-51-NEXT: v = *x;
4752 // CHECK-51-NEXT: }
4753 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4754 // CHECK-51-NEXT: {
4755 // CHECK-51-NEXT: if (*x == e)
4756 // CHECK-51-NEXT: *x = d;
4757 // CHECK-51-NEXT: v = *x;
4758 // CHECK-51-NEXT: }
4759 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4760 // CHECK-51-NEXT: {
4761 // CHECK-51-NEXT: if (*x == e)
4762 // CHECK-51-NEXT: *x = d;
4763 // CHECK-51-NEXT: else
4764 // CHECK-51-NEXT: v = *x;
4765 // CHECK-51-NEXT: }
4766 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4767 // CHECK-51-NEXT: {
4768 // CHECK-51-NEXT: r = *x == e;
4769 // CHECK-51-NEXT: if (r)
4770 // CHECK-51-NEXT: *x = d;
4771 // CHECK-51-NEXT: }
4772 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
4773 // CHECK-51-NEXT: {
4774 // CHECK-51-NEXT: r = *x == e;
4775 // CHECK-51-NEXT: if (r)
4776 // CHECK-51-NEXT: *x = d;
4777 // CHECK-51-NEXT: else
4778 // CHECK-51-NEXT: v = *x;
4779 // CHECK-51-NEXT: }
4780 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4781 // CHECK-51-NEXT: {
4782 // CHECK-51-NEXT: v = *x;
4783 // CHECK-51-NEXT: if (*x > e)
4784 // CHECK-51-NEXT: *x = e;
4785 // CHECK-51-NEXT: }
4786 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4787 // CHECK-51-NEXT: {
4788 // CHECK-51-NEXT: v = *x;
4789 // CHECK-51-NEXT: if (*x < e)
4790 // CHECK-51-NEXT: *x = e;
4791 // CHECK-51-NEXT: }
4792 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4793 // CHECK-51-NEXT: {
4794 // CHECK-51-NEXT: v = *x;
4795 // CHECK-51-NEXT: if (*x == e)
4796 // CHECK-51-NEXT: *x = d;
4797 // CHECK-51-NEXT: }
4798 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4799 // CHECK-51-NEXT: {
4800 // CHECK-51-NEXT: if (*x > e)
4801 // CHECK-51-NEXT: *x = e;
4802 // CHECK-51-NEXT: v = *x;
4803 // CHECK-51-NEXT: }
4804 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4805 // CHECK-51-NEXT: {
4806 // CHECK-51-NEXT: if (*x < e)
4807 // CHECK-51-NEXT: *x = e;
4808 // CHECK-51-NEXT: v = *x;
4809 // CHECK-51-NEXT: }
4810 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4811 // CHECK-51-NEXT: {
4812 // CHECK-51-NEXT: if (*x == e)
4813 // CHECK-51-NEXT: *x = d;
4814 // CHECK-51-NEXT: v = *x;
4815 // CHECK-51-NEXT: }
4816 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4817 // CHECK-51-NEXT: {
4818 // CHECK-51-NEXT: if (*x == e)
4819 // CHECK-51-NEXT: *x = d;
4820 // CHECK-51-NEXT: else
4821 // CHECK-51-NEXT: v = *x;
4822 // CHECK-51-NEXT: }
4823 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4824 // CHECK-51-NEXT: {
4825 // CHECK-51-NEXT: r = *x == e;
4826 // CHECK-51-NEXT: if (r)
4827 // CHECK-51-NEXT: *x = d;
4828 // CHECK-51-NEXT: }
4829 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
4830 // CHECK-51-NEXT: {
4831 // CHECK-51-NEXT: r = *x == e;
4832 // CHECK-51-NEXT: if (r)
4833 // CHECK-51-NEXT: *x = d;
4834 // CHECK-51-NEXT: else
4835 // CHECK-51-NEXT: v = *x;
4836 // CHECK-51-NEXT: }
4837 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4838 // CHECK-51-NEXT: {
4839 // CHECK-51-NEXT: v = *x;
4840 // CHECK-51-NEXT: if (*x > e)
4841 // CHECK-51-NEXT: *x = e;
4842 // CHECK-51-NEXT: }
4843 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4844 // CHECK-51-NEXT: {
4845 // CHECK-51-NEXT: v = *x;
4846 // CHECK-51-NEXT: if (*x < e)
4847 // CHECK-51-NEXT: *x = e;
4848 // CHECK-51-NEXT: }
4849 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4850 // CHECK-51-NEXT: {
4851 // CHECK-51-NEXT: v = *x;
4852 // CHECK-51-NEXT: if (*x == e)
4853 // CHECK-51-NEXT: *x = d;
4854 // CHECK-51-NEXT: }
4855 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4856 // CHECK-51-NEXT: {
4857 // CHECK-51-NEXT: if (*x > e)
4858 // CHECK-51-NEXT: *x = e;
4859 // CHECK-51-NEXT: v = *x;
4860 // CHECK-51-NEXT: }
4861 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4862 // CHECK-51-NEXT: {
4863 // CHECK-51-NEXT: if (*x < e)
4864 // CHECK-51-NEXT: *x = e;
4865 // CHECK-51-NEXT: v = *x;
4866 // CHECK-51-NEXT: }
4867 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4868 // CHECK-51-NEXT: {
4869 // CHECK-51-NEXT: if (*x == e)
4870 // CHECK-51-NEXT: *x = d;
4871 // CHECK-51-NEXT: v = *x;
4872 // CHECK-51-NEXT: }
4873 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4874 // CHECK-51-NEXT: {
4875 // CHECK-51-NEXT: if (*x == e)
4876 // CHECK-51-NEXT: *x = d;
4877 // CHECK-51-NEXT: else
4878 // CHECK-51-NEXT: v = *x;
4879 // CHECK-51-NEXT: }
4880 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4881 // CHECK-51-NEXT: {
4882 // CHECK-51-NEXT: r = *x == e;
4883 // CHECK-51-NEXT: if (r)
4884 // CHECK-51-NEXT: *x = d;
4885 // CHECK-51-NEXT: }
4886 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
4887 // CHECK-51-NEXT: {
4888 // CHECK-51-NEXT: r = *x == e;
4889 // CHECK-51-NEXT: if (r)
4890 // CHECK-51-NEXT: *x = d;
4891 // CHECK-51-NEXT: else
4892 // CHECK-51-NEXT: v = *x;
4893 // CHECK-51-NEXT: }
4894 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4895 // CHECK-51-NEXT: {
4896 // CHECK-51-NEXT: v = *x;
4897 // CHECK-51-NEXT: if (*x > e)
4898 // CHECK-51-NEXT: *x = e;
4899 // CHECK-51-NEXT: }
4900 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4901 // CHECK-51-NEXT: {
4902 // CHECK-51-NEXT: v = *x;
4903 // CHECK-51-NEXT: if (*x < e)
4904 // CHECK-51-NEXT: *x = e;
4905 // CHECK-51-NEXT: }
4906 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4907 // CHECK-51-NEXT: {
4908 // CHECK-51-NEXT: v = *x;
4909 // CHECK-51-NEXT: if (*x == e)
4910 // CHECK-51-NEXT: *x = d;
4911 // CHECK-51-NEXT: }
4912 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4913 // CHECK-51-NEXT: {
4914 // CHECK-51-NEXT: if (*x > e)
4915 // CHECK-51-NEXT: *x = e;
4916 // CHECK-51-NEXT: v = *x;
4917 // CHECK-51-NEXT: }
4918 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4919 // CHECK-51-NEXT: {
4920 // CHECK-51-NEXT: if (*x < e)
4921 // CHECK-51-NEXT: *x = e;
4922 // CHECK-51-NEXT: v = *x;
4923 // CHECK-51-NEXT: }
4924 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4925 // CHECK-51-NEXT: {
4926 // CHECK-51-NEXT: if (*x == e)
4927 // CHECK-51-NEXT: *x = d;
4928 // CHECK-51-NEXT: v = *x;
4929 // CHECK-51-NEXT: }
4930 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4931 // CHECK-51-NEXT: {
4932 // CHECK-51-NEXT: if (*x == e)
4933 // CHECK-51-NEXT: *x = d;
4934 // CHECK-51-NEXT: else
4935 // CHECK-51-NEXT: v = *x;
4936 // CHECK-51-NEXT: }
4937 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4938 // CHECK-51-NEXT: {
4939 // CHECK-51-NEXT: r = *x == e;
4940 // CHECK-51-NEXT: if (r)
4941 // CHECK-51-NEXT: *x = d;
4942 // CHECK-51-NEXT: }
4943 // CHECK-51-NEXT: #pragma omp atomic compare capture release
4944 // CHECK-51-NEXT: {
4945 // CHECK-51-NEXT: r = *x == e;
4946 // CHECK-51-NEXT: if (r)
4947 // CHECK-51-NEXT: *x = d;
4948 // CHECK-51-NEXT: else
4949 // CHECK-51-NEXT: v = *x;
4950 // CHECK-51-NEXT: }
4951 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4952 // CHECK-51-NEXT: {
4953 // CHECK-51-NEXT: v = *x;
4954 // CHECK-51-NEXT: if (*x > e)
4955 // CHECK-51-NEXT: *x = e;
4956 // CHECK-51-NEXT: }
4957 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4958 // CHECK-51-NEXT: {
4959 // CHECK-51-NEXT: v = *x;
4960 // CHECK-51-NEXT: if (*x < e)
4961 // CHECK-51-NEXT: *x = e;
4962 // CHECK-51-NEXT: }
4963 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4964 // CHECK-51-NEXT: {
4965 // CHECK-51-NEXT: v = *x;
4966 // CHECK-51-NEXT: if (*x == e)
4967 // CHECK-51-NEXT: *x = d;
4968 // CHECK-51-NEXT: }
4969 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4970 // CHECK-51-NEXT: {
4971 // CHECK-51-NEXT: if (*x > e)
4972 // CHECK-51-NEXT: *x = e;
4973 // CHECK-51-NEXT: v = *x;
4974 // CHECK-51-NEXT: }
4975 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4976 // CHECK-51-NEXT: {
4977 // CHECK-51-NEXT: if (*x < e)
4978 // CHECK-51-NEXT: *x = e;
4979 // CHECK-51-NEXT: v = *x;
4980 // CHECK-51-NEXT: }
4981 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4982 // CHECK-51-NEXT: {
4983 // CHECK-51-NEXT: if (*x == e)
4984 // CHECK-51-NEXT: *x = d;
4985 // CHECK-51-NEXT: v = *x;
4986 // CHECK-51-NEXT: }
4987 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4988 // CHECK-51-NEXT: {
4989 // CHECK-51-NEXT: if (*x == e)
4990 // CHECK-51-NEXT: *x = d;
4991 // CHECK-51-NEXT: else
4992 // CHECK-51-NEXT: v = *x;
4993 // CHECK-51-NEXT: }
4994 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
4995 // CHECK-51-NEXT: {
4996 // CHECK-51-NEXT: r = *x == e;
4997 // CHECK-51-NEXT: if (r)
4998 // CHECK-51-NEXT: *x = d;
4999 // CHECK-51-NEXT: }
5000 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5001 // CHECK-51-NEXT: {
5002 // CHECK-51-NEXT: r = *x == e;
5003 // CHECK-51-NEXT: if (r)
5004 // CHECK-51-NEXT: *x = d;
5005 // CHECK-51-NEXT: else
5006 // CHECK-51-NEXT: v = *x;
5007 // CHECK-51-NEXT: }
5008 // CHECK-51-NEXT: return v;
5009 // CHECK-51-NEXT: }
5010 // CHECK-51-NEXT: template<> long long ffoo<long long>(long long *x, long long e, long long d) {
5011 // CHECK-51-NEXT: long long v;
5012 // CHECK-51-NEXT: bool r;
5013 // CHECK-51-NEXT: #pragma omp atomic compare capture
5014 // CHECK-51-NEXT: {
5015 // CHECK-51-NEXT: v = *x;
5016 // CHECK-51-NEXT: if (*x > e)
5017 // CHECK-51-NEXT: *x = e;
5018 // CHECK-51-NEXT: }
5019 // CHECK-51-NEXT: #pragma omp atomic compare capture
5020 // CHECK-51-NEXT: {
5021 // CHECK-51-NEXT: v = *x;
5022 // CHECK-51-NEXT: if (*x < e)
5023 // CHECK-51-NEXT: *x = e;
5024 // CHECK-51-NEXT: }
5025 // CHECK-51-NEXT: #pragma omp atomic compare capture
5026 // CHECK-51-NEXT: {
5027 // CHECK-51-NEXT: v = *x;
5028 // CHECK-51-NEXT: if (*x == e)
5029 // CHECK-51-NEXT: *x = d;
5030 // CHECK-51-NEXT: }
5031 // CHECK-51-NEXT: #pragma omp atomic compare capture
5032 // CHECK-51-NEXT: {
5033 // CHECK-51-NEXT: if (*x > e)
5034 // CHECK-51-NEXT: *x = e;
5035 // CHECK-51-NEXT: v = *x;
5036 // CHECK-51-NEXT: }
5037 // CHECK-51-NEXT: #pragma omp atomic compare capture
5038 // CHECK-51-NEXT: {
5039 // CHECK-51-NEXT: if (*x < e)
5040 // CHECK-51-NEXT: *x = e;
5041 // CHECK-51-NEXT: v = *x;
5042 // CHECK-51-NEXT: }
5043 // CHECK-51-NEXT: #pragma omp atomic compare capture
5044 // CHECK-51-NEXT: {
5045 // CHECK-51-NEXT: if (*x == e)
5046 // CHECK-51-NEXT: *x = d;
5047 // CHECK-51-NEXT: v = *x;
5048 // CHECK-51-NEXT: }
5049 // CHECK-51-NEXT: #pragma omp atomic compare capture
5050 // CHECK-51-NEXT: {
5051 // CHECK-51-NEXT: if (*x == e)
5052 // CHECK-51-NEXT: *x = d;
5053 // CHECK-51-NEXT: else
5054 // CHECK-51-NEXT: v = *x;
5055 // CHECK-51-NEXT: }
5056 // CHECK-51-NEXT: #pragma omp atomic compare capture
5057 // CHECK-51-NEXT: {
5058 // CHECK-51-NEXT: r = *x == e;
5059 // CHECK-51-NEXT: if (r)
5060 // CHECK-51-NEXT: *x = d;
5061 // CHECK-51-NEXT: }
5062 // CHECK-51-NEXT: #pragma omp atomic compare capture
5063 // CHECK-51-NEXT: {
5064 // CHECK-51-NEXT: r = *x == e;
5065 // CHECK-51-NEXT: if (r)
5066 // CHECK-51-NEXT: *x = d;
5067 // CHECK-51-NEXT: else
5068 // CHECK-51-NEXT: v = *x;
5069 // CHECK-51-NEXT: }
5070 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5071 // CHECK-51-NEXT: {
5072 // CHECK-51-NEXT: v = *x;
5073 // CHECK-51-NEXT: if (*x > e)
5074 // CHECK-51-NEXT: *x = e;
5075 // CHECK-51-NEXT: }
5076 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5077 // CHECK-51-NEXT: {
5078 // CHECK-51-NEXT: v = *x;
5079 // CHECK-51-NEXT: if (*x < e)
5080 // CHECK-51-NEXT: *x = e;
5081 // CHECK-51-NEXT: }
5082 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5083 // CHECK-51-NEXT: {
5084 // CHECK-51-NEXT: v = *x;
5085 // CHECK-51-NEXT: if (*x == e)
5086 // CHECK-51-NEXT: *x = d;
5087 // CHECK-51-NEXT: }
5088 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5089 // CHECK-51-NEXT: {
5090 // CHECK-51-NEXT: if (*x > e)
5091 // CHECK-51-NEXT: *x = e;
5092 // CHECK-51-NEXT: v = *x;
5093 // CHECK-51-NEXT: }
5094 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5095 // CHECK-51-NEXT: {
5096 // CHECK-51-NEXT: if (*x < e)
5097 // CHECK-51-NEXT: *x = e;
5098 // CHECK-51-NEXT: v = *x;
5099 // CHECK-51-NEXT: }
5100 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5101 // CHECK-51-NEXT: {
5102 // CHECK-51-NEXT: if (*x == e)
5103 // CHECK-51-NEXT: *x = d;
5104 // CHECK-51-NEXT: v = *x;
5105 // CHECK-51-NEXT: }
5106 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5107 // CHECK-51-NEXT: {
5108 // CHECK-51-NEXT: if (*x == e)
5109 // CHECK-51-NEXT: *x = d;
5110 // CHECK-51-NEXT: else
5111 // CHECK-51-NEXT: v = *x;
5112 // CHECK-51-NEXT: }
5113 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5114 // CHECK-51-NEXT: {
5115 // CHECK-51-NEXT: r = *x == e;
5116 // CHECK-51-NEXT: if (r)
5117 // CHECK-51-NEXT: *x = d;
5118 // CHECK-51-NEXT: }
5119 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5120 // CHECK-51-NEXT: {
5121 // CHECK-51-NEXT: r = *x == e;
5122 // CHECK-51-NEXT: if (r)
5123 // CHECK-51-NEXT: *x = d;
5124 // CHECK-51-NEXT: else
5125 // CHECK-51-NEXT: v = *x;
5126 // CHECK-51-NEXT: }
5127 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5128 // CHECK-51-NEXT: {
5129 // CHECK-51-NEXT: v = *x;
5130 // CHECK-51-NEXT: if (*x > e)
5131 // CHECK-51-NEXT: *x = e;
5132 // CHECK-51-NEXT: }
5133 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5134 // CHECK-51-NEXT: {
5135 // CHECK-51-NEXT: v = *x;
5136 // CHECK-51-NEXT: if (*x < e)
5137 // CHECK-51-NEXT: *x = e;
5138 // CHECK-51-NEXT: }
5139 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5140 // CHECK-51-NEXT: {
5141 // CHECK-51-NEXT: v = *x;
5142 // CHECK-51-NEXT: if (*x == e)
5143 // CHECK-51-NEXT: *x = d;
5144 // CHECK-51-NEXT: }
5145 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5146 // CHECK-51-NEXT: {
5147 // CHECK-51-NEXT: if (*x > e)
5148 // CHECK-51-NEXT: *x = e;
5149 // CHECK-51-NEXT: v = *x;
5150 // CHECK-51-NEXT: }
5151 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5152 // CHECK-51-NEXT: {
5153 // CHECK-51-NEXT: if (*x < e)
5154 // CHECK-51-NEXT: *x = e;
5155 // CHECK-51-NEXT: v = *x;
5156 // CHECK-51-NEXT: }
5157 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5158 // CHECK-51-NEXT: {
5159 // CHECK-51-NEXT: if (*x == e)
5160 // CHECK-51-NEXT: *x = d;
5161 // CHECK-51-NEXT: v = *x;
5162 // CHECK-51-NEXT: }
5163 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5164 // CHECK-51-NEXT: {
5165 // CHECK-51-NEXT: if (*x == e)
5166 // CHECK-51-NEXT: *x = d;
5167 // CHECK-51-NEXT: else
5168 // CHECK-51-NEXT: v = *x;
5169 // CHECK-51-NEXT: }
5170 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5171 // CHECK-51-NEXT: {
5172 // CHECK-51-NEXT: r = *x == e;
5173 // CHECK-51-NEXT: if (r)
5174 // CHECK-51-NEXT: *x = d;
5175 // CHECK-51-NEXT: }
5176 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5177 // CHECK-51-NEXT: {
5178 // CHECK-51-NEXT: r = *x == e;
5179 // CHECK-51-NEXT: if (r)
5180 // CHECK-51-NEXT: *x = d;
5181 // CHECK-51-NEXT: else
5182 // CHECK-51-NEXT: v = *x;
5183 // CHECK-51-NEXT: }
5184 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5185 // CHECK-51-NEXT: {
5186 // CHECK-51-NEXT: v = *x;
5187 // CHECK-51-NEXT: if (*x > e)
5188 // CHECK-51-NEXT: *x = e;
5189 // CHECK-51-NEXT: }
5190 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5191 // CHECK-51-NEXT: {
5192 // CHECK-51-NEXT: v = *x;
5193 // CHECK-51-NEXT: if (*x < e)
5194 // CHECK-51-NEXT: *x = e;
5195 // CHECK-51-NEXT: }
5196 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5197 // CHECK-51-NEXT: {
5198 // CHECK-51-NEXT: v = *x;
5199 // CHECK-51-NEXT: if (*x == e)
5200 // CHECK-51-NEXT: *x = d;
5201 // CHECK-51-NEXT: }
5202 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5203 // CHECK-51-NEXT: {
5204 // CHECK-51-NEXT: if (*x > e)
5205 // CHECK-51-NEXT: *x = e;
5206 // CHECK-51-NEXT: v = *x;
5207 // CHECK-51-NEXT: }
5208 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5209 // CHECK-51-NEXT: {
5210 // CHECK-51-NEXT: if (*x < e)
5211 // CHECK-51-NEXT: *x = e;
5212 // CHECK-51-NEXT: v = *x;
5213 // CHECK-51-NEXT: }
5214 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5215 // CHECK-51-NEXT: {
5216 // CHECK-51-NEXT: if (*x == e)
5217 // CHECK-51-NEXT: *x = d;
5218 // CHECK-51-NEXT: v = *x;
5219 // CHECK-51-NEXT: }
5220 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5221 // CHECK-51-NEXT: {
5222 // CHECK-51-NEXT: if (*x == e)
5223 // CHECK-51-NEXT: *x = d;
5224 // CHECK-51-NEXT: else
5225 // CHECK-51-NEXT: v = *x;
5226 // CHECK-51-NEXT: }
5227 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5228 // CHECK-51-NEXT: {
5229 // CHECK-51-NEXT: r = *x == e;
5230 // CHECK-51-NEXT: if (r)
5231 // CHECK-51-NEXT: *x = d;
5232 // CHECK-51-NEXT: }
5233 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5234 // CHECK-51-NEXT: {
5235 // CHECK-51-NEXT: r = *x == e;
5236 // CHECK-51-NEXT: if (r)
5237 // CHECK-51-NEXT: *x = d;
5238 // CHECK-51-NEXT: else
5239 // CHECK-51-NEXT: v = *x;
5240 // CHECK-51-NEXT: }
5241 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5242 // CHECK-51-NEXT: {
5243 // CHECK-51-NEXT: v = *x;
5244 // CHECK-51-NEXT: if (*x > e)
5245 // CHECK-51-NEXT: *x = e;
5246 // CHECK-51-NEXT: }
5247 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5248 // CHECK-51-NEXT: {
5249 // CHECK-51-NEXT: v = *x;
5250 // CHECK-51-NEXT: if (*x < e)
5251 // CHECK-51-NEXT: *x = e;
5252 // CHECK-51-NEXT: }
5253 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5254 // CHECK-51-NEXT: {
5255 // CHECK-51-NEXT: v = *x;
5256 // CHECK-51-NEXT: if (*x == e)
5257 // CHECK-51-NEXT: *x = d;
5258 // CHECK-51-NEXT: }
5259 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5260 // CHECK-51-NEXT: {
5261 // CHECK-51-NEXT: if (*x > e)
5262 // CHECK-51-NEXT: *x = e;
5263 // CHECK-51-NEXT: v = *x;
5264 // CHECK-51-NEXT: }
5265 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5266 // CHECK-51-NEXT: {
5267 // CHECK-51-NEXT: if (*x < e)
5268 // CHECK-51-NEXT: *x = e;
5269 // CHECK-51-NEXT: v = *x;
5270 // CHECK-51-NEXT: }
5271 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5272 // CHECK-51-NEXT: {
5273 // CHECK-51-NEXT: if (*x == e)
5274 // CHECK-51-NEXT: *x = d;
5275 // CHECK-51-NEXT: v = *x;
5276 // CHECK-51-NEXT: }
5277 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5278 // CHECK-51-NEXT: {
5279 // CHECK-51-NEXT: if (*x == e)
5280 // CHECK-51-NEXT: *x = d;
5281 // CHECK-51-NEXT: else
5282 // CHECK-51-NEXT: v = *x;
5283 // CHECK-51-NEXT: }
5284 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5285 // CHECK-51-NEXT: {
5286 // CHECK-51-NEXT: r = *x == e;
5287 // CHECK-51-NEXT: if (r)
5288 // CHECK-51-NEXT: *x = d;
5289 // CHECK-51-NEXT: }
5290 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5291 // CHECK-51-NEXT: {
5292 // CHECK-51-NEXT: r = *x == e;
5293 // CHECK-51-NEXT: if (r)
5294 // CHECK-51-NEXT: *x = d;
5295 // CHECK-51-NEXT: else
5296 // CHECK-51-NEXT: v = *x;
5297 // CHECK-51-NEXT: }
5298 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5299 // CHECK-51-NEXT: {
5300 // CHECK-51-NEXT: v = *x;
5301 // CHECK-51-NEXT: if (*x > e)
5302 // CHECK-51-NEXT: *x = e;
5303 // CHECK-51-NEXT: }
5304 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5305 // CHECK-51-NEXT: {
5306 // CHECK-51-NEXT: v = *x;
5307 // CHECK-51-NEXT: if (*x < e)
5308 // CHECK-51-NEXT: *x = e;
5309 // CHECK-51-NEXT: }
5310 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5311 // CHECK-51-NEXT: {
5312 // CHECK-51-NEXT: v = *x;
5313 // CHECK-51-NEXT: if (*x == e)
5314 // CHECK-51-NEXT: *x = d;
5315 // CHECK-51-NEXT: }
5316 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5317 // CHECK-51-NEXT: {
5318 // CHECK-51-NEXT: if (*x > e)
5319 // CHECK-51-NEXT: *x = e;
5320 // CHECK-51-NEXT: v = *x;
5321 // CHECK-51-NEXT: }
5322 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5323 // CHECK-51-NEXT: {
5324 // CHECK-51-NEXT: if (*x < e)
5325 // CHECK-51-NEXT: *x = e;
5326 // CHECK-51-NEXT: v = *x;
5327 // CHECK-51-NEXT: }
5328 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5329 // CHECK-51-NEXT: {
5330 // CHECK-51-NEXT: if (*x == e)
5331 // CHECK-51-NEXT: *x = d;
5332 // CHECK-51-NEXT: v = *x;
5333 // CHECK-51-NEXT: }
5334 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5335 // CHECK-51-NEXT: {
5336 // CHECK-51-NEXT: if (*x == e)
5337 // CHECK-51-NEXT: *x = d;
5338 // CHECK-51-NEXT: else
5339 // CHECK-51-NEXT: v = *x;
5340 // CHECK-51-NEXT: }
5341 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5342 // CHECK-51-NEXT: {
5343 // CHECK-51-NEXT: r = *x == e;
5344 // CHECK-51-NEXT: if (r)
5345 // CHECK-51-NEXT: *x = d;
5346 // CHECK-51-NEXT: }
5347 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5348 // CHECK-51-NEXT: {
5349 // CHECK-51-NEXT: r = *x == e;
5350 // CHECK-51-NEXT: if (r)
5351 // CHECK-51-NEXT: *x = d;
5352 // CHECK-51-NEXT: else
5353 // CHECK-51-NEXT: v = *x;
5354 // CHECK-51-NEXT: }
5355 // CHECK-51-NEXT: return v;
5356 // CHECK-51-NEXT: }
5357 // CHECK-51-NEXT: template<> unsigned long long ffoo<unsigned long long>(unsigned long long *x, unsigned long long e, unsigned long long d) {
5358 // CHECK-51-NEXT: unsigned long long v;
5359 // CHECK-51-NEXT: bool r;
5360 // CHECK-51-NEXT: #pragma omp atomic compare capture
5361 // CHECK-51-NEXT: {
5362 // CHECK-51-NEXT: v = *x;
5363 // CHECK-51-NEXT: if (*x > e)
5364 // CHECK-51-NEXT: *x = e;
5365 // CHECK-51-NEXT: }
5366 // CHECK-51-NEXT: #pragma omp atomic compare capture
5367 // CHECK-51-NEXT: {
5368 // CHECK-51-NEXT: v = *x;
5369 // CHECK-51-NEXT: if (*x < e)
5370 // CHECK-51-NEXT: *x = e;
5371 // CHECK-51-NEXT: }
5372 // CHECK-51-NEXT: #pragma omp atomic compare capture
5373 // CHECK-51-NEXT: {
5374 // CHECK-51-NEXT: v = *x;
5375 // CHECK-51-NEXT: if (*x == e)
5376 // CHECK-51-NEXT: *x = d;
5377 // CHECK-51-NEXT: }
5378 // CHECK-51-NEXT: #pragma omp atomic compare capture
5379 // CHECK-51-NEXT: {
5380 // CHECK-51-NEXT: if (*x > e)
5381 // CHECK-51-NEXT: *x = e;
5382 // CHECK-51-NEXT: v = *x;
5383 // CHECK-51-NEXT: }
5384 // CHECK-51-NEXT: #pragma omp atomic compare capture
5385 // CHECK-51-NEXT: {
5386 // CHECK-51-NEXT: if (*x < e)
5387 // CHECK-51-NEXT: *x = e;
5388 // CHECK-51-NEXT: v = *x;
5389 // CHECK-51-NEXT: }
5390 // CHECK-51-NEXT: #pragma omp atomic compare capture
5391 // CHECK-51-NEXT: {
5392 // CHECK-51-NEXT: if (*x == e)
5393 // CHECK-51-NEXT: *x = d;
5394 // CHECK-51-NEXT: v = *x;
5395 // CHECK-51-NEXT: }
5396 // CHECK-51-NEXT: #pragma omp atomic compare capture
5397 // CHECK-51-NEXT: {
5398 // CHECK-51-NEXT: if (*x == e)
5399 // CHECK-51-NEXT: *x = d;
5400 // CHECK-51-NEXT: else
5401 // CHECK-51-NEXT: v = *x;
5402 // CHECK-51-NEXT: }
5403 // CHECK-51-NEXT: #pragma omp atomic compare capture
5404 // CHECK-51-NEXT: {
5405 // CHECK-51-NEXT: r = *x == e;
5406 // CHECK-51-NEXT: if (r)
5407 // CHECK-51-NEXT: *x = d;
5408 // CHECK-51-NEXT: }
5409 // CHECK-51-NEXT: #pragma omp atomic compare capture
5410 // CHECK-51-NEXT: {
5411 // CHECK-51-NEXT: r = *x == e;
5412 // CHECK-51-NEXT: if (r)
5413 // CHECK-51-NEXT: *x = d;
5414 // CHECK-51-NEXT: else
5415 // CHECK-51-NEXT: v = *x;
5416 // CHECK-51-NEXT: }
5417 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5418 // CHECK-51-NEXT: {
5419 // CHECK-51-NEXT: v = *x;
5420 // CHECK-51-NEXT: if (*x > e)
5421 // CHECK-51-NEXT: *x = e;
5422 // CHECK-51-NEXT: }
5423 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5424 // CHECK-51-NEXT: {
5425 // CHECK-51-NEXT: v = *x;
5426 // CHECK-51-NEXT: if (*x < e)
5427 // CHECK-51-NEXT: *x = e;
5428 // CHECK-51-NEXT: }
5429 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5430 // CHECK-51-NEXT: {
5431 // CHECK-51-NEXT: v = *x;
5432 // CHECK-51-NEXT: if (*x == e)
5433 // CHECK-51-NEXT: *x = d;
5434 // CHECK-51-NEXT: }
5435 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5436 // CHECK-51-NEXT: {
5437 // CHECK-51-NEXT: if (*x > e)
5438 // CHECK-51-NEXT: *x = e;
5439 // CHECK-51-NEXT: v = *x;
5440 // CHECK-51-NEXT: }
5441 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5442 // CHECK-51-NEXT: {
5443 // CHECK-51-NEXT: if (*x < e)
5444 // CHECK-51-NEXT: *x = e;
5445 // CHECK-51-NEXT: v = *x;
5446 // CHECK-51-NEXT: }
5447 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5448 // CHECK-51-NEXT: {
5449 // CHECK-51-NEXT: if (*x == e)
5450 // CHECK-51-NEXT: *x = d;
5451 // CHECK-51-NEXT: v = *x;
5452 // CHECK-51-NEXT: }
5453 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5454 // CHECK-51-NEXT: {
5455 // CHECK-51-NEXT: if (*x == e)
5456 // CHECK-51-NEXT: *x = d;
5457 // CHECK-51-NEXT: else
5458 // CHECK-51-NEXT: v = *x;
5459 // CHECK-51-NEXT: }
5460 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5461 // CHECK-51-NEXT: {
5462 // CHECK-51-NEXT: r = *x == e;
5463 // CHECK-51-NEXT: if (r)
5464 // CHECK-51-NEXT: *x = d;
5465 // CHECK-51-NEXT: }
5466 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5467 // CHECK-51-NEXT: {
5468 // CHECK-51-NEXT: r = *x == e;
5469 // CHECK-51-NEXT: if (r)
5470 // CHECK-51-NEXT: *x = d;
5471 // CHECK-51-NEXT: else
5472 // CHECK-51-NEXT: v = *x;
5473 // CHECK-51-NEXT: }
5474 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5475 // CHECK-51-NEXT: {
5476 // CHECK-51-NEXT: v = *x;
5477 // CHECK-51-NEXT: if (*x > e)
5478 // CHECK-51-NEXT: *x = e;
5479 // CHECK-51-NEXT: }
5480 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5481 // CHECK-51-NEXT: {
5482 // CHECK-51-NEXT: v = *x;
5483 // CHECK-51-NEXT: if (*x < e)
5484 // CHECK-51-NEXT: *x = e;
5485 // CHECK-51-NEXT: }
5486 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5487 // CHECK-51-NEXT: {
5488 // CHECK-51-NEXT: v = *x;
5489 // CHECK-51-NEXT: if (*x == e)
5490 // CHECK-51-NEXT: *x = d;
5491 // CHECK-51-NEXT: }
5492 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5493 // CHECK-51-NEXT: {
5494 // CHECK-51-NEXT: if (*x > e)
5495 // CHECK-51-NEXT: *x = e;
5496 // CHECK-51-NEXT: v = *x;
5497 // CHECK-51-NEXT: }
5498 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5499 // CHECK-51-NEXT: {
5500 // CHECK-51-NEXT: if (*x < e)
5501 // CHECK-51-NEXT: *x = e;
5502 // CHECK-51-NEXT: v = *x;
5503 // CHECK-51-NEXT: }
5504 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5505 // CHECK-51-NEXT: {
5506 // CHECK-51-NEXT: if (*x == e)
5507 // CHECK-51-NEXT: *x = d;
5508 // CHECK-51-NEXT: v = *x;
5509 // CHECK-51-NEXT: }
5510 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5511 // CHECK-51-NEXT: {
5512 // CHECK-51-NEXT: if (*x == e)
5513 // CHECK-51-NEXT: *x = d;
5514 // CHECK-51-NEXT: else
5515 // CHECK-51-NEXT: v = *x;
5516 // CHECK-51-NEXT: }
5517 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5518 // CHECK-51-NEXT: {
5519 // CHECK-51-NEXT: r = *x == e;
5520 // CHECK-51-NEXT: if (r)
5521 // CHECK-51-NEXT: *x = d;
5522 // CHECK-51-NEXT: }
5523 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5524 // CHECK-51-NEXT: {
5525 // CHECK-51-NEXT: r = *x == e;
5526 // CHECK-51-NEXT: if (r)
5527 // CHECK-51-NEXT: *x = d;
5528 // CHECK-51-NEXT: else
5529 // CHECK-51-NEXT: v = *x;
5530 // CHECK-51-NEXT: }
5531 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5532 // CHECK-51-NEXT: {
5533 // CHECK-51-NEXT: v = *x;
5534 // CHECK-51-NEXT: if (*x > e)
5535 // CHECK-51-NEXT: *x = e;
5536 // CHECK-51-NEXT: }
5537 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5538 // CHECK-51-NEXT: {
5539 // CHECK-51-NEXT: v = *x;
5540 // CHECK-51-NEXT: if (*x < e)
5541 // CHECK-51-NEXT: *x = e;
5542 // CHECK-51-NEXT: }
5543 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5544 // CHECK-51-NEXT: {
5545 // CHECK-51-NEXT: v = *x;
5546 // CHECK-51-NEXT: if (*x == e)
5547 // CHECK-51-NEXT: *x = d;
5548 // CHECK-51-NEXT: }
5549 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5550 // CHECK-51-NEXT: {
5551 // CHECK-51-NEXT: if (*x > e)
5552 // CHECK-51-NEXT: *x = e;
5553 // CHECK-51-NEXT: v = *x;
5554 // CHECK-51-NEXT: }
5555 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5556 // CHECK-51-NEXT: {
5557 // CHECK-51-NEXT: if (*x < e)
5558 // CHECK-51-NEXT: *x = e;
5559 // CHECK-51-NEXT: v = *x;
5560 // CHECK-51-NEXT: }
5561 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5562 // CHECK-51-NEXT: {
5563 // CHECK-51-NEXT: if (*x == e)
5564 // CHECK-51-NEXT: *x = d;
5565 // CHECK-51-NEXT: v = *x;
5566 // CHECK-51-NEXT: }
5567 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5568 // CHECK-51-NEXT: {
5569 // CHECK-51-NEXT: if (*x == e)
5570 // CHECK-51-NEXT: *x = d;
5571 // CHECK-51-NEXT: else
5572 // CHECK-51-NEXT: v = *x;
5573 // CHECK-51-NEXT: }
5574 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5575 // CHECK-51-NEXT: {
5576 // CHECK-51-NEXT: r = *x == e;
5577 // CHECK-51-NEXT: if (r)
5578 // CHECK-51-NEXT: *x = d;
5579 // CHECK-51-NEXT: }
5580 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5581 // CHECK-51-NEXT: {
5582 // CHECK-51-NEXT: r = *x == e;
5583 // CHECK-51-NEXT: if (r)
5584 // CHECK-51-NEXT: *x = d;
5585 // CHECK-51-NEXT: else
5586 // CHECK-51-NEXT: v = *x;
5587 // CHECK-51-NEXT: }
5588 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5589 // CHECK-51-NEXT: {
5590 // CHECK-51-NEXT: v = *x;
5591 // CHECK-51-NEXT: if (*x > e)
5592 // CHECK-51-NEXT: *x = e;
5593 // CHECK-51-NEXT: }
5594 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5595 // CHECK-51-NEXT: {
5596 // CHECK-51-NEXT: v = *x;
5597 // CHECK-51-NEXT: if (*x < e)
5598 // CHECK-51-NEXT: *x = e;
5599 // CHECK-51-NEXT: }
5600 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5601 // CHECK-51-NEXT: {
5602 // CHECK-51-NEXT: v = *x;
5603 // CHECK-51-NEXT: if (*x == e)
5604 // CHECK-51-NEXT: *x = d;
5605 // CHECK-51-NEXT: }
5606 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5607 // CHECK-51-NEXT: {
5608 // CHECK-51-NEXT: if (*x > e)
5609 // CHECK-51-NEXT: *x = e;
5610 // CHECK-51-NEXT: v = *x;
5611 // CHECK-51-NEXT: }
5612 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5613 // CHECK-51-NEXT: {
5614 // CHECK-51-NEXT: if (*x < e)
5615 // CHECK-51-NEXT: *x = e;
5616 // CHECK-51-NEXT: v = *x;
5617 // CHECK-51-NEXT: }
5618 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5619 // CHECK-51-NEXT: {
5620 // CHECK-51-NEXT: if (*x == e)
5621 // CHECK-51-NEXT: *x = d;
5622 // CHECK-51-NEXT: v = *x;
5623 // CHECK-51-NEXT: }
5624 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5625 // CHECK-51-NEXT: {
5626 // CHECK-51-NEXT: if (*x == e)
5627 // CHECK-51-NEXT: *x = d;
5628 // CHECK-51-NEXT: else
5629 // CHECK-51-NEXT: v = *x;
5630 // CHECK-51-NEXT: }
5631 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5632 // CHECK-51-NEXT: {
5633 // CHECK-51-NEXT: r = *x == e;
5634 // CHECK-51-NEXT: if (r)
5635 // CHECK-51-NEXT: *x = d;
5636 // CHECK-51-NEXT: }
5637 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5638 // CHECK-51-NEXT: {
5639 // CHECK-51-NEXT: r = *x == e;
5640 // CHECK-51-NEXT: if (r)
5641 // CHECK-51-NEXT: *x = d;
5642 // CHECK-51-NEXT: else
5643 // CHECK-51-NEXT: v = *x;
5644 // CHECK-51-NEXT: }
5645 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5646 // CHECK-51-NEXT: {
5647 // CHECK-51-NEXT: v = *x;
5648 // CHECK-51-NEXT: if (*x > e)
5649 // CHECK-51-NEXT: *x = e;
5650 // CHECK-51-NEXT: }
5651 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5652 // CHECK-51-NEXT: {
5653 // CHECK-51-NEXT: v = *x;
5654 // CHECK-51-NEXT: if (*x < e)
5655 // CHECK-51-NEXT: *x = e;
5656 // CHECK-51-NEXT: }
5657 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5658 // CHECK-51-NEXT: {
5659 // CHECK-51-NEXT: v = *x;
5660 // CHECK-51-NEXT: if (*x == e)
5661 // CHECK-51-NEXT: *x = d;
5662 // CHECK-51-NEXT: }
5663 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5664 // CHECK-51-NEXT: {
5665 // CHECK-51-NEXT: if (*x > e)
5666 // CHECK-51-NEXT: *x = e;
5667 // CHECK-51-NEXT: v = *x;
5668 // CHECK-51-NEXT: }
5669 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5670 // CHECK-51-NEXT: {
5671 // CHECK-51-NEXT: if (*x < e)
5672 // CHECK-51-NEXT: *x = e;
5673 // CHECK-51-NEXT: v = *x;
5674 // CHECK-51-NEXT: }
5675 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5676 // CHECK-51-NEXT: {
5677 // CHECK-51-NEXT: if (*x == e)
5678 // CHECK-51-NEXT: *x = d;
5679 // CHECK-51-NEXT: v = *x;
5680 // CHECK-51-NEXT: }
5681 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5682 // CHECK-51-NEXT: {
5683 // CHECK-51-NEXT: if (*x == e)
5684 // CHECK-51-NEXT: *x = d;
5685 // CHECK-51-NEXT: else
5686 // CHECK-51-NEXT: v = *x;
5687 // CHECK-51-NEXT: }
5688 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5689 // CHECK-51-NEXT: {
5690 // CHECK-51-NEXT: r = *x == e;
5691 // CHECK-51-NEXT: if (r)
5692 // CHECK-51-NEXT: *x = d;
5693 // CHECK-51-NEXT: }
5694 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5695 // CHECK-51-NEXT: {
5696 // CHECK-51-NEXT: r = *x == e;
5697 // CHECK-51-NEXT: if (r)
5698 // CHECK-51-NEXT: *x = d;
5699 // CHECK-51-NEXT: else
5700 // CHECK-51-NEXT: v = *x;
5701 // CHECK-51-NEXT: }
5702 // CHECK-51-NEXT: return v;
5703 // CHECK-51-NEXT: }
5704 // CHECK-51-NEXT: template<> float ffoo<float>(float *x, float e, float d) {
5705 // CHECK-51-NEXT: float v;
5706 // CHECK-51-NEXT: bool r;
5707 // CHECK-51-NEXT: #pragma omp atomic compare capture
5708 // CHECK-51-NEXT: {
5709 // CHECK-51-NEXT: v = *x;
5710 // CHECK-51-NEXT: if (*x > e)
5711 // CHECK-51-NEXT: *x = e;
5712 // CHECK-51-NEXT: }
5713 // CHECK-51-NEXT: #pragma omp atomic compare capture
5714 // CHECK-51-NEXT: {
5715 // CHECK-51-NEXT: v = *x;
5716 // CHECK-51-NEXT: if (*x < e)
5717 // CHECK-51-NEXT: *x = e;
5718 // CHECK-51-NEXT: }
5719 // CHECK-51-NEXT: #pragma omp atomic compare capture
5720 // CHECK-51-NEXT: {
5721 // CHECK-51-NEXT: v = *x;
5722 // CHECK-51-NEXT: if (*x == e)
5723 // CHECK-51-NEXT: *x = d;
5724 // CHECK-51-NEXT: }
5725 // CHECK-51-NEXT: #pragma omp atomic compare capture
5726 // CHECK-51-NEXT: {
5727 // CHECK-51-NEXT: if (*x > e)
5728 // CHECK-51-NEXT: *x = e;
5729 // CHECK-51-NEXT: v = *x;
5730 // CHECK-51-NEXT: }
5731 // CHECK-51-NEXT: #pragma omp atomic compare capture
5732 // CHECK-51-NEXT: {
5733 // CHECK-51-NEXT: if (*x < e)
5734 // CHECK-51-NEXT: *x = e;
5735 // CHECK-51-NEXT: v = *x;
5736 // CHECK-51-NEXT: }
5737 // CHECK-51-NEXT: #pragma omp atomic compare capture
5738 // CHECK-51-NEXT: {
5739 // CHECK-51-NEXT: if (*x == e)
5740 // CHECK-51-NEXT: *x = d;
5741 // CHECK-51-NEXT: v = *x;
5742 // CHECK-51-NEXT: }
5743 // CHECK-51-NEXT: #pragma omp atomic compare capture
5744 // CHECK-51-NEXT: {
5745 // CHECK-51-NEXT: if (*x == e)
5746 // CHECK-51-NEXT: *x = d;
5747 // CHECK-51-NEXT: else
5748 // CHECK-51-NEXT: v = *x;
5749 // CHECK-51-NEXT: }
5750 // CHECK-51-NEXT: #pragma omp atomic compare capture
5751 // CHECK-51-NEXT: {
5752 // CHECK-51-NEXT: r = *x == e;
5753 // CHECK-51-NEXT: if (r)
5754 // CHECK-51-NEXT: *x = d;
5755 // CHECK-51-NEXT: }
5756 // CHECK-51-NEXT: #pragma omp atomic compare capture
5757 // CHECK-51-NEXT: {
5758 // CHECK-51-NEXT: r = *x == e;
5759 // CHECK-51-NEXT: if (r)
5760 // CHECK-51-NEXT: *x = d;
5761 // CHECK-51-NEXT: else
5762 // CHECK-51-NEXT: v = *x;
5763 // CHECK-51-NEXT: }
5764 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5765 // CHECK-51-NEXT: {
5766 // CHECK-51-NEXT: v = *x;
5767 // CHECK-51-NEXT: if (*x > e)
5768 // CHECK-51-NEXT: *x = e;
5769 // CHECK-51-NEXT: }
5770 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5771 // CHECK-51-NEXT: {
5772 // CHECK-51-NEXT: v = *x;
5773 // CHECK-51-NEXT: if (*x < e)
5774 // CHECK-51-NEXT: *x = e;
5775 // CHECK-51-NEXT: }
5776 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5777 // CHECK-51-NEXT: {
5778 // CHECK-51-NEXT: v = *x;
5779 // CHECK-51-NEXT: if (*x == e)
5780 // CHECK-51-NEXT: *x = d;
5781 // CHECK-51-NEXT: }
5782 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5783 // CHECK-51-NEXT: {
5784 // CHECK-51-NEXT: if (*x > e)
5785 // CHECK-51-NEXT: *x = e;
5786 // CHECK-51-NEXT: v = *x;
5787 // CHECK-51-NEXT: }
5788 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5789 // CHECK-51-NEXT: {
5790 // CHECK-51-NEXT: if (*x < e)
5791 // CHECK-51-NEXT: *x = e;
5792 // CHECK-51-NEXT: v = *x;
5793 // CHECK-51-NEXT: }
5794 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5795 // CHECK-51-NEXT: {
5796 // CHECK-51-NEXT: if (*x == e)
5797 // CHECK-51-NEXT: *x = d;
5798 // CHECK-51-NEXT: v = *x;
5799 // CHECK-51-NEXT: }
5800 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5801 // CHECK-51-NEXT: {
5802 // CHECK-51-NEXT: if (*x == e)
5803 // CHECK-51-NEXT: *x = d;
5804 // CHECK-51-NEXT: else
5805 // CHECK-51-NEXT: v = *x;
5806 // CHECK-51-NEXT: }
5807 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5808 // CHECK-51-NEXT: {
5809 // CHECK-51-NEXT: r = *x == e;
5810 // CHECK-51-NEXT: if (r)
5811 // CHECK-51-NEXT: *x = d;
5812 // CHECK-51-NEXT: }
5813 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
5814 // CHECK-51-NEXT: {
5815 // CHECK-51-NEXT: r = *x == e;
5816 // CHECK-51-NEXT: if (r)
5817 // CHECK-51-NEXT: *x = d;
5818 // CHECK-51-NEXT: else
5819 // CHECK-51-NEXT: v = *x;
5820 // CHECK-51-NEXT: }
5821 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5822 // CHECK-51-NEXT: {
5823 // CHECK-51-NEXT: v = *x;
5824 // CHECK-51-NEXT: if (*x > e)
5825 // CHECK-51-NEXT: *x = e;
5826 // CHECK-51-NEXT: }
5827 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5828 // CHECK-51-NEXT: {
5829 // CHECK-51-NEXT: v = *x;
5830 // CHECK-51-NEXT: if (*x < e)
5831 // CHECK-51-NEXT: *x = e;
5832 // CHECK-51-NEXT: }
5833 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5834 // CHECK-51-NEXT: {
5835 // CHECK-51-NEXT: v = *x;
5836 // CHECK-51-NEXT: if (*x == e)
5837 // CHECK-51-NEXT: *x = d;
5838 // CHECK-51-NEXT: }
5839 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5840 // CHECK-51-NEXT: {
5841 // CHECK-51-NEXT: if (*x > e)
5842 // CHECK-51-NEXT: *x = e;
5843 // CHECK-51-NEXT: v = *x;
5844 // CHECK-51-NEXT: }
5845 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5846 // CHECK-51-NEXT: {
5847 // CHECK-51-NEXT: if (*x < e)
5848 // CHECK-51-NEXT: *x = e;
5849 // CHECK-51-NEXT: v = *x;
5850 // CHECK-51-NEXT: }
5851 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5852 // CHECK-51-NEXT: {
5853 // CHECK-51-NEXT: if (*x == e)
5854 // CHECK-51-NEXT: *x = d;
5855 // CHECK-51-NEXT: v = *x;
5856 // CHECK-51-NEXT: }
5857 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5858 // CHECK-51-NEXT: {
5859 // CHECK-51-NEXT: if (*x == e)
5860 // CHECK-51-NEXT: *x = d;
5861 // CHECK-51-NEXT: else
5862 // CHECK-51-NEXT: v = *x;
5863 // CHECK-51-NEXT: }
5864 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5865 // CHECK-51-NEXT: {
5866 // CHECK-51-NEXT: r = *x == e;
5867 // CHECK-51-NEXT: if (r)
5868 // CHECK-51-NEXT: *x = d;
5869 // CHECK-51-NEXT: }
5870 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
5871 // CHECK-51-NEXT: {
5872 // CHECK-51-NEXT: r = *x == e;
5873 // CHECK-51-NEXT: if (r)
5874 // CHECK-51-NEXT: *x = d;
5875 // CHECK-51-NEXT: else
5876 // CHECK-51-NEXT: v = *x;
5877 // CHECK-51-NEXT: }
5878 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5879 // CHECK-51-NEXT: {
5880 // CHECK-51-NEXT: v = *x;
5881 // CHECK-51-NEXT: if (*x > e)
5882 // CHECK-51-NEXT: *x = e;
5883 // CHECK-51-NEXT: }
5884 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5885 // CHECK-51-NEXT: {
5886 // CHECK-51-NEXT: v = *x;
5887 // CHECK-51-NEXT: if (*x < e)
5888 // CHECK-51-NEXT: *x = e;
5889 // CHECK-51-NEXT: }
5890 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5891 // CHECK-51-NEXT: {
5892 // CHECK-51-NEXT: v = *x;
5893 // CHECK-51-NEXT: if (*x == e)
5894 // CHECK-51-NEXT: *x = d;
5895 // CHECK-51-NEXT: }
5896 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5897 // CHECK-51-NEXT: {
5898 // CHECK-51-NEXT: if (*x > e)
5899 // CHECK-51-NEXT: *x = e;
5900 // CHECK-51-NEXT: v = *x;
5901 // CHECK-51-NEXT: }
5902 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5903 // CHECK-51-NEXT: {
5904 // CHECK-51-NEXT: if (*x < e)
5905 // CHECK-51-NEXT: *x = e;
5906 // CHECK-51-NEXT: v = *x;
5907 // CHECK-51-NEXT: }
5908 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5909 // CHECK-51-NEXT: {
5910 // CHECK-51-NEXT: if (*x == e)
5911 // CHECK-51-NEXT: *x = d;
5912 // CHECK-51-NEXT: v = *x;
5913 // CHECK-51-NEXT: }
5914 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5915 // CHECK-51-NEXT: {
5916 // CHECK-51-NEXT: if (*x == e)
5917 // CHECK-51-NEXT: *x = d;
5918 // CHECK-51-NEXT: else
5919 // CHECK-51-NEXT: v = *x;
5920 // CHECK-51-NEXT: }
5921 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5922 // CHECK-51-NEXT: {
5923 // CHECK-51-NEXT: r = *x == e;
5924 // CHECK-51-NEXT: if (r)
5925 // CHECK-51-NEXT: *x = d;
5926 // CHECK-51-NEXT: }
5927 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
5928 // CHECK-51-NEXT: {
5929 // CHECK-51-NEXT: r = *x == e;
5930 // CHECK-51-NEXT: if (r)
5931 // CHECK-51-NEXT: *x = d;
5932 // CHECK-51-NEXT: else
5933 // CHECK-51-NEXT: v = *x;
5934 // CHECK-51-NEXT: }
5935 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5936 // CHECK-51-NEXT: {
5937 // CHECK-51-NEXT: v = *x;
5938 // CHECK-51-NEXT: if (*x > e)
5939 // CHECK-51-NEXT: *x = e;
5940 // CHECK-51-NEXT: }
5941 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5942 // CHECK-51-NEXT: {
5943 // CHECK-51-NEXT: v = *x;
5944 // CHECK-51-NEXT: if (*x < e)
5945 // CHECK-51-NEXT: *x = e;
5946 // CHECK-51-NEXT: }
5947 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5948 // CHECK-51-NEXT: {
5949 // CHECK-51-NEXT: v = *x;
5950 // CHECK-51-NEXT: if (*x == e)
5951 // CHECK-51-NEXT: *x = d;
5952 // CHECK-51-NEXT: }
5953 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5954 // CHECK-51-NEXT: {
5955 // CHECK-51-NEXT: if (*x > e)
5956 // CHECK-51-NEXT: *x = e;
5957 // CHECK-51-NEXT: v = *x;
5958 // CHECK-51-NEXT: }
5959 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5960 // CHECK-51-NEXT: {
5961 // CHECK-51-NEXT: if (*x < e)
5962 // CHECK-51-NEXT: *x = e;
5963 // CHECK-51-NEXT: v = *x;
5964 // CHECK-51-NEXT: }
5965 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5966 // CHECK-51-NEXT: {
5967 // CHECK-51-NEXT: if (*x == e)
5968 // CHECK-51-NEXT: *x = d;
5969 // CHECK-51-NEXT: v = *x;
5970 // CHECK-51-NEXT: }
5971 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5972 // CHECK-51-NEXT: {
5973 // CHECK-51-NEXT: if (*x == e)
5974 // CHECK-51-NEXT: *x = d;
5975 // CHECK-51-NEXT: else
5976 // CHECK-51-NEXT: v = *x;
5977 // CHECK-51-NEXT: }
5978 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5979 // CHECK-51-NEXT: {
5980 // CHECK-51-NEXT: r = *x == e;
5981 // CHECK-51-NEXT: if (r)
5982 // CHECK-51-NEXT: *x = d;
5983 // CHECK-51-NEXT: }
5984 // CHECK-51-NEXT: #pragma omp atomic compare capture release
5985 // CHECK-51-NEXT: {
5986 // CHECK-51-NEXT: r = *x == e;
5987 // CHECK-51-NEXT: if (r)
5988 // CHECK-51-NEXT: *x = d;
5989 // CHECK-51-NEXT: else
5990 // CHECK-51-NEXT: v = *x;
5991 // CHECK-51-NEXT: }
5992 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5993 // CHECK-51-NEXT: {
5994 // CHECK-51-NEXT: v = *x;
5995 // CHECK-51-NEXT: if (*x > e)
5996 // CHECK-51-NEXT: *x = e;
5997 // CHECK-51-NEXT: }
5998 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
5999 // CHECK-51-NEXT: {
6000 // CHECK-51-NEXT: v = *x;
6001 // CHECK-51-NEXT: if (*x < e)
6002 // CHECK-51-NEXT: *x = e;
6003 // CHECK-51-NEXT: }
6004 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6005 // CHECK-51-NEXT: {
6006 // CHECK-51-NEXT: v = *x;
6007 // CHECK-51-NEXT: if (*x == e)
6008 // CHECK-51-NEXT: *x = d;
6009 // CHECK-51-NEXT: }
6010 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6011 // CHECK-51-NEXT: {
6012 // CHECK-51-NEXT: if (*x > e)
6013 // CHECK-51-NEXT: *x = e;
6014 // CHECK-51-NEXT: v = *x;
6015 // CHECK-51-NEXT: }
6016 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6017 // CHECK-51-NEXT: {
6018 // CHECK-51-NEXT: if (*x < e)
6019 // CHECK-51-NEXT: *x = e;
6020 // CHECK-51-NEXT: v = *x;
6021 // CHECK-51-NEXT: }
6022 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6023 // CHECK-51-NEXT: {
6024 // CHECK-51-NEXT: if (*x == e)
6025 // CHECK-51-NEXT: *x = d;
6026 // CHECK-51-NEXT: v = *x;
6027 // CHECK-51-NEXT: }
6028 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6029 // CHECK-51-NEXT: {
6030 // CHECK-51-NEXT: if (*x == e)
6031 // CHECK-51-NEXT: *x = d;
6032 // CHECK-51-NEXT: else
6033 // CHECK-51-NEXT: v = *x;
6034 // CHECK-51-NEXT: }
6035 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6036 // CHECK-51-NEXT: {
6037 // CHECK-51-NEXT: r = *x == e;
6038 // CHECK-51-NEXT: if (r)
6039 // CHECK-51-NEXT: *x = d;
6040 // CHECK-51-NEXT: }
6041 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6042 // CHECK-51-NEXT: {
6043 // CHECK-51-NEXT: r = *x == e;
6044 // CHECK-51-NEXT: if (r)
6045 // CHECK-51-NEXT: *x = d;
6046 // CHECK-51-NEXT: else
6047 // CHECK-51-NEXT: v = *x;
6048 // CHECK-51-NEXT: }
6049 // CHECK-51-NEXT: return v;
6050 // CHECK-51-NEXT: }
6051 // CHECK-51-NEXT: template<> double ffoo<double>(double *x, double e, double d) {
6052 // CHECK-51-NEXT: double v;
6053 // CHECK-51-NEXT: bool r;
6054 // CHECK-51-NEXT: #pragma omp atomic compare capture
6055 // CHECK-51-NEXT: {
6056 // CHECK-51-NEXT: v = *x;
6057 // CHECK-51-NEXT: if (*x > e)
6058 // CHECK-51-NEXT: *x = e;
6059 // CHECK-51-NEXT: }
6060 // CHECK-51-NEXT: #pragma omp atomic compare capture
6061 // CHECK-51-NEXT: {
6062 // CHECK-51-NEXT: v = *x;
6063 // CHECK-51-NEXT: if (*x < e)
6064 // CHECK-51-NEXT: *x = e;
6065 // CHECK-51-NEXT: }
6066 // CHECK-51-NEXT: #pragma omp atomic compare capture
6067 // CHECK-51-NEXT: {
6068 // CHECK-51-NEXT: v = *x;
6069 // CHECK-51-NEXT: if (*x == e)
6070 // CHECK-51-NEXT: *x = d;
6071 // CHECK-51-NEXT: }
6072 // CHECK-51-NEXT: #pragma omp atomic compare capture
6073 // CHECK-51-NEXT: {
6074 // CHECK-51-NEXT: if (*x > e)
6075 // CHECK-51-NEXT: *x = e;
6076 // CHECK-51-NEXT: v = *x;
6077 // CHECK-51-NEXT: }
6078 // CHECK-51-NEXT: #pragma omp atomic compare capture
6079 // CHECK-51-NEXT: {
6080 // CHECK-51-NEXT: if (*x < e)
6081 // CHECK-51-NEXT: *x = e;
6082 // CHECK-51-NEXT: v = *x;
6083 // CHECK-51-NEXT: }
6084 // CHECK-51-NEXT: #pragma omp atomic compare capture
6085 // CHECK-51-NEXT: {
6086 // CHECK-51-NEXT: if (*x == e)
6087 // CHECK-51-NEXT: *x = d;
6088 // CHECK-51-NEXT: v = *x;
6089 // CHECK-51-NEXT: }
6090 // CHECK-51-NEXT: #pragma omp atomic compare capture
6091 // CHECK-51-NEXT: {
6092 // CHECK-51-NEXT: if (*x == e)
6093 // CHECK-51-NEXT: *x = d;
6094 // CHECK-51-NEXT: else
6095 // CHECK-51-NEXT: v = *x;
6096 // CHECK-51-NEXT: }
6097 // CHECK-51-NEXT: #pragma omp atomic compare capture
6098 // CHECK-51-NEXT: {
6099 // CHECK-51-NEXT: r = *x == e;
6100 // CHECK-51-NEXT: if (r)
6101 // CHECK-51-NEXT: *x = d;
6102 // CHECK-51-NEXT: }
6103 // CHECK-51-NEXT: #pragma omp atomic compare capture
6104 // CHECK-51-NEXT: {
6105 // CHECK-51-NEXT: r = *x == e;
6106 // CHECK-51-NEXT: if (r)
6107 // CHECK-51-NEXT: *x = d;
6108 // CHECK-51-NEXT: else
6109 // CHECK-51-NEXT: v = *x;
6110 // CHECK-51-NEXT: }
6111 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6112 // CHECK-51-NEXT: {
6113 // CHECK-51-NEXT: v = *x;
6114 // CHECK-51-NEXT: if (*x > e)
6115 // CHECK-51-NEXT: *x = e;
6116 // CHECK-51-NEXT: }
6117 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6118 // CHECK-51-NEXT: {
6119 // CHECK-51-NEXT: v = *x;
6120 // CHECK-51-NEXT: if (*x < e)
6121 // CHECK-51-NEXT: *x = e;
6122 // CHECK-51-NEXT: }
6123 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6124 // CHECK-51-NEXT: {
6125 // CHECK-51-NEXT: v = *x;
6126 // CHECK-51-NEXT: if (*x == e)
6127 // CHECK-51-NEXT: *x = d;
6128 // CHECK-51-NEXT: }
6129 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6130 // CHECK-51-NEXT: {
6131 // CHECK-51-NEXT: if (*x > e)
6132 // CHECK-51-NEXT: *x = e;
6133 // CHECK-51-NEXT: v = *x;
6134 // CHECK-51-NEXT: }
6135 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6136 // CHECK-51-NEXT: {
6137 // CHECK-51-NEXT: if (*x < e)
6138 // CHECK-51-NEXT: *x = e;
6139 // CHECK-51-NEXT: v = *x;
6140 // CHECK-51-NEXT: }
6141 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6142 // CHECK-51-NEXT: {
6143 // CHECK-51-NEXT: if (*x == e)
6144 // CHECK-51-NEXT: *x = d;
6145 // CHECK-51-NEXT: v = *x;
6146 // CHECK-51-NEXT: }
6147 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6148 // CHECK-51-NEXT: {
6149 // CHECK-51-NEXT: if (*x == e)
6150 // CHECK-51-NEXT: *x = d;
6151 // CHECK-51-NEXT: else
6152 // CHECK-51-NEXT: v = *x;
6153 // CHECK-51-NEXT: }
6154 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6155 // CHECK-51-NEXT: {
6156 // CHECK-51-NEXT: r = *x == e;
6157 // CHECK-51-NEXT: if (r)
6158 // CHECK-51-NEXT: *x = d;
6159 // CHECK-51-NEXT: }
6160 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6161 // CHECK-51-NEXT: {
6162 // CHECK-51-NEXT: r = *x == e;
6163 // CHECK-51-NEXT: if (r)
6164 // CHECK-51-NEXT: *x = d;
6165 // CHECK-51-NEXT: else
6166 // CHECK-51-NEXT: v = *x;
6167 // CHECK-51-NEXT: }
6168 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6169 // CHECK-51-NEXT: {
6170 // CHECK-51-NEXT: v = *x;
6171 // CHECK-51-NEXT: if (*x > e)
6172 // CHECK-51-NEXT: *x = e;
6173 // CHECK-51-NEXT: }
6174 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6175 // CHECK-51-NEXT: {
6176 // CHECK-51-NEXT: v = *x;
6177 // CHECK-51-NEXT: if (*x < e)
6178 // CHECK-51-NEXT: *x = e;
6179 // CHECK-51-NEXT: }
6180 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6181 // CHECK-51-NEXT: {
6182 // CHECK-51-NEXT: v = *x;
6183 // CHECK-51-NEXT: if (*x == e)
6184 // CHECK-51-NEXT: *x = d;
6185 // CHECK-51-NEXT: }
6186 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6187 // CHECK-51-NEXT: {
6188 // CHECK-51-NEXT: if (*x > e)
6189 // CHECK-51-NEXT: *x = e;
6190 // CHECK-51-NEXT: v = *x;
6191 // CHECK-51-NEXT: }
6192 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6193 // CHECK-51-NEXT: {
6194 // CHECK-51-NEXT: if (*x < e)
6195 // CHECK-51-NEXT: *x = e;
6196 // CHECK-51-NEXT: v = *x;
6197 // CHECK-51-NEXT: }
6198 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6199 // CHECK-51-NEXT: {
6200 // CHECK-51-NEXT: if (*x == e)
6201 // CHECK-51-NEXT: *x = d;
6202 // CHECK-51-NEXT: v = *x;
6203 // CHECK-51-NEXT: }
6204 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6205 // CHECK-51-NEXT: {
6206 // CHECK-51-NEXT: if (*x == e)
6207 // CHECK-51-NEXT: *x = d;
6208 // CHECK-51-NEXT: else
6209 // CHECK-51-NEXT: v = *x;
6210 // CHECK-51-NEXT: }
6211 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6212 // CHECK-51-NEXT: {
6213 // CHECK-51-NEXT: r = *x == e;
6214 // CHECK-51-NEXT: if (r)
6215 // CHECK-51-NEXT: *x = d;
6216 // CHECK-51-NEXT: }
6217 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6218 // CHECK-51-NEXT: {
6219 // CHECK-51-NEXT: r = *x == e;
6220 // CHECK-51-NEXT: if (r)
6221 // CHECK-51-NEXT: *x = d;
6222 // CHECK-51-NEXT: else
6223 // CHECK-51-NEXT: v = *x;
6224 // CHECK-51-NEXT: }
6225 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6226 // CHECK-51-NEXT: {
6227 // CHECK-51-NEXT: v = *x;
6228 // CHECK-51-NEXT: if (*x > e)
6229 // CHECK-51-NEXT: *x = e;
6230 // CHECK-51-NEXT: }
6231 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6232 // CHECK-51-NEXT: {
6233 // CHECK-51-NEXT: v = *x;
6234 // CHECK-51-NEXT: if (*x < e)
6235 // CHECK-51-NEXT: *x = e;
6236 // CHECK-51-NEXT: }
6237 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6238 // CHECK-51-NEXT: {
6239 // CHECK-51-NEXT: v = *x;
6240 // CHECK-51-NEXT: if (*x == e)
6241 // CHECK-51-NEXT: *x = d;
6242 // CHECK-51-NEXT: }
6243 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6244 // CHECK-51-NEXT: {
6245 // CHECK-51-NEXT: if (*x > e)
6246 // CHECK-51-NEXT: *x = e;
6247 // CHECK-51-NEXT: v = *x;
6248 // CHECK-51-NEXT: }
6249 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6250 // CHECK-51-NEXT: {
6251 // CHECK-51-NEXT: if (*x < e)
6252 // CHECK-51-NEXT: *x = e;
6253 // CHECK-51-NEXT: v = *x;
6254 // CHECK-51-NEXT: }
6255 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6256 // CHECK-51-NEXT: {
6257 // CHECK-51-NEXT: if (*x == e)
6258 // CHECK-51-NEXT: *x = d;
6259 // CHECK-51-NEXT: v = *x;
6260 // CHECK-51-NEXT: }
6261 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6262 // CHECK-51-NEXT: {
6263 // CHECK-51-NEXT: if (*x == e)
6264 // CHECK-51-NEXT: *x = d;
6265 // CHECK-51-NEXT: else
6266 // CHECK-51-NEXT: v = *x;
6267 // CHECK-51-NEXT: }
6268 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6269 // CHECK-51-NEXT: {
6270 // CHECK-51-NEXT: r = *x == e;
6271 // CHECK-51-NEXT: if (r)
6272 // CHECK-51-NEXT: *x = d;
6273 // CHECK-51-NEXT: }
6274 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6275 // CHECK-51-NEXT: {
6276 // CHECK-51-NEXT: r = *x == e;
6277 // CHECK-51-NEXT: if (r)
6278 // CHECK-51-NEXT: *x = d;
6279 // CHECK-51-NEXT: else
6280 // CHECK-51-NEXT: v = *x;
6281 // CHECK-51-NEXT: }
6282 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6283 // CHECK-51-NEXT: {
6284 // CHECK-51-NEXT: v = *x;
6285 // CHECK-51-NEXT: if (*x > e)
6286 // CHECK-51-NEXT: *x = e;
6287 // CHECK-51-NEXT: }
6288 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6289 // CHECK-51-NEXT: {
6290 // CHECK-51-NEXT: v = *x;
6291 // CHECK-51-NEXT: if (*x < e)
6292 // CHECK-51-NEXT: *x = e;
6293 // CHECK-51-NEXT: }
6294 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6295 // CHECK-51-NEXT: {
6296 // CHECK-51-NEXT: v = *x;
6297 // CHECK-51-NEXT: if (*x == e)
6298 // CHECK-51-NEXT: *x = d;
6299 // CHECK-51-NEXT: }
6300 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6301 // CHECK-51-NEXT: {
6302 // CHECK-51-NEXT: if (*x > e)
6303 // CHECK-51-NEXT: *x = e;
6304 // CHECK-51-NEXT: v = *x;
6305 // CHECK-51-NEXT: }
6306 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6307 // CHECK-51-NEXT: {
6308 // CHECK-51-NEXT: if (*x < e)
6309 // CHECK-51-NEXT: *x = e;
6310 // CHECK-51-NEXT: v = *x;
6311 // CHECK-51-NEXT: }
6312 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6313 // CHECK-51-NEXT: {
6314 // CHECK-51-NEXT: if (*x == e)
6315 // CHECK-51-NEXT: *x = d;
6316 // CHECK-51-NEXT: v = *x;
6317 // CHECK-51-NEXT: }
6318 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6319 // CHECK-51-NEXT: {
6320 // CHECK-51-NEXT: if (*x == e)
6321 // CHECK-51-NEXT: *x = d;
6322 // CHECK-51-NEXT: else
6323 // CHECK-51-NEXT: v = *x;
6324 // CHECK-51-NEXT: }
6325 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6326 // CHECK-51-NEXT: {
6327 // CHECK-51-NEXT: r = *x == e;
6328 // CHECK-51-NEXT: if (r)
6329 // CHECK-51-NEXT: *x = d;
6330 // CHECK-51-NEXT: }
6331 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6332 // CHECK-51-NEXT: {
6333 // CHECK-51-NEXT: r = *x == e;
6334 // CHECK-51-NEXT: if (r)
6335 // CHECK-51-NEXT: *x = d;
6336 // CHECK-51-NEXT: else
6337 // CHECK-51-NEXT: v = *x;
6338 // CHECK-51-NEXT: }
6339 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6340 // CHECK-51-NEXT: {
6341 // CHECK-51-NEXT: v = *x;
6342 // CHECK-51-NEXT: if (*x > e)
6343 // CHECK-51-NEXT: *x = e;
6344 // CHECK-51-NEXT: }
6345 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6346 // CHECK-51-NEXT: {
6347 // CHECK-51-NEXT: v = *x;
6348 // CHECK-51-NEXT: if (*x < e)
6349 // CHECK-51-NEXT: *x = e;
6350 // CHECK-51-NEXT: }
6351 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6352 // CHECK-51-NEXT: {
6353 // CHECK-51-NEXT: v = *x;
6354 // CHECK-51-NEXT: if (*x == e)
6355 // CHECK-51-NEXT: *x = d;
6356 // CHECK-51-NEXT: }
6357 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6358 // CHECK-51-NEXT: {
6359 // CHECK-51-NEXT: if (*x > e)
6360 // CHECK-51-NEXT: *x = e;
6361 // CHECK-51-NEXT: v = *x;
6362 // CHECK-51-NEXT: }
6363 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6364 // CHECK-51-NEXT: {
6365 // CHECK-51-NEXT: if (*x < e)
6366 // CHECK-51-NEXT: *x = e;
6367 // CHECK-51-NEXT: v = *x;
6368 // CHECK-51-NEXT: }
6369 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6370 // CHECK-51-NEXT: {
6371 // CHECK-51-NEXT: if (*x == e)
6372 // CHECK-51-NEXT: *x = d;
6373 // CHECK-51-NEXT: v = *x;
6374 // CHECK-51-NEXT: }
6375 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6376 // CHECK-51-NEXT: {
6377 // CHECK-51-NEXT: if (*x == e)
6378 // CHECK-51-NEXT: *x = d;
6379 // CHECK-51-NEXT: else
6380 // CHECK-51-NEXT: v = *x;
6381 // CHECK-51-NEXT: }
6382 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6383 // CHECK-51-NEXT: {
6384 // CHECK-51-NEXT: r = *x == e;
6385 // CHECK-51-NEXT: if (r)
6386 // CHECK-51-NEXT: *x = d;
6387 // CHECK-51-NEXT: }
6388 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6389 // CHECK-51-NEXT: {
6390 // CHECK-51-NEXT: r = *x == e;
6391 // CHECK-51-NEXT: if (r)
6392 // CHECK-51-NEXT: *x = d;
6393 // CHECK-51-NEXT: else
6394 // CHECK-51-NEXT: v = *x;
6395 // CHECK-51-NEXT: }
6396 // CHECK-51-NEXT: return v;
6397 // CHECK-51-NEXT: }
6398 // CHECK-51-NEXT: void bbaarr() {
6399 // CHECK-51-NEXT: {
6400 // CHECK-51-NEXT: char x, e, d;
6401 // CHECK-51-NEXT: ffoo(&x, e, d);
6402 // CHECK-51-NEXT: }
6403 // CHECK-51-NEXT: {
6404 // CHECK-51-NEXT: unsigned char x, e, d;
6405 // CHECK-51-NEXT: ffoo(&x, e, d);
6406 // CHECK-51-NEXT: }
6407 // CHECK-51-NEXT: {
6408 // CHECK-51-NEXT: short x, e, d;
6409 // CHECK-51-NEXT: ffoo(&x, e, d);
6410 // CHECK-51-NEXT: }
6411 // CHECK-51-NEXT: {
6412 // CHECK-51-NEXT: unsigned short x, e, d;
6413 // CHECK-51-NEXT: ffoo(&x, e, d);
6414 // CHECK-51-NEXT: }
6415 // CHECK-51-NEXT: {
6416 // CHECK-51-NEXT: int x, e, d;
6417 // CHECK-51-NEXT: ffoo(&x, e, d);
6418 // CHECK-51-NEXT: }
6419 // CHECK-51-NEXT: {
6420 // CHECK-51-NEXT: unsigned int x, e, d;
6421 // CHECK-51-NEXT: ffoo(&x, e, d);
6422 // CHECK-51-NEXT: }
6423 // CHECK-51-NEXT: {
6424 // CHECK-51-NEXT: long x, e, d;
6425 // CHECK-51-NEXT: ffoo(&x, e, d);
6426 // CHECK-51-NEXT: }
6427 // CHECK-51-NEXT: {
6428 // CHECK-51-NEXT: unsigned long x, e, d;
6429 // CHECK-51-NEXT: ffoo(&x, e, d);
6430 // CHECK-51-NEXT: }
6431 // CHECK-51-NEXT: {
6432 // CHECK-51-NEXT: long long x, e, d;
6433 // CHECK-51-NEXT: ffoo(&x, e, d);
6434 // CHECK-51-NEXT: }
6435 // CHECK-51-NEXT: {
6436 // CHECK-51-NEXT: unsigned long long x, e, d;
6437 // CHECK-51-NEXT: ffoo(&x, e, d);
6438 // CHECK-51-NEXT: }
6439 // CHECK-51-NEXT: {
6440 // CHECK-51-NEXT: float x, e, d;
6441 // CHECK-51-NEXT: ffoo(&x, e, d);
6442 // CHECK-51-NEXT: }
6443 // CHECK-51-NEXT: {
6444 // CHECK-51-NEXT: double x, e, d;
6445 // CHECK-51-NEXT: ffoo(&x, e, d);
6446 // CHECK-51-NEXT: }
6447 // CHECK-51-NEXT: }
6448 
xevd()6449 int xevd() {
6450   int x, v, e, d;
6451 
6452 #pragma omp atomic compare capture
6453   {
6454     v = x;
6455     x = x > e ? e : x;
6456   }
6457 #pragma omp atomic compare capture
6458   {
6459     v = x;
6460     x = x < e ? e : x;
6461   }
6462 #pragma omp atomic compare capture
6463   {
6464     v = x;
6465     x = x == e ? d : x;
6466   }
6467 #pragma omp atomic compare capture
6468   {
6469     x = x > e ? e : x;
6470     v = x;
6471   }
6472 #pragma omp atomic compare capture
6473   {
6474     x = x < e ? e : x;
6475     v = x;
6476   }
6477 #pragma omp atomic compare capture
6478   {
6479     x = x == e ? d : x;
6480     v = x;
6481   }
6482 
6483 #pragma omp atomic compare capture acq_rel
6484   {
6485     v = x;
6486     x = x > e ? e : x;
6487   }
6488 #pragma omp atomic compare capture acq_rel
6489   {
6490     v = x;
6491     x = x < e ? e : x;
6492   }
6493 #pragma omp atomic compare capture acq_rel
6494   {
6495     v = x;
6496     x = x == e ? d : x;
6497   }
6498 #pragma omp atomic compare capture acq_rel
6499   {
6500     x = x > e ? e : x;
6501     v = x;
6502   }
6503 #pragma omp atomic compare capture acq_rel
6504   {
6505     x = x < e ? e : x;
6506     v = x;
6507   }
6508 #pragma omp atomic compare capture acq_rel
6509   {
6510     x = x == e ? d : x;
6511     v = x;
6512   }
6513 
6514 #pragma omp atomic compare capture acquire
6515   {
6516     v = x;
6517     x = x > e ? e : x;
6518   }
6519 #pragma omp atomic compare capture acquire
6520   {
6521     v = x;
6522     x = x < e ? e : x;
6523   }
6524 #pragma omp atomic compare capture acquire
6525   {
6526     v = x;
6527     x = x == e ? d : x;
6528   }
6529 #pragma omp atomic compare capture acquire
6530   {
6531     x = x > e ? e : x;
6532     v = x;
6533   }
6534 #pragma omp atomic compare capture acquire
6535   {
6536     x = x < e ? e : x;
6537     v = x;
6538   }
6539 #pragma omp atomic compare capture acquire
6540   {
6541     x = x == e ? d : x;
6542     v = x;
6543   }
6544 
6545 #pragma omp atomic compare capture relaxed
6546   {
6547     v = x;
6548     x = x > e ? e : x;
6549   }
6550 #pragma omp atomic compare capture relaxed
6551   {
6552     v = x;
6553     x = x < e ? e : x;
6554   }
6555 #pragma omp atomic compare capture relaxed
6556   {
6557     v = x;
6558     x = x == e ? d : x;
6559   }
6560 #pragma omp atomic compare capture relaxed
6561   {
6562     x = x > e ? e : x;
6563     v = x;
6564   }
6565 #pragma omp atomic compare capture relaxed
6566   {
6567     x = x < e ? e : x;
6568     v = x;
6569   }
6570 #pragma omp atomic compare capture relaxed
6571   {
6572     x = x == e ? d : x;
6573     v = x;
6574   }
6575 
6576 #pragma omp atomic compare capture release
6577   {
6578     v = x;
6579     x = x > e ? e : x;
6580   }
6581 #pragma omp atomic compare capture release
6582   {
6583     v = x;
6584     x = x < e ? e : x;
6585   }
6586 #pragma omp atomic compare capture release
6587   {
6588     v = x;
6589     x = x == e ? d : x;
6590   }
6591 #pragma omp atomic compare capture release
6592   {
6593     x = x > e ? e : x;
6594     v = x;
6595   }
6596 #pragma omp atomic compare capture release
6597   {
6598     x = x < e ? e : x;
6599     v = x;
6600   }
6601 #pragma omp atomic compare capture release
6602   {
6603     x = x == e ? d : x;
6604     v = x;
6605   }
6606 
6607 #pragma omp atomic compare capture seq_cst
6608   {
6609     v = x;
6610     x = x > e ? e : x;
6611   }
6612 #pragma omp atomic compare capture seq_cst
6613   {
6614     v = x;
6615     x = x < e ? e : x;
6616   }
6617 #pragma omp atomic compare capture seq_cst
6618   {
6619     v = x;
6620     x = x == e ? d : x;
6621   }
6622 #pragma omp atomic compare capture seq_cst
6623   {
6624     x = x > e ? e : x;
6625     v = x;
6626   }
6627 #pragma omp atomic compare capture seq_cst
6628   {
6629     x = x < e ? e : x;
6630     v = x;
6631   }
6632 #pragma omp atomic compare capture seq_cst
6633   {
6634     x = x == e ? d : x;
6635     v = x;
6636   }
6637 
6638   return v;
6639 }
6640 
6641 // CHECK-51: int xevd() {
6642 // CHECK-51-NEXT: int x, v, e, d;
6643 // CHECK-51-NEXT: #pragma omp atomic compare capture
6644 // CHECK-51-NEXT: {
6645 // CHECK-51-NEXT: v = x;
6646 // CHECK-51-NEXT: x = x > e ? e : x;
6647 // CHECK-51-NEXT: }
6648 // CHECK-51-NEXT: #pragma omp atomic compare capture
6649 // CHECK-51-NEXT: {
6650 // CHECK-51-NEXT: v = x;
6651 // CHECK-51-NEXT: x = x < e ? e : x;
6652 // CHECK-51-NEXT: }
6653 // CHECK-51-NEXT: #pragma omp atomic compare capture
6654 // CHECK-51-NEXT: {
6655 // CHECK-51-NEXT: v = x;
6656 // CHECK-51-NEXT: x = x == e ? d : x;
6657 // CHECK-51-NEXT: }
6658 // CHECK-51-NEXT: #pragma omp atomic compare capture
6659 // CHECK-51-NEXT: {
6660 // CHECK-51-NEXT: x = x > e ? e : x;
6661 // CHECK-51-NEXT: v = x;
6662 // CHECK-51-NEXT: }
6663 // CHECK-51-NEXT: #pragma omp atomic compare capture
6664 // CHECK-51-NEXT: {
6665 // CHECK-51-NEXT: x = x < e ? e : x;
6666 // CHECK-51-NEXT: v = x;
6667 // CHECK-51-NEXT: }
6668 // CHECK-51-NEXT: #pragma omp atomic compare capture
6669 // CHECK-51-NEXT: {
6670 // CHECK-51-NEXT: x = x == e ? d : x;
6671 // CHECK-51-NEXT: v = x;
6672 // CHECK-51-NEXT: }
6673 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6674 // CHECK-51-NEXT: {
6675 // CHECK-51-NEXT: v = x;
6676 // CHECK-51-NEXT: x = x > e ? e : x;
6677 // CHECK-51-NEXT: }
6678 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6679 // CHECK-51-NEXT: {
6680 // CHECK-51-NEXT: v = x;
6681 // CHECK-51-NEXT: x = x < e ? e : x;
6682 // CHECK-51-NEXT: }
6683 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6684 // CHECK-51-NEXT: {
6685 // CHECK-51-NEXT: v = x;
6686 // CHECK-51-NEXT: x = x == e ? d : x;
6687 // CHECK-51-NEXT: }
6688 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6689 // CHECK-51-NEXT: {
6690 // CHECK-51-NEXT: x = x > e ? e : x;
6691 // CHECK-51-NEXT: v = x;
6692 // CHECK-51-NEXT: }
6693 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6694 // CHECK-51-NEXT: {
6695 // CHECK-51-NEXT: x = x < e ? e : x;
6696 // CHECK-51-NEXT: v = x;
6697 // CHECK-51-NEXT: }
6698 // CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel
6699 // CHECK-51-NEXT: {
6700 // CHECK-51-NEXT: x = x == e ? d : x;
6701 // CHECK-51-NEXT: v = x;
6702 // CHECK-51-NEXT: }
6703 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6704 // CHECK-51-NEXT: {
6705 // CHECK-51-NEXT: v = x;
6706 // CHECK-51-NEXT: x = x > e ? e : x;
6707 // CHECK-51-NEXT: }
6708 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6709 // CHECK-51-NEXT: {
6710 // CHECK-51-NEXT: v = x;
6711 // CHECK-51-NEXT: x = x < e ? e : x;
6712 // CHECK-51-NEXT: }
6713 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6714 // CHECK-51-NEXT: {
6715 // CHECK-51-NEXT: v = x;
6716 // CHECK-51-NEXT: x = x == e ? d : x;
6717 // CHECK-51-NEXT: }
6718 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6719 // CHECK-51-NEXT: {
6720 // CHECK-51-NEXT: x = x > e ? e : x;
6721 // CHECK-51-NEXT: v = x;
6722 // CHECK-51-NEXT: }
6723 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6724 // CHECK-51-NEXT: {
6725 // CHECK-51-NEXT: x = x < e ? e : x;
6726 // CHECK-51-NEXT: v = x;
6727 // CHECK-51-NEXT: }
6728 // CHECK-51-NEXT: #pragma omp atomic compare capture acquire
6729 // CHECK-51-NEXT: {
6730 // CHECK-51-NEXT: x = x == e ? d : x;
6731 // CHECK-51-NEXT: v = x;
6732 // CHECK-51-NEXT: }
6733 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6734 // CHECK-51-NEXT: {
6735 // CHECK-51-NEXT: v = x;
6736 // CHECK-51-NEXT: x = x > e ? e : x;
6737 // CHECK-51-NEXT: }
6738 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6739 // CHECK-51-NEXT: {
6740 // CHECK-51-NEXT: v = x;
6741 // CHECK-51-NEXT: x = x < e ? e : x;
6742 // CHECK-51-NEXT: }
6743 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6744 // CHECK-51-NEXT: {
6745 // CHECK-51-NEXT: v = x;
6746 // CHECK-51-NEXT: x = x == e ? d : x;
6747 // CHECK-51-NEXT: }
6748 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6749 // CHECK-51-NEXT: {
6750 // CHECK-51-NEXT: x = x > e ? e : x;
6751 // CHECK-51-NEXT: v = x;
6752 // CHECK-51-NEXT: }
6753 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6754 // CHECK-51-NEXT: {
6755 // CHECK-51-NEXT: x = x < e ? e : x;
6756 // CHECK-51-NEXT: v = x;
6757 // CHECK-51-NEXT: }
6758 // CHECK-51-NEXT: #pragma omp atomic compare capture relaxed
6759 // CHECK-51-NEXT: {
6760 // CHECK-51-NEXT: x = x == e ? d : x;
6761 // CHECK-51-NEXT: v = x;
6762 // CHECK-51-NEXT: }
6763 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6764 // CHECK-51-NEXT: {
6765 // CHECK-51-NEXT: v = x;
6766 // CHECK-51-NEXT: x = x > e ? e : x;
6767 // CHECK-51-NEXT: }
6768 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6769 // CHECK-51-NEXT: {
6770 // CHECK-51-NEXT: v = x;
6771 // CHECK-51-NEXT: x = x < e ? e : x;
6772 // CHECK-51-NEXT: }
6773 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6774 // CHECK-51-NEXT: {
6775 // CHECK-51-NEXT: v = x;
6776 // CHECK-51-NEXT: x = x == e ? d : x;
6777 // CHECK-51-NEXT: }
6778 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6779 // CHECK-51-NEXT: {
6780 // CHECK-51-NEXT: x = x > e ? e : x;
6781 // CHECK-51-NEXT: v = x;
6782 // CHECK-51-NEXT: }
6783 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6784 // CHECK-51-NEXT: {
6785 // CHECK-51-NEXT: x = x < e ? e : x;
6786 // CHECK-51-NEXT: v = x;
6787 // CHECK-51-NEXT: }
6788 // CHECK-51-NEXT: #pragma omp atomic compare capture release
6789 // CHECK-51-NEXT: {
6790 // CHECK-51-NEXT: x = x == e ? d : x;
6791 // CHECK-51-NEXT: v = x;
6792 // CHECK-51-NEXT: }
6793 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6794 // CHECK-51-NEXT: {
6795 // CHECK-51-NEXT: v = x;
6796 // CHECK-51-NEXT: x = x > e ? e : x;
6797 // CHECK-51-NEXT: }
6798 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6799 // CHECK-51-NEXT: {
6800 // CHECK-51-NEXT: v = x;
6801 // CHECK-51-NEXT: x = x < e ? e : x;
6802 // CHECK-51-NEXT: }
6803 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6804 // CHECK-51-NEXT: {
6805 // CHECK-51-NEXT: v = x;
6806 // CHECK-51-NEXT: x = x == e ? d : x;
6807 // CHECK-51-NEXT: }
6808 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6809 // CHECK-51-NEXT: {
6810 // CHECK-51-NEXT: x = x > e ? e : x;
6811 // CHECK-51-NEXT: v = x;
6812 // CHECK-51-NEXT: }
6813 // CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst
6814 // CHECK-51-NEXT: {
6815 // CHECK-51-NEXT: x = x < e ? e : x;
6816 // CHECK-51-NEXT: v = x;
6817 // CHECK-51-NEXT: }
6818 // CHECK-51-NEXT: pragma omp atomic compare capture seq_cst
6819 // CHECK-51-NEXT: {
6820 // CHECK-51-NEXT: x = x == e ? d : x;
6821 // CHECK-51-NEXT: v = x;
6822 // CHECK-51-NEXT: }
6823 // CHECK-51-NEXT: return v;
6824 // CHECK-51-NEXT: }
6825 
6826 #endif
6827 
6828 #endif
6829