xref: /aosp_15_r20/external/deqp/data/gles3/shaders/arrays.test (revision 35238bce31c2a825756842865a792f8cf7f89930)
1*35238bceSAndroid Build Coastguard Worker#X1. Type: float[5]                                // An array type with 5 elements
2*35238bceSAndroid Build Coastguard Worker#X2. Return value: float[5] func() { ... }                    // Function with a 5-element array return value
3*35238bceSAndroid Build Coastguard Worker#X3. Array constructor: float[3] (1.0, 2.0, 5.5)                // 3-element array with given elements
4*35238bceSAndroid Build Coastguard Worker#                                                                    // Fails with array of matrices!
5*35238bceSAndroid Build Coastguard Worker#X4. As unnamed parameter: void func(float[5]);
6*35238bceSAndroid Build Coastguard Worker#X5. Variable declaration: float[5] a;                                // Equivalent to float a[5]; (?)
7*35238bceSAndroid Build Coastguard Worker#X6. Empty brackets: float x[] = float[] (1.0, 2.0, 3.0);    // Size of x is 3
8*35238bceSAndroid Build Coastguard Worker#                            float y[] = float[3] (1.0, 2.0, 3.0);    // Size of y is 3 (equivalent)
9*35238bceSAndroid Build Coastguard Worker#                            float z[] = y;                            // Size of z is 3
10*35238bceSAndroid Build Coastguard Worker#X7. Testing that 2-dimensional arrays don't work: float a[5][3];    // Illegal
11*35238bceSAndroid Build Coastguard Worker#                                                    float[5] a[3];    // Illegal
12*35238bceSAndroid Build Coastguard Worker#X8. Testing that array declaration with dynamic variables as array size won't work.
13*35238bceSAndroid Build Coastguard Worker#X9. Testing length() operator: z.length();                            // Returns 3 for z defined before
14*35238bceSAndroid Build Coastguard Worker#X10. Test C/C++ style {}-constructor
15*35238bceSAndroid Build Coastguard Worker#X11. Test struct arrays
16*35238bceSAndroid Build Coastguard Worker#X12. Test array element access at initialization with const/dynamic values
17*35238bceSAndroid Build Coastguard Worker
18*35238bceSAndroid Build Coastguard Workergroup constructor "Array constructors"
19*35238bceSAndroid Build Coastguard Worker
20*35238bceSAndroid Build Coastguard Worker    case float3
21*35238bceSAndroid Build Coastguard Worker        version 300 es
22*35238bceSAndroid Build Coastguard Worker        values
23*35238bceSAndroid Build Coastguard Worker        {
24*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ];
25*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ];
26*35238bceSAndroid Build Coastguard Worker        }
27*35238bceSAndroid Build Coastguard Worker
28*35238bceSAndroid Build Coastguard Worker        both ""
29*35238bceSAndroid Build Coastguard Worker            #version 300 es
30*35238bceSAndroid Build Coastguard Worker            precision mediump float;
31*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
32*35238bceSAndroid Build Coastguard Worker
33*35238bceSAndroid Build Coastguard Worker            void main()
34*35238bceSAndroid Build Coastguard Worker            {
35*35238bceSAndroid Build Coastguard Worker                ${SETUP}
36*35238bceSAndroid Build Coastguard Worker                float[3] x;
37*35238bceSAndroid Build Coastguard Worker                x = float[3] (in0.z, in0.x, in0.y);
38*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0], x[1], x[2]);
39*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
40*35238bceSAndroid Build Coastguard Worker            }
41*35238bceSAndroid Build Coastguard Worker        ""
42*35238bceSAndroid Build Coastguard Worker    end
43*35238bceSAndroid Build Coastguard Worker
44*35238bceSAndroid Build Coastguard Worker    case float4
45*35238bceSAndroid Build Coastguard Worker        version 300 es
46*35238bceSAndroid Build Coastguard Worker        values
47*35238bceSAndroid Build Coastguard Worker        {
48*35238bceSAndroid Build Coastguard Worker            input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 0.2) | vec4(7.4, -1.0, 2.0, -1.3) | vec4(3.0, 1.6, -2.0, 0.5) ];
49*35238bceSAndroid Build Coastguard Worker            output vec4 out0 = [ vec4(2.0, 0.5, 0.2, 1.0) | vec4(2.0, 7.4, -1.3, -1.0) | vec4(-2.0, 3.0, 0.5, 1.6) ];
50*35238bceSAndroid Build Coastguard Worker        }
51*35238bceSAndroid Build Coastguard Worker
52*35238bceSAndroid Build Coastguard Worker        both ""
53*35238bceSAndroid Build Coastguard Worker            #version 300 es
54*35238bceSAndroid Build Coastguard Worker            precision mediump float;
55*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
56*35238bceSAndroid Build Coastguard Worker
57*35238bceSAndroid Build Coastguard Worker            void main()
58*35238bceSAndroid Build Coastguard Worker            {
59*35238bceSAndroid Build Coastguard Worker                ${SETUP}
60*35238bceSAndroid Build Coastguard Worker                float[4] x;
61*35238bceSAndroid Build Coastguard Worker                x = float[4] (in0.z, in0.x, in0.w, in0.y);
62*35238bceSAndroid Build Coastguard Worker                out0 = vec4(x[0], x[1], x[2], x[3]);
63*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
64*35238bceSAndroid Build Coastguard Worker            }
65*35238bceSAndroid Build Coastguard Worker        ""
66*35238bceSAndroid Build Coastguard Worker    end
67*35238bceSAndroid Build Coastguard Worker
68*35238bceSAndroid Build Coastguard Worker    case int3
69*35238bceSAndroid Build Coastguard Worker        version 300 es
70*35238bceSAndroid Build Coastguard Worker        values
71*35238bceSAndroid Build Coastguard Worker        {
72*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ];
73*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ];
74*35238bceSAndroid Build Coastguard Worker        }
75*35238bceSAndroid Build Coastguard Worker
76*35238bceSAndroid Build Coastguard Worker        both ""
77*35238bceSAndroid Build Coastguard Worker            #version 300 es
78*35238bceSAndroid Build Coastguard Worker            precision mediump int;
79*35238bceSAndroid Build Coastguard Worker            precision mediump float;
80*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
81*35238bceSAndroid Build Coastguard Worker
82*35238bceSAndroid Build Coastguard Worker            void main()
83*35238bceSAndroid Build Coastguard Worker            {
84*35238bceSAndroid Build Coastguard Worker                ${SETUP}
85*35238bceSAndroid Build Coastguard Worker                int[3] x;
86*35238bceSAndroid Build Coastguard Worker                x = int[3] (in0.z, in0.x, in0.y);
87*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[0], x[1], x[2]);
88*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
89*35238bceSAndroid Build Coastguard Worker            }
90*35238bceSAndroid Build Coastguard Worker        ""
91*35238bceSAndroid Build Coastguard Worker    end
92*35238bceSAndroid Build Coastguard Worker
93*35238bceSAndroid Build Coastguard Worker    case int4
94*35238bceSAndroid Build Coastguard Worker        version 300 es
95*35238bceSAndroid Build Coastguard Worker        values
96*35238bceSAndroid Build Coastguard Worker        {
97*35238bceSAndroid Build Coastguard Worker            input ivec4 in0 = [ ivec4(0, 1, 2, 0) | ivec4(7, -1, 2, -1) | ivec4(3, 1, -2, 0) ];
98*35238bceSAndroid Build Coastguard Worker            output ivec4 out0 = [ ivec4(2, 0, 0, 1) | ivec4(2, 7, -1, -1) | ivec4(-2, 3, 0, 1) ];
99*35238bceSAndroid Build Coastguard Worker        }
100*35238bceSAndroid Build Coastguard Worker
101*35238bceSAndroid Build Coastguard Worker        both ""
102*35238bceSAndroid Build Coastguard Worker            #version 300 es
103*35238bceSAndroid Build Coastguard Worker            precision mediump int;
104*35238bceSAndroid Build Coastguard Worker            precision mediump float;
105*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
106*35238bceSAndroid Build Coastguard Worker
107*35238bceSAndroid Build Coastguard Worker            void main()
108*35238bceSAndroid Build Coastguard Worker            {
109*35238bceSAndroid Build Coastguard Worker                ${SETUP}
110*35238bceSAndroid Build Coastguard Worker                int[4] x;
111*35238bceSAndroid Build Coastguard Worker                x = int[4] (in0.z, in0.x, in0.w, in0.y);
112*35238bceSAndroid Build Coastguard Worker                out0 = ivec4(x[0], x[1], x[2], x[3]);
113*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
114*35238bceSAndroid Build Coastguard Worker            }
115*35238bceSAndroid Build Coastguard Worker        ""
116*35238bceSAndroid Build Coastguard Worker    end
117*35238bceSAndroid Build Coastguard Worker
118*35238bceSAndroid Build Coastguard Worker    case bool3
119*35238bceSAndroid Build Coastguard Worker        version 300 es
120*35238bceSAndroid Build Coastguard Worker        values
121*35238bceSAndroid Build Coastguard Worker        {
122*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, true, false) ];
123*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(false, true, true) ];
124*35238bceSAndroid Build Coastguard Worker        }
125*35238bceSAndroid Build Coastguard Worker
126*35238bceSAndroid Build Coastguard Worker        both ""
127*35238bceSAndroid Build Coastguard Worker            #version 300 es
128*35238bceSAndroid Build Coastguard Worker            precision mediump float;
129*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
130*35238bceSAndroid Build Coastguard Worker
131*35238bceSAndroid Build Coastguard Worker            void main()
132*35238bceSAndroid Build Coastguard Worker            {
133*35238bceSAndroid Build Coastguard Worker                ${SETUP}
134*35238bceSAndroid Build Coastguard Worker                bool[3] x;
135*35238bceSAndroid Build Coastguard Worker                x = bool[3] (in0.z, in0.x, in0.y);
136*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(x[0], x[1], x[2]);
137*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
138*35238bceSAndroid Build Coastguard Worker            }
139*35238bceSAndroid Build Coastguard Worker        ""
140*35238bceSAndroid Build Coastguard Worker    end
141*35238bceSAndroid Build Coastguard Worker
142*35238bceSAndroid Build Coastguard Worker    case bool4
143*35238bceSAndroid Build Coastguard Worker        version 300 es
144*35238bceSAndroid Build Coastguard Worker        values
145*35238bceSAndroid Build Coastguard Worker        {
146*35238bceSAndroid Build Coastguard Worker            input bvec4 in0 = [ bvec4(true, true, false, false) ];
147*35238bceSAndroid Build Coastguard Worker            output bvec4 out0 = [ bvec4(false, true, true, false) ];
148*35238bceSAndroid Build Coastguard Worker        }
149*35238bceSAndroid Build Coastguard Worker
150*35238bceSAndroid Build Coastguard Worker        both ""
151*35238bceSAndroid Build Coastguard Worker            #version 300 es
152*35238bceSAndroid Build Coastguard Worker            precision mediump float;
153*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
154*35238bceSAndroid Build Coastguard Worker
155*35238bceSAndroid Build Coastguard Worker            void main()
156*35238bceSAndroid Build Coastguard Worker            {
157*35238bceSAndroid Build Coastguard Worker                ${SETUP}
158*35238bceSAndroid Build Coastguard Worker                bool[4] x;
159*35238bceSAndroid Build Coastguard Worker                x = bool[4] (in0.z, in0.x, in0.y, in0.w);
160*35238bceSAndroid Build Coastguard Worker                out0 = bvec4(x[0], x[1], x[2], x[3]);
161*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
162*35238bceSAndroid Build Coastguard Worker            }
163*35238bceSAndroid Build Coastguard Worker        ""
164*35238bceSAndroid Build Coastguard Worker    end
165*35238bceSAndroid Build Coastguard Worker
166*35238bceSAndroid Build Coastguard Worker    case struct3
167*35238bceSAndroid Build Coastguard Worker        version 300 es
168*35238bceSAndroid Build Coastguard Worker        values
169*35238bceSAndroid Build Coastguard Worker        {
170*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
171*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, -0.5, -1.0) ];
172*35238bceSAndroid Build Coastguard Worker        }
173*35238bceSAndroid Build Coastguard Worker
174*35238bceSAndroid Build Coastguard Worker        both ""
175*35238bceSAndroid Build Coastguard Worker            #version 300 es
176*35238bceSAndroid Build Coastguard Worker            precision mediump float;
177*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
178*35238bceSAndroid Build Coastguard Worker
179*35238bceSAndroid Build Coastguard Worker
180*35238bceSAndroid Build Coastguard Worker
181*35238bceSAndroid Build Coastguard Worker            void main()
182*35238bceSAndroid Build Coastguard Worker            {
183*35238bceSAndroid Build Coastguard Worker                ${SETUP}
184*35238bceSAndroid Build Coastguard Worker
185*35238bceSAndroid Build Coastguard Worker                struct test
186*35238bceSAndroid Build Coastguard Worker                {
187*35238bceSAndroid Build Coastguard Worker                    float f;
188*35238bceSAndroid Build Coastguard Worker                    vec3 v;
189*35238bceSAndroid Build Coastguard Worker                };
190*35238bceSAndroid Build Coastguard Worker
191*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
192*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
193*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
194*35238bceSAndroid Build Coastguard Worker
195*35238bceSAndroid Build Coastguard Worker                test[3] x = test[3] (a, b, c);
196*35238bceSAndroid Build Coastguard Worker
197*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].f, x[1].v.y, x[2].v.x);
198*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
199*35238bceSAndroid Build Coastguard Worker            }
200*35238bceSAndroid Build Coastguard Worker        ""
201*35238bceSAndroid Build Coastguard Worker    end
202*35238bceSAndroid Build Coastguard Worker
203*35238bceSAndroid Build Coastguard Worker    case struct4
204*35238bceSAndroid Build Coastguard Worker        version 300 es
205*35238bceSAndroid Build Coastguard Worker        values
206*35238bceSAndroid Build Coastguard Worker        {
207*35238bceSAndroid Build Coastguard Worker            input vec4 in0 = [ vec4(0.5, 1.0, 2.0, 1.5) ];
208*35238bceSAndroid Build Coastguard Worker            output vec4 out0 = [ vec4(2.0, -0.5, -1.0, -1.5) ];
209*35238bceSAndroid Build Coastguard Worker        }
210*35238bceSAndroid Build Coastguard Worker
211*35238bceSAndroid Build Coastguard Worker        both ""
212*35238bceSAndroid Build Coastguard Worker            #version 300 es
213*35238bceSAndroid Build Coastguard Worker            precision mediump float;
214*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
215*35238bceSAndroid Build Coastguard Worker
216*35238bceSAndroid Build Coastguard Worker
217*35238bceSAndroid Build Coastguard Worker            void main()
218*35238bceSAndroid Build Coastguard Worker            {
219*35238bceSAndroid Build Coastguard Worker                ${SETUP}
220*35238bceSAndroid Build Coastguard Worker
221*35238bceSAndroid Build Coastguard Worker
222*35238bceSAndroid Build Coastguard Worker                struct test
223*35238bceSAndroid Build Coastguard Worker                {
224*35238bceSAndroid Build Coastguard Worker                    float f;
225*35238bceSAndroid Build Coastguard Worker                    vec3 v;
226*35238bceSAndroid Build Coastguard Worker                };
227*35238bceSAndroid Build Coastguard Worker
228*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
229*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
230*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
231*35238bceSAndroid Build Coastguard Worker                test d = test(-in0.w, vec3(-in0.w, -in0.x, -in0.z));
232*35238bceSAndroid Build Coastguard Worker
233*35238bceSAndroid Build Coastguard Worker                test[4] x = test[4] (a, b, c, d);
234*35238bceSAndroid Build Coastguard Worker
235*35238bceSAndroid Build Coastguard Worker                out0 = vec4(x[0].f, x[1].v.y, x[2].v.x, x[3].v.x);
236*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
237*35238bceSAndroid Build Coastguard Worker            }
238*35238bceSAndroid Build Coastguard Worker        ""
239*35238bceSAndroid Build Coastguard Worker    end
240*35238bceSAndroid Build Coastguard Worker
241*35238bceSAndroid Build Coastguard Worker
242*35238bceSAndroid Build Coastguard Worker    case float_vec3
243*35238bceSAndroid Build Coastguard Worker        version 300 es
244*35238bceSAndroid Build Coastguard Worker        values
245*35238bceSAndroid Build Coastguard Worker        {
246*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ];
247*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(7.4, -2.0, -1.0) | vec3(3.0, 2.0, 1.6) ];
248*35238bceSAndroid Build Coastguard Worker        }
249*35238bceSAndroid Build Coastguard Worker
250*35238bceSAndroid Build Coastguard Worker        both ""
251*35238bceSAndroid Build Coastguard Worker            #version 300 es
252*35238bceSAndroid Build Coastguard Worker            precision mediump float;
253*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
254*35238bceSAndroid Build Coastguard Worker
255*35238bceSAndroid Build Coastguard Worker            void main()
256*35238bceSAndroid Build Coastguard Worker            {
257*35238bceSAndroid Build Coastguard Worker                ${SETUP}
258*35238bceSAndroid Build Coastguard Worker
259*35238bceSAndroid Build Coastguard Worker                vec3[3] x;
260*35238bceSAndroid Build Coastguard Worker                x = vec3[3] (    vec3(in0.x, in0.y, in0.z)    ,
261*35238bceSAndroid Build Coastguard Worker                                vec3(-in0.y, -in0.z, -in0.x),
262*35238bceSAndroid Build Coastguard Worker                                vec3(in0.z, in0.x, in0.y)    );
263*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].x, x[1].y, x[2].z);
264*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
265*35238bceSAndroid Build Coastguard Worker            }
266*35238bceSAndroid Build Coastguard Worker        ""
267*35238bceSAndroid Build Coastguard Worker    end
268*35238bceSAndroid Build Coastguard Worker
269*35238bceSAndroid Build Coastguard Worker    case int_vec3
270*35238bceSAndroid Build Coastguard Worker        version 300 es
271*35238bceSAndroid Build Coastguard Worker        values
272*35238bceSAndroid Build Coastguard Worker        {
273*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ];
274*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(5, -2, 1) | ivec3(7, -2, -1) | ivec3(3, 2, 1) ];
275*35238bceSAndroid Build Coastguard Worker        }
276*35238bceSAndroid Build Coastguard Worker
277*35238bceSAndroid Build Coastguard Worker        both ""
278*35238bceSAndroid Build Coastguard Worker            #version 300 es
279*35238bceSAndroid Build Coastguard Worker            precision mediump int;
280*35238bceSAndroid Build Coastguard Worker            precision mediump float;
281*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
282*35238bceSAndroid Build Coastguard Worker
283*35238bceSAndroid Build Coastguard Worker            void main()
284*35238bceSAndroid Build Coastguard Worker            {
285*35238bceSAndroid Build Coastguard Worker                ${SETUP}
286*35238bceSAndroid Build Coastguard Worker
287*35238bceSAndroid Build Coastguard Worker                ivec3[3] x;
288*35238bceSAndroid Build Coastguard Worker                x = ivec3[3] (    ivec3(in0.x, in0.y, in0.z)    ,
289*35238bceSAndroid Build Coastguard Worker                                ivec3(-in0.y, -in0.z, -in0.x),
290*35238bceSAndroid Build Coastguard Worker                                ivec3(in0.z, in0.x, in0.y)    );
291*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[0].x, x[1].y, x[2].z);
292*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
293*35238bceSAndroid Build Coastguard Worker            }
294*35238bceSAndroid Build Coastguard Worker        ""
295*35238bceSAndroid Build Coastguard Worker    end
296*35238bceSAndroid Build Coastguard Worker
297*35238bceSAndroid Build Coastguard Worker    case bool_vec3
298*35238bceSAndroid Build Coastguard Worker        version 300 es
299*35238bceSAndroid Build Coastguard Worker        values
300*35238bceSAndroid Build Coastguard Worker        {
301*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) ];
302*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, true, false) ];
303*35238bceSAndroid Build Coastguard Worker        }
304*35238bceSAndroid Build Coastguard Worker
305*35238bceSAndroid Build Coastguard Worker        both ""
306*35238bceSAndroid Build Coastguard Worker            #version 300 es
307*35238bceSAndroid Build Coastguard Worker            precision mediump float;
308*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
309*35238bceSAndroid Build Coastguard Worker
310*35238bceSAndroid Build Coastguard Worker            void main()
311*35238bceSAndroid Build Coastguard Worker            {
312*35238bceSAndroid Build Coastguard Worker                ${SETUP}
313*35238bceSAndroid Build Coastguard Worker
314*35238bceSAndroid Build Coastguard Worker                bvec3[3] x;
315*35238bceSAndroid Build Coastguard Worker                x = bvec3[3] (    bvec3(in0.x, in0.y, in0.z)    ,
316*35238bceSAndroid Build Coastguard Worker                                bvec3(in0.y, in0.z, in0.x),
317*35238bceSAndroid Build Coastguard Worker                                bvec3(in0.z, in0.x, in0.y)    );
318*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(x[0].x, x[1].y, x[2].z);
319*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
320*35238bceSAndroid Build Coastguard Worker            }
321*35238bceSAndroid Build Coastguard Worker        ""
322*35238bceSAndroid Build Coastguard Worker    end
323*35238bceSAndroid Build Coastguard Worker
324*35238bceSAndroid Build Coastguard Worker    case float_mat3
325*35238bceSAndroid Build Coastguard Worker        version 300 es
326*35238bceSAndroid Build Coastguard Worker        values
327*35238bceSAndroid Build Coastguard Worker        {
328*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ];
329*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ];
330*35238bceSAndroid Build Coastguard Worker        }
331*35238bceSAndroid Build Coastguard Worker
332*35238bceSAndroid Build Coastguard Worker        both ""
333*35238bceSAndroid Build Coastguard Worker            #version 300 es
334*35238bceSAndroid Build Coastguard Worker            precision mediump float;
335*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
336*35238bceSAndroid Build Coastguard Worker
337*35238bceSAndroid Build Coastguard Worker            void main()
338*35238bceSAndroid Build Coastguard Worker            {
339*35238bceSAndroid Build Coastguard Worker                ${SETUP}
340*35238bceSAndroid Build Coastguard Worker                mat3[3] a = mat3[3] (    mat3(    in0.x, in0.y, in0.z,
341*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z,
342*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z)    ,
343*35238bceSAndroid Build Coastguard Worker                                        mat3(    in0.z, in0.x, -in0.y,
344*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, -in0.y,
345*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, -in0.y)    ,
346*35238bceSAndroid Build Coastguard Worker                                        mat3(    -in0.z, -in0.z, in0.z,
347*35238bceSAndroid Build Coastguard Worker                                                -in0.y, -in0.y, in0.y,
348*35238bceSAndroid Build Coastguard Worker                                                -in0.x, -in0.x, in0.x)    );
349*35238bceSAndroid Build Coastguard Worker
350*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
351*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
352*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
353*35238bceSAndroid Build Coastguard Worker
354*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
355*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
356*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
357*35238bceSAndroid Build Coastguard Worker
358*35238bceSAndroid Build Coastguard Worker                out0 = vec3(ret0, ret1, ret2);
359*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
360*35238bceSAndroid Build Coastguard Worker            }
361*35238bceSAndroid Build Coastguard Worker        ""
362*35238bceSAndroid Build Coastguard Worker    end
363*35238bceSAndroid Build Coastguard Worker
364*35238bceSAndroid Build Coastguard Worker    case int_mat3
365*35238bceSAndroid Build Coastguard Worker        version 300 es
366*35238bceSAndroid Build Coastguard Worker        values
367*35238bceSAndroid Build Coastguard Worker        {
368*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ];
369*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ];
370*35238bceSAndroid Build Coastguard Worker        }
371*35238bceSAndroid Build Coastguard Worker
372*35238bceSAndroid Build Coastguard Worker        both ""
373*35238bceSAndroid Build Coastguard Worker            #version 300 es
374*35238bceSAndroid Build Coastguard Worker            precision mediump int;
375*35238bceSAndroid Build Coastguard Worker            precision mediump float;
376*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
377*35238bceSAndroid Build Coastguard Worker
378*35238bceSAndroid Build Coastguard Worker            void main()
379*35238bceSAndroid Build Coastguard Worker            {
380*35238bceSAndroid Build Coastguard Worker                ${SETUP}
381*35238bceSAndroid Build Coastguard Worker                mat3[3] a = mat3[3] (    mat3(    in0.x, in0.y, in0.z,
382*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z,
383*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z)    ,
384*35238bceSAndroid Build Coastguard Worker                                        mat3(    in0.z, in0.x, -in0.y,
385*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, -in0.y,
386*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, -in0.y)    ,
387*35238bceSAndroid Build Coastguard Worker                                        mat3(    -in0.z, -in0.z, in0.z,
388*35238bceSAndroid Build Coastguard Worker                                                -in0.y, -in0.y, in0.y,
389*35238bceSAndroid Build Coastguard Worker                                                -in0.x, -in0.x, in0.x)    );
390*35238bceSAndroid Build Coastguard Worker
391*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
392*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
393*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
394*35238bceSAndroid Build Coastguard Worker
395*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
396*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
397*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
398*35238bceSAndroid Build Coastguard Worker
399*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(ret0, ret1, ret2);
400*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
401*35238bceSAndroid Build Coastguard Worker            }
402*35238bceSAndroid Build Coastguard Worker        ""
403*35238bceSAndroid Build Coastguard Worker    end
404*35238bceSAndroid Build Coastguard Worker
405*35238bceSAndroid Build Coastguard Worker    case bool_mat3
406*35238bceSAndroid Build Coastguard Worker        version 300 es
407*35238bceSAndroid Build Coastguard Worker        values
408*35238bceSAndroid Build Coastguard Worker        {
409*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) ];
410*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, false) ];
411*35238bceSAndroid Build Coastguard Worker        }
412*35238bceSAndroid Build Coastguard Worker
413*35238bceSAndroid Build Coastguard Worker        both ""
414*35238bceSAndroid Build Coastguard Worker            #version 300 es
415*35238bceSAndroid Build Coastguard Worker            precision mediump float;
416*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
417*35238bceSAndroid Build Coastguard Worker
418*35238bceSAndroid Build Coastguard Worker            void main()
419*35238bceSAndroid Build Coastguard Worker            {
420*35238bceSAndroid Build Coastguard Worker                ${SETUP}
421*35238bceSAndroid Build Coastguard Worker                mat3[3] a = mat3[3] (    mat3(    in0.x, in0.y, in0.z,
422*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z,
423*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.y, in0.z)    ,
424*35238bceSAndroid Build Coastguard Worker                                        mat3(    in0.z, in0.x, in0.y,
425*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, in0.y,
426*35238bceSAndroid Build Coastguard Worker                                                in0.z, in0.x, in0.y)    ,
427*35238bceSAndroid Build Coastguard Worker                                        mat3(    in0.z, in0.z, in0.z,
428*35238bceSAndroid Build Coastguard Worker                                                in0.y, in0.y, in0.y,
429*35238bceSAndroid Build Coastguard Worker                                                in0.x, in0.x, in0.x)    );
430*35238bceSAndroid Build Coastguard Worker
431*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
432*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
433*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
434*35238bceSAndroid Build Coastguard Worker
435*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
436*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
437*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
438*35238bceSAndroid Build Coastguard Worker
439*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(ret0, ret1, ret2);
440*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
441*35238bceSAndroid Build Coastguard Worker            }
442*35238bceSAndroid Build Coastguard Worker        ""
443*35238bceSAndroid Build Coastguard Worker    end
444*35238bceSAndroid Build Coastguard Worker
445*35238bceSAndroid Build Coastguard Workerend # type
446*35238bceSAndroid Build Coastguard Worker
447*35238bceSAndroid Build Coastguard Workergroup return "Arrays as return value"
448*35238bceSAndroid Build Coastguard Worker
449*35238bceSAndroid Build Coastguard Worker    case float
450*35238bceSAndroid Build Coastguard Worker        version 300 es
451*35238bceSAndroid Build Coastguard Worker        values
452*35238bceSAndroid Build Coastguard Worker        {
453*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ];
454*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, -0.5, 1.0) | vec3(2.0, -7.4, -1.0) | vec3(-2.0, -3.0, 1.6) ];
455*35238bceSAndroid Build Coastguard Worker        }
456*35238bceSAndroid Build Coastguard Worker
457*35238bceSAndroid Build Coastguard Worker        both ""
458*35238bceSAndroid Build Coastguard Worker            #version 300 es
459*35238bceSAndroid Build Coastguard Worker            precision mediump float;
460*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
461*35238bceSAndroid Build Coastguard Worker
462*35238bceSAndroid Build Coastguard Worker            float[3] func(vec3 a)
463*35238bceSAndroid Build Coastguard Worker            {
464*35238bceSAndroid Build Coastguard Worker                return float[3] (a.z, -a.x, a.y);
465*35238bceSAndroid Build Coastguard Worker            }
466*35238bceSAndroid Build Coastguard Worker
467*35238bceSAndroid Build Coastguard Worker            void main()
468*35238bceSAndroid Build Coastguard Worker            {
469*35238bceSAndroid Build Coastguard Worker                ${SETUP}
470*35238bceSAndroid Build Coastguard Worker                float[3] x = func(in0);
471*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0], x[1], x[2]);
472*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
473*35238bceSAndroid Build Coastguard Worker            }
474*35238bceSAndroid Build Coastguard Worker        ""
475*35238bceSAndroid Build Coastguard Worker    end
476*35238bceSAndroid Build Coastguard Worker
477*35238bceSAndroid Build Coastguard Worker    case int
478*35238bceSAndroid Build Coastguard Worker        version 300 es
479*35238bceSAndroid Build Coastguard Worker        values
480*35238bceSAndroid Build Coastguard Worker        {
481*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(4, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ];
482*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 =    [ ivec3(2, -4, 1) | ivec3(2, -7, -1) | ivec3(-2, -3, 1) ];
483*35238bceSAndroid Build Coastguard Worker        }
484*35238bceSAndroid Build Coastguard Worker
485*35238bceSAndroid Build Coastguard Worker        both ""
486*35238bceSAndroid Build Coastguard Worker            #version 300 es
487*35238bceSAndroid Build Coastguard Worker            precision mediump int;
488*35238bceSAndroid Build Coastguard Worker            precision mediump float;
489*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
490*35238bceSAndroid Build Coastguard Worker
491*35238bceSAndroid Build Coastguard Worker            int[3] func(ivec3 a)
492*35238bceSAndroid Build Coastguard Worker            {
493*35238bceSAndroid Build Coastguard Worker                return int[3] (a.z, -a.x, a.y);
494*35238bceSAndroid Build Coastguard Worker            }
495*35238bceSAndroid Build Coastguard Worker
496*35238bceSAndroid Build Coastguard Worker            void main()
497*35238bceSAndroid Build Coastguard Worker            {
498*35238bceSAndroid Build Coastguard Worker                ${SETUP}
499*35238bceSAndroid Build Coastguard Worker                int[3] x = func(in0);
500*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[0], x[1], x[2]);
501*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
502*35238bceSAndroid Build Coastguard Worker            }
503*35238bceSAndroid Build Coastguard Worker        ""
504*35238bceSAndroid Build Coastguard Worker    end
505*35238bceSAndroid Build Coastguard Worker
506*35238bceSAndroid Build Coastguard Worker    case bool
507*35238bceSAndroid Build Coastguard Worker        version 300 es
508*35238bceSAndroid Build Coastguard Worker        values
509*35238bceSAndroid Build Coastguard Worker        {
510*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 =    [ bvec3(false, true, true) ];
511*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, true) ];
512*35238bceSAndroid Build Coastguard Worker        }
513*35238bceSAndroid Build Coastguard Worker
514*35238bceSAndroid Build Coastguard Worker        both ""
515*35238bceSAndroid Build Coastguard Worker            #version 300 es
516*35238bceSAndroid Build Coastguard Worker            precision mediump float;
517*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
518*35238bceSAndroid Build Coastguard Worker
519*35238bceSAndroid Build Coastguard Worker            bool[3] func(bvec3 a)
520*35238bceSAndroid Build Coastguard Worker            {
521*35238bceSAndroid Build Coastguard Worker                return bool[3] (a.z, a.x, a.y);
522*35238bceSAndroid Build Coastguard Worker            }
523*35238bceSAndroid Build Coastguard Worker
524*35238bceSAndroid Build Coastguard Worker            void main()
525*35238bceSAndroid Build Coastguard Worker            {
526*35238bceSAndroid Build Coastguard Worker                ${SETUP}
527*35238bceSAndroid Build Coastguard Worker                bool[3] x = func(in0);
528*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(x[0], x[1], x[2]);
529*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
530*35238bceSAndroid Build Coastguard Worker            }
531*35238bceSAndroid Build Coastguard Worker        ""
532*35238bceSAndroid Build Coastguard Worker    end
533*35238bceSAndroid Build Coastguard Worker
534*35238bceSAndroid Build Coastguard Worker
535*35238bceSAndroid Build Coastguard Worker
536*35238bceSAndroid Build Coastguard Worker    case float_vec3
537*35238bceSAndroid Build Coastguard Worker        version 300 es
538*35238bceSAndroid Build Coastguard Worker        values
539*35238bceSAndroid Build Coastguard Worker        {
540*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ];
541*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ];
542*35238bceSAndroid Build Coastguard Worker        }
543*35238bceSAndroid Build Coastguard Worker
544*35238bceSAndroid Build Coastguard Worker        both ""
545*35238bceSAndroid Build Coastguard Worker            #version 300 es
546*35238bceSAndroid Build Coastguard Worker            precision mediump float;
547*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
548*35238bceSAndroid Build Coastguard Worker
549*35238bceSAndroid Build Coastguard Worker            vec3[3] func(vec3[3] a)
550*35238bceSAndroid Build Coastguard Worker            {
551*35238bceSAndroid Build Coastguard Worker                return vec3[3] (a[1], a[2], a[0]);
552*35238bceSAndroid Build Coastguard Worker            }
553*35238bceSAndroid Build Coastguard Worker
554*35238bceSAndroid Build Coastguard Worker            void main()
555*35238bceSAndroid Build Coastguard Worker            {
556*35238bceSAndroid Build Coastguard Worker                ${SETUP}
557*35238bceSAndroid Build Coastguard Worker                vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z)    ,
558*35238bceSAndroid Build Coastguard Worker                                    vec3(in0.y, -in0.z, in0.x)    ,
559*35238bceSAndroid Build Coastguard Worker                                    vec3(-in0.z, in0.x, in0.y)    );
560*35238bceSAndroid Build Coastguard Worker                x = func(x);
561*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].x, x[1].y, x[2].z);
562*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
563*35238bceSAndroid Build Coastguard Worker            }
564*35238bceSAndroid Build Coastguard Worker        ""
565*35238bceSAndroid Build Coastguard Worker    end
566*35238bceSAndroid Build Coastguard Worker
567*35238bceSAndroid Build Coastguard Worker    case struct
568*35238bceSAndroid Build Coastguard Worker        version 300 es
569*35238bceSAndroid Build Coastguard Worker        values
570*35238bceSAndroid Build Coastguard Worker        {
571*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) ];
572*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ];
573*35238bceSAndroid Build Coastguard Worker        }
574*35238bceSAndroid Build Coastguard Worker
575*35238bceSAndroid Build Coastguard Worker        both ""
576*35238bceSAndroid Build Coastguard Worker            #version 300 es
577*35238bceSAndroid Build Coastguard Worker            precision mediump float;
578*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
579*35238bceSAndroid Build Coastguard Worker
580*35238bceSAndroid Build Coastguard Worker            struct test
581*35238bceSAndroid Build Coastguard Worker            {
582*35238bceSAndroid Build Coastguard Worker                float f;
583*35238bceSAndroid Build Coastguard Worker                vec3 v;
584*35238bceSAndroid Build Coastguard Worker            };
585*35238bceSAndroid Build Coastguard Worker
586*35238bceSAndroid Build Coastguard Worker            test[3] func(test[3] a)
587*35238bceSAndroid Build Coastguard Worker            {
588*35238bceSAndroid Build Coastguard Worker                return test[3] (a[1], a[2], a[0]);
589*35238bceSAndroid Build Coastguard Worker            }
590*35238bceSAndroid Build Coastguard Worker
591*35238bceSAndroid Build Coastguard Worker            void main()
592*35238bceSAndroid Build Coastguard Worker            {
593*35238bceSAndroid Build Coastguard Worker                ${SETUP}
594*35238bceSAndroid Build Coastguard Worker
595*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
596*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
597*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
598*35238bceSAndroid Build Coastguard Worker
599*35238bceSAndroid Build Coastguard Worker                test[3] t = test[3] (a, b, c);
600*35238bceSAndroid Build Coastguard Worker                test[3] x = func(t);
601*35238bceSAndroid Build Coastguard Worker
602*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x);
603*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
604*35238bceSAndroid Build Coastguard Worker            }
605*35238bceSAndroid Build Coastguard Worker        ""
606*35238bceSAndroid Build Coastguard Worker    end
607*35238bceSAndroid Build Coastguard Worker
608*35238bceSAndroid Build Coastguard Worker    case int_vec3
609*35238bceSAndroid Build Coastguard Worker        version 300 es
610*35238bceSAndroid Build Coastguard Worker        values
611*35238bceSAndroid Build Coastguard Worker        {
612*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 =    [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ];
613*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ];
614*35238bceSAndroid Build Coastguard Worker        }
615*35238bceSAndroid Build Coastguard Worker
616*35238bceSAndroid Build Coastguard Worker        both ""
617*35238bceSAndroid Build Coastguard Worker            #version 300 es
618*35238bceSAndroid Build Coastguard Worker            precision mediump int;
619*35238bceSAndroid Build Coastguard Worker            precision mediump float;
620*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
621*35238bceSAndroid Build Coastguard Worker
622*35238bceSAndroid Build Coastguard Worker            ivec3[3] func(ivec3[3] a)
623*35238bceSAndroid Build Coastguard Worker            {
624*35238bceSAndroid Build Coastguard Worker                return ivec3[3] (a[1], a[2], a[0]);
625*35238bceSAndroid Build Coastguard Worker            }
626*35238bceSAndroid Build Coastguard Worker
627*35238bceSAndroid Build Coastguard Worker            void main()
628*35238bceSAndroid Build Coastguard Worker            {
629*35238bceSAndroid Build Coastguard Worker                ${SETUP}
630*35238bceSAndroid Build Coastguard Worker                ivec3[3] x = ivec3[3](    ivec3(in0.x, in0.y, -in0.z)    ,
631*35238bceSAndroid Build Coastguard Worker                                        ivec3(in0.y, -in0.z, in0.x)    ,
632*35238bceSAndroid Build Coastguard Worker                                        ivec3(-in0.z, in0.x, in0.y)    );
633*35238bceSAndroid Build Coastguard Worker                x = func(x);
634*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[0].x, x[1].y, x[2].z);
635*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
636*35238bceSAndroid Build Coastguard Worker            }
637*35238bceSAndroid Build Coastguard Worker        ""
638*35238bceSAndroid Build Coastguard Worker    end
639*35238bceSAndroid Build Coastguard Worker
640*35238bceSAndroid Build Coastguard Worker    case bool_vec3
641*35238bceSAndroid Build Coastguard Worker        version 300 es
642*35238bceSAndroid Build Coastguard Worker        values
643*35238bceSAndroid Build Coastguard Worker        {
644*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 =    [ bvec3(true, false, false) ];
645*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(false, true, false) ];
646*35238bceSAndroid Build Coastguard Worker        }
647*35238bceSAndroid Build Coastguard Worker
648*35238bceSAndroid Build Coastguard Worker        both ""
649*35238bceSAndroid Build Coastguard Worker            #version 300 es
650*35238bceSAndroid Build Coastguard Worker            precision mediump int;
651*35238bceSAndroid Build Coastguard Worker            precision mediump float;
652*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
653*35238bceSAndroid Build Coastguard Worker
654*35238bceSAndroid Build Coastguard Worker            bvec3[3] func(bvec3[3] a)
655*35238bceSAndroid Build Coastguard Worker            {
656*35238bceSAndroid Build Coastguard Worker                return bvec3[3] (a[1], a[2], a[0]);
657*35238bceSAndroid Build Coastguard Worker            }
658*35238bceSAndroid Build Coastguard Worker
659*35238bceSAndroid Build Coastguard Worker            void main()
660*35238bceSAndroid Build Coastguard Worker            {
661*35238bceSAndroid Build Coastguard Worker                ${SETUP}
662*35238bceSAndroid Build Coastguard Worker                bvec3[3] x = bvec3[3](    bvec3(in0.x, in0.y, in0.z)    ,
663*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.y, in0.z, in0.x)    ,
664*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.z, in0.x, in0.y)    );
665*35238bceSAndroid Build Coastguard Worker                x = func(x);
666*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(x[0].x, x[1].y, x[2].z);
667*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
668*35238bceSAndroid Build Coastguard Worker            }
669*35238bceSAndroid Build Coastguard Worker        ""
670*35238bceSAndroid Build Coastguard Worker    end
671*35238bceSAndroid Build Coastguard Worker
672*35238bceSAndroid Build Coastguard Worker    case float_mat3
673*35238bceSAndroid Build Coastguard Worker        version 300 es
674*35238bceSAndroid Build Coastguard Worker        values
675*35238bceSAndroid Build Coastguard Worker        {
676*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ];
677*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ];
678*35238bceSAndroid Build Coastguard Worker        }
679*35238bceSAndroid Build Coastguard Worker
680*35238bceSAndroid Build Coastguard Worker        both ""
681*35238bceSAndroid Build Coastguard Worker            #version 300 es
682*35238bceSAndroid Build Coastguard Worker            precision mediump float;
683*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
684*35238bceSAndroid Build Coastguard Worker
685*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
686*35238bceSAndroid Build Coastguard Worker            {
687*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
688*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
689*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
690*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
691*35238bceSAndroid Build Coastguard Worker                return r;
692*35238bceSAndroid Build Coastguard Worker            }
693*35238bceSAndroid Build Coastguard Worker
694*35238bceSAndroid Build Coastguard Worker            void main()
695*35238bceSAndroid Build Coastguard Worker            {
696*35238bceSAndroid Build Coastguard Worker                ${SETUP}
697*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
698*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
699*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
700*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
701*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, -in0.y,
702*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y,
703*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y);
704*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(-in0.z, -in0.z, in0.z,
705*35238bceSAndroid Build Coastguard Worker                            -in0.y, -in0.y, in0.y,
706*35238bceSAndroid Build Coastguard Worker                            -in0.x, -in0.x, in0.x);
707*35238bceSAndroid Build Coastguard Worker
708*35238bceSAndroid Build Coastguard Worker                b = func(a);
709*35238bceSAndroid Build Coastguard Worker
710*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
711*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
712*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
713*35238bceSAndroid Build Coastguard Worker
714*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
715*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
716*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
717*35238bceSAndroid Build Coastguard Worker
718*35238bceSAndroid Build Coastguard Worker                out0 = vec3(ret0, ret1, ret2);
719*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
720*35238bceSAndroid Build Coastguard Worker            }
721*35238bceSAndroid Build Coastguard Worker        ""
722*35238bceSAndroid Build Coastguard Worker    end
723*35238bceSAndroid Build Coastguard Worker
724*35238bceSAndroid Build Coastguard Worker    case int_mat3
725*35238bceSAndroid Build Coastguard Worker        version 300 es
726*35238bceSAndroid Build Coastguard Worker        values
727*35238bceSAndroid Build Coastguard Worker        {
728*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ];
729*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ];
730*35238bceSAndroid Build Coastguard Worker        }
731*35238bceSAndroid Build Coastguard Worker
732*35238bceSAndroid Build Coastguard Worker        both ""
733*35238bceSAndroid Build Coastguard Worker            #version 300 es
734*35238bceSAndroid Build Coastguard Worker            precision mediump int;
735*35238bceSAndroid Build Coastguard Worker            precision mediump float;
736*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
737*35238bceSAndroid Build Coastguard Worker
738*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
739*35238bceSAndroid Build Coastguard Worker            {
740*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
741*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
742*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
743*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
744*35238bceSAndroid Build Coastguard Worker                return r;
745*35238bceSAndroid Build Coastguard Worker            }
746*35238bceSAndroid Build Coastguard Worker
747*35238bceSAndroid Build Coastguard Worker            void main()
748*35238bceSAndroid Build Coastguard Worker            {
749*35238bceSAndroid Build Coastguard Worker                ${SETUP}
750*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
751*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
752*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
753*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
754*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, -in0.y,
755*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y,
756*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y);
757*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(-in0.z, -in0.z, in0.z,
758*35238bceSAndroid Build Coastguard Worker                            -in0.y, -in0.y, in0.y,
759*35238bceSAndroid Build Coastguard Worker                            -in0.x, -in0.x, in0.x);
760*35238bceSAndroid Build Coastguard Worker
761*35238bceSAndroid Build Coastguard Worker                b = func(a);
762*35238bceSAndroid Build Coastguard Worker
763*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
764*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
765*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
766*35238bceSAndroid Build Coastguard Worker
767*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
768*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
769*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
770*35238bceSAndroid Build Coastguard Worker
771*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(ret0, ret1, ret2);
772*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
773*35238bceSAndroid Build Coastguard Worker            }
774*35238bceSAndroid Build Coastguard Worker        ""
775*35238bceSAndroid Build Coastguard Worker    end
776*35238bceSAndroid Build Coastguard Worker
777*35238bceSAndroid Build Coastguard Worker    case bool_mat3
778*35238bceSAndroid Build Coastguard Worker        version 300 es
779*35238bceSAndroid Build Coastguard Worker        values
780*35238bceSAndroid Build Coastguard Worker        {
781*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ];
782*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ];
783*35238bceSAndroid Build Coastguard Worker        }
784*35238bceSAndroid Build Coastguard Worker
785*35238bceSAndroid Build Coastguard Worker        both ""
786*35238bceSAndroid Build Coastguard Worker            #version 300 es
787*35238bceSAndroid Build Coastguard Worker            precision mediump float;
788*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
789*35238bceSAndroid Build Coastguard Worker
790*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
791*35238bceSAndroid Build Coastguard Worker            {
792*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
793*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
794*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
795*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
796*35238bceSAndroid Build Coastguard Worker                return r;
797*35238bceSAndroid Build Coastguard Worker            }
798*35238bceSAndroid Build Coastguard Worker
799*35238bceSAndroid Build Coastguard Worker            void main()
800*35238bceSAndroid Build Coastguard Worker            {
801*35238bceSAndroid Build Coastguard Worker                ${SETUP}
802*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
803*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
804*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
805*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
806*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, in0.y,
807*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, in0.y,
808*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, in0.y);
809*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(in0.z, in0.z, in0.z,
810*35238bceSAndroid Build Coastguard Worker                            in0.y, in0.y, in0.y,
811*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.x, in0.x);
812*35238bceSAndroid Build Coastguard Worker
813*35238bceSAndroid Build Coastguard Worker                b = func(a);
814*35238bceSAndroid Build Coastguard Worker
815*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
816*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
817*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
818*35238bceSAndroid Build Coastguard Worker
819*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
820*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
821*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
822*35238bceSAndroid Build Coastguard Worker
823*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(ret0, ret1, ret2);
824*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
825*35238bceSAndroid Build Coastguard Worker            }
826*35238bceSAndroid Build Coastguard Worker        ""
827*35238bceSAndroid Build Coastguard Worker    end
828*35238bceSAndroid Build Coastguard Worker
829*35238bceSAndroid Build Coastguard Workerend # return
830*35238bceSAndroid Build Coastguard Worker
831*35238bceSAndroid Build Coastguard Workergroup unnamed_parameter "Array type as unnamed parameter of a function prototype"
832*35238bceSAndroid Build Coastguard Worker
833*35238bceSAndroid Build Coastguard Worker    case float
834*35238bceSAndroid Build Coastguard Worker        version 300 es
835*35238bceSAndroid Build Coastguard Worker        values
836*35238bceSAndroid Build Coastguard Worker        {
837*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ];
838*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ];
839*35238bceSAndroid Build Coastguard Worker        }
840*35238bceSAndroid Build Coastguard Worker
841*35238bceSAndroid Build Coastguard Worker        both ""
842*35238bceSAndroid Build Coastguard Worker            #version 300 es
843*35238bceSAndroid Build Coastguard Worker            precision mediump float;
844*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
845*35238bceSAndroid Build Coastguard Worker
846*35238bceSAndroid Build Coastguard Worker            float[3] func(float[3]);
847*35238bceSAndroid Build Coastguard Worker
848*35238bceSAndroid Build Coastguard Worker            void main()
849*35238bceSAndroid Build Coastguard Worker            {
850*35238bceSAndroid Build Coastguard Worker                ${SETUP}
851*35238bceSAndroid Build Coastguard Worker                float[3] a = float[3] (in0.x, in0.y, in0.z);
852*35238bceSAndroid Build Coastguard Worker                float[3] b = func(a);
853*35238bceSAndroid Build Coastguard Worker                out0 = vec3(b[0], b[1], b[2]);
854*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
855*35238bceSAndroid Build Coastguard Worker            }
856*35238bceSAndroid Build Coastguard Worker
857*35238bceSAndroid Build Coastguard Worker            float[3] func(float[3] a)
858*35238bceSAndroid Build Coastguard Worker            {
859*35238bceSAndroid Build Coastguard Worker                return float[3] (a[2], a[0], a[1]);
860*35238bceSAndroid Build Coastguard Worker            }
861*35238bceSAndroid Build Coastguard Worker
862*35238bceSAndroid Build Coastguard Worker        ""
863*35238bceSAndroid Build Coastguard Worker    end
864*35238bceSAndroid Build Coastguard Worker
865*35238bceSAndroid Build Coastguard Worker    case int
866*35238bceSAndroid Build Coastguard Worker        version 300 es
867*35238bceSAndroid Build Coastguard Worker        values
868*35238bceSAndroid Build Coastguard Worker        {
869*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 =    [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ];
870*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ];
871*35238bceSAndroid Build Coastguard Worker        }
872*35238bceSAndroid Build Coastguard Worker
873*35238bceSAndroid Build Coastguard Worker        both ""
874*35238bceSAndroid Build Coastguard Worker            #version 300 es
875*35238bceSAndroid Build Coastguard Worker            precision mediump int;
876*35238bceSAndroid Build Coastguard Worker            precision mediump float;
877*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
878*35238bceSAndroid Build Coastguard Worker
879*35238bceSAndroid Build Coastguard Worker            int[3] func(int[3]);
880*35238bceSAndroid Build Coastguard Worker
881*35238bceSAndroid Build Coastguard Worker            void main()
882*35238bceSAndroid Build Coastguard Worker            {
883*35238bceSAndroid Build Coastguard Worker                ${SETUP}
884*35238bceSAndroid Build Coastguard Worker                int[3] a = int[3] (in0.x, in0.y, in0.z);
885*35238bceSAndroid Build Coastguard Worker                int[3] b = func(a);
886*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(b[0], b[1], b[2]);
887*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
888*35238bceSAndroid Build Coastguard Worker            }
889*35238bceSAndroid Build Coastguard Worker
890*35238bceSAndroid Build Coastguard Worker            int[3] func(int[3] a)
891*35238bceSAndroid Build Coastguard Worker            {
892*35238bceSAndroid Build Coastguard Worker                return int[3] (a[2], a[0], a[1]);
893*35238bceSAndroid Build Coastguard Worker            }
894*35238bceSAndroid Build Coastguard Worker
895*35238bceSAndroid Build Coastguard Worker        ""
896*35238bceSAndroid Build Coastguard Worker    end
897*35238bceSAndroid Build Coastguard Worker
898*35238bceSAndroid Build Coastguard Worker    case bool
899*35238bceSAndroid Build Coastguard Worker        version 300 es
900*35238bceSAndroid Build Coastguard Worker        values
901*35238bceSAndroid Build Coastguard Worker        {
902*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 =    [ bvec3(false, true, true) ];
903*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, true) ];
904*35238bceSAndroid Build Coastguard Worker        }
905*35238bceSAndroid Build Coastguard Worker
906*35238bceSAndroid Build Coastguard Worker        both ""
907*35238bceSAndroid Build Coastguard Worker            #version 300 es
908*35238bceSAndroid Build Coastguard Worker            precision mediump float;
909*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
910*35238bceSAndroid Build Coastguard Worker
911*35238bceSAndroid Build Coastguard Worker            bool[3] func(bool[3]);
912*35238bceSAndroid Build Coastguard Worker
913*35238bceSAndroid Build Coastguard Worker            void main()
914*35238bceSAndroid Build Coastguard Worker            {
915*35238bceSAndroid Build Coastguard Worker                ${SETUP}
916*35238bceSAndroid Build Coastguard Worker                bool[3] a = bool[3] (in0.x, in0.y, in0.z);
917*35238bceSAndroid Build Coastguard Worker                bool[3] b = func(a);
918*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(b[0], b[1], b[2]);
919*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
920*35238bceSAndroid Build Coastguard Worker            }
921*35238bceSAndroid Build Coastguard Worker
922*35238bceSAndroid Build Coastguard Worker            bool[3] func(bool[3] a)
923*35238bceSAndroid Build Coastguard Worker            {
924*35238bceSAndroid Build Coastguard Worker                return bool[3] (a[2], a[0], a[1]);
925*35238bceSAndroid Build Coastguard Worker            }
926*35238bceSAndroid Build Coastguard Worker
927*35238bceSAndroid Build Coastguard Worker        ""
928*35238bceSAndroid Build Coastguard Worker    end
929*35238bceSAndroid Build Coastguard Worker
930*35238bceSAndroid Build Coastguard Worker    case struct
931*35238bceSAndroid Build Coastguard Worker        version 300 es
932*35238bceSAndroid Build Coastguard Worker        values
933*35238bceSAndroid Build Coastguard Worker        {
934*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) ];
935*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(-1.0, 2.0, 0.5) ];
936*35238bceSAndroid Build Coastguard Worker        }
937*35238bceSAndroid Build Coastguard Worker
938*35238bceSAndroid Build Coastguard Worker        both ""
939*35238bceSAndroid Build Coastguard Worker            #version 300 es
940*35238bceSAndroid Build Coastguard Worker            precision mediump float;
941*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
942*35238bceSAndroid Build Coastguard Worker
943*35238bceSAndroid Build Coastguard Worker            struct test
944*35238bceSAndroid Build Coastguard Worker            {
945*35238bceSAndroid Build Coastguard Worker                float f;
946*35238bceSAndroid Build Coastguard Worker                vec3 v;
947*35238bceSAndroid Build Coastguard Worker            };
948*35238bceSAndroid Build Coastguard Worker
949*35238bceSAndroid Build Coastguard Worker            test[3] func(test[3]);
950*35238bceSAndroid Build Coastguard Worker
951*35238bceSAndroid Build Coastguard Worker            void main()
952*35238bceSAndroid Build Coastguard Worker            {
953*35238bceSAndroid Build Coastguard Worker                ${SETUP}
954*35238bceSAndroid Build Coastguard Worker
955*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
956*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
957*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
958*35238bceSAndroid Build Coastguard Worker
959*35238bceSAndroid Build Coastguard Worker                test[3] t = test[3] (a, b, c);
960*35238bceSAndroid Build Coastguard Worker                test[3] x = func(t);
961*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].v.z, x[1].v.y, x[2].v.x);
962*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
963*35238bceSAndroid Build Coastguard Worker            }
964*35238bceSAndroid Build Coastguard Worker
965*35238bceSAndroid Build Coastguard Worker            test[3] func(test[3] a)
966*35238bceSAndroid Build Coastguard Worker            {
967*35238bceSAndroid Build Coastguard Worker                return test[3] (a[1], a[2], a[0]);
968*35238bceSAndroid Build Coastguard Worker            }
969*35238bceSAndroid Build Coastguard Worker
970*35238bceSAndroid Build Coastguard Worker        ""
971*35238bceSAndroid Build Coastguard Worker    end
972*35238bceSAndroid Build Coastguard Worker
973*35238bceSAndroid Build Coastguard Worker    case float_vec3
974*35238bceSAndroid Build Coastguard Worker        version 300 es
975*35238bceSAndroid Build Coastguard Worker        values
976*35238bceSAndroid Build Coastguard Worker        {
977*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ];
978*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(1.0, 0.5, -2.0) | vec3(11.2, -0.5, 1.0) ];
979*35238bceSAndroid Build Coastguard Worker        }
980*35238bceSAndroid Build Coastguard Worker
981*35238bceSAndroid Build Coastguard Worker        both ""
982*35238bceSAndroid Build Coastguard Worker            #version 300 es
983*35238bceSAndroid Build Coastguard Worker            precision mediump float;
984*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
985*35238bceSAndroid Build Coastguard Worker
986*35238bceSAndroid Build Coastguard Worker            vec3[3] func(vec3[3]);
987*35238bceSAndroid Build Coastguard Worker
988*35238bceSAndroid Build Coastguard Worker            void main()
989*35238bceSAndroid Build Coastguard Worker            {
990*35238bceSAndroid Build Coastguard Worker                ${SETUP}
991*35238bceSAndroid Build Coastguard Worker                vec3[3] x = vec3[3](vec3(in0.x, in0.y, -in0.z)    ,
992*35238bceSAndroid Build Coastguard Worker                                    vec3(in0.y, -in0.z, in0.x)    ,
993*35238bceSAndroid Build Coastguard Worker                                    vec3(-in0.z, in0.x, in0.y)    );
994*35238bceSAndroid Build Coastguard Worker                x = func(x);
995*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[0].x, x[1].y, x[2].z);
996*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
997*35238bceSAndroid Build Coastguard Worker            }
998*35238bceSAndroid Build Coastguard Worker
999*35238bceSAndroid Build Coastguard Worker            vec3[3] func(vec3[3] a)
1000*35238bceSAndroid Build Coastguard Worker            {
1001*35238bceSAndroid Build Coastguard Worker                return vec3[3] (a[1], a[2], a[0]);
1002*35238bceSAndroid Build Coastguard Worker            }
1003*35238bceSAndroid Build Coastguard Worker        ""
1004*35238bceSAndroid Build Coastguard Worker    end
1005*35238bceSAndroid Build Coastguard Worker
1006*35238bceSAndroid Build Coastguard Worker    case int_vec3
1007*35238bceSAndroid Build Coastguard Worker        version 300 es
1008*35238bceSAndroid Build Coastguard Worker        values
1009*35238bceSAndroid Build Coastguard Worker        {
1010*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 =    [ ivec3(5, 1, 2) | ivec3(-5, 11, -1) ];
1011*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(1, 5, -2) | ivec3(11, -5, 1) ];
1012*35238bceSAndroid Build Coastguard Worker        }
1013*35238bceSAndroid Build Coastguard Worker
1014*35238bceSAndroid Build Coastguard Worker        both ""
1015*35238bceSAndroid Build Coastguard Worker            #version 300 es
1016*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1017*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1018*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1019*35238bceSAndroid Build Coastguard Worker
1020*35238bceSAndroid Build Coastguard Worker            ivec3[3] func(ivec3[3]);
1021*35238bceSAndroid Build Coastguard Worker
1022*35238bceSAndroid Build Coastguard Worker            void main()
1023*35238bceSAndroid Build Coastguard Worker            {
1024*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1025*35238bceSAndroid Build Coastguard Worker                ivec3[3] x = ivec3[3](    ivec3(in0.x, in0.y, -in0.z)    ,
1026*35238bceSAndroid Build Coastguard Worker                                        ivec3(in0.y, -in0.z, in0.x)    ,
1027*35238bceSAndroid Build Coastguard Worker                                        ivec3(-in0.z, in0.x, in0.y)    );
1028*35238bceSAndroid Build Coastguard Worker                x = func(x);
1029*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[0].x, x[1].y, x[2].z);
1030*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1031*35238bceSAndroid Build Coastguard Worker            }
1032*35238bceSAndroid Build Coastguard Worker
1033*35238bceSAndroid Build Coastguard Worker            ivec3[3] func(ivec3[3] a)
1034*35238bceSAndroid Build Coastguard Worker            {
1035*35238bceSAndroid Build Coastguard Worker                return ivec3[3] (a[1], a[2], a[0]);
1036*35238bceSAndroid Build Coastguard Worker            }
1037*35238bceSAndroid Build Coastguard Worker        ""
1038*35238bceSAndroid Build Coastguard Worker    end
1039*35238bceSAndroid Build Coastguard Worker
1040*35238bceSAndroid Build Coastguard Worker    case bool_vec3
1041*35238bceSAndroid Build Coastguard Worker        version 300 es
1042*35238bceSAndroid Build Coastguard Worker        values
1043*35238bceSAndroid Build Coastguard Worker        {
1044*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 =    [ bvec3(true, false, false) ];
1045*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(false, true, false) ];
1046*35238bceSAndroid Build Coastguard Worker        }
1047*35238bceSAndroid Build Coastguard Worker
1048*35238bceSAndroid Build Coastguard Worker        both ""
1049*35238bceSAndroid Build Coastguard Worker            #version 300 es
1050*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1051*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1052*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1053*35238bceSAndroid Build Coastguard Worker
1054*35238bceSAndroid Build Coastguard Worker            bvec3[3] func(bvec3[3]);
1055*35238bceSAndroid Build Coastguard Worker
1056*35238bceSAndroid Build Coastguard Worker            void main()
1057*35238bceSAndroid Build Coastguard Worker            {
1058*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1059*35238bceSAndroid Build Coastguard Worker                bvec3[3] x = bvec3[3](    bvec3(in0.x, in0.y, in0.z)    ,
1060*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.y, in0.z, in0.x)    ,
1061*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.z, in0.x, in0.y)    );
1062*35238bceSAndroid Build Coastguard Worker                x = func(x);
1063*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(x[0].x, x[1].y, x[2].z);
1064*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1065*35238bceSAndroid Build Coastguard Worker            }
1066*35238bceSAndroid Build Coastguard Worker
1067*35238bceSAndroid Build Coastguard Worker            bvec3[3] func(bvec3[3] a)
1068*35238bceSAndroid Build Coastguard Worker            {
1069*35238bceSAndroid Build Coastguard Worker                return bvec3[3] (a[1], a[2], a[0]);
1070*35238bceSAndroid Build Coastguard Worker            }
1071*35238bceSAndroid Build Coastguard Worker
1072*35238bceSAndroid Build Coastguard Worker        ""
1073*35238bceSAndroid Build Coastguard Worker    end
1074*35238bceSAndroid Build Coastguard Worker
1075*35238bceSAndroid Build Coastguard Worker    case float_mat3
1076*35238bceSAndroid Build Coastguard Worker        version 300 es
1077*35238bceSAndroid Build Coastguard Worker        values
1078*35238bceSAndroid Build Coastguard Worker        {
1079*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ];
1080*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, -1.0, 2.0) | vec3(-2.3, 0.0, -2.3) ];
1081*35238bceSAndroid Build Coastguard Worker        }
1082*35238bceSAndroid Build Coastguard Worker
1083*35238bceSAndroid Build Coastguard Worker        both ""
1084*35238bceSAndroid Build Coastguard Worker            #version 300 es
1085*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1086*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1087*35238bceSAndroid Build Coastguard Worker
1088*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3]);
1089*35238bceSAndroid Build Coastguard Worker
1090*35238bceSAndroid Build Coastguard Worker            void main()
1091*35238bceSAndroid Build Coastguard Worker            {
1092*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1093*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
1094*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
1095*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
1096*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
1097*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, -in0.y,
1098*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y,
1099*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y);
1100*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(-in0.z, -in0.z, in0.z,
1101*35238bceSAndroid Build Coastguard Worker                            -in0.y, -in0.y, in0.y,
1102*35238bceSAndroid Build Coastguard Worker                            -in0.x, -in0.x, in0.x);
1103*35238bceSAndroid Build Coastguard Worker
1104*35238bceSAndroid Build Coastguard Worker                b = func(a);
1105*35238bceSAndroid Build Coastguard Worker
1106*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
1107*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
1108*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
1109*35238bceSAndroid Build Coastguard Worker
1110*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
1111*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
1112*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
1113*35238bceSAndroid Build Coastguard Worker
1114*35238bceSAndroid Build Coastguard Worker                out0 = vec3(ret0, ret1, ret2);
1115*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1116*35238bceSAndroid Build Coastguard Worker            }
1117*35238bceSAndroid Build Coastguard Worker
1118*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
1119*35238bceSAndroid Build Coastguard Worker            {
1120*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
1121*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
1122*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
1123*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
1124*35238bceSAndroid Build Coastguard Worker                return r;
1125*35238bceSAndroid Build Coastguard Worker            }
1126*35238bceSAndroid Build Coastguard Worker        ""
1127*35238bceSAndroid Build Coastguard Worker    end
1128*35238bceSAndroid Build Coastguard Worker
1129*35238bceSAndroid Build Coastguard Worker    case int_mat3
1130*35238bceSAndroid Build Coastguard Worker        version 300 es
1131*35238bceSAndroid Build Coastguard Worker        values
1132*35238bceSAndroid Build Coastguard Worker        {
1133*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(5, 1, 2) | ivec3(-1, 0, -2) ];
1134*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, -1, 2) | ivec3(-2, 0, -2) ];
1135*35238bceSAndroid Build Coastguard Worker        }
1136*35238bceSAndroid Build Coastguard Worker
1137*35238bceSAndroid Build Coastguard Worker        both ""
1138*35238bceSAndroid Build Coastguard Worker            #version 300 es
1139*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1140*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1141*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1142*35238bceSAndroid Build Coastguard Worker
1143*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3]);
1144*35238bceSAndroid Build Coastguard Worker
1145*35238bceSAndroid Build Coastguard Worker            void main()
1146*35238bceSAndroid Build Coastguard Worker            {
1147*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1148*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
1149*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
1150*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
1151*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
1152*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, -in0.y,
1153*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y,
1154*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, -in0.y);
1155*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(-in0.z, -in0.z, in0.z,
1156*35238bceSAndroid Build Coastguard Worker                            -in0.y, -in0.y, in0.y,
1157*35238bceSAndroid Build Coastguard Worker                            -in0.x, -in0.x, in0.x);
1158*35238bceSAndroid Build Coastguard Worker
1159*35238bceSAndroid Build Coastguard Worker                b = func(a);
1160*35238bceSAndroid Build Coastguard Worker
1161*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
1162*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
1163*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
1164*35238bceSAndroid Build Coastguard Worker
1165*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
1166*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
1167*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
1168*35238bceSAndroid Build Coastguard Worker
1169*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(ret0, ret1, ret2);
1170*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1171*35238bceSAndroid Build Coastguard Worker            }
1172*35238bceSAndroid Build Coastguard Worker
1173*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
1174*35238bceSAndroid Build Coastguard Worker            {
1175*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
1176*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
1177*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
1178*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
1179*35238bceSAndroid Build Coastguard Worker                return r;
1180*35238bceSAndroid Build Coastguard Worker            }
1181*35238bceSAndroid Build Coastguard Worker        ""
1182*35238bceSAndroid Build Coastguard Worker    end
1183*35238bceSAndroid Build Coastguard Worker
1184*35238bceSAndroid Build Coastguard Worker    case bool_mat3
1185*35238bceSAndroid Build Coastguard Worker        version 300 es
1186*35238bceSAndroid Build Coastguard Worker        values
1187*35238bceSAndroid Build Coastguard Worker        {
1188*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) | bvec3(true, true, false) ];
1189*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, false) ];
1190*35238bceSAndroid Build Coastguard Worker        }
1191*35238bceSAndroid Build Coastguard Worker
1192*35238bceSAndroid Build Coastguard Worker        both ""
1193*35238bceSAndroid Build Coastguard Worker            #version 300 es
1194*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1195*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1196*35238bceSAndroid Build Coastguard Worker
1197*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3]);
1198*35238bceSAndroid Build Coastguard Worker            void main()
1199*35238bceSAndroid Build Coastguard Worker            {
1200*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1201*35238bceSAndroid Build Coastguard Worker                mat3[3] a, b;
1202*35238bceSAndroid Build Coastguard Worker                a[0] = mat3(in0.x, in0.y, in0.z,
1203*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z,
1204*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.y, in0.z);
1205*35238bceSAndroid Build Coastguard Worker                a[1] = mat3(in0.z, in0.x, in0.y,
1206*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, in0.y,
1207*35238bceSAndroid Build Coastguard Worker                            in0.z, in0.x, in0.y);
1208*35238bceSAndroid Build Coastguard Worker                a[2] = mat3(in0.z, in0.z, in0.z,
1209*35238bceSAndroid Build Coastguard Worker                            in0.y, in0.y, in0.y,
1210*35238bceSAndroid Build Coastguard Worker                            in0.x, in0.x, in0.x);
1211*35238bceSAndroid Build Coastguard Worker
1212*35238bceSAndroid Build Coastguard Worker                b = func(a);
1213*35238bceSAndroid Build Coastguard Worker
1214*35238bceSAndroid Build Coastguard Worker                mat3 b0 = b[0];
1215*35238bceSAndroid Build Coastguard Worker                mat3 b1 = b[1];
1216*35238bceSAndroid Build Coastguard Worker                mat3 b2 = b[2];
1217*35238bceSAndroid Build Coastguard Worker
1218*35238bceSAndroid Build Coastguard Worker                float ret0 = b0[0][0];
1219*35238bceSAndroid Build Coastguard Worker                float ret1 = b1[1][1];
1220*35238bceSAndroid Build Coastguard Worker                float ret2 = b2[2][2];
1221*35238bceSAndroid Build Coastguard Worker
1222*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(ret0, ret1, ret2);
1223*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1224*35238bceSAndroid Build Coastguard Worker            }
1225*35238bceSAndroid Build Coastguard Worker
1226*35238bceSAndroid Build Coastguard Worker            mat3[3] func(mat3[3] x)
1227*35238bceSAndroid Build Coastguard Worker            {
1228*35238bceSAndroid Build Coastguard Worker                mat3[3] r;
1229*35238bceSAndroid Build Coastguard Worker                r[0] = x[1];
1230*35238bceSAndroid Build Coastguard Worker                r[1] = x[2];
1231*35238bceSAndroid Build Coastguard Worker                r[2] = x[0];
1232*35238bceSAndroid Build Coastguard Worker                return r;
1233*35238bceSAndroid Build Coastguard Worker            }
1234*35238bceSAndroid Build Coastguard Worker        ""
1235*35238bceSAndroid Build Coastguard Worker    end
1236*35238bceSAndroid Build Coastguard Worker
1237*35238bceSAndroid Build Coastguard Workerend # unnamed_parameter
1238*35238bceSAndroid Build Coastguard Worker
1239*35238bceSAndroid Build Coastguard Workergroup declaration "Declaring arrays"
1240*35238bceSAndroid Build Coastguard Worker
1241*35238bceSAndroid Build Coastguard Worker    case implicit_size_float
1242*35238bceSAndroid Build Coastguard Worker        version 300 es
1243*35238bceSAndroid Build Coastguard Worker        values
1244*35238bceSAndroid Build Coastguard Worker        {
1245*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(7.4, -1.0, 2.0) | vec3(3.0, 1.6, -2.0) ];
1246*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, 0.5, 1.0) | vec3(2.0, 7.4, -1.0) | vec3(-2.0, 3.0, 1.6) ];
1247*35238bceSAndroid Build Coastguard Worker        }
1248*35238bceSAndroid Build Coastguard Worker
1249*35238bceSAndroid Build Coastguard Worker        both ""
1250*35238bceSAndroid Build Coastguard Worker            #version 300 es
1251*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1252*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1253*35238bceSAndroid Build Coastguard Worker
1254*35238bceSAndroid Build Coastguard Worker            void main()
1255*35238bceSAndroid Build Coastguard Worker            {
1256*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1257*35238bceSAndroid Build Coastguard Worker                float[] x = float[] (in0.z, in0.x, in0.y);
1258*35238bceSAndroid Build Coastguard Worker                float[] y = x;
1259*35238bceSAndroid Build Coastguard Worker
1260*35238bceSAndroid Build Coastguard Worker                out0 = vec3(y[0], y[1], y[2]);
1261*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1262*35238bceSAndroid Build Coastguard Worker            }
1263*35238bceSAndroid Build Coastguard Worker        ""
1264*35238bceSAndroid Build Coastguard Worker    end
1265*35238bceSAndroid Build Coastguard Worker
1266*35238bceSAndroid Build Coastguard Worker    case implicit_size_int
1267*35238bceSAndroid Build Coastguard Worker        version 300 es
1268*35238bceSAndroid Build Coastguard Worker        values
1269*35238bceSAndroid Build Coastguard Worker        {
1270*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(7, -1, 2) | ivec3(3, 1, -2) ];
1271*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, 0, 1) | ivec3(2, 7, -1) | ivec3(-2, 3, 1) ];
1272*35238bceSAndroid Build Coastguard Worker        }
1273*35238bceSAndroid Build Coastguard Worker
1274*35238bceSAndroid Build Coastguard Worker        both ""
1275*35238bceSAndroid Build Coastguard Worker            #version 300 es
1276*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1277*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1278*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1279*35238bceSAndroid Build Coastguard Worker
1280*35238bceSAndroid Build Coastguard Worker            void main()
1281*35238bceSAndroid Build Coastguard Worker            {
1282*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1283*35238bceSAndroid Build Coastguard Worker                int[] x = int[] (in0.z, in0.x, in0.y);
1284*35238bceSAndroid Build Coastguard Worker                int[] y = x;
1285*35238bceSAndroid Build Coastguard Worker
1286*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(y[0], y[1], y[2]);
1287*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1288*35238bceSAndroid Build Coastguard Worker            }
1289*35238bceSAndroid Build Coastguard Worker        ""
1290*35238bceSAndroid Build Coastguard Worker    end
1291*35238bceSAndroid Build Coastguard Worker
1292*35238bceSAndroid Build Coastguard Worker    case implicit_size_bool
1293*35238bceSAndroid Build Coastguard Worker        version 300 es
1294*35238bceSAndroid Build Coastguard Worker        values
1295*35238bceSAndroid Build Coastguard Worker        {
1296*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(false, true, true) ];
1297*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, true) ];
1298*35238bceSAndroid Build Coastguard Worker        }
1299*35238bceSAndroid Build Coastguard Worker
1300*35238bceSAndroid Build Coastguard Worker        both ""
1301*35238bceSAndroid Build Coastguard Worker            #version 300 es
1302*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1303*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1304*35238bceSAndroid Build Coastguard Worker
1305*35238bceSAndroid Build Coastguard Worker            void main()
1306*35238bceSAndroid Build Coastguard Worker            {
1307*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1308*35238bceSAndroid Build Coastguard Worker                bool[] x = bool[] (in0.z, in0.x, in0.y);
1309*35238bceSAndroid Build Coastguard Worker                bool[] y = x;
1310*35238bceSAndroid Build Coastguard Worker
1311*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(y[0], y[1], y[2]);
1312*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1313*35238bceSAndroid Build Coastguard Worker            }
1314*35238bceSAndroid Build Coastguard Worker        ""
1315*35238bceSAndroid Build Coastguard Worker    end
1316*35238bceSAndroid Build Coastguard Worker
1317*35238bceSAndroid Build Coastguard Worker    case implicit_size_struct
1318*35238bceSAndroid Build Coastguard Worker        version 300 es
1319*35238bceSAndroid Build Coastguard Worker        values
1320*35238bceSAndroid Build Coastguard Worker        {
1321*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1322*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(-1.0, -0.5, 2.0) ];
1323*35238bceSAndroid Build Coastguard Worker        }
1324*35238bceSAndroid Build Coastguard Worker
1325*35238bceSAndroid Build Coastguard Worker        both ""
1326*35238bceSAndroid Build Coastguard Worker            #version 300 es
1327*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1328*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1329*35238bceSAndroid Build Coastguard Worker
1330*35238bceSAndroid Build Coastguard Worker            struct test
1331*35238bceSAndroid Build Coastguard Worker            {
1332*35238bceSAndroid Build Coastguard Worker                float f;
1333*35238bceSAndroid Build Coastguard Worker                vec3 v;
1334*35238bceSAndroid Build Coastguard Worker            };
1335*35238bceSAndroid Build Coastguard Worker
1336*35238bceSAndroid Build Coastguard Worker            void main()
1337*35238bceSAndroid Build Coastguard Worker            {
1338*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1339*35238bceSAndroid Build Coastguard Worker
1340*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
1341*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
1342*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
1343*35238bceSAndroid Build Coastguard Worker
1344*35238bceSAndroid Build Coastguard Worker                test[] x = test[] (c, b, a);
1345*35238bceSAndroid Build Coastguard Worker                test[] y = x;
1346*35238bceSAndroid Build Coastguard Worker
1347*35238bceSAndroid Build Coastguard Worker                out0 = vec3(y[0].v.x, y[1].v.y, y[2].v.z);
1348*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1349*35238bceSAndroid Build Coastguard Worker            }
1350*35238bceSAndroid Build Coastguard Worker        ""
1351*35238bceSAndroid Build Coastguard Worker    end
1352*35238bceSAndroid Build Coastguard Worker
1353*35238bceSAndroid Build Coastguard Worker    case implicit_size_float_vec3
1354*35238bceSAndroid Build Coastguard Worker        version 300 es
1355*35238bceSAndroid Build Coastguard Worker        values
1356*35238bceSAndroid Build Coastguard Worker        {
1357*35238bceSAndroid Build Coastguard Worker            input vec3 in0 =    [ vec3(0.5, 1.0, 2.0) | vec3(-0.5, 11.2, -1.0) ];
1358*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(0.5, -2.0, 1.0) | vec3(-0.5, 1.0, 11.2) ];
1359*35238bceSAndroid Build Coastguard Worker        }
1360*35238bceSAndroid Build Coastguard Worker
1361*35238bceSAndroid Build Coastguard Worker        both ""
1362*35238bceSAndroid Build Coastguard Worker            #version 300 es
1363*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1364*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1365*35238bceSAndroid Build Coastguard Worker
1366*35238bceSAndroid Build Coastguard Worker            void main()
1367*35238bceSAndroid Build Coastguard Worker            {
1368*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1369*35238bceSAndroid Build Coastguard Worker                vec3[] x = vec3[] (    vec3(in0.x, in0.y, -in0.z)    ,
1370*35238bceSAndroid Build Coastguard Worker                                    vec3(in0.y, -in0.z, in0.x)    ,
1371*35238bceSAndroid Build Coastguard Worker                                    vec3(-in0.z, in0.x, in0.y)    );
1372*35238bceSAndroid Build Coastguard Worker                vec3[] y = x;
1373*35238bceSAndroid Build Coastguard Worker                out0 = vec3(y[0].x, y[1].y, y[2].z);
1374*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1375*35238bceSAndroid Build Coastguard Worker            }
1376*35238bceSAndroid Build Coastguard Worker        ""
1377*35238bceSAndroid Build Coastguard Worker    end
1378*35238bceSAndroid Build Coastguard Worker
1379*35238bceSAndroid Build Coastguard Worker    case implicit_size_int_ivec3
1380*35238bceSAndroid Build Coastguard Worker        version 300 es
1381*35238bceSAndroid Build Coastguard Worker        values
1382*35238bceSAndroid Build Coastguard Worker        {
1383*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 =    [ ivec3(0, 1, 2) | ivec3(5, 11, -1) ];
1384*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(0, -2, 1) | ivec3(5, 1, 11) ];
1385*35238bceSAndroid Build Coastguard Worker        }
1386*35238bceSAndroid Build Coastguard Worker
1387*35238bceSAndroid Build Coastguard Worker        both ""
1388*35238bceSAndroid Build Coastguard Worker            #version 300 es
1389*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1390*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1391*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1392*35238bceSAndroid Build Coastguard Worker
1393*35238bceSAndroid Build Coastguard Worker            void main()
1394*35238bceSAndroid Build Coastguard Worker            {
1395*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1396*35238bceSAndroid Build Coastguard Worker                ivec3[] x = ivec3[] (    ivec3(in0.x, in0.y, -in0.z)    ,
1397*35238bceSAndroid Build Coastguard Worker                                        ivec3(in0.y, -in0.z, in0.x)    ,
1398*35238bceSAndroid Build Coastguard Worker                                        ivec3(-in0.z, in0.x, in0.y)    );
1399*35238bceSAndroid Build Coastguard Worker                ivec3[] y = x;
1400*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(y[0].x, y[1].y, y[2].z);
1401*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1402*35238bceSAndroid Build Coastguard Worker            }
1403*35238bceSAndroid Build Coastguard Worker        ""
1404*35238bceSAndroid Build Coastguard Worker    end
1405*35238bceSAndroid Build Coastguard Worker
1406*35238bceSAndroid Build Coastguard Worker    case implicit_size_bool_bvec3
1407*35238bceSAndroid Build Coastguard Worker        version 300 es
1408*35238bceSAndroid Build Coastguard Worker        values
1409*35238bceSAndroid Build Coastguard Worker        {
1410*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 =    [ bvec3(true, false, true) ];
1411*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, true, false) ];
1412*35238bceSAndroid Build Coastguard Worker        }
1413*35238bceSAndroid Build Coastguard Worker
1414*35238bceSAndroid Build Coastguard Worker        both ""
1415*35238bceSAndroid Build Coastguard Worker            #version 300 es
1416*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1417*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1418*35238bceSAndroid Build Coastguard Worker
1419*35238bceSAndroid Build Coastguard Worker            void main()
1420*35238bceSAndroid Build Coastguard Worker            {
1421*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1422*35238bceSAndroid Build Coastguard Worker                bvec3[] x = bvec3[] (    bvec3(in0.x, in0.y, in0.z)    ,
1423*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.y, in0.z, in0.x)    ,
1424*35238bceSAndroid Build Coastguard Worker                                        bvec3(in0.z, in0.x, in0.y)    );
1425*35238bceSAndroid Build Coastguard Worker                bvec3[] y = x;
1426*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(y[0].x, y[1].y, y[2].z);
1427*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1428*35238bceSAndroid Build Coastguard Worker            }
1429*35238bceSAndroid Build Coastguard Worker        ""
1430*35238bceSAndroid Build Coastguard Worker    end
1431*35238bceSAndroid Build Coastguard Worker
1432*35238bceSAndroid Build Coastguard Worker    case implicit_size_float_mat3
1433*35238bceSAndroid Build Coastguard Worker        version 300 es
1434*35238bceSAndroid Build Coastguard Worker        values
1435*35238bceSAndroid Build Coastguard Worker        {
1436*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) | vec3(-1.5, 0.0, -2.3) ];
1437*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(0.5, -1.0, 1.0) | vec3(-1.5, 0.0, 0.0) ];
1438*35238bceSAndroid Build Coastguard Worker        }
1439*35238bceSAndroid Build Coastguard Worker
1440*35238bceSAndroid Build Coastguard Worker        both ""
1441*35238bceSAndroid Build Coastguard Worker            #version 300 es
1442*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1443*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1444*35238bceSAndroid Build Coastguard Worker
1445*35238bceSAndroid Build Coastguard Worker            void main()
1446*35238bceSAndroid Build Coastguard Worker            {
1447*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1448*35238bceSAndroid Build Coastguard Worker                mat3[] a = mat3[] (    mat3(    in0.x, in0.y, in0.z,
1449*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z,
1450*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z)    ,
1451*35238bceSAndroid Build Coastguard Worker                                    mat3(    in0.z, in0.x, -in0.y,
1452*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, -in0.y,
1453*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, -in0.y)    ,
1454*35238bceSAndroid Build Coastguard Worker                                    mat3(    -in0.z, -in0.z, in0.z,
1455*35238bceSAndroid Build Coastguard Worker                                            -in0.y, -in0.y, in0.y,
1456*35238bceSAndroid Build Coastguard Worker                                            -in0.x, -in0.x, in0.x)    );
1457*35238bceSAndroid Build Coastguard Worker
1458*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
1459*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
1460*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
1461*35238bceSAndroid Build Coastguard Worker
1462*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
1463*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
1464*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
1465*35238bceSAndroid Build Coastguard Worker
1466*35238bceSAndroid Build Coastguard Worker                out0 = vec3(ret0, ret1, ret2);
1467*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1468*35238bceSAndroid Build Coastguard Worker            }
1469*35238bceSAndroid Build Coastguard Worker        ""
1470*35238bceSAndroid Build Coastguard Worker    end
1471*35238bceSAndroid Build Coastguard Worker
1472*35238bceSAndroid Build Coastguard Worker    case implicit_size_int_mat3
1473*35238bceSAndroid Build Coastguard Worker        version 300 es
1474*35238bceSAndroid Build Coastguard Worker        values
1475*35238bceSAndroid Build Coastguard Worker        {
1476*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(0, 1, 2) | ivec3(-1, 0, -2) ];
1477*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(0, -1, 1) | ivec3(-1, 0, 0) ];
1478*35238bceSAndroid Build Coastguard Worker        }
1479*35238bceSAndroid Build Coastguard Worker
1480*35238bceSAndroid Build Coastguard Worker        both ""
1481*35238bceSAndroid Build Coastguard Worker            #version 300 es
1482*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1483*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1484*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1485*35238bceSAndroid Build Coastguard Worker
1486*35238bceSAndroid Build Coastguard Worker            void main()
1487*35238bceSAndroid Build Coastguard Worker            {
1488*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1489*35238bceSAndroid Build Coastguard Worker                mat3[] a = mat3[] (    mat3(    in0.x, in0.y, in0.z,
1490*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z,
1491*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z)    ,
1492*35238bceSAndroid Build Coastguard Worker                                    mat3(    in0.z, in0.x, -in0.y,
1493*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, -in0.y,
1494*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, -in0.y)    ,
1495*35238bceSAndroid Build Coastguard Worker                                    mat3(    -in0.z, -in0.z, in0.z,
1496*35238bceSAndroid Build Coastguard Worker                                            -in0.y, -in0.y, in0.y,
1497*35238bceSAndroid Build Coastguard Worker                                            -in0.x, -in0.x, in0.x)    );
1498*35238bceSAndroid Build Coastguard Worker
1499*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
1500*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
1501*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
1502*35238bceSAndroid Build Coastguard Worker
1503*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
1504*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
1505*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
1506*35238bceSAndroid Build Coastguard Worker
1507*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(ret0, ret1, ret2);
1508*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1509*35238bceSAndroid Build Coastguard Worker            }
1510*35238bceSAndroid Build Coastguard Worker        ""
1511*35238bceSAndroid Build Coastguard Worker    end
1512*35238bceSAndroid Build Coastguard Worker
1513*35238bceSAndroid Build Coastguard Worker    case implicit_size_bool_mat3
1514*35238bceSAndroid Build Coastguard Worker        version 300 es
1515*35238bceSAndroid Build Coastguard Worker        values
1516*35238bceSAndroid Build Coastguard Worker        {
1517*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) ];
1518*35238bceSAndroid Build Coastguard Worker            output bvec3 out0 = [ bvec3(true, false, false) ];
1519*35238bceSAndroid Build Coastguard Worker        }
1520*35238bceSAndroid Build Coastguard Worker
1521*35238bceSAndroid Build Coastguard Worker        both ""
1522*35238bceSAndroid Build Coastguard Worker            #version 300 es
1523*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1524*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1525*35238bceSAndroid Build Coastguard Worker
1526*35238bceSAndroid Build Coastguard Worker            void main()
1527*35238bceSAndroid Build Coastguard Worker            {
1528*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1529*35238bceSAndroid Build Coastguard Worker                mat3[] a = mat3[] (    mat3(    in0.x, in0.y, in0.z,
1530*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z,
1531*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.y, in0.z)    ,
1532*35238bceSAndroid Build Coastguard Worker                                    mat3(    in0.z, in0.x, in0.y,
1533*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, in0.y,
1534*35238bceSAndroid Build Coastguard Worker                                            in0.z, in0.x, in0.y)    ,
1535*35238bceSAndroid Build Coastguard Worker                                    mat3(    in0.z, in0.z, in0.z,
1536*35238bceSAndroid Build Coastguard Worker                                            in0.y, in0.y, in0.y,
1537*35238bceSAndroid Build Coastguard Worker                                            in0.x, in0.x, in0.x)    );
1538*35238bceSAndroid Build Coastguard Worker
1539*35238bceSAndroid Build Coastguard Worker                mat3 a0 = a[0];
1540*35238bceSAndroid Build Coastguard Worker                mat3 a1 = a[1];
1541*35238bceSAndroid Build Coastguard Worker                mat3 a2 = a[2];
1542*35238bceSAndroid Build Coastguard Worker
1543*35238bceSAndroid Build Coastguard Worker                float ret0 = a0[2][0];
1544*35238bceSAndroid Build Coastguard Worker                float ret1 = a1[0][2];
1545*35238bceSAndroid Build Coastguard Worker                float ret2 = a2[1][2];
1546*35238bceSAndroid Build Coastguard Worker
1547*35238bceSAndroid Build Coastguard Worker                out0 = bvec3(ret0, ret1, ret2);
1548*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1549*35238bceSAndroid Build Coastguard Worker            }
1550*35238bceSAndroid Build Coastguard Worker        ""
1551*35238bceSAndroid Build Coastguard Worker    end
1552*35238bceSAndroid Build Coastguard Worker
1553*35238bceSAndroid Build Coastguard Worker
1554*35238bceSAndroid Build Coastguard Worker    case constant_expression_array_size
1555*35238bceSAndroid Build Coastguard Worker        version 300 es
1556*35238bceSAndroid Build Coastguard Worker
1557*35238bceSAndroid Build Coastguard Worker        both ""
1558*35238bceSAndroid Build Coastguard Worker            #version 300 es
1559*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1560*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1561*35238bceSAndroid Build Coastguard Worker
1562*35238bceSAndroid Build Coastguard Worker            const int a = 4;
1563*35238bceSAndroid Build Coastguard Worker
1564*35238bceSAndroid Build Coastguard Worker            void main ()
1565*35238bceSAndroid Build Coastguard Worker            {
1566*35238bceSAndroid Build Coastguard Worker                const int b = 5;
1567*35238bceSAndroid Build Coastguard Worker                float[a] array1;
1568*35238bceSAndroid Build Coastguard Worker                float[b] array2;
1569*35238bceSAndroid Build Coastguard Worker                float[array1.length()] array3;
1570*35238bceSAndroid Build Coastguard Worker                float[a+b] array4;
1571*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1572*35238bceSAndroid Build Coastguard Worker            }
1573*35238bceSAndroid Build Coastguard Worker        ""
1574*35238bceSAndroid Build Coastguard Worker    end
1575*35238bceSAndroid Build Coastguard Worker
1576*35238bceSAndroid Build Coastguard Worker    case constant_expression_array_access
1577*35238bceSAndroid Build Coastguard Worker        version 300 es
1578*35238bceSAndroid Build Coastguard Worker        values
1579*35238bceSAndroid Build Coastguard Worker        {
1580*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1581*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ];
1582*35238bceSAndroid Build Coastguard Worker        }
1583*35238bceSAndroid Build Coastguard Worker
1584*35238bceSAndroid Build Coastguard Worker        both ""
1585*35238bceSAndroid Build Coastguard Worker            #version 300 es
1586*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1587*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1588*35238bceSAndroid Build Coastguard Worker
1589*35238bceSAndroid Build Coastguard Worker            const int a = 3;
1590*35238bceSAndroid Build Coastguard Worker
1591*35238bceSAndroid Build Coastguard Worker            void main ()
1592*35238bceSAndroid Build Coastguard Worker            {
1593*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1594*35238bceSAndroid Build Coastguard Worker                const int b = 2;
1595*35238bceSAndroid Build Coastguard Worker                float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [a];
1596*35238bceSAndroid Build Coastguard Worker                float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [b+2];
1597*35238bceSAndroid Build Coastguard Worker                float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [5];
1598*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x, y, z);
1599*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1600*35238bceSAndroid Build Coastguard Worker            }
1601*35238bceSAndroid Build Coastguard Worker        ""
1602*35238bceSAndroid Build Coastguard Worker    end
1603*35238bceSAndroid Build Coastguard Worker
1604*35238bceSAndroid Build Coastguard Worker    case dynamic_expression_array_access
1605*35238bceSAndroid Build Coastguard Worker        version 300 es
1606*35238bceSAndroid Build Coastguard Worker        values
1607*35238bceSAndroid Build Coastguard Worker        {
1608*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1609*35238bceSAndroid Build Coastguard Worker            input ivec2 in1 = ivec2(3, 2);
1610*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(-2.0, -1.0, -0.5) ];
1611*35238bceSAndroid Build Coastguard Worker        }
1612*35238bceSAndroid Build Coastguard Worker
1613*35238bceSAndroid Build Coastguard Worker        both ""
1614*35238bceSAndroid Build Coastguard Worker            #version 300 es
1615*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1616*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1617*35238bceSAndroid Build Coastguard Worker
1618*35238bceSAndroid Build Coastguard Worker            void main ()
1619*35238bceSAndroid Build Coastguard Worker            {
1620*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1621*35238bceSAndroid Build Coastguard Worker                float x = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x];
1622*35238bceSAndroid Build Coastguard Worker                float y = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.y+2];
1623*35238bceSAndroid Build Coastguard Worker                float z = float[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x) [in1.x+in1.y];
1624*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x, y, z);
1625*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1626*35238bceSAndroid Build Coastguard Worker            }
1627*35238bceSAndroid Build Coastguard Worker        ""
1628*35238bceSAndroid Build Coastguard Worker    end
1629*35238bceSAndroid Build Coastguard Worker
1630*35238bceSAndroid Build Coastguard Worker    case multiple_declarations_single_statement_explicit
1631*35238bceSAndroid Build Coastguard Worker        version 300 es
1632*35238bceSAndroid Build Coastguard Worker        values
1633*35238bceSAndroid Build Coastguard Worker        {
1634*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1635*35238bceSAndroid Build Coastguard Worker            output vec3 out0 = [ vec3(2.0, -1.0, 0.5) ];
1636*35238bceSAndroid Build Coastguard Worker        }
1637*35238bceSAndroid Build Coastguard Worker
1638*35238bceSAndroid Build Coastguard Worker        both ""
1639*35238bceSAndroid Build Coastguard Worker            #version 300 es
1640*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1641*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1642*35238bceSAndroid Build Coastguard Worker
1643*35238bceSAndroid Build Coastguard Worker            void main ()
1644*35238bceSAndroid Build Coastguard Worker            {
1645*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1646*35238bceSAndroid Build Coastguard Worker                float[] x = float[6] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x),
1647*35238bceSAndroid Build Coastguard Worker                        y = float[2] (in0.x, -in0.y);
1648*35238bceSAndroid Build Coastguard Worker                out0 = vec3(x[2], y[1], x[0]);
1649*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1650*35238bceSAndroid Build Coastguard Worker            }
1651*35238bceSAndroid Build Coastguard Worker        ""
1652*35238bceSAndroid Build Coastguard Worker    end
1653*35238bceSAndroid Build Coastguard Worker
1654*35238bceSAndroid Build Coastguard Worker    case multiple_declarations_single_statement_implicit
1655*35238bceSAndroid Build Coastguard Worker        version 300 es
1656*35238bceSAndroid Build Coastguard Worker        values
1657*35238bceSAndroid Build Coastguard Worker        {
1658*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(5, 1, 2) ];
1659*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(2, -1, 5) ];
1660*35238bceSAndroid Build Coastguard Worker        }
1661*35238bceSAndroid Build Coastguard Worker
1662*35238bceSAndroid Build Coastguard Worker        both ""
1663*35238bceSAndroid Build Coastguard Worker            #version 300 es
1664*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1665*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1666*35238bceSAndroid Build Coastguard Worker
1667*35238bceSAndroid Build Coastguard Worker            void main ()
1668*35238bceSAndroid Build Coastguard Worker            {
1669*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1670*35238bceSAndroid Build Coastguard Worker                int[] x = int[] (in0.x, in0.y, in0.z, -in0.z, -in0.y, -in0.x),
1671*35238bceSAndroid Build Coastguard Worker                      y = int[] (in0.x, -in0.y);
1672*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x[2], y[1], x[0]);
1673*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1674*35238bceSAndroid Build Coastguard Worker            }
1675*35238bceSAndroid Build Coastguard Worker        ""
1676*35238bceSAndroid Build Coastguard Worker    end
1677*35238bceSAndroid Build Coastguard Worker
1678*35238bceSAndroid Build Coastguard Workerend # declaration
1679*35238bceSAndroid Build Coastguard Worker
1680*35238bceSAndroid Build Coastguard Workergroup length "Array length method"
1681*35238bceSAndroid Build Coastguard Worker
1682*35238bceSAndroid Build Coastguard Worker    case float
1683*35238bceSAndroid Build Coastguard Worker        version 300 es
1684*35238bceSAndroid Build Coastguard Worker        values
1685*35238bceSAndroid Build Coastguard Worker        {
1686*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1687*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(3, 5, 13) ];
1688*35238bceSAndroid Build Coastguard Worker        }
1689*35238bceSAndroid Build Coastguard Worker
1690*35238bceSAndroid Build Coastguard Worker        both ""
1691*35238bceSAndroid Build Coastguard Worker            #version 300 es
1692*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1693*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1694*35238bceSAndroid Build Coastguard Worker
1695*35238bceSAndroid Build Coastguard Worker            void main()
1696*35238bceSAndroid Build Coastguard Worker            {
1697*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1698*35238bceSAndroid Build Coastguard Worker                float[] x = float[3] (in0.z, in0.x, in0.y);
1699*35238bceSAndroid Build Coastguard Worker                float[] y = float[] (in0.z, in0.x, in0.y, in0.x, in0.y);
1700*35238bceSAndroid Build Coastguard Worker                float[13] z;
1701*35238bceSAndroid Build Coastguard Worker
1702*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x.length(), y.length(), z.length());
1703*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1704*35238bceSAndroid Build Coastguard Worker            }
1705*35238bceSAndroid Build Coastguard Worker        ""
1706*35238bceSAndroid Build Coastguard Worker    end
1707*35238bceSAndroid Build Coastguard Worker
1708*35238bceSAndroid Build Coastguard Worker    case int
1709*35238bceSAndroid Build Coastguard Worker        version 300 es
1710*35238bceSAndroid Build Coastguard Worker        values
1711*35238bceSAndroid Build Coastguard Worker        {
1712*35238bceSAndroid Build Coastguard Worker            input ivec3 in0 = [ ivec3(0, 1, 2) ];
1713*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(3, 5, 13) ];
1714*35238bceSAndroid Build Coastguard Worker        }
1715*35238bceSAndroid Build Coastguard Worker
1716*35238bceSAndroid Build Coastguard Worker        both ""
1717*35238bceSAndroid Build Coastguard Worker            #version 300 es
1718*35238bceSAndroid Build Coastguard Worker            precision mediump int;
1719*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1720*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1721*35238bceSAndroid Build Coastguard Worker
1722*35238bceSAndroid Build Coastguard Worker            void main()
1723*35238bceSAndroid Build Coastguard Worker            {
1724*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1725*35238bceSAndroid Build Coastguard Worker                int[] x = int[3] (in0.z, in0.x, in0.y);
1726*35238bceSAndroid Build Coastguard Worker                int[] y = int[] (in0.z, in0.x, in0.y, in0.x, in0.y);
1727*35238bceSAndroid Build Coastguard Worker                int[13] z;
1728*35238bceSAndroid Build Coastguard Worker
1729*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x.length(), y.length(), z.length());
1730*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1731*35238bceSAndroid Build Coastguard Worker            }
1732*35238bceSAndroid Build Coastguard Worker        ""
1733*35238bceSAndroid Build Coastguard Worker    end
1734*35238bceSAndroid Build Coastguard Worker
1735*35238bceSAndroid Build Coastguard Worker    case bool
1736*35238bceSAndroid Build Coastguard Worker        version 300 es
1737*35238bceSAndroid Build Coastguard Worker        values
1738*35238bceSAndroid Build Coastguard Worker        {
1739*35238bceSAndroid Build Coastguard Worker            input bvec3 in0 = [ bvec3(true, false, true) ];
1740*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(3, 5, 13) ];
1741*35238bceSAndroid Build Coastguard Worker        }
1742*35238bceSAndroid Build Coastguard Worker
1743*35238bceSAndroid Build Coastguard Worker        both ""
1744*35238bceSAndroid Build Coastguard Worker            #version 300 es
1745*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1746*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1747*35238bceSAndroid Build Coastguard Worker
1748*35238bceSAndroid Build Coastguard Worker            void main()
1749*35238bceSAndroid Build Coastguard Worker            {
1750*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1751*35238bceSAndroid Build Coastguard Worker                bool[] x = bool[3] (in0.z, in0.x, in0.y);
1752*35238bceSAndroid Build Coastguard Worker                bool[] y = bool[] (in0.z, in0.x, in0.y, in0.x, in0.y);
1753*35238bceSAndroid Build Coastguard Worker                bool[13] z;
1754*35238bceSAndroid Build Coastguard Worker
1755*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x.length(), y.length(), z.length());
1756*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1757*35238bceSAndroid Build Coastguard Worker            }
1758*35238bceSAndroid Build Coastguard Worker        ""
1759*35238bceSAndroid Build Coastguard Worker    end
1760*35238bceSAndroid Build Coastguard Worker
1761*35238bceSAndroid Build Coastguard Worker    case struct
1762*35238bceSAndroid Build Coastguard Worker        version 300 es
1763*35238bceSAndroid Build Coastguard Worker        values
1764*35238bceSAndroid Build Coastguard Worker        {
1765*35238bceSAndroid Build Coastguard Worker            input vec3 in0 = [ vec3(0.5, 1.0, 2.0) ];
1766*35238bceSAndroid Build Coastguard Worker            output ivec3 out0 = [ ivec3(3, 5, 13) ];
1767*35238bceSAndroid Build Coastguard Worker        }
1768*35238bceSAndroid Build Coastguard Worker
1769*35238bceSAndroid Build Coastguard Worker        both ""
1770*35238bceSAndroid Build Coastguard Worker            #version 300 es
1771*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1772*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1773*35238bceSAndroid Build Coastguard Worker
1774*35238bceSAndroid Build Coastguard Worker            struct test
1775*35238bceSAndroid Build Coastguard Worker            {
1776*35238bceSAndroid Build Coastguard Worker                float f;
1777*35238bceSAndroid Build Coastguard Worker                vec3 v;
1778*35238bceSAndroid Build Coastguard Worker            };
1779*35238bceSAndroid Build Coastguard Worker
1780*35238bceSAndroid Build Coastguard Worker            void main()
1781*35238bceSAndroid Build Coastguard Worker            {
1782*35238bceSAndroid Build Coastguard Worker                ${SETUP}
1783*35238bceSAndroid Build Coastguard Worker
1784*35238bceSAndroid Build Coastguard Worker                test a = test(in0.z, vec3(in0.x, in0.y, in0.z));
1785*35238bceSAndroid Build Coastguard Worker                test b = test(in0.y, vec3(-in0.z, -in0.x, -in0.y));
1786*35238bceSAndroid Build Coastguard Worker                test c = test(in0.x, vec3(-in0.y, in0.z, -in0.x));
1787*35238bceSAndroid Build Coastguard Worker
1788*35238bceSAndroid Build Coastguard Worker                test[] x = test[3] (a, b, c);
1789*35238bceSAndroid Build Coastguard Worker                test[] y = test[] (c, a, b, b, a);
1790*35238bceSAndroid Build Coastguard Worker                test[13] z;
1791*35238bceSAndroid Build Coastguard Worker
1792*35238bceSAndroid Build Coastguard Worker                out0 = ivec3(x.length(), y.length(), z.length());
1793*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
1794*35238bceSAndroid Build Coastguard Worker            }
1795*35238bceSAndroid Build Coastguard Worker        ""
1796*35238bceSAndroid Build Coastguard Worker    end
1797*35238bceSAndroid Build Coastguard Worker
1798*35238bceSAndroid Build Coastguard Workerend # length
1799*35238bceSAndroid Build Coastguard Worker
1800*35238bceSAndroid Build Coastguard Workergroup invalid "Invalid Functions"
1801*35238bceSAndroid Build Coastguard Worker
1802*35238bceSAndroid Build Coastguard Worker    case multidimensional_array1
1803*35238bceSAndroid Build Coastguard Worker        version 300 es
1804*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1805*35238bceSAndroid Build Coastguard Worker
1806*35238bceSAndroid Build Coastguard Worker        both ""
1807*35238bceSAndroid Build Coastguard Worker            #version 300 es
1808*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1809*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1810*35238bceSAndroid Build Coastguard Worker
1811*35238bceSAndroid Build Coastguard Worker            void main ()
1812*35238bceSAndroid Build Coastguard Worker            {
1813*35238bceSAndroid Build Coastguard Worker                float a[5][3];
1814*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1815*35238bceSAndroid Build Coastguard Worker            }
1816*35238bceSAndroid Build Coastguard Worker        ""
1817*35238bceSAndroid Build Coastguard Worker    end
1818*35238bceSAndroid Build Coastguard Worker
1819*35238bceSAndroid Build Coastguard Worker    case multidimensional_array2
1820*35238bceSAndroid Build Coastguard Worker        version 300 es
1821*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1822*35238bceSAndroid Build Coastguard Worker
1823*35238bceSAndroid Build Coastguard Worker        both ""
1824*35238bceSAndroid Build Coastguard Worker            #version 300 es
1825*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1826*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1827*35238bceSAndroid Build Coastguard Worker
1828*35238bceSAndroid Build Coastguard Worker            void main ()
1829*35238bceSAndroid Build Coastguard Worker            {
1830*35238bceSAndroid Build Coastguard Worker                float[5] a[3];
1831*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1832*35238bceSAndroid Build Coastguard Worker            }
1833*35238bceSAndroid Build Coastguard Worker        ""
1834*35238bceSAndroid Build Coastguard Worker    end
1835*35238bceSAndroid Build Coastguard Worker
1836*35238bceSAndroid Build Coastguard Worker    case multidimensional_uniform_array
1837*35238bceSAndroid Build Coastguard Worker        version 300 es
1838*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1839*35238bceSAndroid Build Coastguard Worker
1840*35238bceSAndroid Build Coastguard Worker        both ""
1841*35238bceSAndroid Build Coastguard Worker            #version 300 es
1842*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1843*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1844*35238bceSAndroid Build Coastguard Worker            uniform float a[3][2];
1845*35238bceSAndroid Build Coastguard Worker
1846*35238bceSAndroid Build Coastguard Worker            void main ()
1847*35238bceSAndroid Build Coastguard Worker            {
1848*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1849*35238bceSAndroid Build Coastguard Worker            }
1850*35238bceSAndroid Build Coastguard Worker        ""
1851*35238bceSAndroid Build Coastguard Worker    end
1852*35238bceSAndroid Build Coastguard Worker
1853*35238bceSAndroid Build Coastguard Worker    case multidimensional_array_in_uniform_block
1854*35238bceSAndroid Build Coastguard Worker        version 300 es
1855*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1856*35238bceSAndroid Build Coastguard Worker
1857*35238bceSAndroid Build Coastguard Worker        both ""
1858*35238bceSAndroid Build Coastguard Worker            #version 300 es
1859*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1860*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1861*35238bceSAndroid Build Coastguard Worker            uniform MyBlock
1862*35238bceSAndroid Build Coastguard Worker            {
1863*35238bceSAndroid Build Coastguard Worker                float a[3][2];
1864*35238bceSAndroid Build Coastguard Worker            };
1865*35238bceSAndroid Build Coastguard Worker
1866*35238bceSAndroid Build Coastguard Worker            void main ()
1867*35238bceSAndroid Build Coastguard Worker            {
1868*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1869*35238bceSAndroid Build Coastguard Worker            }
1870*35238bceSAndroid Build Coastguard Worker        ""
1871*35238bceSAndroid Build Coastguard Worker    end
1872*35238bceSAndroid Build Coastguard Worker
1873*35238bceSAndroid Build Coastguard Worker    case dynamic_expression_array_size
1874*35238bceSAndroid Build Coastguard Worker        version 300 es
1875*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1876*35238bceSAndroid Build Coastguard Worker
1877*35238bceSAndroid Build Coastguard Worker        both ""
1878*35238bceSAndroid Build Coastguard Worker            #version 300 es
1879*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1880*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1881*35238bceSAndroid Build Coastguard Worker
1882*35238bceSAndroid Build Coastguard Worker            void main ()
1883*35238bceSAndroid Build Coastguard Worker            {
1884*35238bceSAndroid Build Coastguard Worker                int a = 5;
1885*35238bceSAndroid Build Coastguard Worker                float[a] array;
1886*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1887*35238bceSAndroid Build Coastguard Worker            }
1888*35238bceSAndroid Build Coastguard Worker        ""
1889*35238bceSAndroid Build Coastguard Worker    end
1890*35238bceSAndroid Build Coastguard Worker
1891*35238bceSAndroid Build Coastguard Worker    case empty_declaration_without_var_name
1892*35238bceSAndroid Build Coastguard Worker        version 300 es
1893*35238bceSAndroid Build Coastguard Worker        expect compile_or_link_fail
1894*35238bceSAndroid Build Coastguard Worker
1895*35238bceSAndroid Build Coastguard Worker        both ""
1896*35238bceSAndroid Build Coastguard Worker            #version 300 es
1897*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1898*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1899*35238bceSAndroid Build Coastguard Worker
1900*35238bceSAndroid Build Coastguard Worker            void main ()
1901*35238bceSAndroid Build Coastguard Worker            {
1902*35238bceSAndroid Build Coastguard Worker                int[];
1903*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1904*35238bceSAndroid Build Coastguard Worker            }
1905*35238bceSAndroid Build Coastguard Worker        ""
1906*35238bceSAndroid Build Coastguard Worker    end
1907*35238bceSAndroid Build Coastguard Worker
1908*35238bceSAndroid Build Coastguard Worker    case empty_declaration_with_var_name
1909*35238bceSAndroid Build Coastguard Worker        version 300 es
1910*35238bceSAndroid Build Coastguard Worker        expect compile_or_link_fail
1911*35238bceSAndroid Build Coastguard Worker
1912*35238bceSAndroid Build Coastguard Worker        both ""
1913*35238bceSAndroid Build Coastguard Worker            #version 300 es
1914*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1915*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1916*35238bceSAndroid Build Coastguard Worker
1917*35238bceSAndroid Build Coastguard Worker            void main ()
1918*35238bceSAndroid Build Coastguard Worker            {
1919*35238bceSAndroid Build Coastguard Worker                int[] a;
1920*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1921*35238bceSAndroid Build Coastguard Worker            }
1922*35238bceSAndroid Build Coastguard Worker        ""
1923*35238bceSAndroid Build Coastguard Worker    end
1924*35238bceSAndroid Build Coastguard Worker
1925*35238bceSAndroid Build Coastguard Worker    case constructor_c_style1
1926*35238bceSAndroid Build Coastguard Worker        version 300 es
1927*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1928*35238bceSAndroid Build Coastguard Worker
1929*35238bceSAndroid Build Coastguard Worker        both ""
1930*35238bceSAndroid Build Coastguard Worker            #version 300 es
1931*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1932*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1933*35238bceSAndroid Build Coastguard Worker
1934*35238bceSAndroid Build Coastguard Worker            void main ()
1935*35238bceSAndroid Build Coastguard Worker            {
1936*35238bceSAndroid Build Coastguard Worker                float a[];
1937*35238bceSAndroid Build Coastguard Worker                a = float[3] { 1.0, 2.0, 3.0 };
1938*35238bceSAndroid Build Coastguard Worker
1939*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1940*35238bceSAndroid Build Coastguard Worker            }
1941*35238bceSAndroid Build Coastguard Worker        ""
1942*35238bceSAndroid Build Coastguard Worker    end
1943*35238bceSAndroid Build Coastguard Worker
1944*35238bceSAndroid Build Coastguard Worker    case constructor_c_style2
1945*35238bceSAndroid Build Coastguard Worker        version 300 es
1946*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1947*35238bceSAndroid Build Coastguard Worker
1948*35238bceSAndroid Build Coastguard Worker        both ""
1949*35238bceSAndroid Build Coastguard Worker            #version 300 es
1950*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1951*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1952*35238bceSAndroid Build Coastguard Worker
1953*35238bceSAndroid Build Coastguard Worker            void main ()
1954*35238bceSAndroid Build Coastguard Worker            {
1955*35238bceSAndroid Build Coastguard Worker                float a[5] = { 1.0, 2.0, 3.0 };
1956*35238bceSAndroid Build Coastguard Worker
1957*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1958*35238bceSAndroid Build Coastguard Worker            }
1959*35238bceSAndroid Build Coastguard Worker        ""
1960*35238bceSAndroid Build Coastguard Worker    end
1961*35238bceSAndroid Build Coastguard Worker
1962*35238bceSAndroid Build Coastguard Worker    case constructor_c_style3
1963*35238bceSAndroid Build Coastguard Worker        version 300 es
1964*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1965*35238bceSAndroid Build Coastguard Worker
1966*35238bceSAndroid Build Coastguard Worker        both ""
1967*35238bceSAndroid Build Coastguard Worker            #version 300 es
1968*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1969*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1970*35238bceSAndroid Build Coastguard Worker
1971*35238bceSAndroid Build Coastguard Worker            void main ()
1972*35238bceSAndroid Build Coastguard Worker            {
1973*35238bceSAndroid Build Coastguard Worker                float a[] = float[3] { 1.0, 2.0, 3.0 };
1974*35238bceSAndroid Build Coastguard Worker
1975*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1976*35238bceSAndroid Build Coastguard Worker            }
1977*35238bceSAndroid Build Coastguard Worker        ""
1978*35238bceSAndroid Build Coastguard Worker    end
1979*35238bceSAndroid Build Coastguard Worker
1980*35238bceSAndroid Build Coastguard Worker    case constructor_c_style4
1981*35238bceSAndroid Build Coastguard Worker        version 300 es
1982*35238bceSAndroid Build Coastguard Worker        expect compile_fail
1983*35238bceSAndroid Build Coastguard Worker
1984*35238bceSAndroid Build Coastguard Worker        both ""
1985*35238bceSAndroid Build Coastguard Worker            #version 300 es
1986*35238bceSAndroid Build Coastguard Worker            precision mediump float;
1987*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
1988*35238bceSAndroid Build Coastguard Worker
1989*35238bceSAndroid Build Coastguard Worker            void main ()
1990*35238bceSAndroid Build Coastguard Worker            {
1991*35238bceSAndroid Build Coastguard Worker                float a[3] = { 1.0, 2.0, 3.0 };
1992*35238bceSAndroid Build Coastguard Worker
1993*35238bceSAndroid Build Coastguard Worker                ${POSITION_FRAG_COLOR} = vec4(1.0);
1994*35238bceSAndroid Build Coastguard Worker            }
1995*35238bceSAndroid Build Coastguard Worker        ""
1996*35238bceSAndroid Build Coastguard Worker    end
1997*35238bceSAndroid Build Coastguard Worker
1998*35238bceSAndroid Build Coastguard Workerend # invalid
1999*35238bceSAndroid Build Coastguard Worker
2000*35238bceSAndroid Build Coastguard Worker# https://github.com/KhronosGroup/WebGL/blob/main/sdk/tests/conformance2/glsl3/array-in-complex-expression.html
2001*35238bceSAndroid Build Coastguard Workergroup complex_expression "Arrays in complex expressions"
2002*35238bceSAndroid Build Coastguard Worker
2003*35238bceSAndroid Build Coastguard Worker    case and_short_circuits
2004*35238bceSAndroid Build Coastguard Worker        version 300 es
2005*35238bceSAndroid Build Coastguard Worker        values
2006*35238bceSAndroid Build Coastguard Worker        {
2007*35238bceSAndroid Build Coastguard Worker            output int g = -1;
2008*35238bceSAndroid Build Coastguard Worker        }
2009*35238bceSAndroid Build Coastguard Worker
2010*35238bceSAndroid Build Coastguard Worker        both ""
2011*35238bceSAndroid Build Coastguard Worker            #version 300 es
2012*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2013*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2014*35238bceSAndroid Build Coastguard Worker
2015*35238bceSAndroid Build Coastguard Worker            int[2] plus() {
2016*35238bceSAndroid Build Coastguard Worker                ++g;
2017*35238bceSAndroid Build Coastguard Worker                return int[2](g, g);
2018*35238bceSAndroid Build Coastguard Worker            }
2019*35238bceSAndroid Build Coastguard Worker
2020*35238bceSAndroid Build Coastguard Worker            bool minus() {
2021*35238bceSAndroid Build Coastguard Worker                --g;
2022*35238bceSAndroid Build Coastguard Worker                return false;
2023*35238bceSAndroid Build Coastguard Worker            }
2024*35238bceSAndroid Build Coastguard Worker
2025*35238bceSAndroid Build Coastguard Worker            void main() {
2026*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2027*35238bceSAndroid Build Coastguard Worker                g = 0;
2028*35238bceSAndroid Build Coastguard Worker                int a[2] = int[2](0, 0);
2029*35238bceSAndroid Build Coastguard Worker                // The plus() call must not be evaluated, since && short-circuits
2030*35238bceSAndroid Build Coastguard Worker                minus() && (a == plus());
2031*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2032*35238bceSAndroid Build Coastguard Worker            }
2033*35238bceSAndroid Build Coastguard Worker        ""
2034*35238bceSAndroid Build Coastguard Worker    end
2035*35238bceSAndroid Build Coastguard Worker
2036*35238bceSAndroid Build Coastguard Worker    case or_short_circuits
2037*35238bceSAndroid Build Coastguard Worker        version 300 es
2038*35238bceSAndroid Build Coastguard Worker        values
2039*35238bceSAndroid Build Coastguard Worker        {
2040*35238bceSAndroid Build Coastguard Worker            output int g = -1;
2041*35238bceSAndroid Build Coastguard Worker        }
2042*35238bceSAndroid Build Coastguard Worker
2043*35238bceSAndroid Build Coastguard Worker        both ""
2044*35238bceSAndroid Build Coastguard Worker            #version 300 es
2045*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2046*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2047*35238bceSAndroid Build Coastguard Worker
2048*35238bceSAndroid Build Coastguard Worker            int[2] plus() {
2049*35238bceSAndroid Build Coastguard Worker                ++g;
2050*35238bceSAndroid Build Coastguard Worker                return int[2](g, g);
2051*35238bceSAndroid Build Coastguard Worker            }
2052*35238bceSAndroid Build Coastguard Worker
2053*35238bceSAndroid Build Coastguard Worker            bool minus() {
2054*35238bceSAndroid Build Coastguard Worker                --g;
2055*35238bceSAndroid Build Coastguard Worker                return false;
2056*35238bceSAndroid Build Coastguard Worker            }
2057*35238bceSAndroid Build Coastguard Worker
2058*35238bceSAndroid Build Coastguard Worker            void main() {
2059*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2060*35238bceSAndroid Build Coastguard Worker                g = 0;
2061*35238bceSAndroid Build Coastguard Worker                int a[2] = int[2](0, 0);
2062*35238bceSAndroid Build Coastguard Worker                // The function call must not be evaluated, since && short-circuits
2063*35238bceSAndroid Build Coastguard Worker                minus() && (a == plus());
2064*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2065*35238bceSAndroid Build Coastguard Worker            }
2066*35238bceSAndroid Build Coastguard Worker        ""
2067*35238bceSAndroid Build Coastguard Worker    end
2068*35238bceSAndroid Build Coastguard Worker
2069*35238bceSAndroid Build Coastguard Worker    case ternary_only_evaluates_one_operand
2070*35238bceSAndroid Build Coastguard Worker        version 300 es
2071*35238bceSAndroid Build Coastguard Worker        values
2072*35238bceSAndroid Build Coastguard Worker        {
2073*35238bceSAndroid Build Coastguard Worker            output int g = 0;
2074*35238bceSAndroid Build Coastguard Worker        }
2075*35238bceSAndroid Build Coastguard Worker
2076*35238bceSAndroid Build Coastguard Worker        both ""
2077*35238bceSAndroid Build Coastguard Worker            #version 300 es
2078*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2079*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2080*35238bceSAndroid Build Coastguard Worker
2081*35238bceSAndroid Build Coastguard Worker            int[2] plus() {
2082*35238bceSAndroid Build Coastguard Worker                ++g;
2083*35238bceSAndroid Build Coastguard Worker                return int[2](g, g);
2084*35238bceSAndroid Build Coastguard Worker            }
2085*35238bceSAndroid Build Coastguard Worker
2086*35238bceSAndroid Build Coastguard Worker            void main() {
2087*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2088*35238bceSAndroid Build Coastguard Worker                g = 0;
2089*35238bceSAndroid Build Coastguard Worker                int a[2] = int[2](0, 0);
2090*35238bceSAndroid Build Coastguard Worker                // The function call must not be evaluated, since the condition is true.
2091*35238bceSAndroid Build Coastguard Worker                (g == 0) ? true : (a == plus());
2092*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2093*35238bceSAndroid Build Coastguard Worker            }
2094*35238bceSAndroid Build Coastguard Worker        ""
2095*35238bceSAndroid Build Coastguard Worker    end
2096*35238bceSAndroid Build Coastguard Worker
2097*35238bceSAndroid Build Coastguard Worker    case sequence_side_effects_affecting_compared_array_content
2098*35238bceSAndroid Build Coastguard Worker        version 300 es
2099*35238bceSAndroid Build Coastguard Worker        values
2100*35238bceSAndroid Build Coastguard Worker        {
2101*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2102*35238bceSAndroid Build Coastguard Worker        }
2103*35238bceSAndroid Build Coastguard Worker
2104*35238bceSAndroid Build Coastguard Worker        both ""
2105*35238bceSAndroid Build Coastguard Worker            #version 300 es
2106*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2107*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2108*35238bceSAndroid Build Coastguard Worker
2109*35238bceSAndroid Build Coastguard Worker            int[2] func(int param) {
2110*35238bceSAndroid Build Coastguard Worker                return int[2](param, param);
2111*35238bceSAndroid Build Coastguard Worker            }
2112*35238bceSAndroid Build Coastguard Worker
2113*35238bceSAndroid Build Coastguard Worker            void main() {
2114*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2115*35238bceSAndroid Build Coastguard Worker                int a[2];
2116*35238bceSAndroid Build Coastguard Worker                for (int i = 0; i < 2; ++i) {
2117*35238bceSAndroid Build Coastguard Worker                    a[i] = 1;
2118*35238bceSAndroid Build Coastguard Worker                }
2119*35238bceSAndroid Build Coastguard Worker                int j = 0;
2120*35238bceSAndroid Build Coastguard Worker                // Sequence operator evaluates operands from left to right (ESSL 3.00 section 5.9).
2121*35238bceSAndroid Build Coastguard Worker                // The function call that returns the array needs to be evaluated after ++j
2122*35238bceSAndroid Build Coastguard Worker                // for the expression to return the correct value (true).
2123*35238bceSAndroid Build Coastguard Worker                success = ((++j), (a == func(j)));
2124*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2125*35238bceSAndroid Build Coastguard Worker            }
2126*35238bceSAndroid Build Coastguard Worker        ""
2127*35238bceSAndroid Build Coastguard Worker    end
2128*35238bceSAndroid Build Coastguard Worker
2129*35238bceSAndroid Build Coastguard Workerend # complex_expression
2130*35238bceSAndroid Build Coastguard Worker
2131*35238bceSAndroid Build Coastguard Workergroup compare "Array comparisons"
2132*35238bceSAndroid Build Coastguard Worker
2133*35238bceSAndroid Build Coastguard Worker    case equal_lowp_int_lowp_int
2134*35238bceSAndroid Build Coastguard Worker        version 300 es
2135*35238bceSAndroid Build Coastguard Worker        values
2136*35238bceSAndroid Build Coastguard Worker        {
2137*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2138*35238bceSAndroid Build Coastguard Worker        }
2139*35238bceSAndroid Build Coastguard Worker
2140*35238bceSAndroid Build Coastguard Worker        both ""
2141*35238bceSAndroid Build Coastguard Worker            #version 300 es
2142*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2143*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2144*35238bceSAndroid Build Coastguard Worker            void main()
2145*35238bceSAndroid Build Coastguard Worker            {
2146*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2147*35238bceSAndroid Build Coastguard Worker                lowp int x[3] = int[3](1, 2, 3);
2148*35238bceSAndroid Build Coastguard Worker                lowp int y[3] = x;
2149*35238bceSAndroid Build Coastguard Worker                x = y;
2150*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2151*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2152*35238bceSAndroid Build Coastguard Worker            }
2153*35238bceSAndroid Build Coastguard Worker        ""
2154*35238bceSAndroid Build Coastguard Worker    end
2155*35238bceSAndroid Build Coastguard Worker
2156*35238bceSAndroid Build Coastguard Worker    case equal_lowp_uint_lowp_uint
2157*35238bceSAndroid Build Coastguard Worker        version 300 es
2158*35238bceSAndroid Build Coastguard Worker        values
2159*35238bceSAndroid Build Coastguard Worker        {
2160*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2161*35238bceSAndroid Build Coastguard Worker        }
2162*35238bceSAndroid Build Coastguard Worker
2163*35238bceSAndroid Build Coastguard Worker        both ""
2164*35238bceSAndroid Build Coastguard Worker            #version 300 es
2165*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2166*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2167*35238bceSAndroid Build Coastguard Worker            void main()
2168*35238bceSAndroid Build Coastguard Worker            {
2169*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2170*35238bceSAndroid Build Coastguard Worker                lowp uint x[3] = uint[3](1u, 2u, 3u);
2171*35238bceSAndroid Build Coastguard Worker                lowp uint y[3] = x;
2172*35238bceSAndroid Build Coastguard Worker                x = y;
2173*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2174*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2175*35238bceSAndroid Build Coastguard Worker            }
2176*35238bceSAndroid Build Coastguard Worker        ""
2177*35238bceSAndroid Build Coastguard Worker    end
2178*35238bceSAndroid Build Coastguard Worker
2179*35238bceSAndroid Build Coastguard Worker    case equal_lowp_float_lowp_float
2180*35238bceSAndroid Build Coastguard Worker        version 300 es
2181*35238bceSAndroid Build Coastguard Worker        values
2182*35238bceSAndroid Build Coastguard Worker        {
2183*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2184*35238bceSAndroid Build Coastguard Worker        }
2185*35238bceSAndroid Build Coastguard Worker
2186*35238bceSAndroid Build Coastguard Worker        both ""
2187*35238bceSAndroid Build Coastguard Worker            #version 300 es
2188*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2189*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2190*35238bceSAndroid Build Coastguard Worker            void main()
2191*35238bceSAndroid Build Coastguard Worker            {
2192*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2193*35238bceSAndroid Build Coastguard Worker                lowp float x[3] = float[3](1.0, 2.0, 3.0);
2194*35238bceSAndroid Build Coastguard Worker                lowp float y[3] = x;
2195*35238bceSAndroid Build Coastguard Worker                x = y;
2196*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2197*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2198*35238bceSAndroid Build Coastguard Worker            }
2199*35238bceSAndroid Build Coastguard Worker        ""
2200*35238bceSAndroid Build Coastguard Worker    end
2201*35238bceSAndroid Build Coastguard Worker
2202*35238bceSAndroid Build Coastguard Worker    case equal_lowp_vec2_lowp_vec2
2203*35238bceSAndroid Build Coastguard Worker        version 300 es
2204*35238bceSAndroid Build Coastguard Worker        values
2205*35238bceSAndroid Build Coastguard Worker        {
2206*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2207*35238bceSAndroid Build Coastguard Worker        }
2208*35238bceSAndroid Build Coastguard Worker
2209*35238bceSAndroid Build Coastguard Worker        both ""
2210*35238bceSAndroid Build Coastguard Worker            #version 300 es
2211*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2212*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2213*35238bceSAndroid Build Coastguard Worker            void main()
2214*35238bceSAndroid Build Coastguard Worker            {
2215*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2216*35238bceSAndroid Build Coastguard Worker                lowp vec2 x[3] = vec2[3](vec2(1.0, 2.0),
2217*35238bceSAndroid Build Coastguard Worker                                         vec2(3.0, 4.0),
2218*35238bceSAndroid Build Coastguard Worker                                         vec2(5.0, 6.0));
2219*35238bceSAndroid Build Coastguard Worker                lowp vec2 y[3] = x;
2220*35238bceSAndroid Build Coastguard Worker                x = y;
2221*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2222*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2223*35238bceSAndroid Build Coastguard Worker            }
2224*35238bceSAndroid Build Coastguard Worker        ""
2225*35238bceSAndroid Build Coastguard Worker    end
2226*35238bceSAndroid Build Coastguard Worker
2227*35238bceSAndroid Build Coastguard Worker    case equal_lowp_vec3_lowp_vec3
2228*35238bceSAndroid Build Coastguard Worker        version 300 es
2229*35238bceSAndroid Build Coastguard Worker        values
2230*35238bceSAndroid Build Coastguard Worker        {
2231*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2232*35238bceSAndroid Build Coastguard Worker        }
2233*35238bceSAndroid Build Coastguard Worker
2234*35238bceSAndroid Build Coastguard Worker        both ""
2235*35238bceSAndroid Build Coastguard Worker            #version 300 es
2236*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2237*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2238*35238bceSAndroid Build Coastguard Worker            void main()
2239*35238bceSAndroid Build Coastguard Worker            {
2240*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2241*35238bceSAndroid Build Coastguard Worker                lowp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
2242*35238bceSAndroid Build Coastguard Worker                                         vec3(4.0, 5.0, 6.0),
2243*35238bceSAndroid Build Coastguard Worker                                         vec3(7.0, 8.0, 9.0));
2244*35238bceSAndroid Build Coastguard Worker                lowp vec3 y[3] = x;
2245*35238bceSAndroid Build Coastguard Worker                x = y;
2246*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2247*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2248*35238bceSAndroid Build Coastguard Worker            }
2249*35238bceSAndroid Build Coastguard Worker        ""
2250*35238bceSAndroid Build Coastguard Worker    end
2251*35238bceSAndroid Build Coastguard Worker
2252*35238bceSAndroid Build Coastguard Worker    case equal_lowp_vec4_lowp_vec4
2253*35238bceSAndroid Build Coastguard Worker        version 300 es
2254*35238bceSAndroid Build Coastguard Worker        values
2255*35238bceSAndroid Build Coastguard Worker        {
2256*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2257*35238bceSAndroid Build Coastguard Worker        }
2258*35238bceSAndroid Build Coastguard Worker
2259*35238bceSAndroid Build Coastguard Worker        both ""
2260*35238bceSAndroid Build Coastguard Worker            #version 300 es
2261*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2262*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2263*35238bceSAndroid Build Coastguard Worker            void main()
2264*35238bceSAndroid Build Coastguard Worker            {
2265*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2266*35238bceSAndroid Build Coastguard Worker                lowp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
2267*35238bceSAndroid Build Coastguard Worker                                         vec4(5.0, 6.0, 7.0, 8.0),
2268*35238bceSAndroid Build Coastguard Worker                                         vec4(9.0, 10.0, 11.0, 12.0));
2269*35238bceSAndroid Build Coastguard Worker                lowp vec4 y[3] = x;
2270*35238bceSAndroid Build Coastguard Worker                x = y;
2271*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2272*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2273*35238bceSAndroid Build Coastguard Worker            }
2274*35238bceSAndroid Build Coastguard Worker        ""
2275*35238bceSAndroid Build Coastguard Worker    end
2276*35238bceSAndroid Build Coastguard Worker
2277*35238bceSAndroid Build Coastguard Worker    case equal_lowp_ivec2_lowp_ivec2
2278*35238bceSAndroid Build Coastguard Worker        version 300 es
2279*35238bceSAndroid Build Coastguard Worker        values
2280*35238bceSAndroid Build Coastguard Worker        {
2281*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2282*35238bceSAndroid Build Coastguard Worker        }
2283*35238bceSAndroid Build Coastguard Worker
2284*35238bceSAndroid Build Coastguard Worker        both ""
2285*35238bceSAndroid Build Coastguard Worker            #version 300 es
2286*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2287*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2288*35238bceSAndroid Build Coastguard Worker            void main()
2289*35238bceSAndroid Build Coastguard Worker            {
2290*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2291*35238bceSAndroid Build Coastguard Worker                lowp ivec2 x[3] = ivec2[3](ivec2(1, 2),
2292*35238bceSAndroid Build Coastguard Worker                                           ivec2(3, 4),
2293*35238bceSAndroid Build Coastguard Worker                                           ivec2(5, 6));
2294*35238bceSAndroid Build Coastguard Worker                lowp ivec2 y[3] = x;
2295*35238bceSAndroid Build Coastguard Worker                x = y;
2296*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2297*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2298*35238bceSAndroid Build Coastguard Worker            }
2299*35238bceSAndroid Build Coastguard Worker        ""
2300*35238bceSAndroid Build Coastguard Worker    end
2301*35238bceSAndroid Build Coastguard Worker
2302*35238bceSAndroid Build Coastguard Worker    case equal_lowp_ivec3_lowp_ivec3
2303*35238bceSAndroid Build Coastguard Worker        version 300 es
2304*35238bceSAndroid Build Coastguard Worker        values
2305*35238bceSAndroid Build Coastguard Worker        {
2306*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2307*35238bceSAndroid Build Coastguard Worker        }
2308*35238bceSAndroid Build Coastguard Worker
2309*35238bceSAndroid Build Coastguard Worker        both ""
2310*35238bceSAndroid Build Coastguard Worker            #version 300 es
2311*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2312*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2313*35238bceSAndroid Build Coastguard Worker            void main()
2314*35238bceSAndroid Build Coastguard Worker            {
2315*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2316*35238bceSAndroid Build Coastguard Worker                lowp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
2317*35238bceSAndroid Build Coastguard Worker                                           ivec3(4, 5, 6),
2318*35238bceSAndroid Build Coastguard Worker                                           ivec3(7, 8, 9));
2319*35238bceSAndroid Build Coastguard Worker                lowp ivec3 y[3] = x;
2320*35238bceSAndroid Build Coastguard Worker                x = y;
2321*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2322*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2323*35238bceSAndroid Build Coastguard Worker            }
2324*35238bceSAndroid Build Coastguard Worker        ""
2325*35238bceSAndroid Build Coastguard Worker    end
2326*35238bceSAndroid Build Coastguard Worker
2327*35238bceSAndroid Build Coastguard Worker    case equal_lowp_ivec4_lowp_ivec4
2328*35238bceSAndroid Build Coastguard Worker        version 300 es
2329*35238bceSAndroid Build Coastguard Worker        values
2330*35238bceSAndroid Build Coastguard Worker        {
2331*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2332*35238bceSAndroid Build Coastguard Worker        }
2333*35238bceSAndroid Build Coastguard Worker
2334*35238bceSAndroid Build Coastguard Worker        both ""
2335*35238bceSAndroid Build Coastguard Worker            #version 300 es
2336*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2337*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2338*35238bceSAndroid Build Coastguard Worker            void main()
2339*35238bceSAndroid Build Coastguard Worker            {
2340*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2341*35238bceSAndroid Build Coastguard Worker                lowp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
2342*35238bceSAndroid Build Coastguard Worker                                           ivec4(5, 6, 7, 8),
2343*35238bceSAndroid Build Coastguard Worker                                           ivec4(9, 10, 11, 12));
2344*35238bceSAndroid Build Coastguard Worker                lowp ivec4 y[3] = x;
2345*35238bceSAndroid Build Coastguard Worker                x = y;
2346*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2347*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2348*35238bceSAndroid Build Coastguard Worker            }
2349*35238bceSAndroid Build Coastguard Worker        ""
2350*35238bceSAndroid Build Coastguard Worker    end
2351*35238bceSAndroid Build Coastguard Worker
2352*35238bceSAndroid Build Coastguard Worker    case equal_lowp_uvec2_lowp_uvec2
2353*35238bceSAndroid Build Coastguard Worker        version 300 es
2354*35238bceSAndroid Build Coastguard Worker        values
2355*35238bceSAndroid Build Coastguard Worker        {
2356*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2357*35238bceSAndroid Build Coastguard Worker        }
2358*35238bceSAndroid Build Coastguard Worker
2359*35238bceSAndroid Build Coastguard Worker        both ""
2360*35238bceSAndroid Build Coastguard Worker            #version 300 es
2361*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2362*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2363*35238bceSAndroid Build Coastguard Worker            void main()
2364*35238bceSAndroid Build Coastguard Worker            {
2365*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2366*35238bceSAndroid Build Coastguard Worker                lowp uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
2367*35238bceSAndroid Build Coastguard Worker                                           uvec2(3u, 4u),
2368*35238bceSAndroid Build Coastguard Worker                                           uvec2(5u, 6u));
2369*35238bceSAndroid Build Coastguard Worker                lowp uvec2 y[3] = x;
2370*35238bceSAndroid Build Coastguard Worker                x = y;
2371*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2372*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2373*35238bceSAndroid Build Coastguard Worker            }
2374*35238bceSAndroid Build Coastguard Worker        ""
2375*35238bceSAndroid Build Coastguard Worker    end
2376*35238bceSAndroid Build Coastguard Worker
2377*35238bceSAndroid Build Coastguard Worker    case equal_lowp_uvec3_lowp_uvec3
2378*35238bceSAndroid Build Coastguard Worker        version 300 es
2379*35238bceSAndroid Build Coastguard Worker        values
2380*35238bceSAndroid Build Coastguard Worker        {
2381*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2382*35238bceSAndroid Build Coastguard Worker        }
2383*35238bceSAndroid Build Coastguard Worker
2384*35238bceSAndroid Build Coastguard Worker        both ""
2385*35238bceSAndroid Build Coastguard Worker            #version 300 es
2386*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2387*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2388*35238bceSAndroid Build Coastguard Worker            void main()
2389*35238bceSAndroid Build Coastguard Worker            {
2390*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2391*35238bceSAndroid Build Coastguard Worker                lowp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
2392*35238bceSAndroid Build Coastguard Worker                                           uvec3(4u, 5u, 6u),
2393*35238bceSAndroid Build Coastguard Worker                                           uvec3(7u, 8u, 9u));
2394*35238bceSAndroid Build Coastguard Worker                lowp uvec3 y[3] = x;
2395*35238bceSAndroid Build Coastguard Worker                x = y;
2396*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2397*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2398*35238bceSAndroid Build Coastguard Worker            }
2399*35238bceSAndroid Build Coastguard Worker        ""
2400*35238bceSAndroid Build Coastguard Worker    end
2401*35238bceSAndroid Build Coastguard Worker
2402*35238bceSAndroid Build Coastguard Worker    case equal_lowp_uvec4_lowp_uvec4
2403*35238bceSAndroid Build Coastguard Worker        version 300 es
2404*35238bceSAndroid Build Coastguard Worker        values
2405*35238bceSAndroid Build Coastguard Worker        {
2406*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2407*35238bceSAndroid Build Coastguard Worker        }
2408*35238bceSAndroid Build Coastguard Worker
2409*35238bceSAndroid Build Coastguard Worker        both ""
2410*35238bceSAndroid Build Coastguard Worker            #version 300 es
2411*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2412*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2413*35238bceSAndroid Build Coastguard Worker            void main()
2414*35238bceSAndroid Build Coastguard Worker            {
2415*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2416*35238bceSAndroid Build Coastguard Worker                lowp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
2417*35238bceSAndroid Build Coastguard Worker                                           uvec4(5u, 6u, 7u, 8u),
2418*35238bceSAndroid Build Coastguard Worker                                           uvec4(9u, 10u, 11u, 12u));
2419*35238bceSAndroid Build Coastguard Worker                lowp uvec4 y[3] = x;
2420*35238bceSAndroid Build Coastguard Worker                x = y;
2421*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2422*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2423*35238bceSAndroid Build Coastguard Worker            }
2424*35238bceSAndroid Build Coastguard Worker        ""
2425*35238bceSAndroid Build Coastguard Worker    end
2426*35238bceSAndroid Build Coastguard Worker
2427*35238bceSAndroid Build Coastguard Worker    case equal_lowp_mat2_lowp_mat2
2428*35238bceSAndroid Build Coastguard Worker        version 300 es
2429*35238bceSAndroid Build Coastguard Worker        values
2430*35238bceSAndroid Build Coastguard Worker        {
2431*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2432*35238bceSAndroid Build Coastguard Worker        }
2433*35238bceSAndroid Build Coastguard Worker
2434*35238bceSAndroid Build Coastguard Worker        both ""
2435*35238bceSAndroid Build Coastguard Worker            #version 300 es
2436*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2437*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2438*35238bceSAndroid Build Coastguard Worker            void main()
2439*35238bceSAndroid Build Coastguard Worker            {
2440*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2441*35238bceSAndroid Build Coastguard Worker                lowp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
2442*35238bceSAndroid Build Coastguard Worker                                         mat2(5.0, 6.0, 7.0, 8.0),
2443*35238bceSAndroid Build Coastguard Worker                                         mat2(9.0, 10.0, 11.0, 12.0));
2444*35238bceSAndroid Build Coastguard Worker                lowp mat2 y[3] = x;
2445*35238bceSAndroid Build Coastguard Worker                x = y;
2446*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2447*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2448*35238bceSAndroid Build Coastguard Worker            }
2449*35238bceSAndroid Build Coastguard Worker        ""
2450*35238bceSAndroid Build Coastguard Worker    end
2451*35238bceSAndroid Build Coastguard Worker
2452*35238bceSAndroid Build Coastguard Worker    case equal_lowp_mat3_lowp_mat3
2453*35238bceSAndroid Build Coastguard Worker        version 300 es
2454*35238bceSAndroid Build Coastguard Worker        values
2455*35238bceSAndroid Build Coastguard Worker        {
2456*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2457*35238bceSAndroid Build Coastguard Worker        }
2458*35238bceSAndroid Build Coastguard Worker
2459*35238bceSAndroid Build Coastguard Worker        both ""
2460*35238bceSAndroid Build Coastguard Worker            #version 300 es
2461*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2462*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2463*35238bceSAndroid Build Coastguard Worker            void main()
2464*35238bceSAndroid Build Coastguard Worker            {
2465*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2466*35238bceSAndroid Build Coastguard Worker                lowp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
2467*35238bceSAndroid Build Coastguard Worker                                         mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
2468*35238bceSAndroid Build Coastguard Worker                                         mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
2469*35238bceSAndroid Build Coastguard Worker                lowp mat3 y[3] = x;
2470*35238bceSAndroid Build Coastguard Worker                x = y;
2471*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2472*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2473*35238bceSAndroid Build Coastguard Worker            }
2474*35238bceSAndroid Build Coastguard Worker        ""
2475*35238bceSAndroid Build Coastguard Worker    end
2476*35238bceSAndroid Build Coastguard Worker
2477*35238bceSAndroid Build Coastguard Worker    case equal_lowp_mat4_lowp_mat4
2478*35238bceSAndroid Build Coastguard Worker        version 300 es
2479*35238bceSAndroid Build Coastguard Worker        values
2480*35238bceSAndroid Build Coastguard Worker        {
2481*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2482*35238bceSAndroid Build Coastguard Worker        }
2483*35238bceSAndroid Build Coastguard Worker
2484*35238bceSAndroid Build Coastguard Worker        both ""
2485*35238bceSAndroid Build Coastguard Worker            #version 300 es
2486*35238bceSAndroid Build Coastguard Worker            precision lowp float;
2487*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2488*35238bceSAndroid Build Coastguard Worker            void main()
2489*35238bceSAndroid Build Coastguard Worker            {
2490*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2491*35238bceSAndroid Build Coastguard Worker                lowp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
2492*35238bceSAndroid Build Coastguard Worker                                         mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
2493*35238bceSAndroid Build Coastguard Worker                                         mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
2494*35238bceSAndroid Build Coastguard Worker                lowp mat4 y[3] = x;
2495*35238bceSAndroid Build Coastguard Worker                x = y;
2496*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2497*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2498*35238bceSAndroid Build Coastguard Worker            }
2499*35238bceSAndroid Build Coastguard Worker        ""
2500*35238bceSAndroid Build Coastguard Worker    end
2501*35238bceSAndroid Build Coastguard Worker
2502*35238bceSAndroid Build Coastguard Worker    case equal_mediump_int_lowp_int
2503*35238bceSAndroid Build Coastguard Worker        version 300 es
2504*35238bceSAndroid Build Coastguard Worker        values
2505*35238bceSAndroid Build Coastguard Worker        {
2506*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2507*35238bceSAndroid Build Coastguard Worker        }
2508*35238bceSAndroid Build Coastguard Worker
2509*35238bceSAndroid Build Coastguard Worker        both ""
2510*35238bceSAndroid Build Coastguard Worker            #version 300 es
2511*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2512*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2513*35238bceSAndroid Build Coastguard Worker            void main()
2514*35238bceSAndroid Build Coastguard Worker            {
2515*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2516*35238bceSAndroid Build Coastguard Worker                mediump int x[3] = int[3](1, 2, 3);
2517*35238bceSAndroid Build Coastguard Worker                lowp int y[3] = x;
2518*35238bceSAndroid Build Coastguard Worker                x = y;
2519*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2520*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2521*35238bceSAndroid Build Coastguard Worker            }
2522*35238bceSAndroid Build Coastguard Worker        ""
2523*35238bceSAndroid Build Coastguard Worker    end
2524*35238bceSAndroid Build Coastguard Worker
2525*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uint_lowp_uint
2526*35238bceSAndroid Build Coastguard Worker        version 300 es
2527*35238bceSAndroid Build Coastguard Worker        values
2528*35238bceSAndroid Build Coastguard Worker        {
2529*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2530*35238bceSAndroid Build Coastguard Worker        }
2531*35238bceSAndroid Build Coastguard Worker
2532*35238bceSAndroid Build Coastguard Worker        both ""
2533*35238bceSAndroid Build Coastguard Worker            #version 300 es
2534*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2535*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2536*35238bceSAndroid Build Coastguard Worker            void main()
2537*35238bceSAndroid Build Coastguard Worker            {
2538*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2539*35238bceSAndroid Build Coastguard Worker                mediump uint x[3] = uint[3](1u, 2u, 3u);
2540*35238bceSAndroid Build Coastguard Worker                lowp uint y[3] = x;
2541*35238bceSAndroid Build Coastguard Worker                x = y;
2542*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2543*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2544*35238bceSAndroid Build Coastguard Worker            }
2545*35238bceSAndroid Build Coastguard Worker        ""
2546*35238bceSAndroid Build Coastguard Worker    end
2547*35238bceSAndroid Build Coastguard Worker
2548*35238bceSAndroid Build Coastguard Worker    case equal_mediump_float_lowp_float
2549*35238bceSAndroid Build Coastguard Worker        version 300 es
2550*35238bceSAndroid Build Coastguard Worker        values
2551*35238bceSAndroid Build Coastguard Worker        {
2552*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2553*35238bceSAndroid Build Coastguard Worker        }
2554*35238bceSAndroid Build Coastguard Worker
2555*35238bceSAndroid Build Coastguard Worker        both ""
2556*35238bceSAndroid Build Coastguard Worker            #version 300 es
2557*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2558*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2559*35238bceSAndroid Build Coastguard Worker            void main()
2560*35238bceSAndroid Build Coastguard Worker            {
2561*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2562*35238bceSAndroid Build Coastguard Worker                mediump float x[3] = float[3](1.0, 2.0, 3.0);
2563*35238bceSAndroid Build Coastguard Worker                lowp float y[3] = x;
2564*35238bceSAndroid Build Coastguard Worker                x = y;
2565*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2566*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2567*35238bceSAndroid Build Coastguard Worker            }
2568*35238bceSAndroid Build Coastguard Worker        ""
2569*35238bceSAndroid Build Coastguard Worker    end
2570*35238bceSAndroid Build Coastguard Worker
2571*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec2_lowp_vec2
2572*35238bceSAndroid Build Coastguard Worker        version 300 es
2573*35238bceSAndroid Build Coastguard Worker        values
2574*35238bceSAndroid Build Coastguard Worker        {
2575*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2576*35238bceSAndroid Build Coastguard Worker        }
2577*35238bceSAndroid Build Coastguard Worker
2578*35238bceSAndroid Build Coastguard Worker        both ""
2579*35238bceSAndroid Build Coastguard Worker            #version 300 es
2580*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2581*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2582*35238bceSAndroid Build Coastguard Worker            void main()
2583*35238bceSAndroid Build Coastguard Worker            {
2584*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2585*35238bceSAndroid Build Coastguard Worker                mediump vec2 x[3] = vec2[3](vec2(1.0, 2.0),
2586*35238bceSAndroid Build Coastguard Worker                                            vec2(3.0, 4.0),
2587*35238bceSAndroid Build Coastguard Worker                                            vec2(5.0, 6.0));
2588*35238bceSAndroid Build Coastguard Worker                lowp vec2 y[3] = x;
2589*35238bceSAndroid Build Coastguard Worker                x = y;
2590*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2591*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2592*35238bceSAndroid Build Coastguard Worker            }
2593*35238bceSAndroid Build Coastguard Worker        ""
2594*35238bceSAndroid Build Coastguard Worker    end
2595*35238bceSAndroid Build Coastguard Worker
2596*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec3_lowp_vec3
2597*35238bceSAndroid Build Coastguard Worker        version 300 es
2598*35238bceSAndroid Build Coastguard Worker        values
2599*35238bceSAndroid Build Coastguard Worker        {
2600*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2601*35238bceSAndroid Build Coastguard Worker        }
2602*35238bceSAndroid Build Coastguard Worker
2603*35238bceSAndroid Build Coastguard Worker        both ""
2604*35238bceSAndroid Build Coastguard Worker            #version 300 es
2605*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2606*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2607*35238bceSAndroid Build Coastguard Worker            void main()
2608*35238bceSAndroid Build Coastguard Worker            {
2609*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2610*35238bceSAndroid Build Coastguard Worker                mediump vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
2611*35238bceSAndroid Build Coastguard Worker                                            vec3(4.0, 5.0, 6.0),
2612*35238bceSAndroid Build Coastguard Worker                                            vec3(7.0, 8.0, 9.0));
2613*35238bceSAndroid Build Coastguard Worker                lowp vec3 y[3] = x;
2614*35238bceSAndroid Build Coastguard Worker                x = y;
2615*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2616*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2617*35238bceSAndroid Build Coastguard Worker            }
2618*35238bceSAndroid Build Coastguard Worker        ""
2619*35238bceSAndroid Build Coastguard Worker    end
2620*35238bceSAndroid Build Coastguard Worker
2621*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec4_lowp_vec4
2622*35238bceSAndroid Build Coastguard Worker        version 300 es
2623*35238bceSAndroid Build Coastguard Worker        values
2624*35238bceSAndroid Build Coastguard Worker        {
2625*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2626*35238bceSAndroid Build Coastguard Worker        }
2627*35238bceSAndroid Build Coastguard Worker
2628*35238bceSAndroid Build Coastguard Worker        both ""
2629*35238bceSAndroid Build Coastguard Worker            #version 300 es
2630*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2631*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2632*35238bceSAndroid Build Coastguard Worker            void main()
2633*35238bceSAndroid Build Coastguard Worker            {
2634*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2635*35238bceSAndroid Build Coastguard Worker                mediump vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
2636*35238bceSAndroid Build Coastguard Worker                                            vec4(5.0, 6.0, 7.0, 8.0),
2637*35238bceSAndroid Build Coastguard Worker                                            vec4(9.0, 10.0, 11.0, 12.0));
2638*35238bceSAndroid Build Coastguard Worker                lowp vec4 y[3] = x;
2639*35238bceSAndroid Build Coastguard Worker                x = y;
2640*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2641*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2642*35238bceSAndroid Build Coastguard Worker            }
2643*35238bceSAndroid Build Coastguard Worker        ""
2644*35238bceSAndroid Build Coastguard Worker    end
2645*35238bceSAndroid Build Coastguard Worker
2646*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec2_lowp_ivec2
2647*35238bceSAndroid Build Coastguard Worker        version 300 es
2648*35238bceSAndroid Build Coastguard Worker        values
2649*35238bceSAndroid Build Coastguard Worker        {
2650*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2651*35238bceSAndroid Build Coastguard Worker        }
2652*35238bceSAndroid Build Coastguard Worker
2653*35238bceSAndroid Build Coastguard Worker        both ""
2654*35238bceSAndroid Build Coastguard Worker            #version 300 es
2655*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2656*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2657*35238bceSAndroid Build Coastguard Worker            void main()
2658*35238bceSAndroid Build Coastguard Worker            {
2659*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2660*35238bceSAndroid Build Coastguard Worker                mediump ivec2 x[3] = ivec2[3](ivec2(1, 2),
2661*35238bceSAndroid Build Coastguard Worker                                              ivec2(3, 4),
2662*35238bceSAndroid Build Coastguard Worker                                              ivec2(5, 6));
2663*35238bceSAndroid Build Coastguard Worker                lowp ivec2 y[3] = x;
2664*35238bceSAndroid Build Coastguard Worker                x = y;
2665*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2666*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2667*35238bceSAndroid Build Coastguard Worker            }
2668*35238bceSAndroid Build Coastguard Worker        ""
2669*35238bceSAndroid Build Coastguard Worker    end
2670*35238bceSAndroid Build Coastguard Worker
2671*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec3_lowp_ivec3
2672*35238bceSAndroid Build Coastguard Worker        version 300 es
2673*35238bceSAndroid Build Coastguard Worker        values
2674*35238bceSAndroid Build Coastguard Worker        {
2675*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2676*35238bceSAndroid Build Coastguard Worker        }
2677*35238bceSAndroid Build Coastguard Worker
2678*35238bceSAndroid Build Coastguard Worker        both ""
2679*35238bceSAndroid Build Coastguard Worker            #version 300 es
2680*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2681*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2682*35238bceSAndroid Build Coastguard Worker            void main()
2683*35238bceSAndroid Build Coastguard Worker            {
2684*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2685*35238bceSAndroid Build Coastguard Worker                mediump ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
2686*35238bceSAndroid Build Coastguard Worker                                              ivec3(4, 5, 6),
2687*35238bceSAndroid Build Coastguard Worker                                              ivec3(7, 8, 9));
2688*35238bceSAndroid Build Coastguard Worker                lowp ivec3 y[3] = x;
2689*35238bceSAndroid Build Coastguard Worker                x = y;
2690*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2691*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2692*35238bceSAndroid Build Coastguard Worker            }
2693*35238bceSAndroid Build Coastguard Worker        ""
2694*35238bceSAndroid Build Coastguard Worker    end
2695*35238bceSAndroid Build Coastguard Worker
2696*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec4_lowp_ivec4
2697*35238bceSAndroid Build Coastguard Worker        version 300 es
2698*35238bceSAndroid Build Coastguard Worker        values
2699*35238bceSAndroid Build Coastguard Worker        {
2700*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2701*35238bceSAndroid Build Coastguard Worker        }
2702*35238bceSAndroid Build Coastguard Worker
2703*35238bceSAndroid Build Coastguard Worker        both ""
2704*35238bceSAndroid Build Coastguard Worker            #version 300 es
2705*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2706*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2707*35238bceSAndroid Build Coastguard Worker            void main()
2708*35238bceSAndroid Build Coastguard Worker            {
2709*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2710*35238bceSAndroid Build Coastguard Worker                mediump ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
2711*35238bceSAndroid Build Coastguard Worker                                              ivec4(5, 6, 7, 8),
2712*35238bceSAndroid Build Coastguard Worker                                              ivec4(9, 10, 11, 12));
2713*35238bceSAndroid Build Coastguard Worker                lowp ivec4 y[3] = x;
2714*35238bceSAndroid Build Coastguard Worker                x = y;
2715*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2716*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2717*35238bceSAndroid Build Coastguard Worker            }
2718*35238bceSAndroid Build Coastguard Worker        ""
2719*35238bceSAndroid Build Coastguard Worker    end
2720*35238bceSAndroid Build Coastguard Worker
2721*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec2_lowp_uvec2
2722*35238bceSAndroid Build Coastguard Worker        version 300 es
2723*35238bceSAndroid Build Coastguard Worker        values
2724*35238bceSAndroid Build Coastguard Worker        {
2725*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2726*35238bceSAndroid Build Coastguard Worker        }
2727*35238bceSAndroid Build Coastguard Worker
2728*35238bceSAndroid Build Coastguard Worker        both ""
2729*35238bceSAndroid Build Coastguard Worker            #version 300 es
2730*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2731*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2732*35238bceSAndroid Build Coastguard Worker            void main()
2733*35238bceSAndroid Build Coastguard Worker            {
2734*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2735*35238bceSAndroid Build Coastguard Worker                mediump uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
2736*35238bceSAndroid Build Coastguard Worker                                              uvec2(3u, 4u),
2737*35238bceSAndroid Build Coastguard Worker                                              uvec2(5u, 6u));
2738*35238bceSAndroid Build Coastguard Worker                lowp uvec2 y[3] = x;
2739*35238bceSAndroid Build Coastguard Worker                x = y;
2740*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2741*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2742*35238bceSAndroid Build Coastguard Worker            }
2743*35238bceSAndroid Build Coastguard Worker        ""
2744*35238bceSAndroid Build Coastguard Worker    end
2745*35238bceSAndroid Build Coastguard Worker
2746*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec3_lowp_uvec3
2747*35238bceSAndroid Build Coastguard Worker        version 300 es
2748*35238bceSAndroid Build Coastguard Worker        values
2749*35238bceSAndroid Build Coastguard Worker        {
2750*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2751*35238bceSAndroid Build Coastguard Worker        }
2752*35238bceSAndroid Build Coastguard Worker
2753*35238bceSAndroid Build Coastguard Worker        both ""
2754*35238bceSAndroid Build Coastguard Worker            #version 300 es
2755*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2756*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2757*35238bceSAndroid Build Coastguard Worker            void main()
2758*35238bceSAndroid Build Coastguard Worker            {
2759*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2760*35238bceSAndroid Build Coastguard Worker                mediump uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
2761*35238bceSAndroid Build Coastguard Worker                                              uvec3(4u, 5u, 6u),
2762*35238bceSAndroid Build Coastguard Worker                                              uvec3(7u, 8u, 9u));
2763*35238bceSAndroid Build Coastguard Worker                lowp uvec3 y[3] = x;
2764*35238bceSAndroid Build Coastguard Worker                x = y;
2765*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2766*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2767*35238bceSAndroid Build Coastguard Worker            }
2768*35238bceSAndroid Build Coastguard Worker        ""
2769*35238bceSAndroid Build Coastguard Worker    end
2770*35238bceSAndroid Build Coastguard Worker
2771*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec4_lowp_uvec4
2772*35238bceSAndroid Build Coastguard Worker        version 300 es
2773*35238bceSAndroid Build Coastguard Worker        values
2774*35238bceSAndroid Build Coastguard Worker        {
2775*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2776*35238bceSAndroid Build Coastguard Worker        }
2777*35238bceSAndroid Build Coastguard Worker
2778*35238bceSAndroid Build Coastguard Worker        both ""
2779*35238bceSAndroid Build Coastguard Worker            #version 300 es
2780*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2781*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2782*35238bceSAndroid Build Coastguard Worker            void main()
2783*35238bceSAndroid Build Coastguard Worker            {
2784*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2785*35238bceSAndroid Build Coastguard Worker                mediump uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
2786*35238bceSAndroid Build Coastguard Worker                                              uvec4(5u, 6u, 7u, 8u),
2787*35238bceSAndroid Build Coastguard Worker                                              uvec4(9u, 10u, 11u, 12u));
2788*35238bceSAndroid Build Coastguard Worker                lowp uvec4 y[3] = x;
2789*35238bceSAndroid Build Coastguard Worker                x = y;
2790*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2791*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2792*35238bceSAndroid Build Coastguard Worker            }
2793*35238bceSAndroid Build Coastguard Worker        ""
2794*35238bceSAndroid Build Coastguard Worker    end
2795*35238bceSAndroid Build Coastguard Worker
2796*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat2_lowp_mat2
2797*35238bceSAndroid Build Coastguard Worker        version 300 es
2798*35238bceSAndroid Build Coastguard Worker        values
2799*35238bceSAndroid Build Coastguard Worker        {
2800*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2801*35238bceSAndroid Build Coastguard Worker        }
2802*35238bceSAndroid Build Coastguard Worker
2803*35238bceSAndroid Build Coastguard Worker        both ""
2804*35238bceSAndroid Build Coastguard Worker            #version 300 es
2805*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2806*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2807*35238bceSAndroid Build Coastguard Worker            void main()
2808*35238bceSAndroid Build Coastguard Worker            {
2809*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2810*35238bceSAndroid Build Coastguard Worker                mediump mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
2811*35238bceSAndroid Build Coastguard Worker                                            mat2(5.0, 6.0, 7.0, 8.0),
2812*35238bceSAndroid Build Coastguard Worker                                            mat2(9.0, 10.0, 11.0, 12.0));
2813*35238bceSAndroid Build Coastguard Worker                lowp mat2 y[3] = x;
2814*35238bceSAndroid Build Coastguard Worker                x = y;
2815*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2816*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2817*35238bceSAndroid Build Coastguard Worker            }
2818*35238bceSAndroid Build Coastguard Worker        ""
2819*35238bceSAndroid Build Coastguard Worker    end
2820*35238bceSAndroid Build Coastguard Worker
2821*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat3_lowp_mat3
2822*35238bceSAndroid Build Coastguard Worker        version 300 es
2823*35238bceSAndroid Build Coastguard Worker        values
2824*35238bceSAndroid Build Coastguard Worker        {
2825*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2826*35238bceSAndroid Build Coastguard Worker        }
2827*35238bceSAndroid Build Coastguard Worker
2828*35238bceSAndroid Build Coastguard Worker        both ""
2829*35238bceSAndroid Build Coastguard Worker            #version 300 es
2830*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2831*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2832*35238bceSAndroid Build Coastguard Worker            void main()
2833*35238bceSAndroid Build Coastguard Worker            {
2834*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2835*35238bceSAndroid Build Coastguard Worker                mediump mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
2836*35238bceSAndroid Build Coastguard Worker                                            mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
2837*35238bceSAndroid Build Coastguard Worker                                            mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
2838*35238bceSAndroid Build Coastguard Worker                lowp mat3 y[3] = x;
2839*35238bceSAndroid Build Coastguard Worker                x = y;
2840*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2841*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2842*35238bceSAndroid Build Coastguard Worker            }
2843*35238bceSAndroid Build Coastguard Worker        ""
2844*35238bceSAndroid Build Coastguard Worker    end
2845*35238bceSAndroid Build Coastguard Worker
2846*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat4_lowp_mat4
2847*35238bceSAndroid Build Coastguard Worker        version 300 es
2848*35238bceSAndroid Build Coastguard Worker        values
2849*35238bceSAndroid Build Coastguard Worker        {
2850*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2851*35238bceSAndroid Build Coastguard Worker        }
2852*35238bceSAndroid Build Coastguard Worker
2853*35238bceSAndroid Build Coastguard Worker        both ""
2854*35238bceSAndroid Build Coastguard Worker            #version 300 es
2855*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2856*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2857*35238bceSAndroid Build Coastguard Worker            void main()
2858*35238bceSAndroid Build Coastguard Worker            {
2859*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2860*35238bceSAndroid Build Coastguard Worker                mediump mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
2861*35238bceSAndroid Build Coastguard Worker                                            mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
2862*35238bceSAndroid Build Coastguard Worker                                            mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
2863*35238bceSAndroid Build Coastguard Worker                lowp mat4 y[3] = x;
2864*35238bceSAndroid Build Coastguard Worker                x = y;
2865*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2866*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2867*35238bceSAndroid Build Coastguard Worker            }
2868*35238bceSAndroid Build Coastguard Worker        ""
2869*35238bceSAndroid Build Coastguard Worker    end
2870*35238bceSAndroid Build Coastguard Worker
2871*35238bceSAndroid Build Coastguard Worker    case equal_mediump_int_mediump_int
2872*35238bceSAndroid Build Coastguard Worker        version 300 es
2873*35238bceSAndroid Build Coastguard Worker        values
2874*35238bceSAndroid Build Coastguard Worker        {
2875*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2876*35238bceSAndroid Build Coastguard Worker        }
2877*35238bceSAndroid Build Coastguard Worker
2878*35238bceSAndroid Build Coastguard Worker        both ""
2879*35238bceSAndroid Build Coastguard Worker            #version 300 es
2880*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2881*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2882*35238bceSAndroid Build Coastguard Worker            void main()
2883*35238bceSAndroid Build Coastguard Worker            {
2884*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2885*35238bceSAndroid Build Coastguard Worker                mediump int x[3] = int[3](1, 2, 3);
2886*35238bceSAndroid Build Coastguard Worker                mediump int y[3] = x;
2887*35238bceSAndroid Build Coastguard Worker                x = y;
2888*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2889*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2890*35238bceSAndroid Build Coastguard Worker            }
2891*35238bceSAndroid Build Coastguard Worker        ""
2892*35238bceSAndroid Build Coastguard Worker    end
2893*35238bceSAndroid Build Coastguard Worker
2894*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uint_mediump_uint
2895*35238bceSAndroid Build Coastguard Worker        version 300 es
2896*35238bceSAndroid Build Coastguard Worker        values
2897*35238bceSAndroid Build Coastguard Worker        {
2898*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2899*35238bceSAndroid Build Coastguard Worker        }
2900*35238bceSAndroid Build Coastguard Worker
2901*35238bceSAndroid Build Coastguard Worker        both ""
2902*35238bceSAndroid Build Coastguard Worker            #version 300 es
2903*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2904*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2905*35238bceSAndroid Build Coastguard Worker            void main()
2906*35238bceSAndroid Build Coastguard Worker            {
2907*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2908*35238bceSAndroid Build Coastguard Worker                mediump uint x[3] = uint[3](1u, 2u, 3u);
2909*35238bceSAndroid Build Coastguard Worker                mediump uint y[3] = x;
2910*35238bceSAndroid Build Coastguard Worker                x = y;
2911*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2912*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2913*35238bceSAndroid Build Coastguard Worker            }
2914*35238bceSAndroid Build Coastguard Worker        ""
2915*35238bceSAndroid Build Coastguard Worker    end
2916*35238bceSAndroid Build Coastguard Worker
2917*35238bceSAndroid Build Coastguard Worker    case equal_mediump_float_mediump_float
2918*35238bceSAndroid Build Coastguard Worker        version 300 es
2919*35238bceSAndroid Build Coastguard Worker        values
2920*35238bceSAndroid Build Coastguard Worker        {
2921*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2922*35238bceSAndroid Build Coastguard Worker        }
2923*35238bceSAndroid Build Coastguard Worker
2924*35238bceSAndroid Build Coastguard Worker        both ""
2925*35238bceSAndroid Build Coastguard Worker            #version 300 es
2926*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2927*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2928*35238bceSAndroid Build Coastguard Worker            void main()
2929*35238bceSAndroid Build Coastguard Worker            {
2930*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2931*35238bceSAndroid Build Coastguard Worker                mediump float x[3] = float[3](1.0, 2.0, 3.0);
2932*35238bceSAndroid Build Coastguard Worker                mediump float y[3] = x;
2933*35238bceSAndroid Build Coastguard Worker                x = y;
2934*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2935*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2936*35238bceSAndroid Build Coastguard Worker            }
2937*35238bceSAndroid Build Coastguard Worker        ""
2938*35238bceSAndroid Build Coastguard Worker    end
2939*35238bceSAndroid Build Coastguard Worker
2940*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec2_mediump_vec2
2941*35238bceSAndroid Build Coastguard Worker        version 300 es
2942*35238bceSAndroid Build Coastguard Worker        values
2943*35238bceSAndroid Build Coastguard Worker        {
2944*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2945*35238bceSAndroid Build Coastguard Worker        }
2946*35238bceSAndroid Build Coastguard Worker
2947*35238bceSAndroid Build Coastguard Worker        both ""
2948*35238bceSAndroid Build Coastguard Worker            #version 300 es
2949*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2950*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2951*35238bceSAndroid Build Coastguard Worker            void main()
2952*35238bceSAndroid Build Coastguard Worker            {
2953*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2954*35238bceSAndroid Build Coastguard Worker                mediump vec2 x[3] = vec2[3](vec2(1.0, 2.0),
2955*35238bceSAndroid Build Coastguard Worker                                            vec2(3.0, 4.0),
2956*35238bceSAndroid Build Coastguard Worker                                            vec2(5.0, 6.0));
2957*35238bceSAndroid Build Coastguard Worker                mediump vec2 y[3] = x;
2958*35238bceSAndroid Build Coastguard Worker                x = y;
2959*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2960*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2961*35238bceSAndroid Build Coastguard Worker            }
2962*35238bceSAndroid Build Coastguard Worker        ""
2963*35238bceSAndroid Build Coastguard Worker    end
2964*35238bceSAndroid Build Coastguard Worker
2965*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec3_mediump_vec3
2966*35238bceSAndroid Build Coastguard Worker        version 300 es
2967*35238bceSAndroid Build Coastguard Worker        values
2968*35238bceSAndroid Build Coastguard Worker        {
2969*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2970*35238bceSAndroid Build Coastguard Worker        }
2971*35238bceSAndroid Build Coastguard Worker
2972*35238bceSAndroid Build Coastguard Worker        both ""
2973*35238bceSAndroid Build Coastguard Worker            #version 300 es
2974*35238bceSAndroid Build Coastguard Worker            precision mediump float;
2975*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
2976*35238bceSAndroid Build Coastguard Worker            void main()
2977*35238bceSAndroid Build Coastguard Worker            {
2978*35238bceSAndroid Build Coastguard Worker                ${SETUP}
2979*35238bceSAndroid Build Coastguard Worker                mediump vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
2980*35238bceSAndroid Build Coastguard Worker                                            vec3(4.0, 5.0, 6.0),
2981*35238bceSAndroid Build Coastguard Worker                                            vec3(7.0, 8.0, 9.0));
2982*35238bceSAndroid Build Coastguard Worker                mediump vec3 y[3] = x;
2983*35238bceSAndroid Build Coastguard Worker                x = y;
2984*35238bceSAndroid Build Coastguard Worker                success = (x == y);
2985*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
2986*35238bceSAndroid Build Coastguard Worker            }
2987*35238bceSAndroid Build Coastguard Worker        ""
2988*35238bceSAndroid Build Coastguard Worker    end
2989*35238bceSAndroid Build Coastguard Worker
2990*35238bceSAndroid Build Coastguard Worker    case equal_mediump_vec4_mediump_vec4
2991*35238bceSAndroid Build Coastguard Worker        version 300 es
2992*35238bceSAndroid Build Coastguard Worker        values
2993*35238bceSAndroid Build Coastguard Worker        {
2994*35238bceSAndroid Build Coastguard Worker            output bool success = true;
2995*35238bceSAndroid Build Coastguard Worker        }
2996*35238bceSAndroid Build Coastguard Worker
2997*35238bceSAndroid Build Coastguard Worker        both ""
2998*35238bceSAndroid Build Coastguard Worker            #version 300 es
2999*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3000*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3001*35238bceSAndroid Build Coastguard Worker            void main()
3002*35238bceSAndroid Build Coastguard Worker            {
3003*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3004*35238bceSAndroid Build Coastguard Worker                mediump vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
3005*35238bceSAndroid Build Coastguard Worker                                            vec4(5.0, 6.0, 7.0, 8.0),
3006*35238bceSAndroid Build Coastguard Worker                                            vec4(9.0, 10.0, 11.0, 12.0));
3007*35238bceSAndroid Build Coastguard Worker                mediump vec4 y[3] = x;
3008*35238bceSAndroid Build Coastguard Worker                x = y;
3009*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3010*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3011*35238bceSAndroid Build Coastguard Worker            }
3012*35238bceSAndroid Build Coastguard Worker        ""
3013*35238bceSAndroid Build Coastguard Worker    end
3014*35238bceSAndroid Build Coastguard Worker
3015*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec2_mediump_ivec2
3016*35238bceSAndroid Build Coastguard Worker        version 300 es
3017*35238bceSAndroid Build Coastguard Worker        values
3018*35238bceSAndroid Build Coastguard Worker        {
3019*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3020*35238bceSAndroid Build Coastguard Worker        }
3021*35238bceSAndroid Build Coastguard Worker
3022*35238bceSAndroid Build Coastguard Worker        both ""
3023*35238bceSAndroid Build Coastguard Worker            #version 300 es
3024*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3025*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3026*35238bceSAndroid Build Coastguard Worker            void main()
3027*35238bceSAndroid Build Coastguard Worker            {
3028*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3029*35238bceSAndroid Build Coastguard Worker                mediump ivec2 x[3] = ivec2[3](ivec2(1, 2),
3030*35238bceSAndroid Build Coastguard Worker                                              ivec2(3, 4),
3031*35238bceSAndroid Build Coastguard Worker                                              ivec2(5, 6));
3032*35238bceSAndroid Build Coastguard Worker                mediump ivec2 y[3] = x;
3033*35238bceSAndroid Build Coastguard Worker                x = y;
3034*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3035*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3036*35238bceSAndroid Build Coastguard Worker            }
3037*35238bceSAndroid Build Coastguard Worker        ""
3038*35238bceSAndroid Build Coastguard Worker    end
3039*35238bceSAndroid Build Coastguard Worker
3040*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec3_mediump_ivec3
3041*35238bceSAndroid Build Coastguard Worker        version 300 es
3042*35238bceSAndroid Build Coastguard Worker        values
3043*35238bceSAndroid Build Coastguard Worker        {
3044*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3045*35238bceSAndroid Build Coastguard Worker        }
3046*35238bceSAndroid Build Coastguard Worker
3047*35238bceSAndroid Build Coastguard Worker        both ""
3048*35238bceSAndroid Build Coastguard Worker            #version 300 es
3049*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3050*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3051*35238bceSAndroid Build Coastguard Worker            void main()
3052*35238bceSAndroid Build Coastguard Worker            {
3053*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3054*35238bceSAndroid Build Coastguard Worker                mediump ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
3055*35238bceSAndroid Build Coastguard Worker                                              ivec3(4, 5, 6),
3056*35238bceSAndroid Build Coastguard Worker                                              ivec3(7, 8, 9));
3057*35238bceSAndroid Build Coastguard Worker                mediump ivec3 y[3] = x;
3058*35238bceSAndroid Build Coastguard Worker                x = y;
3059*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3060*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3061*35238bceSAndroid Build Coastguard Worker            }
3062*35238bceSAndroid Build Coastguard Worker        ""
3063*35238bceSAndroid Build Coastguard Worker    end
3064*35238bceSAndroid Build Coastguard Worker
3065*35238bceSAndroid Build Coastguard Worker    case equal_mediump_ivec4_mediump_ivec4
3066*35238bceSAndroid Build Coastguard Worker        version 300 es
3067*35238bceSAndroid Build Coastguard Worker        values
3068*35238bceSAndroid Build Coastguard Worker        {
3069*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3070*35238bceSAndroid Build Coastguard Worker        }
3071*35238bceSAndroid Build Coastguard Worker
3072*35238bceSAndroid Build Coastguard Worker        both ""
3073*35238bceSAndroid Build Coastguard Worker            #version 300 es
3074*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3075*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3076*35238bceSAndroid Build Coastguard Worker            void main()
3077*35238bceSAndroid Build Coastguard Worker            {
3078*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3079*35238bceSAndroid Build Coastguard Worker                mediump ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
3080*35238bceSAndroid Build Coastguard Worker                                              ivec4(5, 6, 7, 8),
3081*35238bceSAndroid Build Coastguard Worker                                              ivec4(9, 10, 11, 12));
3082*35238bceSAndroid Build Coastguard Worker                mediump ivec4 y[3] = x;
3083*35238bceSAndroid Build Coastguard Worker                x = y;
3084*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3085*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3086*35238bceSAndroid Build Coastguard Worker            }
3087*35238bceSAndroid Build Coastguard Worker        ""
3088*35238bceSAndroid Build Coastguard Worker    end
3089*35238bceSAndroid Build Coastguard Worker
3090*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec2_mediump_uvec2
3091*35238bceSAndroid Build Coastguard Worker        version 300 es
3092*35238bceSAndroid Build Coastguard Worker        values
3093*35238bceSAndroid Build Coastguard Worker        {
3094*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3095*35238bceSAndroid Build Coastguard Worker        }
3096*35238bceSAndroid Build Coastguard Worker
3097*35238bceSAndroid Build Coastguard Worker        both ""
3098*35238bceSAndroid Build Coastguard Worker            #version 300 es
3099*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3100*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3101*35238bceSAndroid Build Coastguard Worker            void main()
3102*35238bceSAndroid Build Coastguard Worker            {
3103*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3104*35238bceSAndroid Build Coastguard Worker                mediump uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
3105*35238bceSAndroid Build Coastguard Worker                                              uvec2(3u, 4u),
3106*35238bceSAndroid Build Coastguard Worker                                              uvec2(5u, 6u));
3107*35238bceSAndroid Build Coastguard Worker                mediump uvec2 y[3] = x;
3108*35238bceSAndroid Build Coastguard Worker                x = y;
3109*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3110*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3111*35238bceSAndroid Build Coastguard Worker            }
3112*35238bceSAndroid Build Coastguard Worker        ""
3113*35238bceSAndroid Build Coastguard Worker    end
3114*35238bceSAndroid Build Coastguard Worker
3115*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec3_mediump_uvec3
3116*35238bceSAndroid Build Coastguard Worker        version 300 es
3117*35238bceSAndroid Build Coastguard Worker        values
3118*35238bceSAndroid Build Coastguard Worker        {
3119*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3120*35238bceSAndroid Build Coastguard Worker        }
3121*35238bceSAndroid Build Coastguard Worker
3122*35238bceSAndroid Build Coastguard Worker        both ""
3123*35238bceSAndroid Build Coastguard Worker            #version 300 es
3124*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3125*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3126*35238bceSAndroid Build Coastguard Worker            void main()
3127*35238bceSAndroid Build Coastguard Worker            {
3128*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3129*35238bceSAndroid Build Coastguard Worker                mediump uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
3130*35238bceSAndroid Build Coastguard Worker                                              uvec3(4u, 5u, 6u),
3131*35238bceSAndroid Build Coastguard Worker                                              uvec3(7u, 8u, 9u));
3132*35238bceSAndroid Build Coastguard Worker                mediump uvec3 y[3] = x;
3133*35238bceSAndroid Build Coastguard Worker                x = y;
3134*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3135*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3136*35238bceSAndroid Build Coastguard Worker            }
3137*35238bceSAndroid Build Coastguard Worker        ""
3138*35238bceSAndroid Build Coastguard Worker    end
3139*35238bceSAndroid Build Coastguard Worker
3140*35238bceSAndroid Build Coastguard Worker    case equal_mediump_uvec4_mediump_uvec4
3141*35238bceSAndroid Build Coastguard Worker        version 300 es
3142*35238bceSAndroid Build Coastguard Worker        values
3143*35238bceSAndroid Build Coastguard Worker        {
3144*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3145*35238bceSAndroid Build Coastguard Worker        }
3146*35238bceSAndroid Build Coastguard Worker
3147*35238bceSAndroid Build Coastguard Worker        both ""
3148*35238bceSAndroid Build Coastguard Worker            #version 300 es
3149*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3150*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3151*35238bceSAndroid Build Coastguard Worker            void main()
3152*35238bceSAndroid Build Coastguard Worker            {
3153*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3154*35238bceSAndroid Build Coastguard Worker                mediump uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
3155*35238bceSAndroid Build Coastguard Worker                                              uvec4(5u, 6u, 7u, 8u),
3156*35238bceSAndroid Build Coastguard Worker                                              uvec4(9u, 10u, 11u, 12u));
3157*35238bceSAndroid Build Coastguard Worker                mediump uvec4 y[3] = x;
3158*35238bceSAndroid Build Coastguard Worker                x = y;
3159*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3160*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3161*35238bceSAndroid Build Coastguard Worker            }
3162*35238bceSAndroid Build Coastguard Worker        ""
3163*35238bceSAndroid Build Coastguard Worker    end
3164*35238bceSAndroid Build Coastguard Worker
3165*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat2_mediump_mat2
3166*35238bceSAndroid Build Coastguard Worker        version 300 es
3167*35238bceSAndroid Build Coastguard Worker        values
3168*35238bceSAndroid Build Coastguard Worker        {
3169*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3170*35238bceSAndroid Build Coastguard Worker        }
3171*35238bceSAndroid Build Coastguard Worker
3172*35238bceSAndroid Build Coastguard Worker        both ""
3173*35238bceSAndroid Build Coastguard Worker            #version 300 es
3174*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3175*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3176*35238bceSAndroid Build Coastguard Worker            void main()
3177*35238bceSAndroid Build Coastguard Worker            {
3178*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3179*35238bceSAndroid Build Coastguard Worker                mediump mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
3180*35238bceSAndroid Build Coastguard Worker                                            mat2(5.0, 6.0, 7.0, 8.0),
3181*35238bceSAndroid Build Coastguard Worker                                            mat2(9.0, 10.0, 11.0, 12.0));
3182*35238bceSAndroid Build Coastguard Worker                mediump mat2 y[3] = x;
3183*35238bceSAndroid Build Coastguard Worker                x = y;
3184*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3185*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3186*35238bceSAndroid Build Coastguard Worker            }
3187*35238bceSAndroid Build Coastguard Worker        ""
3188*35238bceSAndroid Build Coastguard Worker    end
3189*35238bceSAndroid Build Coastguard Worker
3190*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat3_mediump_mat3
3191*35238bceSAndroid Build Coastguard Worker        version 300 es
3192*35238bceSAndroid Build Coastguard Worker        values
3193*35238bceSAndroid Build Coastguard Worker        {
3194*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3195*35238bceSAndroid Build Coastguard Worker        }
3196*35238bceSAndroid Build Coastguard Worker
3197*35238bceSAndroid Build Coastguard Worker        both ""
3198*35238bceSAndroid Build Coastguard Worker            #version 300 es
3199*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3200*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3201*35238bceSAndroid Build Coastguard Worker            void main()
3202*35238bceSAndroid Build Coastguard Worker            {
3203*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3204*35238bceSAndroid Build Coastguard Worker                mediump mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
3205*35238bceSAndroid Build Coastguard Worker                                            mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
3206*35238bceSAndroid Build Coastguard Worker                                            mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
3207*35238bceSAndroid Build Coastguard Worker                mediump mat3 y[3] = x;
3208*35238bceSAndroid Build Coastguard Worker                x = y;
3209*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3210*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3211*35238bceSAndroid Build Coastguard Worker            }
3212*35238bceSAndroid Build Coastguard Worker        ""
3213*35238bceSAndroid Build Coastguard Worker    end
3214*35238bceSAndroid Build Coastguard Worker
3215*35238bceSAndroid Build Coastguard Worker    case equal_mediump_mat4_mediump_mat4
3216*35238bceSAndroid Build Coastguard Worker        version 300 es
3217*35238bceSAndroid Build Coastguard Worker        values
3218*35238bceSAndroid Build Coastguard Worker        {
3219*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3220*35238bceSAndroid Build Coastguard Worker        }
3221*35238bceSAndroid Build Coastguard Worker
3222*35238bceSAndroid Build Coastguard Worker        both ""
3223*35238bceSAndroid Build Coastguard Worker            #version 300 es
3224*35238bceSAndroid Build Coastguard Worker            precision mediump float;
3225*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3226*35238bceSAndroid Build Coastguard Worker            void main()
3227*35238bceSAndroid Build Coastguard Worker            {
3228*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3229*35238bceSAndroid Build Coastguard Worker                mediump mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
3230*35238bceSAndroid Build Coastguard Worker                                            mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
3231*35238bceSAndroid Build Coastguard Worker                                            mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
3232*35238bceSAndroid Build Coastguard Worker                mediump mat4 y[3] = x;
3233*35238bceSAndroid Build Coastguard Worker                x = y;
3234*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3235*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3236*35238bceSAndroid Build Coastguard Worker            }
3237*35238bceSAndroid Build Coastguard Worker        ""
3238*35238bceSAndroid Build Coastguard Worker    end
3239*35238bceSAndroid Build Coastguard Worker
3240*35238bceSAndroid Build Coastguard Worker    case equal_highp_int_mediump_int
3241*35238bceSAndroid Build Coastguard Worker        version 300 es
3242*35238bceSAndroid Build Coastguard Worker        values
3243*35238bceSAndroid Build Coastguard Worker        {
3244*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3245*35238bceSAndroid Build Coastguard Worker        }
3246*35238bceSAndroid Build Coastguard Worker
3247*35238bceSAndroid Build Coastguard Worker        both ""
3248*35238bceSAndroid Build Coastguard Worker            #version 300 es
3249*35238bceSAndroid Build Coastguard Worker            precision highp float;
3250*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3251*35238bceSAndroid Build Coastguard Worker            void main()
3252*35238bceSAndroid Build Coastguard Worker            {
3253*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3254*35238bceSAndroid Build Coastguard Worker                highp int x[3] = int[3](1, 2, 3);
3255*35238bceSAndroid Build Coastguard Worker                mediump int y[3] = x;
3256*35238bceSAndroid Build Coastguard Worker                x = y;
3257*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3258*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3259*35238bceSAndroid Build Coastguard Worker            }
3260*35238bceSAndroid Build Coastguard Worker        ""
3261*35238bceSAndroid Build Coastguard Worker    end
3262*35238bceSAndroid Build Coastguard Worker
3263*35238bceSAndroid Build Coastguard Worker    case equal_highp_uint_mediump_uint
3264*35238bceSAndroid Build Coastguard Worker        version 300 es
3265*35238bceSAndroid Build Coastguard Worker        values
3266*35238bceSAndroid Build Coastguard Worker        {
3267*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3268*35238bceSAndroid Build Coastguard Worker        }
3269*35238bceSAndroid Build Coastguard Worker
3270*35238bceSAndroid Build Coastguard Worker        both ""
3271*35238bceSAndroid Build Coastguard Worker            #version 300 es
3272*35238bceSAndroid Build Coastguard Worker            precision highp float;
3273*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3274*35238bceSAndroid Build Coastguard Worker            void main()
3275*35238bceSAndroid Build Coastguard Worker            {
3276*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3277*35238bceSAndroid Build Coastguard Worker                highp uint x[3] = uint[3](1u, 2u, 3u);
3278*35238bceSAndroid Build Coastguard Worker                mediump uint y[3] = x;
3279*35238bceSAndroid Build Coastguard Worker                x = y;
3280*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3281*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3282*35238bceSAndroid Build Coastguard Worker            }
3283*35238bceSAndroid Build Coastguard Worker        ""
3284*35238bceSAndroid Build Coastguard Worker    end
3285*35238bceSAndroid Build Coastguard Worker
3286*35238bceSAndroid Build Coastguard Worker    case equal_highp_float_mediump_float
3287*35238bceSAndroid Build Coastguard Worker        version 300 es
3288*35238bceSAndroid Build Coastguard Worker        values
3289*35238bceSAndroid Build Coastguard Worker        {
3290*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3291*35238bceSAndroid Build Coastguard Worker        }
3292*35238bceSAndroid Build Coastguard Worker
3293*35238bceSAndroid Build Coastguard Worker        both ""
3294*35238bceSAndroid Build Coastguard Worker            #version 300 es
3295*35238bceSAndroid Build Coastguard Worker            precision highp float;
3296*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3297*35238bceSAndroid Build Coastguard Worker            void main()
3298*35238bceSAndroid Build Coastguard Worker            {
3299*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3300*35238bceSAndroid Build Coastguard Worker                highp float x[3] = float[3](1.0, 2.0, 3.0);
3301*35238bceSAndroid Build Coastguard Worker                mediump float y[3] = x;
3302*35238bceSAndroid Build Coastguard Worker                x = y;
3303*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3304*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3305*35238bceSAndroid Build Coastguard Worker            }
3306*35238bceSAndroid Build Coastguard Worker        ""
3307*35238bceSAndroid Build Coastguard Worker    end
3308*35238bceSAndroid Build Coastguard Worker
3309*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec2_mediump_vec2
3310*35238bceSAndroid Build Coastguard Worker        version 300 es
3311*35238bceSAndroid Build Coastguard Worker        values
3312*35238bceSAndroid Build Coastguard Worker        {
3313*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3314*35238bceSAndroid Build Coastguard Worker        }
3315*35238bceSAndroid Build Coastguard Worker
3316*35238bceSAndroid Build Coastguard Worker        both ""
3317*35238bceSAndroid Build Coastguard Worker            #version 300 es
3318*35238bceSAndroid Build Coastguard Worker            precision highp float;
3319*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3320*35238bceSAndroid Build Coastguard Worker            void main()
3321*35238bceSAndroid Build Coastguard Worker            {
3322*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3323*35238bceSAndroid Build Coastguard Worker                highp vec2 x[3] = vec2[3](vec2(1.0, 2.0),
3324*35238bceSAndroid Build Coastguard Worker                                          vec2(3.0, 4.0),
3325*35238bceSAndroid Build Coastguard Worker                                          vec2(5.0, 6.0));
3326*35238bceSAndroid Build Coastguard Worker                mediump vec2 y[3] = x;
3327*35238bceSAndroid Build Coastguard Worker                x = y;
3328*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3329*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3330*35238bceSAndroid Build Coastguard Worker            }
3331*35238bceSAndroid Build Coastguard Worker        ""
3332*35238bceSAndroid Build Coastguard Worker    end
3333*35238bceSAndroid Build Coastguard Worker
3334*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec3_mediump_vec3
3335*35238bceSAndroid Build Coastguard Worker        version 300 es
3336*35238bceSAndroid Build Coastguard Worker        values
3337*35238bceSAndroid Build Coastguard Worker        {
3338*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3339*35238bceSAndroid Build Coastguard Worker        }
3340*35238bceSAndroid Build Coastguard Worker
3341*35238bceSAndroid Build Coastguard Worker        both ""
3342*35238bceSAndroid Build Coastguard Worker            #version 300 es
3343*35238bceSAndroid Build Coastguard Worker            precision highp float;
3344*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3345*35238bceSAndroid Build Coastguard Worker            void main()
3346*35238bceSAndroid Build Coastguard Worker            {
3347*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3348*35238bceSAndroid Build Coastguard Worker                highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
3349*35238bceSAndroid Build Coastguard Worker                                          vec3(4.0, 5.0, 6.0),
3350*35238bceSAndroid Build Coastguard Worker                                          vec3(7.0, 8.0, 9.0));
3351*35238bceSAndroid Build Coastguard Worker                mediump vec3 y[3] = x;
3352*35238bceSAndroid Build Coastguard Worker                x = y;
3353*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3354*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3355*35238bceSAndroid Build Coastguard Worker            }
3356*35238bceSAndroid Build Coastguard Worker        ""
3357*35238bceSAndroid Build Coastguard Worker    end
3358*35238bceSAndroid Build Coastguard Worker
3359*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec4_mediump_vec4
3360*35238bceSAndroid Build Coastguard Worker        version 300 es
3361*35238bceSAndroid Build Coastguard Worker        values
3362*35238bceSAndroid Build Coastguard Worker        {
3363*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3364*35238bceSAndroid Build Coastguard Worker        }
3365*35238bceSAndroid Build Coastguard Worker
3366*35238bceSAndroid Build Coastguard Worker        both ""
3367*35238bceSAndroid Build Coastguard Worker            #version 300 es
3368*35238bceSAndroid Build Coastguard Worker            precision highp float;
3369*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3370*35238bceSAndroid Build Coastguard Worker            void main()
3371*35238bceSAndroid Build Coastguard Worker            {
3372*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3373*35238bceSAndroid Build Coastguard Worker                highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
3374*35238bceSAndroid Build Coastguard Worker                                          vec4(5.0, 6.0, 7.0, 8.0),
3375*35238bceSAndroid Build Coastguard Worker                                          vec4(9.0, 10.0, 11.0, 12.0));
3376*35238bceSAndroid Build Coastguard Worker                mediump vec4 y[3] = x;
3377*35238bceSAndroid Build Coastguard Worker                x = y;
3378*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3379*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3380*35238bceSAndroid Build Coastguard Worker            }
3381*35238bceSAndroid Build Coastguard Worker        ""
3382*35238bceSAndroid Build Coastguard Worker    end
3383*35238bceSAndroid Build Coastguard Worker
3384*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec2_mediump_ivec2
3385*35238bceSAndroid Build Coastguard Worker        version 300 es
3386*35238bceSAndroid Build Coastguard Worker        values
3387*35238bceSAndroid Build Coastguard Worker        {
3388*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3389*35238bceSAndroid Build Coastguard Worker        }
3390*35238bceSAndroid Build Coastguard Worker
3391*35238bceSAndroid Build Coastguard Worker        both ""
3392*35238bceSAndroid Build Coastguard Worker            #version 300 es
3393*35238bceSAndroid Build Coastguard Worker            precision highp float;
3394*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3395*35238bceSAndroid Build Coastguard Worker            void main()
3396*35238bceSAndroid Build Coastguard Worker            {
3397*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3398*35238bceSAndroid Build Coastguard Worker                highp ivec2 x[3] = ivec2[3](ivec2(1, 2),
3399*35238bceSAndroid Build Coastguard Worker                                            ivec2(3, 4),
3400*35238bceSAndroid Build Coastguard Worker                                            ivec2(5, 6));
3401*35238bceSAndroid Build Coastguard Worker                mediump ivec2 y[3] = x;
3402*35238bceSAndroid Build Coastguard Worker                x = y;
3403*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3404*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3405*35238bceSAndroid Build Coastguard Worker            }
3406*35238bceSAndroid Build Coastguard Worker        ""
3407*35238bceSAndroid Build Coastguard Worker    end
3408*35238bceSAndroid Build Coastguard Worker
3409*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec3_mediump_ivec3
3410*35238bceSAndroid Build Coastguard Worker        version 300 es
3411*35238bceSAndroid Build Coastguard Worker        values
3412*35238bceSAndroid Build Coastguard Worker        {
3413*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3414*35238bceSAndroid Build Coastguard Worker        }
3415*35238bceSAndroid Build Coastguard Worker
3416*35238bceSAndroid Build Coastguard Worker        both ""
3417*35238bceSAndroid Build Coastguard Worker            #version 300 es
3418*35238bceSAndroid Build Coastguard Worker            precision highp float;
3419*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3420*35238bceSAndroid Build Coastguard Worker            void main()
3421*35238bceSAndroid Build Coastguard Worker            {
3422*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3423*35238bceSAndroid Build Coastguard Worker                highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
3424*35238bceSAndroid Build Coastguard Worker                                            ivec3(4, 5, 6),
3425*35238bceSAndroid Build Coastguard Worker                                            ivec3(7, 8, 9));
3426*35238bceSAndroid Build Coastguard Worker                mediump ivec3 y[3] = x;
3427*35238bceSAndroid Build Coastguard Worker                x = y;
3428*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3429*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3430*35238bceSAndroid Build Coastguard Worker            }
3431*35238bceSAndroid Build Coastguard Worker        ""
3432*35238bceSAndroid Build Coastguard Worker    end
3433*35238bceSAndroid Build Coastguard Worker
3434*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec4_mediump_ivec4
3435*35238bceSAndroid Build Coastguard Worker        version 300 es
3436*35238bceSAndroid Build Coastguard Worker        values
3437*35238bceSAndroid Build Coastguard Worker        {
3438*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3439*35238bceSAndroid Build Coastguard Worker        }
3440*35238bceSAndroid Build Coastguard Worker
3441*35238bceSAndroid Build Coastguard Worker        both ""
3442*35238bceSAndroid Build Coastguard Worker            #version 300 es
3443*35238bceSAndroid Build Coastguard Worker            precision highp float;
3444*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3445*35238bceSAndroid Build Coastguard Worker            void main()
3446*35238bceSAndroid Build Coastguard Worker            {
3447*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3448*35238bceSAndroid Build Coastguard Worker                highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
3449*35238bceSAndroid Build Coastguard Worker                                            ivec4(5, 6, 7, 8),
3450*35238bceSAndroid Build Coastguard Worker                                            ivec4(9, 10, 11, 12));
3451*35238bceSAndroid Build Coastguard Worker                mediump ivec4 y[3] = x;
3452*35238bceSAndroid Build Coastguard Worker                x = y;
3453*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3454*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3455*35238bceSAndroid Build Coastguard Worker            }
3456*35238bceSAndroid Build Coastguard Worker        ""
3457*35238bceSAndroid Build Coastguard Worker    end
3458*35238bceSAndroid Build Coastguard Worker
3459*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec2_mediump_uvec2
3460*35238bceSAndroid Build Coastguard Worker        version 300 es
3461*35238bceSAndroid Build Coastguard Worker        values
3462*35238bceSAndroid Build Coastguard Worker        {
3463*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3464*35238bceSAndroid Build Coastguard Worker        }
3465*35238bceSAndroid Build Coastguard Worker
3466*35238bceSAndroid Build Coastguard Worker        both ""
3467*35238bceSAndroid Build Coastguard Worker            #version 300 es
3468*35238bceSAndroid Build Coastguard Worker            precision highp float;
3469*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3470*35238bceSAndroid Build Coastguard Worker            void main()
3471*35238bceSAndroid Build Coastguard Worker            {
3472*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3473*35238bceSAndroid Build Coastguard Worker                highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
3474*35238bceSAndroid Build Coastguard Worker                                            uvec2(3u, 4u),
3475*35238bceSAndroid Build Coastguard Worker                                            uvec2(5u, 6u));
3476*35238bceSAndroid Build Coastguard Worker                mediump uvec2 y[3] = x;
3477*35238bceSAndroid Build Coastguard Worker                x = y;
3478*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3479*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3480*35238bceSAndroid Build Coastguard Worker            }
3481*35238bceSAndroid Build Coastguard Worker        ""
3482*35238bceSAndroid Build Coastguard Worker    end
3483*35238bceSAndroid Build Coastguard Worker
3484*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec3_mediump_uvec3
3485*35238bceSAndroid Build Coastguard Worker        version 300 es
3486*35238bceSAndroid Build Coastguard Worker        values
3487*35238bceSAndroid Build Coastguard Worker        {
3488*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3489*35238bceSAndroid Build Coastguard Worker        }
3490*35238bceSAndroid Build Coastguard Worker
3491*35238bceSAndroid Build Coastguard Worker        both ""
3492*35238bceSAndroid Build Coastguard Worker            #version 300 es
3493*35238bceSAndroid Build Coastguard Worker            precision highp float;
3494*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3495*35238bceSAndroid Build Coastguard Worker            void main()
3496*35238bceSAndroid Build Coastguard Worker            {
3497*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3498*35238bceSAndroid Build Coastguard Worker                highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
3499*35238bceSAndroid Build Coastguard Worker                                            uvec3(4u, 5u, 6u),
3500*35238bceSAndroid Build Coastguard Worker                                            uvec3(7u, 8u, 9u));
3501*35238bceSAndroid Build Coastguard Worker                mediump uvec3 y[3] = x;
3502*35238bceSAndroid Build Coastguard Worker                x = y;
3503*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3504*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3505*35238bceSAndroid Build Coastguard Worker            }
3506*35238bceSAndroid Build Coastguard Worker        ""
3507*35238bceSAndroid Build Coastguard Worker    end
3508*35238bceSAndroid Build Coastguard Worker
3509*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec4_mediump_uvec4
3510*35238bceSAndroid Build Coastguard Worker        version 300 es
3511*35238bceSAndroid Build Coastguard Worker        values
3512*35238bceSAndroid Build Coastguard Worker        {
3513*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3514*35238bceSAndroid Build Coastguard Worker        }
3515*35238bceSAndroid Build Coastguard Worker
3516*35238bceSAndroid Build Coastguard Worker        both ""
3517*35238bceSAndroid Build Coastguard Worker            #version 300 es
3518*35238bceSAndroid Build Coastguard Worker            precision highp float;
3519*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3520*35238bceSAndroid Build Coastguard Worker            void main()
3521*35238bceSAndroid Build Coastguard Worker            {
3522*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3523*35238bceSAndroid Build Coastguard Worker                highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
3524*35238bceSAndroid Build Coastguard Worker                                            uvec4(5u, 6u, 7u, 8u),
3525*35238bceSAndroid Build Coastguard Worker                                            uvec4(9u, 10u, 11u, 12u));
3526*35238bceSAndroid Build Coastguard Worker                mediump uvec4 y[3] = x;
3527*35238bceSAndroid Build Coastguard Worker                x = y;
3528*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3529*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3530*35238bceSAndroid Build Coastguard Worker            }
3531*35238bceSAndroid Build Coastguard Worker        ""
3532*35238bceSAndroid Build Coastguard Worker    end
3533*35238bceSAndroid Build Coastguard Worker
3534*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat2_mediump_mat2
3535*35238bceSAndroid Build Coastguard Worker        version 300 es
3536*35238bceSAndroid Build Coastguard Worker        values
3537*35238bceSAndroid Build Coastguard Worker        {
3538*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3539*35238bceSAndroid Build Coastguard Worker        }
3540*35238bceSAndroid Build Coastguard Worker
3541*35238bceSAndroid Build Coastguard Worker        both ""
3542*35238bceSAndroid Build Coastguard Worker            #version 300 es
3543*35238bceSAndroid Build Coastguard Worker            precision highp float;
3544*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3545*35238bceSAndroid Build Coastguard Worker            void main()
3546*35238bceSAndroid Build Coastguard Worker            {
3547*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3548*35238bceSAndroid Build Coastguard Worker                highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
3549*35238bceSAndroid Build Coastguard Worker                                          mat2(5.0, 6.0, 7.0, 8.0),
3550*35238bceSAndroid Build Coastguard Worker                                          mat2(9.0, 10.0, 11.0, 12.0));
3551*35238bceSAndroid Build Coastguard Worker                mediump mat2 y[3] = x;
3552*35238bceSAndroid Build Coastguard Worker                x = y;
3553*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3554*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3555*35238bceSAndroid Build Coastguard Worker            }
3556*35238bceSAndroid Build Coastguard Worker        ""
3557*35238bceSAndroid Build Coastguard Worker    end
3558*35238bceSAndroid Build Coastguard Worker
3559*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat3_mediump_mat3
3560*35238bceSAndroid Build Coastguard Worker        version 300 es
3561*35238bceSAndroid Build Coastguard Worker        values
3562*35238bceSAndroid Build Coastguard Worker        {
3563*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3564*35238bceSAndroid Build Coastguard Worker        }
3565*35238bceSAndroid Build Coastguard Worker
3566*35238bceSAndroid Build Coastguard Worker        both ""
3567*35238bceSAndroid Build Coastguard Worker            #version 300 es
3568*35238bceSAndroid Build Coastguard Worker            precision highp float;
3569*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3570*35238bceSAndroid Build Coastguard Worker            void main()
3571*35238bceSAndroid Build Coastguard Worker            {
3572*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3573*35238bceSAndroid Build Coastguard Worker                highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
3574*35238bceSAndroid Build Coastguard Worker                                          mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
3575*35238bceSAndroid Build Coastguard Worker                                          mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
3576*35238bceSAndroid Build Coastguard Worker                mediump mat3 y[3] = x;
3577*35238bceSAndroid Build Coastguard Worker                x = y;
3578*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3579*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3580*35238bceSAndroid Build Coastguard Worker            }
3581*35238bceSAndroid Build Coastguard Worker        ""
3582*35238bceSAndroid Build Coastguard Worker    end
3583*35238bceSAndroid Build Coastguard Worker
3584*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat4_mediump_mat4
3585*35238bceSAndroid Build Coastguard Worker        version 300 es
3586*35238bceSAndroid Build Coastguard Worker        values
3587*35238bceSAndroid Build Coastguard Worker        {
3588*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3589*35238bceSAndroid Build Coastguard Worker        }
3590*35238bceSAndroid Build Coastguard Worker
3591*35238bceSAndroid Build Coastguard Worker        both ""
3592*35238bceSAndroid Build Coastguard Worker            #version 300 es
3593*35238bceSAndroid Build Coastguard Worker            precision highp float;
3594*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3595*35238bceSAndroid Build Coastguard Worker            void main()
3596*35238bceSAndroid Build Coastguard Worker            {
3597*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3598*35238bceSAndroid Build Coastguard Worker                highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
3599*35238bceSAndroid Build Coastguard Worker                                          mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
3600*35238bceSAndroid Build Coastguard Worker                                          mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
3601*35238bceSAndroid Build Coastguard Worker                mediump mat4 y[3] = x;
3602*35238bceSAndroid Build Coastguard Worker                x = y;
3603*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3604*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3605*35238bceSAndroid Build Coastguard Worker            }
3606*35238bceSAndroid Build Coastguard Worker        ""
3607*35238bceSAndroid Build Coastguard Worker    end
3608*35238bceSAndroid Build Coastguard Worker
3609*35238bceSAndroid Build Coastguard Worker    case equal_highp_int_lowp_int
3610*35238bceSAndroid Build Coastguard Worker        version 300 es
3611*35238bceSAndroid Build Coastguard Worker        values
3612*35238bceSAndroid Build Coastguard Worker        {
3613*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3614*35238bceSAndroid Build Coastguard Worker        }
3615*35238bceSAndroid Build Coastguard Worker
3616*35238bceSAndroid Build Coastguard Worker        both ""
3617*35238bceSAndroid Build Coastguard Worker            #version 300 es
3618*35238bceSAndroid Build Coastguard Worker            precision highp float;
3619*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3620*35238bceSAndroid Build Coastguard Worker            void main()
3621*35238bceSAndroid Build Coastguard Worker            {
3622*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3623*35238bceSAndroid Build Coastguard Worker                highp int x[3] = int[3](1, 2, 3);
3624*35238bceSAndroid Build Coastguard Worker                lowp int y[3] = x;
3625*35238bceSAndroid Build Coastguard Worker                x = y;
3626*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3627*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3628*35238bceSAndroid Build Coastguard Worker            }
3629*35238bceSAndroid Build Coastguard Worker        ""
3630*35238bceSAndroid Build Coastguard Worker    end
3631*35238bceSAndroid Build Coastguard Worker
3632*35238bceSAndroid Build Coastguard Worker    case equal_highp_uint_lowp_uint
3633*35238bceSAndroid Build Coastguard Worker        version 300 es
3634*35238bceSAndroid Build Coastguard Worker        values
3635*35238bceSAndroid Build Coastguard Worker        {
3636*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3637*35238bceSAndroid Build Coastguard Worker        }
3638*35238bceSAndroid Build Coastguard Worker
3639*35238bceSAndroid Build Coastguard Worker        both ""
3640*35238bceSAndroid Build Coastguard Worker            #version 300 es
3641*35238bceSAndroid Build Coastguard Worker            precision highp float;
3642*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3643*35238bceSAndroid Build Coastguard Worker            void main()
3644*35238bceSAndroid Build Coastguard Worker            {
3645*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3646*35238bceSAndroid Build Coastguard Worker                highp uint x[3] = uint[3](1u, 2u, 3u);
3647*35238bceSAndroid Build Coastguard Worker                lowp uint y[3] = x;
3648*35238bceSAndroid Build Coastguard Worker                x = y;
3649*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3650*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3651*35238bceSAndroid Build Coastguard Worker            }
3652*35238bceSAndroid Build Coastguard Worker        ""
3653*35238bceSAndroid Build Coastguard Worker    end
3654*35238bceSAndroid Build Coastguard Worker
3655*35238bceSAndroid Build Coastguard Worker    case equal_highp_float_lowp_float
3656*35238bceSAndroid Build Coastguard Worker        version 300 es
3657*35238bceSAndroid Build Coastguard Worker        values
3658*35238bceSAndroid Build Coastguard Worker        {
3659*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3660*35238bceSAndroid Build Coastguard Worker        }
3661*35238bceSAndroid Build Coastguard Worker
3662*35238bceSAndroid Build Coastguard Worker        both ""
3663*35238bceSAndroid Build Coastguard Worker            #version 300 es
3664*35238bceSAndroid Build Coastguard Worker            precision highp float;
3665*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3666*35238bceSAndroid Build Coastguard Worker            void main()
3667*35238bceSAndroid Build Coastguard Worker            {
3668*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3669*35238bceSAndroid Build Coastguard Worker                highp float x[3] = float[3](1.0, 2.0, 3.0);
3670*35238bceSAndroid Build Coastguard Worker                lowp float y[3] = x;
3671*35238bceSAndroid Build Coastguard Worker                x = y;
3672*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3673*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3674*35238bceSAndroid Build Coastguard Worker            }
3675*35238bceSAndroid Build Coastguard Worker        ""
3676*35238bceSAndroid Build Coastguard Worker    end
3677*35238bceSAndroid Build Coastguard Worker
3678*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec2_lowp_vec2
3679*35238bceSAndroid Build Coastguard Worker        version 300 es
3680*35238bceSAndroid Build Coastguard Worker        values
3681*35238bceSAndroid Build Coastguard Worker        {
3682*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3683*35238bceSAndroid Build Coastguard Worker        }
3684*35238bceSAndroid Build Coastguard Worker
3685*35238bceSAndroid Build Coastguard Worker        both ""
3686*35238bceSAndroid Build Coastguard Worker            #version 300 es
3687*35238bceSAndroid Build Coastguard Worker            precision highp float;
3688*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3689*35238bceSAndroid Build Coastguard Worker            void main()
3690*35238bceSAndroid Build Coastguard Worker            {
3691*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3692*35238bceSAndroid Build Coastguard Worker                highp vec2 x[3] = vec2[3](vec2(1.0, 2.0),
3693*35238bceSAndroid Build Coastguard Worker                                          vec2(3.0, 4.0),
3694*35238bceSAndroid Build Coastguard Worker                                          vec2(5.0, 6.0));
3695*35238bceSAndroid Build Coastguard Worker                lowp vec2 y[3] = x;
3696*35238bceSAndroid Build Coastguard Worker                x = y;
3697*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3698*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3699*35238bceSAndroid Build Coastguard Worker            }
3700*35238bceSAndroid Build Coastguard Worker        ""
3701*35238bceSAndroid Build Coastguard Worker    end
3702*35238bceSAndroid Build Coastguard Worker
3703*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec3_lowp_vec3
3704*35238bceSAndroid Build Coastguard Worker        version 300 es
3705*35238bceSAndroid Build Coastguard Worker        values
3706*35238bceSAndroid Build Coastguard Worker        {
3707*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3708*35238bceSAndroid Build Coastguard Worker        }
3709*35238bceSAndroid Build Coastguard Worker
3710*35238bceSAndroid Build Coastguard Worker        both ""
3711*35238bceSAndroid Build Coastguard Worker            #version 300 es
3712*35238bceSAndroid Build Coastguard Worker            precision highp float;
3713*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3714*35238bceSAndroid Build Coastguard Worker            void main()
3715*35238bceSAndroid Build Coastguard Worker            {
3716*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3717*35238bceSAndroid Build Coastguard Worker                highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
3718*35238bceSAndroid Build Coastguard Worker                                          vec3(4.0, 5.0, 6.0),
3719*35238bceSAndroid Build Coastguard Worker                                          vec3(7.0, 8.0, 9.0));
3720*35238bceSAndroid Build Coastguard Worker                lowp vec3 y[3] = x;
3721*35238bceSAndroid Build Coastguard Worker                x = y;
3722*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3723*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3724*35238bceSAndroid Build Coastguard Worker            }
3725*35238bceSAndroid Build Coastguard Worker        ""
3726*35238bceSAndroid Build Coastguard Worker    end
3727*35238bceSAndroid Build Coastguard Worker
3728*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec4_lowp_vec4
3729*35238bceSAndroid Build Coastguard Worker        version 300 es
3730*35238bceSAndroid Build Coastguard Worker        values
3731*35238bceSAndroid Build Coastguard Worker        {
3732*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3733*35238bceSAndroid Build Coastguard Worker        }
3734*35238bceSAndroid Build Coastguard Worker
3735*35238bceSAndroid Build Coastguard Worker        both ""
3736*35238bceSAndroid Build Coastguard Worker            #version 300 es
3737*35238bceSAndroid Build Coastguard Worker            precision highp float;
3738*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3739*35238bceSAndroid Build Coastguard Worker            void main()
3740*35238bceSAndroid Build Coastguard Worker            {
3741*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3742*35238bceSAndroid Build Coastguard Worker                highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
3743*35238bceSAndroid Build Coastguard Worker                                          vec4(5.0, 6.0, 7.0, 8.0),
3744*35238bceSAndroid Build Coastguard Worker                                          vec4(9.0, 10.0, 11.0, 12.0));
3745*35238bceSAndroid Build Coastguard Worker                lowp vec4 y[3] = x;
3746*35238bceSAndroid Build Coastguard Worker                x = y;
3747*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3748*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3749*35238bceSAndroid Build Coastguard Worker            }
3750*35238bceSAndroid Build Coastguard Worker        ""
3751*35238bceSAndroid Build Coastguard Worker    end
3752*35238bceSAndroid Build Coastguard Worker
3753*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec2_lowp_ivec2
3754*35238bceSAndroid Build Coastguard Worker        version 300 es
3755*35238bceSAndroid Build Coastguard Worker        values
3756*35238bceSAndroid Build Coastguard Worker        {
3757*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3758*35238bceSAndroid Build Coastguard Worker        }
3759*35238bceSAndroid Build Coastguard Worker
3760*35238bceSAndroid Build Coastguard Worker        both ""
3761*35238bceSAndroid Build Coastguard Worker            #version 300 es
3762*35238bceSAndroid Build Coastguard Worker            precision highp float;
3763*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3764*35238bceSAndroid Build Coastguard Worker            void main()
3765*35238bceSAndroid Build Coastguard Worker            {
3766*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3767*35238bceSAndroid Build Coastguard Worker                highp ivec2 x[3] = ivec2[3](ivec2(1, 2),
3768*35238bceSAndroid Build Coastguard Worker                                            ivec2(3, 4),
3769*35238bceSAndroid Build Coastguard Worker                                            ivec2(5, 6));
3770*35238bceSAndroid Build Coastguard Worker                lowp ivec2 y[3] = x;
3771*35238bceSAndroid Build Coastguard Worker                x = y;
3772*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3773*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3774*35238bceSAndroid Build Coastguard Worker            }
3775*35238bceSAndroid Build Coastguard Worker        ""
3776*35238bceSAndroid Build Coastguard Worker    end
3777*35238bceSAndroid Build Coastguard Worker
3778*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec3_lowp_ivec3
3779*35238bceSAndroid Build Coastguard Worker        version 300 es
3780*35238bceSAndroid Build Coastguard Worker        values
3781*35238bceSAndroid Build Coastguard Worker        {
3782*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3783*35238bceSAndroid Build Coastguard Worker        }
3784*35238bceSAndroid Build Coastguard Worker
3785*35238bceSAndroid Build Coastguard Worker        both ""
3786*35238bceSAndroid Build Coastguard Worker            #version 300 es
3787*35238bceSAndroid Build Coastguard Worker            precision highp float;
3788*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3789*35238bceSAndroid Build Coastguard Worker            void main()
3790*35238bceSAndroid Build Coastguard Worker            {
3791*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3792*35238bceSAndroid Build Coastguard Worker                highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
3793*35238bceSAndroid Build Coastguard Worker                                            ivec3(4, 5, 6),
3794*35238bceSAndroid Build Coastguard Worker                                            ivec3(7, 8, 9));
3795*35238bceSAndroid Build Coastguard Worker                lowp ivec3 y[3] = x;
3796*35238bceSAndroid Build Coastguard Worker                x = y;
3797*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3798*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3799*35238bceSAndroid Build Coastguard Worker            }
3800*35238bceSAndroid Build Coastguard Worker        ""
3801*35238bceSAndroid Build Coastguard Worker    end
3802*35238bceSAndroid Build Coastguard Worker
3803*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec4_lowp_ivec4
3804*35238bceSAndroid Build Coastguard Worker        version 300 es
3805*35238bceSAndroid Build Coastguard Worker        values
3806*35238bceSAndroid Build Coastguard Worker        {
3807*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3808*35238bceSAndroid Build Coastguard Worker        }
3809*35238bceSAndroid Build Coastguard Worker
3810*35238bceSAndroid Build Coastguard Worker        both ""
3811*35238bceSAndroid Build Coastguard Worker            #version 300 es
3812*35238bceSAndroid Build Coastguard Worker            precision highp float;
3813*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3814*35238bceSAndroid Build Coastguard Worker            void main()
3815*35238bceSAndroid Build Coastguard Worker            {
3816*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3817*35238bceSAndroid Build Coastguard Worker                highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
3818*35238bceSAndroid Build Coastguard Worker                                            ivec4(5, 6, 7, 8),
3819*35238bceSAndroid Build Coastguard Worker                                            ivec4(9, 10, 11, 12));
3820*35238bceSAndroid Build Coastguard Worker                lowp ivec4 y[3] = x;
3821*35238bceSAndroid Build Coastguard Worker                x = y;
3822*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3823*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3824*35238bceSAndroid Build Coastguard Worker            }
3825*35238bceSAndroid Build Coastguard Worker        ""
3826*35238bceSAndroid Build Coastguard Worker    end
3827*35238bceSAndroid Build Coastguard Worker
3828*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec2_lowp_uvec2
3829*35238bceSAndroid Build Coastguard Worker        version 300 es
3830*35238bceSAndroid Build Coastguard Worker        values
3831*35238bceSAndroid Build Coastguard Worker        {
3832*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3833*35238bceSAndroid Build Coastguard Worker        }
3834*35238bceSAndroid Build Coastguard Worker
3835*35238bceSAndroid Build Coastguard Worker        both ""
3836*35238bceSAndroid Build Coastguard Worker            #version 300 es
3837*35238bceSAndroid Build Coastguard Worker            precision highp float;
3838*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3839*35238bceSAndroid Build Coastguard Worker            void main()
3840*35238bceSAndroid Build Coastguard Worker            {
3841*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3842*35238bceSAndroid Build Coastguard Worker                highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
3843*35238bceSAndroid Build Coastguard Worker                                            uvec2(3u, 4u),
3844*35238bceSAndroid Build Coastguard Worker                                            uvec2(5u, 6u));
3845*35238bceSAndroid Build Coastguard Worker                lowp uvec2 y[3] = x;
3846*35238bceSAndroid Build Coastguard Worker                x = y;
3847*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3848*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3849*35238bceSAndroid Build Coastguard Worker            }
3850*35238bceSAndroid Build Coastguard Worker        ""
3851*35238bceSAndroid Build Coastguard Worker    end
3852*35238bceSAndroid Build Coastguard Worker
3853*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec3_lowp_uvec3
3854*35238bceSAndroid Build Coastguard Worker        version 300 es
3855*35238bceSAndroid Build Coastguard Worker        values
3856*35238bceSAndroid Build Coastguard Worker        {
3857*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3858*35238bceSAndroid Build Coastguard Worker        }
3859*35238bceSAndroid Build Coastguard Worker
3860*35238bceSAndroid Build Coastguard Worker        both ""
3861*35238bceSAndroid Build Coastguard Worker            #version 300 es
3862*35238bceSAndroid Build Coastguard Worker            precision highp float;
3863*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3864*35238bceSAndroid Build Coastguard Worker            void main()
3865*35238bceSAndroid Build Coastguard Worker            {
3866*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3867*35238bceSAndroid Build Coastguard Worker                highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
3868*35238bceSAndroid Build Coastguard Worker                                            uvec3(4u, 5u, 6u),
3869*35238bceSAndroid Build Coastguard Worker                                            uvec3(7u, 8u, 9u));
3870*35238bceSAndroid Build Coastguard Worker                lowp uvec3 y[3] = x;
3871*35238bceSAndroid Build Coastguard Worker                x = y;
3872*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3873*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3874*35238bceSAndroid Build Coastguard Worker            }
3875*35238bceSAndroid Build Coastguard Worker        ""
3876*35238bceSAndroid Build Coastguard Worker    end
3877*35238bceSAndroid Build Coastguard Worker
3878*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec4_lowp_uvec4
3879*35238bceSAndroid Build Coastguard Worker        version 300 es
3880*35238bceSAndroid Build Coastguard Worker        values
3881*35238bceSAndroid Build Coastguard Worker        {
3882*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3883*35238bceSAndroid Build Coastguard Worker        }
3884*35238bceSAndroid Build Coastguard Worker
3885*35238bceSAndroid Build Coastguard Worker        both ""
3886*35238bceSAndroid Build Coastguard Worker            #version 300 es
3887*35238bceSAndroid Build Coastguard Worker            precision highp float;
3888*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3889*35238bceSAndroid Build Coastguard Worker            void main()
3890*35238bceSAndroid Build Coastguard Worker            {
3891*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3892*35238bceSAndroid Build Coastguard Worker                highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
3893*35238bceSAndroid Build Coastguard Worker                                            uvec4(5u, 6u, 7u, 8u),
3894*35238bceSAndroid Build Coastguard Worker                                            uvec4(9u, 10u, 11u, 12u));
3895*35238bceSAndroid Build Coastguard Worker                lowp uvec4 y[3] = x;
3896*35238bceSAndroid Build Coastguard Worker                x = y;
3897*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3898*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3899*35238bceSAndroid Build Coastguard Worker            }
3900*35238bceSAndroid Build Coastguard Worker        ""
3901*35238bceSAndroid Build Coastguard Worker    end
3902*35238bceSAndroid Build Coastguard Worker
3903*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat2_lowp_mat2
3904*35238bceSAndroid Build Coastguard Worker        version 300 es
3905*35238bceSAndroid Build Coastguard Worker        values
3906*35238bceSAndroid Build Coastguard Worker        {
3907*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3908*35238bceSAndroid Build Coastguard Worker        }
3909*35238bceSAndroid Build Coastguard Worker
3910*35238bceSAndroid Build Coastguard Worker        both ""
3911*35238bceSAndroid Build Coastguard Worker            #version 300 es
3912*35238bceSAndroid Build Coastguard Worker            precision highp float;
3913*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3914*35238bceSAndroid Build Coastguard Worker            void main()
3915*35238bceSAndroid Build Coastguard Worker            {
3916*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3917*35238bceSAndroid Build Coastguard Worker                highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
3918*35238bceSAndroid Build Coastguard Worker                                          mat2(5.0, 6.0, 7.0, 8.0),
3919*35238bceSAndroid Build Coastguard Worker                                          mat2(9.0, 10.0, 11.0, 12.0));
3920*35238bceSAndroid Build Coastguard Worker                lowp mat2 y[3] = x;
3921*35238bceSAndroid Build Coastguard Worker                x = y;
3922*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3923*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3924*35238bceSAndroid Build Coastguard Worker            }
3925*35238bceSAndroid Build Coastguard Worker        ""
3926*35238bceSAndroid Build Coastguard Worker    end
3927*35238bceSAndroid Build Coastguard Worker
3928*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat3_lowp_mat3
3929*35238bceSAndroid Build Coastguard Worker        version 300 es
3930*35238bceSAndroid Build Coastguard Worker        values
3931*35238bceSAndroid Build Coastguard Worker        {
3932*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3933*35238bceSAndroid Build Coastguard Worker        }
3934*35238bceSAndroid Build Coastguard Worker
3935*35238bceSAndroid Build Coastguard Worker        both ""
3936*35238bceSAndroid Build Coastguard Worker            #version 300 es
3937*35238bceSAndroid Build Coastguard Worker            precision highp float;
3938*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3939*35238bceSAndroid Build Coastguard Worker            void main()
3940*35238bceSAndroid Build Coastguard Worker            {
3941*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3942*35238bceSAndroid Build Coastguard Worker                highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
3943*35238bceSAndroid Build Coastguard Worker                                          mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
3944*35238bceSAndroid Build Coastguard Worker                                          mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
3945*35238bceSAndroid Build Coastguard Worker                lowp mat3 y[3] = x;
3946*35238bceSAndroid Build Coastguard Worker                x = y;
3947*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3948*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3949*35238bceSAndroid Build Coastguard Worker            }
3950*35238bceSAndroid Build Coastguard Worker        ""
3951*35238bceSAndroid Build Coastguard Worker    end
3952*35238bceSAndroid Build Coastguard Worker
3953*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat4_lowp_mat4
3954*35238bceSAndroid Build Coastguard Worker        version 300 es
3955*35238bceSAndroid Build Coastguard Worker        values
3956*35238bceSAndroid Build Coastguard Worker        {
3957*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3958*35238bceSAndroid Build Coastguard Worker        }
3959*35238bceSAndroid Build Coastguard Worker
3960*35238bceSAndroid Build Coastguard Worker        both ""
3961*35238bceSAndroid Build Coastguard Worker            #version 300 es
3962*35238bceSAndroid Build Coastguard Worker            precision highp float;
3963*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3964*35238bceSAndroid Build Coastguard Worker            void main()
3965*35238bceSAndroid Build Coastguard Worker            {
3966*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3967*35238bceSAndroid Build Coastguard Worker                highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
3968*35238bceSAndroid Build Coastguard Worker                                          mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
3969*35238bceSAndroid Build Coastguard Worker                                          mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
3970*35238bceSAndroid Build Coastguard Worker                lowp mat4 y[3] = x;
3971*35238bceSAndroid Build Coastguard Worker                x = y;
3972*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3973*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3974*35238bceSAndroid Build Coastguard Worker            }
3975*35238bceSAndroid Build Coastguard Worker        ""
3976*35238bceSAndroid Build Coastguard Worker    end
3977*35238bceSAndroid Build Coastguard Worker
3978*35238bceSAndroid Build Coastguard Worker    case equal_highp_int_highp_int
3979*35238bceSAndroid Build Coastguard Worker        version 300 es
3980*35238bceSAndroid Build Coastguard Worker        values
3981*35238bceSAndroid Build Coastguard Worker        {
3982*35238bceSAndroid Build Coastguard Worker            output bool success = true;
3983*35238bceSAndroid Build Coastguard Worker        }
3984*35238bceSAndroid Build Coastguard Worker
3985*35238bceSAndroid Build Coastguard Worker        both ""
3986*35238bceSAndroid Build Coastguard Worker            #version 300 es
3987*35238bceSAndroid Build Coastguard Worker            precision highp float;
3988*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
3989*35238bceSAndroid Build Coastguard Worker            void main()
3990*35238bceSAndroid Build Coastguard Worker            {
3991*35238bceSAndroid Build Coastguard Worker                ${SETUP}
3992*35238bceSAndroid Build Coastguard Worker                highp int x[3] = int[3](1, 2, 3);
3993*35238bceSAndroid Build Coastguard Worker                highp int y[3] = x;
3994*35238bceSAndroid Build Coastguard Worker                x = y;
3995*35238bceSAndroid Build Coastguard Worker                success = (x == y);
3996*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
3997*35238bceSAndroid Build Coastguard Worker            }
3998*35238bceSAndroid Build Coastguard Worker        ""
3999*35238bceSAndroid Build Coastguard Worker    end
4000*35238bceSAndroid Build Coastguard Worker
4001*35238bceSAndroid Build Coastguard Worker    case equal_highp_uint_highp_uint
4002*35238bceSAndroid Build Coastguard Worker        version 300 es
4003*35238bceSAndroid Build Coastguard Worker        values
4004*35238bceSAndroid Build Coastguard Worker        {
4005*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4006*35238bceSAndroid Build Coastguard Worker        }
4007*35238bceSAndroid Build Coastguard Worker
4008*35238bceSAndroid Build Coastguard Worker        both ""
4009*35238bceSAndroid Build Coastguard Worker            #version 300 es
4010*35238bceSAndroid Build Coastguard Worker            precision highp float;
4011*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4012*35238bceSAndroid Build Coastguard Worker            void main()
4013*35238bceSAndroid Build Coastguard Worker            {
4014*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4015*35238bceSAndroid Build Coastguard Worker                highp uint x[3] = uint[3](1u, 2u, 3u);
4016*35238bceSAndroid Build Coastguard Worker                highp uint y[3] = x;
4017*35238bceSAndroid Build Coastguard Worker                x = y;
4018*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4019*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4020*35238bceSAndroid Build Coastguard Worker            }
4021*35238bceSAndroid Build Coastguard Worker        ""
4022*35238bceSAndroid Build Coastguard Worker    end
4023*35238bceSAndroid Build Coastguard Worker
4024*35238bceSAndroid Build Coastguard Worker    case equal_highp_float_highp_float
4025*35238bceSAndroid Build Coastguard Worker        version 300 es
4026*35238bceSAndroid Build Coastguard Worker        values
4027*35238bceSAndroid Build Coastguard Worker        {
4028*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4029*35238bceSAndroid Build Coastguard Worker        }
4030*35238bceSAndroid Build Coastguard Worker
4031*35238bceSAndroid Build Coastguard Worker        both ""
4032*35238bceSAndroid Build Coastguard Worker            #version 300 es
4033*35238bceSAndroid Build Coastguard Worker            precision highp float;
4034*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4035*35238bceSAndroid Build Coastguard Worker            void main()
4036*35238bceSAndroid Build Coastguard Worker            {
4037*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4038*35238bceSAndroid Build Coastguard Worker                highp float x[3] = float[3](1.0, 2.0, 3.0);
4039*35238bceSAndroid Build Coastguard Worker                highp float y[3] = x;
4040*35238bceSAndroid Build Coastguard Worker                x = y;
4041*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4042*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4043*35238bceSAndroid Build Coastguard Worker            }
4044*35238bceSAndroid Build Coastguard Worker        ""
4045*35238bceSAndroid Build Coastguard Worker    end
4046*35238bceSAndroid Build Coastguard Worker
4047*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec2_highp_vec2
4048*35238bceSAndroid Build Coastguard Worker        version 300 es
4049*35238bceSAndroid Build Coastguard Worker        values
4050*35238bceSAndroid Build Coastguard Worker        {
4051*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4052*35238bceSAndroid Build Coastguard Worker        }
4053*35238bceSAndroid Build Coastguard Worker
4054*35238bceSAndroid Build Coastguard Worker        both ""
4055*35238bceSAndroid Build Coastguard Worker            #version 300 es
4056*35238bceSAndroid Build Coastguard Worker            precision highp float;
4057*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4058*35238bceSAndroid Build Coastguard Worker            void main()
4059*35238bceSAndroid Build Coastguard Worker            {
4060*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4061*35238bceSAndroid Build Coastguard Worker                highp vec2 x[3] = vec2[3](vec2(1.0, 2.0),
4062*35238bceSAndroid Build Coastguard Worker                                          vec2(3.0, 4.0),
4063*35238bceSAndroid Build Coastguard Worker                                          vec2(5.0, 6.0));
4064*35238bceSAndroid Build Coastguard Worker                highp vec2 y[3] = x;
4065*35238bceSAndroid Build Coastguard Worker                x = y;
4066*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4067*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4068*35238bceSAndroid Build Coastguard Worker            }
4069*35238bceSAndroid Build Coastguard Worker        ""
4070*35238bceSAndroid Build Coastguard Worker    end
4071*35238bceSAndroid Build Coastguard Worker
4072*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec3_highp_vec3
4073*35238bceSAndroid Build Coastguard Worker        version 300 es
4074*35238bceSAndroid Build Coastguard Worker        values
4075*35238bceSAndroid Build Coastguard Worker        {
4076*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4077*35238bceSAndroid Build Coastguard Worker        }
4078*35238bceSAndroid Build Coastguard Worker
4079*35238bceSAndroid Build Coastguard Worker        both ""
4080*35238bceSAndroid Build Coastguard Worker            #version 300 es
4081*35238bceSAndroid Build Coastguard Worker            precision highp float;
4082*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4083*35238bceSAndroid Build Coastguard Worker            void main()
4084*35238bceSAndroid Build Coastguard Worker            {
4085*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4086*35238bceSAndroid Build Coastguard Worker                highp vec3 x[3] = vec3[3](vec3(1.0, 2.0, 3.0),
4087*35238bceSAndroid Build Coastguard Worker                                          vec3(4.0, 5.0, 6.0),
4088*35238bceSAndroid Build Coastguard Worker                                          vec3(7.0, 8.0, 9.0));
4089*35238bceSAndroid Build Coastguard Worker                highp vec3 y[3] = x;
4090*35238bceSAndroid Build Coastguard Worker                x = y;
4091*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4092*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4093*35238bceSAndroid Build Coastguard Worker            }
4094*35238bceSAndroid Build Coastguard Worker        ""
4095*35238bceSAndroid Build Coastguard Worker    end
4096*35238bceSAndroid Build Coastguard Worker
4097*35238bceSAndroid Build Coastguard Worker    case equal_highp_vec4_highp_vec4
4098*35238bceSAndroid Build Coastguard Worker        version 300 es
4099*35238bceSAndroid Build Coastguard Worker        values
4100*35238bceSAndroid Build Coastguard Worker        {
4101*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4102*35238bceSAndroid Build Coastguard Worker        }
4103*35238bceSAndroid Build Coastguard Worker
4104*35238bceSAndroid Build Coastguard Worker        both ""
4105*35238bceSAndroid Build Coastguard Worker            #version 300 es
4106*35238bceSAndroid Build Coastguard Worker            precision highp float;
4107*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4108*35238bceSAndroid Build Coastguard Worker            void main()
4109*35238bceSAndroid Build Coastguard Worker            {
4110*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4111*35238bceSAndroid Build Coastguard Worker                highp vec4 x[3] = vec4[3](vec4(1.0, 2.0, 3.0, 4.0),
4112*35238bceSAndroid Build Coastguard Worker                                          vec4(5.0, 6.0, 7.0, 8.0),
4113*35238bceSAndroid Build Coastguard Worker                                          vec4(9.0, 10.0, 11.0, 12.0));
4114*35238bceSAndroid Build Coastguard Worker                highp vec4 y[3] = x;
4115*35238bceSAndroid Build Coastguard Worker                x = y;
4116*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4117*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4118*35238bceSAndroid Build Coastguard Worker            }
4119*35238bceSAndroid Build Coastguard Worker        ""
4120*35238bceSAndroid Build Coastguard Worker    end
4121*35238bceSAndroid Build Coastguard Worker
4122*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec2_highp_ivec2
4123*35238bceSAndroid Build Coastguard Worker        version 300 es
4124*35238bceSAndroid Build Coastguard Worker        values
4125*35238bceSAndroid Build Coastguard Worker        {
4126*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4127*35238bceSAndroid Build Coastguard Worker        }
4128*35238bceSAndroid Build Coastguard Worker
4129*35238bceSAndroid Build Coastguard Worker        both ""
4130*35238bceSAndroid Build Coastguard Worker            #version 300 es
4131*35238bceSAndroid Build Coastguard Worker            precision highp float;
4132*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4133*35238bceSAndroid Build Coastguard Worker            void main()
4134*35238bceSAndroid Build Coastguard Worker            {
4135*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4136*35238bceSAndroid Build Coastguard Worker                highp ivec2 x[3] = ivec2[3](ivec2(1, 2),
4137*35238bceSAndroid Build Coastguard Worker                                            ivec2(3, 4),
4138*35238bceSAndroid Build Coastguard Worker                                            ivec2(5, 6));
4139*35238bceSAndroid Build Coastguard Worker                highp ivec2 y[3] = x;
4140*35238bceSAndroid Build Coastguard Worker                x = y;
4141*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4142*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4143*35238bceSAndroid Build Coastguard Worker            }
4144*35238bceSAndroid Build Coastguard Worker        ""
4145*35238bceSAndroid Build Coastguard Worker    end
4146*35238bceSAndroid Build Coastguard Worker
4147*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec3_highp_ivec3
4148*35238bceSAndroid Build Coastguard Worker        version 300 es
4149*35238bceSAndroid Build Coastguard Worker        values
4150*35238bceSAndroid Build Coastguard Worker        {
4151*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4152*35238bceSAndroid Build Coastguard Worker        }
4153*35238bceSAndroid Build Coastguard Worker
4154*35238bceSAndroid Build Coastguard Worker        both ""
4155*35238bceSAndroid Build Coastguard Worker            #version 300 es
4156*35238bceSAndroid Build Coastguard Worker            precision highp float;
4157*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4158*35238bceSAndroid Build Coastguard Worker            void main()
4159*35238bceSAndroid Build Coastguard Worker            {
4160*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4161*35238bceSAndroid Build Coastguard Worker                highp ivec3 x[3] = ivec3[3](ivec3(1, 2, 3),
4162*35238bceSAndroid Build Coastguard Worker                                            ivec3(4, 5, 6),
4163*35238bceSAndroid Build Coastguard Worker                                            ivec3(7, 8, 9));
4164*35238bceSAndroid Build Coastguard Worker                highp ivec3 y[3] = x;
4165*35238bceSAndroid Build Coastguard Worker                x = y;
4166*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4167*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4168*35238bceSAndroid Build Coastguard Worker            }
4169*35238bceSAndroid Build Coastguard Worker        ""
4170*35238bceSAndroid Build Coastguard Worker    end
4171*35238bceSAndroid Build Coastguard Worker
4172*35238bceSAndroid Build Coastguard Worker    case equal_highp_ivec4_highp_ivec4
4173*35238bceSAndroid Build Coastguard Worker        version 300 es
4174*35238bceSAndroid Build Coastguard Worker        values
4175*35238bceSAndroid Build Coastguard Worker        {
4176*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4177*35238bceSAndroid Build Coastguard Worker        }
4178*35238bceSAndroid Build Coastguard Worker
4179*35238bceSAndroid Build Coastguard Worker        both ""
4180*35238bceSAndroid Build Coastguard Worker            #version 300 es
4181*35238bceSAndroid Build Coastguard Worker            precision highp float;
4182*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4183*35238bceSAndroid Build Coastguard Worker            void main()
4184*35238bceSAndroid Build Coastguard Worker            {
4185*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4186*35238bceSAndroid Build Coastguard Worker                highp ivec4 x[3] = ivec4[3](ivec4(1, 2, 3, 4),
4187*35238bceSAndroid Build Coastguard Worker                                            ivec4(5, 6, 7, 8),
4188*35238bceSAndroid Build Coastguard Worker                                            ivec4(9, 10, 11, 12));
4189*35238bceSAndroid Build Coastguard Worker                highp ivec4 y[3] = x;
4190*35238bceSAndroid Build Coastguard Worker                x = y;
4191*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4192*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4193*35238bceSAndroid Build Coastguard Worker            }
4194*35238bceSAndroid Build Coastguard Worker        ""
4195*35238bceSAndroid Build Coastguard Worker    end
4196*35238bceSAndroid Build Coastguard Worker
4197*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec2_highp_uvec2
4198*35238bceSAndroid Build Coastguard Worker        version 300 es
4199*35238bceSAndroid Build Coastguard Worker        values
4200*35238bceSAndroid Build Coastguard Worker        {
4201*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4202*35238bceSAndroid Build Coastguard Worker        }
4203*35238bceSAndroid Build Coastguard Worker
4204*35238bceSAndroid Build Coastguard Worker        both ""
4205*35238bceSAndroid Build Coastguard Worker            #version 300 es
4206*35238bceSAndroid Build Coastguard Worker            precision highp float;
4207*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4208*35238bceSAndroid Build Coastguard Worker            void main()
4209*35238bceSAndroid Build Coastguard Worker            {
4210*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4211*35238bceSAndroid Build Coastguard Worker                highp uvec2 x[3] = uvec2[3](uvec2(1u, 2u),
4212*35238bceSAndroid Build Coastguard Worker                                            uvec2(3u, 4u),
4213*35238bceSAndroid Build Coastguard Worker                                            uvec2(5u, 6u));
4214*35238bceSAndroid Build Coastguard Worker                highp uvec2 y[3] = x;
4215*35238bceSAndroid Build Coastguard Worker                x = y;
4216*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4217*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4218*35238bceSAndroid Build Coastguard Worker            }
4219*35238bceSAndroid Build Coastguard Worker        ""
4220*35238bceSAndroid Build Coastguard Worker    end
4221*35238bceSAndroid Build Coastguard Worker
4222*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec3_highp_uvec3
4223*35238bceSAndroid Build Coastguard Worker        version 300 es
4224*35238bceSAndroid Build Coastguard Worker        values
4225*35238bceSAndroid Build Coastguard Worker        {
4226*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4227*35238bceSAndroid Build Coastguard Worker        }
4228*35238bceSAndroid Build Coastguard Worker
4229*35238bceSAndroid Build Coastguard Worker        both ""
4230*35238bceSAndroid Build Coastguard Worker            #version 300 es
4231*35238bceSAndroid Build Coastguard Worker            precision highp float;
4232*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4233*35238bceSAndroid Build Coastguard Worker            void main()
4234*35238bceSAndroid Build Coastguard Worker            {
4235*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4236*35238bceSAndroid Build Coastguard Worker                highp uvec3 x[3] = uvec3[3](uvec3(1u, 2u, 3u),
4237*35238bceSAndroid Build Coastguard Worker                                            uvec3(4u, 5u, 6u),
4238*35238bceSAndroid Build Coastguard Worker                                            uvec3(7u, 8u, 9u));
4239*35238bceSAndroid Build Coastguard Worker                highp uvec3 y[3] = x;
4240*35238bceSAndroid Build Coastguard Worker                x = y;
4241*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4242*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4243*35238bceSAndroid Build Coastguard Worker            }
4244*35238bceSAndroid Build Coastguard Worker        ""
4245*35238bceSAndroid Build Coastguard Worker    end
4246*35238bceSAndroid Build Coastguard Worker
4247*35238bceSAndroid Build Coastguard Worker    case equal_highp_uvec4_highp_uvec4
4248*35238bceSAndroid Build Coastguard Worker        version 300 es
4249*35238bceSAndroid Build Coastguard Worker        values
4250*35238bceSAndroid Build Coastguard Worker        {
4251*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4252*35238bceSAndroid Build Coastguard Worker        }
4253*35238bceSAndroid Build Coastguard Worker
4254*35238bceSAndroid Build Coastguard Worker        both ""
4255*35238bceSAndroid Build Coastguard Worker            #version 300 es
4256*35238bceSAndroid Build Coastguard Worker            precision highp float;
4257*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4258*35238bceSAndroid Build Coastguard Worker            void main()
4259*35238bceSAndroid Build Coastguard Worker            {
4260*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4261*35238bceSAndroid Build Coastguard Worker                highp uvec4 x[3] = uvec4[3](uvec4(1u, 2u, 3u, 4u),
4262*35238bceSAndroid Build Coastguard Worker                                            uvec4(5u, 6u, 7u, 8u),
4263*35238bceSAndroid Build Coastguard Worker                                            uvec4(9u, 10u, 11u, 12u));
4264*35238bceSAndroid Build Coastguard Worker                highp uvec4 y[3] = x;
4265*35238bceSAndroid Build Coastguard Worker                x = y;
4266*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4267*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4268*35238bceSAndroid Build Coastguard Worker            }
4269*35238bceSAndroid Build Coastguard Worker        ""
4270*35238bceSAndroid Build Coastguard Worker    end
4271*35238bceSAndroid Build Coastguard Worker
4272*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat2_highp_mat2
4273*35238bceSAndroid Build Coastguard Worker        version 300 es
4274*35238bceSAndroid Build Coastguard Worker        values
4275*35238bceSAndroid Build Coastguard Worker        {
4276*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4277*35238bceSAndroid Build Coastguard Worker        }
4278*35238bceSAndroid Build Coastguard Worker
4279*35238bceSAndroid Build Coastguard Worker        both ""
4280*35238bceSAndroid Build Coastguard Worker            #version 300 es
4281*35238bceSAndroid Build Coastguard Worker            precision highp float;
4282*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4283*35238bceSAndroid Build Coastguard Worker            void main()
4284*35238bceSAndroid Build Coastguard Worker            {
4285*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4286*35238bceSAndroid Build Coastguard Worker                highp mat2 x[3] = mat2[3](mat2(1.0, 2.0, 3.0, 4.0),
4287*35238bceSAndroid Build Coastguard Worker                                          mat2(5.0, 6.0, 7.0, 8.0),
4288*35238bceSAndroid Build Coastguard Worker                                          mat2(9.0, 10.0, 11.0, 12.0));
4289*35238bceSAndroid Build Coastguard Worker                highp mat2 y[3] = x;
4290*35238bceSAndroid Build Coastguard Worker                x = y;
4291*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4292*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4293*35238bceSAndroid Build Coastguard Worker            }
4294*35238bceSAndroid Build Coastguard Worker        ""
4295*35238bceSAndroid Build Coastguard Worker    end
4296*35238bceSAndroid Build Coastguard Worker
4297*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat3_highp_mat3
4298*35238bceSAndroid Build Coastguard Worker        version 300 es
4299*35238bceSAndroid Build Coastguard Worker        values
4300*35238bceSAndroid Build Coastguard Worker        {
4301*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4302*35238bceSAndroid Build Coastguard Worker        }
4303*35238bceSAndroid Build Coastguard Worker
4304*35238bceSAndroid Build Coastguard Worker        both ""
4305*35238bceSAndroid Build Coastguard Worker            #version 300 es
4306*35238bceSAndroid Build Coastguard Worker            precision highp float;
4307*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4308*35238bceSAndroid Build Coastguard Worker            void main()
4309*35238bceSAndroid Build Coastguard Worker            {
4310*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4311*35238bceSAndroid Build Coastguard Worker                highp mat3 x[3] = mat3[3](mat3(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0),
4312*35238bceSAndroid Build Coastguard Worker                                          mat3(10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0),
4313*35238bceSAndroid Build Coastguard Worker                                          mat3(19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0));
4314*35238bceSAndroid Build Coastguard Worker                highp mat3 y[3] = x;
4315*35238bceSAndroid Build Coastguard Worker                x = y;
4316*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4317*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4318*35238bceSAndroid Build Coastguard Worker            }
4319*35238bceSAndroid Build Coastguard Worker        ""
4320*35238bceSAndroid Build Coastguard Worker    end
4321*35238bceSAndroid Build Coastguard Worker
4322*35238bceSAndroid Build Coastguard Worker    case equal_highp_mat4_highp_mat4
4323*35238bceSAndroid Build Coastguard Worker        version 300 es
4324*35238bceSAndroid Build Coastguard Worker        values
4325*35238bceSAndroid Build Coastguard Worker        {
4326*35238bceSAndroid Build Coastguard Worker            output bool success = true;
4327*35238bceSAndroid Build Coastguard Worker        }
4328*35238bceSAndroid Build Coastguard Worker
4329*35238bceSAndroid Build Coastguard Worker        both ""
4330*35238bceSAndroid Build Coastguard Worker            #version 300 es
4331*35238bceSAndroid Build Coastguard Worker            precision highp float;
4332*35238bceSAndroid Build Coastguard Worker            ${DECLARATIONS}
4333*35238bceSAndroid Build Coastguard Worker            void main()
4334*35238bceSAndroid Build Coastguard Worker            {
4335*35238bceSAndroid Build Coastguard Worker                ${SETUP}
4336*35238bceSAndroid Build Coastguard Worker                highp mat4 x[3] = mat4[3](mat4(1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0),
4337*35238bceSAndroid Build Coastguard Worker                                          mat4(17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0, 25.0, 26.0, 27.0, 28.0, 29.0, 30.0, 31.0, 32.0),
4338*35238bceSAndroid Build Coastguard Worker                                          mat4(33.0, 34.0, 35.0, 36.0, 37.0, 38.0, 39.0, 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0));
4339*35238bceSAndroid Build Coastguard Worker                highp mat4 y[3] = x;
4340*35238bceSAndroid Build Coastguard Worker                x = y;
4341*35238bceSAndroid Build Coastguard Worker                success = (x == y);
4342*35238bceSAndroid Build Coastguard Worker                ${OUTPUT}
4343*35238bceSAndroid Build Coastguard Worker            }
4344*35238bceSAndroid Build Coastguard Worker        ""
4345*35238bceSAndroid Build Coastguard Worker    end
4346*35238bceSAndroid Build Coastguard Worker
4347*35238bceSAndroid Build Coastguard Workerend # compare
4348