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