struct SB_RW_atomic {
  arg_0 : atomic<i32>,
}

struct SB_RW {
  arg_0 : i32,
}

struct x__atomic_compare_exchange_resulti32 {
  old_value : i32,
  exchanged : bool,
}

@group(0) @binding(0) var<storage, read_write> sb_rw : SB_RW_atomic;

fn atomicCompareExchangeWeak_1bd40a() {
  var arg_1 : i32 = 0i;
  var arg_2 : i32 = 0i;
  var res : x__atomic_compare_exchange_resulti32 = x__atomic_compare_exchange_resulti32(0i, false);
  arg_1 = 1i;
  arg_2 = 1i;
  let x_23 : i32 = arg_2;
  let x_24 : i32 = arg_1;
  let old_value_1 = atomicCompareExchangeWeak(&(sb_rw.arg_0), x_24, x_23).old_value;
  let x_25 : i32 = old_value_1;
  res = x__atomic_compare_exchange_resulti32(x_25, (x_25 == x_23));
  return;
}

fn fragment_main_1() {
  atomicCompareExchangeWeak_1bd40a();
  return;
}

@fragment
fn fragment_main() {
  fragment_main_1();
}

fn compute_main_1() {
  atomicCompareExchangeWeak_1bd40a();
  return;
}

@compute @workgroup_size(1i, 1i, 1i)
fn compute_main() {
  compute_main_1();
}
