1617a3babSopenharmony_ci#version 450 core
2617a3babSopenharmony_ci
3617a3babSopenharmony_ci#extension GL_EXT_shader_16bit_storage : enable
4617a3babSopenharmony_ci
5617a3babSopenharmony_cistruct S
6617a3babSopenharmony_ci{
7617a3babSopenharmony_ci    int16_t  x;
8617a3babSopenharmony_ci    i16vec2    y;
9617a3babSopenharmony_ci    i16vec3    z;
10617a3babSopenharmony_ci};
11617a3babSopenharmony_ci
12617a3babSopenharmony_cilayout(column_major, std140) uniform B1
13617a3babSopenharmony_ci{
14617a3babSopenharmony_ci    int16_t  a;
15617a3babSopenharmony_ci    i16vec2    b;
16617a3babSopenharmony_ci    i16vec3    c;
17617a3babSopenharmony_ci    int16_t  d[2];
18617a3babSopenharmony_ci    S          g;
19617a3babSopenharmony_ci    S          h[2];
20617a3babSopenharmony_ci    int        j;
21617a3babSopenharmony_ci} b1;
22617a3babSopenharmony_ci
23617a3babSopenharmony_cilayout(row_major, std430) buffer B2
24617a3babSopenharmony_ci{
25617a3babSopenharmony_ci    int16_t  o;
26617a3babSopenharmony_ci    i16vec2    p;
27617a3babSopenharmony_ci    i16vec3    q;
28617a3babSopenharmony_ci    int16_t  r[2];
29617a3babSopenharmony_ci    S          u;
30617a3babSopenharmony_ci    S          v[2];
31617a3babSopenharmony_ci    int16_t  w[];
32617a3babSopenharmony_ci} b2;
33617a3babSopenharmony_ci
34617a3babSopenharmony_cistruct S2 {
35617a3babSopenharmony_ci    mat4x4 x;
36617a3babSopenharmony_ci    int16_t y;
37617a3babSopenharmony_ci    int z;
38617a3babSopenharmony_ci};
39617a3babSopenharmony_ci
40617a3babSopenharmony_cistruct S3 {
41617a3babSopenharmony_ci    S2 x;
42617a3babSopenharmony_ci};
43617a3babSopenharmony_ci
44617a3babSopenharmony_cilayout(row_major, std430) buffer B3
45617a3babSopenharmony_ci{
46617a3babSopenharmony_ci    S2 x;
47617a3babSopenharmony_ci} b3;
48617a3babSopenharmony_ci
49617a3babSopenharmony_cilayout(column_major, std430) buffer B4
50617a3babSopenharmony_ci{
51617a3babSopenharmony_ci    S2 x;
52617a3babSopenharmony_ci} b4;
53617a3babSopenharmony_ci
54617a3babSopenharmony_civoid func3(S2 x) {
55617a3babSopenharmony_ci}
56617a3babSopenharmony_ci
57617a3babSopenharmony_ciS2 func4() {
58617a3babSopenharmony_ci    return b4.x;
59617a3babSopenharmony_ci}
60617a3babSopenharmony_ci
61617a3babSopenharmony_ciint func(int16_t a) {
62617a3babSopenharmony_ci    return 0;
63617a3babSopenharmony_ci}
64617a3babSopenharmony_ci
65617a3babSopenharmony_cistruct S4 {
66617a3babSopenharmony_ci    int x;
67617a3babSopenharmony_ci    int16_t y;
68617a3babSopenharmony_ci};
69617a3babSopenharmony_ci
70617a3babSopenharmony_ciint func2(int a) { return 0; }
71617a3babSopenharmony_ci
72617a3babSopenharmony_civoid main()
73617a3babSopenharmony_ci{
74617a3babSopenharmony_ci    b2.o = b2.q[1];
75617a3babSopenharmony_ci    b2.p = b2.q.xy;
76617a3babSopenharmony_ci    b2.o = max(b1.a, b1.a);
77617a3babSopenharmony_ci    bvec2 bv = lessThan(b2.p, b2.p);
78617a3babSopenharmony_ci    b2.o = b1.a + b1.a;
79617a3babSopenharmony_ci    b2.o = -b1.a;
80617a3babSopenharmony_ci    b2.o = b1.a + 1;
81617a3babSopenharmony_ci    b2.p = b2.p.yx;
82617a3babSopenharmony_ci    b4.x = b3.x;
83617a3babSopenharmony_ci    int16_t f0;
84617a3babSopenharmony_ci    S2 f1;
85617a3babSopenharmony_ci    S3 f2;
86617a3babSopenharmony_ci    if (b1.a == b1.a) {}
87617a3babSopenharmony_ci    b2.r = b2.r;
88617a3babSopenharmony_ci    b2.p = i16vec2(3, 4);
89617a3babSopenharmony_ci    i16vec2[2](i16vec2(ivec2(1,2)), i16vec2(ivec2(3,4)));
90617a3babSopenharmony_ci    // NOT ERRORING YET
91617a3babSopenharmony_ci    b3.x;
92617a3babSopenharmony_ci    S4(0, int16_t(0));
93617a3babSopenharmony_ci    func2(b1.a);
94617a3babSopenharmony_ci}
95617a3babSopenharmony_ci
96617a3babSopenharmony_ci
97617a3babSopenharmony_cilayout(column_major, std140) uniform B6
98617a3babSopenharmony_ci{
99617a3babSopenharmony_ci    i16mat2x3  e;
100617a3babSopenharmony_ci} b6;
101617a3babSopenharmony_ci
102