Merge pull request #3031 from rg3igalia/sub-group-size-arb-flat-fix
[platform/upstream/glslang.git] / Test / 300operations.frag
1 #version 300 es
2
3 uniform block {
4     mediump float f;
5 } instanceName;
6
7 struct S {
8     int i;
9 } s;
10
11 float a[5];
12
13 void main()
14 {
15     bool b;
16     float f;
17     int i;
18     uint u;
19     bvec3 b3;
20     vec3 v3;
21     ivec3 iv3;
22     uvec3 uv3;
23     vec4 v4;
24     ivec4 iv4;
25     uvec4 uv4;
26     mat2 m2;
27     mat4 m4;
28
29     // These are all errors:
30     instanceName + instanceName;
31     s + s;
32     i + f;
33     u + f;
34     u + i;
35     iv3 *= iv4;
36     iv4 / uv4;
37     i - v3;
38     iv3 + uv3;
39     a * a;
40     b / b;
41
42     f % f;
43     i % f;
44     f % u;
45     instanceName++;
46     ++s;
47     a--;
48     ++b3;
49
50     iv3 < uv3;
51     m2 > m2;
52     m2 != m4;
53     i >= u;
54     a <= a;
55     b > b;
56
57     b && b3;
58     b3 ^^ b3;
59     b3 || b;
60     i && i;
61     u || u;
62     m2 ^^ m2;
63
64     !u;
65     !i;
66     !m2;
67     !v3;
68     !a;
69
70     ~f;
71     ~m4;
72     ~v3;
73     ~a;
74     ~instanceName;
75
76     i << iv3;
77     u << uv3;
78     i >> f;
79     f >> i;
80     m4 >> i;
81     a >> u;
82     iv3 >> iv4;
83
84     i & u;    
85     u &= uv3;
86     i | uv3;
87     u & f;
88     m2 | m2;
89     s ^ s;
90     (f = f) = f;
91
92     // These are all okay:
93     f * v4;
94     u + u;
95     uv4 / u;
96     iv3 -= iv3;
97     
98     i %= 3;
99     uv3 % 4u;
100     --m2;
101     iv4++;
102
103     m4 != m4;
104     m2 == m2;
105     i <= i;
106     a == a;
107     s != s;
108
109     b && b;
110     b || b;
111     b ^^ b;
112
113     !b, uv3;
114
115     ~i;
116     ~u;
117     ~uv3;
118     ~iv3;
119
120     uv3 <<= i;
121     i >> i;
122     u << u;
123     iv3 >> iv3;
124
125     i & i;
126     u | u;
127     iv3 ^ iv3;
128     u & uv3;
129     uv3 | u;
130     uv3 &= u;
131     int arr[0x222 & 0xf];
132     arr[1]; // size 2
133     int arr2[(uvec2(0, 0x2) | 0x1u).y];
134     arr2[2]; // size 3
135 }