#include <metal_stdlib>

using namespace metal;
struct Constants {
  /* 0x0000 */ uint zero;
};
struct Result {
  /* 0x0000 */ uint value;
};
struct tint_array_wrapper {
  /* 0x0000 */ atomic_int arr[3];
};
struct TestData {
  /* 0x0000 */ tint_array_wrapper data;
};

int runTest(device TestData* const tint_symbol_1, const constant Constants* const tint_symbol_2) {
  return atomic_load_explicit(&((*(tint_symbol_1)).data.arr[(0u + uint((*(tint_symbol_2)).zero))]), memory_order_relaxed);
}

kernel void tint_symbol(device Result* tint_symbol_3 [[buffer(1)]], device TestData* tint_symbol_4 [[buffer(2)]], const constant Constants* tint_symbol_5 [[buffer(0)]]) {
  (*(tint_symbol_3)).value = uint(runTest(tint_symbol_4, tint_symbol_5));
  return;
}

