1struct Baz 2{ 3 float c; 4}; 5 6struct Bar 7{ 8 float d[2][4]; 9 Baz baz[2]; 10}; 11 12struct Foo 13{ 14 column_major float2x2 a; 15 float2 b; 16 Bar c[5]; 17}; 18 19static const uint3 gl_WorkGroupSize = uint3(1u, 1u, 1u); 20 21RWByteAddressBuffer _31 : register(u0); 22 23void comp_main() 24{ 25 Foo _36; 26 _36.a = asfloat(uint2x2(_31.Load(0), _31.Load(8), _31.Load(4), _31.Load(12))); 27 _36.b = asfloat(_31.Load2(16)); 28 [unroll] 29 for (int _4ident = 0; _4ident < 5; _4ident++) 30 { 31 [unroll] 32 for (int _5ident = 0; _5ident < 2; _5ident++) 33 { 34 [unroll] 35 for (int _6ident = 0; _6ident < 4; _6ident++) 36 { 37 _36.c[_4ident].d[_5ident][_6ident] = asfloat(_31.Load(_6ident * 4 + _5ident * 16 + _4ident * 40 + 24)); 38 } 39 } 40 [unroll] 41 for (int _7ident = 0; _7ident < 2; _7ident++) 42 { 43 _36.c[_4ident].baz[_7ident].c = asfloat(_31.Load(_7ident * 4 + _4ident * 40 + 56)); 44 } 45 } 46 float2x2 _234 = float2x2(_36.a[0] + 1.0f.xx, _36.a[1] + 1.0f.xx); 47 _31.Store(224, asuint(_234[0].x)); 48 _31.Store(228, asuint(_234[1].x)); 49 _31.Store(232, asuint(_234[0].y)); 50 _31.Store(236, asuint(_234[1].y)); 51 _31.Store2(240, asuint(_36.b + 2.0f.xx)); 52 _31.Store(248, asuint(_36.c[0].d[0][0])); 53 _31.Store(252, asuint(_36.c[0].d[0][1])); 54 _31.Store(256, asuint(_36.c[0].d[0][2])); 55 _31.Store(260, asuint(_36.c[0].d[0][3])); 56 _31.Store(264, asuint(_36.c[0].d[1][0])); 57 _31.Store(268, asuint(_36.c[0].d[1][1])); 58 _31.Store(272, asuint(_36.c[0].d[1][2])); 59 _31.Store(276, asuint(_36.c[0].d[1][3])); 60 _31.Store(280, asuint(_36.c[0].baz[0].c)); 61 _31.Store(284, asuint(_36.c[0].baz[1].c)); 62 _31.Store(288, asuint(_36.c[1].d[0][0])); 63 _31.Store(292, asuint(_36.c[1].d[0][1])); 64 _31.Store(296, asuint(_36.c[1].d[0][2])); 65 _31.Store(300, asuint(_36.c[1].d[0][3])); 66 _31.Store(304, asuint(_36.c[1].d[1][0])); 67 _31.Store(308, asuint(_36.c[1].d[1][1])); 68 _31.Store(312, asuint(_36.c[1].d[1][2])); 69 _31.Store(316, asuint(_36.c[1].d[1][3])); 70 _31.Store(320, asuint(_36.c[1].baz[0].c)); 71 _31.Store(324, asuint(_36.c[1].baz[1].c)); 72 _31.Store(328, asuint(_36.c[2].d[0][0])); 73 _31.Store(332, asuint(_36.c[2].d[0][1])); 74 _31.Store(336, asuint(_36.c[2].d[0][2])); 75 _31.Store(340, asuint(_36.c[2].d[0][3])); 76 _31.Store(344, asuint(_36.c[2].d[1][0])); 77 _31.Store(348, asuint(_36.c[2].d[1][1])); 78 _31.Store(352, asuint(_36.c[2].d[1][2])); 79 _31.Store(356, asuint(_36.c[2].d[1][3])); 80 _31.Store(360, asuint(_36.c[2].baz[0].c)); 81 _31.Store(364, asuint(_36.c[2].baz[1].c)); 82 _31.Store(368, asuint(_36.c[3].d[0][0])); 83 _31.Store(372, asuint(_36.c[3].d[0][1])); 84 _31.Store(376, asuint(_36.c[3].d[0][2])); 85 _31.Store(380, asuint(_36.c[3].d[0][3])); 86 _31.Store(384, asuint(_36.c[3].d[1][0])); 87 _31.Store(388, asuint(_36.c[3].d[1][1] + 5.0f)); 88 _31.Store(392, asuint(_36.c[3].d[1][2])); 89 _31.Store(396, asuint(_36.c[3].d[1][3])); 90 _31.Store(400, asuint(_36.c[3].baz[0].c)); 91 _31.Store(404, asuint(_36.c[3].baz[1].c)); 92 _31.Store(408, asuint(_36.c[4].d[0][0])); 93 _31.Store(412, asuint(_36.c[4].d[0][1])); 94 _31.Store(416, asuint(_36.c[4].d[0][2])); 95 _31.Store(420, asuint(_36.c[4].d[0][3])); 96 _31.Store(424, asuint(_36.c[4].d[1][0])); 97 _31.Store(428, asuint(_36.c[4].d[1][1])); 98 _31.Store(432, asuint(_36.c[4].d[1][2])); 99 _31.Store(436, asuint(_36.c[4].d[1][3])); 100 _31.Store(440, asuint(_36.c[4].baz[0].c)); 101 _31.Store(444, asuint(_36.c[4].baz[1].c)); 102} 103 104[numthreads(1, 1, 1)] 105void main() 106{ 107 comp_main(); 108} 109