6829 lines · cpp
1// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 -ast-print %s | FileCheck %s2// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s3// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s4 5// RUN: %clang_cc1 -verify -fopenmp-simd -fopenmp-version=50 -ast-print %s | FileCheck %s6// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s7// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck %s8 9// RUN: %clang_cc1 -DOMP51 -verify -fopenmp -ast-print %s | FileCheck --check-prefixes=CHECK,CHECK-51 %s10// RUN: %clang_cc1 -DOMP51 -fopenmp -x c++ -std=c++11 -emit-pch -o %t %s11// RUN: %clang_cc1 -DOMP51 -fopenmp -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck --check-prefixes=CHECK,CHECK-51 %s12 13// RUN: %clang_cc1 -DOMP51 -verify -fopenmp-simd -ast-print %s | FileCheck --check-prefixes=CHECK,CHECK-51 %s14// RUN: %clang_cc1 -DOMP51 -fopenmp-simd -x c++ -std=c++11 -emit-pch -o %t %s15// RUN: %clang_cc1 -DOMP51 -fopenmp-simd -std=c++11 -include-pch %t -verify %s -ast-print | FileCheck --check-prefixes=CHECK,CHECK-51 %s16// expected-no-diagnostics17 18#ifndef HEADER19#define HEADER20 21template <class T>22T foo(T argc) {23 T v = T();24 T c = T();25 T b = T();26 T a = T();27#pragma omp atomic28 a++;29#pragma omp atomic read30 a = argc;31#pragma omp atomic write32 a = argc + argc;33#pragma omp atomic update34 a = a + argc;35#pragma omp atomic capture36 a = b++;37#pragma omp atomic capture38 {39 a = b;40 b++;41 }42#ifdef OMP5143#pragma omp atomic compare44 { a = a > b ? b : a; }45#pragma omp atomic compare46 { a = a < b ? b : a; }47#pragma omp atomic compare48 { a = a == b ? c : a; }49#pragma omp atomic compare capture50 { v = a; if (a > b) { a = b; } }51#pragma omp atomic compare capture52 { v = a; if (a < b) { a = b; } }53#pragma omp atomic compare capture54 { v = a == b; if (v) a = c; }55#endif56#pragma omp atomic seq_cst57 a++;58#pragma omp atomic read seq_cst59 a = argc;60#pragma omp atomic seq_cst write61 a = argc + argc;62#pragma omp atomic update seq_cst63 a = a + argc;64#pragma omp atomic seq_cst capture65 a = b++;66#pragma omp atomic capture seq_cst67 {68 a = b;69 b++;70 }71#ifdef OMP5172#pragma omp atomic compare seq_cst73 { a = a > b ? b : a; }74#pragma omp atomic seq_cst compare75 { a = a < b ? b : a; }76#pragma omp atomic compare seq_cst77 { a = a == b ? c : a; }78#pragma omp atomic compare capture seq_cst79 { v = a; if (a > b) { a = b; } }80#pragma omp atomic compare seq_cst capture81 { v = a; if (a < b) { a = b; } }82#pragma omp atomic compare capture seq_cst83 { v = a == b; if (v) a = c; }84#endif85#pragma omp atomic86 a++;87#pragma omp atomic read88 a = argc;89#pragma omp atomic write90 a = argc + argc;91#pragma omp atomic update92 a = a + argc;93#pragma omp atomic acq_rel capture94 a = b++;95#pragma omp atomic capture acq_rel96 {97 a = b;98 b++;99 }100#ifdef OMP51101#pragma omp atomic compare acq_rel102 { a = a > b ? b : a; }103#pragma omp atomic acq_rel compare104 { a = a < b ? b : a; }105#pragma omp atomic compare acq_rel106 { a = a == b ? c : a; }107#pragma omp atomic compare capture acq_rel108 { v = a; if (a > b) { a = b; } }109#pragma omp atomic compare acq_rel capture110 { v = a; if (a < b) { a = b; } }111#pragma omp atomic compare capture acq_rel112 { v = a == b; if (v) a = c; }113#endif114#pragma omp atomic115 a++;116#pragma omp atomic read acquire117 a = argc;118#pragma omp atomic write119 a = argc + argc;120#pragma omp atomic update121 a = a + argc;122#pragma omp atomic acquire capture123 a = b++;124#pragma omp atomic capture acquire125 {126 a = b;127 b++;128 }129#ifdef OMP51130#pragma omp atomic compare acquire131 { a = a > b ? b : a; }132#pragma omp atomic acquire compare133 { a = a < b ? b : a; }134#pragma omp atomic compare acquire135 { a = a == b ? c : a; }136#pragma omp atomic compare capture acquire137 { v = a; if (a > b) { a = b; } }138#pragma omp atomic compare acquire capture139 { v = a; if (a < b) { a = b; } }140#pragma omp atomic compare capture acquire141 { v = a == b; if (v) a = c; }142#endif143#pragma omp atomic release144 a++;145#pragma omp atomic read146 a = argc;147#pragma omp atomic release write148 a = argc + argc;149#pragma omp atomic update release150 a = a + argc;151#pragma omp atomic release capture152 a = b++;153#pragma omp atomic capture release154 {155 a = b;156 b++;157 }158#ifdef OMP51159#pragma omp atomic compare release160 { a = a > b ? b : a; }161#pragma omp atomic release compare162 { a = a < b ? b : a; }163#pragma omp atomic compare release164 { a = a == b ? c : a; }165#pragma omp atomic compare capture release166 { v = a; if (a > b) { a = b; } }167#pragma omp atomic compare release capture168 { v = a; if (a < b) { a = b; } }169#pragma omp atomic compare capture release170 { v = a == b; if (v) a = c; }171#endif172#pragma omp atomic relaxed173 a++;174#pragma omp atomic read175 a = argc;176#pragma omp atomic relaxed write177 a = argc + argc;178#pragma omp atomic update relaxed179 a = a + argc;180#pragma omp atomic relaxed capture181 a = b++;182#pragma omp atomic capture relaxed183 {184 a = b;185 b++;186 }187#ifdef OMP51188#pragma omp atomic compare relaxed189 { a = a > b ? b : a; }190#pragma omp atomic relaxed compare191 { a = a < b ? b : a; }192#pragma omp atomic compare relaxed193 { a = a == b ? c : a; }194#pragma omp atomic compare capture relaxed195 { v = a; if (a > b) { a = b; } }196#pragma omp atomic compare relaxed capture197 { v = a; if (a < b) { a = b; } }198#pragma omp atomic compare capture relaxed199 { v = a == b; if (v) a = c; }200#endif201#pragma omp atomic hint(6)202 a++;203#pragma omp atomic read hint(6)204 a = argc;205#pragma omp atomic hint(6) write206 a = argc + argc;207#pragma omp atomic update hint(6)208 a = a + argc;209#pragma omp atomic hint(6) capture210 a = b++;211#pragma omp atomic capture hint(6)212 {213 a = b;214 b++;215 }216#ifdef OMP51217#pragma omp atomic compare hint(6)218 { a = a > b ? b : a; }219#pragma omp atomic hint(6) compare220 { 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) capture226 { 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 weak236 { if(a == b) { a = c; } }237#endif238 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 read245// CHECK-NEXT: a = argc;246// CHECK-NEXT: #pragma omp atomic write247// CHECK-NEXT: a = argc + argc;248// CHECK-NEXT: #pragma omp atomic update249// CHECK-NEXT: a = a + argc;250// CHECK-NEXT: #pragma omp atomic capture251// CHECK-NEXT: a = b++;252// CHECK-NEXT: #pragma omp atomic capture253// CHECK-NEXT: {254// CHECK-NEXT: a = b;255// CHECK-NEXT: b++;256// CHECK-NEXT: }257// CHECK-51-NEXT: #pragma omp atomic compare258// CHECK-51-NEXT: {259// CHECK-51-NEXT: a = a > b ? b : a;260// CHECK-51-NEXT: }261// CHECK-51-NEXT: #pragma omp atomic compare262// CHECK-51-NEXT: {263// CHECK-51-NEXT: a = a < b ? b : a;264// CHECK-51-NEXT: }265// CHECK-51-NEXT: #pragma omp atomic compare266// CHECK-51-NEXT: {267// CHECK-51-NEXT: a = a == b ? c : a;268// CHECK-51-NEXT: }269// CHECK-51-NEXT: #pragma omp atomic compare capture270// 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 capture277// 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 capture284// 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_cst290// CHECK-NEXT: a++;291// CHECK-NEXT: #pragma omp atomic read seq_cst292// CHECK-NEXT: a = argc;293// CHECK-NEXT: #pragma omp atomic seq_cst write294// CHECK-NEXT: a = argc + argc;295// CHECK-NEXT: #pragma omp atomic update seq_cst296// CHECK-NEXT: a = a + argc;297// CHECK-NEXT: #pragma omp atomic seq_cst capture298// CHECK-NEXT: a = b++;299// CHECK-NEXT: #pragma omp atomic capture seq_cst300// CHECK-NEXT: {301// CHECK-NEXT: a = b;302// CHECK-NEXT: b++;303// CHECK-NEXT: }304// CHECK-51-NEXT: #pragma omp atomic compare seq_cst305// 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 compare309// 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_cst313// 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_cst317// 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 capture324// 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_cst331// 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 atomic337// CHECK-NEXT: a++;338// CHECK-NEXT: #pragma omp atomic read339// CHECK-NEXT: a = argc;340// CHECK-NEXT: #pragma omp atomic write341// CHECK-NEXT: a = argc + argc;342// CHECK-NEXT: #pragma omp atomic update343// CHECK-NEXT: a = a + argc;344// CHECK-NEXT: #pragma omp atomic acq_rel capture345// CHECK-NEXT: a = b++;346// CHECK-NEXT: #pragma omp atomic capture acq_rel347// CHECK-NEXT: {348// CHECK-NEXT: a = b;349// CHECK-NEXT: b++;350// CHECK-NEXT: }351// CHECK-51-NEXT: #pragma omp atomic compare acq_rel352// 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 compare356// 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_rel360// 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_rel364// 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 capture371// 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_rel378// 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 atomic384// CHECK-NEXT: a++;385// CHECK-NEXT: #pragma omp atomic read acquire386// CHECK-NEXT: a = argc;387// CHECK-NEXT: #pragma omp atomic write388// CHECK-NEXT: a = argc + argc;389// CHECK-NEXT: #pragma omp atomic update390// CHECK-NEXT: a = a + argc;391// CHECK-NEXT: #pragma omp atomic acquire capture392// CHECK-NEXT: a = b++;393// CHECK-NEXT: #pragma omp atomic capture acquire394// CHECK-NEXT: {395// CHECK-NEXT: a = b;396// CHECK-NEXT: b++;397// CHECK-NEXT: }398// CHECK-51-NEXT: #pragma omp atomic compare acquire399// CHECK-51-NEXT: {400// CHECK-51-NEXT: a = a > b ? b : a;401// CHECK-51-NEXT: }402// CHECK-51-NEXT: #pragma omp atomic acquire compare403// CHECK-51-NEXT: {404// CHECK-51-NEXT: a = a < b ? b : a;405// CHECK-51-NEXT: }406// CHECK-51-NEXT: #pragma omp atomic compare acquire407// 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 acquire411// 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 capture418// 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 acquire425// 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 release431// CHECK-NEXT: a++;432// CHECK-NEXT: #pragma omp atomic read433// CHECK-NEXT: a = argc;434// CHECK-NEXT: #pragma omp atomic release write435// CHECK-NEXT: a = argc + argc;436// CHECK-NEXT: #pragma omp atomic update release437// CHECK-NEXT: a = a + argc;438// CHECK-NEXT: #pragma omp atomic release capture439// CHECK-NEXT: a = b++;440// CHECK-NEXT: #pragma omp atomic capture release441// CHECK-NEXT: {442// CHECK-NEXT: a = b;443// CHECK-NEXT: b++;444// CHECK-NEXT: }445// CHECK-51-NEXT: #pragma omp atomic compare release446// CHECK-51-NEXT: {447// CHECK-51-NEXT: a = a > b ? b : a;448// CHECK-51-NEXT: }449// CHECK-51-NEXT: #pragma omp atomic release compare450// CHECK-51-NEXT: {451// CHECK-51-NEXT: a = a < b ? b : a;452// CHECK-51-NEXT: }453// CHECK-51-NEXT: #pragma omp atomic compare release454// 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 release458// 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 capture465// 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 release472// 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 relaxed478// CHECK-NEXT: a++;479// CHECK-NEXT: #pragma omp atomic read480// CHECK-NEXT: a = argc;481// CHECK-NEXT: #pragma omp atomic relaxed write482// CHECK-NEXT: a = argc + argc;483// CHECK-NEXT: #pragma omp atomic update relaxed484// CHECK-NEXT: a = a + argc;485// CHECK-NEXT: #pragma omp atomic relaxed capture486// CHECK-NEXT: a = b++;487// CHECK-NEXT: #pragma omp atomic capture relaxed488// CHECK-NEXT: {489// CHECK-NEXT: a = b;490// CHECK-NEXT: b++;491// CHECK-NEXT: }492// CHECK-51-NEXT: #pragma omp atomic compare relaxed493// CHECK-51-NEXT: {494// CHECK-51-NEXT: a = a > b ? b : a;495// CHECK-51-NEXT: }496// CHECK-51-NEXT: #pragma omp atomic relaxed compare497// CHECK-51-NEXT: {498// CHECK-51-NEXT: a = a < b ? b : a;499// CHECK-51-NEXT: }500// CHECK-51-NEXT: #pragma omp atomic compare relaxed501// 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 relaxed505// 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 capture512// 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 relaxed519// 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) write529// 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) capture533// 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) compare544// 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) capture559// 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 atomic573// CHECK-NEXT: a++;574// CHECK-NEXT: #pragma omp atomic read575// CHECK-NEXT: a = argc;576// CHECK-NEXT: #pragma omp atomic write577// CHECK-NEXT: a = argc + argc;578// CHECK-NEXT: #pragma omp atomic update579// CHECK-NEXT: a = a + argc;580// CHECK-NEXT: #pragma omp atomic capture581// CHECK-NEXT: a = b++;582// CHECK-NEXT: #pragma omp atomic capture583// CHECK-NEXT: {584// CHECK-NEXT: a = b;585// CHECK-NEXT: b++;586// CHECK-NEXT: }587// CHECK-51-NEXT: #pragma omp atomic compare588// CHECK-51-NEXT: {589// CHECK-51-NEXT: a = a > b ? b : a;590// CHECK-51-NEXT: }591// CHECK-51-NEXT: #pragma omp atomic compare592// CHECK-51-NEXT: {593// CHECK-51-NEXT: a = a < b ? b : a;594// CHECK-51-NEXT: }595// CHECK-51-NEXT: #pragma omp atomic compare596// CHECK-51-NEXT: {597// CHECK-51-NEXT: a = a == b ? c : a;598// CHECK-51-NEXT: }599// CHECK-51-NEXT: #pragma omp atomic compare capture600// 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 capture607// 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 capture614// 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_cst620// CHECK-NEXT: a++;621// CHECK-NEXT: #pragma omp atomic read seq_cst622// CHECK-NEXT: a = argc;623// CHECK-NEXT: #pragma omp atomic seq_cst write624// CHECK-NEXT: a = argc + argc;625// CHECK-NEXT: #pragma omp atomic update seq_cst626// CHECK-NEXT: a = a + argc;627// CHECK-NEXT: #pragma omp atomic seq_cst capture628// CHECK-NEXT: a = b++;629// CHECK-NEXT: #pragma omp atomic capture seq_cst630// CHECK-NEXT: {631// CHECK-NEXT: a = b;632// CHECK-NEXT: b++;633// CHECK-NEXT: }634// CHECK-51-NEXT: #pragma omp atomic compare seq_cst635// 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 compare639// 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_cst643// 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_cst647// 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 capture654// 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_cst661// 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 atomic667// CHECK-NEXT: a++;668// CHECK-NEXT: #pragma omp atomic read669// CHECK-NEXT: a = argc;670// CHECK-NEXT: #pragma omp atomic write671// CHECK-NEXT: a = argc + argc;672// CHECK-NEXT: #pragma omp atomic update673// CHECK-NEXT: a = a + argc;674// CHECK-NEXT: #pragma omp atomic acq_rel capture675// CHECK-NEXT: a = b++;676// CHECK-NEXT: #pragma omp atomic capture acq_rel677// CHECK-NEXT: {678// CHECK-NEXT: a = b;679// CHECK-NEXT: b++;680// CHECK-NEXT: }681// CHECK-51-NEXT: #pragma omp atomic compare acq_rel682// 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 compare686// 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_rel690// 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_rel694// 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 capture701// 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_rel708// 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 atomic714// CHECK-NEXT: a++;715// CHECK-NEXT: #pragma omp atomic read acquire716// CHECK-NEXT: a = argc;717// CHECK-NEXT: #pragma omp atomic write718// CHECK-NEXT: a = argc + argc;719// CHECK-NEXT: #pragma omp atomic update720// CHECK-NEXT: a = a + argc;721// CHECK-NEXT: #pragma omp atomic acquire capture722// CHECK-NEXT: a = b++;723// CHECK-NEXT: #pragma omp atomic capture acquire724// CHECK-NEXT: {725// CHECK-NEXT: a = b;726// CHECK-NEXT: b++;727// CHECK-NEXT: }728// CHECK-51-NEXT: #pragma omp atomic compare acquire729// CHECK-51-NEXT: {730// CHECK-51-NEXT: a = a > b ? b : a;731// CHECK-51-NEXT: }732// CHECK-51-NEXT: #pragma omp atomic acquire compare733// CHECK-51-NEXT: {734// CHECK-51-NEXT: a = a < b ? b : a;735// CHECK-51-NEXT: }736// CHECK-51-NEXT: #pragma omp atomic compare acquire737// 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 acquire741// 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 capture748// 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 acquire755// 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 release761// CHECK-NEXT: a++;762// CHECK-NEXT: #pragma omp atomic read763// CHECK-NEXT: a = argc;764// CHECK-NEXT: #pragma omp atomic release write765// CHECK-NEXT: a = argc + argc;766// CHECK-NEXT: #pragma omp atomic update release767// CHECK-NEXT: a = a + argc;768// CHECK-NEXT: #pragma omp atomic release capture769// CHECK-NEXT: a = b++;770// CHECK-NEXT: #pragma omp atomic capture release771// CHECK-NEXT: {772// CHECK-NEXT: a = b;773// CHECK-NEXT: b++;774// CHECK-NEXT: }775// CHECK-51-NEXT: #pragma omp atomic compare release776// CHECK-51-NEXT: {777// CHECK-51-NEXT: a = a > b ? b : a;778// CHECK-51-NEXT: }779// CHECK-51-NEXT: #pragma omp atomic release compare780// CHECK-51-NEXT: {781// CHECK-51-NEXT: a = a < b ? b : a;782// CHECK-51-NEXT: }783// CHECK-51-NEXT: #pragma omp atomic compare release784// 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 release788// 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 capture795// 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 release802// 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 relaxed808// CHECK-NEXT: a++;809// CHECK-NEXT: #pragma omp atomic read810// CHECK-NEXT: a = argc;811// CHECK-NEXT: #pragma omp atomic relaxed write812// CHECK-NEXT: a = argc + argc;813// CHECK-NEXT: #pragma omp atomic update relaxed814// CHECK-NEXT: a = a + argc;815// CHECK-NEXT: #pragma omp atomic relaxed capture816// CHECK-NEXT: a = b++;817// CHECK-NEXT: #pragma omp atomic capture relaxed818// CHECK-NEXT: {819// CHECK-NEXT: a = b;820// CHECK-NEXT: b++;821// CHECK-NEXT: }822// CHECK-51-NEXT: #pragma omp atomic compare relaxed823// CHECK-51-NEXT: {824// CHECK-51-NEXT: a = a > b ? b : a;825// CHECK-51-NEXT: }826// CHECK-51-NEXT: #pragma omp atomic relaxed compare827// CHECK-51-NEXT: {828// CHECK-51-NEXT: a = a < b ? b : a;829// CHECK-51-NEXT: }830// CHECK-51-NEXT: #pragma omp atomic compare relaxed831// 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 relaxed835// 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 capture842// 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 relaxed849// 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) write859// 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) capture863// 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) compare874// 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) capture889// 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 902int 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 atomic909 a++;910#pragma omp atomic read911 a = argc;912#pragma omp atomic write913 a = argc + argc;914#pragma omp atomic update915 a = a + argc;916#pragma omp atomic capture917 a = b++;918#pragma omp atomic capture919 {920 a = b;921 b++;922 }923#ifdef OMP51924#pragma omp atomic compare925 { a = a > b ? b : a; }926#pragma omp atomic compare927 { a = a < b ? b : a; }928#pragma omp atomic compare929 { a = a == b ? c : a; }930#pragma omp atomic compare capture931 { v = a; if (a > b) { a = b; } }932#pragma omp atomic compare capture933 { v = a; if (a < b) { a = b; } }934#pragma omp atomic compare capture935 { v = a == b; if (v) a = c; }936#endif937#pragma omp atomic seq_cst938 a++;939#pragma omp atomic read seq_cst940 a = argc;941#pragma omp atomic seq_cst write942 a = argc + argc;943#pragma omp atomic update seq_cst944 a = a + argc;945#pragma omp atomic seq_cst capture946 a = b++;947#pragma omp atomic capture seq_cst948 {949 a = b;950 b++;951 }952#ifdef OMP51953#pragma omp atomic compare seq_cst954 { a = a > b ? b : a; }955#pragma omp atomic seq_cst compare956 { a = a < b ? b : a; }957#pragma omp atomic compare seq_cst958 { a = a == b ? c : a; }959#pragma omp atomic compare capture seq_cst960 { v = a; if (a > b) { a = b; } }961#pragma omp atomic compare seq_cst capture962 { v = a; if (a < b) { a = b; } }963#pragma omp atomic compare capture seq_cst964 { v = a == b; if (v) a = c; }965#endif966#pragma omp atomic967 a++;968#pragma omp atomic read969 a = argc;970#pragma omp atomic write971 a = argc + argc;972#pragma omp atomic update973 a = a + argc;974#pragma omp atomic acq_rel capture975 a = b++;976#pragma omp atomic capture acq_rel977 {978 a = b;979 b++;980 }981#ifdef OMP51982#pragma omp atomic compare acq_rel983 { a = a > b ? b : a; }984#pragma omp atomic acq_rel compare985 { a = a < b ? b : a; }986#pragma omp atomic compare acq_rel987 { a = a == b ? c : a; }988#pragma omp atomic compare capture acq_rel989 { v = a; if (a > b) { a = b; } }990#pragma omp atomic compare acq_rel capture991 { v = a; if (a < b) { a = b; } }992#pragma omp atomic compare capture acq_rel993 { v = a == b; if (v) a = c; }994#endif995#pragma omp atomic996 a++;997#pragma omp atomic read acquire998 a = argc;999#pragma omp atomic write1000 a = argc + argc;1001#pragma omp atomic update1002 a = a + argc;1003#pragma omp atomic acquire capture1004 a = b++;1005#pragma omp atomic capture acquire1006 {1007 a = b;1008 b++;1009 }1010#ifdef OMP511011#pragma omp atomic compare acquire1012 { a = a > b ? b : a; }1013#pragma omp atomic acquire compare1014 { a = a < b ? b : a; }1015#pragma omp atomic compare acquire1016 { a = a == b ? c : a; }1017#pragma omp atomic compare capture acquire1018 { v = a; if (a > b) { a = b; } }1019#pragma omp atomic compare acquire capture1020 { v = a; if (a < b) { a = b; } }1021#pragma omp atomic compare capture acquire1022 { v = a == b; if (v) a = c; }1023#endif1024#pragma omp atomic release1025 a++;1026#pragma omp atomic read1027 a = argc;1028#pragma omp atomic release write1029 a = argc + argc;1030#pragma omp atomic update release1031 a = a + argc;1032#pragma omp atomic release capture1033 a = b++;1034#pragma omp atomic capture release1035 {1036 a = b;1037 b++;1038 }1039#ifdef OMP511040#pragma omp atomic compare release1041 { a = a > b ? b : a; }1042#pragma omp atomic release compare1043 { a = a < b ? b : a; }1044#pragma omp atomic compare release1045 { a = a == b ? c : a; }1046#pragma omp atomic compare capture release1047 { v = a; if (a > b) { a = b; } }1048#pragma omp atomic compare release capture1049 { v = a; if (a < b) { a = b; } }1050#pragma omp atomic compare capture release1051 { v = a == b; if (v) a = c; }1052#endif1053#pragma omp atomic relaxed1054 a++;1055#pragma omp atomic read1056 a = argc;1057#pragma omp atomic relaxed write1058 a = argc + argc;1059#pragma omp atomic update relaxed1060 a = a + argc;1061#pragma omp atomic relaxed capture1062 a = b++;1063#pragma omp atomic capture relaxed1064 {1065 a = b;1066 b++;1067 }1068#ifdef OMP511069#pragma omp atomic compare relaxed1070 { a = a > b ? b : a; }1071#pragma omp atomic relaxed compare1072 { a = a < b ? b : a; }1073#pragma omp atomic compare relaxed1074 { a = a == b ? c : a; }1075#pragma omp atomic compare capture relaxed1076 { v = a; if (a > b) { a = b; } }1077#pragma omp atomic compare relaxed capture1078 { v = a; if (a < b) { a = b; } }1079#pragma omp atomic compare capture relaxed1080 { v = a == b; if (v) a = c; }1081#endif1082#pragma omp atomic hint(6)1083 a++;1084#pragma omp atomic read hint(6)1085 a = argc;1086#pragma omp atomic hint(6) write1087 a = argc + argc;1088#pragma omp atomic update hint(6)1089 a = a + argc;1090#pragma omp atomic hint(6) capture1091 a = b++;1092#pragma omp atomic capture hint(6)1093 {1094 a = b;1095 b++;1096 }1097#ifdef OMP511098#pragma omp atomic compare hint(6)1099 { a = a > b ? b : a; }1100#pragma omp atomic hint(6) compare1101 { 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) capture1107 { 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 weak1117 if(a == b) { a = c; }1118#endif1119 // CHECK-NEXT: #pragma omp atomic1120 // CHECK-NEXT: a++;1121 // CHECK-NEXT: #pragma omp atomic read1122 // CHECK-NEXT: a = argc;1123 // CHECK-NEXT: #pragma omp atomic write1124 // CHECK-NEXT: a = argc + argc;1125 // CHECK-NEXT: #pragma omp atomic update1126 // CHECK-NEXT: a = a + argc;1127 // CHECK-NEXT: #pragma omp atomic capture1128 // CHECK-NEXT: a = b++;1129 // CHECK-NEXT: #pragma omp atomic capture1130 // CHECK-NEXT: {1131 // CHECK-NEXT: a = b;1132 // CHECK-NEXT: b++;1133 // CHECK-NEXT: }1134 // CHECK-51-NEXT: #pragma omp atomic compare1135 // CHECK-51-NEXT: {1136 // CHECK-51-NEXT: a = a > b ? b : a;1137 // CHECK-51-NEXT: }1138 // CHECK-51-NEXT: #pragma omp atomic compare1139 // CHECK-51-NEXT: {1140 // CHECK-51-NEXT: a = a < b ? b : a;1141 // CHECK-51-NEXT: }1142 // CHECK-51-NEXT: #pragma omp atomic compare1143 // CHECK-51-NEXT: {1144 // CHECK-51-NEXT: a = a == b ? c : a;1145 // CHECK-51-NEXT: }1146 // CHECK-51-NEXT: #pragma omp atomic compare capture1147 // 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 capture1154 // 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 capture1161 // 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_cst1167 // CHECK-NEXT: a++;1168 // CHECK-NEXT: #pragma omp atomic read seq_cst1169 // CHECK-NEXT: a = argc;1170 // CHECK-NEXT: #pragma omp atomic seq_cst write1171 // CHECK-NEXT: a = argc + argc;1172 // CHECK-NEXT: #pragma omp atomic update seq_cst1173 // CHECK-NEXT: a = a + argc;1174 // CHECK-NEXT: #pragma omp atomic seq_cst capture1175 // CHECK-NEXT: a = b++;1176 // CHECK-NEXT: #pragma omp atomic capture seq_cst1177 // CHECK-NEXT: {1178 // CHECK-NEXT: a = b;1179 // CHECK-NEXT: b++;1180 // CHECK-NEXT: }1181 // CHECK-51-NEXT: #pragma omp atomic compare seq_cst1182 // 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 compare1186 // 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_cst1190 // 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_cst1194 // 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 capture1201 // 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_cst1208 // 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 atomic1214 // CHECK-NEXT: a++;1215 // CHECK-NEXT: #pragma omp atomic read1216 // CHECK-NEXT: a = argc;1217 // CHECK-NEXT: #pragma omp atomic write1218 // CHECK-NEXT: a = argc + argc;1219 // CHECK-NEXT: #pragma omp atomic update1220 // CHECK-NEXT: a = a + argc;1221 // CHECK-NEXT: #pragma omp atomic acq_rel capture1222 // CHECK-NEXT: a = b++;1223 // CHECK-NEXT: #pragma omp atomic capture acq_rel1224 // CHECK-NEXT: {1225 // CHECK-NEXT: a = b;1226 // CHECK-NEXT: b++;1227 // CHECK-NEXT: }1228 // CHECK-51-NEXT: #pragma omp atomic compare acq_rel1229 // 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 compare1233 // 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_rel1237 // 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_rel1241 // 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 capture1248 // 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_rel1255 // 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 atomic1261 // CHECK-NEXT: a++;1262 // CHECK-NEXT: #pragma omp atomic read acquire1263 // CHECK-NEXT: a = argc;1264 // CHECK-NEXT: #pragma omp atomic write1265 // CHECK-NEXT: a = argc + argc;1266 // CHECK-NEXT: #pragma omp atomic update1267 // CHECK-NEXT: a = a + argc;1268 // CHECK-NEXT: #pragma omp atomic acquire capture1269 // CHECK-NEXT: a = b++;1270 // CHECK-NEXT: #pragma omp atomic capture acquire1271 // CHECK-NEXT: {1272 // CHECK-NEXT: a = b;1273 // CHECK-NEXT: b++;1274 // CHECK-NEXT: }1275 // CHECK-51-NEXT: #pragma omp atomic compare acquire1276 // CHECK-51-NEXT: {1277 // CHECK-51-NEXT: a = a > b ? b : a;1278 // CHECK-51-NEXT: }1279 // CHECK-51-NEXT: #pragma omp atomic acquire compare1280 // CHECK-51-NEXT: {1281 // CHECK-51-NEXT: a = a < b ? b : a;1282 // CHECK-51-NEXT: }1283 // CHECK-51-NEXT: #pragma omp atomic compare acquire1284 // 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 acquire1288 // 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 capture1295 // 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 acquire1302 // 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 release1308 // CHECK-NEXT: a++;1309 // CHECK-NEXT: #pragma omp atomic read1310 // CHECK-NEXT: a = argc;1311 // CHECK-NEXT: #pragma omp atomic release write1312 // CHECK-NEXT: a = argc + argc;1313 // CHECK-NEXT: #pragma omp atomic update release1314 // CHECK-NEXT: a = a + argc;1315 // CHECK-NEXT: #pragma omp atomic release capture1316 // CHECK-NEXT: a = b++;1317 // CHECK-NEXT: #pragma omp atomic capture release1318 // CHECK-NEXT: {1319 // CHECK-NEXT: a = b;1320 // CHECK-NEXT: b++;1321 // CHECK-NEXT: }1322 // CHECK-51-NEXT: #pragma omp atomic compare release1323 // CHECK-51-NEXT: {1324 // CHECK-51-NEXT: a = a > b ? b : a;1325 // CHECK-51-NEXT: }1326 // CHECK-51-NEXT: #pragma omp atomic release compare1327 // CHECK-51-NEXT: {1328 // CHECK-51-NEXT: a = a < b ? b : a;1329 // CHECK-51-NEXT: }1330 // CHECK-51-NEXT: #pragma omp atomic compare release1331 // 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 release1335 // 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 capture1342 // 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 release1349 // 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 relaxed1355 // CHECK-NEXT: a++;1356 // CHECK-NEXT: #pragma omp atomic read1357 // CHECK-NEXT: a = argc;1358 // CHECK-NEXT: #pragma omp atomic relaxed write1359 // CHECK-NEXT: a = argc + argc;1360 // CHECK-NEXT: #pragma omp atomic update relaxed1361 // CHECK-NEXT: a = a + argc;1362 // CHECK-NEXT: #pragma omp atomic relaxed capture1363 // CHECK-NEXT: a = b++;1364 // CHECK-NEXT: #pragma omp atomic capture relaxed1365 // CHECK-NEXT: {1366 // CHECK-NEXT: a = b;1367 // CHECK-NEXT: b++;1368 // CHECK-NEXT: }1369 // CHECK-51-NEXT: #pragma omp atomic compare relaxed1370 // CHECK-51-NEXT: {1371 // CHECK-51-NEXT: a = a > b ? b : a;1372 // CHECK-51-NEXT: }1373 // CHECK-51-NEXT: #pragma omp atomic relaxed compare1374 // CHECK-51-NEXT: {1375 // CHECK-51-NEXT: a = a < b ? b : a;1376 // CHECK-51-NEXT: }1377 // CHECK-51-NEXT: #pragma omp atomic compare relaxed1378 // 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 relaxed1382 // 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 capture1389 // 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 relaxed1396 // 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) write1406 // 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) capture1410 // 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) compare1421 // 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) capture1436 // 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 weak1461 // 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 OMP511469 1470template <typename Ty> Ty ffoo(Ty *x, Ty e, Ty d) {1471 Ty v;1472 bool r;1473 1474#pragma omp atomic compare capture1475 {1476 v = *x;1477 if (*x > e)1478 *x = e;1479 }1480#pragma omp atomic compare capture1481 {1482 v = *x;1483 if (*x < e)1484 *x = e;1485 }1486#pragma omp atomic compare capture1487 {1488 v = *x;1489 if (*x == e)1490 *x = d;1491 }1492#pragma omp atomic compare capture1493 {1494 if (*x > e)1495 *x = e;1496 v = *x;1497 }1498#pragma omp atomic compare capture1499 {1500 if (*x < e)1501 *x = e;1502 v = *x;1503 }1504#pragma omp atomic compare capture1505 {1506 if (*x == e)1507 *x = d;1508 v = *x;1509 }1510#pragma omp atomic compare capture1511 {1512 if (*x == e)1513 *x = d;1514 else1515 v = *x;1516 }1517#pragma omp atomic compare capture1518 {1519 r = *x == e;1520 if (r)1521 *x = d;1522 }1523#pragma omp atomic compare capture1524 {1525 r = *x == e;1526 if (r)1527 *x = d;1528 else1529 v = *x;1530 }1531 1532#pragma omp atomic compare capture acq_rel1533 {1534 v = *x;1535 if (*x > e)1536 *x = e;1537 }1538#pragma omp atomic compare capture acq_rel1539 {1540 v = *x;1541 if (*x < e)1542 *x = e;1543 }1544#pragma omp atomic compare capture acq_rel1545 {1546 v = *x;1547 if (*x == e)1548 *x = d;1549 }1550#pragma omp atomic compare capture acq_rel1551 {1552 if (*x > e)1553 *x = e;1554 v = *x;1555 }1556#pragma omp atomic compare capture acq_rel1557 {1558 if (*x < e)1559 *x = e;1560 v = *x;1561 }1562#pragma omp atomic compare capture acq_rel1563 {1564 if (*x == e)1565 *x = d;1566 v = *x;1567 }1568#pragma omp atomic compare capture acq_rel1569 {1570 if (*x == e)1571 *x = d;1572 else1573 v = *x;1574 }1575#pragma omp atomic compare capture acq_rel1576 {1577 r = *x == e;1578 if (r)1579 *x = d;1580 }1581#pragma omp atomic compare capture acq_rel1582 {1583 r = *x == e;1584 if (r)1585 *x = d;1586 else1587 v = *x;1588 }1589 1590#pragma omp atomic compare capture acquire1591 {1592 v = *x;1593 if (*x > e)1594 *x = e;1595 }1596#pragma omp atomic compare capture acquire1597 {1598 v = *x;1599 if (*x < e)1600 *x = e;1601 }1602#pragma omp atomic compare capture acquire1603 {1604 v = *x;1605 if (*x == e)1606 *x = d;1607 }1608#pragma omp atomic compare capture acquire1609 {1610 if (*x > e)1611 *x = e;1612 v = *x;1613 }1614#pragma omp atomic compare capture acquire1615 {1616 if (*x < e)1617 *x = e;1618 v = *x;1619 }1620#pragma omp atomic compare capture acquire1621 {1622 if (*x == e)1623 *x = d;1624 v = *x;1625 }1626#pragma omp atomic compare capture acquire1627 {1628 if (*x == e)1629 *x = d;1630 else1631 v = *x;1632 }1633#pragma omp atomic compare capture acquire1634 {1635 r = *x == e;1636 if (r)1637 *x = d;1638 }1639#pragma omp atomic compare capture acquire1640 {1641 r = *x == e;1642 if (r)1643 *x = d;1644 else1645 v = *x;1646 }1647 1648#pragma omp atomic compare capture relaxed1649 {1650 v = *x;1651 if (*x > e)1652 *x = e;1653 }1654#pragma omp atomic compare capture relaxed1655 {1656 v = *x;1657 if (*x < e)1658 *x = e;1659 }1660#pragma omp atomic compare capture relaxed1661 {1662 v = *x;1663 if (*x == e)1664 *x = d;1665 }1666#pragma omp atomic compare capture relaxed1667 {1668 if (*x > e)1669 *x = e;1670 v = *x;1671 }1672#pragma omp atomic compare capture relaxed1673 {1674 if (*x < e)1675 *x = e;1676 v = *x;1677 }1678#pragma omp atomic compare capture relaxed1679 {1680 if (*x == e)1681 *x = d;1682 v = *x;1683 }1684#pragma omp atomic compare capture relaxed1685 {1686 if (*x == e)1687 *x = d;1688 else1689 v = *x;1690 }1691#pragma omp atomic compare capture relaxed1692 {1693 r = *x == e;1694 if (r)1695 *x = d;1696 }1697#pragma omp atomic compare capture relaxed1698 {1699 r = *x == e;1700 if (r)1701 *x = d;1702 else1703 v = *x;1704 }1705 1706#pragma omp atomic compare capture release1707 {1708 v = *x;1709 if (*x > e)1710 *x = e;1711 }1712#pragma omp atomic compare capture release1713 {1714 v = *x;1715 if (*x < e)1716 *x = e;1717 }1718#pragma omp atomic compare capture release1719 {1720 v = *x;1721 if (*x == e)1722 *x = d;1723 }1724#pragma omp atomic compare capture release1725 {1726 if (*x > e)1727 *x = e;1728 v = *x;1729 }1730#pragma omp atomic compare capture release1731 {1732 if (*x < e)1733 *x = e;1734 v = *x;1735 }1736#pragma omp atomic compare capture release1737 {1738 if (*x == e)1739 *x = d;1740 v = *x;1741 }1742#pragma omp atomic compare capture release1743 {1744 if (*x == e)1745 *x = d;1746 else1747 v = *x;1748 }1749#pragma omp atomic compare capture release1750 {1751 r = *x == e;1752 if (r)1753 *x = d;1754 }1755#pragma omp atomic compare capture release1756 {1757 r = *x == e;1758 if (r)1759 *x = d;1760 else1761 v = *x;1762 }1763 1764#pragma omp atomic compare capture seq_cst1765 {1766 v = *x;1767 if (*x > e)1768 *x = e;1769 }1770#pragma omp atomic compare capture seq_cst1771 {1772 v = *x;1773 if (*x < e)1774 *x = e;1775 }1776#pragma omp atomic compare capture seq_cst1777 {1778 v = *x;1779 if (*x == e)1780 *x = d;1781 }1782#pragma omp atomic compare capture seq_cst1783 {1784 if (*x > e)1785 *x = e;1786 v = *x;1787 }1788#pragma omp atomic compare capture seq_cst1789 {1790 if (*x < e)1791 *x = e;1792 v = *x;1793 }1794#pragma omp atomic compare capture seq_cst1795 {1796 if (*x == e)1797 *x = d;1798 v = *x;1799 }1800#pragma omp atomic compare capture seq_cst1801 {1802 if (*x == e)1803 *x = d;1804 else1805 v = *x;1806 }1807#pragma omp atomic compare capture seq_cst1808 {1809 r = *x == e;1810 if (r)1811 *x = d;1812 }1813#pragma omp atomic compare capture seq_cst1814 {1815 r = *x == e;1816 if (r)1817 *x = d;1818 else1819 v = *x;1820 }1821 1822 return v;1823}1824 1825void 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 capture1891// 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 capture1897// 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 capture1903// 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 capture1909// 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 capture1915// 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 capture1921// 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 capture1927// CHECK-51-NEXT: {1928// CHECK-51-NEXT: if (*x == e)1929// CHECK-51-NEXT: *x = d;1930// CHECK-51-NEXT: else1931// CHECK-51-NEXT: v = *x;1932// CHECK-51-NEXT: }1933// CHECK-51-NEXT: #pragma omp atomic compare capture1934// 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 capture1940// 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: else1945// CHECK-51-NEXT: v = *x;1946// CHECK-51-NEXT: }1947// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel1948// 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_rel1954// 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_rel1960// 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_rel1966// 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_rel1972// 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_rel1978// 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_rel1984// CHECK-51-NEXT: {1985// CHECK-51-NEXT: if (*x == e)1986// CHECK-51-NEXT: *x = d;1987// CHECK-51-NEXT: else1988// CHECK-51-NEXT: v = *x;1989// CHECK-51-NEXT: }1990// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel1991// 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_rel1997// 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: else2002// CHECK-51-NEXT: v = *x;2003// CHECK-51-NEXT: }2004// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2005// 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 acquire2011// 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 acquire2017// 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 acquire2023// 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 acquire2029// 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 acquire2035// 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 acquire2041// CHECK-51-NEXT: {2042// CHECK-51-NEXT: if (*x == e)2043// CHECK-51-NEXT: *x = d;2044// CHECK-51-NEXT: else2045// CHECK-51-NEXT: v = *x;2046// CHECK-51-NEXT: }2047// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2048// 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 acquire2054// 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: else2059// CHECK-51-NEXT: v = *x;2060// CHECK-51-NEXT: }2061// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2062// 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 relaxed2068// 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 relaxed2074// 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 relaxed2080// 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 relaxed2086// 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 relaxed2092// 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 relaxed2098// CHECK-51-NEXT: {2099// CHECK-51-NEXT: if (*x == e)2100// CHECK-51-NEXT: *x = d;2101// CHECK-51-NEXT: else2102// CHECK-51-NEXT: v = *x;2103// CHECK-51-NEXT: }2104// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2105// 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 relaxed2111// 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: else2116// CHECK-51-NEXT: v = *x;2117// CHECK-51-NEXT: }2118// CHECK-51-NEXT: #pragma omp atomic compare capture release2119// 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 release2125// 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 release2131// 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 release2137// 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 release2143// 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 release2149// 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 release2155// CHECK-51-NEXT: {2156// CHECK-51-NEXT: if (*x == e)2157// CHECK-51-NEXT: *x = d;2158// CHECK-51-NEXT: else2159// CHECK-51-NEXT: v = *x;2160// CHECK-51-NEXT: }2161// CHECK-51-NEXT: #pragma omp atomic compare capture release2162// 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 release2168// 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: else2173// CHECK-51-NEXT: v = *x;2174// CHECK-51-NEXT: }2175// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2176// 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_cst2182// 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_cst2188// 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_cst2194// 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_cst2200// 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_cst2206// 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_cst2212// CHECK-51-NEXT: {2213// CHECK-51-NEXT: if (*x == e)2214// CHECK-51-NEXT: *x = d;2215// CHECK-51-NEXT: else2216// CHECK-51-NEXT: v = *x;2217// CHECK-51-NEXT: }2218// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2219// 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_cst2225// 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: else2230// 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 capture2238// 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 capture2244// 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 capture2250// 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 capture2256// 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 capture2262// 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 capture2268// 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 capture2274// CHECK-51-NEXT: {2275// CHECK-51-NEXT: if (*x == e)2276// CHECK-51-NEXT: *x = d;2277// CHECK-51-NEXT: else2278// CHECK-51-NEXT: v = *x;2279// CHECK-51-NEXT: }2280// CHECK-51-NEXT: #pragma omp atomic compare capture2281// 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 capture2287// 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: else2292// CHECK-51-NEXT: v = *x;2293// CHECK-51-NEXT: }2294// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel2295// 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_rel2301// 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_rel2307// 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_rel2313// 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_rel2319// 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_rel2325// 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_rel2331// CHECK-51-NEXT: {2332// CHECK-51-NEXT: if (*x == e)2333// CHECK-51-NEXT: *x = d;2334// CHECK-51-NEXT: else2335// CHECK-51-NEXT: v = *x;2336// CHECK-51-NEXT: }2337// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel2338// 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_rel2344// 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: else2349// CHECK-51-NEXT: v = *x;2350// CHECK-51-NEXT: }2351// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2352// 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 acquire2358// 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 acquire2364// 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 acquire2370// 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 acquire2376// 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 acquire2382// 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 acquire2388// CHECK-51-NEXT: {2389// CHECK-51-NEXT: if (*x == e)2390// CHECK-51-NEXT: *x = d;2391// CHECK-51-NEXT: else2392// CHECK-51-NEXT: v = *x;2393// CHECK-51-NEXT: }2394// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2395// 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 acquire2401// 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: else2406// CHECK-51-NEXT: v = *x;2407// CHECK-51-NEXT: }2408// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2409// 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 relaxed2415// 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 relaxed2421// 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 relaxed2427// 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 relaxed2433// 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 relaxed2439// 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 relaxed2445// CHECK-51-NEXT: {2446// CHECK-51-NEXT: if (*x == e)2447// CHECK-51-NEXT: *x = d;2448// CHECK-51-NEXT: else2449// CHECK-51-NEXT: v = *x;2450// CHECK-51-NEXT: }2451// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2452// 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 relaxed2458// 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: else2463// CHECK-51-NEXT: v = *x;2464// CHECK-51-NEXT: }2465// CHECK-51-NEXT: #pragma omp atomic compare capture release2466// 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 release2472// 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 release2478// 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 release2484// 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 release2490// 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 release2496// 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 release2502// CHECK-51-NEXT: {2503// CHECK-51-NEXT: if (*x == e)2504// CHECK-51-NEXT: *x = d;2505// CHECK-51-NEXT: else2506// CHECK-51-NEXT: v = *x;2507// CHECK-51-NEXT: }2508// CHECK-51-NEXT: #pragma omp atomic compare capture release2509// 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 release2515// 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: else2520// CHECK-51-NEXT: v = *x;2521// CHECK-51-NEXT: }2522// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2523// 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_cst2529// 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_cst2535// 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_cst2541// 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_cst2547// 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_cst2553// 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_cst2559// CHECK-51-NEXT: {2560// CHECK-51-NEXT: if (*x == e)2561// CHECK-51-NEXT: *x = d;2562// CHECK-51-NEXT: else2563// CHECK-51-NEXT: v = *x;2564// CHECK-51-NEXT: }2565// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2566// 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_cst2572// 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: else2577// 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 capture2585// 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 capture2591// 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 capture2597// 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 capture2603// 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 capture2609// 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 capture2615// 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 capture2621// CHECK-51-NEXT: {2622// CHECK-51-NEXT: if (*x == e)2623// CHECK-51-NEXT: *x = d;2624// CHECK-51-NEXT: else2625// CHECK-51-NEXT: v = *x;2626// CHECK-51-NEXT: }2627// CHECK-51-NEXT: #pragma omp atomic compare capture2628// 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 capture2634// 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: else2639// CHECK-51-NEXT: v = *x;2640// CHECK-51-NEXT: }2641// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel2642// 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_rel2648// 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_rel2654// 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_rel2660// 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_rel2666// 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_rel2672// 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_rel2678// CHECK-51-NEXT: {2679// CHECK-51-NEXT: if (*x == e)2680// CHECK-51-NEXT: *x = d;2681// CHECK-51-NEXT: else2682// CHECK-51-NEXT: v = *x;2683// CHECK-51-NEXT: }2684// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel2685// 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_rel2691// 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: else2696// CHECK-51-NEXT: v = *x;2697// CHECK-51-NEXT: }2698// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2699// 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 acquire2705// 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 acquire2711// 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 acquire2717// 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 acquire2723// 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 acquire2729// 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 acquire2735// CHECK-51-NEXT: {2736// CHECK-51-NEXT: if (*x == e)2737// CHECK-51-NEXT: *x = d;2738// CHECK-51-NEXT: else2739// CHECK-51-NEXT: v = *x;2740// CHECK-51-NEXT: }2741// CHECK-51-NEXT: #pragma omp atomic compare capture acquire2742// 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 acquire2748// 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: else2753// CHECK-51-NEXT: v = *x;2754// CHECK-51-NEXT: }2755// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2756// 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 relaxed2762// 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 relaxed2768// 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 relaxed2774// 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 relaxed2780// 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 relaxed2786// 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 relaxed2792// CHECK-51-NEXT: {2793// CHECK-51-NEXT: if (*x == e)2794// CHECK-51-NEXT: *x = d;2795// CHECK-51-NEXT: else2796// CHECK-51-NEXT: v = *x;2797// CHECK-51-NEXT: }2798// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed2799// 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 relaxed2805// 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: else2810// CHECK-51-NEXT: v = *x;2811// CHECK-51-NEXT: }2812// CHECK-51-NEXT: #pragma omp atomic compare capture release2813// 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 release2819// 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 release2825// 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 release2831// 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 release2837// 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 release2843// 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 release2849// CHECK-51-NEXT: {2850// CHECK-51-NEXT: if (*x == e)2851// CHECK-51-NEXT: *x = d;2852// CHECK-51-NEXT: else2853// CHECK-51-NEXT: v = *x;2854// CHECK-51-NEXT: }2855// CHECK-51-NEXT: #pragma omp atomic compare capture release2856// 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 release2862// 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: else2867// CHECK-51-NEXT: v = *x;2868// CHECK-51-NEXT: }2869// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2870// 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_cst2876// 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_cst2882// 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_cst2888// 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_cst2894// 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_cst2900// 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_cst2906// CHECK-51-NEXT: {2907// CHECK-51-NEXT: if (*x == e)2908// CHECK-51-NEXT: *x = d;2909// CHECK-51-NEXT: else2910// CHECK-51-NEXT: v = *x;2911// CHECK-51-NEXT: }2912// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst2913// 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_cst2919// 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: else2924// 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 capture2932// 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 capture2938// 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 capture2944// 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 capture2950// 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 capture2956// 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 capture2962// 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 capture2968// CHECK-51-NEXT: {2969// CHECK-51-NEXT: if (*x == e)2970// CHECK-51-NEXT: *x = d;2971// CHECK-51-NEXT: else2972// CHECK-51-NEXT: v = *x;2973// CHECK-51-NEXT: }2974// CHECK-51-NEXT: #pragma omp atomic compare capture2975// 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 capture2981// 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: else2986// CHECK-51-NEXT: v = *x;2987// CHECK-51-NEXT: }2988// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel2989// 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_rel2995// 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_rel3001// 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_rel3007// 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_rel3013// 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_rel3019// 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_rel3025// CHECK-51-NEXT: {3026// CHECK-51-NEXT: if (*x == e)3027// CHECK-51-NEXT: *x = d;3028// CHECK-51-NEXT: else3029// CHECK-51-NEXT: v = *x;3030// CHECK-51-NEXT: }3031// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel3032// 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_rel3038// 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: else3043// CHECK-51-NEXT: v = *x;3044// CHECK-51-NEXT: }3045// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3046// 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 acquire3052// 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 acquire3058// 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 acquire3064// 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 acquire3070// 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 acquire3076// 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 acquire3082// CHECK-51-NEXT: {3083// CHECK-51-NEXT: if (*x == e)3084// CHECK-51-NEXT: *x = d;3085// CHECK-51-NEXT: else3086// CHECK-51-NEXT: v = *x;3087// CHECK-51-NEXT: }3088// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3089// 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 acquire3095// 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: else3100// CHECK-51-NEXT: v = *x;3101// CHECK-51-NEXT: }3102// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3103// 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 relaxed3109// 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 relaxed3115// 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 relaxed3121// 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 relaxed3127// 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 relaxed3133// 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 relaxed3139// CHECK-51-NEXT: {3140// CHECK-51-NEXT: if (*x == e)3141// CHECK-51-NEXT: *x = d;3142// CHECK-51-NEXT: else3143// CHECK-51-NEXT: v = *x;3144// CHECK-51-NEXT: }3145// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3146// 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 relaxed3152// 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: else3157// CHECK-51-NEXT: v = *x;3158// CHECK-51-NEXT: }3159// CHECK-51-NEXT: #pragma omp atomic compare capture release3160// 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 release3166// 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 release3172// 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 release3178// 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 release3184// 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 release3190// 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 release3196// CHECK-51-NEXT: {3197// CHECK-51-NEXT: if (*x == e)3198// CHECK-51-NEXT: *x = d;3199// CHECK-51-NEXT: else3200// CHECK-51-NEXT: v = *x;3201// CHECK-51-NEXT: }3202// CHECK-51-NEXT: #pragma omp atomic compare capture release3203// 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 release3209// 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: else3214// CHECK-51-NEXT: v = *x;3215// CHECK-51-NEXT: }3216// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3217// 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_cst3223// 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_cst3229// 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_cst3235// 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_cst3241// 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_cst3247// 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_cst3253// CHECK-51-NEXT: {3254// CHECK-51-NEXT: if (*x == e)3255// CHECK-51-NEXT: *x = d;3256// CHECK-51-NEXT: else3257// CHECK-51-NEXT: v = *x;3258// CHECK-51-NEXT: }3259// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3260// 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_cst3266// 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: else3271// 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 capture3279// 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 capture3285// 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 capture3291// 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 capture3297// 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 capture3303// 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 capture3309// 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 capture3315// CHECK-51-NEXT: {3316// CHECK-51-NEXT: if (*x == e)3317// CHECK-51-NEXT: *x = d;3318// CHECK-51-NEXT: else3319// CHECK-51-NEXT: v = *x;3320// CHECK-51-NEXT: }3321// CHECK-51-NEXT: #pragma omp atomic compare capture3322// 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 capture3328// 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: else3333// CHECK-51-NEXT: v = *x;3334// CHECK-51-NEXT: }3335// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel3336// 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_rel3342// 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_rel3348// 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_rel3354// 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_rel3360// 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_rel3366// 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_rel3372// CHECK-51-NEXT: {3373// CHECK-51-NEXT: if (*x == e)3374// CHECK-51-NEXT: *x = d;3375// CHECK-51-NEXT: else3376// CHECK-51-NEXT: v = *x;3377// CHECK-51-NEXT: }3378// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel3379// 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_rel3385// 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: else3390// CHECK-51-NEXT: v = *x;3391// CHECK-51-NEXT: }3392// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3393// 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 acquire3399// 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 acquire3405// 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 acquire3411// 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 acquire3417// 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 acquire3423// 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 acquire3429// CHECK-51-NEXT: {3430// CHECK-51-NEXT: if (*x == e)3431// CHECK-51-NEXT: *x = d;3432// CHECK-51-NEXT: else3433// CHECK-51-NEXT: v = *x;3434// CHECK-51-NEXT: }3435// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3436// 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 acquire3442// 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: else3447// CHECK-51-NEXT: v = *x;3448// CHECK-51-NEXT: }3449// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3450// 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 relaxed3456// 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 relaxed3462// 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 relaxed3468// 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 relaxed3474// 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 relaxed3480// 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 relaxed3486// CHECK-51-NEXT: {3487// CHECK-51-NEXT: if (*x == e)3488// CHECK-51-NEXT: *x = d;3489// CHECK-51-NEXT: else3490// CHECK-51-NEXT: v = *x;3491// CHECK-51-NEXT: }3492// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3493// 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 relaxed3499// 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: else3504// CHECK-51-NEXT: v = *x;3505// CHECK-51-NEXT: }3506// CHECK-51-NEXT: #pragma omp atomic compare capture release3507// 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 release3513// 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 release3519// 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 release3525// 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 release3531// 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 release3537// 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 release3543// CHECK-51-NEXT: {3544// CHECK-51-NEXT: if (*x == e)3545// CHECK-51-NEXT: *x = d;3546// CHECK-51-NEXT: else3547// CHECK-51-NEXT: v = *x;3548// CHECK-51-NEXT: }3549// CHECK-51-NEXT: #pragma omp atomic compare capture release3550// 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 release3556// 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: else3561// CHECK-51-NEXT: v = *x;3562// CHECK-51-NEXT: }3563// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3564// 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_cst3570// 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_cst3576// 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_cst3582// 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_cst3588// 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_cst3594// 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_cst3600// CHECK-51-NEXT: {3601// CHECK-51-NEXT: if (*x == e)3602// CHECK-51-NEXT: *x = d;3603// CHECK-51-NEXT: else3604// CHECK-51-NEXT: v = *x;3605// CHECK-51-NEXT: }3606// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3607// 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_cst3613// 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: else3618// 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 capture3626// 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 capture3632// 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 capture3638// 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 capture3644// 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 capture3650// 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 capture3656// 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 capture3662// CHECK-51-NEXT: {3663// CHECK-51-NEXT: if (*x == e)3664// CHECK-51-NEXT: *x = d;3665// CHECK-51-NEXT: else3666// CHECK-51-NEXT: v = *x;3667// CHECK-51-NEXT: }3668// CHECK-51-NEXT: #pragma omp atomic compare capture3669// 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 capture3675// 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: else3680// CHECK-51-NEXT: v = *x;3681// CHECK-51-NEXT: }3682// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel3683// 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_rel3689// 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_rel3695// 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_rel3701// 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_rel3707// 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_rel3713// 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_rel3719// CHECK-51-NEXT: {3720// CHECK-51-NEXT: if (*x == e)3721// CHECK-51-NEXT: *x = d;3722// CHECK-51-NEXT: else3723// CHECK-51-NEXT: v = *x;3724// CHECK-51-NEXT: }3725// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel3726// 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_rel3732// 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: else3737// CHECK-51-NEXT: v = *x;3738// CHECK-51-NEXT: }3739// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3740// 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 acquire3746// 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 acquire3752// 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 acquire3758// 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 acquire3764// 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 acquire3770// 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 acquire3776// CHECK-51-NEXT: {3777// CHECK-51-NEXT: if (*x == e)3778// CHECK-51-NEXT: *x = d;3779// CHECK-51-NEXT: else3780// CHECK-51-NEXT: v = *x;3781// CHECK-51-NEXT: }3782// CHECK-51-NEXT: #pragma omp atomic compare capture acquire3783// 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 acquire3789// 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: else3794// CHECK-51-NEXT: v = *x;3795// CHECK-51-NEXT: }3796// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3797// 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 relaxed3803// 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 relaxed3809// 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 relaxed3815// 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 relaxed3821// 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 relaxed3827// 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 relaxed3833// CHECK-51-NEXT: {3834// CHECK-51-NEXT: if (*x == e)3835// CHECK-51-NEXT: *x = d;3836// CHECK-51-NEXT: else3837// CHECK-51-NEXT: v = *x;3838// CHECK-51-NEXT: }3839// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed3840// 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 relaxed3846// 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: else3851// CHECK-51-NEXT: v = *x;3852// CHECK-51-NEXT: }3853// CHECK-51-NEXT: #pragma omp atomic compare capture release3854// 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 release3860// 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 release3866// 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 release3872// 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 release3878// 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 release3884// 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 release3890// CHECK-51-NEXT: {3891// CHECK-51-NEXT: if (*x == e)3892// CHECK-51-NEXT: *x = d;3893// CHECK-51-NEXT: else3894// CHECK-51-NEXT: v = *x;3895// CHECK-51-NEXT: }3896// CHECK-51-NEXT: #pragma omp atomic compare capture release3897// 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 release3903// 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: else3908// CHECK-51-NEXT: v = *x;3909// CHECK-51-NEXT: }3910// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3911// 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_cst3917// 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_cst3923// 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_cst3929// 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_cst3935// 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_cst3941// 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_cst3947// CHECK-51-NEXT: {3948// CHECK-51-NEXT: if (*x == e)3949// CHECK-51-NEXT: *x = d;3950// CHECK-51-NEXT: else3951// CHECK-51-NEXT: v = *x;3952// CHECK-51-NEXT: }3953// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst3954// 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_cst3960// 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: else3965// 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 capture3973// 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 capture3979// 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 capture3985// 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 capture3991// 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 capture3997// 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 capture4003// 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 capture4009// CHECK-51-NEXT: {4010// CHECK-51-NEXT: if (*x == e)4011// CHECK-51-NEXT: *x = d;4012// CHECK-51-NEXT: else4013// CHECK-51-NEXT: v = *x;4014// CHECK-51-NEXT: }4015// CHECK-51-NEXT: #pragma omp atomic compare capture4016// 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 capture4022// 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: else4027// CHECK-51-NEXT: v = *x;4028// CHECK-51-NEXT: }4029// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4030// 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_rel4036// 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_rel4042// 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_rel4048// 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_rel4054// 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_rel4060// 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_rel4066// CHECK-51-NEXT: {4067// CHECK-51-NEXT: if (*x == e)4068// CHECK-51-NEXT: *x = d;4069// CHECK-51-NEXT: else4070// CHECK-51-NEXT: v = *x;4071// CHECK-51-NEXT: }4072// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4073// 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_rel4079// 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: else4084// CHECK-51-NEXT: v = *x;4085// CHECK-51-NEXT: }4086// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4087// 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 acquire4093// 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 acquire4099// 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 acquire4105// 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 acquire4111// 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 acquire4117// 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 acquire4123// CHECK-51-NEXT: {4124// CHECK-51-NEXT: if (*x == e)4125// CHECK-51-NEXT: *x = d;4126// CHECK-51-NEXT: else4127// CHECK-51-NEXT: v = *x;4128// CHECK-51-NEXT: }4129// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4130// 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 acquire4136// 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: else4141// CHECK-51-NEXT: v = *x;4142// CHECK-51-NEXT: }4143// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4144// 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 relaxed4150// 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 relaxed4156// 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 relaxed4162// 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 relaxed4168// 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 relaxed4174// 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 relaxed4180// CHECK-51-NEXT: {4181// CHECK-51-NEXT: if (*x == e)4182// CHECK-51-NEXT: *x = d;4183// CHECK-51-NEXT: else4184// CHECK-51-NEXT: v = *x;4185// CHECK-51-NEXT: }4186// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4187// 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 relaxed4193// 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: else4198// CHECK-51-NEXT: v = *x;4199// CHECK-51-NEXT: }4200// CHECK-51-NEXT: #pragma omp atomic compare capture release4201// 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 release4207// 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 release4213// 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 release4219// 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 release4225// 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 release4231// 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 release4237// CHECK-51-NEXT: {4238// CHECK-51-NEXT: if (*x == e)4239// CHECK-51-NEXT: *x = d;4240// CHECK-51-NEXT: else4241// CHECK-51-NEXT: v = *x;4242// CHECK-51-NEXT: }4243// CHECK-51-NEXT: #pragma omp atomic compare capture release4244// 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 release4250// 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: else4255// CHECK-51-NEXT: v = *x;4256// CHECK-51-NEXT: }4257// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4258// 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_cst4264// 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_cst4270// 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_cst4276// 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_cst4282// 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_cst4288// 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_cst4294// CHECK-51-NEXT: {4295// CHECK-51-NEXT: if (*x == e)4296// CHECK-51-NEXT: *x = d;4297// CHECK-51-NEXT: else4298// CHECK-51-NEXT: v = *x;4299// CHECK-51-NEXT: }4300// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4301// 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_cst4307// 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: else4312// 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 capture4320// 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 capture4326// 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 capture4332// 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 capture4338// 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 capture4344// 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 capture4350// 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 capture4356// CHECK-51-NEXT: {4357// CHECK-51-NEXT: if (*x == e)4358// CHECK-51-NEXT: *x = d;4359// CHECK-51-NEXT: else4360// CHECK-51-NEXT: v = *x;4361// CHECK-51-NEXT: }4362// CHECK-51-NEXT: #pragma omp atomic compare capture4363// 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 capture4369// 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: else4374// CHECK-51-NEXT: v = *x;4375// CHECK-51-NEXT: }4376// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4377// 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_rel4383// 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_rel4389// 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_rel4395// 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_rel4401// 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_rel4407// 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_rel4413// CHECK-51-NEXT: {4414// CHECK-51-NEXT: if (*x == e)4415// CHECK-51-NEXT: *x = d;4416// CHECK-51-NEXT: else4417// CHECK-51-NEXT: v = *x;4418// CHECK-51-NEXT: }4419// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4420// 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_rel4426// 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: else4431// CHECK-51-NEXT: v = *x;4432// CHECK-51-NEXT: }4433// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4434// 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 acquire4440// 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 acquire4446// 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 acquire4452// 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 acquire4458// 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 acquire4464// 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 acquire4470// CHECK-51-NEXT: {4471// CHECK-51-NEXT: if (*x == e)4472// CHECK-51-NEXT: *x = d;4473// CHECK-51-NEXT: else4474// CHECK-51-NEXT: v = *x;4475// CHECK-51-NEXT: }4476// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4477// 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 acquire4483// 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: else4488// CHECK-51-NEXT: v = *x;4489// CHECK-51-NEXT: }4490// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4491// 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 relaxed4497// 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 relaxed4503// 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 relaxed4509// 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 relaxed4515// 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 relaxed4521// 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 relaxed4527// CHECK-51-NEXT: {4528// CHECK-51-NEXT: if (*x == e)4529// CHECK-51-NEXT: *x = d;4530// CHECK-51-NEXT: else4531// CHECK-51-NEXT: v = *x;4532// CHECK-51-NEXT: }4533// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4534// 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 relaxed4540// 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: else4545// CHECK-51-NEXT: v = *x;4546// CHECK-51-NEXT: }4547// CHECK-51-NEXT: #pragma omp atomic compare capture release4548// 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 release4554// 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 release4560// 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 release4566// 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 release4572// 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 release4578// 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 release4584// CHECK-51-NEXT: {4585// CHECK-51-NEXT: if (*x == e)4586// CHECK-51-NEXT: *x = d;4587// CHECK-51-NEXT: else4588// CHECK-51-NEXT: v = *x;4589// CHECK-51-NEXT: }4590// CHECK-51-NEXT: #pragma omp atomic compare capture release4591// 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 release4597// 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: else4602// CHECK-51-NEXT: v = *x;4603// CHECK-51-NEXT: }4604// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4605// 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_cst4611// 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_cst4617// 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_cst4623// 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_cst4629// 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_cst4635// 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_cst4641// CHECK-51-NEXT: {4642// CHECK-51-NEXT: if (*x == e)4643// CHECK-51-NEXT: *x = d;4644// CHECK-51-NEXT: else4645// CHECK-51-NEXT: v = *x;4646// CHECK-51-NEXT: }4647// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4648// 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_cst4654// 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: else4659// 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 capture4667// 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 capture4673// 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 capture4679// 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 capture4685// 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 capture4691// 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 capture4697// 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 capture4703// CHECK-51-NEXT: {4704// CHECK-51-NEXT: if (*x == e)4705// CHECK-51-NEXT: *x = d;4706// CHECK-51-NEXT: else4707// CHECK-51-NEXT: v = *x;4708// CHECK-51-NEXT: }4709// CHECK-51-NEXT: #pragma omp atomic compare capture4710// 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 capture4716// 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: else4721// CHECK-51-NEXT: v = *x;4722// CHECK-51-NEXT: }4723// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4724// 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_rel4730// 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_rel4736// 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_rel4742// 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_rel4748// 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_rel4754// 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_rel4760// CHECK-51-NEXT: {4761// CHECK-51-NEXT: if (*x == e)4762// CHECK-51-NEXT: *x = d;4763// CHECK-51-NEXT: else4764// CHECK-51-NEXT: v = *x;4765// CHECK-51-NEXT: }4766// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel4767// 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_rel4773// 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: else4778// CHECK-51-NEXT: v = *x;4779// CHECK-51-NEXT: }4780// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4781// 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 acquire4787// 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 acquire4793// 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 acquire4799// 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 acquire4805// 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 acquire4811// 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 acquire4817// CHECK-51-NEXT: {4818// CHECK-51-NEXT: if (*x == e)4819// CHECK-51-NEXT: *x = d;4820// CHECK-51-NEXT: else4821// CHECK-51-NEXT: v = *x;4822// CHECK-51-NEXT: }4823// CHECK-51-NEXT: #pragma omp atomic compare capture acquire4824// 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 acquire4830// 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: else4835// CHECK-51-NEXT: v = *x;4836// CHECK-51-NEXT: }4837// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4838// 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 relaxed4844// 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 relaxed4850// 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 relaxed4856// 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 relaxed4862// 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 relaxed4868// 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 relaxed4874// CHECK-51-NEXT: {4875// CHECK-51-NEXT: if (*x == e)4876// CHECK-51-NEXT: *x = d;4877// CHECK-51-NEXT: else4878// CHECK-51-NEXT: v = *x;4879// CHECK-51-NEXT: }4880// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed4881// 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 relaxed4887// 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: else4892// CHECK-51-NEXT: v = *x;4893// CHECK-51-NEXT: }4894// CHECK-51-NEXT: #pragma omp atomic compare capture release4895// 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 release4901// 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 release4907// 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 release4913// 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 release4919// 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 release4925// 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 release4931// CHECK-51-NEXT: {4932// CHECK-51-NEXT: if (*x == e)4933// CHECK-51-NEXT: *x = d;4934// CHECK-51-NEXT: else4935// CHECK-51-NEXT: v = *x;4936// CHECK-51-NEXT: }4937// CHECK-51-NEXT: #pragma omp atomic compare capture release4938// 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 release4944// 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: else4949// CHECK-51-NEXT: v = *x;4950// CHECK-51-NEXT: }4951// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4952// 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_cst4958// 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_cst4964// 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_cst4970// 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_cst4976// 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_cst4982// 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_cst4988// CHECK-51-NEXT: {4989// CHECK-51-NEXT: if (*x == e)4990// CHECK-51-NEXT: *x = d;4991// CHECK-51-NEXT: else4992// CHECK-51-NEXT: v = *x;4993// CHECK-51-NEXT: }4994// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst4995// 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_cst5001// 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: else5006// 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 capture5014// 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 capture5020// 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 capture5026// 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 capture5032// 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 capture5038// 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 capture5044// 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 capture5050// CHECK-51-NEXT: {5051// CHECK-51-NEXT: if (*x == e)5052// CHECK-51-NEXT: *x = d;5053// CHECK-51-NEXT: else5054// CHECK-51-NEXT: v = *x;5055// CHECK-51-NEXT: }5056// CHECK-51-NEXT: #pragma omp atomic compare capture5057// 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 capture5063// 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: else5068// CHECK-51-NEXT: v = *x;5069// CHECK-51-NEXT: }5070// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5071// 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_rel5077// 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_rel5083// 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_rel5089// 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_rel5095// 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_rel5101// 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_rel5107// CHECK-51-NEXT: {5108// CHECK-51-NEXT: if (*x == e)5109// CHECK-51-NEXT: *x = d;5110// CHECK-51-NEXT: else5111// CHECK-51-NEXT: v = *x;5112// CHECK-51-NEXT: }5113// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5114// 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_rel5120// 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: else5125// CHECK-51-NEXT: v = *x;5126// CHECK-51-NEXT: }5127// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5128// 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 acquire5134// 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 acquire5140// 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 acquire5146// 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 acquire5152// 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 acquire5158// 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 acquire5164// CHECK-51-NEXT: {5165// CHECK-51-NEXT: if (*x == e)5166// CHECK-51-NEXT: *x = d;5167// CHECK-51-NEXT: else5168// CHECK-51-NEXT: v = *x;5169// CHECK-51-NEXT: }5170// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5171// 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 acquire5177// 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: else5182// CHECK-51-NEXT: v = *x;5183// CHECK-51-NEXT: }5184// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5185// 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 relaxed5191// 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 relaxed5197// 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 relaxed5203// 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 relaxed5209// 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 relaxed5215// 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 relaxed5221// CHECK-51-NEXT: {5222// CHECK-51-NEXT: if (*x == e)5223// CHECK-51-NEXT: *x = d;5224// CHECK-51-NEXT: else5225// CHECK-51-NEXT: v = *x;5226// CHECK-51-NEXT: }5227// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5228// 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 relaxed5234// 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: else5239// CHECK-51-NEXT: v = *x;5240// CHECK-51-NEXT: }5241// CHECK-51-NEXT: #pragma omp atomic compare capture release5242// 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 release5248// 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 release5254// 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 release5260// 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 release5266// 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 release5272// 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 release5278// CHECK-51-NEXT: {5279// CHECK-51-NEXT: if (*x == e)5280// CHECK-51-NEXT: *x = d;5281// CHECK-51-NEXT: else5282// CHECK-51-NEXT: v = *x;5283// CHECK-51-NEXT: }5284// CHECK-51-NEXT: #pragma omp atomic compare capture release5285// 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 release5291// 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: else5296// CHECK-51-NEXT: v = *x;5297// CHECK-51-NEXT: }5298// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst5299// 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_cst5305// 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_cst5311// 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_cst5317// 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_cst5323// 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_cst5329// 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_cst5335// CHECK-51-NEXT: {5336// CHECK-51-NEXT: if (*x == e)5337// CHECK-51-NEXT: *x = d;5338// CHECK-51-NEXT: else5339// CHECK-51-NEXT: v = *x;5340// CHECK-51-NEXT: }5341// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst5342// 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_cst5348// 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: else5353// 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 capture5361// 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 capture5367// 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 capture5373// 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 capture5379// 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 capture5385// 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 capture5391// 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 capture5397// CHECK-51-NEXT: {5398// CHECK-51-NEXT: if (*x == e)5399// CHECK-51-NEXT: *x = d;5400// CHECK-51-NEXT: else5401// CHECK-51-NEXT: v = *x;5402// CHECK-51-NEXT: }5403// CHECK-51-NEXT: #pragma omp atomic compare capture5404// 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 capture5410// 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: else5415// CHECK-51-NEXT: v = *x;5416// CHECK-51-NEXT: }5417// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5418// 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_rel5424// 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_rel5430// 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_rel5436// 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_rel5442// 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_rel5448// 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_rel5454// CHECK-51-NEXT: {5455// CHECK-51-NEXT: if (*x == e)5456// CHECK-51-NEXT: *x = d;5457// CHECK-51-NEXT: else5458// CHECK-51-NEXT: v = *x;5459// CHECK-51-NEXT: }5460// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5461// 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_rel5467// 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: else5472// CHECK-51-NEXT: v = *x;5473// CHECK-51-NEXT: }5474// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5475// 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 acquire5481// 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 acquire5487// 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 acquire5493// 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 acquire5499// 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 acquire5505// 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 acquire5511// CHECK-51-NEXT: {5512// CHECK-51-NEXT: if (*x == e)5513// CHECK-51-NEXT: *x = d;5514// CHECK-51-NEXT: else5515// CHECK-51-NEXT: v = *x;5516// CHECK-51-NEXT: }5517// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5518// 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 acquire5524// 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: else5529// CHECK-51-NEXT: v = *x;5530// CHECK-51-NEXT: }5531// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5532// 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 relaxed5538// 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 relaxed5544// 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 relaxed5550// 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 relaxed5556// 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 relaxed5562// 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 relaxed5568// CHECK-51-NEXT: {5569// CHECK-51-NEXT: if (*x == e)5570// CHECK-51-NEXT: *x = d;5571// CHECK-51-NEXT: else5572// CHECK-51-NEXT: v = *x;5573// CHECK-51-NEXT: }5574// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5575// 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 relaxed5581// 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: else5586// CHECK-51-NEXT: v = *x;5587// CHECK-51-NEXT: }5588// CHECK-51-NEXT: #pragma omp atomic compare capture release5589// 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 release5595// 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 release5601// 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 release5607// 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 release5613// 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 release5619// 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 release5625// CHECK-51-NEXT: {5626// CHECK-51-NEXT: if (*x == e)5627// CHECK-51-NEXT: *x = d;5628// CHECK-51-NEXT: else5629// CHECK-51-NEXT: v = *x;5630// CHECK-51-NEXT: }5631// CHECK-51-NEXT: #pragma omp atomic compare capture release5632// 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 release5638// 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: else5643// CHECK-51-NEXT: v = *x;5644// CHECK-51-NEXT: }5645// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst5646// 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_cst5652// 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_cst5658// 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_cst5664// 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_cst5670// 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_cst5676// 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_cst5682// CHECK-51-NEXT: {5683// CHECK-51-NEXT: if (*x == e)5684// CHECK-51-NEXT: *x = d;5685// CHECK-51-NEXT: else5686// CHECK-51-NEXT: v = *x;5687// CHECK-51-NEXT: }5688// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst5689// 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_cst5695// 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: else5700// 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 capture5708// 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 capture5714// 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 capture5720// 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 capture5726// 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 capture5732// 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 capture5738// 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 capture5744// CHECK-51-NEXT: {5745// CHECK-51-NEXT: if (*x == e)5746// CHECK-51-NEXT: *x = d;5747// CHECK-51-NEXT: else5748// CHECK-51-NEXT: v = *x;5749// CHECK-51-NEXT: }5750// CHECK-51-NEXT: #pragma omp atomic compare capture5751// 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 capture5757// 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: else5762// CHECK-51-NEXT: v = *x;5763// CHECK-51-NEXT: }5764// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5765// 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_rel5771// 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_rel5777// 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_rel5783// 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_rel5789// 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_rel5795// 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_rel5801// CHECK-51-NEXT: {5802// CHECK-51-NEXT: if (*x == e)5803// CHECK-51-NEXT: *x = d;5804// CHECK-51-NEXT: else5805// CHECK-51-NEXT: v = *x;5806// CHECK-51-NEXT: }5807// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel5808// 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_rel5814// 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: else5819// CHECK-51-NEXT: v = *x;5820// CHECK-51-NEXT: }5821// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5822// 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 acquire5828// 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 acquire5834// 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 acquire5840// 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 acquire5846// 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 acquire5852// 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 acquire5858// CHECK-51-NEXT: {5859// CHECK-51-NEXT: if (*x == e)5860// CHECK-51-NEXT: *x = d;5861// CHECK-51-NEXT: else5862// CHECK-51-NEXT: v = *x;5863// CHECK-51-NEXT: }5864// CHECK-51-NEXT: #pragma omp atomic compare capture acquire5865// 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 acquire5871// 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: else5876// CHECK-51-NEXT: v = *x;5877// CHECK-51-NEXT: }5878// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5879// 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 relaxed5885// 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 relaxed5891// 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 relaxed5897// 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 relaxed5903// 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 relaxed5909// 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 relaxed5915// CHECK-51-NEXT: {5916// CHECK-51-NEXT: if (*x == e)5917// CHECK-51-NEXT: *x = d;5918// CHECK-51-NEXT: else5919// CHECK-51-NEXT: v = *x;5920// CHECK-51-NEXT: }5921// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed5922// 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 relaxed5928// 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: else5933// CHECK-51-NEXT: v = *x;5934// CHECK-51-NEXT: }5935// CHECK-51-NEXT: #pragma omp atomic compare capture release5936// 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 release5942// 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 release5948// 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 release5954// 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 release5960// 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 release5966// 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 release5972// CHECK-51-NEXT: {5973// CHECK-51-NEXT: if (*x == e)5974// CHECK-51-NEXT: *x = d;5975// CHECK-51-NEXT: else5976// CHECK-51-NEXT: v = *x;5977// CHECK-51-NEXT: }5978// CHECK-51-NEXT: #pragma omp atomic compare capture release5979// 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 release5985// 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: else5990// CHECK-51-NEXT: v = *x;5991// CHECK-51-NEXT: }5992// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst5993// 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_cst5999// 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_cst6005// 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_cst6011// 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_cst6017// 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_cst6023// 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_cst6029// CHECK-51-NEXT: {6030// CHECK-51-NEXT: if (*x == e)6031// CHECK-51-NEXT: *x = d;6032// CHECK-51-NEXT: else6033// CHECK-51-NEXT: v = *x;6034// CHECK-51-NEXT: }6035// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst6036// 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_cst6042// 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: else6047// 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 capture6055// 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 capture6061// 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 capture6067// 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 capture6073// 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 capture6079// 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 capture6085// 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 capture6091// CHECK-51-NEXT: {6092// CHECK-51-NEXT: if (*x == e)6093// CHECK-51-NEXT: *x = d;6094// CHECK-51-NEXT: else6095// CHECK-51-NEXT: v = *x;6096// CHECK-51-NEXT: }6097// CHECK-51-NEXT: #pragma omp atomic compare capture6098// 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 capture6104// 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: else6109// CHECK-51-NEXT: v = *x;6110// CHECK-51-NEXT: }6111// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel6112// 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_rel6118// 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_rel6124// 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_rel6130// 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_rel6136// 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_rel6142// 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_rel6148// CHECK-51-NEXT: {6149// CHECK-51-NEXT: if (*x == e)6150// CHECK-51-NEXT: *x = d;6151// CHECK-51-NEXT: else6152// CHECK-51-NEXT: v = *x;6153// CHECK-51-NEXT: }6154// CHECK-51-NEXT: #pragma omp atomic compare capture acq_rel6155// 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_rel6161// 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: else6166// CHECK-51-NEXT: v = *x;6167// CHECK-51-NEXT: }6168// CHECK-51-NEXT: #pragma omp atomic compare capture acquire6169// 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 acquire6175// 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 acquire6181// 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 acquire6187// 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 acquire6193// 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 acquire6199// 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 acquire6205// CHECK-51-NEXT: {6206// CHECK-51-NEXT: if (*x == e)6207// CHECK-51-NEXT: *x = d;6208// CHECK-51-NEXT: else6209// CHECK-51-NEXT: v = *x;6210// CHECK-51-NEXT: }6211// CHECK-51-NEXT: #pragma omp atomic compare capture acquire6212// 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 acquire6218// 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: else6223// CHECK-51-NEXT: v = *x;6224// CHECK-51-NEXT: }6225// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed6226// 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 relaxed6232// 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 relaxed6238// 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 relaxed6244// 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 relaxed6250// 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 relaxed6256// 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 relaxed6262// CHECK-51-NEXT: {6263// CHECK-51-NEXT: if (*x == e)6264// CHECK-51-NEXT: *x = d;6265// CHECK-51-NEXT: else6266// CHECK-51-NEXT: v = *x;6267// CHECK-51-NEXT: }6268// CHECK-51-NEXT: #pragma omp atomic compare capture relaxed6269// 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 relaxed6275// 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: else6280// CHECK-51-NEXT: v = *x;6281// CHECK-51-NEXT: }6282// CHECK-51-NEXT: #pragma omp atomic compare capture release6283// 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 release6289// 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 release6295// 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 release6301// 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 release6307// 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 release6313// 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 release6319// CHECK-51-NEXT: {6320// CHECK-51-NEXT: if (*x == e)6321// CHECK-51-NEXT: *x = d;6322// CHECK-51-NEXT: else6323// CHECK-51-NEXT: v = *x;6324// CHECK-51-NEXT: }6325// CHECK-51-NEXT: #pragma omp atomic compare capture release6326// 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 release6332// 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: else6337// CHECK-51-NEXT: v = *x;6338// CHECK-51-NEXT: }6339// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst6340// 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_cst6346// 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_cst6352// 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_cst6358// 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_cst6364// 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_cst6370// 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_cst6376// CHECK-51-NEXT: {6377// CHECK-51-NEXT: if (*x == e)6378// CHECK-51-NEXT: *x = d;6379// CHECK-51-NEXT: else6380// CHECK-51-NEXT: v = *x;6381// CHECK-51-NEXT: }6382// CHECK-51-NEXT: #pragma omp atomic compare capture seq_cst6383// 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_cst6389// 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: else6394// 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 6449int xevd() {6450 int x, v, e, d;6451 6452#pragma omp atomic compare capture6453 {6454 v = x;6455 x = x > e ? e : x;6456 }6457#pragma omp atomic compare capture6458 {6459 v = x;6460 x = x < e ? e : x;6461 }6462#pragma omp atomic compare capture6463 {6464 v = x;6465 x = x == e ? d : x;6466 }6467#pragma omp atomic compare capture6468 {6469 x = x > e ? e : x;6470 v = x;6471 }6472#pragma omp atomic compare capture6473 {6474 x = x < e ? e : x;6475 v = x;6476 }6477#pragma omp atomic compare capture6478 {6479 x = x == e ? d : x;6480 v = x;6481 }6482 6483#pragma omp atomic compare capture acq_rel6484 {6485 v = x;6486 x = x > e ? e : x;6487 }6488#pragma omp atomic compare capture acq_rel6489 {6490 v = x;6491 x = x < e ? e : x;6492 }6493#pragma omp atomic compare capture acq_rel6494 {6495 v = x;6496 x = x == e ? d : x;6497 }6498#pragma omp atomic compare capture acq_rel6499 {6500 x = x > e ? e : x;6501 v = x;6502 }6503#pragma omp atomic compare capture acq_rel6504 {6505 x = x < e ? e : x;6506 v = x;6507 }6508#pragma omp atomic compare capture acq_rel6509 {6510 x = x == e ? d : x;6511 v = x;6512 }6513 6514#pragma omp atomic compare capture acquire6515 {6516 v = x;6517 x = x > e ? e : x;6518 }6519#pragma omp atomic compare capture acquire6520 {6521 v = x;6522 x = x < e ? e : x;6523 }6524#pragma omp atomic compare capture acquire6525 {6526 v = x;6527 x = x == e ? d : x;6528 }6529#pragma omp atomic compare capture acquire6530 {6531 x = x > e ? e : x;6532 v = x;6533 }6534#pragma omp atomic compare capture acquire6535 {6536 x = x < e ? e : x;6537 v = x;6538 }6539#pragma omp atomic compare capture acquire6540 {6541 x = x == e ? d : x;6542 v = x;6543 }6544 6545#pragma omp atomic compare capture relaxed6546 {6547 v = x;6548 x = x > e ? e : x;6549 }6550#pragma omp atomic compare capture relaxed6551 {6552 v = x;6553 x = x < e ? e : x;6554 }6555#pragma omp atomic compare capture relaxed6556 {6557 v = x;6558 x = x == e ? d : x;6559 }6560#pragma omp atomic compare capture relaxed6561 {6562 x = x > e ? e : x;6563 v = x;6564 }6565#pragma omp atomic compare capture relaxed6566 {6567 x = x < e ? e : x;6568 v = x;6569 }6570#pragma omp atomic compare capture relaxed6571 {6572 x = x == e ? d : x;6573 v = x;6574 }6575 6576#pragma omp atomic compare capture release6577 {6578 v = x;6579 x = x > e ? e : x;6580 }6581#pragma omp atomic compare capture release6582 {6583 v = x;6584 x = x < e ? e : x;6585 }6586#pragma omp atomic compare capture release6587 {6588 v = x;6589 x = x == e ? d : x;6590 }6591#pragma omp atomic compare capture release6592 {6593 x = x > e ? e : x;6594 v = x;6595 }6596#pragma omp atomic compare capture release6597 {6598 x = x < e ? e : x;6599 v = x;6600 }6601#pragma omp atomic compare capture release6602 {6603 x = x == e ? d : x;6604 v = x;6605 }6606 6607#pragma omp atomic compare capture seq_cst6608 {6609 v = x;6610 x = x > e ? e : x;6611 }6612#pragma omp atomic compare capture seq_cst6613 {6614 v = x;6615 x = x < e ? e : x;6616 }6617#pragma omp atomic compare capture seq_cst6618 {6619 v = x;6620 x = x == e ? d : x;6621 }6622#pragma omp atomic compare capture seq_cst6623 {6624 x = x > e ? e : x;6625 v = x;6626 }6627#pragma omp atomic compare capture seq_cst6628 {6629 x = x < e ? e : x;6630 v = x;6631 }6632#pragma omp atomic compare capture seq_cst6633 {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 capture6644// 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 capture6649// 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 capture6654// 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 capture6659// 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 capture6664// 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 capture6669// 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_rel6674// 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_rel6679// 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_rel6684// 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_rel6689// 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_rel6694// 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_rel6699// 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 acquire6704// 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 acquire6709// 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 acquire6714// 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 acquire6719// 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 acquire6724// 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 acquire6729// 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 relaxed6734// 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 relaxed6739// 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 relaxed6744// 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 relaxed6749// 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 relaxed6754// 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 relaxed6759// 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 release6764// 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 release6769// 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 release6774// 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 release6779// 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 release6784// 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 release6789// 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_cst6794// 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_cst6799// 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_cst6804// 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_cst6809// 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_cst6814// 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_cst6819// 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#endif6827 6828#endif6829