#include <metal_stdlib>

using namespace metal;
void foo() {
  thread float2 tint_symbol_1 = 0.0f;
  thread int3 tint_symbol_2 = 0;
  thread uint4 tint_symbol_3 = 0u;
  thread bool2 tint_symbol_4 = false;
  for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    tint_symbol_1[i] = 1.0f;
    tint_symbol_2[i] = 1;
    tint_symbol_3[i] = 1u;
    tint_symbol_4[i] = true;
  }
}

kernel void tint_symbol() {
  for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
    foo();
  }
  return;
}

