#include <metal_stdlib>

using namespace metal;
struct MyStruct {
  float f1;
};

struct tint_array_wrapper {
  float arr[10];
};

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 var_decls() {
  int v1 = 1;
  uint v2 = 1u;
  float v3 = 1.0f;
  int3 v4 = int3(1, 1, 1);
  uint3 v5 = uint3(1u, 1u, 1u);
  float3 v6 = float3(1.0f, 1.0f, 1.0f);
  float3x3 v7 = float3x3(v6, v6, v6);
  MyStruct v8 = {.f1=1.0f};
  tint_array_wrapper v9 = {.arr={}};
  int v10 = ret_i32();
  uint v11 = ret_u32();
  float v12 = ret_f32();
  MyStruct v13 = ret_MyStruct();
  MyStruct v14 = ret_MyStruct();
  tint_array_wrapper v15 = ret_MyArray();
}

struct tint_symbol_1 {
  float4 value [[color(0)]];
};

float4 tint_symbol_inner() {
  return float4(0.0f, 0.0f, 0.0f, 0.0f);
}

fragment tint_symbol_1 tint_symbol() {
  float4 const inner_result = tint_symbol_inner();
  tint_symbol_1 wrapper_result = {};
  wrapper_result.value = inner_result;
  return wrapper_result;
}

