#include <metal_stdlib>

using namespace metal;
void atomicExchange_e114ba(threadgroup atomic_int* const tint_symbol) {
  int res = atomic_exchange_explicit(tint_symbol, 1, memory_order_relaxed);
}

void compute_main_inner(uint local_invocation_index, threadgroup atomic_int* const tint_symbol_1) {
  {
    atomic_store_explicit(tint_symbol_1, int(), memory_order_relaxed);
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  atomicExchange_e114ba(tint_symbol_1);
}

kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
  threadgroup atomic_int tint_symbol_2;
  compute_main_inner(local_invocation_index, &(tint_symbol_2));
  return;
}

