#include #include using namespace metal; struct A { float v; char _m0_final_padding[12]; }; struct B { float2 v; char _m0_final_padding[8]; }; struct C { float3 v; }; struct D { float4 v; }; struct E { float4 a; float2 b; char _m0_final_padding[8]; }; struct SSBO { A a[2][4]; B b[2][4]; C c[2][4]; D d[2][4]; float2x4 e[2][4]; E f[1]; }; constant uint3 gl_WorkGroupSize [[maybe_unused]] = uint3(1u); kernel void main0(device SSBO& _32 [[buffer(0)]]) { _32.f[0].a = float4(2.0); float2x2 tmp = float2x2(_32.e[0][1][0].xy, _32.e[0][1][1].xy); (device float2&)_32.e[1][2][0] = tmp[0]; (device float2&)_32.e[1][2][1] = tmp[1]; }