#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 = bool();
  thread int tint_symbol_4 = int();
  thread uint tint_symbol_5 = uint();
  thread float tint_symbol_6 = float();
  thread int2 tint_symbol_7 = int2();
  thread uint3 tint_symbol_8 = uint3();
  thread float4 tint_symbol_9 = float4();
  thread float2x3 tint_symbol_10 = float2x3();
  thread tint_array_wrapper tint_symbol_11 = {.arr={}};
  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;
}

