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