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