#include <metal_stdlib>

using namespace metal;
struct tint_array_wrapper {
  /* 0x0000 */ int4 arr[4];
};
struct Inner {
  /* 0x0000 */ packed_int3 a;
  /* 0x000c */ int b;
  /* 0x0010 */ packed_uint3 c;
  /* 0x001c */ uint d;
  /* 0x0020 */ packed_float3 e;
  /* 0x002c */ float f;
  /* 0x0030 */ float2x3 g;
  /* 0x0050 */ float3x2 h;
  /* 0x0068 */ int8_t tint_pad[8];
  /* 0x0070 */ tint_array_wrapper i;
};
struct S {
  /* 0x0000 */ Inner arr[1];
};

kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S& s [[buffer(0)]]) {
  s.arr[idx].a = int3();
  s.arr[idx].b = int();
  s.arr[idx].c = uint3();
  s.arr[idx].d = uint();
  s.arr[idx].e = float3();
  s.arr[idx].f = float();
  s.arr[idx].g = float2x3();
  s.arr[idx].h = float3x2();
  tint_array_wrapper const tint_symbol_2 = {.arr={}};
  s.arr[idx].i = tint_symbol_2;
  return;
}

