#include <metal_stdlib>

using namespace metal;

struct atomic_compare_exchange_result_u32 {
  uint old_value;
  bool exchanged;
};
atomic_compare_exchange_result_u32 atomicCompareExchangeWeak_1(device atomic_uint* atomic, uint compare, uint value) {
  uint old_value = compare;
  bool exchanged = atomic_compare_exchange_weak_explicit(atomic, &old_value, value, memory_order_relaxed, memory_order_relaxed);
  return {old_value, exchanged};
}

struct SB_RW {
  /* 0x0000 */ atomic_uint arg_0;
};

void atomicCompareExchangeWeak_63d8e6(device SB_RW* const tint_symbol) {
  atomic_compare_exchange_result_u32 res = atomicCompareExchangeWeak_1(&((*(tint_symbol)).arg_0), 1u, 1u);
}

fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
  atomicCompareExchangeWeak_63d8e6(tint_symbol_1);
  return;
}

kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
  atomicCompareExchangeWeak_63d8e6(tint_symbol_2);
  return;
}

