#include <metal_stdlib>

using namespace metal;
struct S {
  float a;
};
struct tint_array_wrapper {
  float arr[4];
};

kernel void tint_symbol() {
  thread bool tint_symbol_3 = false;
  thread int tint_symbol_4 = 0;
  thread uint tint_symbol_5 = 0u;
  thread float tint_symbol_6 = 0.0f;
  thread int2 tint_symbol_7 = 0;
  thread uint3 tint_symbol_8 = 0u;
  thread float4 tint_symbol_9 = 0.0f;
  thread float2x3 tint_symbol_10 = float2x3(0.0f);
  thread tint_array_wrapper tint_symbol_11 = {};
  thread S tint_symbol_12 = {};
  tint_symbol_3 = bool();
  tint_symbol_4 = int();
  tint_symbol_5 = uint();
  tint_symbol_6 = float();
  tint_symbol_7 = int2();
  tint_symbol_8 = uint3();
  tint_symbol_9 = float4();
  tint_symbol_10 = float2x3();
  tint_array_wrapper const tint_symbol_1 = {.arr={}};
  tint_symbol_11 = tint_symbol_1;
  S const tint_symbol_2 = {};
  tint_symbol_12 = tint_symbol_2;
  return;
}

