#include <metal_stdlib>

using namespace metal;
void atomicCompareExchangeWeak_89ea3b(threadgroup atomic_int* const tint_symbol_1) {
  int prev_value = 1;
  bool matched = atomic_compare_exchange_weak_explicit(&(*(tint_symbol_1)), &prev_value, 1, memory_order_relaxed, memory_order_relaxed);
  int2 res = int2(prev_value, matched);
}

kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
  threadgroup atomic_int tint_symbol_2;
  if ((local_invocation_index == 0u)) {
    atomic_store_explicit(&(tint_symbol_2), int(), memory_order_relaxed);
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  atomicCompareExchangeWeak_89ea3b(&(tint_symbol_2));
  return;
}

