blob: 0deb8ac55343331db9e8f5cb79dd8d5d9880c196 [file] [log] [blame]
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --include-generated-funcs
// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -target-cpu core2 -fopenmp -fopenmp-version=51 -x c -emit-llvm %s -o - | FileCheck %s
// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -emit-pch -o %t %s
// RUN: %clang_cc1 -fopenmp -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch %t -verify %s -emit-llvm -o - | FileCheck %s
// RUN: %clang_cc1 -verify -triple x86_64-apple-darwin10 -target-cpu core2 -fopenmp-simd -fopenmp-version=51 -x c -emit-llvm %s -o - | FileCheck --check-prefix SIMD-ONLY0 %s
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -emit-pch -o %t %s
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=51 -x c -triple x86_64-apple-darwin10 -target-cpu core2 -include-pch %t -verify %s -emit-llvm -o - | FileCheck --check-prefix SIMD-ONLY0 %s
// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
// expected-no-diagnostics
#ifndef HEADER
#define HEADER
void foo(void) {
char cx, ce, cd;
unsigned char ucx, uce, ucd;
short sx, se, sd;
unsigned short usx, use, usd;
int ix, ie, id;
unsigned int uix, uie, uid;
long lx, le, ld;
unsigned long ulx, ule, uld;
long long llx, lle, lld;
unsigned long long ullx, ulle, ulld;
float fx, fe, fd;
double dx, de, dd;
#pragma omp atomic compare
cx = cx > ce ? ce : cx;
#pragma omp atomic compare
cx = cx < ce ? ce : cx;
#pragma omp atomic compare
cx = ce > cx ? ce : cx;
#pragma omp atomic compare
cx = ce < cx ? ce : cx;
#pragma omp atomic compare
if (cx > ce)
cx = ce;
#pragma omp atomic compare
if (cx < ce)
cx = ce;
#pragma omp atomic compare
if (ce > cx)
cx = ce;
#pragma omp atomic compare
if (ce < cx)
cx = ce;
#pragma omp atomic compare
cx = cx == ce ? cd : cx;
#pragma omp atomic compare
cx = ce == cx ? cd : cx;
#pragma omp atomic compare
if (cx == ce)
cx = cd;
#pragma omp atomic compare
if (ce == cx)
cx = cd;
#pragma omp atomic compare
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare acq_rel
cx = cx > ce ? ce : cx;
#pragma omp atomic compare acq_rel
cx = cx < ce ? ce : cx;
#pragma omp atomic compare acq_rel
cx = ce > cx ? ce : cx;
#pragma omp atomic compare acq_rel
cx = ce < cx ? ce : cx;
#pragma omp atomic compare acq_rel
if (cx > ce)
cx = ce;
#pragma omp atomic compare acq_rel
if (cx < ce)
cx = ce;
#pragma omp atomic compare acq_rel
if (ce > cx)
cx = ce;
#pragma omp atomic compare acq_rel
if (ce < cx)
cx = ce;
#pragma omp atomic compare acq_rel
cx = cx == ce ? cd : cx;
#pragma omp atomic compare acq_rel
cx = ce == cx ? cd : cx;
#pragma omp atomic compare acq_rel
if (cx == ce)
cx = cd;
#pragma omp atomic compare acq_rel
if (ce == cx)
cx = cd;
#pragma omp atomic compare acq_rel
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare acq_rel
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare acq_rel
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare acq_rel
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare acq_rel
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare acq_rel
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare acq_rel
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare acq_rel
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare acq_rel
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare acq_rel
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare acq_rel
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare acq_rel
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare acquire
cx = cx > ce ? ce : cx;
#pragma omp atomic compare acquire
cx = cx < ce ? ce : cx;
#pragma omp atomic compare acquire
cx = ce > cx ? ce : cx;
#pragma omp atomic compare acquire
cx = ce < cx ? ce : cx;
#pragma omp atomic compare acquire
if (cx > ce)
cx = ce;
#pragma omp atomic compare acquire
if (cx < ce)
cx = ce;
#pragma omp atomic compare acquire
if (ce > cx)
cx = ce;
#pragma omp atomic compare acquire
if (ce < cx)
cx = ce;
#pragma omp atomic compare acquire
cx = cx == ce ? cd : cx;
#pragma omp atomic compare acquire
cx = ce == cx ? cd : cx;
#pragma omp atomic compare acquire
if (cx == ce)
cx = cd;
#pragma omp atomic compare acquire
if (ce == cx)
cx = cd;
#pragma omp atomic compare acquire
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare acquire
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare acquire
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare acquire
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare acquire
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare acquire
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare acquire
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare acquire
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare acquire
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare acquire
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare acquire
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare acquire
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare relaxed
cx = cx > ce ? ce : cx;
#pragma omp atomic compare relaxed
cx = cx < ce ? ce : cx;
#pragma omp atomic compare relaxed
cx = ce > cx ? ce : cx;
#pragma omp atomic compare relaxed
cx = ce < cx ? ce : cx;
#pragma omp atomic compare relaxed
if (cx > ce)
cx = ce;
#pragma omp atomic compare relaxed
if (cx < ce)
cx = ce;
#pragma omp atomic compare relaxed
if (ce > cx)
cx = ce;
#pragma omp atomic compare relaxed
if (ce < cx)
cx = ce;
#pragma omp atomic compare relaxed
cx = cx == ce ? cd : cx;
#pragma omp atomic compare relaxed
cx = ce == cx ? cd : cx;
#pragma omp atomic compare relaxed
if (cx == ce)
cx = cd;
#pragma omp atomic compare relaxed
if (ce == cx)
cx = cd;
#pragma omp atomic compare relaxed
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare relaxed
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare relaxed
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare relaxed
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare relaxed
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare relaxed
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare relaxed
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare relaxed
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare relaxed
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare relaxed
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare relaxed
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare relaxed
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare release
cx = cx > ce ? ce : cx;
#pragma omp atomic compare release
cx = cx < ce ? ce : cx;
#pragma omp atomic compare release
cx = ce > cx ? ce : cx;
#pragma omp atomic compare release
cx = ce < cx ? ce : cx;
#pragma omp atomic compare release
if (cx > ce)
cx = ce;
#pragma omp atomic compare release
if (cx < ce)
cx = ce;
#pragma omp atomic compare release
if (ce > cx)
cx = ce;
#pragma omp atomic compare release
if (ce < cx)
cx = ce;
#pragma omp atomic compare release
cx = cx == ce ? cd : cx;
#pragma omp atomic compare release
cx = ce == cx ? cd : cx;
#pragma omp atomic compare release
if (cx == ce)
cx = cd;
#pragma omp atomic compare release
if (ce == cx)
cx = cd;
#pragma omp atomic compare release
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare release
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare release
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare release
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare release
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare release
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare release
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare release
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare release
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare release
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare release
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare release
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare seq_cst
cx = cx > ce ? ce : cx;
#pragma omp atomic compare seq_cst
cx = cx < ce ? ce : cx;
#pragma omp atomic compare seq_cst
cx = ce > cx ? ce : cx;
#pragma omp atomic compare seq_cst
cx = ce < cx ? ce : cx;
#pragma omp atomic compare seq_cst
if (cx > ce)
cx = ce;
#pragma omp atomic compare seq_cst
if (cx < ce)
cx = ce;
#pragma omp atomic compare seq_cst
if (ce > cx)
cx = ce;
#pragma omp atomic compare seq_cst
if (ce < cx)
cx = ce;
#pragma omp atomic compare seq_cst
cx = cx == ce ? cd : cx;
#pragma omp atomic compare seq_cst
cx = ce == cx ? cd : cx;
#pragma omp atomic compare seq_cst
if (cx == ce)
cx = cd;
#pragma omp atomic compare seq_cst
if (ce == cx)
cx = cd;
#pragma omp atomic compare seq_cst
ucx = ucx > uce ? uce : ucx;
#pragma omp atomic compare seq_cst
ucx = ucx < uce ? uce : ucx;
#pragma omp atomic compare seq_cst
ucx = uce > ucx ? uce : ucx;
#pragma omp atomic compare seq_cst
ucx = uce < ucx ? uce : ucx;
#pragma omp atomic compare seq_cst
if (ucx > uce)
ucx = uce;
#pragma omp atomic compare seq_cst
if (ucx < uce)
ucx = uce;
#pragma omp atomic compare seq_cst
if (uce > ucx)
ucx = uce;
#pragma omp atomic compare seq_cst
if (uce < ucx)
ucx = uce;
#pragma omp atomic compare seq_cst
ucx = ucx == uce ? ucd : ucx;
#pragma omp atomic compare seq_cst
ucx = uce == ucx ? ucd : ucx;
#pragma omp atomic compare seq_cst
if (ucx == uce)
ucx = ucd;
#pragma omp atomic compare seq_cst
if (uce == ucx)
ucx = ucd;
#pragma omp atomic compare
sx = sx > se ? se : sx;
#pragma omp atomic compare
sx = sx < se ? se : sx;
#pragma omp atomic compare
sx = se > sx ? se : sx;
#pragma omp atomic compare
sx = se < sx ? se : sx;
#pragma omp atomic compare
if (sx > se)
sx = se;
#pragma omp atomic compare
if (sx < se)
sx = se;
#pragma omp atomic compare
if (se > sx)
sx = se;
#pragma omp atomic compare
if (se < sx)
sx = se;
#pragma omp atomic compare
sx = sx == se ? sd : sx;
#pragma omp atomic compare
sx = se == sx ? sd : sx;
#pragma omp atomic compare
if (sx == se)
sx = sd;
#pragma omp atomic compare
if (se == sx)
sx = sd;
#pragma omp atomic compare
usx = usx > use ? use : usx;
#pragma omp atomic compare
usx = usx < use ? use : usx;
#pragma omp atomic compare
usx = use > usx ? use : usx;
#pragma omp atomic compare
usx = use < usx ? use : usx;
#pragma omp atomic compare
if (usx > use)
usx = use;
#pragma omp atomic compare
if (usx < use)
usx = use;
#pragma omp atomic compare
if (use > usx)
usx = use;
#pragma omp atomic compare
if (use < usx)
usx = use;
#pragma omp atomic compare
usx = usx == use ? usd : usx;
#pragma omp atomic compare
usx = use == usx ? usd : usx;
#pragma omp atomic compare
if (usx == use)
usx = usd;
#pragma omp atomic compare
if (use == usx)
usx = usd;
#pragma omp atomic compare acq_rel
sx = sx > se ? se : sx;
#pragma omp atomic compare acq_rel
sx = sx < se ? se : sx;
#pragma omp atomic compare acq_rel
sx = se > sx ? se : sx;
#pragma omp atomic compare acq_rel
sx = se < sx ? se : sx;
#pragma omp atomic compare acq_rel
if (sx > se)
sx = se;
#pragma omp atomic compare acq_rel
if (sx < se)
sx = se;
#pragma omp atomic compare acq_rel
if (se > sx)
sx = se;
#pragma omp atomic compare acq_rel
if (se < sx)
sx = se;
#pragma omp atomic compare acq_rel
sx = sx == se ? sd : sx;
#pragma omp atomic compare acq_rel
sx = se == sx ? sd : sx;
#pragma omp atomic compare acq_rel
if (sx == se)
sx = sd;
#pragma omp atomic compare acq_rel
if (se == sx)
sx = sd;
#pragma omp atomic compare acq_rel
usx = usx > use ? use : usx;
#pragma omp atomic compare acq_rel
usx = usx < use ? use : usx;
#pragma omp atomic compare acq_rel
usx = use > usx ? use : usx;
#pragma omp atomic compare acq_rel
usx = use < usx ? use : usx;
#pragma omp atomic compare acq_rel
if (usx > use)
usx = use;
#pragma omp atomic compare acq_rel
if (usx < use)
usx = use;
#pragma omp atomic compare acq_rel
if (use > usx)
usx = use;
#pragma omp atomic compare acq_rel
if (use < usx)
usx = use;
#pragma omp atomic compare acq_rel
usx = usx == use ? usd : usx;
#pragma omp atomic compare acq_rel
usx = use == usx ? usd : usx;
#pragma omp atomic compare acq_rel
if (usx == use)
usx = usd;
#pragma omp atomic compare acq_rel
if (use == usx)
usx = usd;
#pragma omp atomic compare acquire
sx = sx > se ? se : sx;
#pragma omp atomic compare acquire
sx = sx < se ? se : sx;
#pragma omp atomic compare acquire
sx = se > sx ? se : sx;
#pragma omp atomic compare acquire
sx = se < sx ? se : sx;
#pragma omp atomic compare acquire
if (sx > se)
sx = se;
#pragma omp atomic compare acquire
if (sx < se)
sx = se;
#pragma omp atomic compare acquire
if (se > sx)
sx = se;
#pragma omp atomic compare acquire
if (se < sx)
sx = se;
#pragma omp atomic compare acquire
sx = sx == se ? sd : sx;
#pragma omp atomic compare acquire
sx = se == sx ? sd : sx;
#pragma omp atomic compare acquire
if (sx == se)
sx = sd;
#pragma omp atomic compare acquire
if (se == sx)
sx = sd;
#pragma omp atomic compare acquire
usx = usx > use ? use : usx;
#pragma omp atomic compare acquire
usx = usx < use ? use : usx;
#pragma omp atomic compare acquire
usx = use > usx ? use : usx;
#pragma omp atomic compare acquire
usx = use < usx ? use : usx;
#pragma omp atomic compare acquire
if (usx > use)
usx = use;
#pragma omp atomic compare acquire
if (usx < use)
usx = use;
#pragma omp atomic compare acquire
if (use > usx)
usx = use;
#pragma omp atomic compare acquire
if (use < usx)
usx = use;
#pragma omp atomic compare acquire
usx = usx == use ? usd : usx;
#pragma omp atomic compare acquire
usx = use == usx ? usd : usx;
#pragma omp atomic compare acquire
if (usx == use)
usx = usd;
#pragma omp atomic compare acquire
if (use == usx)
usx = usd;
#pragma omp atomic compare relaxed
sx = sx > se ? se : sx;
#pragma omp atomic compare relaxed
sx = sx < se ? se : sx;
#pragma omp atomic compare relaxed
sx = se > sx ? se : sx;
#pragma omp atomic compare relaxed
sx = se < sx ? se : sx;
#pragma omp atomic compare relaxed
if (sx > se)
sx = se;
#pragma omp atomic compare relaxed
if (sx < se)
sx = se;
#pragma omp atomic compare relaxed
if (se > sx)
sx = se;
#pragma omp atomic compare relaxed
if (se < sx)
sx = se;
#pragma omp atomic compare relaxed
sx = sx == se ? sd : sx;
#pragma omp atomic compare relaxed
sx = se == sx ? sd : sx;
#pragma omp atomic compare relaxed
if (sx == se)
sx = sd;
#pragma omp atomic compare relaxed
if (se == sx)
sx = sd;
#pragma omp atomic compare relaxed
usx = usx > use ? use : usx;
#pragma omp atomic compare relaxed
usx = usx < use ? use : usx;
#pragma omp atomic compare relaxed
usx = use > usx ? use : usx;
#pragma omp atomic compare relaxed
usx = use < usx ? use : usx;
#pragma omp atomic compare relaxed
if (usx > use)
usx = use;
#pragma omp atomic compare relaxed
if (usx < use)
usx = use;
#pragma omp atomic compare relaxed
if (use > usx)
usx = use;
#pragma omp atomic compare relaxed
if (use < usx)
usx = use;
#pragma omp atomic compare relaxed
usx = usx == use ? usd : usx;
#pragma omp atomic compare relaxed
usx = use == usx ? usd : usx;
#pragma omp atomic compare relaxed
if (usx == use)
usx = usd;
#pragma omp atomic compare relaxed
if (use == usx)
usx = usd;
#pragma omp atomic compare release
sx = sx > se ? se : sx;
#pragma omp atomic compare release
sx = sx < se ? se : sx;
#pragma omp atomic compare release
sx = se > sx ? se : sx;
#pragma omp atomic compare release
sx = se < sx ? se : sx;
#pragma omp atomic compare release
if (sx > se)
sx = se;
#pragma omp atomic compare release
if (sx < se)
sx = se;
#pragma omp atomic compare release
if (se > sx)
sx = se;
#pragma omp atomic compare release
if (se < sx)
sx = se;
#pragma omp atomic compare release
sx = sx == se ? sd : sx;
#pragma omp atomic compare release
sx = se == sx ? sd : sx;
#pragma omp atomic compare release
if (sx == se)
sx = sd;
#pragma omp atomic compare release
if (se == sx)
sx = sd;
#pragma omp atomic compare release
usx = usx > use ? use : usx;
#pragma omp atomic compare release
usx = usx < use ? use : usx;
#pragma omp atomic compare release
usx = use > usx ? use : usx;
#pragma omp atomic compare release
usx = use < usx ? use : usx;
#pragma omp atomic compare release
if (usx > use)
usx = use;
#pragma omp atomic compare release
if (usx < use)
usx = use;
#pragma omp atomic compare release
if (use > usx)
usx = use;
#pragma omp atomic compare release
if (use < usx)
usx = use;
#pragma omp atomic compare release
usx = usx == use ? usd : usx;
#pragma omp atomic compare release
usx = use == usx ? usd : usx;
#pragma omp atomic compare release
if (usx == use)
usx = usd;
#pragma omp atomic compare release
if (use == usx)
usx = usd;
#pragma omp atomic compare seq_cst
sx = sx > se ? se : sx;
#pragma omp atomic compare seq_cst
sx = sx < se ? se : sx;
#pragma omp atomic compare seq_cst
sx = se > sx ? se : sx;
#pragma omp atomic compare seq_cst
sx = se < sx ? se : sx;
#pragma omp atomic compare seq_cst
if (sx > se)
sx = se;
#pragma omp atomic compare seq_cst
if (sx < se)
sx = se;
#pragma omp atomic compare seq_cst
if (se > sx)
sx = se;
#pragma omp atomic compare seq_cst
if (se < sx)
sx = se;
#pragma omp atomic compare seq_cst
sx = sx == se ? sd : sx;
#pragma omp atomic compare seq_cst
sx = se == sx ? sd : sx;
#pragma omp atomic compare seq_cst
if (sx == se)
sx = sd;
#pragma omp atomic compare seq_cst
if (se == sx)
sx = sd;
#pragma omp atomic compare seq_cst
usx = usx > use ? use : usx;
#pragma omp atomic compare seq_cst
usx = usx < use ? use : usx;
#pragma omp atomic compare seq_cst
usx = use > usx ? use : usx;
#pragma omp atomic compare seq_cst
usx = use < usx ? use : usx;
#pragma omp atomic compare seq_cst
if (usx > use)
usx = use;
#pragma omp atomic compare seq_cst
if (usx < use)
usx = use;
#pragma omp atomic compare seq_cst
if (use > usx)
usx = use;
#pragma omp atomic compare seq_cst
if (use < usx)
usx = use;
#pragma omp atomic compare seq_cst
usx = usx == use ? usd : usx;
#pragma omp atomic compare seq_cst
usx = use == usx ? usd : usx;
#pragma omp atomic compare seq_cst
if (usx == use)
usx = usd;
#pragma omp atomic compare seq_cst
if (use == usx)
usx = usd;
#pragma omp atomic compare
ix = ix > ie ? ie : ix;
#pragma omp atomic compare
ix = ix < ie ? ie : ix;
#pragma omp atomic compare
ix = ie > ix ? ie : ix;
#pragma omp atomic compare
ix = ie < ix ? ie : ix;
#pragma omp atomic compare
if (ix > ie)
ix = ie;
#pragma omp atomic compare
if (ix < ie)
ix = ie;
#pragma omp atomic compare
if (ie > ix)
ix = ie;
#pragma omp atomic compare
if (ie < ix)
ix = ie;
#pragma omp atomic compare
ix = ix == ie ? id : ix;
#pragma omp atomic compare
ix = ie == ix ? id : ix;
#pragma omp atomic compare
if (ix == ie)
ix = id;
#pragma omp atomic compare
if (ie == ix)
ix = id;
#pragma omp atomic compare
uix = uix > uie ? uie : uix;
#pragma omp atomic compare
uix = uix < uie ? uie : uix;
#pragma omp atomic compare
uix = uie > uix ? uie : uix;
#pragma omp atomic compare
uix = uie < uix ? uie : uix;
#pragma omp atomic compare
if (uix > uie)
uix = uie;
#pragma omp atomic compare
if (uix < uie)
uix = uie;
#pragma omp atomic compare
if (uie > uix)
uix = uie;
#pragma omp atomic compare
if (uie < uix)
uix = uie;
#pragma omp atomic compare
uix = uix == uie ? uid : uix;
#pragma omp atomic compare
uix = uie == uix ? uid : uix;
#pragma omp atomic compare
if (uix == uie)
uix = uid;
#pragma omp atomic compare
if (uie == uix)
uix = uid;
#pragma omp atomic compare acq_rel
ix = ix > ie ? ie : ix;
#pragma omp atomic compare acq_rel
ix = ix < ie ? ie : ix;
#pragma omp atomic compare acq_rel
ix = ie > ix ? ie : ix;
#pragma omp atomic compare acq_rel
ix = ie < ix ? ie : ix;
#pragma omp atomic compare acq_rel
if (ix > ie)
ix = ie;
#pragma omp atomic compare acq_rel
if (ix < ie)
ix = ie;
#pragma omp atomic compare acq_rel
if (ie > ix)
ix = ie;
#pragma omp atomic compare acq_rel
if (ie < ix)
ix = ie;
#pragma omp atomic compare acq_rel
ix = ix == ie ? id : ix;
#pragma omp atomic compare acq_rel
ix = ie == ix ? id : ix;
#pragma omp atomic compare acq_rel
if (ix == ie)
ix = id;
#pragma omp atomic compare acq_rel
if (ie == ix)
ix = id;
#pragma omp atomic compare acq_rel
uix = uix > uie ? uie : uix;
#pragma omp atomic compare acq_rel
uix = uix < uie ? uie : uix;
#pragma omp atomic compare acq_rel
uix = uie > uix ? uie : uix;
#pragma omp atomic compare acq_rel
uix = uie < uix ? uie : uix;
#pragma omp atomic compare acq_rel
if (uix > uie)
uix = uie;
#pragma omp atomic compare acq_rel
if (uix < uie)
uix = uie;
#pragma omp atomic compare acq_rel
if (uie > uix)
uix = uie;
#pragma omp atomic compare acq_rel
if (uie < uix)
uix = uie;
#pragma omp atomic compare acq_rel
uix = uix == uie ? uid : uix;
#pragma omp atomic compare acq_rel
uix = uie == uix ? uid : uix;
#pragma omp atomic compare acq_rel
if (uix == uie)
uix = uid;
#pragma omp atomic compare acq_rel
if (uie == uix)
uix = uid;
#pragma omp atomic compare acquire
ix = ix > ie ? ie : ix;
#pragma omp atomic compare acquire
ix = ix < ie ? ie : ix;
#pragma omp atomic compare acquire
ix = ie > ix ? ie : ix;
#pragma omp atomic compare acquire
ix = ie < ix ? ie : ix;
#pragma omp atomic compare acquire
if (ix > ie)
ix = ie;
#pragma omp atomic compare acquire
if (ix < ie)
ix = ie;
#pragma omp atomic compare acquire
if (ie > ix)
ix = ie;
#pragma omp atomic compare acquire
if (ie < ix)
ix = ie;
#pragma omp atomic compare acquire
ix = ix == ie ? id : ix;
#pragma omp atomic compare acquire
ix = ie == ix ? id : ix;
#pragma omp atomic compare acquire
if (ix == ie)
ix = id;
#pragma omp atomic compare acquire
if (ie == ix)
ix = id;
#pragma omp atomic compare acquire
uix = uix > uie ? uie : uix;
#pragma omp atomic compare acquire
uix = uix < uie ? uie : uix;
#pragma omp atomic compare acquire
uix = uie > uix ? uie : uix;
#pragma omp atomic compare acquire
uix = uie < uix ? uie : uix;
#pragma omp atomic compare acquire
if (uix > uie)
uix = uie;
#pragma omp atomic compare acquire
if (uix < uie)
uix = uie;
#pragma omp atomic compare acquire
if (uie > uix)
uix = uie;
#pragma omp atomic compare acquire
if (uie < uix)
uix = uie;
#pragma omp atomic compare acquire
uix = uix == uie ? uid : uix;
#pragma omp atomic compare acquire
uix = uie == uix ? uid : uix;
#pragma omp atomic compare acquire
if (uix == uie)
uix = uid;
#pragma omp atomic compare acquire
if (uie == uix)
uix = uid;
#pragma omp atomic compare relaxed
ix = ix > ie ? ie : ix;
#pragma omp atomic compare relaxed
ix = ix < ie ? ie : ix;
#pragma omp atomic compare relaxed
ix = ie > ix ? ie : ix;
#pragma omp atomic compare relaxed
ix = ie < ix ? ie : ix;
#pragma omp atomic compare relaxed
if (ix > ie)
ix = ie;
#pragma omp atomic compare relaxed
if (ix < ie)
ix = ie;
#pragma omp atomic compare relaxed
if (ie > ix)
ix = ie;
#pragma omp atomic compare relaxed
if (ie < ix)
ix = ie;
#pragma omp atomic compare relaxed
ix = ix == ie ? id : ix;
#pragma omp atomic compare relaxed
ix = ie == ix ? id : ix;
#pragma omp atomic compare relaxed
if (ix == ie)
ix = id;
#pragma omp atomic compare relaxed
if (ie == ix)
ix = id;
#pragma omp atomic compare relaxed
uix = uix > uie ? uie : uix;
#pragma omp atomic compare relaxed
uix = uix < uie ? uie : uix;
#pragma omp atomic compare relaxed
uix = uie > uix ? uie : uix;
#pragma omp atomic compare relaxed
uix = uie < uix ? uie : uix;
#pragma omp atomic compare relaxed
if (uix > uie)
uix = uie;
#pragma omp atomic compare relaxed
if (uix < uie)
uix = uie;
#pragma omp atomic compare relaxed
if (uie > uix)
uix = uie;
#pragma omp atomic compare relaxed
if (uie < uix)
uix = uie;
#pragma omp atomic compare relaxed
uix = uix == uie ? uid : uix;
#pragma omp atomic compare relaxed
uix = uie == uix ? uid : uix;
#pragma omp atomic compare relaxed
if (uix == uie)
uix = uid;
#pragma omp atomic compare relaxed
if (uie == uix)
uix = uid;
#pragma omp atomic compare release
ix = ix > ie ? ie : ix;
#pragma omp atomic compare release
ix = ix < ie ? ie : ix;
#pragma omp atomic compare release
ix = ie > ix ? ie : ix;
#pragma omp atomic compare release
ix = ie < ix ? ie : ix;
#pragma omp atomic compare release
if (ix > ie)
ix = ie;
#pragma omp atomic compare release
if (ix < ie)
ix = ie;
#pragma omp atomic compare release
if (ie > ix)
ix = ie;
#pragma omp atomic compare release
if (ie < ix)
ix = ie;
#pragma omp atomic compare release
ix = ix == ie ? id : ix;
#pragma omp atomic compare release
ix = ie == ix ? id : ix;
#pragma omp atomic compare release
if (ix == ie)
ix = id;
#pragma omp atomic compare release
if (ie == ix)
ix = id;
#pragma omp atomic compare release
uix = uix > uie ? uie : uix;
#pragma omp atomic compare release
uix = uix < uie ? uie : uix;
#pragma omp atomic compare release
uix = uie > uix ? uie : uix;
#pragma omp atomic compare release
uix = uie < uix ? uie : uix;
#pragma omp atomic compare release
if (uix > uie)
uix = uie;
#pragma omp atomic compare release
if (uix < uie)
uix = uie;
#pragma omp atomic compare release
if (uie > uix)
uix = uie;
#pragma omp atomic compare release
if (uie < uix)
uix = uie;
#pragma omp atomic compare release
uix = uix == uie ? uid : uix;
#pragma omp atomic compare release
uix = uie == uix ? uid : uix;
#pragma omp atomic compare release
if (uix == uie)
uix = uid;
#pragma omp atomic compare release
if (uie == uix)
uix = uid;
#pragma omp atomic compare seq_cst
ix = ix > ie ? ie : ix;
#pragma omp atomic compare seq_cst
ix = ix < ie ? ie : ix;
#pragma omp atomic compare seq_cst
ix = ie > ix ? ie : ix;
#pragma omp atomic compare seq_cst
ix = ie < ix ? ie : ix;
#pragma omp atomic compare seq_cst
if (ix > ie)
ix = ie;
#pragma omp atomic compare seq_cst
if (ix < ie)
ix = ie;
#pragma omp atomic compare seq_cst
if (ie > ix)
ix = ie;
#pragma omp atomic compare seq_cst
if (ie < ix)
ix = ie;
#pragma omp atomic compare seq_cst
ix = ix == ie ? id : ix;
#pragma omp atomic compare seq_cst
ix = ie == ix ? id : ix;
#pragma omp atomic compare seq_cst
if (ix == ie)
ix = id;
#pragma omp atomic compare seq_cst
if (ie == ix)
ix = id;
#pragma omp atomic compare seq_cst
uix = uix > uie ? uie : uix;
#pragma omp atomic compare seq_cst
uix = uix < uie ? uie : uix;
#pragma omp atomic compare seq_cst
uix = uie > uix ? uie : uix;
#pragma omp atomic compare seq_cst
uix = uie < uix ? uie : uix;
#pragma omp atomic compare seq_cst
if (uix > uie)
uix = uie;
#pragma omp atomic compare seq_cst
if (uix < uie)
uix = uie;
#pragma omp atomic compare seq_cst
if (uie > uix)
uix = uie;
#pragma omp atomic compare seq_cst
if (uie < uix)
uix = uie;
#pragma omp atomic compare seq_cst
uix = uix == uie ? uid : uix;
#pragma omp atomic compare seq_cst
uix = uie == uix ? uid : uix;
#pragma omp atomic compare seq_cst
if (uix == uie)
uix = uid;
#pragma omp atomic compare seq_cst
if (uie == uix)
uix = uid;
#pragma omp atomic compare
lx = lx > le ? le : lx;
#pragma omp atomic compare
lx = lx < le ? le : lx;
#pragma omp atomic compare
lx = le > lx ? le : lx;
#pragma omp atomic compare
lx = le < lx ? le : lx;
#pragma omp atomic compare
if (lx > le)
lx = le;
#pragma omp atomic compare
if (lx < le)
lx = le;
#pragma omp atomic compare
if (le > lx)
lx = le;
#pragma omp atomic compare
if (le < lx)
lx = le;
#pragma omp atomic compare
lx = lx == le ? ld : lx;
#pragma omp atomic compare
lx = le == lx ? ld : lx;
#pragma omp atomic compare
if (lx == le)
lx = ld;
#pragma omp atomic compare
if (le == lx)
lx = ld;
#pragma omp atomic compare
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare acq_rel
lx = lx > le ? le : lx;
#pragma omp atomic compare acq_rel
lx = lx < le ? le : lx;
#pragma omp atomic compare acq_rel
lx = le > lx ? le : lx;
#pragma omp atomic compare acq_rel
lx = le < lx ? le : lx;
#pragma omp atomic compare acq_rel
if (lx > le)
lx = le;
#pragma omp atomic compare acq_rel
if (lx < le)
lx = le;
#pragma omp atomic compare acq_rel
if (le > lx)
lx = le;
#pragma omp atomic compare acq_rel
if (le < lx)
lx = le;
#pragma omp atomic compare acq_rel
lx = lx == le ? ld : lx;
#pragma omp atomic compare acq_rel
lx = le == lx ? ld : lx;
#pragma omp atomic compare acq_rel
if (lx == le)
lx = ld;
#pragma omp atomic compare acq_rel
if (le == lx)
lx = ld;
#pragma omp atomic compare acq_rel
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare acq_rel
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare acq_rel
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare acq_rel
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare acq_rel
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare acq_rel
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare acq_rel
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare acq_rel
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare acq_rel
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare acq_rel
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare acq_rel
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare acq_rel
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare acquire
lx = lx > le ? le : lx;
#pragma omp atomic compare acquire
lx = lx < le ? le : lx;
#pragma omp atomic compare acquire
lx = le > lx ? le : lx;
#pragma omp atomic compare acquire
lx = le < lx ? le : lx;
#pragma omp atomic compare acquire
if (lx > le)
lx = le;
#pragma omp atomic compare acquire
if (lx < le)
lx = le;
#pragma omp atomic compare acquire
if (le > lx)
lx = le;
#pragma omp atomic compare acquire
if (le < lx)
lx = le;
#pragma omp atomic compare acquire
lx = lx == le ? ld : lx;
#pragma omp atomic compare acquire
lx = le == lx ? ld : lx;
#pragma omp atomic compare acquire
if (lx == le)
lx = ld;
#pragma omp atomic compare acquire
if (le == lx)
lx = ld;
#pragma omp atomic compare acquire
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare acquire
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare acquire
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare acquire
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare acquire
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare acquire
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare acquire
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare acquire
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare acquire
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare acquire
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare acquire
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare acquire
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare relaxed
lx = lx > le ? le : lx;
#pragma omp atomic compare relaxed
lx = lx < le ? le : lx;
#pragma omp atomic compare relaxed
lx = le > lx ? le : lx;
#pragma omp atomic compare relaxed
lx = le < lx ? le : lx;
#pragma omp atomic compare relaxed
if (lx > le)
lx = le;
#pragma omp atomic compare relaxed
if (lx < le)
lx = le;
#pragma omp atomic compare relaxed
if (le > lx)
lx = le;
#pragma omp atomic compare relaxed
if (le < lx)
lx = le;
#pragma omp atomic compare relaxed
lx = lx == le ? ld : lx;
#pragma omp atomic compare relaxed
lx = le == lx ? ld : lx;
#pragma omp atomic compare relaxed
if (lx == le)
lx = ld;
#pragma omp atomic compare relaxed
if (le == lx)
lx = ld;
#pragma omp atomic compare relaxed
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare relaxed
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare relaxed
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare relaxed
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare relaxed
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare relaxed
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare relaxed
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare relaxed
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare relaxed
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare relaxed
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare relaxed
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare relaxed
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare release
lx = lx > le ? le : lx;
#pragma omp atomic compare release
lx = lx < le ? le : lx;
#pragma omp atomic compare release
lx = le > lx ? le : lx;
#pragma omp atomic compare release
lx = le < lx ? le : lx;
#pragma omp atomic compare release
if (lx > le)
lx = le;
#pragma omp atomic compare release
if (lx < le)
lx = le;
#pragma omp atomic compare release
if (le > lx)
lx = le;
#pragma omp atomic compare release
if (le < lx)
lx = le;
#pragma omp atomic compare release
lx = lx == le ? ld : lx;
#pragma omp atomic compare release
lx = le == lx ? ld : lx;
#pragma omp atomic compare release
if (lx == le)
lx = ld;
#pragma omp atomic compare release
if (le == lx)
lx = ld;
#pragma omp atomic compare release
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare release
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare release
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare release
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare release
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare release
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare release
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare release
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare release
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare release
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare release
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare release
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare seq_cst
lx = lx > le ? le : lx;
#pragma omp atomic compare seq_cst
lx = lx < le ? le : lx;
#pragma omp atomic compare seq_cst
lx = le > lx ? le : lx;
#pragma omp atomic compare seq_cst
lx = le < lx ? le : lx;
#pragma omp atomic compare seq_cst
if (lx > le)
lx = le;
#pragma omp atomic compare seq_cst
if (lx < le)
lx = le;
#pragma omp atomic compare seq_cst
if (le > lx)
lx = le;
#pragma omp atomic compare seq_cst
if (le < lx)
lx = le;
#pragma omp atomic compare seq_cst
lx = lx == le ? ld : lx;
#pragma omp atomic compare seq_cst
lx = le == lx ? ld : lx;
#pragma omp atomic compare seq_cst
if (lx == le)
lx = ld;
#pragma omp atomic compare seq_cst
if (le == lx)
lx = ld;
#pragma omp atomic compare seq_cst
ulx = ulx > ule ? ule : ulx;
#pragma omp atomic compare seq_cst
ulx = ulx < ule ? ule : ulx;
#pragma omp atomic compare seq_cst
ulx = ule > ulx ? ule : ulx;
#pragma omp atomic compare seq_cst
ulx = ule < ulx ? ule : ulx;
#pragma omp atomic compare seq_cst
if (ulx > ule)
ulx = ule;
#pragma omp atomic compare seq_cst
if (ulx < ule)
ulx = ule;
#pragma omp atomic compare seq_cst
if (ule > ulx)
ulx = ule;
#pragma omp atomic compare seq_cst
if (ule < ulx)
ulx = ule;
#pragma omp atomic compare seq_cst
ulx = ulx == ule ? uld : ulx;
#pragma omp atomic compare seq_cst
ulx = ule == ulx ? uld : ulx;
#pragma omp atomic compare seq_cst
if (ulx == ule)
ulx = uld;
#pragma omp atomic compare seq_cst
if (ule == ulx)
ulx = uld;
#pragma omp atomic compare
llx = llx > lle ? lle : llx;
#pragma omp atomic compare
llx = llx < lle ? lle : llx;
#pragma omp atomic compare
llx = lle > llx ? lle : llx;
#pragma omp atomic compare
llx = lle < llx ? lle : llx;
#pragma omp atomic compare
if (llx > lle)
llx = lle;
#pragma omp atomic compare
if (llx < lle)
llx = lle;
#pragma omp atomic compare
if (lle > llx)
llx = lle;
#pragma omp atomic compare
if (lle < llx)
llx = lle;
#pragma omp atomic compare
llx = llx == lle ? lld : llx;
#pragma omp atomic compare
llx = lle == llx ? lld : llx;
#pragma omp atomic compare
if (llx == lle)
llx = lld;
#pragma omp atomic compare
if (lle == llx)
llx = lld;
#pragma omp atomic compare
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare acq_rel
llx = llx > lle ? lle : llx;
#pragma omp atomic compare acq_rel
llx = llx < lle ? lle : llx;
#pragma omp atomic compare acq_rel
llx = lle > llx ? lle : llx;
#pragma omp atomic compare acq_rel
llx = lle < llx ? lle : llx;
#pragma omp atomic compare acq_rel
if (llx > lle)
llx = lle;
#pragma omp atomic compare acq_rel
if (llx < lle)
llx = lle;
#pragma omp atomic compare acq_rel
if (lle > llx)
llx = lle;
#pragma omp atomic compare acq_rel
if (lle < llx)
llx = lle;
#pragma omp atomic compare acq_rel
llx = llx == lle ? lld : llx;
#pragma omp atomic compare acq_rel
llx = lle == llx ? lld : llx;
#pragma omp atomic compare acq_rel
if (llx == lle)
llx = lld;
#pragma omp atomic compare acq_rel
if (lle == llx)
llx = lld;
#pragma omp atomic compare acq_rel
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare acq_rel
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare acq_rel
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare acq_rel
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare acq_rel
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare acq_rel
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare acq_rel
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare acq_rel
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare acq_rel
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare acq_rel
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare acq_rel
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare acq_rel
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare acquire
llx = llx > lle ? lle : llx;
#pragma omp atomic compare acquire
llx = llx < lle ? lle : llx;
#pragma omp atomic compare acquire
llx = lle > llx ? lle : llx;
#pragma omp atomic compare acquire
llx = lle < llx ? lle : llx;
#pragma omp atomic compare acquire
if (llx > lle)
llx = lle;
#pragma omp atomic compare acquire
if (llx < lle)
llx = lle;
#pragma omp atomic compare acquire
if (lle > llx)
llx = lle;
#pragma omp atomic compare acquire
if (lle < llx)
llx = lle;
#pragma omp atomic compare acquire
llx = llx == lle ? lld : llx;
#pragma omp atomic compare acquire
llx = lle == llx ? lld : llx;
#pragma omp atomic compare acquire
if (llx == lle)
llx = lld;
#pragma omp atomic compare acquire
if (lle == llx)
llx = lld;
#pragma omp atomic compare acquire
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare acquire
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare acquire
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare acquire
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare acquire
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare acquire
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare acquire
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare acquire
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare acquire
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare acquire
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare acquire
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare acquire
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare relaxed
llx = llx > lle ? lle : llx;
#pragma omp atomic compare relaxed
llx = llx < lle ? lle : llx;
#pragma omp atomic compare relaxed
llx = lle > llx ? lle : llx;
#pragma omp atomic compare relaxed
llx = lle < llx ? lle : llx;
#pragma omp atomic compare relaxed
if (llx > lle)
llx = lle;
#pragma omp atomic compare relaxed
if (llx < lle)
llx = lle;
#pragma omp atomic compare relaxed
if (lle > llx)
llx = lle;
#pragma omp atomic compare relaxed
if (lle < llx)
llx = lle;
#pragma omp atomic compare relaxed
llx = llx == lle ? lld : llx;
#pragma omp atomic compare relaxed
llx = lle == llx ? lld : llx;
#pragma omp atomic compare relaxed
if (llx == lle)
llx = lld;
#pragma omp atomic compare relaxed
if (lle == llx)
llx = lld;
#pragma omp atomic compare relaxed
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare relaxed
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare relaxed
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare relaxed
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare relaxed
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare relaxed
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare relaxed
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare relaxed
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare relaxed
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare relaxed
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare relaxed
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare relaxed
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare release
llx = llx > lle ? lle : llx;
#pragma omp atomic compare release
llx = llx < lle ? lle : llx;
#pragma omp atomic compare release
llx = lle > llx ? lle : llx;
#pragma omp atomic compare release
llx = lle < llx ? lle : llx;
#pragma omp atomic compare release
if (llx > lle)
llx = lle;
#pragma omp atomic compare release
if (llx < lle)
llx = lle;
#pragma omp atomic compare release
if (lle > llx)
llx = lle;
#pragma omp atomic compare release
if (lle < llx)
llx = lle;
#pragma omp atomic compare release
llx = llx == lle ? lld : llx;
#pragma omp atomic compare release
llx = lle == llx ? lld : llx;
#pragma omp atomic compare release
if (llx == lle)
llx = lld;
#pragma omp atomic compare release
if (lle == llx)
llx = lld;
#pragma omp atomic compare release
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare release
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare release
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare release
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare release
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare release
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare release
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare release
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare release
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare release
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare release
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare release
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare seq_cst
llx = llx > lle ? lle : llx;
#pragma omp atomic compare seq_cst
llx = llx < lle ? lle : llx;
#pragma omp atomic compare seq_cst
llx = lle > llx ? lle : llx;
#pragma omp atomic compare seq_cst
llx = lle < llx ? lle : llx;
#pragma omp atomic compare seq_cst
if (llx > lle)
llx = lle;
#pragma omp atomic compare seq_cst
if (llx < lle)
llx = lle;
#pragma omp atomic compare seq_cst
if (lle > llx)
llx = lle;
#pragma omp atomic compare seq_cst
if (lle < llx)
llx = lle;
#pragma omp atomic compare seq_cst
llx = llx == lle ? lld : llx;
#pragma omp atomic compare seq_cst
llx = lle == llx ? lld : llx;
#pragma omp atomic compare seq_cst
if (llx == lle)
llx = lld;
#pragma omp atomic compare seq_cst
if (lle == llx)
llx = lld;
#pragma omp atomic compare seq_cst
ullx = ullx > ulle ? ulle : ullx;
#pragma omp atomic compare seq_cst
ullx = ullx < ulle ? ulle : ullx;
#pragma omp atomic compare seq_cst
ullx = ulle > ullx ? ulle : ullx;
#pragma omp atomic compare seq_cst
ullx = ulle < ullx ? ulle : ullx;
#pragma omp atomic compare seq_cst
if (ullx > ulle)
ullx = ulle;
#pragma omp atomic compare seq_cst
if (ullx < ulle)
ullx = ulle;
#pragma omp atomic compare seq_cst
if (ulle > ullx)
ullx = ulle;
#pragma omp atomic compare seq_cst
if (ulle < ullx)
ullx = ulle;
#pragma omp atomic compare seq_cst
ullx = ullx == ulle ? ulld : ullx;
#pragma omp atomic compare seq_cst
ullx = ulle == ullx ? ulld : ullx;
#pragma omp atomic compare seq_cst
if (ullx == ulle)
ullx = ulld;
#pragma omp atomic compare seq_cst
if (ulle == ullx)
ullx = ulld;
#pragma omp atomic compare
fx = fx > fe ? fe : fx;
#pragma omp atomic compare
fx = fx < fe ? fe : fx;
#pragma omp atomic compare
fx = fe > fx ? fe : fx;
#pragma omp atomic compare
fx = fe < fx ? fe : fx;
#pragma omp atomic compare
if (fx > fe)
fx = fe;
#pragma omp atomic compare
if (fx < fe)
fx = fe;
#pragma omp atomic compare
if (fe > fx)
fx = fe;
#pragma omp atomic compare
if (fe < fx)
fx = fe;
#pragma omp atomic compare acq_rel
fx = fx > fe ? fe : fx;
#pragma omp atomic compare acq_rel
fx = fx < fe ? fe : fx;
#pragma omp atomic compare acq_rel
fx = fe > fx ? fe : fx;
#pragma omp atomic compare acq_rel
fx = fe < fx ? fe : fx;
#pragma omp atomic compare acq_rel
if (fx > fe)
fx = fe;
#pragma omp atomic compare acq_rel
if (fx < fe)
fx = fe;
#pragma omp atomic compare acq_rel
if (fe > fx)
fx = fe;
#pragma omp atomic compare acq_rel
if (fe < fx)
fx = fe;
#pragma omp atomic compare acquire
fx = fx > fe ? fe : fx;
#pragma omp atomic compare acquire
fx = fx < fe ? fe : fx;
#pragma omp atomic compare acquire
fx = fe > fx ? fe : fx;
#pragma omp atomic compare acquire
fx = fe < fx ? fe : fx;
#pragma omp atomic compare acquire
if (fx > fe)
fx = fe;
#pragma omp atomic compare acquire
if (fx < fe)
fx = fe;
#pragma omp atomic compare acquire
if (fe > fx)
fx = fe;
#pragma omp atomic compare acquire
if (fe < fx)
fx = fe;
#pragma omp atomic compare relaxed
fx = fx > fe ? fe : fx;
#pragma omp atomic compare relaxed
fx = fx < fe ? fe : fx;
#pragma omp atomic compare relaxed
fx = fe > fx ? fe : fx;
#pragma omp atomic compare relaxed
fx = fe < fx ? fe : fx;
#pragma omp atomic compare relaxed
if (fx > fe)
fx = fe;
#pragma omp atomic compare relaxed
if (fx < fe)
fx = fe;
#pragma omp atomic compare relaxed
if (fe > fx)
fx = fe;
#pragma omp atomic compare relaxed
if (fe < fx)
fx = fe;
#pragma omp atomic compare release
fx = fx > fe ? fe : fx;
#pragma omp atomic compare release
fx = fx < fe ? fe : fx;
#pragma omp atomic compare release
fx = fe > fx ? fe : fx;
#pragma omp atomic compare release
fx = fe < fx ? fe : fx;
#pragma omp atomic compare release
if (fx > fe)
fx = fe;
#pragma omp atomic compare release
if (fx < fe)
fx = fe;
#pragma omp atomic compare release
if (fe > fx)
fx = fe;
#pragma omp atomic compare release
if (fe < fx)
fx = fe;
#pragma omp atomic compare seq_cst
fx = fx > fe ? fe : fx;
#pragma omp atomic compare seq_cst
fx = fx < fe ? fe : fx;
#pragma omp atomic compare seq_cst
fx = fe > fx ? fe : fx;
#pragma omp atomic compare seq_cst
fx = fe < fx ? fe : fx;
#pragma omp atomic compare seq_cst
if (fx > fe)
fx = fe;
#pragma omp atomic compare seq_cst
if (fx < fe)
fx = fe;
#pragma omp atomic compare seq_cst
if (fe > fx)
fx = fe;
#pragma omp atomic compare seq_cst
if (fe < fx)
fx = fe;
#pragma omp atomic compare
dx = dx > de ? de : dx;
#pragma omp atomic compare
dx = dx < de ? de : dx;
#pragma omp atomic compare
dx = de > dx ? de : dx;
#pragma omp atomic compare
dx = de < dx ? de : dx;
#pragma omp atomic compare
if (dx > de)
dx = de;
#pragma omp atomic compare
if (dx < de)
dx = de;
#pragma omp atomic compare
if (de > dx)
dx = de;
#pragma omp atomic compare
if (de < dx)
dx = de;
#pragma omp atomic compare acq_rel
dx = dx > de ? de : dx;
#pragma omp atomic compare acq_rel
dx = dx < de ? de : dx;
#pragma omp atomic compare acq_rel
dx = de > dx ? de : dx;
#pragma omp atomic compare acq_rel
dx = de < dx ? de : dx;
#pragma omp atomic compare acq_rel
if (dx > de)
dx = de;
#pragma omp atomic compare acq_rel
if (dx < de)
dx = de;
#pragma omp atomic compare acq_rel
if (de > dx)
dx = de;
#pragma omp atomic compare acq_rel
if (de < dx)
dx = de;
#pragma omp atomic compare acquire
dx = dx > de ? de : dx;
#pragma omp atomic compare acquire
dx = dx < de ? de : dx;
#pragma omp atomic compare acquire
dx = de > dx ? de : dx;
#pragma omp atomic compare acquire
dx = de < dx ? de : dx;
#pragma omp atomic compare acquire
if (dx > de)
dx = de;
#pragma omp atomic compare acquire
if (dx < de)
dx = de;
#pragma omp atomic compare acquire
if (de > dx)
dx = de;
#pragma omp atomic compare acquire
if (de < dx)
dx = de;
#pragma omp atomic compare relaxed
dx = dx > de ? de : dx;
#pragma omp atomic compare relaxed
dx = dx < de ? de : dx;
#pragma omp atomic compare relaxed
dx = de > dx ? de : dx;
#pragma omp atomic compare relaxed
dx = de < dx ? de : dx;
#pragma omp atomic compare relaxed
if (dx > de)
dx = de;
#pragma omp atomic compare relaxed
if (dx < de)
dx = de;
#pragma omp atomic compare relaxed
if (de > dx)
dx = de;
#pragma omp atomic compare relaxed
if (de < dx)
dx = de;
#pragma omp atomic compare release
dx = dx > de ? de : dx;
#pragma omp atomic compare release
dx = dx < de ? de : dx;
#pragma omp atomic compare release
dx = de > dx ? de : dx;
#pragma omp atomic compare release
dx = de < dx ? de : dx;
#pragma omp atomic compare release
if (dx > de)
dx = de;
#pragma omp atomic compare release
if (dx < de)
dx = de;
#pragma omp atomic compare release
if (de > dx)
dx = de;
#pragma omp atomic compare release
if (de < dx)
dx = de;
#pragma omp atomic compare seq_cst
dx = dx > de ? de : dx;
#pragma omp atomic compare seq_cst
dx = dx < de ? de : dx;
#pragma omp atomic compare seq_cst
dx = de > dx ? de : dx;
#pragma omp atomic compare seq_cst
dx = de < dx ? de : dx;
#pragma omp atomic compare seq_cst
if (dx > de)
dx = de;
#pragma omp atomic compare seq_cst
if (dx < de)
dx = de;
#pragma omp atomic compare seq_cst
if (de > dx)
dx = de;
#pragma omp atomic compare seq_cst
if (de < dx)
dx = de;
}
void bar() {
char cx, cv, cr, ce, cd;
unsigned char ucx, ucv, ucr, uce, ucd;
short sx, sv, sr, se, sd;
unsigned short usx, usv, usr, use, usd;
int ix, iv, ir, ie, id;
unsigned int uix, uiv, uir, uie, uid;
long lx, lv, lr, le, ld;
unsigned long ulx, ulv, ulr, ule, uld;
long long llx, llv, llr, lle, lld;
unsigned long long ullx, ullv, ullr, ulle, ulld;
float fx, fv, fe, fd;
double dx, dv, de, dd;
#pragma omp atomic compare capture
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture acq_rel
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture acq_rel
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture acq_rel
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture acq_rel
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture acq_rel
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture acquire
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture acquire
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture acquire
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture acquire
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture acquire
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture acquire
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture acquire
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture acquire
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture relaxed
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture relaxed
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture relaxed
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture relaxed
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture relaxed
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture relaxed
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture release
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture release
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture release
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture release
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture release
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture release
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture release
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture release
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture release
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture release
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture release
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture release
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture release
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (ce > cx) {
cx = ce;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (cx > ce) {
cx = ce;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (ce < cx) {
cx = ce;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (cx < ce) {
cx = ce;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (cx == ce) {
cx = cd;
}
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
if (ce == cx) {
cx = cd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (ce > cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
if (cx > ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
if (ce < cx) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
if (cx < ce) {
cx = ce;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
if (cx == ce) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
if (ce == cx) {
cx = cd;
}
cv = cx;
}
#pragma omp atomic compare capture seq_cst
if (cx == ce) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture seq_cst
if (ce == cx) {
cx = cd;
} else {
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
cr = cx == ce;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture seq_cst
{
cr = ce == cx;
if (cr) {
cx = cd;
}
}
#pragma omp atomic compare capture seq_cst
{
cr = cx == ce;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture seq_cst
{
cr = ce == cx;
if (cr) {
cx = cd;
} else {
cv = cx;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acq_rel
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acq_rel
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture acq_rel
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acquire
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture acquire
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture acquire
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acquire
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture acquire
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture acquire
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture relaxed
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture relaxed
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture relaxed
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture relaxed
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture release
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture release
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture release
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture release
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture release
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture release
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture release
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture release
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (uce > ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (ucx > uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (uce < ucx) {
ucx = uce;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (ucx < uce) {
ucx = uce;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (ucx == uce) {
ucx = ucd;
}
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
if (uce == ucx) {
ucx = ucd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (uce > ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
if (ucx > uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
if (uce < ucx) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
if (ucx < uce) {
ucx = uce;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
if (ucx == uce) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
if (uce == ucx) {
ucx = ucd;
}
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
if (ucx == uce) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
if (uce == ucx) {
ucx = ucd;
} else {
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture seq_cst
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
}
}
#pragma omp atomic compare capture seq_cst
{
ucr = ucx == uce;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture seq_cst
{
ucr = uce == ucx;
if (ucr) {
ucx = ucd;
} else {
ucv = ucx;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture acq_rel
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture acq_rel
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture acq_rel
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture acq_rel
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture acq_rel
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture acquire
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture acquire
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture acquire
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture acquire
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture acquire
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture acquire
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture acquire
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture acquire
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture relaxed
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture relaxed
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture relaxed
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture relaxed
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture relaxed
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture relaxed
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture release
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture release
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture release
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture release
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture release
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture release
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture release
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture release
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture release
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture release
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture release
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture release
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture release
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (se > sx) {
sx = se;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (sx > se) {
sx = se;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (se < sx) {
sx = se;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (sx < se) {
sx = se;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (sx == se) {
sx = sd;
}
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
if (se == sx) {
sx = sd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (se > sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
if (sx > se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
if (se < sx) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
if (sx < se) {
sx = se;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
if (sx == se) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
if (se == sx) {
sx = sd;
}
sv = sx;
}
#pragma omp atomic compare capture seq_cst
if (sx == se) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture seq_cst
if (se == sx) {
sx = sd;
} else {
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
sr = sx == se;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture seq_cst
{
sr = se == sx;
if (sr) {
sx = sd;
}
}
#pragma omp atomic compare capture seq_cst
{
sr = sx == se;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture seq_cst
{
sr = se == sx;
if (sr) {
sx = sd;
} else {
sv = sx;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture acq_rel
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture acq_rel
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture acq_rel
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture acq_rel
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture acq_rel
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture acquire
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture acquire
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture acquire
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture acquire
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture acquire
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture acquire
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture acquire
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture acquire
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture relaxed
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture relaxed
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture relaxed
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture relaxed
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture relaxed
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture relaxed
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture release
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture release
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture release
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture release
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture release
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture release
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture release
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture release
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture release
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture release
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture release
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture release
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture release
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (use > usx) {
usx = use;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (usx > use) {
usx = use;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (use < usx) {
usx = use;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (usx < use) {
usx = use;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (usx == use) {
usx = usd;
}
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
if (use == usx) {
usx = usd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (use > usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
if (usx > use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
if (use < usx) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
if (usx < use) {
usx = use;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
if (usx == use) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
if (use == usx) {
usx = usd;
}
usv = usx;
}
#pragma omp atomic compare capture seq_cst
if (usx == use) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture seq_cst
if (use == usx) {
usx = usd;
} else {
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
usr = usx == use;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture seq_cst
{
usr = use == usx;
if (usr) {
usx = usd;
}
}
#pragma omp atomic compare capture seq_cst
{
usr = usx == use;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture seq_cst
{
usr = use == usx;
if (usr) {
usx = usd;
} else {
usv = usx;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture acq_rel
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture acq_rel
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture acq_rel
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture acquire
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture acquire
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture acquire
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture acquire
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture acquire
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture acquire
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture acquire
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture acquire
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture relaxed
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture relaxed
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture relaxed
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture relaxed
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture relaxed
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture relaxed
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture release
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture release
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture release
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture release
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture release
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture release
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture release
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture release
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture release
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture release
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture release
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture release
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture release
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ie > ix) {
ix = ie;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ix > ie) {
ix = ie;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ie < ix) {
ix = ie;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ix < ie) {
ix = ie;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ix == ie) {
ix = id;
}
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
if (ie == ix) {
ix = id;
}
}
#pragma omp atomic compare capture seq_cst
{
if (ie > ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
if (ix > ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
if (ie < ix) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
if (ix < ie) {
ix = ie;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
if (ix == ie) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
if (ie == ix) {
ix = id;
}
iv = ix;
}
#pragma omp atomic compare capture seq_cst
if (ix == ie) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture seq_cst
if (ie == ix) {
ix = id;
} else {
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
ir = ix == ie;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = ie == ix;
if (ir) {
ix = id;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = ix == ie;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = ie == ix;
if (ir) {
ix = id;
} else {
iv = ix;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture acq_rel
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture acq_rel
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture acq_rel
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture acq_rel
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture acquire
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture acquire
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture acquire
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture acquire
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture acquire
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture acquire
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture relaxed
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture relaxed
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture relaxed
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture relaxed
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture relaxed
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture relaxed
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture release
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture release
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture release
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture release
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture release
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture release
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture release
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture release
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture release
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture release
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture release
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture release
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture release
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uie > uix) {
uix = uie;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uix > uie) {
uix = uie;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uie < uix) {
uix = uie;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uix < uie) {
uix = uie;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uix == uie) {
uix = uid;
}
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
if (uie == uix) {
uix = uid;
}
}
#pragma omp atomic compare capture seq_cst
{
if (uie > uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
if (uix > uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
if (uie < uix) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
if (uix < uie) {
uix = uie;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
if (uix == uie) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
if (uie == uix) {
uix = uid;
}
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
if (uix == uie) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
if (uie == uix) {
uix = uid;
} else {
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
uir = uix == uie;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture seq_cst
{
uir = uie == uix;
if (uir) {
uix = uid;
}
}
#pragma omp atomic compare capture seq_cst
{
uir = uix == uie;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture seq_cst
{
uir = uie == uix;
if (uir) {
uix = uid;
} else {
uiv = uix;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture acq_rel
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture acq_rel
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture acq_rel
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture acq_rel
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture acq_rel
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture acq_rel
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture acquire
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture acquire
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture acquire
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture acquire
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture acquire
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture acquire
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture acquire
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture acquire
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture relaxed
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture relaxed
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture relaxed
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture relaxed
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture relaxed
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture relaxed
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture release
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture release
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture release
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture release
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture release
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture release
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture release
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture release
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture release
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture release
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture release
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture release
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture release
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (le > lx) {
lx = le;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (lx > le) {
lx = le;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (le < lx) {
lx = le;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (lx < le) {
lx = le;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (lx == le) {
lx = ld;
}
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
if (le == lx) {
lx = ld;
}
}
#pragma omp atomic compare capture seq_cst
{
if (le > lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
if (lx > le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
if (le < lx) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
if (lx < le) {
lx = le;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
if (lx == le) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
if (le == lx) {
lx = ld;
}
lv = lx;
}
#pragma omp atomic compare capture seq_cst
if (lx == le) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture seq_cst
if (le == lx) {
lx = ld;
} else {
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
lr = lx == le;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture seq_cst
{
lr = le == lx;
if (lr) {
lx = ld;
}
}
#pragma omp atomic compare capture seq_cst
{
lr = lx == le;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture seq_cst
{
lr = le == lx;
if (lr) {
lx = ld;
} else {
lv = lx;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture acq_rel
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture acq_rel
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture acq_rel
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture acq_rel
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture acquire
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture acquire
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture acquire
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture acquire
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture acquire
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture acquire
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture relaxed
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture relaxed
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture relaxed
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture relaxed
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture release
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture release
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture release
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture release
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture release
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture release
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture release
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture release
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ule > ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ulx > ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ule < ulx) {
ulx = ule;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ulx < ule) {
ulx = ule;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ulx == ule) {
ulx = uld;
}
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
if (ule == ulx) {
ulx = uld;
}
}
#pragma omp atomic compare capture seq_cst
{
if (ule > ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
if (ulx > ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
if (ule < ulx) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
if (ulx < ule) {
ulx = ule;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
if (ulx == ule) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
if (ule == ulx) {
ulx = uld;
}
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
if (ulx == ule) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
if (ule == ulx) {
ulx = uld;
} else {
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture seq_cst
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
}
}
#pragma omp atomic compare capture seq_cst
{
ulr = ulx == ule;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture seq_cst
{
ulr = ule == ulx;
if (ulr) {
ulx = uld;
} else {
ulv = ulx;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture acq_rel
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture acq_rel
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture acq_rel
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture acq_rel
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture acq_rel
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture acq_rel
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture acquire
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture acquire
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture acquire
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture acquire
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture acquire
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture acquire
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture acquire
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture acquire
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture relaxed
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture relaxed
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture relaxed
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture relaxed
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture relaxed
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture relaxed
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture release
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture release
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture release
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture release
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture release
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture release
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture release
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture release
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture release
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture release
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture release
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture release
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture release
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (lle > llx) {
llx = lle;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (llx > lle) {
llx = lle;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (lle < llx) {
llx = lle;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (llx < lle) {
llx = lle;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (llx == lle) {
llx = lld;
}
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
if (lle == llx) {
llx = lld;
}
}
#pragma omp atomic compare capture seq_cst
{
if (lle > llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
if (llx > lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
if (lle < llx) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
if (llx < lle) {
llx = lle;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
if (llx == lle) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
if (lle == llx) {
llx = lld;
}
llv = llx;
}
#pragma omp atomic compare capture seq_cst
if (llx == lle) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture seq_cst
if (lle == llx) {
llx = lld;
} else {
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
llr = llx == lle;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture seq_cst
{
llr = lle == llx;
if (llr) {
llx = lld;
}
}
#pragma omp atomic compare capture seq_cst
{
llr = llx == lle;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture seq_cst
{
llr = lle == llx;
if (llr) {
llx = lld;
} else {
llv = llx;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acq_rel
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acq_rel
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acq_rel
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture acq_rel
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acquire
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture acquire
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture acquire
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acquire
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture acquire
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture acquire
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture relaxed
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture relaxed
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture relaxed
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture relaxed
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture release
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture release
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture release
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture release
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture release
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture release
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture release
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture release
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ulle > ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ullx > ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ulle < ullx) {
ullx = ulle;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ullx < ulle) {
ullx = ulle;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ullx == ulle) {
ullx = ulld;
}
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
if (ulle == ullx) {
ullx = ulld;
}
}
#pragma omp atomic compare capture seq_cst
{
if (ulle > ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
if (ullx > ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
if (ulle < ullx) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
if (ullx < ulle) {
ullx = ulle;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
if (ullx == ulle) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
if (ulle == ullx) {
ullx = ulld;
}
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
if (ullx == ulle) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
if (ulle == ullx) {
ullx = ulld;
} else {
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture seq_cst
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
}
}
#pragma omp atomic compare capture seq_cst
{
ullr = ullx == ulle;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture seq_cst
{
ullr = ulle == ullx;
if (ullr) {
ullx = ulld;
} else {
ullv = ullx;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture acq_rel
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture acq_rel
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture acquire
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture acquire
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture acquire
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture acquire
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture acquire
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture acquire
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture acquire
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture acquire
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture relaxed
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture relaxed
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture relaxed
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture relaxed
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture relaxed
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture relaxed
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture release
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture release
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture release
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture release
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture release
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture release
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture release
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture release
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture release
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture release
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture release
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture release
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture release
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fe > fx) {
fx = fe;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fx > fe) {
fx = fe;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fe < fx) {
fx = fe;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fx < fe) {
fx = fe;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fx == fe) {
fx = fd;
}
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
if (fe == fx) {
fx = fd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (fe > fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
if (fx > fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
if (fe < fx) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
if (fx < fe) {
fx = fe;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
if (fx == fe) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
if (fe == fx) {
fx = fd;
}
fv = fx;
}
#pragma omp atomic compare capture seq_cst
if (fx == fe) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture seq_cst
if (fe == fx) {
fx = fd;
} else {
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
ir = fx == fe;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = fe == fx;
if (ir) {
fx = fd;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = fx == fe;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = fe == fx;
if (ir) {
fx = fd;
} else {
fv = fx;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture acq_rel
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture acq_rel
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture acq_rel
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture acq_rel
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture acquire
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture acquire
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture acquire
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture acquire
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture acquire
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture acquire
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture acquire
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture acquire
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture relaxed
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture relaxed
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture relaxed
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture relaxed
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture relaxed
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture relaxed
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture release
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture release
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture release
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture release
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture release
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture release
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture release
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture release
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture release
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture release
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture release
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture release
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture release
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (de > dx) {
dx = de;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (dx > de) {
dx = de;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (de < dx) {
dx = de;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (dx < de) {
dx = de;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (dx == de) {
dx = dd;
}
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
if (de == dx) {
dx = dd;
}
}
#pragma omp atomic compare capture seq_cst
{
if (de > dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
if (dx > de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
if (de < dx) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
if (dx < de) {
dx = de;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
if (dx == de) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
if (de == dx) {
dx = dd;
}
dv = dx;
}
#pragma omp atomic compare capture seq_cst
if (dx == de) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture seq_cst
if (de == dx) {
dx = dd;
} else {
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
ir = dx == de;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = de == dx;
if (ir) {
dx = dd;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = dx == de;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
#pragma omp atomic compare capture seq_cst
{
ir = de == dx;
if (ir) {
dx = dd;
} else {
dv = dx;
}
}
}
char cxevd() {
char cx, cv, ce, cd;
#pragma omp atomic compare capture
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture
{
cx = cx == ce ? cd : cx;
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture acq_rel
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture acq_rel
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture acq_rel
{
cx = cx == ce ? cd : cx;
cv = cx;
}
#pragma omp atomic compare capture acquire
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture acquire
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture acquire
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture acquire
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture acquire
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture acquire
{
cx = cx == ce ? cd : cx;
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture relaxed
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture relaxed
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture relaxed
{
cx = cx == ce ? cd : cx;
cv = cx;
}
#pragma omp atomic compare capture release
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture release
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture release
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture release
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture release
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture release
{
cx = cx == ce ? cd : cx;
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
cx = cx > ce ? ce : cx;
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
cx = cx < ce ? ce : cx;
}
#pragma omp atomic compare capture seq_cst
{
cv = cx;
cx = cx == ce ? cd : cx;
}
#pragma omp atomic compare capture seq_cst
{
cx = cx > ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
cx = cx < ce ? ce : cx;
cv = cx;
}
#pragma omp atomic compare capture seq_cst
{
cx = cx == ce ? cd : cx;
cv = cx;
}
return cv;
}
unsigned char ucxevd() {
unsigned char ucx, ucv, uce, ucd;
#pragma omp atomic compare capture
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acq_rel
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture acquire
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture acquire
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture acquire
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture relaxed
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture relaxed
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture relaxed
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture release
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture release
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture release
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture release
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture release
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture release
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
ucx = ucx > uce ? uce : ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
ucx = ucx < uce ? uce : ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucv = ucx;
ucx = ucx == uce ? ucd : ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucx = ucx > uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucx = ucx < uce ? uce : ucx;
ucv = ucx;
}
#pragma omp atomic compare capture seq_cst
{
ucx = ucx == uce ? ucd : ucx;
ucv = ucx;
}
return ucv;
}
short sxevd() {
short sx, sv, se, sd;
#pragma omp atomic compare capture
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture
{
sx = sx == se ? sd : sx;
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture acq_rel
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture acq_rel
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture acq_rel
{
sx = sx == se ? sd : sx;
sv = sx;
}
#pragma omp atomic compare capture acquire
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture acquire
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture acquire
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture acquire
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture acquire
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture acquire
{
sx = sx == se ? sd : sx;
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture relaxed
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture relaxed
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture relaxed
{
sx = sx == se ? sd : sx;
sv = sx;
}
#pragma omp atomic compare capture release
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture release
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture release
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture release
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture release
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture release
{
sx = sx == se ? sd : sx;
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
sx = sx > se ? se : sx;
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
sx = sx < se ? se : sx;
}
#pragma omp atomic compare capture seq_cst
{
sv = sx;
sx = sx == se ? sd : sx;
}
#pragma omp atomic compare capture seq_cst
{
sx = sx > se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
sx = sx < se ? se : sx;
sv = sx;
}
#pragma omp atomic compare capture seq_cst
{
sx = sx == se ? sd : sx;
sv = sx;
}
return sv;
}
unsigned short usxevd() {
unsigned short usx, usv, use, usd;
#pragma omp atomic compare capture
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture
{
usx = usx == use ? usd : usx;
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture acq_rel
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture acq_rel
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture acq_rel
{
usx = usx == use ? usd : usx;
usv = usx;
}
#pragma omp atomic compare capture acquire
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture acquire
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture acquire
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture acquire
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture acquire
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture acquire
{
usx = usx == use ? usd : usx;
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture relaxed
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture relaxed
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture relaxed
{
usx = usx == use ? usd : usx;
usv = usx;
}
#pragma omp atomic compare capture release
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture release
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture release
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture release
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture release
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture release
{
usx = usx == use ? usd : usx;
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
usx = usx > use ? use : usx;
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
usx = usx < use ? use : usx;
}
#pragma omp atomic compare capture seq_cst
{
usv = usx;
usx = usx == use ? usd : usx;
}
#pragma omp atomic compare capture seq_cst
{
usx = usx > use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
usx = usx < use ? use : usx;
usv = usx;
}
#pragma omp atomic compare capture seq_cst
{
usx = usx == use ? usd : usx;
usv = usx;
}
return usv;
}
int ixevd() {
int ix, iv, ie, id;
#pragma omp atomic compare capture
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture
{
ix = ix == ie ? id : ix;
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture acq_rel
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture acq_rel
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture acq_rel
{
ix = ix == ie ? id : ix;
iv = ix;
}
#pragma omp atomic compare capture acquire
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture acquire
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture acquire
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture acquire
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture acquire
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture acquire
{
ix = ix == ie ? id : ix;
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture relaxed
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture relaxed
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture relaxed
{
ix = ix == ie ? id : ix;
iv = ix;
}
#pragma omp atomic compare capture release
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture release
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture release
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture release
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture release
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture release
{
ix = ix == ie ? id : ix;
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
ix = ix > ie ? ie : ix;
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
ix = ix < ie ? ie : ix;
}
#pragma omp atomic compare capture seq_cst
{
iv = ix;
ix = ix == ie ? id : ix;
}
#pragma omp atomic compare capture seq_cst
{
ix = ix > ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
ix = ix < ie ? ie : ix;
iv = ix;
}
#pragma omp atomic compare capture seq_cst
{
ix = ix == ie ? id : ix;
iv = ix;
}
return iv;
}
unsigned int uixevd() {
unsigned int uix, uiv, uie, uid;
#pragma omp atomic compare capture
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture acq_rel
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture acq_rel
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture acq_rel
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture acquire
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture acquire
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture acquire
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture relaxed
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture relaxed
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture relaxed
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
#pragma omp atomic compare capture release
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture release
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture release
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture release
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture release
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture release
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
uix = uix > uie ? uie : uix;
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
uix = uix < uie ? uie : uix;
}
#pragma omp atomic compare capture seq_cst
{
uiv = uix;
uix = uix == uie ? uid : uix;
}
#pragma omp atomic compare capture seq_cst
{
uix = uix > uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
uix = uix < uie ? uie : uix;
uiv = uix;
}
#pragma omp atomic compare capture seq_cst
{
uix = uix == uie ? uid : uix;
uiv = uix;
}
return uiv;
}
long lxevd() {
long lx, lv, le, ld;
#pragma omp atomic compare capture
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture
{
lx = lx == le ? ld : lx;
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture acq_rel
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture acq_rel
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture acq_rel
{
lx = lx == le ? ld : lx;
lv = lx;
}
#pragma omp atomic compare capture acquire
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture acquire
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture acquire
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture acquire
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture acquire
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture acquire
{
lx = lx == le ? ld : lx;
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture relaxed
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture relaxed
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture relaxed
{
lx = lx == le ? ld : lx;
lv = lx;
}
#pragma omp atomic compare capture release
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture release
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture release
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture release
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture release
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture release
{
lx = lx == le ? ld : lx;
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
lx = lx > le ? le : lx;
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
lx = lx < le ? le : lx;
}
#pragma omp atomic compare capture seq_cst
{
lv = lx;
lx = lx == le ? ld : lx;
}
#pragma omp atomic compare capture seq_cst
{
lx = lx > le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
lx = lx < le ? le : lx;
lv = lx;
}
#pragma omp atomic compare capture seq_cst
{
lx = lx == le ? ld : lx;
lv = lx;
}
return lv;
}
unsigned long ulxevd() {
unsigned long ulx, ulv, ule, uld;
#pragma omp atomic compare capture
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acq_rel
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture acquire
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture acquire
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture acquire
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture relaxed
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture relaxed
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture relaxed
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture release
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture release
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture release
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture release
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture release
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture release
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
ulx = ulx > ule ? ule : ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
ulx = ulx < ule ? ule : ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulv = ulx;
ulx = ulx == ule ? uld : ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulx = ulx > ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulx = ulx < ule ? ule : ulx;
ulv = ulx;
}
#pragma omp atomic compare capture seq_cst
{
ulx = ulx == ule ? uld : ulx;
ulv = ulx;
}
return ulv;
}
long long llxevd() {
long long llx, llv, lle, lld;
#pragma omp atomic compare capture
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture
{
llx = llx == lle ? lld : llx;
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture acq_rel
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture acq_rel
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture acq_rel
{
llx = llx == lle ? lld : llx;
llv = llx;
}
#pragma omp atomic compare capture acquire
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture acquire
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture acquire
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture acquire
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture acquire
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture acquire
{
llx = llx == lle ? lld : llx;
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture relaxed
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture relaxed
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture relaxed
{
llx = llx == lle ? lld : llx;
llv = llx;
}
#pragma omp atomic compare capture release
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture release
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture release
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture release
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture release
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture release
{
llx = llx == lle ? lld : llx;
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
llx = llx > lle ? lle : llx;
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
llx = llx < lle ? lle : llx;
}
#pragma omp atomic compare capture seq_cst
{
llv = llx;
llx = llx == lle ? lld : llx;
}
#pragma omp atomic compare capture seq_cst
{
llx = llx > lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
llx = llx < lle ? lle : llx;
llv = llx;
}
#pragma omp atomic compare capture seq_cst
{
llx = llx == lle ? lld : llx;
llv = llx;
}
return llv;
}
unsigned long long ullxevd() {
unsigned long long ullx, ullv, ulle, ulld;
#pragma omp atomic compare capture
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acq_rel
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture acquire
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture acquire
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture acquire
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture relaxed
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture relaxed
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture relaxed
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture release
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture release
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture release
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture release
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture release
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture release
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
ullx = ullx > ulle ? ulle : ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
ullx = ullx < ulle ? ulle : ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullv = ullx;
ullx = ullx == ulle ? ulld : ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullx = ullx > ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullx = ullx < ulle ? ulle : ullx;
ullv = ullx;
}
#pragma omp atomic compare capture seq_cst
{
ullx = ullx == ulle ? ulld : ullx;
ullv = ullx;
}
return ullv;
}
float fxevd() {
float fx, fv, fe, fd;
#pragma omp atomic compare capture
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture
{
fx = fx == fe ? fd : fx;
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture acq_rel
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture acq_rel
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture acq_rel
{
fx = fx == fe ? fd : fx;
fv = fx;
}
#pragma omp atomic compare capture acquire
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture acquire
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture acquire
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture acquire
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture acquire
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture acquire
{
fx = fx == fe ? fd : fx;
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture relaxed
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture relaxed
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture relaxed
{
fx = fx == fe ? fd : fx;
fv = fx;
}
#pragma omp atomic compare capture release
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture release
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture release
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture release
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture release
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture release
{
fx = fx == fe ? fd : fx;
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
fx = fx > fe ? fe : fx;
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
fx = fx < fe ? fe : fx;
}
#pragma omp atomic compare capture seq_cst
{
fv = fx;
fx = fx == fe ? fd : fx;
}
#pragma omp atomic compare capture seq_cst
{
fx = fx > fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
fx = fx < fe ? fe : fx;
fv = fx;
}
#pragma omp atomic compare capture seq_cst
{
fx = fx == fe ? fd : fx;
fv = fx;
}
return fv;
}
double dxevd() {
double dx, dv, de, dd;
#pragma omp atomic compare capture
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture
{
dx = dx == de ? dd : dx;
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture acq_rel
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture acq_rel
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture acq_rel
{
dx = dx == de ? dd : dx;
dv = dx;
}
#pragma omp atomic compare capture acquire
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture acquire
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture acquire
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture acquire
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture acquire
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture acquire
{
dx = dx == de ? dd : dx;
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture relaxed
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture relaxed
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture relaxed
{
dx = dx == de ? dd : dx;
dv = dx;
}
#pragma omp atomic compare capture release
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture release
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture release
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture release
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture release
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture release
{
dx = dx == de ? dd : dx;
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
dx = dx > de ? de : dx;
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
dx = dx < de ? de : dx;
}
#pragma omp atomic compare capture seq_cst
{
dv = dx;
dx = dx == de ? dd : dx;
}
#pragma omp atomic compare capture seq_cst
{
dx = dx > de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
dx = dx < de ? de : dx;
dv = dx;
}
#pragma omp atomic compare capture seq_cst
{
dx = dx == de ? dd : dx;
dv = dx;
}
return dv;
}
#endif
// CHECK-LABEL: define {{[^@]+}}@foo
// CHECK-SAME: () #[[ATTR0:[0-9]+]] {
// CHECK-NEXT: entry:
// CHECK-NEXT: [[CX:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CE:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CD:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCX:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCE:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCD:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[SX:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SE:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SD:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USX:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USE:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USD:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[IX:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[IE:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[ID:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIX:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIE:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UID:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[LX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[FX:%.*]] = alloca float, align 4
// CHECK-NEXT: [[FE:%.*]] = alloca float, align 4
// CHECK-NEXT: [[FD:%.*]] = alloca float, align 4
// CHECK-NEXT: [[DX:%.*]] = alloca double, align 8
// CHECK-NEXT: [[DE:%.*]] = alloca double, align 8
// CHECK-NEXT: [[DD:%.*]] = alloca double, align 8
// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP1:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP3:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP5:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP4]] monotonic, align 1
// CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP7:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP6]] monotonic, align 1
// CHECK-NEXT: [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP9:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP8]] monotonic, align 1
// CHECK-NEXT: [[TMP10:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP11:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP10]] monotonic, align 1
// CHECK-NEXT: [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP13:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP12]] monotonic, align 1
// CHECK-NEXT: [[TMP14:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP15:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP14]] monotonic, align 1
// CHECK-NEXT: [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP17:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP18:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP16]], i8 [[TMP17]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP19:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP20:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP21:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP19]], i8 [[TMP20]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP22:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP23:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP24:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP22]], i8 [[TMP23]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP25:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP26:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP27:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP25]], i8 [[TMP26]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP28:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP29:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP28]] monotonic, align 1
// CHECK-NEXT: [[TMP30:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP31:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP30]] monotonic, align 1
// CHECK-NEXT: [[TMP32:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP33:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP32]] monotonic, align 1
// CHECK-NEXT: [[TMP34:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP35:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP34]] monotonic, align 1
// CHECK-NEXT: [[TMP36:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP37:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP36]] monotonic, align 1
// CHECK-NEXT: [[TMP38:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP39:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP38]] monotonic, align 1
// CHECK-NEXT: [[TMP40:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP41:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP40]] monotonic, align 1
// CHECK-NEXT: [[TMP42:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP43:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP42]] monotonic, align 1
// CHECK-NEXT: [[TMP44:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP45:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP46:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP44]], i8 [[TMP45]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP47:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP48:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP49:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP47]], i8 [[TMP48]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP50:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP51:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP52:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP50]], i8 [[TMP51]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP53:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP54:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP55:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP53]], i8 [[TMP54]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP56:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP57:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP56]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1:[0-9]+]])
// CHECK-NEXT: [[TMP58:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP59:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP58]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP60:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP61:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP60]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP62:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP63:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP62]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP64:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP65:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP64]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP66:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP67:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP66]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP68:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP69:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP68]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP70:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP71:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP70]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP72:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP73:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP74:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP72]], i8 [[TMP73]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP75:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP76:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP77:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP75]], i8 [[TMP76]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP78:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP79:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP80:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP78]], i8 [[TMP79]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP81:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP82:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP83:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP81]], i8 [[TMP82]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP84:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP85:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP84]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP86:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP87:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP86]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP88:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP89:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP88]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP90:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP91:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP90]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP92:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP93:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP92]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP94:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP95:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP94]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP96:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP97:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP96]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP98:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP99:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP98]] acq_rel, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP100:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP101:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP102:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP100]], i8 [[TMP101]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP103:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP104:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP105:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP103]], i8 [[TMP104]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP106:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP107:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP108:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP106]], i8 [[TMP107]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP109:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP110:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP111:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP109]], i8 [[TMP110]] acq_rel acquire, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP112:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP113:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP112]] acquire, align 1
// CHECK-NEXT: [[TMP114:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP115:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP114]] acquire, align 1
// CHECK-NEXT: [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP117:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP116]] acquire, align 1
// CHECK-NEXT: [[TMP118:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP119:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP118]] acquire, align 1
// CHECK-NEXT: [[TMP120:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP121:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP120]] acquire, align 1
// CHECK-NEXT: [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP123:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP122]] acquire, align 1
// CHECK-NEXT: [[TMP124:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP125:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP124]] acquire, align 1
// CHECK-NEXT: [[TMP126:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP127:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP126]] acquire, align 1
// CHECK-NEXT: [[TMP128:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP129:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP130:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP128]], i8 [[TMP129]] acquire acquire, align 1
// CHECK-NEXT: [[TMP131:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP132:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP133:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP131]], i8 [[TMP132]] acquire acquire, align 1
// CHECK-NEXT: [[TMP134:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP135:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP136:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP134]], i8 [[TMP135]] acquire acquire, align 1
// CHECK-NEXT: [[TMP137:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP138:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP139:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP137]], i8 [[TMP138]] acquire acquire, align 1
// CHECK-NEXT: [[TMP140:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP141:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP140]] acquire, align 1
// CHECK-NEXT: [[TMP142:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP143:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP142]] acquire, align 1
// CHECK-NEXT: [[TMP144:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP145:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP144]] acquire, align 1
// CHECK-NEXT: [[TMP146:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP147:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP146]] acquire, align 1
// CHECK-NEXT: [[TMP148:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP149:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP148]] acquire, align 1
// CHECK-NEXT: [[TMP150:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP151:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP150]] acquire, align 1
// CHECK-NEXT: [[TMP152:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP153:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP152]] acquire, align 1
// CHECK-NEXT: [[TMP154:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP155:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP154]] acquire, align 1
// CHECK-NEXT: [[TMP156:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP157:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP158:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP156]], i8 [[TMP157]] acquire acquire, align 1
// CHECK-NEXT: [[TMP159:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP160:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP161:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP159]], i8 [[TMP160]] acquire acquire, align 1
// CHECK-NEXT: [[TMP162:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP163:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP164:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP162]], i8 [[TMP163]] acquire acquire, align 1
// CHECK-NEXT: [[TMP165:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP166:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP167:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP165]], i8 [[TMP166]] acquire acquire, align 1
// CHECK-NEXT: [[TMP168:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP169:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP168]] monotonic, align 1
// CHECK-NEXT: [[TMP170:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP171:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP170]] monotonic, align 1
// CHECK-NEXT: [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP173:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP172]] monotonic, align 1
// CHECK-NEXT: [[TMP174:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP175:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP174]] monotonic, align 1
// CHECK-NEXT: [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP177:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP176]] monotonic, align 1
// CHECK-NEXT: [[TMP178:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP179:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP178]] monotonic, align 1
// CHECK-NEXT: [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP181:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP180]] monotonic, align 1
// CHECK-NEXT: [[TMP182:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP183:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP182]] monotonic, align 1
// CHECK-NEXT: [[TMP184:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP185:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP186:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP184]], i8 [[TMP185]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP187:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP188:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP189:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP187]], i8 [[TMP188]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP190:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP191:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP192:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP190]], i8 [[TMP191]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP193:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP194:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP195:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP193]], i8 [[TMP194]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP196:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP197:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP196]] monotonic, align 1
// CHECK-NEXT: [[TMP198:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP199:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP198]] monotonic, align 1
// CHECK-NEXT: [[TMP200:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP201:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP200]] monotonic, align 1
// CHECK-NEXT: [[TMP202:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP203:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP202]] monotonic, align 1
// CHECK-NEXT: [[TMP204:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP205:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP204]] monotonic, align 1
// CHECK-NEXT: [[TMP206:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP207:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP206]] monotonic, align 1
// CHECK-NEXT: [[TMP208:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP209:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP208]] monotonic, align 1
// CHECK-NEXT: [[TMP210:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP211:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP210]] monotonic, align 1
// CHECK-NEXT: [[TMP212:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP213:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP214:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP212]], i8 [[TMP213]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP215:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP216:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP217:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP215]], i8 [[TMP216]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP218:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP219:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP220:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP218]], i8 [[TMP219]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP221:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP222:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP223:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP221]], i8 [[TMP222]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP224:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP225:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP224]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP226:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP227:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP226]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP228:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP229:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP228]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP230:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP231:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP230]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP232:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP233:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP232]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP234:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP235:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP234]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP236:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP237:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP236]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP238:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP239:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP238]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP240:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP241:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP242:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP240]], i8 [[TMP241]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP243:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP244:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP245:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP243]], i8 [[TMP244]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP246:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP247:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP248:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP246]], i8 [[TMP247]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP249:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP250:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP251:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP249]], i8 [[TMP250]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP252:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP253:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP252]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP254:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP255:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP254]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP256:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP257:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP256]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP258:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP259:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP258]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP260:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP261:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP260]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP262:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP263:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP262]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP264:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP265:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP264]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP266:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP267:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP266]] release, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP268:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP269:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP270:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP268]], i8 [[TMP269]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP271:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP272:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP273:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP271]], i8 [[TMP272]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP274:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP275:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP276:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP274]], i8 [[TMP275]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP277:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP278:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP279:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP277]], i8 [[TMP278]] release monotonic, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP280:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP281:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP280]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP282:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP283:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP282]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP284:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP285:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP284]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP286:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP287:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP286]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP288:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP289:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP288]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP290:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP291:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP290]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP292:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP293:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP292]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP294:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP295:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP294]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP296:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP297:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP298:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP296]], i8 [[TMP297]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP299:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP300:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP301:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP299]], i8 [[TMP300]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP302:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP303:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP304:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP302]], i8 [[TMP303]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP305:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP306:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP307:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP305]], i8 [[TMP306]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP308:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP309:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP308]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP310:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP311:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP310]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP312:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP313:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP312]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP314:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP315:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP314]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP316:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP317:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP316]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP318:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP319:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP318]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP320:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP321:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP320]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP322:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP323:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP322]] seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP324:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP325:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP326:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP324]], i8 [[TMP325]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP327:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP328:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP329:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP327]], i8 [[TMP328]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP330:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP331:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP332:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP330]], i8 [[TMP331]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP333:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP334:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP335:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP333]], i8 [[TMP334]] seq_cst seq_cst, align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP336:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP337:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP336]] monotonic, align 2
// CHECK-NEXT: [[TMP338:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP339:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP338]] monotonic, align 2
// CHECK-NEXT: [[TMP340:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP341:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP340]] monotonic, align 2
// CHECK-NEXT: [[TMP342:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP343:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP342]] monotonic, align 2
// CHECK-NEXT: [[TMP344:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP345:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP344]] monotonic, align 2
// CHECK-NEXT: [[TMP346:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP347:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP346]] monotonic, align 2
// CHECK-NEXT: [[TMP348:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP349:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP348]] monotonic, align 2
// CHECK-NEXT: [[TMP350:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP351:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP350]] monotonic, align 2
// CHECK-NEXT: [[TMP352:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP353:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP354:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP352]], i16 [[TMP353]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP355:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP356:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP357:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP355]], i16 [[TMP356]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP358:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP359:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP360:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP358]], i16 [[TMP359]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP361:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP362:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP363:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP361]], i16 [[TMP362]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP364:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP365:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP364]] monotonic, align 2
// CHECK-NEXT: [[TMP366:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP367:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP366]] monotonic, align 2
// CHECK-NEXT: [[TMP368:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP369:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP368]] monotonic, align 2
// CHECK-NEXT: [[TMP370:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP371:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP370]] monotonic, align 2
// CHECK-NEXT: [[TMP372:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP373:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP372]] monotonic, align 2
// CHECK-NEXT: [[TMP374:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP375:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP374]] monotonic, align 2
// CHECK-NEXT: [[TMP376:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP377:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP376]] monotonic, align 2
// CHECK-NEXT: [[TMP378:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP379:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP378]] monotonic, align 2
// CHECK-NEXT: [[TMP380:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP381:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP382:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP380]], i16 [[TMP381]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP383:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP384:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP385:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP383]], i16 [[TMP384]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP386:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP387:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP388:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP386]], i16 [[TMP387]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP389:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP390:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP391:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP389]], i16 [[TMP390]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP392:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP393:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP392]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP394:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP395:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP394]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP396:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP397:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP396]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP398:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP399:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP398]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP400:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP401:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP400]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP402:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP403:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP402]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP404:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP405:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP404]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP406:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP407:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP406]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP408:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP409:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP410:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP408]], i16 [[TMP409]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP411:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP412:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP413:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP411]], i16 [[TMP412]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP414:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP415:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP416:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP414]], i16 [[TMP415]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP417:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP418:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP419:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP417]], i16 [[TMP418]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP420:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP421:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP420]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP422:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP423:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP422]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP424:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP425:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP424]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP426:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP427:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP426]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP428:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP429:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP428]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP430:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP431:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP430]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP432:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP433:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP432]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP434:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP435:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP434]] acq_rel, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP436:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP437:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP438:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP436]], i16 [[TMP437]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP439:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP440:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP441:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP439]], i16 [[TMP440]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP442:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP443:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP444:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP442]], i16 [[TMP443]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP445:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP446:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP447:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP445]], i16 [[TMP446]] acq_rel acquire, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP448:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP449:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP448]] acquire, align 2
// CHECK-NEXT: [[TMP450:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP451:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP450]] acquire, align 2
// CHECK-NEXT: [[TMP452:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP453:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP452]] acquire, align 2
// CHECK-NEXT: [[TMP454:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP455:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP454]] acquire, align 2
// CHECK-NEXT: [[TMP456:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP457:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP456]] acquire, align 2
// CHECK-NEXT: [[TMP458:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP459:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP458]] acquire, align 2
// CHECK-NEXT: [[TMP460:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP461:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP460]] acquire, align 2
// CHECK-NEXT: [[TMP462:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP463:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP462]] acquire, align 2
// CHECK-NEXT: [[TMP464:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP465:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP466:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP464]], i16 [[TMP465]] acquire acquire, align 2
// CHECK-NEXT: [[TMP467:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP468:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP469:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP467]], i16 [[TMP468]] acquire acquire, align 2
// CHECK-NEXT: [[TMP470:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP471:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP472:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP470]], i16 [[TMP471]] acquire acquire, align 2
// CHECK-NEXT: [[TMP473:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP474:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP475:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP473]], i16 [[TMP474]] acquire acquire, align 2
// CHECK-NEXT: [[TMP476:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP477:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP476]] acquire, align 2
// CHECK-NEXT: [[TMP478:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP479:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP478]] acquire, align 2
// CHECK-NEXT: [[TMP480:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP481:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP480]] acquire, align 2
// CHECK-NEXT: [[TMP482:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP483:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP482]] acquire, align 2
// CHECK-NEXT: [[TMP484:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP485:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP484]] acquire, align 2
// CHECK-NEXT: [[TMP486:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP487:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP486]] acquire, align 2
// CHECK-NEXT: [[TMP488:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP489:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP488]] acquire, align 2
// CHECK-NEXT: [[TMP490:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP491:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP490]] acquire, align 2
// CHECK-NEXT: [[TMP492:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP493:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP494:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP492]], i16 [[TMP493]] acquire acquire, align 2
// CHECK-NEXT: [[TMP495:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP496:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP497:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP495]], i16 [[TMP496]] acquire acquire, align 2
// CHECK-NEXT: [[TMP498:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP499:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP500:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP498]], i16 [[TMP499]] acquire acquire, align 2
// CHECK-NEXT: [[TMP501:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP502:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP503:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP501]], i16 [[TMP502]] acquire acquire, align 2
// CHECK-NEXT: [[TMP504:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP505:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP504]] monotonic, align 2
// CHECK-NEXT: [[TMP506:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP507:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP506]] monotonic, align 2
// CHECK-NEXT: [[TMP508:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP509:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP508]] monotonic, align 2
// CHECK-NEXT: [[TMP510:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP511:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP510]] monotonic, align 2
// CHECK-NEXT: [[TMP512:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP513:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP512]] monotonic, align 2
// CHECK-NEXT: [[TMP514:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP515:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP514]] monotonic, align 2
// CHECK-NEXT: [[TMP516:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP517:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP516]] monotonic, align 2
// CHECK-NEXT: [[TMP518:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP519:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP518]] monotonic, align 2
// CHECK-NEXT: [[TMP520:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP521:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP522:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP520]], i16 [[TMP521]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP523:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP524:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP525:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP523]], i16 [[TMP524]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP526:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP527:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP528:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP526]], i16 [[TMP527]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP529:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP530:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP531:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP529]], i16 [[TMP530]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP532:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP533:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP532]] monotonic, align 2
// CHECK-NEXT: [[TMP534:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP535:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP534]] monotonic, align 2
// CHECK-NEXT: [[TMP536:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP537:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP536]] monotonic, align 2
// CHECK-NEXT: [[TMP538:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP539:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP538]] monotonic, align 2
// CHECK-NEXT: [[TMP540:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP541:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP540]] monotonic, align 2
// CHECK-NEXT: [[TMP542:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP543:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP542]] monotonic, align 2
// CHECK-NEXT: [[TMP544:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP545:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP544]] monotonic, align 2
// CHECK-NEXT: [[TMP546:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP547:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP546]] monotonic, align 2
// CHECK-NEXT: [[TMP548:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP549:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP550:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP548]], i16 [[TMP549]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP551:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP552:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP553:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP551]], i16 [[TMP552]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP554:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP555:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP556:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP554]], i16 [[TMP555]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP557:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP558:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP559:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP557]], i16 [[TMP558]] monotonic monotonic, align 2
// CHECK-NEXT: [[TMP560:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP561:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP560]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP562:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP563:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP562]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP564:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP565:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP564]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP566:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP567:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP566]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP568:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP569:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP568]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP570:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP571:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP570]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP572:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP573:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP572]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP574:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP575:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP574]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP576:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP577:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP578:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP576]], i16 [[TMP577]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP579:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP580:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP581:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP579]], i16 [[TMP580]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP582:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP583:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP584:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP582]], i16 [[TMP583]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP585:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP586:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP587:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP585]], i16 [[TMP586]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP588:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP589:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP588]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP590:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP591:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP590]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP592:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP593:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP592]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP594:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP595:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP594]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP596:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP597:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP596]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP598:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP599:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP598]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP600:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP601:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP600]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP602:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP603:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP602]] release, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP604:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP605:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP606:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP604]], i16 [[TMP605]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP607:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP608:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP609:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP607]], i16 [[TMP608]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP610:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP611:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP612:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP610]], i16 [[TMP611]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP613:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP614:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP615:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP613]], i16 [[TMP614]] release monotonic, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP616:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP617:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP616]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP618:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP619:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP618]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP620:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP621:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP620]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP622:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP623:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP622]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP624:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP625:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP624]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP626:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP627:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP626]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP628:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP629:%.*]] = atomicrmw max ptr [[SX]], i16 [[TMP628]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP630:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP631:%.*]] = atomicrmw min ptr [[SX]], i16 [[TMP630]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP632:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP633:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP634:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP632]], i16 [[TMP633]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP635:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP636:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP637:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP635]], i16 [[TMP636]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP638:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP639:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP640:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP638]], i16 [[TMP639]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP641:%.*]] = load i16, ptr [[SE]], align 2
// CHECK-NEXT: [[TMP642:%.*]] = load i16, ptr [[SD]], align 2
// CHECK-NEXT: [[TMP643:%.*]] = cmpxchg ptr [[SX]], i16 [[TMP641]], i16 [[TMP642]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP644:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP645:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP644]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP646:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP647:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP646]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP648:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP649:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP648]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP650:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP651:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP650]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP652:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP653:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP652]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP654:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP655:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP654]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP656:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP657:%.*]] = atomicrmw umax ptr [[USX]], i16 [[TMP656]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP658:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP659:%.*]] = atomicrmw umin ptr [[USX]], i16 [[TMP658]] seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP660:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP661:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP662:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP660]], i16 [[TMP661]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP663:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP664:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP665:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP663]], i16 [[TMP664]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP666:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP667:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP668:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP666]], i16 [[TMP667]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP669:%.*]] = load i16, ptr [[USE]], align 2
// CHECK-NEXT: [[TMP670:%.*]] = load i16, ptr [[USD]], align 2
// CHECK-NEXT: [[TMP671:%.*]] = cmpxchg ptr [[USX]], i16 [[TMP669]], i16 [[TMP670]] seq_cst seq_cst, align 2
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP672:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP673:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP672]] monotonic, align 4
// CHECK-NEXT: [[TMP674:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP675:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP674]] monotonic, align 4
// CHECK-NEXT: [[TMP676:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP677:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP676]] monotonic, align 4
// CHECK-NEXT: [[TMP678:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP679:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP678]] monotonic, align 4
// CHECK-NEXT: [[TMP680:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP681:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP680]] monotonic, align 4
// CHECK-NEXT: [[TMP682:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP683:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP682]] monotonic, align 4
// CHECK-NEXT: [[TMP684:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP685:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP684]] monotonic, align 4
// CHECK-NEXT: [[TMP686:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP687:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP686]] monotonic, align 4
// CHECK-NEXT: [[TMP688:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP689:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP690:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP688]], i32 [[TMP689]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP691:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP692:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP693:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP691]], i32 [[TMP692]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP694:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP695:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP696:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP694]], i32 [[TMP695]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP697:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP698:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP699:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP697]], i32 [[TMP698]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP700:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP701:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP700]] monotonic, align 4
// CHECK-NEXT: [[TMP702:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP703:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP702]] monotonic, align 4
// CHECK-NEXT: [[TMP704:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP705:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP704]] monotonic, align 4
// CHECK-NEXT: [[TMP706:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP707:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP706]] monotonic, align 4
// CHECK-NEXT: [[TMP708:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP709:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP708]] monotonic, align 4
// CHECK-NEXT: [[TMP710:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP711:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP710]] monotonic, align 4
// CHECK-NEXT: [[TMP712:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP713:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP712]] monotonic, align 4
// CHECK-NEXT: [[TMP714:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP715:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP714]] monotonic, align 4
// CHECK-NEXT: [[TMP716:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP717:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP718:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP716]], i32 [[TMP717]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP719:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP720:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP721:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP719]], i32 [[TMP720]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP722:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP723:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP724:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP722]], i32 [[TMP723]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP725:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP726:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP727:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP725]], i32 [[TMP726]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP728:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP729:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP728]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP730:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP731:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP730]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP732:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP733:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP732]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP734:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP735:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP734]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP736:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP737:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP736]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP738:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP739:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP738]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP740:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP741:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP740]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP742:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP743:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP742]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP744:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP745:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP746:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP744]], i32 [[TMP745]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP747:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP748:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP749:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP747]], i32 [[TMP748]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP750:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP751:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP752:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP750]], i32 [[TMP751]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP753:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP754:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP755:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP753]], i32 [[TMP754]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP756:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP757:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP756]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP758:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP759:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP758]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP760:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP761:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP760]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP762:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP763:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP762]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP764:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP765:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP764]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP766:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP767:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP766]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP768:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP769:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP768]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP770:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP771:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP770]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP772:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP773:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP774:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP772]], i32 [[TMP773]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP775:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP776:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP777:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP775]], i32 [[TMP776]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP778:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP779:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP780:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP778]], i32 [[TMP779]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP781:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP782:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP783:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP781]], i32 [[TMP782]] acq_rel acquire, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP784:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP785:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP784]] acquire, align 4
// CHECK-NEXT: [[TMP786:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP787:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP786]] acquire, align 4
// CHECK-NEXT: [[TMP788:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP789:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP788]] acquire, align 4
// CHECK-NEXT: [[TMP790:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP791:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP790]] acquire, align 4
// CHECK-NEXT: [[TMP792:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP793:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP792]] acquire, align 4
// CHECK-NEXT: [[TMP794:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP795:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP794]] acquire, align 4
// CHECK-NEXT: [[TMP796:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP797:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP796]] acquire, align 4
// CHECK-NEXT: [[TMP798:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP799:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP798]] acquire, align 4
// CHECK-NEXT: [[TMP800:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP801:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP802:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP800]], i32 [[TMP801]] acquire acquire, align 4
// CHECK-NEXT: [[TMP803:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP804:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP805:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP803]], i32 [[TMP804]] acquire acquire, align 4
// CHECK-NEXT: [[TMP806:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP807:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP808:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP806]], i32 [[TMP807]] acquire acquire, align 4
// CHECK-NEXT: [[TMP809:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP810:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP811:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP809]], i32 [[TMP810]] acquire acquire, align 4
// CHECK-NEXT: [[TMP812:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP813:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP812]] acquire, align 4
// CHECK-NEXT: [[TMP814:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP815:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP814]] acquire, align 4
// CHECK-NEXT: [[TMP816:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP817:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP816]] acquire, align 4
// CHECK-NEXT: [[TMP818:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP819:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP818]] acquire, align 4
// CHECK-NEXT: [[TMP820:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP821:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP820]] acquire, align 4
// CHECK-NEXT: [[TMP822:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP823:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP822]] acquire, align 4
// CHECK-NEXT: [[TMP824:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP825:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP824]] acquire, align 4
// CHECK-NEXT: [[TMP826:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP827:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP826]] acquire, align 4
// CHECK-NEXT: [[TMP828:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP829:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP830:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP828]], i32 [[TMP829]] acquire acquire, align 4
// CHECK-NEXT: [[TMP831:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP832:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP833:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP831]], i32 [[TMP832]] acquire acquire, align 4
// CHECK-NEXT: [[TMP834:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP835:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP836:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP834]], i32 [[TMP835]] acquire acquire, align 4
// CHECK-NEXT: [[TMP837:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP838:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP839:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP837]], i32 [[TMP838]] acquire acquire, align 4
// CHECK-NEXT: [[TMP840:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP841:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP840]] monotonic, align 4
// CHECK-NEXT: [[TMP842:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP843:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP842]] monotonic, align 4
// CHECK-NEXT: [[TMP844:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP845:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP844]] monotonic, align 4
// CHECK-NEXT: [[TMP846:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP847:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP846]] monotonic, align 4
// CHECK-NEXT: [[TMP848:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP849:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP848]] monotonic, align 4
// CHECK-NEXT: [[TMP850:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP851:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP850]] monotonic, align 4
// CHECK-NEXT: [[TMP852:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP853:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP852]] monotonic, align 4
// CHECK-NEXT: [[TMP854:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP855:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP854]] monotonic, align 4
// CHECK-NEXT: [[TMP856:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP857:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP858:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP856]], i32 [[TMP857]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP859:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP860:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP861:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP859]], i32 [[TMP860]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP862:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP863:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP864:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP862]], i32 [[TMP863]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP865:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP866:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP867:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP865]], i32 [[TMP866]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP868:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP869:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP868]] monotonic, align 4
// CHECK-NEXT: [[TMP870:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP871:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP870]] monotonic, align 4
// CHECK-NEXT: [[TMP872:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP873:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP872]] monotonic, align 4
// CHECK-NEXT: [[TMP874:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP875:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP874]] monotonic, align 4
// CHECK-NEXT: [[TMP876:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP877:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP876]] monotonic, align 4
// CHECK-NEXT: [[TMP878:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP879:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP878]] monotonic, align 4
// CHECK-NEXT: [[TMP880:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP881:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP880]] monotonic, align 4
// CHECK-NEXT: [[TMP882:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP883:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP882]] monotonic, align 4
// CHECK-NEXT: [[TMP884:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP885:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP886:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP884]], i32 [[TMP885]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP887:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP888:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP889:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP887]], i32 [[TMP888]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP890:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP891:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP892:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP890]], i32 [[TMP891]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP893:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP894:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP895:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP893]], i32 [[TMP894]] monotonic monotonic, align 4
// CHECK-NEXT: [[TMP896:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP897:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP896]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP898:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP899:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP898]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP900:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP901:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP900]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP902:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP903:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP902]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP904:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP905:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP904]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP906:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP907:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP906]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP908:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP909:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP908]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP910:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP911:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP910]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP912:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP913:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP914:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP912]], i32 [[TMP913]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP915:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP916:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP917:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP915]], i32 [[TMP916]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP918:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP919:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP920:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP918]], i32 [[TMP919]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP921:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP922:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP923:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP921]], i32 [[TMP922]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP924:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP925:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP924]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP926:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP927:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP926]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP928:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP929:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP928]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP930:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP931:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP930]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP932:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP933:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP932]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP934:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP935:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP934]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP936:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP937:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP936]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP938:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP939:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP938]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP940:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP941:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP942:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP940]], i32 [[TMP941]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP943:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP944:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP945:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP943]], i32 [[TMP944]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP946:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP947:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP948:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP946]], i32 [[TMP947]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP949:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP950:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP951:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP949]], i32 [[TMP950]] release monotonic, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP952:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP953:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP952]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP954:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP955:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP954]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP956:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP957:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP956]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP958:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP959:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP958]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP960:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP961:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP960]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP962:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP963:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP962]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP964:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP965:%.*]] = atomicrmw max ptr [[IX]], i32 [[TMP964]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP966:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP967:%.*]] = atomicrmw min ptr [[IX]], i32 [[TMP966]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP968:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP969:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP970:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP968]], i32 [[TMP969]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP971:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP972:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP973:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP971]], i32 [[TMP972]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP974:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP975:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP976:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP974]], i32 [[TMP975]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP977:%.*]] = load i32, ptr [[IE]], align 4
// CHECK-NEXT: [[TMP978:%.*]] = load i32, ptr [[ID]], align 4
// CHECK-NEXT: [[TMP979:%.*]] = cmpxchg ptr [[IX]], i32 [[TMP977]], i32 [[TMP978]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP980:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP981:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP980]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP982:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP983:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP982]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP984:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP985:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP984]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP986:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP987:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP986]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP988:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP989:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP988]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP990:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP991:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP990]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP992:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP993:%.*]] = atomicrmw umax ptr [[UIX]], i32 [[TMP992]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP994:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP995:%.*]] = atomicrmw umin ptr [[UIX]], i32 [[TMP994]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP996:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP997:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP998:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP996]], i32 [[TMP997]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP999:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP1000:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP1001:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP999]], i32 [[TMP1000]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1002:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP1003:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP1004:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP1002]], i32 [[TMP1003]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1005:%.*]] = load i32, ptr [[UIE]], align 4
// CHECK-NEXT: [[TMP1006:%.*]] = load i32, ptr [[UID]], align 4
// CHECK-NEXT: [[TMP1007:%.*]] = cmpxchg ptr [[UIX]], i32 [[TMP1005]], i32 [[TMP1006]] seq_cst seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1008:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1009:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1008]] monotonic, align 8
// CHECK-NEXT: [[TMP1010:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1011:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1010]] monotonic, align 8
// CHECK-NEXT: [[TMP1012:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1013:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1012]] monotonic, align 8
// CHECK-NEXT: [[TMP1014:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1015:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1014]] monotonic, align 8
// CHECK-NEXT: [[TMP1016:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1017:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1016]] monotonic, align 8
// CHECK-NEXT: [[TMP1018:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1019:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1018]] monotonic, align 8
// CHECK-NEXT: [[TMP1020:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1021:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1020]] monotonic, align 8
// CHECK-NEXT: [[TMP1022:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1023:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1022]] monotonic, align 8
// CHECK-NEXT: [[TMP1024:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1025:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1026:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1024]], i64 [[TMP1025]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1027:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1028:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1029:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1027]], i64 [[TMP1028]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1030:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1031:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1032:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1030]], i64 [[TMP1031]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1033:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1034:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1035:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1033]], i64 [[TMP1034]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1036:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1037:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1036]] monotonic, align 8
// CHECK-NEXT: [[TMP1038:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1039:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1038]] monotonic, align 8
// CHECK-NEXT: [[TMP1040:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1041:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1040]] monotonic, align 8
// CHECK-NEXT: [[TMP1042:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1043:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1042]] monotonic, align 8
// CHECK-NEXT: [[TMP1044:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1045:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1044]] monotonic, align 8
// CHECK-NEXT: [[TMP1046:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1047:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1046]] monotonic, align 8
// CHECK-NEXT: [[TMP1048:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1049:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1048]] monotonic, align 8
// CHECK-NEXT: [[TMP1050:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1051:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1050]] monotonic, align 8
// CHECK-NEXT: [[TMP1052:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1053:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1054:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1052]], i64 [[TMP1053]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1055:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1056:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1057:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1055]], i64 [[TMP1056]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1058:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1059:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1060:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1058]], i64 [[TMP1059]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1061:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1062:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1063:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1061]], i64 [[TMP1062]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1064:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1065:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1064]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1066:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1067:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1066]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1068:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1069:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1068]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1070:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1071:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1070]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1072:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1073:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1072]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1074:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1075:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1074]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1076:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1077:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1076]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1078:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1079:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1078]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1080:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1081:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1082:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1080]], i64 [[TMP1081]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1083:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1084:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1085:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1083]], i64 [[TMP1084]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1086:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1087:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1088:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1086]], i64 [[TMP1087]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1089:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1090:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1091:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1089]], i64 [[TMP1090]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1092:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1093:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1092]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1094:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1095:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1094]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1096:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1097:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1096]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1098:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1099:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1098]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1100:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1101:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1100]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1102:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1103:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1102]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1104:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1105:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1104]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1106:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1107:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1106]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1108:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1109:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1110:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1108]], i64 [[TMP1109]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1111:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1112:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1113:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1111]], i64 [[TMP1112]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1114:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1115:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1116:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1114]], i64 [[TMP1115]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1117:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1118:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1119:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1117]], i64 [[TMP1118]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1120:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1121:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1120]] acquire, align 8
// CHECK-NEXT: [[TMP1122:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1123:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1122]] acquire, align 8
// CHECK-NEXT: [[TMP1124:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1125:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1124]] acquire, align 8
// CHECK-NEXT: [[TMP1126:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1127:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1126]] acquire, align 8
// CHECK-NEXT: [[TMP1128:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1129:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1128]] acquire, align 8
// CHECK-NEXT: [[TMP1130:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1131:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1130]] acquire, align 8
// CHECK-NEXT: [[TMP1132:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1133:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1132]] acquire, align 8
// CHECK-NEXT: [[TMP1134:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1135:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1134]] acquire, align 8
// CHECK-NEXT: [[TMP1136:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1137:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1138:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1136]], i64 [[TMP1137]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1139:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1140:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1141:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1139]], i64 [[TMP1140]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1142:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1143:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1144:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1142]], i64 [[TMP1143]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1145:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1146:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1147:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1145]], i64 [[TMP1146]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1148:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1149:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1148]] acquire, align 8
// CHECK-NEXT: [[TMP1150:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1151:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1150]] acquire, align 8
// CHECK-NEXT: [[TMP1152:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1153:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1152]] acquire, align 8
// CHECK-NEXT: [[TMP1154:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1155:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1154]] acquire, align 8
// CHECK-NEXT: [[TMP1156:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1157:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1156]] acquire, align 8
// CHECK-NEXT: [[TMP1158:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1159:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1158]] acquire, align 8
// CHECK-NEXT: [[TMP1160:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1161:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1160]] acquire, align 8
// CHECK-NEXT: [[TMP1162:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1163:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1162]] acquire, align 8
// CHECK-NEXT: [[TMP1164:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1165:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1166:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1164]], i64 [[TMP1165]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1167:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1168:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1169:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1167]], i64 [[TMP1168]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1170:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1171:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1172:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1170]], i64 [[TMP1171]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1173:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1174:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1175:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1173]], i64 [[TMP1174]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1176:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1177:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1176]] monotonic, align 8
// CHECK-NEXT: [[TMP1178:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1179:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1178]] monotonic, align 8
// CHECK-NEXT: [[TMP1180:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1181:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1180]] monotonic, align 8
// CHECK-NEXT: [[TMP1182:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1183:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1182]] monotonic, align 8
// CHECK-NEXT: [[TMP1184:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1185:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1184]] monotonic, align 8
// CHECK-NEXT: [[TMP1186:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1187:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1186]] monotonic, align 8
// CHECK-NEXT: [[TMP1188:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1189:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1188]] monotonic, align 8
// CHECK-NEXT: [[TMP1190:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1191:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1190]] monotonic, align 8
// CHECK-NEXT: [[TMP1192:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1193:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1194:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1192]], i64 [[TMP1193]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1195:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1196:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1197:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1195]], i64 [[TMP1196]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1198:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1199:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1200:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1198]], i64 [[TMP1199]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1201:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1202:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1203:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1201]], i64 [[TMP1202]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1204:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1205:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1204]] monotonic, align 8
// CHECK-NEXT: [[TMP1206:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1207:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1206]] monotonic, align 8
// CHECK-NEXT: [[TMP1208:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1209:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1208]] monotonic, align 8
// CHECK-NEXT: [[TMP1210:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1211:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1210]] monotonic, align 8
// CHECK-NEXT: [[TMP1212:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1213:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1212]] monotonic, align 8
// CHECK-NEXT: [[TMP1214:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1215:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1214]] monotonic, align 8
// CHECK-NEXT: [[TMP1216:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1217:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1216]] monotonic, align 8
// CHECK-NEXT: [[TMP1218:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1219:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1218]] monotonic, align 8
// CHECK-NEXT: [[TMP1220:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1221:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1222:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1220]], i64 [[TMP1221]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1223:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1224:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1225:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1223]], i64 [[TMP1224]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1226:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1227:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1228:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1226]], i64 [[TMP1227]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1229:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1230:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1231:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1229]], i64 [[TMP1230]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1232:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1233:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1232]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1234:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1235:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1234]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1236:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1237:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1236]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1238:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1239:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1238]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1240:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1241:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1240]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1242:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1243:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1242]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1244:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1245:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1244]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1246:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1247:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1246]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1248:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1249:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1250:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1248]], i64 [[TMP1249]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1251:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1252:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1253:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1251]], i64 [[TMP1252]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1254:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1255:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1256:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1254]], i64 [[TMP1255]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1257:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1258:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1259:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1257]], i64 [[TMP1258]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1260:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1261:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1260]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1262:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1263:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1262]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1264:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1265:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1264]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1266:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1267:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1266]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1268:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1269:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1268]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1270:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1271:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1270]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1272:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1273:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1272]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1274:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1275:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1274]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1276:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1277:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1278:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1276]], i64 [[TMP1277]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1279:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1280:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1281:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1279]], i64 [[TMP1280]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1282:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1283:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1284:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1282]], i64 [[TMP1283]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1285:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1286:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1287:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1285]], i64 [[TMP1286]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1288:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1289:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1288]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1290:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1291:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1290]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1292:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1293:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1292]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1294:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1295:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1294]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1296:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1297:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1296]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1298:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1299:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1298]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1300:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1301:%.*]] = atomicrmw max ptr [[LX]], i64 [[TMP1300]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1302:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1303:%.*]] = atomicrmw min ptr [[LX]], i64 [[TMP1302]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1304:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1305:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1306:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1304]], i64 [[TMP1305]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1307:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1308:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1309:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1307]], i64 [[TMP1308]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1310:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1311:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1312:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1310]], i64 [[TMP1311]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1313:%.*]] = load i64, ptr [[LE]], align 8
// CHECK-NEXT: [[TMP1314:%.*]] = load i64, ptr [[LD]], align 8
// CHECK-NEXT: [[TMP1315:%.*]] = cmpxchg ptr [[LX]], i64 [[TMP1313]], i64 [[TMP1314]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1316:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1317:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1316]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1318:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1319:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1318]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1320:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1321:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1320]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1322:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1323:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1322]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1324:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1325:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1324]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1326:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1327:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1326]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1328:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1329:%.*]] = atomicrmw umax ptr [[ULX]], i64 [[TMP1328]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1330:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1331:%.*]] = atomicrmw umin ptr [[ULX]], i64 [[TMP1330]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1332:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1333:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1334:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1332]], i64 [[TMP1333]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1335:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1336:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1337:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1335]], i64 [[TMP1336]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1338:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1339:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1340:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1338]], i64 [[TMP1339]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1341:%.*]] = load i64, ptr [[ULE]], align 8
// CHECK-NEXT: [[TMP1342:%.*]] = load i64, ptr [[ULD]], align 8
// CHECK-NEXT: [[TMP1343:%.*]] = cmpxchg ptr [[ULX]], i64 [[TMP1341]], i64 [[TMP1342]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1344:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1345:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1344]] monotonic, align 8
// CHECK-NEXT: [[TMP1346:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1347:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1346]] monotonic, align 8
// CHECK-NEXT: [[TMP1348:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1349:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1348]] monotonic, align 8
// CHECK-NEXT: [[TMP1350:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1351:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1350]] monotonic, align 8
// CHECK-NEXT: [[TMP1352:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1353:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1352]] monotonic, align 8
// CHECK-NEXT: [[TMP1354:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1355:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1354]] monotonic, align 8
// CHECK-NEXT: [[TMP1356:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1357:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1356]] monotonic, align 8
// CHECK-NEXT: [[TMP1358:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1359:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1358]] monotonic, align 8
// CHECK-NEXT: [[TMP1360:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1361:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1362:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1360]], i64 [[TMP1361]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1363:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1364:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1365:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1363]], i64 [[TMP1364]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1366:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1367:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1368:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1366]], i64 [[TMP1367]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1369:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1370:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1371:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1369]], i64 [[TMP1370]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1372:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1373:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1372]] monotonic, align 8
// CHECK-NEXT: [[TMP1374:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1375:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1374]] monotonic, align 8
// CHECK-NEXT: [[TMP1376:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1377:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1376]] monotonic, align 8
// CHECK-NEXT: [[TMP1378:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1379:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1378]] monotonic, align 8
// CHECK-NEXT: [[TMP1380:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1381:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1380]] monotonic, align 8
// CHECK-NEXT: [[TMP1382:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1383:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1382]] monotonic, align 8
// CHECK-NEXT: [[TMP1384:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1385:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1384]] monotonic, align 8
// CHECK-NEXT: [[TMP1386:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1387:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1386]] monotonic, align 8
// CHECK-NEXT: [[TMP1388:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1389:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1390:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1388]], i64 [[TMP1389]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1391:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1392:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1393:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1391]], i64 [[TMP1392]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1394:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1395:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1396:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1394]], i64 [[TMP1395]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1397:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1398:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1399:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1397]], i64 [[TMP1398]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1400:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1401:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1400]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1402:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1403:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1402]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1404:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1405:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1404]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1406:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1407:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1406]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1408:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1409:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1408]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1410:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1411:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1410]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1412:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1413:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1412]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1414:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1415:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1414]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1416:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1417:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1418:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1416]], i64 [[TMP1417]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1419:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1420:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1421:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1419]], i64 [[TMP1420]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1422:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1423:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1424:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1422]], i64 [[TMP1423]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1425:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1426:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1427:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1425]], i64 [[TMP1426]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1428:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1429:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1428]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1430:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1431:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1430]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1432:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1433:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1432]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1434:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1435:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1434]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1436:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1437:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1436]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1438:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1439:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1438]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1440:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1441:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1440]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1442:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1443:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1442]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1444:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1445:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1446:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1444]], i64 [[TMP1445]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1447:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1448:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1449:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1447]], i64 [[TMP1448]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1450:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1451:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1452:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1450]], i64 [[TMP1451]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1453:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1454:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1455:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1453]], i64 [[TMP1454]] acq_rel acquire, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1456:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1457:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1456]] acquire, align 8
// CHECK-NEXT: [[TMP1458:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1459:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1458]] acquire, align 8
// CHECK-NEXT: [[TMP1460:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1461:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1460]] acquire, align 8
// CHECK-NEXT: [[TMP1462:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1463:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1462]] acquire, align 8
// CHECK-NEXT: [[TMP1464:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1465:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1464]] acquire, align 8
// CHECK-NEXT: [[TMP1466:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1467:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1466]] acquire, align 8
// CHECK-NEXT: [[TMP1468:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1469:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1468]] acquire, align 8
// CHECK-NEXT: [[TMP1470:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1471:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1470]] acquire, align 8
// CHECK-NEXT: [[TMP1472:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1473:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1474:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1472]], i64 [[TMP1473]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1475:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1476:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1477:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1475]], i64 [[TMP1476]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1478:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1479:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1480:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1478]], i64 [[TMP1479]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1481:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1482:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1483:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1481]], i64 [[TMP1482]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1484:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1485:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1484]] acquire, align 8
// CHECK-NEXT: [[TMP1486:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1487:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1486]] acquire, align 8
// CHECK-NEXT: [[TMP1488:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1489:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1488]] acquire, align 8
// CHECK-NEXT: [[TMP1490:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1491:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1490]] acquire, align 8
// CHECK-NEXT: [[TMP1492:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1493:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1492]] acquire, align 8
// CHECK-NEXT: [[TMP1494:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1495:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1494]] acquire, align 8
// CHECK-NEXT: [[TMP1496:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1497:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1496]] acquire, align 8
// CHECK-NEXT: [[TMP1498:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1499:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1498]] acquire, align 8
// CHECK-NEXT: [[TMP1500:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1501:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1502:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1500]], i64 [[TMP1501]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1503:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1504:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1505:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1503]], i64 [[TMP1504]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1506:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1507:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1508:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1506]], i64 [[TMP1507]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1509:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1510:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1511:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1509]], i64 [[TMP1510]] acquire acquire, align 8
// CHECK-NEXT: [[TMP1512:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1513:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1512]] monotonic, align 8
// CHECK-NEXT: [[TMP1514:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1515:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1514]] monotonic, align 8
// CHECK-NEXT: [[TMP1516:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1517:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1516]] monotonic, align 8
// CHECK-NEXT: [[TMP1518:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1519:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1518]] monotonic, align 8
// CHECK-NEXT: [[TMP1520:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1521:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1520]] monotonic, align 8
// CHECK-NEXT: [[TMP1522:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1523:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1522]] monotonic, align 8
// CHECK-NEXT: [[TMP1524:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1525:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1524]] monotonic, align 8
// CHECK-NEXT: [[TMP1526:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1527:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1526]] monotonic, align 8
// CHECK-NEXT: [[TMP1528:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1529:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1530:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1528]], i64 [[TMP1529]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1531:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1532:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1533:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1531]], i64 [[TMP1532]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1534:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1535:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1536:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1534]], i64 [[TMP1535]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1537:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1538:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1539:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1537]], i64 [[TMP1538]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1540:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1541:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1540]] monotonic, align 8
// CHECK-NEXT: [[TMP1542:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1543:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1542]] monotonic, align 8
// CHECK-NEXT: [[TMP1544:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1545:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1544]] monotonic, align 8
// CHECK-NEXT: [[TMP1546:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1547:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1546]] monotonic, align 8
// CHECK-NEXT: [[TMP1548:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1549:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1548]] monotonic, align 8
// CHECK-NEXT: [[TMP1550:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1551:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1550]] monotonic, align 8
// CHECK-NEXT: [[TMP1552:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1553:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1552]] monotonic, align 8
// CHECK-NEXT: [[TMP1554:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1555:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1554]] monotonic, align 8
// CHECK-NEXT: [[TMP1556:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1557:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1558:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1556]], i64 [[TMP1557]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1559:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1560:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1561:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1559]], i64 [[TMP1560]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1562:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1563:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1564:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1562]], i64 [[TMP1563]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1565:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1566:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1567:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1565]], i64 [[TMP1566]] monotonic monotonic, align 8
// CHECK-NEXT: [[TMP1568:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1569:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1568]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1570:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1571:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1570]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1572:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1573:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1572]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1574:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1575:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1574]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1576:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1577:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1576]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1578:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1579:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1578]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1580:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1581:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1580]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1582:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1583:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1582]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1584:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1585:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1586:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1584]], i64 [[TMP1585]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1587:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1588:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1589:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1587]], i64 [[TMP1588]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1590:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1591:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1592:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1590]], i64 [[TMP1591]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1593:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1594:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1595:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1593]], i64 [[TMP1594]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1596:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1597:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1596]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1598:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1599:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1598]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1600:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1601:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1600]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1602:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1603:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1602]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1604:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1605:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1604]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1606:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1607:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1606]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1608:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1609:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1608]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1610:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1611:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1610]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1612:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1613:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1614:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1612]], i64 [[TMP1613]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1615:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1616:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1617:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1615]], i64 [[TMP1616]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1618:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1619:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1620:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1618]], i64 [[TMP1619]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1621:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1622:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1623:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1621]], i64 [[TMP1622]] release monotonic, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1624:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1625:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1624]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1626:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1627:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1626]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1628:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1629:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1628]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1630:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1631:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1630]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1632:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1633:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1632]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1634:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1635:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1634]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1636:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1637:%.*]] = atomicrmw max ptr [[LLX]], i64 [[TMP1636]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1638:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1639:%.*]] = atomicrmw min ptr [[LLX]], i64 [[TMP1638]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1640:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1641:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1642:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1640]], i64 [[TMP1641]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1643:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1644:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1645:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1643]], i64 [[TMP1644]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1646:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1647:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1648:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1646]], i64 [[TMP1647]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1649:%.*]] = load i64, ptr [[LLE]], align 8
// CHECK-NEXT: [[TMP1650:%.*]] = load i64, ptr [[LLD]], align 8
// CHECK-NEXT: [[TMP1651:%.*]] = cmpxchg ptr [[LLX]], i64 [[TMP1649]], i64 [[TMP1650]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1652:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1653:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1652]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1654:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1655:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1654]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1656:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1657:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1656]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1658:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1659:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1658]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1660:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1661:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1660]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1662:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1663:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1662]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1664:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1665:%.*]] = atomicrmw umax ptr [[ULLX]], i64 [[TMP1664]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1666:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1667:%.*]] = atomicrmw umin ptr [[ULLX]], i64 [[TMP1666]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1668:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1669:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1670:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1668]], i64 [[TMP1669]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1671:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1672:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1673:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1671]], i64 [[TMP1672]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1674:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1675:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1676:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1674]], i64 [[TMP1675]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1677:%.*]] = load i64, ptr [[ULLE]], align 8
// CHECK-NEXT: [[TMP1678:%.*]] = load i64, ptr [[ULLD]], align 8
// CHECK-NEXT: [[TMP1679:%.*]] = cmpxchg ptr [[ULLX]], i64 [[TMP1677]], i64 [[TMP1678]] seq_cst seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1680:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1681:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1680]] monotonic, align 4
// CHECK-NEXT: [[TMP1682:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1683:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1682]] monotonic, align 4
// CHECK-NEXT: [[TMP1684:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1685:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1684]] monotonic, align 4
// CHECK-NEXT: [[TMP1686:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1687:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1686]] monotonic, align 4
// CHECK-NEXT: [[TMP1688:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1689:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1688]] monotonic, align 4
// CHECK-NEXT: [[TMP1690:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1691:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1690]] monotonic, align 4
// CHECK-NEXT: [[TMP1692:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1693:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1692]] monotonic, align 4
// CHECK-NEXT: [[TMP1694:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1695:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1694]] monotonic, align 4
// CHECK-NEXT: [[TMP1696:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1697:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1696]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1698:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1699:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1698]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1700:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1701:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1700]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1702:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1703:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1702]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1704:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1705:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1704]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1706:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1707:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1706]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1708:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1709:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1708]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1710:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1711:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1710]] acq_rel, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1712:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1713:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1712]] acquire, align 4
// CHECK-NEXT: [[TMP1714:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1715:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1714]] acquire, align 4
// CHECK-NEXT: [[TMP1716:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1717:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1716]] acquire, align 4
// CHECK-NEXT: [[TMP1718:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1719:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1718]] acquire, align 4
// CHECK-NEXT: [[TMP1720:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1721:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1720]] acquire, align 4
// CHECK-NEXT: [[TMP1722:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1723:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1722]] acquire, align 4
// CHECK-NEXT: [[TMP1724:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1725:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1724]] acquire, align 4
// CHECK-NEXT: [[TMP1726:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1727:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1726]] acquire, align 4
// CHECK-NEXT: [[TMP1728:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1729:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1728]] monotonic, align 4
// CHECK-NEXT: [[TMP1730:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1731:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1730]] monotonic, align 4
// CHECK-NEXT: [[TMP1732:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1733:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1732]] monotonic, align 4
// CHECK-NEXT: [[TMP1734:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1735:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1734]] monotonic, align 4
// CHECK-NEXT: [[TMP1736:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1737:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1736]] monotonic, align 4
// CHECK-NEXT: [[TMP1738:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1739:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1738]] monotonic, align 4
// CHECK-NEXT: [[TMP1740:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1741:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1740]] monotonic, align 4
// CHECK-NEXT: [[TMP1742:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1743:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1742]] monotonic, align 4
// CHECK-NEXT: [[TMP1744:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1745:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1744]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1746:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1747:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1746]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1748:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1749:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1748]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1750:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1751:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1750]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1752:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1753:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1752]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1754:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1755:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1754]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1756:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1757:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1756]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1758:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1759:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1758]] release, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1760:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1761:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1760]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1762:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1763:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1762]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1764:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1765:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1764]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1766:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1767:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1766]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1768:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1769:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1768]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1770:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1771:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1770]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1772:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1773:%.*]] = atomicrmw fmax ptr [[FX]], float [[TMP1772]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1774:%.*]] = load float, ptr [[FE]], align 4
// CHECK-NEXT: [[TMP1775:%.*]] = atomicrmw fmin ptr [[FX]], float [[TMP1774]] seq_cst, align 4
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1776:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1777:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1776]] monotonic, align 8
// CHECK-NEXT: [[TMP1778:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1779:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1778]] monotonic, align 8
// CHECK-NEXT: [[TMP1780:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1781:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1780]] monotonic, align 8
// CHECK-NEXT: [[TMP1782:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1783:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1782]] monotonic, align 8
// CHECK-NEXT: [[TMP1784:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1785:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1784]] monotonic, align 8
// CHECK-NEXT: [[TMP1786:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1787:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1786]] monotonic, align 8
// CHECK-NEXT: [[TMP1788:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1789:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1788]] monotonic, align 8
// CHECK-NEXT: [[TMP1790:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1791:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1790]] monotonic, align 8
// CHECK-NEXT: [[TMP1792:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1793:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1792]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1794:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1795:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1794]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1796:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1797:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1796]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1798:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1799:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1798]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1800:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1801:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1800]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1802:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1803:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1802]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1804:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1805:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1804]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1806:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1807:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1806]] acq_rel, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1808:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1809:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1808]] acquire, align 8
// CHECK-NEXT: [[TMP1810:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1811:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1810]] acquire, align 8
// CHECK-NEXT: [[TMP1812:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1813:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1812]] acquire, align 8
// CHECK-NEXT: [[TMP1814:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1815:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1814]] acquire, align 8
// CHECK-NEXT: [[TMP1816:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1817:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1816]] acquire, align 8
// CHECK-NEXT: [[TMP1818:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1819:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1818]] acquire, align 8
// CHECK-NEXT: [[TMP1820:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1821:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1820]] acquire, align 8
// CHECK-NEXT: [[TMP1822:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1823:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1822]] acquire, align 8
// CHECK-NEXT: [[TMP1824:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1825:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1824]] monotonic, align 8
// CHECK-NEXT: [[TMP1826:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1827:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1826]] monotonic, align 8
// CHECK-NEXT: [[TMP1828:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1829:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1828]] monotonic, align 8
// CHECK-NEXT: [[TMP1830:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1831:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1830]] monotonic, align 8
// CHECK-NEXT: [[TMP1832:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1833:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1832]] monotonic, align 8
// CHECK-NEXT: [[TMP1834:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1835:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1834]] monotonic, align 8
// CHECK-NEXT: [[TMP1836:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1837:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1836]] monotonic, align 8
// CHECK-NEXT: [[TMP1838:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1839:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1838]] monotonic, align 8
// CHECK-NEXT: [[TMP1840:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1841:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1840]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1842:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1843:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1842]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1844:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1845:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1844]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1846:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1847:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1846]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1848:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1849:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1848]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1850:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1851:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1850]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1852:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1853:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1852]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1854:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1855:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1854]] release, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1856:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1857:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1856]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1858:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1859:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1858]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1860:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1861:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1860]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1862:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1863:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1862]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1864:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1865:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1864]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1866:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1867:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1866]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1868:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1869:%.*]] = atomicrmw fmax ptr [[DX]], double [[TMP1868]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP1870:%.*]] = load double, ptr [[DE]], align 8
// CHECK-NEXT: [[TMP1871:%.*]] = atomicrmw fmin ptr [[DX]], double [[TMP1870]] seq_cst, align 8
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: ret void
//
//
// CHECK-LABEL: define {{[^@]+}}@bar
// CHECK-SAME: () #[[ATTR0]] {
// CHECK-NEXT: entry:
// CHECK-NEXT: [[CX:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CV:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CR:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CE:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[CD:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCX:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCV:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCR:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCE:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[UCD:%.*]] = alloca i8, align 1
// CHECK-NEXT: [[SX:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SV:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SR:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SE:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[SD:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USX:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USV:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USR:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USE:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[USD:%.*]] = alloca i16, align 2
// CHECK-NEXT: [[IX:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[IV:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[IR:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[IE:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[ID:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIX:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIV:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIR:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UIE:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[UID:%.*]] = alloca i32, align 4
// CHECK-NEXT: [[LX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LV:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LR:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULV:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULR:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLV:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLR:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[LLD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLX:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLV:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLR:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLE:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[ULLD:%.*]] = alloca i64, align 8
// CHECK-NEXT: [[FX:%.*]] = alloca float, align 4
// CHECK-NEXT: [[FV:%.*]] = alloca float, align 4
// CHECK-NEXT: [[FE:%.*]] = alloca float, align 4
// CHECK-NEXT: [[FD:%.*]] = alloca float, align 4
// CHECK-NEXT: [[DX:%.*]] = alloca double, align 8
// CHECK-NEXT: [[DV:%.*]] = alloca double, align 8
// CHECK-NEXT: [[DE:%.*]] = alloca double, align 8
// CHECK-NEXT: [[DD:%.*]] = alloca double, align 8
// CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP1:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP0]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP1]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP2:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP3:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP2]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP3]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP4:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP5:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP4]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP5]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP6:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP7:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP6]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP7]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP8:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP9:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP10:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP8]], i8 [[TMP9]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP11:%.*]] = extractvalue { i8, i1 } [[TMP10]], 0
// CHECK-NEXT: store i8 [[TMP11]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP12:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP13:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP14:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP12]], i8 [[TMP13]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP15:%.*]] = extractvalue { i8, i1 } [[TMP14]], 0
// CHECK-NEXT: store i8 [[TMP15]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP16:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP17:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP16]] monotonic, align 1
// CHECK-NEXT: [[TMP18:%.*]] = icmp sgt i8 [[TMP17]], [[TMP16]]
// CHECK-NEXT: [[TMP19:%.*]] = select i1 [[TMP18]], i8 [[TMP16]], i8 [[TMP17]]
// CHECK-NEXT: store i8 [[TMP19]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP20:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP21:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP20]] monotonic, align 1
// CHECK-NEXT: [[TMP22:%.*]] = icmp slt i8 [[TMP21]], [[TMP20]]
// CHECK-NEXT: [[TMP23:%.*]] = select i1 [[TMP22]], i8 [[TMP20]], i8 [[TMP21]]
// CHECK-NEXT: store i8 [[TMP23]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP24:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP25:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP24]] monotonic, align 1
// CHECK-NEXT: [[TMP26:%.*]] = icmp slt i8 [[TMP25]], [[TMP24]]
// CHECK-NEXT: [[TMP27:%.*]] = select i1 [[TMP26]], i8 [[TMP24]], i8 [[TMP25]]
// CHECK-NEXT: store i8 [[TMP27]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP28:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP29:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP28]] monotonic, align 1
// CHECK-NEXT: [[TMP30:%.*]] = icmp sgt i8 [[TMP29]], [[TMP28]]
// CHECK-NEXT: [[TMP31:%.*]] = select i1 [[TMP30]], i8 [[TMP28]], i8 [[TMP29]]
// CHECK-NEXT: store i8 [[TMP31]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP32:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP33:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP34:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP32]], i8 [[TMP33]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP35:%.*]] = extractvalue { i8, i1 } [[TMP34]], 0
// CHECK-NEXT: [[TMP36:%.*]] = extractvalue { i8, i1 } [[TMP34]], 1
// CHECK-NEXT: [[TMP37:%.*]] = select i1 [[TMP36]], i8 [[TMP32]], i8 [[TMP35]]
// CHECK-NEXT: store i8 [[TMP37]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP38:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP39:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP40:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP38]], i8 [[TMP39]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP41:%.*]] = extractvalue { i8, i1 } [[TMP40]], 0
// CHECK-NEXT: [[TMP42:%.*]] = extractvalue { i8, i1 } [[TMP40]], 1
// CHECK-NEXT: [[TMP43:%.*]] = select i1 [[TMP42]], i8 [[TMP38]], i8 [[TMP41]]
// CHECK-NEXT: store i8 [[TMP43]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP44:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP45:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP46:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP44]], i8 [[TMP45]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP47:%.*]] = extractvalue { i8, i1 } [[TMP46]], 0
// CHECK-NEXT: [[TMP48:%.*]] = extractvalue { i8, i1 } [[TMP46]], 1
// CHECK-NEXT: br i1 [[TMP48]], label [[CX_ATOMIC_EXIT:%.*]], label [[CX_ATOMIC_CONT:%.*]]
// CHECK: cx.atomic.cont:
// CHECK-NEXT: store i8 [[TMP47]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT]]
// CHECK: cx.atomic.exit:
// CHECK-NEXT: [[TMP49:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP50:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP51:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP49]], i8 [[TMP50]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP52:%.*]] = extractvalue { i8, i1 } [[TMP51]], 0
// CHECK-NEXT: [[TMP53:%.*]] = extractvalue { i8, i1 } [[TMP51]], 1
// CHECK-NEXT: br i1 [[TMP53]], label [[CX_ATOMIC_EXIT1:%.*]], label [[CX_ATOMIC_CONT2:%.*]]
// CHECK: cx.atomic.cont2:
// CHECK-NEXT: store i8 [[TMP52]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT1]]
// CHECK: cx.atomic.exit1:
// CHECK-NEXT: [[TMP54:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP55:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP56:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP54]], i8 [[TMP55]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP57:%.*]] = extractvalue { i8, i1 } [[TMP56]], 1
// CHECK-NEXT: [[TMP58:%.*]] = sext i1 [[TMP57]] to i8
// CHECK-NEXT: store i8 [[TMP58]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP59:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP60:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP61:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP59]], i8 [[TMP60]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP62:%.*]] = extractvalue { i8, i1 } [[TMP61]], 1
// CHECK-NEXT: [[TMP63:%.*]] = sext i1 [[TMP62]] to i8
// CHECK-NEXT: store i8 [[TMP63]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP64:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP65:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP66:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP64]], i8 [[TMP65]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP67:%.*]] = extractvalue { i8, i1 } [[TMP66]], 0
// CHECK-NEXT: [[TMP68:%.*]] = extractvalue { i8, i1 } [[TMP66]], 1
// CHECK-NEXT: br i1 [[TMP68]], label [[CX_ATOMIC_EXIT3:%.*]], label [[CX_ATOMIC_CONT4:%.*]]
// CHECK: cx.atomic.cont4:
// CHECK-NEXT: store i8 [[TMP67]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT3]]
// CHECK: cx.atomic.exit3:
// CHECK-NEXT: [[TMP69:%.*]] = extractvalue { i8, i1 } [[TMP66]], 1
// CHECK-NEXT: [[TMP70:%.*]] = sext i1 [[TMP69]] to i8
// CHECK-NEXT: store i8 [[TMP70]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP71:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP72:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP73:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP71]], i8 [[TMP72]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP74:%.*]] = extractvalue { i8, i1 } [[TMP73]], 0
// CHECK-NEXT: [[TMP75:%.*]] = extractvalue { i8, i1 } [[TMP73]], 1
// CHECK-NEXT: br i1 [[TMP75]], label [[CX_ATOMIC_EXIT5:%.*]], label [[CX_ATOMIC_CONT6:%.*]]
// CHECK: cx.atomic.cont6:
// CHECK-NEXT: store i8 [[TMP74]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT5]]
// CHECK: cx.atomic.exit5:
// CHECK-NEXT: [[TMP76:%.*]] = extractvalue { i8, i1 } [[TMP73]], 1
// CHECK-NEXT: [[TMP77:%.*]] = sext i1 [[TMP76]] to i8
// CHECK-NEXT: store i8 [[TMP77]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP78:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP79:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP78]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP79]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP80:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP81:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP80]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP81]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP82:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP83:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP82]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP83]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP84:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP85:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP84]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP85]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP86:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP87:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP88:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP86]], i8 [[TMP87]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP89:%.*]] = extractvalue { i8, i1 } [[TMP88]], 0
// CHECK-NEXT: store i8 [[TMP89]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP90:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP91:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP92:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP90]], i8 [[TMP91]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP93:%.*]] = extractvalue { i8, i1 } [[TMP92]], 0
// CHECK-NEXT: store i8 [[TMP93]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP94:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP95:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP94]] acq_rel, align 1
// CHECK-NEXT: [[TMP96:%.*]] = icmp sgt i8 [[TMP95]], [[TMP94]]
// CHECK-NEXT: [[TMP97:%.*]] = select i1 [[TMP96]], i8 [[TMP94]], i8 [[TMP95]]
// CHECK-NEXT: store i8 [[TMP97]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP98:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP99:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP98]] acq_rel, align 1
// CHECK-NEXT: [[TMP100:%.*]] = icmp slt i8 [[TMP99]], [[TMP98]]
// CHECK-NEXT: [[TMP101:%.*]] = select i1 [[TMP100]], i8 [[TMP98]], i8 [[TMP99]]
// CHECK-NEXT: store i8 [[TMP101]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP102:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP103:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP102]] acq_rel, align 1
// CHECK-NEXT: [[TMP104:%.*]] = icmp slt i8 [[TMP103]], [[TMP102]]
// CHECK-NEXT: [[TMP105:%.*]] = select i1 [[TMP104]], i8 [[TMP102]], i8 [[TMP103]]
// CHECK-NEXT: store i8 [[TMP105]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP106:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP107:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP106]] acq_rel, align 1
// CHECK-NEXT: [[TMP108:%.*]] = icmp sgt i8 [[TMP107]], [[TMP106]]
// CHECK-NEXT: [[TMP109:%.*]] = select i1 [[TMP108]], i8 [[TMP106]], i8 [[TMP107]]
// CHECK-NEXT: store i8 [[TMP109]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP110:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP111:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP112:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP110]], i8 [[TMP111]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP113:%.*]] = extractvalue { i8, i1 } [[TMP112]], 0
// CHECK-NEXT: [[TMP114:%.*]] = extractvalue { i8, i1 } [[TMP112]], 1
// CHECK-NEXT: [[TMP115:%.*]] = select i1 [[TMP114]], i8 [[TMP110]], i8 [[TMP113]]
// CHECK-NEXT: store i8 [[TMP115]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP116:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP117:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP118:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP116]], i8 [[TMP117]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP119:%.*]] = extractvalue { i8, i1 } [[TMP118]], 0
// CHECK-NEXT: [[TMP120:%.*]] = extractvalue { i8, i1 } [[TMP118]], 1
// CHECK-NEXT: [[TMP121:%.*]] = select i1 [[TMP120]], i8 [[TMP116]], i8 [[TMP119]]
// CHECK-NEXT: store i8 [[TMP121]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP122:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP123:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP124:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP122]], i8 [[TMP123]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP125:%.*]] = extractvalue { i8, i1 } [[TMP124]], 0
// CHECK-NEXT: [[TMP126:%.*]] = extractvalue { i8, i1 } [[TMP124]], 1
// CHECK-NEXT: br i1 [[TMP126]], label [[CX_ATOMIC_EXIT7:%.*]], label [[CX_ATOMIC_CONT8:%.*]]
// CHECK: cx.atomic.cont8:
// CHECK-NEXT: store i8 [[TMP125]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT7]]
// CHECK: cx.atomic.exit7:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP127:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP128:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP129:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP127]], i8 [[TMP128]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP130:%.*]] = extractvalue { i8, i1 } [[TMP129]], 0
// CHECK-NEXT: [[TMP131:%.*]] = extractvalue { i8, i1 } [[TMP129]], 1
// CHECK-NEXT: br i1 [[TMP131]], label [[CX_ATOMIC_EXIT9:%.*]], label [[CX_ATOMIC_CONT10:%.*]]
// CHECK: cx.atomic.cont10:
// CHECK-NEXT: store i8 [[TMP130]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT9]]
// CHECK: cx.atomic.exit9:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP132:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP133:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP134:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP132]], i8 [[TMP133]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP135:%.*]] = extractvalue { i8, i1 } [[TMP134]], 1
// CHECK-NEXT: [[TMP136:%.*]] = sext i1 [[TMP135]] to i8
// CHECK-NEXT: store i8 [[TMP136]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP137:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP138:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP139:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP137]], i8 [[TMP138]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP140:%.*]] = extractvalue { i8, i1 } [[TMP139]], 1
// CHECK-NEXT: [[TMP141:%.*]] = sext i1 [[TMP140]] to i8
// CHECK-NEXT: store i8 [[TMP141]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP142:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP143:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP144:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP142]], i8 [[TMP143]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP145:%.*]] = extractvalue { i8, i1 } [[TMP144]], 0
// CHECK-NEXT: [[TMP146:%.*]] = extractvalue { i8, i1 } [[TMP144]], 1
// CHECK-NEXT: br i1 [[TMP146]], label [[CX_ATOMIC_EXIT11:%.*]], label [[CX_ATOMIC_CONT12:%.*]]
// CHECK: cx.atomic.cont12:
// CHECK-NEXT: store i8 [[TMP145]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT11]]
// CHECK: cx.atomic.exit11:
// CHECK-NEXT: [[TMP147:%.*]] = extractvalue { i8, i1 } [[TMP144]], 1
// CHECK-NEXT: [[TMP148:%.*]] = sext i1 [[TMP147]] to i8
// CHECK-NEXT: store i8 [[TMP148]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP149:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP150:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP151:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP149]], i8 [[TMP150]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP152:%.*]] = extractvalue { i8, i1 } [[TMP151]], 0
// CHECK-NEXT: [[TMP153:%.*]] = extractvalue { i8, i1 } [[TMP151]], 1
// CHECK-NEXT: br i1 [[TMP153]], label [[CX_ATOMIC_EXIT13:%.*]], label [[CX_ATOMIC_CONT14:%.*]]
// CHECK: cx.atomic.cont14:
// CHECK-NEXT: store i8 [[TMP152]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT13]]
// CHECK: cx.atomic.exit13:
// CHECK-NEXT: [[TMP154:%.*]] = extractvalue { i8, i1 } [[TMP151]], 1
// CHECK-NEXT: [[TMP155:%.*]] = sext i1 [[TMP154]] to i8
// CHECK-NEXT: store i8 [[TMP155]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP156:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP157:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP156]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP157]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP158:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP159:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP158]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP159]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP160:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP161:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP160]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP161]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP162:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP163:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP162]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP163]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP164:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP165:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP166:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP164]], i8 [[TMP165]] acquire acquire, align 1
// CHECK-NEXT: [[TMP167:%.*]] = extractvalue { i8, i1 } [[TMP166]], 0
// CHECK-NEXT: store i8 [[TMP167]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP168:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP169:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP170:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP168]], i8 [[TMP169]] acquire acquire, align 1
// CHECK-NEXT: [[TMP171:%.*]] = extractvalue { i8, i1 } [[TMP170]], 0
// CHECK-NEXT: store i8 [[TMP171]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP172:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP173:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP172]] acquire, align 1
// CHECK-NEXT: [[TMP174:%.*]] = icmp sgt i8 [[TMP173]], [[TMP172]]
// CHECK-NEXT: [[TMP175:%.*]] = select i1 [[TMP174]], i8 [[TMP172]], i8 [[TMP173]]
// CHECK-NEXT: store i8 [[TMP175]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP176:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP177:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP176]] acquire, align 1
// CHECK-NEXT: [[TMP178:%.*]] = icmp slt i8 [[TMP177]], [[TMP176]]
// CHECK-NEXT: [[TMP179:%.*]] = select i1 [[TMP178]], i8 [[TMP176]], i8 [[TMP177]]
// CHECK-NEXT: store i8 [[TMP179]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP180:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP181:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP180]] acquire, align 1
// CHECK-NEXT: [[TMP182:%.*]] = icmp slt i8 [[TMP181]], [[TMP180]]
// CHECK-NEXT: [[TMP183:%.*]] = select i1 [[TMP182]], i8 [[TMP180]], i8 [[TMP181]]
// CHECK-NEXT: store i8 [[TMP183]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP184:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP185:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP184]] acquire, align 1
// CHECK-NEXT: [[TMP186:%.*]] = icmp sgt i8 [[TMP185]], [[TMP184]]
// CHECK-NEXT: [[TMP187:%.*]] = select i1 [[TMP186]], i8 [[TMP184]], i8 [[TMP185]]
// CHECK-NEXT: store i8 [[TMP187]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP188:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP189:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP190:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP188]], i8 [[TMP189]] acquire acquire, align 1
// CHECK-NEXT: [[TMP191:%.*]] = extractvalue { i8, i1 } [[TMP190]], 0
// CHECK-NEXT: [[TMP192:%.*]] = extractvalue { i8, i1 } [[TMP190]], 1
// CHECK-NEXT: [[TMP193:%.*]] = select i1 [[TMP192]], i8 [[TMP188]], i8 [[TMP191]]
// CHECK-NEXT: store i8 [[TMP193]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP194:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP195:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP196:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP194]], i8 [[TMP195]] acquire acquire, align 1
// CHECK-NEXT: [[TMP197:%.*]] = extractvalue { i8, i1 } [[TMP196]], 0
// CHECK-NEXT: [[TMP198:%.*]] = extractvalue { i8, i1 } [[TMP196]], 1
// CHECK-NEXT: [[TMP199:%.*]] = select i1 [[TMP198]], i8 [[TMP194]], i8 [[TMP197]]
// CHECK-NEXT: store i8 [[TMP199]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP200:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP201:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP202:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP200]], i8 [[TMP201]] acquire acquire, align 1
// CHECK-NEXT: [[TMP203:%.*]] = extractvalue { i8, i1 } [[TMP202]], 0
// CHECK-NEXT: [[TMP204:%.*]] = extractvalue { i8, i1 } [[TMP202]], 1
// CHECK-NEXT: br i1 [[TMP204]], label [[CX_ATOMIC_EXIT15:%.*]], label [[CX_ATOMIC_CONT16:%.*]]
// CHECK: cx.atomic.cont16:
// CHECK-NEXT: store i8 [[TMP203]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT15]]
// CHECK: cx.atomic.exit15:
// CHECK-NEXT: [[TMP205:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP206:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP207:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP205]], i8 [[TMP206]] acquire acquire, align 1
// CHECK-NEXT: [[TMP208:%.*]] = extractvalue { i8, i1 } [[TMP207]], 0
// CHECK-NEXT: [[TMP209:%.*]] = extractvalue { i8, i1 } [[TMP207]], 1
// CHECK-NEXT: br i1 [[TMP209]], label [[CX_ATOMIC_EXIT17:%.*]], label [[CX_ATOMIC_CONT18:%.*]]
// CHECK: cx.atomic.cont18:
// CHECK-NEXT: store i8 [[TMP208]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT17]]
// CHECK: cx.atomic.exit17:
// CHECK-NEXT: [[TMP210:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP211:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP212:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP210]], i8 [[TMP211]] acquire acquire, align 1
// CHECK-NEXT: [[TMP213:%.*]] = extractvalue { i8, i1 } [[TMP212]], 1
// CHECK-NEXT: [[TMP214:%.*]] = sext i1 [[TMP213]] to i8
// CHECK-NEXT: store i8 [[TMP214]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP215:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP216:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP217:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP215]], i8 [[TMP216]] acquire acquire, align 1
// CHECK-NEXT: [[TMP218:%.*]] = extractvalue { i8, i1 } [[TMP217]], 1
// CHECK-NEXT: [[TMP219:%.*]] = sext i1 [[TMP218]] to i8
// CHECK-NEXT: store i8 [[TMP219]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP220:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP221:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP222:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP220]], i8 [[TMP221]] acquire acquire, align 1
// CHECK-NEXT: [[TMP223:%.*]] = extractvalue { i8, i1 } [[TMP222]], 0
// CHECK-NEXT: [[TMP224:%.*]] = extractvalue { i8, i1 } [[TMP222]], 1
// CHECK-NEXT: br i1 [[TMP224]], label [[CX_ATOMIC_EXIT19:%.*]], label [[CX_ATOMIC_CONT20:%.*]]
// CHECK: cx.atomic.cont20:
// CHECK-NEXT: store i8 [[TMP223]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT19]]
// CHECK: cx.atomic.exit19:
// CHECK-NEXT: [[TMP225:%.*]] = extractvalue { i8, i1 } [[TMP222]], 1
// CHECK-NEXT: [[TMP226:%.*]] = sext i1 [[TMP225]] to i8
// CHECK-NEXT: store i8 [[TMP226]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP227:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP228:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP229:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP227]], i8 [[TMP228]] acquire acquire, align 1
// CHECK-NEXT: [[TMP230:%.*]] = extractvalue { i8, i1 } [[TMP229]], 0
// CHECK-NEXT: [[TMP231:%.*]] = extractvalue { i8, i1 } [[TMP229]], 1
// CHECK-NEXT: br i1 [[TMP231]], label [[CX_ATOMIC_EXIT21:%.*]], label [[CX_ATOMIC_CONT22:%.*]]
// CHECK: cx.atomic.cont22:
// CHECK-NEXT: store i8 [[TMP230]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT21]]
// CHECK: cx.atomic.exit21:
// CHECK-NEXT: [[TMP232:%.*]] = extractvalue { i8, i1 } [[TMP229]], 1
// CHECK-NEXT: [[TMP233:%.*]] = sext i1 [[TMP232]] to i8
// CHECK-NEXT: store i8 [[TMP233]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP234:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP235:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP234]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP235]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP236:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP237:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP236]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP237]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP238:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP239:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP238]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP239]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP240:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP241:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP240]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP241]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP242:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP243:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP244:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP242]], i8 [[TMP243]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP245:%.*]] = extractvalue { i8, i1 } [[TMP244]], 0
// CHECK-NEXT: store i8 [[TMP245]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP246:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP247:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP248:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP246]], i8 [[TMP247]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP249:%.*]] = extractvalue { i8, i1 } [[TMP248]], 0
// CHECK-NEXT: store i8 [[TMP249]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP250:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP251:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP250]] monotonic, align 1
// CHECK-NEXT: [[TMP252:%.*]] = icmp sgt i8 [[TMP251]], [[TMP250]]
// CHECK-NEXT: [[TMP253:%.*]] = select i1 [[TMP252]], i8 [[TMP250]], i8 [[TMP251]]
// CHECK-NEXT: store i8 [[TMP253]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP254:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP255:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP254]] monotonic, align 1
// CHECK-NEXT: [[TMP256:%.*]] = icmp slt i8 [[TMP255]], [[TMP254]]
// CHECK-NEXT: [[TMP257:%.*]] = select i1 [[TMP256]], i8 [[TMP254]], i8 [[TMP255]]
// CHECK-NEXT: store i8 [[TMP257]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP258:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP259:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP258]] monotonic, align 1
// CHECK-NEXT: [[TMP260:%.*]] = icmp slt i8 [[TMP259]], [[TMP258]]
// CHECK-NEXT: [[TMP261:%.*]] = select i1 [[TMP260]], i8 [[TMP258]], i8 [[TMP259]]
// CHECK-NEXT: store i8 [[TMP261]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP262:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP263:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP262]] monotonic, align 1
// CHECK-NEXT: [[TMP264:%.*]] = icmp sgt i8 [[TMP263]], [[TMP262]]
// CHECK-NEXT: [[TMP265:%.*]] = select i1 [[TMP264]], i8 [[TMP262]], i8 [[TMP263]]
// CHECK-NEXT: store i8 [[TMP265]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP266:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP267:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP268:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP266]], i8 [[TMP267]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP269:%.*]] = extractvalue { i8, i1 } [[TMP268]], 0
// CHECK-NEXT: [[TMP270:%.*]] = extractvalue { i8, i1 } [[TMP268]], 1
// CHECK-NEXT: [[TMP271:%.*]] = select i1 [[TMP270]], i8 [[TMP266]], i8 [[TMP269]]
// CHECK-NEXT: store i8 [[TMP271]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP272:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP273:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP274:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP272]], i8 [[TMP273]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP275:%.*]] = extractvalue { i8, i1 } [[TMP274]], 0
// CHECK-NEXT: [[TMP276:%.*]] = extractvalue { i8, i1 } [[TMP274]], 1
// CHECK-NEXT: [[TMP277:%.*]] = select i1 [[TMP276]], i8 [[TMP272]], i8 [[TMP275]]
// CHECK-NEXT: store i8 [[TMP277]], ptr [[CV]], align 1
// CHECK-NEXT: [[TMP278:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP279:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP280:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP278]], i8 [[TMP279]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP281:%.*]] = extractvalue { i8, i1 } [[TMP280]], 0
// CHECK-NEXT: [[TMP282:%.*]] = extractvalue { i8, i1 } [[TMP280]], 1
// CHECK-NEXT: br i1 [[TMP282]], label [[CX_ATOMIC_EXIT23:%.*]], label [[CX_ATOMIC_CONT24:%.*]]
// CHECK: cx.atomic.cont24:
// CHECK-NEXT: store i8 [[TMP281]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT23]]
// CHECK: cx.atomic.exit23:
// CHECK-NEXT: [[TMP283:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP284:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP285:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP283]], i8 [[TMP284]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP286:%.*]] = extractvalue { i8, i1 } [[TMP285]], 0
// CHECK-NEXT: [[TMP287:%.*]] = extractvalue { i8, i1 } [[TMP285]], 1
// CHECK-NEXT: br i1 [[TMP287]], label [[CX_ATOMIC_EXIT25:%.*]], label [[CX_ATOMIC_CONT26:%.*]]
// CHECK: cx.atomic.cont26:
// CHECK-NEXT: store i8 [[TMP286]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT25]]
// CHECK: cx.atomic.exit25:
// CHECK-NEXT: [[TMP288:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP289:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP290:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP288]], i8 [[TMP289]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP291:%.*]] = extractvalue { i8, i1 } [[TMP290]], 1
// CHECK-NEXT: [[TMP292:%.*]] = sext i1 [[TMP291]] to i8
// CHECK-NEXT: store i8 [[TMP292]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP293:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP294:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP295:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP293]], i8 [[TMP294]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP296:%.*]] = extractvalue { i8, i1 } [[TMP295]], 1
// CHECK-NEXT: [[TMP297:%.*]] = sext i1 [[TMP296]] to i8
// CHECK-NEXT: store i8 [[TMP297]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP298:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP299:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP300:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP298]], i8 [[TMP299]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP301:%.*]] = extractvalue { i8, i1 } [[TMP300]], 0
// CHECK-NEXT: [[TMP302:%.*]] = extractvalue { i8, i1 } [[TMP300]], 1
// CHECK-NEXT: br i1 [[TMP302]], label [[CX_ATOMIC_EXIT27:%.*]], label [[CX_ATOMIC_CONT28:%.*]]
// CHECK: cx.atomic.cont28:
// CHECK-NEXT: store i8 [[TMP301]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT27]]
// CHECK: cx.atomic.exit27:
// CHECK-NEXT: [[TMP303:%.*]] = extractvalue { i8, i1 } [[TMP300]], 1
// CHECK-NEXT: [[TMP304:%.*]] = sext i1 [[TMP303]] to i8
// CHECK-NEXT: store i8 [[TMP304]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP305:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP306:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP307:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP305]], i8 [[TMP306]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP308:%.*]] = extractvalue { i8, i1 } [[TMP307]], 0
// CHECK-NEXT: [[TMP309:%.*]] = extractvalue { i8, i1 } [[TMP307]], 1
// CHECK-NEXT: br i1 [[TMP309]], label [[CX_ATOMIC_EXIT29:%.*]], label [[CX_ATOMIC_CONT30:%.*]]
// CHECK: cx.atomic.cont30:
// CHECK-NEXT: store i8 [[TMP308]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT29]]
// CHECK: cx.atomic.exit29:
// CHECK-NEXT: [[TMP310:%.*]] = extractvalue { i8, i1 } [[TMP307]], 1
// CHECK-NEXT: [[TMP311:%.*]] = sext i1 [[TMP310]] to i8
// CHECK-NEXT: store i8 [[TMP311]], ptr [[CR]], align 1
// CHECK-NEXT: [[TMP312:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP313:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP312]] release, align 1
// CHECK-NEXT: store i8 [[TMP313]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP314:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP315:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP314]] release, align 1
// CHECK-NEXT: store i8 [[TMP315]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP316:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP317:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP316]] release, align 1
// CHECK-NEXT: store i8 [[TMP317]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP318:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP319:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP318]] release, align 1
// CHECK-NEXT: store i8 [[TMP319]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP320:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP321:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP322:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP320]], i8 [[TMP321]] release monotonic, align 1
// CHECK-NEXT: [[TMP323:%.*]] = extractvalue { i8, i1 } [[TMP322]], 0
// CHECK-NEXT: store i8 [[TMP323]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP324:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP325:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP326:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP324]], i8 [[TMP325]] release monotonic, align 1
// CHECK-NEXT: [[TMP327:%.*]] = extractvalue { i8, i1 } [[TMP326]], 0
// CHECK-NEXT: store i8 [[TMP327]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP328:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP329:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP328]] release, align 1
// CHECK-NEXT: [[TMP330:%.*]] = icmp sgt i8 [[TMP329]], [[TMP328]]
// CHECK-NEXT: [[TMP331:%.*]] = select i1 [[TMP330]], i8 [[TMP328]], i8 [[TMP329]]
// CHECK-NEXT: store i8 [[TMP331]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP332:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP333:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP332]] release, align 1
// CHECK-NEXT: [[TMP334:%.*]] = icmp slt i8 [[TMP333]], [[TMP332]]
// CHECK-NEXT: [[TMP335:%.*]] = select i1 [[TMP334]], i8 [[TMP332]], i8 [[TMP333]]
// CHECK-NEXT: store i8 [[TMP335]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP336:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP337:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP336]] release, align 1
// CHECK-NEXT: [[TMP338:%.*]] = icmp slt i8 [[TMP337]], [[TMP336]]
// CHECK-NEXT: [[TMP339:%.*]] = select i1 [[TMP338]], i8 [[TMP336]], i8 [[TMP337]]
// CHECK-NEXT: store i8 [[TMP339]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP340:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP341:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP340]] release, align 1
// CHECK-NEXT: [[TMP342:%.*]] = icmp sgt i8 [[TMP341]], [[TMP340]]
// CHECK-NEXT: [[TMP343:%.*]] = select i1 [[TMP342]], i8 [[TMP340]], i8 [[TMP341]]
// CHECK-NEXT: store i8 [[TMP343]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP344:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP345:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP346:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP344]], i8 [[TMP345]] release monotonic, align 1
// CHECK-NEXT: [[TMP347:%.*]] = extractvalue { i8, i1 } [[TMP346]], 0
// CHECK-NEXT: [[TMP348:%.*]] = extractvalue { i8, i1 } [[TMP346]], 1
// CHECK-NEXT: [[TMP349:%.*]] = select i1 [[TMP348]], i8 [[TMP344]], i8 [[TMP347]]
// CHECK-NEXT: store i8 [[TMP349]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP350:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP351:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP352:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP350]], i8 [[TMP351]] release monotonic, align 1
// CHECK-NEXT: [[TMP353:%.*]] = extractvalue { i8, i1 } [[TMP352]], 0
// CHECK-NEXT: [[TMP354:%.*]] = extractvalue { i8, i1 } [[TMP352]], 1
// CHECK-NEXT: [[TMP355:%.*]] = select i1 [[TMP354]], i8 [[TMP350]], i8 [[TMP353]]
// CHECK-NEXT: store i8 [[TMP355]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP356:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP357:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP358:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP356]], i8 [[TMP357]] release monotonic, align 1
// CHECK-NEXT: [[TMP359:%.*]] = extractvalue { i8, i1 } [[TMP358]], 0
// CHECK-NEXT: [[TMP360:%.*]] = extractvalue { i8, i1 } [[TMP358]], 1
// CHECK-NEXT: br i1 [[TMP360]], label [[CX_ATOMIC_EXIT31:%.*]], label [[CX_ATOMIC_CONT32:%.*]]
// CHECK: cx.atomic.cont32:
// CHECK-NEXT: store i8 [[TMP359]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT31]]
// CHECK: cx.atomic.exit31:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP361:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP362:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP363:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP361]], i8 [[TMP362]] release monotonic, align 1
// CHECK-NEXT: [[TMP364:%.*]] = extractvalue { i8, i1 } [[TMP363]], 0
// CHECK-NEXT: [[TMP365:%.*]] = extractvalue { i8, i1 } [[TMP363]], 1
// CHECK-NEXT: br i1 [[TMP365]], label [[CX_ATOMIC_EXIT33:%.*]], label [[CX_ATOMIC_CONT34:%.*]]
// CHECK: cx.atomic.cont34:
// CHECK-NEXT: store i8 [[TMP364]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT33]]
// CHECK: cx.atomic.exit33:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP366:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP367:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP368:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP366]], i8 [[TMP367]] release monotonic, align 1
// CHECK-NEXT: [[TMP369:%.*]] = extractvalue { i8, i1 } [[TMP368]], 1
// CHECK-NEXT: [[TMP370:%.*]] = sext i1 [[TMP369]] to i8
// CHECK-NEXT: store i8 [[TMP370]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP371:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP372:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP373:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP371]], i8 [[TMP372]] release monotonic, align 1
// CHECK-NEXT: [[TMP374:%.*]] = extractvalue { i8, i1 } [[TMP373]], 1
// CHECK-NEXT: [[TMP375:%.*]] = sext i1 [[TMP374]] to i8
// CHECK-NEXT: store i8 [[TMP375]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP376:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP377:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP378:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP376]], i8 [[TMP377]] release monotonic, align 1
// CHECK-NEXT: [[TMP379:%.*]] = extractvalue { i8, i1 } [[TMP378]], 0
// CHECK-NEXT: [[TMP380:%.*]] = extractvalue { i8, i1 } [[TMP378]], 1
// CHECK-NEXT: br i1 [[TMP380]], label [[CX_ATOMIC_EXIT35:%.*]], label [[CX_ATOMIC_CONT36:%.*]]
// CHECK: cx.atomic.cont36:
// CHECK-NEXT: store i8 [[TMP379]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT35]]
// CHECK: cx.atomic.exit35:
// CHECK-NEXT: [[TMP381:%.*]] = extractvalue { i8, i1 } [[TMP378]], 1
// CHECK-NEXT: [[TMP382:%.*]] = sext i1 [[TMP381]] to i8
// CHECK-NEXT: store i8 [[TMP382]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP383:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP384:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP385:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP383]], i8 [[TMP384]] release monotonic, align 1
// CHECK-NEXT: [[TMP386:%.*]] = extractvalue { i8, i1 } [[TMP385]], 0
// CHECK-NEXT: [[TMP387:%.*]] = extractvalue { i8, i1 } [[TMP385]], 1
// CHECK-NEXT: br i1 [[TMP387]], label [[CX_ATOMIC_EXIT37:%.*]], label [[CX_ATOMIC_CONT38:%.*]]
// CHECK: cx.atomic.cont38:
// CHECK-NEXT: store i8 [[TMP386]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT37]]
// CHECK: cx.atomic.exit37:
// CHECK-NEXT: [[TMP388:%.*]] = extractvalue { i8, i1 } [[TMP385]], 1
// CHECK-NEXT: [[TMP389:%.*]] = sext i1 [[TMP388]] to i8
// CHECK-NEXT: store i8 [[TMP389]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP390:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP391:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP390]] seq_cst, align 1
// CHECK-NEXT: store i8 [[TMP391]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP392:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP393:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP392]] seq_cst, align 1
// CHECK-NEXT: store i8 [[TMP393]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP394:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP395:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP394]] seq_cst, align 1
// CHECK-NEXT: store i8 [[TMP395]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP396:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP397:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP396]] seq_cst, align 1
// CHECK-NEXT: store i8 [[TMP397]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP398:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP399:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP400:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP398]], i8 [[TMP399]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP401:%.*]] = extractvalue { i8, i1 } [[TMP400]], 0
// CHECK-NEXT: store i8 [[TMP401]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP402:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP403:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP404:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP402]], i8 [[TMP403]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP405:%.*]] = extractvalue { i8, i1 } [[TMP404]], 0
// CHECK-NEXT: store i8 [[TMP405]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP406:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP407:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP406]] seq_cst, align 1
// CHECK-NEXT: [[TMP408:%.*]] = icmp sgt i8 [[TMP407]], [[TMP406]]
// CHECK-NEXT: [[TMP409:%.*]] = select i1 [[TMP408]], i8 [[TMP406]], i8 [[TMP407]]
// CHECK-NEXT: store i8 [[TMP409]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP410:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP411:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP410]] seq_cst, align 1
// CHECK-NEXT: [[TMP412:%.*]] = icmp slt i8 [[TMP411]], [[TMP410]]
// CHECK-NEXT: [[TMP413:%.*]] = select i1 [[TMP412]], i8 [[TMP410]], i8 [[TMP411]]
// CHECK-NEXT: store i8 [[TMP413]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP414:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP415:%.*]] = atomicrmw min ptr [[CX]], i8 [[TMP414]] seq_cst, align 1
// CHECK-NEXT: [[TMP416:%.*]] = icmp slt i8 [[TMP415]], [[TMP414]]
// CHECK-NEXT: [[TMP417:%.*]] = select i1 [[TMP416]], i8 [[TMP414]], i8 [[TMP415]]
// CHECK-NEXT: store i8 [[TMP417]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP418:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP419:%.*]] = atomicrmw max ptr [[CX]], i8 [[TMP418]] seq_cst, align 1
// CHECK-NEXT: [[TMP420:%.*]] = icmp sgt i8 [[TMP419]], [[TMP418]]
// CHECK-NEXT: [[TMP421:%.*]] = select i1 [[TMP420]], i8 [[TMP418]], i8 [[TMP419]]
// CHECK-NEXT: store i8 [[TMP421]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP422:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP423:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP424:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP422]], i8 [[TMP423]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP425:%.*]] = extractvalue { i8, i1 } [[TMP424]], 0
// CHECK-NEXT: [[TMP426:%.*]] = extractvalue { i8, i1 } [[TMP424]], 1
// CHECK-NEXT: [[TMP427:%.*]] = select i1 [[TMP426]], i8 [[TMP422]], i8 [[TMP425]]
// CHECK-NEXT: store i8 [[TMP427]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP428:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP429:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP430:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP428]], i8 [[TMP429]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP431:%.*]] = extractvalue { i8, i1 } [[TMP430]], 0
// CHECK-NEXT: [[TMP432:%.*]] = extractvalue { i8, i1 } [[TMP430]], 1
// CHECK-NEXT: [[TMP433:%.*]] = select i1 [[TMP432]], i8 [[TMP428]], i8 [[TMP431]]
// CHECK-NEXT: store i8 [[TMP433]], ptr [[CV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP434:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP435:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP436:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP434]], i8 [[TMP435]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP437:%.*]] = extractvalue { i8, i1 } [[TMP436]], 0
// CHECK-NEXT: [[TMP438:%.*]] = extractvalue { i8, i1 } [[TMP436]], 1
// CHECK-NEXT: br i1 [[TMP438]], label [[CX_ATOMIC_EXIT39:%.*]], label [[CX_ATOMIC_CONT40:%.*]]
// CHECK: cx.atomic.cont40:
// CHECK-NEXT: store i8 [[TMP437]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT39]]
// CHECK: cx.atomic.exit39:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP439:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP440:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP441:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP439]], i8 [[TMP440]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP442:%.*]] = extractvalue { i8, i1 } [[TMP441]], 0
// CHECK-NEXT: [[TMP443:%.*]] = extractvalue { i8, i1 } [[TMP441]], 1
// CHECK-NEXT: br i1 [[TMP443]], label [[CX_ATOMIC_EXIT41:%.*]], label [[CX_ATOMIC_CONT42:%.*]]
// CHECK: cx.atomic.cont42:
// CHECK-NEXT: store i8 [[TMP442]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT41]]
// CHECK: cx.atomic.exit41:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP444:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP445:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP446:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP444]], i8 [[TMP445]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP447:%.*]] = extractvalue { i8, i1 } [[TMP446]], 1
// CHECK-NEXT: [[TMP448:%.*]] = sext i1 [[TMP447]] to i8
// CHECK-NEXT: store i8 [[TMP448]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP449:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP450:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP451:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP449]], i8 [[TMP450]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP452:%.*]] = extractvalue { i8, i1 } [[TMP451]], 1
// CHECK-NEXT: [[TMP453:%.*]] = sext i1 [[TMP452]] to i8
// CHECK-NEXT: store i8 [[TMP453]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP454:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP455:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP456:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP454]], i8 [[TMP455]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP457:%.*]] = extractvalue { i8, i1 } [[TMP456]], 0
// CHECK-NEXT: [[TMP458:%.*]] = extractvalue { i8, i1 } [[TMP456]], 1
// CHECK-NEXT: br i1 [[TMP458]], label [[CX_ATOMIC_EXIT43:%.*]], label [[CX_ATOMIC_CONT44:%.*]]
// CHECK: cx.atomic.cont44:
// CHECK-NEXT: store i8 [[TMP457]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT43]]
// CHECK: cx.atomic.exit43:
// CHECK-NEXT: [[TMP459:%.*]] = extractvalue { i8, i1 } [[TMP456]], 1
// CHECK-NEXT: [[TMP460:%.*]] = sext i1 [[TMP459]] to i8
// CHECK-NEXT: store i8 [[TMP460]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP461:%.*]] = load i8, ptr [[CE]], align 1
// CHECK-NEXT: [[TMP462:%.*]] = load i8, ptr [[CD]], align 1
// CHECK-NEXT: [[TMP463:%.*]] = cmpxchg ptr [[CX]], i8 [[TMP461]], i8 [[TMP462]] seq_cst seq_cst, align 1
// CHECK-NEXT: [[TMP464:%.*]] = extractvalue { i8, i1 } [[TMP463]], 0
// CHECK-NEXT: [[TMP465:%.*]] = extractvalue { i8, i1 } [[TMP463]], 1
// CHECK-NEXT: br i1 [[TMP465]], label [[CX_ATOMIC_EXIT45:%.*]], label [[CX_ATOMIC_CONT46:%.*]]
// CHECK: cx.atomic.cont46:
// CHECK-NEXT: store i8 [[TMP464]], ptr [[CV]], align 1
// CHECK-NEXT: br label [[CX_ATOMIC_EXIT45]]
// CHECK: cx.atomic.exit45:
// CHECK-NEXT: [[TMP466:%.*]] = extractvalue { i8, i1 } [[TMP463]], 1
// CHECK-NEXT: [[TMP467:%.*]] = sext i1 [[TMP466]] to i8
// CHECK-NEXT: store i8 [[TMP467]], ptr [[CR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP468:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP469:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP468]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP469]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP470:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP471:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP470]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP471]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP472:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP473:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP472]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP473]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP474:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP475:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP474]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP475]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP476:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP477:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP478:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP476]], i8 [[TMP477]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP479:%.*]] = extractvalue { i8, i1 } [[TMP478]], 0
// CHECK-NEXT: store i8 [[TMP479]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP480:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP481:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP482:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP480]], i8 [[TMP481]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP483:%.*]] = extractvalue { i8, i1 } [[TMP482]], 0
// CHECK-NEXT: store i8 [[TMP483]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP484:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP485:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP484]] monotonic, align 1
// CHECK-NEXT: [[TMP486:%.*]] = icmp ugt i8 [[TMP485]], [[TMP484]]
// CHECK-NEXT: [[TMP487:%.*]] = select i1 [[TMP486]], i8 [[TMP484]], i8 [[TMP485]]
// CHECK-NEXT: store i8 [[TMP487]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP488:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP489:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP488]] monotonic, align 1
// CHECK-NEXT: [[TMP490:%.*]] = icmp ult i8 [[TMP489]], [[TMP488]]
// CHECK-NEXT: [[TMP491:%.*]] = select i1 [[TMP490]], i8 [[TMP488]], i8 [[TMP489]]
// CHECK-NEXT: store i8 [[TMP491]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP492:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP493:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP492]] monotonic, align 1
// CHECK-NEXT: [[TMP494:%.*]] = icmp ult i8 [[TMP493]], [[TMP492]]
// CHECK-NEXT: [[TMP495:%.*]] = select i1 [[TMP494]], i8 [[TMP492]], i8 [[TMP493]]
// CHECK-NEXT: store i8 [[TMP495]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP496:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP497:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP496]] monotonic, align 1
// CHECK-NEXT: [[TMP498:%.*]] = icmp ugt i8 [[TMP497]], [[TMP496]]
// CHECK-NEXT: [[TMP499:%.*]] = select i1 [[TMP498]], i8 [[TMP496]], i8 [[TMP497]]
// CHECK-NEXT: store i8 [[TMP499]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP500:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP501:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP502:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP500]], i8 [[TMP501]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP503:%.*]] = extractvalue { i8, i1 } [[TMP502]], 0
// CHECK-NEXT: [[TMP504:%.*]] = extractvalue { i8, i1 } [[TMP502]], 1
// CHECK-NEXT: [[TMP505:%.*]] = select i1 [[TMP504]], i8 [[TMP500]], i8 [[TMP503]]
// CHECK-NEXT: store i8 [[TMP505]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP506:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP507:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP508:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP506]], i8 [[TMP507]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP509:%.*]] = extractvalue { i8, i1 } [[TMP508]], 0
// CHECK-NEXT: [[TMP510:%.*]] = extractvalue { i8, i1 } [[TMP508]], 1
// CHECK-NEXT: [[TMP511:%.*]] = select i1 [[TMP510]], i8 [[TMP506]], i8 [[TMP509]]
// CHECK-NEXT: store i8 [[TMP511]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP512:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP513:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP514:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP512]], i8 [[TMP513]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP515:%.*]] = extractvalue { i8, i1 } [[TMP514]], 0
// CHECK-NEXT: [[TMP516:%.*]] = extractvalue { i8, i1 } [[TMP514]], 1
// CHECK-NEXT: br i1 [[TMP516]], label [[UCX_ATOMIC_EXIT:%.*]], label [[UCX_ATOMIC_CONT:%.*]]
// CHECK: ucx.atomic.cont:
// CHECK-NEXT: store i8 [[TMP515]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT]]
// CHECK: ucx.atomic.exit:
// CHECK-NEXT: [[TMP517:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP518:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP519:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP517]], i8 [[TMP518]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP520:%.*]] = extractvalue { i8, i1 } [[TMP519]], 0
// CHECK-NEXT: [[TMP521:%.*]] = extractvalue { i8, i1 } [[TMP519]], 1
// CHECK-NEXT: br i1 [[TMP521]], label [[UCX_ATOMIC_EXIT47:%.*]], label [[UCX_ATOMIC_CONT48:%.*]]
// CHECK: ucx.atomic.cont48:
// CHECK-NEXT: store i8 [[TMP520]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT47]]
// CHECK: ucx.atomic.exit47:
// CHECK-NEXT: [[TMP522:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP523:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP524:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP522]], i8 [[TMP523]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP525:%.*]] = extractvalue { i8, i1 } [[TMP524]], 1
// CHECK-NEXT: [[TMP526:%.*]] = zext i1 [[TMP525]] to i8
// CHECK-NEXT: store i8 [[TMP526]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP527:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP528:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP529:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP527]], i8 [[TMP528]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP530:%.*]] = extractvalue { i8, i1 } [[TMP529]], 1
// CHECK-NEXT: [[TMP531:%.*]] = zext i1 [[TMP530]] to i8
// CHECK-NEXT: store i8 [[TMP531]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP532:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP533:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP534:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP532]], i8 [[TMP533]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP535:%.*]] = extractvalue { i8, i1 } [[TMP534]], 0
// CHECK-NEXT: [[TMP536:%.*]] = extractvalue { i8, i1 } [[TMP534]], 1
// CHECK-NEXT: br i1 [[TMP536]], label [[UCX_ATOMIC_EXIT49:%.*]], label [[UCX_ATOMIC_CONT50:%.*]]
// CHECK: ucx.atomic.cont50:
// CHECK-NEXT: store i8 [[TMP535]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT49]]
// CHECK: ucx.atomic.exit49:
// CHECK-NEXT: [[TMP537:%.*]] = extractvalue { i8, i1 } [[TMP534]], 1
// CHECK-NEXT: [[TMP538:%.*]] = zext i1 [[TMP537]] to i8
// CHECK-NEXT: store i8 [[TMP538]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP539:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP540:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP541:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP539]], i8 [[TMP540]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP542:%.*]] = extractvalue { i8, i1 } [[TMP541]], 0
// CHECK-NEXT: [[TMP543:%.*]] = extractvalue { i8, i1 } [[TMP541]], 1
// CHECK-NEXT: br i1 [[TMP543]], label [[UCX_ATOMIC_EXIT51:%.*]], label [[UCX_ATOMIC_CONT52:%.*]]
// CHECK: ucx.atomic.cont52:
// CHECK-NEXT: store i8 [[TMP542]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT51]]
// CHECK: ucx.atomic.exit51:
// CHECK-NEXT: [[TMP544:%.*]] = extractvalue { i8, i1 } [[TMP541]], 1
// CHECK-NEXT: [[TMP545:%.*]] = zext i1 [[TMP544]] to i8
// CHECK-NEXT: store i8 [[TMP545]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP546:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP547:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP546]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP547]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP548:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP549:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP548]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP549]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP550:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP551:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP550]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP551]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP552:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP553:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP552]] acq_rel, align 1
// CHECK-NEXT: store i8 [[TMP553]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP554:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP555:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP556:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP554]], i8 [[TMP555]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP557:%.*]] = extractvalue { i8, i1 } [[TMP556]], 0
// CHECK-NEXT: store i8 [[TMP557]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP558:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP559:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP560:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP558]], i8 [[TMP559]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP561:%.*]] = extractvalue { i8, i1 } [[TMP560]], 0
// CHECK-NEXT: store i8 [[TMP561]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP562:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP563:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP562]] acq_rel, align 1
// CHECK-NEXT: [[TMP564:%.*]] = icmp ugt i8 [[TMP563]], [[TMP562]]
// CHECK-NEXT: [[TMP565:%.*]] = select i1 [[TMP564]], i8 [[TMP562]], i8 [[TMP563]]
// CHECK-NEXT: store i8 [[TMP565]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP566:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP567:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP566]] acq_rel, align 1
// CHECK-NEXT: [[TMP568:%.*]] = icmp ult i8 [[TMP567]], [[TMP566]]
// CHECK-NEXT: [[TMP569:%.*]] = select i1 [[TMP568]], i8 [[TMP566]], i8 [[TMP567]]
// CHECK-NEXT: store i8 [[TMP569]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP570:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP571:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP570]] acq_rel, align 1
// CHECK-NEXT: [[TMP572:%.*]] = icmp ult i8 [[TMP571]], [[TMP570]]
// CHECK-NEXT: [[TMP573:%.*]] = select i1 [[TMP572]], i8 [[TMP570]], i8 [[TMP571]]
// CHECK-NEXT: store i8 [[TMP573]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP574:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP575:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP574]] acq_rel, align 1
// CHECK-NEXT: [[TMP576:%.*]] = icmp ugt i8 [[TMP575]], [[TMP574]]
// CHECK-NEXT: [[TMP577:%.*]] = select i1 [[TMP576]], i8 [[TMP574]], i8 [[TMP575]]
// CHECK-NEXT: store i8 [[TMP577]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP578:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP579:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP580:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP578]], i8 [[TMP579]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP581:%.*]] = extractvalue { i8, i1 } [[TMP580]], 0
// CHECK-NEXT: [[TMP582:%.*]] = extractvalue { i8, i1 } [[TMP580]], 1
// CHECK-NEXT: [[TMP583:%.*]] = select i1 [[TMP582]], i8 [[TMP578]], i8 [[TMP581]]
// CHECK-NEXT: store i8 [[TMP583]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP584:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP585:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP586:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP584]], i8 [[TMP585]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP587:%.*]] = extractvalue { i8, i1 } [[TMP586]], 0
// CHECK-NEXT: [[TMP588:%.*]] = extractvalue { i8, i1 } [[TMP586]], 1
// CHECK-NEXT: [[TMP589:%.*]] = select i1 [[TMP588]], i8 [[TMP584]], i8 [[TMP587]]
// CHECK-NEXT: store i8 [[TMP589]], ptr [[UCV]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP590:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP591:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP592:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP590]], i8 [[TMP591]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP593:%.*]] = extractvalue { i8, i1 } [[TMP592]], 0
// CHECK-NEXT: [[TMP594:%.*]] = extractvalue { i8, i1 } [[TMP592]], 1
// CHECK-NEXT: br i1 [[TMP594]], label [[UCX_ATOMIC_EXIT53:%.*]], label [[UCX_ATOMIC_CONT54:%.*]]
// CHECK: ucx.atomic.cont54:
// CHECK-NEXT: store i8 [[TMP593]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT53]]
// CHECK: ucx.atomic.exit53:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP595:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP596:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP597:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP595]], i8 [[TMP596]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP598:%.*]] = extractvalue { i8, i1 } [[TMP597]], 0
// CHECK-NEXT: [[TMP599:%.*]] = extractvalue { i8, i1 } [[TMP597]], 1
// CHECK-NEXT: br i1 [[TMP599]], label [[UCX_ATOMIC_EXIT55:%.*]], label [[UCX_ATOMIC_CONT56:%.*]]
// CHECK: ucx.atomic.cont56:
// CHECK-NEXT: store i8 [[TMP598]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT55]]
// CHECK: ucx.atomic.exit55:
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP600:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP601:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP602:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP600]], i8 [[TMP601]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP603:%.*]] = extractvalue { i8, i1 } [[TMP602]], 1
// CHECK-NEXT: [[TMP604:%.*]] = zext i1 [[TMP603]] to i8
// CHECK-NEXT: store i8 [[TMP604]], ptr [[UCR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP605:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP606:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP607:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP605]], i8 [[TMP606]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP608:%.*]] = extractvalue { i8, i1 } [[TMP607]], 1
// CHECK-NEXT: [[TMP609:%.*]] = zext i1 [[TMP608]] to i8
// CHECK-NEXT: store i8 [[TMP609]], ptr [[UCR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP610:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP611:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP612:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP610]], i8 [[TMP611]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP613:%.*]] = extractvalue { i8, i1 } [[TMP612]], 0
// CHECK-NEXT: [[TMP614:%.*]] = extractvalue { i8, i1 } [[TMP612]], 1
// CHECK-NEXT: br i1 [[TMP614]], label [[UCX_ATOMIC_EXIT57:%.*]], label [[UCX_ATOMIC_CONT58:%.*]]
// CHECK: ucx.atomic.cont58:
// CHECK-NEXT: store i8 [[TMP613]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT57]]
// CHECK: ucx.atomic.exit57:
// CHECK-NEXT: [[TMP615:%.*]] = extractvalue { i8, i1 } [[TMP612]], 1
// CHECK-NEXT: [[TMP616:%.*]] = zext i1 [[TMP615]] to i8
// CHECK-NEXT: store i8 [[TMP616]], ptr [[UCR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP617:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP618:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP619:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP617]], i8 [[TMP618]] acq_rel acquire, align 1
// CHECK-NEXT: [[TMP620:%.*]] = extractvalue { i8, i1 } [[TMP619]], 0
// CHECK-NEXT: [[TMP621:%.*]] = extractvalue { i8, i1 } [[TMP619]], 1
// CHECK-NEXT: br i1 [[TMP621]], label [[UCX_ATOMIC_EXIT59:%.*]], label [[UCX_ATOMIC_CONT60:%.*]]
// CHECK: ucx.atomic.cont60:
// CHECK-NEXT: store i8 [[TMP620]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT59]]
// CHECK: ucx.atomic.exit59:
// CHECK-NEXT: [[TMP622:%.*]] = extractvalue { i8, i1 } [[TMP619]], 1
// CHECK-NEXT: [[TMP623:%.*]] = zext i1 [[TMP622]] to i8
// CHECK-NEXT: store i8 [[TMP623]], ptr [[UCR]], align 1
// CHECK-NEXT: call void @__kmpc_flush(ptr @[[GLOB1]])
// CHECK-NEXT: [[TMP624:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP625:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP624]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP625]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP626:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP627:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP626]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP627]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP628:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP629:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP628]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP629]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP630:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP631:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP630]] acquire, align 1
// CHECK-NEXT: store i8 [[TMP631]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP632:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP633:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP634:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP632]], i8 [[TMP633]] acquire acquire, align 1
// CHECK-NEXT: [[TMP635:%.*]] = extractvalue { i8, i1 } [[TMP634]], 0
// CHECK-NEXT: store i8 [[TMP635]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP636:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP637:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP638:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP636]], i8 [[TMP637]] acquire acquire, align 1
// CHECK-NEXT: [[TMP639:%.*]] = extractvalue { i8, i1 } [[TMP638]], 0
// CHECK-NEXT: store i8 [[TMP639]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP640:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP641:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP640]] acquire, align 1
// CHECK-NEXT: [[TMP642:%.*]] = icmp ugt i8 [[TMP641]], [[TMP640]]
// CHECK-NEXT: [[TMP643:%.*]] = select i1 [[TMP642]], i8 [[TMP640]], i8 [[TMP641]]
// CHECK-NEXT: store i8 [[TMP643]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP644:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP645:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP644]] acquire, align 1
// CHECK-NEXT: [[TMP646:%.*]] = icmp ult i8 [[TMP645]], [[TMP644]]
// CHECK-NEXT: [[TMP647:%.*]] = select i1 [[TMP646]], i8 [[TMP644]], i8 [[TMP645]]
// CHECK-NEXT: store i8 [[TMP647]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP648:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP649:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP648]] acquire, align 1
// CHECK-NEXT: [[TMP650:%.*]] = icmp ult i8 [[TMP649]], [[TMP648]]
// CHECK-NEXT: [[TMP651:%.*]] = select i1 [[TMP650]], i8 [[TMP648]], i8 [[TMP649]]
// CHECK-NEXT: store i8 [[TMP651]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP652:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP653:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP652]] acquire, align 1
// CHECK-NEXT: [[TMP654:%.*]] = icmp ugt i8 [[TMP653]], [[TMP652]]
// CHECK-NEXT: [[TMP655:%.*]] = select i1 [[TMP654]], i8 [[TMP652]], i8 [[TMP653]]
// CHECK-NEXT: store i8 [[TMP655]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP656:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP657:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP658:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP656]], i8 [[TMP657]] acquire acquire, align 1
// CHECK-NEXT: [[TMP659:%.*]] = extractvalue { i8, i1 } [[TMP658]], 0
// CHECK-NEXT: [[TMP660:%.*]] = extractvalue { i8, i1 } [[TMP658]], 1
// CHECK-NEXT: [[TMP661:%.*]] = select i1 [[TMP660]], i8 [[TMP656]], i8 [[TMP659]]
// CHECK-NEXT: store i8 [[TMP661]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP662:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP663:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP664:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP662]], i8 [[TMP663]] acquire acquire, align 1
// CHECK-NEXT: [[TMP665:%.*]] = extractvalue { i8, i1 } [[TMP664]], 0
// CHECK-NEXT: [[TMP666:%.*]] = extractvalue { i8, i1 } [[TMP664]], 1
// CHECK-NEXT: [[TMP667:%.*]] = select i1 [[TMP666]], i8 [[TMP662]], i8 [[TMP665]]
// CHECK-NEXT: store i8 [[TMP667]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP668:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP669:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP670:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP668]], i8 [[TMP669]] acquire acquire, align 1
// CHECK-NEXT: [[TMP671:%.*]] = extractvalue { i8, i1 } [[TMP670]], 0
// CHECK-NEXT: [[TMP672:%.*]] = extractvalue { i8, i1 } [[TMP670]], 1
// CHECK-NEXT: br i1 [[TMP672]], label [[UCX_ATOMIC_EXIT61:%.*]], label [[UCX_ATOMIC_CONT62:%.*]]
// CHECK: ucx.atomic.cont62:
// CHECK-NEXT: store i8 [[TMP671]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT61]]
// CHECK: ucx.atomic.exit61:
// CHECK-NEXT: [[TMP673:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP674:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP675:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP673]], i8 [[TMP674]] acquire acquire, align 1
// CHECK-NEXT: [[TMP676:%.*]] = extractvalue { i8, i1 } [[TMP675]], 0
// CHECK-NEXT: [[TMP677:%.*]] = extractvalue { i8, i1 } [[TMP675]], 1
// CHECK-NEXT: br i1 [[TMP677]], label [[UCX_ATOMIC_EXIT63:%.*]], label [[UCX_ATOMIC_CONT64:%.*]]
// CHECK: ucx.atomic.cont64:
// CHECK-NEXT: store i8 [[TMP676]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT63]]
// CHECK: ucx.atomic.exit63:
// CHECK-NEXT: [[TMP678:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP679:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP680:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP678]], i8 [[TMP679]] acquire acquire, align 1
// CHECK-NEXT: [[TMP681:%.*]] = extractvalue { i8, i1 } [[TMP680]], 1
// CHECK-NEXT: [[TMP682:%.*]] = zext i1 [[TMP681]] to i8
// CHECK-NEXT: store i8 [[TMP682]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP683:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP684:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP685:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP683]], i8 [[TMP684]] acquire acquire, align 1
// CHECK-NEXT: [[TMP686:%.*]] = extractvalue { i8, i1 } [[TMP685]], 1
// CHECK-NEXT: [[TMP687:%.*]] = zext i1 [[TMP686]] to i8
// CHECK-NEXT: store i8 [[TMP687]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP688:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP689:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP690:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP688]], i8 [[TMP689]] acquire acquire, align 1
// CHECK-NEXT: [[TMP691:%.*]] = extractvalue { i8, i1 } [[TMP690]], 0
// CHECK-NEXT: [[TMP692:%.*]] = extractvalue { i8, i1 } [[TMP690]], 1
// CHECK-NEXT: br i1 [[TMP692]], label [[UCX_ATOMIC_EXIT65:%.*]], label [[UCX_ATOMIC_CONT66:%.*]]
// CHECK: ucx.atomic.cont66:
// CHECK-NEXT: store i8 [[TMP691]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT65]]
// CHECK: ucx.atomic.exit65:
// CHECK-NEXT: [[TMP693:%.*]] = extractvalue { i8, i1 } [[TMP690]], 1
// CHECK-NEXT: [[TMP694:%.*]] = zext i1 [[TMP693]] to i8
// CHECK-NEXT: store i8 [[TMP694]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP695:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP696:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP697:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP695]], i8 [[TMP696]] acquire acquire, align 1
// CHECK-NEXT: [[TMP698:%.*]] = extractvalue { i8, i1 } [[TMP697]], 0
// CHECK-NEXT: [[TMP699:%.*]] = extractvalue { i8, i1 } [[TMP697]], 1
// CHECK-NEXT: br i1 [[TMP699]], label [[UCX_ATOMIC_EXIT67:%.*]], label [[UCX_ATOMIC_CONT68:%.*]]
// CHECK: ucx.atomic.cont68:
// CHECK-NEXT: store i8 [[TMP698]], ptr [[UCV]], align 1
// CHECK-NEXT: br label [[UCX_ATOMIC_EXIT67]]
// CHECK: ucx.atomic.exit67:
// CHECK-NEXT: [[TMP700:%.*]] = extractvalue { i8, i1 } [[TMP697]], 1
// CHECK-NEXT: [[TMP701:%.*]] = zext i1 [[TMP700]] to i8
// CHECK-NEXT: store i8 [[TMP701]], ptr [[UCR]], align 1
// CHECK-NEXT: [[TMP702:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP703:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP702]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP703]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP704:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP705:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP704]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP705]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP706:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP707:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP706]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP707]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP708:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP709:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP708]] monotonic, align 1
// CHECK-NEXT: store i8 [[TMP709]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP710:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP711:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP712:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP710]], i8 [[TMP711]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP713:%.*]] = extractvalue { i8, i1 } [[TMP712]], 0
// CHECK-NEXT: store i8 [[TMP713]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP714:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP715:%.*]] = load i8, ptr [[UCD]], align 1
// CHECK-NEXT: [[TMP716:%.*]] = cmpxchg ptr [[UCX]], i8 [[TMP714]], i8 [[TMP715]] monotonic monotonic, align 1
// CHECK-NEXT: [[TMP717:%.*]] = extractvalue { i8, i1 } [[TMP716]], 0
// CHECK-NEXT: store i8 [[TMP717]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP718:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP719:%.*]] = atomicrmw umax ptr [[UCX]], i8 [[TMP718]] monotonic, align 1
// CHECK-NEXT: [[TMP720:%.*]] = icmp ugt i8 [[TMP719]], [[TMP718]]
// CHECK-NEXT: [[TMP721:%.*]] = select i1 [[TMP720]], i8 [[TMP718]], i8 [[TMP719]]
// CHECK-NEXT: store i8 [[TMP721]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP722:%.*]] = load i8, ptr [[UCE]], align 1
// CHECK-NEXT: [[TMP723:%.*]] = atomicrmw umin ptr [[UCX]], i8 [[TMP722]] monotonic, align 1
// CHECK-NEXT: [[TMP724:%.*]] = icmp ult i8 [[TMP723]], [[TMP722]]
// CHECK-NEXT: [[TMP725:%.*]] = select i1 [[TMP724]], i8 [[TMP722]], i8 [[TMP723]]
// CHECK-NEXT: store i8 [[TMP725]], ptr [[UCV]], align 1
// CHECK-NEXT: [[TMP726:%.*]] = load i8, ptr [[UCE]], align 1