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

[numthreads(1, 1, 1)]
void main() {
  bool bool_var = false;
  const bool bool_let = false;
  int i32_var = 0;
  const int i32_let = 0;
  uint u32_var = 0u;
  const uint u32_let = 0u;
  float f32_var = 0.0f;
  const float f32_let = 0.0f;
  int2 v2i32_var = int2(0, 0);
  const int2 v2i32_let = int2(0, 0);
  uint3 v3u32_var = uint3(0u, 0u, 0u);
  const uint3 v3u32_let = uint3(0u, 0u, 0u);
  float4 v4f32_var = float4(0.0f, 0.0f, 0.0f, 0.0f);
  const float4 v4f32_let = float4(0.0f, 0.0f, 0.0f, 0.0f);
  float2x3 m2x3_var = float2x3(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  const float3x4 m3x4_let = float3x4(0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f);
  tint_array_wrapper arr_var = {{0.0f, 0.0f, 0.0f, 0.0f}};
  const tint_array_wrapper arr_let = {{0.0f, 0.0f, 0.0f, 0.0f}};
  S struct_var = {0.0f};
  const S struct_let = {0.0f};
  return;
}
