#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_packed_vec3 {
  /* 0x0000 */ packed_int3 v;
  /* 0x000c */ tint_array<int8_t, 4> tint_pad;
};

struct tint_module_vars_struct {
  const constant S_packed_vec3* U;
};

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