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