#include <metal_stdlib>

using namespace metal;
struct tint_private_vars_struct {
  float t;
};

int2 tint_ftoi(float2 v) {
  return select(int2(2147483647), select(int2(v), int2((-2147483647 - 1)), (v < float2(-2147483648.0f))), (v < float2(2147483520.0f)));
}

float2 m(thread tint_private_vars_struct* const tint_private_vars) {
  (*(tint_private_vars)).t = 1.0f;
  return float2((*(tint_private_vars)).t);
}

void f(thread tint_private_vars_struct* const tint_private_vars) {
  float2 const tint_symbol = m(tint_private_vars);
  int2 v = tint_ftoi(tint_symbol);
}

