#include <metal_stdlib>

using namespace metal;
struct MyStruct {
  float f1;
};
struct tint_array_wrapper {
  float arr[10];
};
struct tint_symbol_1 {
  float4 value [[color(0)]];
};

int ret_i32() {
  return 1;
}

uint ret_u32() {
  return 1u;
}

float ret_f32() {
  return 1.0f;
}

MyStruct ret_MyStruct() {
  MyStruct const tint_symbol_2 = {};
  return tint_symbol_2;
}

tint_array_wrapper ret_MyArray() {
  tint_array_wrapper const tint_symbol_3 = {.arr={}};
  return tint_symbol_3;
}

void let_decls() {
  int const v1 = 1;
  uint const v2 = 1u;
  float const v3 = 1.0f;
  int3 const v4 = int3(1, 1, 1);
  uint3 const v5 = uint3(1u, 1u, 1u);
  float3 const v6 = float3(1.0f, 1.0f, 1.0f);
  float3x3 const v7 = float3x3(v6, v6, v6);
  MyStruct const v8 = {.f1=1.0f};
  tint_array_wrapper const v9 = {.arr={}};
  int const v10 = ret_i32();
  uint const v11 = ret_u32();
  float const v12 = ret_f32();
  MyStruct const v13 = ret_MyStruct();
  MyStruct const v14 = ret_MyStruct();
  tint_array_wrapper const v15 = ret_MyArray();
}

fragment tint_symbol_1 tint_symbol() {
  tint_symbol_1 const tint_symbol_4 = {.value=float4(0.0f, 0.0f, 0.0f, 0.0f)};
  return tint_symbol_4;
}

