#include <metal_stdlib>

using namespace metal;

template<typename T>
T tint_dot2(vec<T,2> a, vec<T,2> b) {
  return a[0]*b[0] + a[1]*b[1];
}
struct tint_symbol {
  float4 value [[position]];
};

void dot_97c7ee() {
  uint res = tint_dot2(uint2(), uint2());
}

float4 vertex_main_inner() {
  dot_97c7ee();
  return float4();
}

vertex tint_symbol vertex_main() {
  float4 const inner_result = vertex_main_inner();
  tint_symbol wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

fragment void fragment_main() {
  dot_97c7ee();
  return;
}

kernel void compute_main() {
  dot_97c7ee();
  return;
}

