#include <metal_stdlib>

using namespace metal;
void atomicLoad_afcc03(threadgroup atomic_int* const tint_symbol) {
  int res = atomic_load_explicit(tint_symbol, memory_order_relaxed);
}

void compute_main_inner(uint local_invocation_index, threadgroup atomic_int* const tint_symbol_1) {
  {
    atomic_store_explicit(tint_symbol_1, 0, memory_order_relaxed);
  }
  threadgroup_barrier(mem_flags::mem_threadgroup);
  atomicLoad_afcc03(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;
}

