#include <metal_stdlib>

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

kernel void tint_symbol(uint3 tint_symbol_2 [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], uint3 global_invocation_id [[thread_position_in_grid]], uint3 tint_symbol_3 [[threadgroup_position_in_grid]]) {
  ComputeInputs0 const inputs0 = {.local_invocation_id=tint_symbol_2};
  ComputeInputs1 const inputs1 = {.workgroup_id=tint_symbol_3};
  uint const foo = (((inputs0.local_invocation_id.x + local_invocation_index) + global_invocation_id.x) + inputs1.workgroup_id.x);
  return;
}

