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