#include <metal_stdlib>

using namespace metal;

template<typename T, size_t N>
struct tint_array {
    const constant T& operator[](size_t i) const constant { return elements[i]; }
    device T& operator[](size_t i) device { return elements[i]; }
    const device T& operator[](size_t i) const device { return elements[i]; }
    thread T& operator[](size_t i) thread { return elements[i]; }
    const thread T& operator[](size_t i) const thread { return elements[i]; }
    threadgroup T& operator[](size_t i) threadgroup { return elements[i]; }
    const threadgroup T& operator[](size_t i) const threadgroup { return elements[i]; }
    T elements[N];
};

struct S {
  /* 0x0000 */ packed_float3 v;
  /* 0x000c */ tint_array<int8_t, 4> tint_pad;
};

void f(const constant S* const tint_symbol) {
  float3 v = float3((*(tint_symbol)).v);
  float x = (*(tint_symbol)).v[0];
  float y = (*(tint_symbol)).v[1];
  float z = (*(tint_symbol)).v[2];
  float2 xx = float3((*(tint_symbol)).v).xx;
  float2 xy = float3((*(tint_symbol)).v).xy;
  float2 xz = float3((*(tint_symbol)).v).xz;
  float2 yx = float3((*(tint_symbol)).v).yx;
  float2 yy = float3((*(tint_symbol)).v).yy;
  float2 yz = float3((*(tint_symbol)).v).yz;
  float2 zx = float3((*(tint_symbol)).v).zx;
  float2 zy = float3((*(tint_symbol)).v).zy;
  float2 zz = float3((*(tint_symbol)).v).zz;
  float3 xxx = float3((*(tint_symbol)).v).xxx;
  float3 xxy = float3((*(tint_symbol)).v).xxy;
  float3 xxz = float3((*(tint_symbol)).v).xxz;
  float3 xyx = float3((*(tint_symbol)).v).xyx;
  float3 xyy = float3((*(tint_symbol)).v).xyy;
  float3 xyz = float3((*(tint_symbol)).v).xyz;
  float3 xzx = float3((*(tint_symbol)).v).xzx;
  float3 xzy = float3((*(tint_symbol)).v).xzy;
  float3 xzz = float3((*(tint_symbol)).v).xzz;
  float3 yxx = float3((*(tint_symbol)).v).yxx;
  float3 yxy = float3((*(tint_symbol)).v).yxy;
  float3 yxz = float3((*(tint_symbol)).v).yxz;
  float3 yyx = float3((*(tint_symbol)).v).yyx;
  float3 yyy = float3((*(tint_symbol)).v).yyy;
  float3 yyz = float3((*(tint_symbol)).v).yyz;
  float3 yzx = float3((*(tint_symbol)).v).yzx;
  float3 yzy = float3((*(tint_symbol)).v).yzy;
  float3 yzz = float3((*(tint_symbol)).v).yzz;
  float3 zxx = float3((*(tint_symbol)).v).zxx;
  float3 zxy = float3((*(tint_symbol)).v).zxy;
  float3 zxz = float3((*(tint_symbol)).v).zxz;
  float3 zyx = float3((*(tint_symbol)).v).zyx;
  float3 zyy = float3((*(tint_symbol)).v).zyy;
  float3 zyz = float3((*(tint_symbol)).v).zyz;
  float3 zzx = float3((*(tint_symbol)).v).zzx;
  float3 zzy = float3((*(tint_symbol)).v).zzy;
  float3 zzz = float3((*(tint_symbol)).v).zzz;
  float4 xxxx = float3((*(tint_symbol)).v).xxxx;
  float4 xxxy = float3((*(tint_symbol)).v).xxxy;
  float4 xxxz = float3((*(tint_symbol)).v).xxxz;
  float4 xxyx = float3((*(tint_symbol)).v).xxyx;
  float4 xxyy = float3((*(tint_symbol)).v).xxyy;
  float4 xxyz = float3((*(tint_symbol)).v).xxyz;
  float4 xxzx = float3((*(tint_symbol)).v).xxzx;
  float4 xxzy = float3((*(tint_symbol)).v).xxzy;
  float4 xxzz = float3((*(tint_symbol)).v).xxzz;
  float4 xyxx = float3((*(tint_symbol)).v).xyxx;
  float4 xyxy = float3((*(tint_symbol)).v).xyxy;
  float4 xyxz = float3((*(tint_symbol)).v).xyxz;
  float4 xyyx = float3((*(tint_symbol)).v).xyyx;
  float4 xyyy = float3((*(tint_symbol)).v).xyyy;
  float4 xyyz = float3((*(tint_symbol)).v).xyyz;
  float4 xyzx = float3((*(tint_symbol)).v).xyzx;
  float4 xyzy = float3((*(tint_symbol)).v).xyzy;
  float4 xyzz = float3((*(tint_symbol)).v).xyzz;
  float4 xzxx = float3((*(tint_symbol)).v).xzxx;
  float4 xzxy = float3((*(tint_symbol)).v).xzxy;
  float4 xzxz = float3((*(tint_symbol)).v).xzxz;
  float4 xzyx = float3((*(tint_symbol)).v).xzyx;
  float4 xzyy = float3((*(tint_symbol)).v).xzyy;
  float4 xzyz = float3((*(tint_symbol)).v).xzyz;
  float4 xzzx = float3((*(tint_symbol)).v).xzzx;
  float4 xzzy = float3((*(tint_symbol)).v).xzzy;
  float4 xzzz = float3((*(tint_symbol)).v).xzzz;
  float4 yxxx = float3((*(tint_symbol)).v).yxxx;
  float4 yxxy = float3((*(tint_symbol)).v).yxxy;
  float4 yxxz = float3((*(tint_symbol)).v).yxxz;
  float4 yxyx = float3((*(tint_symbol)).v).yxyx;
  float4 yxyy = float3((*(tint_symbol)).v).yxyy;
  float4 yxyz = float3((*(tint_symbol)).v).yxyz;
  float4 yxzx = float3((*(tint_symbol)).v).yxzx;
  float4 yxzy = float3((*(tint_symbol)).v).yxzy;
  float4 yxzz = float3((*(tint_symbol)).v).yxzz;
  float4 yyxx = float3((*(tint_symbol)).v).yyxx;
  float4 yyxy = float3((*(tint_symbol)).v).yyxy;
  float4 yyxz = float3((*(tint_symbol)).v).yyxz;
  float4 yyyx = float3((*(tint_symbol)).v).yyyx;
  float4 yyyy = float3((*(tint_symbol)).v).yyyy;
  float4 yyyz = float3((*(tint_symbol)).v).yyyz;
  float4 yyzx = float3((*(tint_symbol)).v).yyzx;
  float4 yyzy = float3((*(tint_symbol)).v).yyzy;
  float4 yyzz = float3((*(tint_symbol)).v).yyzz;
  float4 yzxx = float3((*(tint_symbol)).v).yzxx;
  float4 yzxy = float3((*(tint_symbol)).v).yzxy;
  float4 yzxz = float3((*(tint_symbol)).v).yzxz;
  float4 yzyx = float3((*(tint_symbol)).v).yzyx;
  float4 yzyy = float3((*(tint_symbol)).v).yzyy;
  float4 yzyz = float3((*(tint_symbol)).v).yzyz;
  float4 yzzx = float3((*(tint_symbol)).v).yzzx;
  float4 yzzy = float3((*(tint_symbol)).v).yzzy;
  float4 yzzz = float3((*(tint_symbol)).v).yzzz;
  float4 zxxx = float3((*(tint_symbol)).v).zxxx;
  float4 zxxy = float3((*(tint_symbol)).v).zxxy;
  float4 zxxz = float3((*(tint_symbol)).v).zxxz;
  float4 zxyx = float3((*(tint_symbol)).v).zxyx;
  float4 zxyy = float3((*(tint_symbol)).v).zxyy;
  float4 zxyz = float3((*(tint_symbol)).v).zxyz;
  float4 zxzx = float3((*(tint_symbol)).v).zxzx;
  float4 zxzy = float3((*(tint_symbol)).v).zxzy;
  float4 zxzz = float3((*(tint_symbol)).v).zxzz;
  float4 zyxx = float3((*(tint_symbol)).v).zyxx;
  float4 zyxy = float3((*(tint_symbol)).v).zyxy;
  float4 zyxz = float3((*(tint_symbol)).v).zyxz;
  float4 zyyx = float3((*(tint_symbol)).v).zyyx;
  float4 zyyy = float3((*(tint_symbol)).v).zyyy;
  float4 zyyz = float3((*(tint_symbol)).v).zyyz;
  float4 zyzx = float3((*(tint_symbol)).v).zyzx;
  float4 zyzy = float3((*(tint_symbol)).v).zyzy;
  float4 zyzz = float3((*(tint_symbol)).v).zyzz;
  float4 zzxx = float3((*(tint_symbol)).v).zzxx;
  float4 zzxy = float3((*(tint_symbol)).v).zzxy;
  float4 zzxz = float3((*(tint_symbol)).v).zzxz;
  float4 zzyx = float3((*(tint_symbol)).v).zzyx;
  float4 zzyy = float3((*(tint_symbol)).v).zzyy;
  float4 zzyz = float3((*(tint_symbol)).v).zzyz;
  float4 zzzx = float3((*(tint_symbol)).v).zzzx;
  float4 zzzy = float3((*(tint_symbol)).v).zzzy;
  float4 zzzz = float3((*(tint_symbol)).v).zzzz;
}

