#include <metal_stdlib>

using namespace metal;
struct ComputeInputs0 {
  uint3 local_invocation_id;
};
struct ComputeInputs1 {
  uint3 workgroup_id;
};

void tint_symbol_inner(ComputeInputs0 inputs0, uint local_invocation_index, uint3 global_invocation_id, ComputeInputs1 inputs1) {
  uint const foo = (((inputs0.local_invocation_id[0] + local_invocation_index) + global_invocation_id[0]) + inputs1.workgroup_id[0]);
}

kernel void tint_symbol(uint3 local_invocation_id [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], uint3 global_invocation_id [[thread_position_in_grid]], uint3 workgroup_id [[threadgroup_position_in_grid]]) {
  ComputeInputs0 const tint_symbol_1 = {.local_invocation_id=local_invocation_id};
  ComputeInputs1 const tint_symbol_2 = {.workgroup_id=workgroup_id};
  tint_symbol_inner(tint_symbol_1, local_invocation_index, global_invocation_id, tint_symbol_2);
  return;
}

