#include <metal_stdlib>

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

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

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

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

