1e5c31af7Sopenharmony_ci# WARNING: This file is auto-generated. Do NOT modify it manually, but rather
2e5c31af7Sopenharmony_ci# modify the generating script file. Otherwise changes will be lost!
3e5c31af7Sopenharmony_ci
4e5c31af7Sopenharmony_cigroup arithmetic "Arithmetic operations"
5e5c31af7Sopenharmony_ci
6e5c31af7Sopenharmony_ci	group input_before_literal "Input before literal"
7e5c31af7Sopenharmony_ci
8e5c31af7Sopenharmony_ci		group add "Addition"
9e5c31af7Sopenharmony_ci
10e5c31af7Sopenharmony_ci			case int_to_float
11e5c31af7Sopenharmony_ci				version 320 es
12e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
13e5c31af7Sopenharmony_ci				values
14e5c31af7Sopenharmony_ci				{
15e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
16e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
17e5c31af7Sopenharmony_ci				}
18e5c31af7Sopenharmony_ci
19e5c31af7Sopenharmony_ci				both ""
20e5c31af7Sopenharmony_ci					#version 320 es
21e5c31af7Sopenharmony_ci					precision highp float;
22e5c31af7Sopenharmony_ci					${DECLARATIONS}
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ci					void main()
25e5c31af7Sopenharmony_ci					{
26e5c31af7Sopenharmony_ci						${SETUP}
27e5c31af7Sopenharmony_ci						out0 = in0 + 2.0;
28e5c31af7Sopenharmony_ci						${OUTPUT}
29e5c31af7Sopenharmony_ci					}
30e5c31af7Sopenharmony_ci				""
31e5c31af7Sopenharmony_ci			end
32e5c31af7Sopenharmony_ci			case int_to_uint
33e5c31af7Sopenharmony_ci				version 320 es
34e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
35e5c31af7Sopenharmony_ci				values
36e5c31af7Sopenharmony_ci				{
37e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
38e5c31af7Sopenharmony_ci					output uint out0 = [ 4 | 3 | 3 | 5 | 7 ];
39e5c31af7Sopenharmony_ci				}
40e5c31af7Sopenharmony_ci
41e5c31af7Sopenharmony_ci				both ""
42e5c31af7Sopenharmony_ci					#version 320 es
43e5c31af7Sopenharmony_ci					precision highp float;
44e5c31af7Sopenharmony_ci					${DECLARATIONS}
45e5c31af7Sopenharmony_ci
46e5c31af7Sopenharmony_ci					void main()
47e5c31af7Sopenharmony_ci					{
48e5c31af7Sopenharmony_ci						${SETUP}
49e5c31af7Sopenharmony_ci						out0 = in0 + 2;
50e5c31af7Sopenharmony_ci						${OUTPUT}
51e5c31af7Sopenharmony_ci					}
52e5c31af7Sopenharmony_ci				""
53e5c31af7Sopenharmony_ci			end
54e5c31af7Sopenharmony_ci			case int_to_vec2
55e5c31af7Sopenharmony_ci				version 320 es
56e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
57e5c31af7Sopenharmony_ci				values
58e5c31af7Sopenharmony_ci				{
59e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
60e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
61e5c31af7Sopenharmony_ci				}
62e5c31af7Sopenharmony_ci
63e5c31af7Sopenharmony_ci				both ""
64e5c31af7Sopenharmony_ci					#version 320 es
65e5c31af7Sopenharmony_ci					precision highp float;
66e5c31af7Sopenharmony_ci					${DECLARATIONS}
67e5c31af7Sopenharmony_ci
68e5c31af7Sopenharmony_ci					void main()
69e5c31af7Sopenharmony_ci					{
70e5c31af7Sopenharmony_ci						${SETUP}
71e5c31af7Sopenharmony_ci						out0 = in0 + vec2(1.0, 2.0);
72e5c31af7Sopenharmony_ci						${OUTPUT}
73e5c31af7Sopenharmony_ci					}
74e5c31af7Sopenharmony_ci				""
75e5c31af7Sopenharmony_ci			end
76e5c31af7Sopenharmony_ci			case int_to_vec3
77e5c31af7Sopenharmony_ci				version 320 es
78e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
79e5c31af7Sopenharmony_ci				values
80e5c31af7Sopenharmony_ci				{
81e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
82e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
83e5c31af7Sopenharmony_ci				}
84e5c31af7Sopenharmony_ci
85e5c31af7Sopenharmony_ci				both ""
86e5c31af7Sopenharmony_ci					#version 320 es
87e5c31af7Sopenharmony_ci					precision highp float;
88e5c31af7Sopenharmony_ci					${DECLARATIONS}
89e5c31af7Sopenharmony_ci
90e5c31af7Sopenharmony_ci					void main()
91e5c31af7Sopenharmony_ci					{
92e5c31af7Sopenharmony_ci						${SETUP}
93e5c31af7Sopenharmony_ci						out0 = in0 + vec3(1.0, 2.0, 3.0);
94e5c31af7Sopenharmony_ci						${OUTPUT}
95e5c31af7Sopenharmony_ci					}
96e5c31af7Sopenharmony_ci				""
97e5c31af7Sopenharmony_ci			end
98e5c31af7Sopenharmony_ci			case int_to_vec4
99e5c31af7Sopenharmony_ci				version 320 es
100e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
101e5c31af7Sopenharmony_ci				values
102e5c31af7Sopenharmony_ci				{
103e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
104e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
105e5c31af7Sopenharmony_ci				}
106e5c31af7Sopenharmony_ci
107e5c31af7Sopenharmony_ci				both ""
108e5c31af7Sopenharmony_ci					#version 320 es
109e5c31af7Sopenharmony_ci					precision highp float;
110e5c31af7Sopenharmony_ci					${DECLARATIONS}
111e5c31af7Sopenharmony_ci
112e5c31af7Sopenharmony_ci					void main()
113e5c31af7Sopenharmony_ci					{
114e5c31af7Sopenharmony_ci						${SETUP}
115e5c31af7Sopenharmony_ci						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
116e5c31af7Sopenharmony_ci						${OUTPUT}
117e5c31af7Sopenharmony_ci					}
118e5c31af7Sopenharmony_ci				""
119e5c31af7Sopenharmony_ci			end
120e5c31af7Sopenharmony_ci			case int_to_uvec2
121e5c31af7Sopenharmony_ci				version 320 es
122e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
123e5c31af7Sopenharmony_ci				values
124e5c31af7Sopenharmony_ci				{
125e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
126e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(3, 4) | uvec2(2, 3) | uvec2(2, 3) | uvec2(4, 5) | uvec2(6, 7) ];
127e5c31af7Sopenharmony_ci				}
128e5c31af7Sopenharmony_ci
129e5c31af7Sopenharmony_ci				both ""
130e5c31af7Sopenharmony_ci					#version 320 es
131e5c31af7Sopenharmony_ci					precision highp float;
132e5c31af7Sopenharmony_ci					${DECLARATIONS}
133e5c31af7Sopenharmony_ci
134e5c31af7Sopenharmony_ci					void main()
135e5c31af7Sopenharmony_ci					{
136e5c31af7Sopenharmony_ci						${SETUP}
137e5c31af7Sopenharmony_ci						out0 = in0 + uvec2(1, 2);
138e5c31af7Sopenharmony_ci						${OUTPUT}
139e5c31af7Sopenharmony_ci					}
140e5c31af7Sopenharmony_ci				""
141e5c31af7Sopenharmony_ci			end
142e5c31af7Sopenharmony_ci			case int_to_uvec3
143e5c31af7Sopenharmony_ci				version 320 es
144e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
145e5c31af7Sopenharmony_ci				values
146e5c31af7Sopenharmony_ci				{
147e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
148e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(3, 4, 5) | uvec3(2, 3, 4) | uvec3(2, 3, 4) | uvec3(4, 5, 6) | uvec3(6, 7, 8) ];
149e5c31af7Sopenharmony_ci				}
150e5c31af7Sopenharmony_ci
151e5c31af7Sopenharmony_ci				both ""
152e5c31af7Sopenharmony_ci					#version 320 es
153e5c31af7Sopenharmony_ci					precision highp float;
154e5c31af7Sopenharmony_ci					${DECLARATIONS}
155e5c31af7Sopenharmony_ci
156e5c31af7Sopenharmony_ci					void main()
157e5c31af7Sopenharmony_ci					{
158e5c31af7Sopenharmony_ci						${SETUP}
159e5c31af7Sopenharmony_ci						out0 = in0 + uvec3(1, 2, 3);
160e5c31af7Sopenharmony_ci						${OUTPUT}
161e5c31af7Sopenharmony_ci					}
162e5c31af7Sopenharmony_ci				""
163e5c31af7Sopenharmony_ci			end
164e5c31af7Sopenharmony_ci			case int_to_uvec4
165e5c31af7Sopenharmony_ci				version 320 es
166e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
167e5c31af7Sopenharmony_ci				values
168e5c31af7Sopenharmony_ci				{
169e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
170e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(3, 4, 5, 6) | uvec4(2, 3, 4, 5) | uvec4(2, 3, 4, 5) | uvec4(4, 5, 6, 7) | uvec4(6, 7, 8, 9) ];
171e5c31af7Sopenharmony_ci				}
172e5c31af7Sopenharmony_ci
173e5c31af7Sopenharmony_ci				both ""
174e5c31af7Sopenharmony_ci					#version 320 es
175e5c31af7Sopenharmony_ci					precision highp float;
176e5c31af7Sopenharmony_ci					${DECLARATIONS}
177e5c31af7Sopenharmony_ci
178e5c31af7Sopenharmony_ci					void main()
179e5c31af7Sopenharmony_ci					{
180e5c31af7Sopenharmony_ci						${SETUP}
181e5c31af7Sopenharmony_ci						out0 = in0 + uvec4(1, 2, 3, 4);
182e5c31af7Sopenharmony_ci						${OUTPUT}
183e5c31af7Sopenharmony_ci					}
184e5c31af7Sopenharmony_ci				""
185e5c31af7Sopenharmony_ci			end
186e5c31af7Sopenharmony_ci			case uint_to_float
187e5c31af7Sopenharmony_ci				version 320 es
188e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
189e5c31af7Sopenharmony_ci				values
190e5c31af7Sopenharmony_ci				{
191e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
192e5c31af7Sopenharmony_ci					output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
193e5c31af7Sopenharmony_ci				}
194e5c31af7Sopenharmony_ci
195e5c31af7Sopenharmony_ci				both ""
196e5c31af7Sopenharmony_ci					#version 320 es
197e5c31af7Sopenharmony_ci					precision highp float;
198e5c31af7Sopenharmony_ci					${DECLARATIONS}
199e5c31af7Sopenharmony_ci
200e5c31af7Sopenharmony_ci					void main()
201e5c31af7Sopenharmony_ci					{
202e5c31af7Sopenharmony_ci						${SETUP}
203e5c31af7Sopenharmony_ci						out0 = in0 + 2.0;
204e5c31af7Sopenharmony_ci						${OUTPUT}
205e5c31af7Sopenharmony_ci					}
206e5c31af7Sopenharmony_ci				""
207e5c31af7Sopenharmony_ci			end
208e5c31af7Sopenharmony_ci			case uint_to_vec2
209e5c31af7Sopenharmony_ci				version 320 es
210e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
211e5c31af7Sopenharmony_ci				values
212e5c31af7Sopenharmony_ci				{
213e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
214e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
215e5c31af7Sopenharmony_ci				}
216e5c31af7Sopenharmony_ci
217e5c31af7Sopenharmony_ci				both ""
218e5c31af7Sopenharmony_ci					#version 320 es
219e5c31af7Sopenharmony_ci					precision highp float;
220e5c31af7Sopenharmony_ci					${DECLARATIONS}
221e5c31af7Sopenharmony_ci
222e5c31af7Sopenharmony_ci					void main()
223e5c31af7Sopenharmony_ci					{
224e5c31af7Sopenharmony_ci						${SETUP}
225e5c31af7Sopenharmony_ci						out0 = in0 + vec2(1.0, 2.0);
226e5c31af7Sopenharmony_ci						${OUTPUT}
227e5c31af7Sopenharmony_ci					}
228e5c31af7Sopenharmony_ci				""
229e5c31af7Sopenharmony_ci			end
230e5c31af7Sopenharmony_ci			case uint_to_vec3
231e5c31af7Sopenharmony_ci				version 320 es
232e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
233e5c31af7Sopenharmony_ci				values
234e5c31af7Sopenharmony_ci				{
235e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
236e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
237e5c31af7Sopenharmony_ci				}
238e5c31af7Sopenharmony_ci
239e5c31af7Sopenharmony_ci				both ""
240e5c31af7Sopenharmony_ci					#version 320 es
241e5c31af7Sopenharmony_ci					precision highp float;
242e5c31af7Sopenharmony_ci					${DECLARATIONS}
243e5c31af7Sopenharmony_ci
244e5c31af7Sopenharmony_ci					void main()
245e5c31af7Sopenharmony_ci					{
246e5c31af7Sopenharmony_ci						${SETUP}
247e5c31af7Sopenharmony_ci						out0 = in0 + vec3(1.0, 2.0, 3.0);
248e5c31af7Sopenharmony_ci						${OUTPUT}
249e5c31af7Sopenharmony_ci					}
250e5c31af7Sopenharmony_ci				""
251e5c31af7Sopenharmony_ci			end
252e5c31af7Sopenharmony_ci			case uint_to_vec4
253e5c31af7Sopenharmony_ci				version 320 es
254e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
255e5c31af7Sopenharmony_ci				values
256e5c31af7Sopenharmony_ci				{
257e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
258e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
259e5c31af7Sopenharmony_ci				}
260e5c31af7Sopenharmony_ci
261e5c31af7Sopenharmony_ci				both ""
262e5c31af7Sopenharmony_ci					#version 320 es
263e5c31af7Sopenharmony_ci					precision highp float;
264e5c31af7Sopenharmony_ci					${DECLARATIONS}
265e5c31af7Sopenharmony_ci
266e5c31af7Sopenharmony_ci					void main()
267e5c31af7Sopenharmony_ci					{
268e5c31af7Sopenharmony_ci						${SETUP}
269e5c31af7Sopenharmony_ci						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
270e5c31af7Sopenharmony_ci						${OUTPUT}
271e5c31af7Sopenharmony_ci					}
272e5c31af7Sopenharmony_ci				""
273e5c31af7Sopenharmony_ci			end
274e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
275e5c31af7Sopenharmony_ci				version 320 es
276e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
277e5c31af7Sopenharmony_ci				values
278e5c31af7Sopenharmony_ci				{
279e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
280e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(2, 4) | uvec2(3, 3) | uvec2(4, 9) ];
281e5c31af7Sopenharmony_ci				}
282e5c31af7Sopenharmony_ci
283e5c31af7Sopenharmony_ci				both ""
284e5c31af7Sopenharmony_ci					#version 320 es
285e5c31af7Sopenharmony_ci					precision highp float;
286e5c31af7Sopenharmony_ci					${DECLARATIONS}
287e5c31af7Sopenharmony_ci
288e5c31af7Sopenharmony_ci					void main()
289e5c31af7Sopenharmony_ci					{
290e5c31af7Sopenharmony_ci						${SETUP}
291e5c31af7Sopenharmony_ci						out0 = in0 + uvec2(1, 2);
292e5c31af7Sopenharmony_ci						${OUTPUT}
293e5c31af7Sopenharmony_ci					}
294e5c31af7Sopenharmony_ci				""
295e5c31af7Sopenharmony_ci			end
296e5c31af7Sopenharmony_ci			case ivec2_to_vec2
297e5c31af7Sopenharmony_ci				version 320 es
298e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
299e5c31af7Sopenharmony_ci				values
300e5c31af7Sopenharmony_ci				{
301e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
302e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
303e5c31af7Sopenharmony_ci				}
304e5c31af7Sopenharmony_ci
305e5c31af7Sopenharmony_ci				both ""
306e5c31af7Sopenharmony_ci					#version 320 es
307e5c31af7Sopenharmony_ci					precision highp float;
308e5c31af7Sopenharmony_ci					${DECLARATIONS}
309e5c31af7Sopenharmony_ci
310e5c31af7Sopenharmony_ci					void main()
311e5c31af7Sopenharmony_ci					{
312e5c31af7Sopenharmony_ci						${SETUP}
313e5c31af7Sopenharmony_ci						out0 = in0 + vec2(1.0, 2.0);
314e5c31af7Sopenharmony_ci						${OUTPUT}
315e5c31af7Sopenharmony_ci					}
316e5c31af7Sopenharmony_ci				""
317e5c31af7Sopenharmony_ci			end
318e5c31af7Sopenharmony_ci			case uvec2_to_vec2
319e5c31af7Sopenharmony_ci				version 320 es
320e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
321e5c31af7Sopenharmony_ci				values
322e5c31af7Sopenharmony_ci				{
323e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
324e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
325e5c31af7Sopenharmony_ci				}
326e5c31af7Sopenharmony_ci
327e5c31af7Sopenharmony_ci				both ""
328e5c31af7Sopenharmony_ci					#version 320 es
329e5c31af7Sopenharmony_ci					precision highp float;
330e5c31af7Sopenharmony_ci					${DECLARATIONS}
331e5c31af7Sopenharmony_ci
332e5c31af7Sopenharmony_ci					void main()
333e5c31af7Sopenharmony_ci					{
334e5c31af7Sopenharmony_ci						${SETUP}
335e5c31af7Sopenharmony_ci						out0 = in0 + vec2(1.0, 2.0);
336e5c31af7Sopenharmony_ci						${OUTPUT}
337e5c31af7Sopenharmony_ci					}
338e5c31af7Sopenharmony_ci				""
339e5c31af7Sopenharmony_ci			end
340e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
341e5c31af7Sopenharmony_ci				version 320 es
342e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
343e5c31af7Sopenharmony_ci				values
344e5c31af7Sopenharmony_ci				{
345e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
346e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(3, 3, 5) | uvec3(4, 9, 5) ];
347e5c31af7Sopenharmony_ci				}
348e5c31af7Sopenharmony_ci
349e5c31af7Sopenharmony_ci				both ""
350e5c31af7Sopenharmony_ci					#version 320 es
351e5c31af7Sopenharmony_ci					precision highp float;
352e5c31af7Sopenharmony_ci					${DECLARATIONS}
353e5c31af7Sopenharmony_ci
354e5c31af7Sopenharmony_ci					void main()
355e5c31af7Sopenharmony_ci					{
356e5c31af7Sopenharmony_ci						${SETUP}
357e5c31af7Sopenharmony_ci						out0 = in0 + uvec3(1, 2, 3);
358e5c31af7Sopenharmony_ci						${OUTPUT}
359e5c31af7Sopenharmony_ci					}
360e5c31af7Sopenharmony_ci				""
361e5c31af7Sopenharmony_ci			end
362e5c31af7Sopenharmony_ci			case ivec3_to_vec3
363e5c31af7Sopenharmony_ci				version 320 es
364e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
365e5c31af7Sopenharmony_ci				values
366e5c31af7Sopenharmony_ci				{
367e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
368e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
369e5c31af7Sopenharmony_ci				}
370e5c31af7Sopenharmony_ci
371e5c31af7Sopenharmony_ci				both ""
372e5c31af7Sopenharmony_ci					#version 320 es
373e5c31af7Sopenharmony_ci					precision highp float;
374e5c31af7Sopenharmony_ci					${DECLARATIONS}
375e5c31af7Sopenharmony_ci
376e5c31af7Sopenharmony_ci					void main()
377e5c31af7Sopenharmony_ci					{
378e5c31af7Sopenharmony_ci						${SETUP}
379e5c31af7Sopenharmony_ci						out0 = in0 + vec3(1.0, 2.0, 3.0);
380e5c31af7Sopenharmony_ci						${OUTPUT}
381e5c31af7Sopenharmony_ci					}
382e5c31af7Sopenharmony_ci				""
383e5c31af7Sopenharmony_ci			end
384e5c31af7Sopenharmony_ci			case uvec3_to_vec3
385e5c31af7Sopenharmony_ci				version 320 es
386e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
387e5c31af7Sopenharmony_ci				values
388e5c31af7Sopenharmony_ci				{
389e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
390e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
391e5c31af7Sopenharmony_ci				}
392e5c31af7Sopenharmony_ci
393e5c31af7Sopenharmony_ci				both ""
394e5c31af7Sopenharmony_ci					#version 320 es
395e5c31af7Sopenharmony_ci					precision highp float;
396e5c31af7Sopenharmony_ci					${DECLARATIONS}
397e5c31af7Sopenharmony_ci
398e5c31af7Sopenharmony_ci					void main()
399e5c31af7Sopenharmony_ci					{
400e5c31af7Sopenharmony_ci						${SETUP}
401e5c31af7Sopenharmony_ci						out0 = in0 + vec3(1.0, 2.0, 3.0);
402e5c31af7Sopenharmony_ci						${OUTPUT}
403e5c31af7Sopenharmony_ci					}
404e5c31af7Sopenharmony_ci				""
405e5c31af7Sopenharmony_ci			end
406e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
407e5c31af7Sopenharmony_ci				version 320 es
408e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
409e5c31af7Sopenharmony_ci				values
410e5c31af7Sopenharmony_ci				{
411e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
412e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(3, 3, 5, 10) | uvec4(4, 9, 5, 9) ];
413e5c31af7Sopenharmony_ci				}
414e5c31af7Sopenharmony_ci
415e5c31af7Sopenharmony_ci				both ""
416e5c31af7Sopenharmony_ci					#version 320 es
417e5c31af7Sopenharmony_ci					precision highp float;
418e5c31af7Sopenharmony_ci					${DECLARATIONS}
419e5c31af7Sopenharmony_ci
420e5c31af7Sopenharmony_ci					void main()
421e5c31af7Sopenharmony_ci					{
422e5c31af7Sopenharmony_ci						${SETUP}
423e5c31af7Sopenharmony_ci						out0 = in0 + uvec4(1, 2, 3, 4);
424e5c31af7Sopenharmony_ci						${OUTPUT}
425e5c31af7Sopenharmony_ci					}
426e5c31af7Sopenharmony_ci				""
427e5c31af7Sopenharmony_ci			end
428e5c31af7Sopenharmony_ci			case ivec4_to_vec4
429e5c31af7Sopenharmony_ci				version 320 es
430e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
431e5c31af7Sopenharmony_ci				values
432e5c31af7Sopenharmony_ci				{
433e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
434e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
435e5c31af7Sopenharmony_ci				}
436e5c31af7Sopenharmony_ci
437e5c31af7Sopenharmony_ci				both ""
438e5c31af7Sopenharmony_ci					#version 320 es
439e5c31af7Sopenharmony_ci					precision highp float;
440e5c31af7Sopenharmony_ci					${DECLARATIONS}
441e5c31af7Sopenharmony_ci
442e5c31af7Sopenharmony_ci					void main()
443e5c31af7Sopenharmony_ci					{
444e5c31af7Sopenharmony_ci						${SETUP}
445e5c31af7Sopenharmony_ci						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
446e5c31af7Sopenharmony_ci						${OUTPUT}
447e5c31af7Sopenharmony_ci					}
448e5c31af7Sopenharmony_ci				""
449e5c31af7Sopenharmony_ci			end
450e5c31af7Sopenharmony_ci			case uvec4_to_vec4
451e5c31af7Sopenharmony_ci				version 320 es
452e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
453e5c31af7Sopenharmony_ci				values
454e5c31af7Sopenharmony_ci				{
455e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
456e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
457e5c31af7Sopenharmony_ci				}
458e5c31af7Sopenharmony_ci
459e5c31af7Sopenharmony_ci				both ""
460e5c31af7Sopenharmony_ci					#version 320 es
461e5c31af7Sopenharmony_ci					precision highp float;
462e5c31af7Sopenharmony_ci					${DECLARATIONS}
463e5c31af7Sopenharmony_ci
464e5c31af7Sopenharmony_ci					void main()
465e5c31af7Sopenharmony_ci					{
466e5c31af7Sopenharmony_ci						${SETUP}
467e5c31af7Sopenharmony_ci						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
468e5c31af7Sopenharmony_ci						${OUTPUT}
469e5c31af7Sopenharmony_ci					}
470e5c31af7Sopenharmony_ci				""
471e5c31af7Sopenharmony_ci			end
472e5c31af7Sopenharmony_ci
473e5c31af7Sopenharmony_ci		end # add
474e5c31af7Sopenharmony_ci		group sub "Subtraction"
475e5c31af7Sopenharmony_ci
476e5c31af7Sopenharmony_ci			case int_to_float
477e5c31af7Sopenharmony_ci				version 320 es
478e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
479e5c31af7Sopenharmony_ci				values
480e5c31af7Sopenharmony_ci				{
481e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
482e5c31af7Sopenharmony_ci					output float out0 = [ 0.0 | -1.0 | -1.0 | 1.0 | 3.0 ];
483e5c31af7Sopenharmony_ci				}
484e5c31af7Sopenharmony_ci
485e5c31af7Sopenharmony_ci				both ""
486e5c31af7Sopenharmony_ci					#version 320 es
487e5c31af7Sopenharmony_ci					precision highp float;
488e5c31af7Sopenharmony_ci					${DECLARATIONS}
489e5c31af7Sopenharmony_ci
490e5c31af7Sopenharmony_ci					void main()
491e5c31af7Sopenharmony_ci					{
492e5c31af7Sopenharmony_ci						${SETUP}
493e5c31af7Sopenharmony_ci						out0 = in0 - 2.0;
494e5c31af7Sopenharmony_ci						${OUTPUT}
495e5c31af7Sopenharmony_ci					}
496e5c31af7Sopenharmony_ci				""
497e5c31af7Sopenharmony_ci			end
498e5c31af7Sopenharmony_ci			case int_to_vec2
499e5c31af7Sopenharmony_ci				version 320 es
500e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
501e5c31af7Sopenharmony_ci				values
502e5c31af7Sopenharmony_ci				{
503e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
504e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, -1.0) | vec2(0.0, -1.0) | vec2(2.0, 1.0) | vec2(4.0, 3.0) ];
505e5c31af7Sopenharmony_ci				}
506e5c31af7Sopenharmony_ci
507e5c31af7Sopenharmony_ci				both ""
508e5c31af7Sopenharmony_ci					#version 320 es
509e5c31af7Sopenharmony_ci					precision highp float;
510e5c31af7Sopenharmony_ci					${DECLARATIONS}
511e5c31af7Sopenharmony_ci
512e5c31af7Sopenharmony_ci					void main()
513e5c31af7Sopenharmony_ci					{
514e5c31af7Sopenharmony_ci						${SETUP}
515e5c31af7Sopenharmony_ci						out0 = in0 - vec2(1.0, 2.0);
516e5c31af7Sopenharmony_ci						${OUTPUT}
517e5c31af7Sopenharmony_ci					}
518e5c31af7Sopenharmony_ci				""
519e5c31af7Sopenharmony_ci			end
520e5c31af7Sopenharmony_ci			case int_to_vec3
521e5c31af7Sopenharmony_ci				version 320 es
522e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
523e5c31af7Sopenharmony_ci				values
524e5c31af7Sopenharmony_ci				{
525e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
526e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 0.0, -1.0) | vec3(0.0, -1.0, -2.0) | vec3(0.0, -1.0, -2.0) | vec3(2.0, 1.0, 0.0) | vec3(4.0, 3.0, 2.0) ];
527e5c31af7Sopenharmony_ci				}
528e5c31af7Sopenharmony_ci
529e5c31af7Sopenharmony_ci				both ""
530e5c31af7Sopenharmony_ci					#version 320 es
531e5c31af7Sopenharmony_ci					precision highp float;
532e5c31af7Sopenharmony_ci					${DECLARATIONS}
533e5c31af7Sopenharmony_ci
534e5c31af7Sopenharmony_ci					void main()
535e5c31af7Sopenharmony_ci					{
536e5c31af7Sopenharmony_ci						${SETUP}
537e5c31af7Sopenharmony_ci						out0 = in0 - vec3(1.0, 2.0, 3.0);
538e5c31af7Sopenharmony_ci						${OUTPUT}
539e5c31af7Sopenharmony_ci					}
540e5c31af7Sopenharmony_ci				""
541e5c31af7Sopenharmony_ci			end
542e5c31af7Sopenharmony_ci			case int_to_vec4
543e5c31af7Sopenharmony_ci				version 320 es
544e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
545e5c31af7Sopenharmony_ci				values
546e5c31af7Sopenharmony_ci				{
547e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
548e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 0.0, -1.0, -2.0) | vec4(0.0, -1.0, -2.0, -3.0) | vec4(0.0, -1.0, -2.0, -3.0) | vec4(2.0, 1.0, 0.0, -1.0) | vec4(4.0, 3.0, 2.0, 1.0) ];
549e5c31af7Sopenharmony_ci				}
550e5c31af7Sopenharmony_ci
551e5c31af7Sopenharmony_ci				both ""
552e5c31af7Sopenharmony_ci					#version 320 es
553e5c31af7Sopenharmony_ci					precision highp float;
554e5c31af7Sopenharmony_ci					${DECLARATIONS}
555e5c31af7Sopenharmony_ci
556e5c31af7Sopenharmony_ci					void main()
557e5c31af7Sopenharmony_ci					{
558e5c31af7Sopenharmony_ci						${SETUP}
559e5c31af7Sopenharmony_ci						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
560e5c31af7Sopenharmony_ci						${OUTPUT}
561e5c31af7Sopenharmony_ci					}
562e5c31af7Sopenharmony_ci				""
563e5c31af7Sopenharmony_ci			end
564e5c31af7Sopenharmony_ci			case uint_to_float
565e5c31af7Sopenharmony_ci				version 320 es
566e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
567e5c31af7Sopenharmony_ci				values
568e5c31af7Sopenharmony_ci				{
569e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
570e5c31af7Sopenharmony_ci					output float out0 = [ -1.0 | 1.0 | 2.0 | 5.0 | 9.0 ];
571e5c31af7Sopenharmony_ci				}
572e5c31af7Sopenharmony_ci
573e5c31af7Sopenharmony_ci				both ""
574e5c31af7Sopenharmony_ci					#version 320 es
575e5c31af7Sopenharmony_ci					precision highp float;
576e5c31af7Sopenharmony_ci					${DECLARATIONS}
577e5c31af7Sopenharmony_ci
578e5c31af7Sopenharmony_ci					void main()
579e5c31af7Sopenharmony_ci					{
580e5c31af7Sopenharmony_ci						${SETUP}
581e5c31af7Sopenharmony_ci						out0 = in0 - 2.0;
582e5c31af7Sopenharmony_ci						${OUTPUT}
583e5c31af7Sopenharmony_ci					}
584e5c31af7Sopenharmony_ci				""
585e5c31af7Sopenharmony_ci			end
586e5c31af7Sopenharmony_ci			case uint_to_vec2
587e5c31af7Sopenharmony_ci				version 320 es
588e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
589e5c31af7Sopenharmony_ci				values
590e5c31af7Sopenharmony_ci				{
591e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
592e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.0, -1.0) | vec2(2.0, 1.0) | vec2(3.0, 2.0) | vec2(6.0, 5.0) | vec2(10.0, 9.0) ];
593e5c31af7Sopenharmony_ci				}
594e5c31af7Sopenharmony_ci
595e5c31af7Sopenharmony_ci				both ""
596e5c31af7Sopenharmony_ci					#version 320 es
597e5c31af7Sopenharmony_ci					precision highp float;
598e5c31af7Sopenharmony_ci					${DECLARATIONS}
599e5c31af7Sopenharmony_ci
600e5c31af7Sopenharmony_ci					void main()
601e5c31af7Sopenharmony_ci					{
602e5c31af7Sopenharmony_ci						${SETUP}
603e5c31af7Sopenharmony_ci						out0 = in0 - vec2(1.0, 2.0);
604e5c31af7Sopenharmony_ci						${OUTPUT}
605e5c31af7Sopenharmony_ci					}
606e5c31af7Sopenharmony_ci				""
607e5c31af7Sopenharmony_ci			end
608e5c31af7Sopenharmony_ci			case uint_to_vec3
609e5c31af7Sopenharmony_ci				version 320 es
610e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
611e5c31af7Sopenharmony_ci				values
612e5c31af7Sopenharmony_ci				{
613e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
614e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.0, -1.0, -2.0) | vec3(2.0, 1.0, 0.0) | vec3(3.0, 2.0, 1.0) | vec3(6.0, 5.0, 4.0) | vec3(10.0, 9.0, 8.0) ];
615e5c31af7Sopenharmony_ci				}
616e5c31af7Sopenharmony_ci
617e5c31af7Sopenharmony_ci				both ""
618e5c31af7Sopenharmony_ci					#version 320 es
619e5c31af7Sopenharmony_ci					precision highp float;
620e5c31af7Sopenharmony_ci					${DECLARATIONS}
621e5c31af7Sopenharmony_ci
622e5c31af7Sopenharmony_ci					void main()
623e5c31af7Sopenharmony_ci					{
624e5c31af7Sopenharmony_ci						${SETUP}
625e5c31af7Sopenharmony_ci						out0 = in0 - vec3(1.0, 2.0, 3.0);
626e5c31af7Sopenharmony_ci						${OUTPUT}
627e5c31af7Sopenharmony_ci					}
628e5c31af7Sopenharmony_ci				""
629e5c31af7Sopenharmony_ci			end
630e5c31af7Sopenharmony_ci			case uint_to_vec4
631e5c31af7Sopenharmony_ci				version 320 es
632e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
633e5c31af7Sopenharmony_ci				values
634e5c31af7Sopenharmony_ci				{
635e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
636e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.0, -1.0, -2.0, -3.0) | vec4(2.0, 1.0, 0.0, -1.0) | vec4(3.0, 2.0, 1.0, 0.0) | vec4(6.0, 5.0, 4.0, 3.0) | vec4(10.0, 9.0, 8.0, 7.0) ];
637e5c31af7Sopenharmony_ci				}
638e5c31af7Sopenharmony_ci
639e5c31af7Sopenharmony_ci				both ""
640e5c31af7Sopenharmony_ci					#version 320 es
641e5c31af7Sopenharmony_ci					precision highp float;
642e5c31af7Sopenharmony_ci					${DECLARATIONS}
643e5c31af7Sopenharmony_ci
644e5c31af7Sopenharmony_ci					void main()
645e5c31af7Sopenharmony_ci					{
646e5c31af7Sopenharmony_ci						${SETUP}
647e5c31af7Sopenharmony_ci						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
648e5c31af7Sopenharmony_ci						${OUTPUT}
649e5c31af7Sopenharmony_ci					}
650e5c31af7Sopenharmony_ci				""
651e5c31af7Sopenharmony_ci			end
652e5c31af7Sopenharmony_ci			case ivec2_to_vec2
653e5c31af7Sopenharmony_ci				version 320 es
654e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
655e5c31af7Sopenharmony_ci				values
656e5c31af7Sopenharmony_ci				{
657e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
658e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, -1.0) | vec2(2.0, 5.0) ];
659e5c31af7Sopenharmony_ci				}
660e5c31af7Sopenharmony_ci
661e5c31af7Sopenharmony_ci				both ""
662e5c31af7Sopenharmony_ci					#version 320 es
663e5c31af7Sopenharmony_ci					precision highp float;
664e5c31af7Sopenharmony_ci					${DECLARATIONS}
665e5c31af7Sopenharmony_ci
666e5c31af7Sopenharmony_ci					void main()
667e5c31af7Sopenharmony_ci					{
668e5c31af7Sopenharmony_ci						${SETUP}
669e5c31af7Sopenharmony_ci						out0 = in0 - vec2(1.0, 2.0);
670e5c31af7Sopenharmony_ci						${OUTPUT}
671e5c31af7Sopenharmony_ci					}
672e5c31af7Sopenharmony_ci				""
673e5c31af7Sopenharmony_ci			end
674e5c31af7Sopenharmony_ci			case uvec2_to_vec2
675e5c31af7Sopenharmony_ci				version 320 es
676e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
677e5c31af7Sopenharmony_ci				values
678e5c31af7Sopenharmony_ci				{
679e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
680e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(3.0, 4.0) | vec2(0.0, 11.0) ];
681e5c31af7Sopenharmony_ci				}
682e5c31af7Sopenharmony_ci
683e5c31af7Sopenharmony_ci				both ""
684e5c31af7Sopenharmony_ci					#version 320 es
685e5c31af7Sopenharmony_ci					precision highp float;
686e5c31af7Sopenharmony_ci					${DECLARATIONS}
687e5c31af7Sopenharmony_ci
688e5c31af7Sopenharmony_ci					void main()
689e5c31af7Sopenharmony_ci					{
690e5c31af7Sopenharmony_ci						${SETUP}
691e5c31af7Sopenharmony_ci						out0 = in0 - vec2(1.0, 2.0);
692e5c31af7Sopenharmony_ci						${OUTPUT}
693e5c31af7Sopenharmony_ci					}
694e5c31af7Sopenharmony_ci				""
695e5c31af7Sopenharmony_ci			end
696e5c31af7Sopenharmony_ci			case ivec3_to_vec3
697e5c31af7Sopenharmony_ci				version 320 es
698e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
699e5c31af7Sopenharmony_ci				values
700e5c31af7Sopenharmony_ci				{
701e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
702e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, -1.0, -1.0) | vec3(2.0, 5.0, -1.0) ];
703e5c31af7Sopenharmony_ci				}
704e5c31af7Sopenharmony_ci
705e5c31af7Sopenharmony_ci				both ""
706e5c31af7Sopenharmony_ci					#version 320 es
707e5c31af7Sopenharmony_ci					precision highp float;
708e5c31af7Sopenharmony_ci					${DECLARATIONS}
709e5c31af7Sopenharmony_ci
710e5c31af7Sopenharmony_ci					void main()
711e5c31af7Sopenharmony_ci					{
712e5c31af7Sopenharmony_ci						${SETUP}
713e5c31af7Sopenharmony_ci						out0 = in0 - vec3(1.0, 2.0, 3.0);
714e5c31af7Sopenharmony_ci						${OUTPUT}
715e5c31af7Sopenharmony_ci					}
716e5c31af7Sopenharmony_ci				""
717e5c31af7Sopenharmony_ci			end
718e5c31af7Sopenharmony_ci			case uvec3_to_vec3
719e5c31af7Sopenharmony_ci				version 320 es
720e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
721e5c31af7Sopenharmony_ci				values
722e5c31af7Sopenharmony_ci				{
723e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
724e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 1.0, 2.0) | vec3(3.0, 4.0, -1.0) | vec3(0.0, 11.0, 4.0) ];
725e5c31af7Sopenharmony_ci				}
726e5c31af7Sopenharmony_ci
727e5c31af7Sopenharmony_ci				both ""
728e5c31af7Sopenharmony_ci					#version 320 es
729e5c31af7Sopenharmony_ci					precision highp float;
730e5c31af7Sopenharmony_ci					${DECLARATIONS}
731e5c31af7Sopenharmony_ci
732e5c31af7Sopenharmony_ci					void main()
733e5c31af7Sopenharmony_ci					{
734e5c31af7Sopenharmony_ci						${SETUP}
735e5c31af7Sopenharmony_ci						out0 = in0 - vec3(1.0, 2.0, 3.0);
736e5c31af7Sopenharmony_ci						${OUTPUT}
737e5c31af7Sopenharmony_ci					}
738e5c31af7Sopenharmony_ci				""
739e5c31af7Sopenharmony_ci			end
740e5c31af7Sopenharmony_ci			case ivec4_to_vec4
741e5c31af7Sopenharmony_ci				version 320 es
742e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
743e5c31af7Sopenharmony_ci				values
744e5c31af7Sopenharmony_ci				{
745e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
746e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, -1.0, -1.0, 2.0) | vec4(2.0, 5.0, -1.0, 1.0) ];
747e5c31af7Sopenharmony_ci				}
748e5c31af7Sopenharmony_ci
749e5c31af7Sopenharmony_ci				both ""
750e5c31af7Sopenharmony_ci					#version 320 es
751e5c31af7Sopenharmony_ci					precision highp float;
752e5c31af7Sopenharmony_ci					${DECLARATIONS}
753e5c31af7Sopenharmony_ci
754e5c31af7Sopenharmony_ci					void main()
755e5c31af7Sopenharmony_ci					{
756e5c31af7Sopenharmony_ci						${SETUP}
757e5c31af7Sopenharmony_ci						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
758e5c31af7Sopenharmony_ci						${OUTPUT}
759e5c31af7Sopenharmony_ci					}
760e5c31af7Sopenharmony_ci				""
761e5c31af7Sopenharmony_ci			end
762e5c31af7Sopenharmony_ci			case uvec4_to_vec4
763e5c31af7Sopenharmony_ci				version 320 es
764e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
765e5c31af7Sopenharmony_ci				values
766e5c31af7Sopenharmony_ci				{
767e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
768e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 1.0, 2.0, 4.0) | vec4(3.0, 4.0, -1.0, 5.0) | vec4(0.0, 11.0, 4.0, 0.0) ];
769e5c31af7Sopenharmony_ci				}
770e5c31af7Sopenharmony_ci
771e5c31af7Sopenharmony_ci				both ""
772e5c31af7Sopenharmony_ci					#version 320 es
773e5c31af7Sopenharmony_ci					precision highp float;
774e5c31af7Sopenharmony_ci					${DECLARATIONS}
775e5c31af7Sopenharmony_ci
776e5c31af7Sopenharmony_ci					void main()
777e5c31af7Sopenharmony_ci					{
778e5c31af7Sopenharmony_ci						${SETUP}
779e5c31af7Sopenharmony_ci						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
780e5c31af7Sopenharmony_ci						${OUTPUT}
781e5c31af7Sopenharmony_ci					}
782e5c31af7Sopenharmony_ci				""
783e5c31af7Sopenharmony_ci			end
784e5c31af7Sopenharmony_ci
785e5c31af7Sopenharmony_ci		end # sub
786e5c31af7Sopenharmony_ci		group mul "Multiplication"
787e5c31af7Sopenharmony_ci
788e5c31af7Sopenharmony_ci			case int_to_float
789e5c31af7Sopenharmony_ci				version 320 es
790e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
791e5c31af7Sopenharmony_ci				values
792e5c31af7Sopenharmony_ci				{
793e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
794e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
795e5c31af7Sopenharmony_ci				}
796e5c31af7Sopenharmony_ci
797e5c31af7Sopenharmony_ci				both ""
798e5c31af7Sopenharmony_ci					#version 320 es
799e5c31af7Sopenharmony_ci					precision highp float;
800e5c31af7Sopenharmony_ci					${DECLARATIONS}
801e5c31af7Sopenharmony_ci
802e5c31af7Sopenharmony_ci					void main()
803e5c31af7Sopenharmony_ci					{
804e5c31af7Sopenharmony_ci						${SETUP}
805e5c31af7Sopenharmony_ci						out0 = in0 * 2.0;
806e5c31af7Sopenharmony_ci						${OUTPUT}
807e5c31af7Sopenharmony_ci					}
808e5c31af7Sopenharmony_ci				""
809e5c31af7Sopenharmony_ci			end
810e5c31af7Sopenharmony_ci			case int_to_uint
811e5c31af7Sopenharmony_ci				version 320 es
812e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
813e5c31af7Sopenharmony_ci				values
814e5c31af7Sopenharmony_ci				{
815e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
816e5c31af7Sopenharmony_ci					output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
817e5c31af7Sopenharmony_ci				}
818e5c31af7Sopenharmony_ci
819e5c31af7Sopenharmony_ci				both ""
820e5c31af7Sopenharmony_ci					#version 320 es
821e5c31af7Sopenharmony_ci					precision highp float;
822e5c31af7Sopenharmony_ci					${DECLARATIONS}
823e5c31af7Sopenharmony_ci
824e5c31af7Sopenharmony_ci					void main()
825e5c31af7Sopenharmony_ci					{
826e5c31af7Sopenharmony_ci						${SETUP}
827e5c31af7Sopenharmony_ci						out0 = in0 * 2;
828e5c31af7Sopenharmony_ci						${OUTPUT}
829e5c31af7Sopenharmony_ci					}
830e5c31af7Sopenharmony_ci				""
831e5c31af7Sopenharmony_ci			end
832e5c31af7Sopenharmony_ci			case int_to_vec2
833e5c31af7Sopenharmony_ci				version 320 es
834e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
835e5c31af7Sopenharmony_ci				values
836e5c31af7Sopenharmony_ci				{
837e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
838e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(5.0, 10.0) ];
839e5c31af7Sopenharmony_ci				}
840e5c31af7Sopenharmony_ci
841e5c31af7Sopenharmony_ci				both ""
842e5c31af7Sopenharmony_ci					#version 320 es
843e5c31af7Sopenharmony_ci					precision highp float;
844e5c31af7Sopenharmony_ci					${DECLARATIONS}
845e5c31af7Sopenharmony_ci
846e5c31af7Sopenharmony_ci					void main()
847e5c31af7Sopenharmony_ci					{
848e5c31af7Sopenharmony_ci						${SETUP}
849e5c31af7Sopenharmony_ci						out0 = in0 * vec2(1.0, 2.0);
850e5c31af7Sopenharmony_ci						${OUTPUT}
851e5c31af7Sopenharmony_ci					}
852e5c31af7Sopenharmony_ci				""
853e5c31af7Sopenharmony_ci			end
854e5c31af7Sopenharmony_ci			case int_to_vec3
855e5c31af7Sopenharmony_ci				version 320 es
856e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
857e5c31af7Sopenharmony_ci				values
858e5c31af7Sopenharmony_ci				{
859e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
860e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(5.0, 10.0, 15.0) ];
861e5c31af7Sopenharmony_ci				}
862e5c31af7Sopenharmony_ci
863e5c31af7Sopenharmony_ci				both ""
864e5c31af7Sopenharmony_ci					#version 320 es
865e5c31af7Sopenharmony_ci					precision highp float;
866e5c31af7Sopenharmony_ci					${DECLARATIONS}
867e5c31af7Sopenharmony_ci
868e5c31af7Sopenharmony_ci					void main()
869e5c31af7Sopenharmony_ci					{
870e5c31af7Sopenharmony_ci						${SETUP}
871e5c31af7Sopenharmony_ci						out0 = in0 * vec3(1.0, 2.0, 3.0);
872e5c31af7Sopenharmony_ci						${OUTPUT}
873e5c31af7Sopenharmony_ci					}
874e5c31af7Sopenharmony_ci				""
875e5c31af7Sopenharmony_ci			end
876e5c31af7Sopenharmony_ci			case int_to_vec4
877e5c31af7Sopenharmony_ci				version 320 es
878e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
879e5c31af7Sopenharmony_ci				values
880e5c31af7Sopenharmony_ci				{
881e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
882e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(5.0, 10.0, 15.0, 20.0) ];
883e5c31af7Sopenharmony_ci				}
884e5c31af7Sopenharmony_ci
885e5c31af7Sopenharmony_ci				both ""
886e5c31af7Sopenharmony_ci					#version 320 es
887e5c31af7Sopenharmony_ci					precision highp float;
888e5c31af7Sopenharmony_ci					${DECLARATIONS}
889e5c31af7Sopenharmony_ci
890e5c31af7Sopenharmony_ci					void main()
891e5c31af7Sopenharmony_ci					{
892e5c31af7Sopenharmony_ci						${SETUP}
893e5c31af7Sopenharmony_ci						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
894e5c31af7Sopenharmony_ci						${OUTPUT}
895e5c31af7Sopenharmony_ci					}
896e5c31af7Sopenharmony_ci				""
897e5c31af7Sopenharmony_ci			end
898e5c31af7Sopenharmony_ci			case int_to_uvec2
899e5c31af7Sopenharmony_ci				version 320 es
900e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
901e5c31af7Sopenharmony_ci				values
902e5c31af7Sopenharmony_ci				{
903e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
904e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(2, 4) | uvec2(1, 2) | uvec2(1, 2) | uvec2(3, 6) | uvec2(5, 10) ];
905e5c31af7Sopenharmony_ci				}
906e5c31af7Sopenharmony_ci
907e5c31af7Sopenharmony_ci				both ""
908e5c31af7Sopenharmony_ci					#version 320 es
909e5c31af7Sopenharmony_ci					precision highp float;
910e5c31af7Sopenharmony_ci					${DECLARATIONS}
911e5c31af7Sopenharmony_ci
912e5c31af7Sopenharmony_ci					void main()
913e5c31af7Sopenharmony_ci					{
914e5c31af7Sopenharmony_ci						${SETUP}
915e5c31af7Sopenharmony_ci						out0 = in0 * uvec2(1, 2);
916e5c31af7Sopenharmony_ci						${OUTPUT}
917e5c31af7Sopenharmony_ci					}
918e5c31af7Sopenharmony_ci				""
919e5c31af7Sopenharmony_ci			end
920e5c31af7Sopenharmony_ci			case int_to_uvec3
921e5c31af7Sopenharmony_ci				version 320 es
922e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
923e5c31af7Sopenharmony_ci				values
924e5c31af7Sopenharmony_ci				{
925e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
926e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(3, 6, 9) | uvec3(5, 10, 15) ];
927e5c31af7Sopenharmony_ci				}
928e5c31af7Sopenharmony_ci
929e5c31af7Sopenharmony_ci				both ""
930e5c31af7Sopenharmony_ci					#version 320 es
931e5c31af7Sopenharmony_ci					precision highp float;
932e5c31af7Sopenharmony_ci					${DECLARATIONS}
933e5c31af7Sopenharmony_ci
934e5c31af7Sopenharmony_ci					void main()
935e5c31af7Sopenharmony_ci					{
936e5c31af7Sopenharmony_ci						${SETUP}
937e5c31af7Sopenharmony_ci						out0 = in0 * uvec3(1, 2, 3);
938e5c31af7Sopenharmony_ci						${OUTPUT}
939e5c31af7Sopenharmony_ci					}
940e5c31af7Sopenharmony_ci				""
941e5c31af7Sopenharmony_ci			end
942e5c31af7Sopenharmony_ci			case int_to_uvec4
943e5c31af7Sopenharmony_ci				version 320 es
944e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
945e5c31af7Sopenharmony_ci				values
946e5c31af7Sopenharmony_ci				{
947e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
948e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(3, 6, 9, 12) | uvec4(5, 10, 15, 20) ];
949e5c31af7Sopenharmony_ci				}
950e5c31af7Sopenharmony_ci
951e5c31af7Sopenharmony_ci				both ""
952e5c31af7Sopenharmony_ci					#version 320 es
953e5c31af7Sopenharmony_ci					precision highp float;
954e5c31af7Sopenharmony_ci					${DECLARATIONS}
955e5c31af7Sopenharmony_ci
956e5c31af7Sopenharmony_ci					void main()
957e5c31af7Sopenharmony_ci					{
958e5c31af7Sopenharmony_ci						${SETUP}
959e5c31af7Sopenharmony_ci						out0 = in0 * uvec4(1, 2, 3, 4);
960e5c31af7Sopenharmony_ci						${OUTPUT}
961e5c31af7Sopenharmony_ci					}
962e5c31af7Sopenharmony_ci				""
963e5c31af7Sopenharmony_ci			end
964e5c31af7Sopenharmony_ci			case uint_to_float
965e5c31af7Sopenharmony_ci				version 320 es
966e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
967e5c31af7Sopenharmony_ci				values
968e5c31af7Sopenharmony_ci				{
969e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
970e5c31af7Sopenharmony_ci					output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
971e5c31af7Sopenharmony_ci				}
972e5c31af7Sopenharmony_ci
973e5c31af7Sopenharmony_ci				both ""
974e5c31af7Sopenharmony_ci					#version 320 es
975e5c31af7Sopenharmony_ci					precision highp float;
976e5c31af7Sopenharmony_ci					${DECLARATIONS}
977e5c31af7Sopenharmony_ci
978e5c31af7Sopenharmony_ci					void main()
979e5c31af7Sopenharmony_ci					{
980e5c31af7Sopenharmony_ci						${SETUP}
981e5c31af7Sopenharmony_ci						out0 = in0 * 2.0;
982e5c31af7Sopenharmony_ci						${OUTPUT}
983e5c31af7Sopenharmony_ci					}
984e5c31af7Sopenharmony_ci				""
985e5c31af7Sopenharmony_ci			end
986e5c31af7Sopenharmony_ci			case uint_to_vec2
987e5c31af7Sopenharmony_ci				version 320 es
988e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
989e5c31af7Sopenharmony_ci				values
990e5c31af7Sopenharmony_ci				{
991e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
992e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(4.0, 8.0) | vec2(7.0, 14.0) | vec2(11.0, 22.0) ];
993e5c31af7Sopenharmony_ci				}
994e5c31af7Sopenharmony_ci
995e5c31af7Sopenharmony_ci				both ""
996e5c31af7Sopenharmony_ci					#version 320 es
997e5c31af7Sopenharmony_ci					precision highp float;
998e5c31af7Sopenharmony_ci					${DECLARATIONS}
999e5c31af7Sopenharmony_ci
1000e5c31af7Sopenharmony_ci					void main()
1001e5c31af7Sopenharmony_ci					{
1002e5c31af7Sopenharmony_ci						${SETUP}
1003e5c31af7Sopenharmony_ci						out0 = in0 * vec2(1.0, 2.0);
1004e5c31af7Sopenharmony_ci						${OUTPUT}
1005e5c31af7Sopenharmony_ci					}
1006e5c31af7Sopenharmony_ci				""
1007e5c31af7Sopenharmony_ci			end
1008e5c31af7Sopenharmony_ci			case uint_to_vec3
1009e5c31af7Sopenharmony_ci				version 320 es
1010e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1011e5c31af7Sopenharmony_ci				values
1012e5c31af7Sopenharmony_ci				{
1013e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1014e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(4.0, 8.0, 12.0) | vec3(7.0, 14.0, 21.0) | vec3(11.0, 22.0, 33.0) ];
1015e5c31af7Sopenharmony_ci				}
1016e5c31af7Sopenharmony_ci
1017e5c31af7Sopenharmony_ci				both ""
1018e5c31af7Sopenharmony_ci					#version 320 es
1019e5c31af7Sopenharmony_ci					precision highp float;
1020e5c31af7Sopenharmony_ci					${DECLARATIONS}
1021e5c31af7Sopenharmony_ci
1022e5c31af7Sopenharmony_ci					void main()
1023e5c31af7Sopenharmony_ci					{
1024e5c31af7Sopenharmony_ci						${SETUP}
1025e5c31af7Sopenharmony_ci						out0 = in0 * vec3(1.0, 2.0, 3.0);
1026e5c31af7Sopenharmony_ci						${OUTPUT}
1027e5c31af7Sopenharmony_ci					}
1028e5c31af7Sopenharmony_ci				""
1029e5c31af7Sopenharmony_ci			end
1030e5c31af7Sopenharmony_ci			case uint_to_vec4
1031e5c31af7Sopenharmony_ci				version 320 es
1032e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1033e5c31af7Sopenharmony_ci				values
1034e5c31af7Sopenharmony_ci				{
1035e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1036e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(4.0, 8.0, 12.0, 16.0) | vec4(7.0, 14.0, 21.0, 28.0) | vec4(11.0, 22.0, 33.0, 44.0) ];
1037e5c31af7Sopenharmony_ci				}
1038e5c31af7Sopenharmony_ci
1039e5c31af7Sopenharmony_ci				both ""
1040e5c31af7Sopenharmony_ci					#version 320 es
1041e5c31af7Sopenharmony_ci					precision highp float;
1042e5c31af7Sopenharmony_ci					${DECLARATIONS}
1043e5c31af7Sopenharmony_ci
1044e5c31af7Sopenharmony_ci					void main()
1045e5c31af7Sopenharmony_ci					{
1046e5c31af7Sopenharmony_ci						${SETUP}
1047e5c31af7Sopenharmony_ci						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
1048e5c31af7Sopenharmony_ci						${OUTPUT}
1049e5c31af7Sopenharmony_ci					}
1050e5c31af7Sopenharmony_ci				""
1051e5c31af7Sopenharmony_ci			end
1052e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
1053e5c31af7Sopenharmony_ci				version 320 es
1054e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1055e5c31af7Sopenharmony_ci				values
1056e5c31af7Sopenharmony_ci				{
1057e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
1058e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(1, 4) | uvec2(2, 2) | uvec2(3, 14) ];
1059e5c31af7Sopenharmony_ci				}
1060e5c31af7Sopenharmony_ci
1061e5c31af7Sopenharmony_ci				both ""
1062e5c31af7Sopenharmony_ci					#version 320 es
1063e5c31af7Sopenharmony_ci					precision highp float;
1064e5c31af7Sopenharmony_ci					${DECLARATIONS}
1065e5c31af7Sopenharmony_ci
1066e5c31af7Sopenharmony_ci					void main()
1067e5c31af7Sopenharmony_ci					{
1068e5c31af7Sopenharmony_ci						${SETUP}
1069e5c31af7Sopenharmony_ci						out0 = in0 * uvec2(1, 2);
1070e5c31af7Sopenharmony_ci						${OUTPUT}
1071e5c31af7Sopenharmony_ci					}
1072e5c31af7Sopenharmony_ci				""
1073e5c31af7Sopenharmony_ci			end
1074e5c31af7Sopenharmony_ci			case ivec2_to_vec2
1075e5c31af7Sopenharmony_ci				version 320 es
1076e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1077e5c31af7Sopenharmony_ci				values
1078e5c31af7Sopenharmony_ci				{
1079e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
1080e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 4.0) | vec2(2.0, 2.0) | vec2(3.0, 14.0) ];
1081e5c31af7Sopenharmony_ci				}
1082e5c31af7Sopenharmony_ci
1083e5c31af7Sopenharmony_ci				both ""
1084e5c31af7Sopenharmony_ci					#version 320 es
1085e5c31af7Sopenharmony_ci					precision highp float;
1086e5c31af7Sopenharmony_ci					${DECLARATIONS}
1087e5c31af7Sopenharmony_ci
1088e5c31af7Sopenharmony_ci					void main()
1089e5c31af7Sopenharmony_ci					{
1090e5c31af7Sopenharmony_ci						${SETUP}
1091e5c31af7Sopenharmony_ci						out0 = in0 * vec2(1.0, 2.0);
1092e5c31af7Sopenharmony_ci						${OUTPUT}
1093e5c31af7Sopenharmony_ci					}
1094e5c31af7Sopenharmony_ci				""
1095e5c31af7Sopenharmony_ci			end
1096e5c31af7Sopenharmony_ci			case uvec2_to_vec2
1097e5c31af7Sopenharmony_ci				version 320 es
1098e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1099e5c31af7Sopenharmony_ci				values
1100e5c31af7Sopenharmony_ci				{
1101e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
1102e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 6.0) | vec2(4.0, 12.0) | vec2(1.0, 26.0) ];
1103e5c31af7Sopenharmony_ci				}
1104e5c31af7Sopenharmony_ci
1105e5c31af7Sopenharmony_ci				both ""
1106e5c31af7Sopenharmony_ci					#version 320 es
1107e5c31af7Sopenharmony_ci					precision highp float;
1108e5c31af7Sopenharmony_ci					${DECLARATIONS}
1109e5c31af7Sopenharmony_ci
1110e5c31af7Sopenharmony_ci					void main()
1111e5c31af7Sopenharmony_ci					{
1112e5c31af7Sopenharmony_ci						${SETUP}
1113e5c31af7Sopenharmony_ci						out0 = in0 * vec2(1.0, 2.0);
1114e5c31af7Sopenharmony_ci						${OUTPUT}
1115e5c31af7Sopenharmony_ci					}
1116e5c31af7Sopenharmony_ci				""
1117e5c31af7Sopenharmony_ci			end
1118e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
1119e5c31af7Sopenharmony_ci				version 320 es
1120e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1121e5c31af7Sopenharmony_ci				values
1122e5c31af7Sopenharmony_ci				{
1123e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
1124e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(1, 4, 9) | uvec3(2, 2, 6) | uvec3(3, 14, 6) ];
1125e5c31af7Sopenharmony_ci				}
1126e5c31af7Sopenharmony_ci
1127e5c31af7Sopenharmony_ci				both ""
1128e5c31af7Sopenharmony_ci					#version 320 es
1129e5c31af7Sopenharmony_ci					precision highp float;
1130e5c31af7Sopenharmony_ci					${DECLARATIONS}
1131e5c31af7Sopenharmony_ci
1132e5c31af7Sopenharmony_ci					void main()
1133e5c31af7Sopenharmony_ci					{
1134e5c31af7Sopenharmony_ci						${SETUP}
1135e5c31af7Sopenharmony_ci						out0 = in0 * uvec3(1, 2, 3);
1136e5c31af7Sopenharmony_ci						${OUTPUT}
1137e5c31af7Sopenharmony_ci					}
1138e5c31af7Sopenharmony_ci				""
1139e5c31af7Sopenharmony_ci			end
1140e5c31af7Sopenharmony_ci			case ivec3_to_vec3
1141e5c31af7Sopenharmony_ci				version 320 es
1142e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1143e5c31af7Sopenharmony_ci				values
1144e5c31af7Sopenharmony_ci				{
1145e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
1146e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 4.0, 9.0) | vec3(2.0, 2.0, 6.0) | vec3(3.0, 14.0, 6.0) ];
1147e5c31af7Sopenharmony_ci				}
1148e5c31af7Sopenharmony_ci
1149e5c31af7Sopenharmony_ci				both ""
1150e5c31af7Sopenharmony_ci					#version 320 es
1151e5c31af7Sopenharmony_ci					precision highp float;
1152e5c31af7Sopenharmony_ci					${DECLARATIONS}
1153e5c31af7Sopenharmony_ci
1154e5c31af7Sopenharmony_ci					void main()
1155e5c31af7Sopenharmony_ci					{
1156e5c31af7Sopenharmony_ci						${SETUP}
1157e5c31af7Sopenharmony_ci						out0 = in0 * vec3(1.0, 2.0, 3.0);
1158e5c31af7Sopenharmony_ci						${OUTPUT}
1159e5c31af7Sopenharmony_ci					}
1160e5c31af7Sopenharmony_ci				""
1161e5c31af7Sopenharmony_ci			end
1162e5c31af7Sopenharmony_ci			case uvec3_to_vec3
1163e5c31af7Sopenharmony_ci				version 320 es
1164e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1165e5c31af7Sopenharmony_ci				values
1166e5c31af7Sopenharmony_ci				{
1167e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
1168e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 6.0, 15.0) | vec3(4.0, 12.0, 6.0) | vec3(1.0, 26.0, 21.0) ];
1169e5c31af7Sopenharmony_ci				}
1170e5c31af7Sopenharmony_ci
1171e5c31af7Sopenharmony_ci				both ""
1172e5c31af7Sopenharmony_ci					#version 320 es
1173e5c31af7Sopenharmony_ci					precision highp float;
1174e5c31af7Sopenharmony_ci					${DECLARATIONS}
1175e5c31af7Sopenharmony_ci
1176e5c31af7Sopenharmony_ci					void main()
1177e5c31af7Sopenharmony_ci					{
1178e5c31af7Sopenharmony_ci						${SETUP}
1179e5c31af7Sopenharmony_ci						out0 = in0 * vec3(1.0, 2.0, 3.0);
1180e5c31af7Sopenharmony_ci						${OUTPUT}
1181e5c31af7Sopenharmony_ci					}
1182e5c31af7Sopenharmony_ci				""
1183e5c31af7Sopenharmony_ci			end
1184e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
1185e5c31af7Sopenharmony_ci				version 320 es
1186e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1187e5c31af7Sopenharmony_ci				values
1188e5c31af7Sopenharmony_ci				{
1189e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
1190e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(1, 4, 9, 16) | uvec4(2, 2, 6, 24) | uvec4(3, 14, 6, 20) ];
1191e5c31af7Sopenharmony_ci				}
1192e5c31af7Sopenharmony_ci
1193e5c31af7Sopenharmony_ci				both ""
1194e5c31af7Sopenharmony_ci					#version 320 es
1195e5c31af7Sopenharmony_ci					precision highp float;
1196e5c31af7Sopenharmony_ci					${DECLARATIONS}
1197e5c31af7Sopenharmony_ci
1198e5c31af7Sopenharmony_ci					void main()
1199e5c31af7Sopenharmony_ci					{
1200e5c31af7Sopenharmony_ci						${SETUP}
1201e5c31af7Sopenharmony_ci						out0 = in0 * uvec4(1, 2, 3, 4);
1202e5c31af7Sopenharmony_ci						${OUTPUT}
1203e5c31af7Sopenharmony_ci					}
1204e5c31af7Sopenharmony_ci				""
1205e5c31af7Sopenharmony_ci			end
1206e5c31af7Sopenharmony_ci			case ivec4_to_vec4
1207e5c31af7Sopenharmony_ci				version 320 es
1208e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1209e5c31af7Sopenharmony_ci				values
1210e5c31af7Sopenharmony_ci				{
1211e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
1212e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 4.0, 9.0, 16.0) | vec4(2.0, 2.0, 6.0, 24.0) | vec4(3.0, 14.0, 6.0, 20.0) ];
1213e5c31af7Sopenharmony_ci				}
1214e5c31af7Sopenharmony_ci
1215e5c31af7Sopenharmony_ci				both ""
1216e5c31af7Sopenharmony_ci					#version 320 es
1217e5c31af7Sopenharmony_ci					precision highp float;
1218e5c31af7Sopenharmony_ci					${DECLARATIONS}
1219e5c31af7Sopenharmony_ci
1220e5c31af7Sopenharmony_ci					void main()
1221e5c31af7Sopenharmony_ci					{
1222e5c31af7Sopenharmony_ci						${SETUP}
1223e5c31af7Sopenharmony_ci						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
1224e5c31af7Sopenharmony_ci						${OUTPUT}
1225e5c31af7Sopenharmony_ci					}
1226e5c31af7Sopenharmony_ci				""
1227e5c31af7Sopenharmony_ci			end
1228e5c31af7Sopenharmony_ci			case uvec4_to_vec4
1229e5c31af7Sopenharmony_ci				version 320 es
1230e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1231e5c31af7Sopenharmony_ci				values
1232e5c31af7Sopenharmony_ci				{
1233e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
1234e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 6.0, 15.0, 32.0) | vec4(4.0, 12.0, 6.0, 36.0) | vec4(1.0, 26.0, 21.0, 16.0) ];
1235e5c31af7Sopenharmony_ci				}
1236e5c31af7Sopenharmony_ci
1237e5c31af7Sopenharmony_ci				both ""
1238e5c31af7Sopenharmony_ci					#version 320 es
1239e5c31af7Sopenharmony_ci					precision highp float;
1240e5c31af7Sopenharmony_ci					${DECLARATIONS}
1241e5c31af7Sopenharmony_ci
1242e5c31af7Sopenharmony_ci					void main()
1243e5c31af7Sopenharmony_ci					{
1244e5c31af7Sopenharmony_ci						${SETUP}
1245e5c31af7Sopenharmony_ci						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
1246e5c31af7Sopenharmony_ci						${OUTPUT}
1247e5c31af7Sopenharmony_ci					}
1248e5c31af7Sopenharmony_ci				""
1249e5c31af7Sopenharmony_ci			end
1250e5c31af7Sopenharmony_ci
1251e5c31af7Sopenharmony_ci		end # mul
1252e5c31af7Sopenharmony_ci		group div "Division"
1253e5c31af7Sopenharmony_ci
1254e5c31af7Sopenharmony_ci			case int_to_float
1255e5c31af7Sopenharmony_ci				version 320 es
1256e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1257e5c31af7Sopenharmony_ci				values
1258e5c31af7Sopenharmony_ci				{
1259e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1260e5c31af7Sopenharmony_ci					output float out0 = [ 1.0 | 0.5 | 0.5 | 1.5 | 2.5 ];
1261e5c31af7Sopenharmony_ci				}
1262e5c31af7Sopenharmony_ci
1263e5c31af7Sopenharmony_ci				both ""
1264e5c31af7Sopenharmony_ci					#version 320 es
1265e5c31af7Sopenharmony_ci					precision highp float;
1266e5c31af7Sopenharmony_ci					${DECLARATIONS}
1267e5c31af7Sopenharmony_ci
1268e5c31af7Sopenharmony_ci					void main()
1269e5c31af7Sopenharmony_ci					{
1270e5c31af7Sopenharmony_ci						${SETUP}
1271e5c31af7Sopenharmony_ci						out0 = in0 / 2.0;
1272e5c31af7Sopenharmony_ci						${OUTPUT}
1273e5c31af7Sopenharmony_ci					}
1274e5c31af7Sopenharmony_ci				""
1275e5c31af7Sopenharmony_ci			end
1276e5c31af7Sopenharmony_ci			case int_to_uint
1277e5c31af7Sopenharmony_ci				version 320 es
1278e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1279e5c31af7Sopenharmony_ci				values
1280e5c31af7Sopenharmony_ci				{
1281e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1282e5c31af7Sopenharmony_ci					output uint out0 = [ 1 | 0 | 0 | 1 | 2 ];
1283e5c31af7Sopenharmony_ci				}
1284e5c31af7Sopenharmony_ci
1285e5c31af7Sopenharmony_ci				both ""
1286e5c31af7Sopenharmony_ci					#version 320 es
1287e5c31af7Sopenharmony_ci					precision highp float;
1288e5c31af7Sopenharmony_ci					${DECLARATIONS}
1289e5c31af7Sopenharmony_ci
1290e5c31af7Sopenharmony_ci					void main()
1291e5c31af7Sopenharmony_ci					{
1292e5c31af7Sopenharmony_ci						${SETUP}
1293e5c31af7Sopenharmony_ci						out0 = in0 / 2;
1294e5c31af7Sopenharmony_ci						${OUTPUT}
1295e5c31af7Sopenharmony_ci					}
1296e5c31af7Sopenharmony_ci				""
1297e5c31af7Sopenharmony_ci			end
1298e5c31af7Sopenharmony_ci			case int_to_vec2
1299e5c31af7Sopenharmony_ci				version 320 es
1300e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1301e5c31af7Sopenharmony_ci				values
1302e5c31af7Sopenharmony_ci				{
1303e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1304e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 1.0) | vec2(1.0, 0.5) | vec2(1.0, 0.5) | vec2(3.0, 1.5) | vec2(5.0, 2.5) ];
1305e5c31af7Sopenharmony_ci				}
1306e5c31af7Sopenharmony_ci
1307e5c31af7Sopenharmony_ci				both ""
1308e5c31af7Sopenharmony_ci					#version 320 es
1309e5c31af7Sopenharmony_ci					precision highp float;
1310e5c31af7Sopenharmony_ci					${DECLARATIONS}
1311e5c31af7Sopenharmony_ci
1312e5c31af7Sopenharmony_ci					void main()
1313e5c31af7Sopenharmony_ci					{
1314e5c31af7Sopenharmony_ci						${SETUP}
1315e5c31af7Sopenharmony_ci						out0 = in0 / vec2(1.0, 2.0);
1316e5c31af7Sopenharmony_ci						${OUTPUT}
1317e5c31af7Sopenharmony_ci					}
1318e5c31af7Sopenharmony_ci				""
1319e5c31af7Sopenharmony_ci			end
1320e5c31af7Sopenharmony_ci			case int_to_vec3
1321e5c31af7Sopenharmony_ci				version 320 es
1322e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1323e5c31af7Sopenharmony_ci				values
1324e5c31af7Sopenharmony_ci				{
1325e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1326e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 1.0, 0.666666666667) | vec3(1.0, 0.5, 0.333333333333) | vec3(1.0, 0.5, 0.333333333333) | vec3(3.0, 1.5, 1.0) | vec3(5.0, 2.5, 1.66666666667) ];
1327e5c31af7Sopenharmony_ci				}
1328e5c31af7Sopenharmony_ci
1329e5c31af7Sopenharmony_ci				both ""
1330e5c31af7Sopenharmony_ci					#version 320 es
1331e5c31af7Sopenharmony_ci					precision highp float;
1332e5c31af7Sopenharmony_ci					${DECLARATIONS}
1333e5c31af7Sopenharmony_ci
1334e5c31af7Sopenharmony_ci					void main()
1335e5c31af7Sopenharmony_ci					{
1336e5c31af7Sopenharmony_ci						${SETUP}
1337e5c31af7Sopenharmony_ci						out0 = in0 / vec3(1.0, 2.0, 3.0);
1338e5c31af7Sopenharmony_ci						${OUTPUT}
1339e5c31af7Sopenharmony_ci					}
1340e5c31af7Sopenharmony_ci				""
1341e5c31af7Sopenharmony_ci			end
1342e5c31af7Sopenharmony_ci			case int_to_vec4
1343e5c31af7Sopenharmony_ci				version 320 es
1344e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1345e5c31af7Sopenharmony_ci				values
1346e5c31af7Sopenharmony_ci				{
1347e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1348e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 1.0, 0.666666666667, 0.5) | vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(3.0, 1.5, 1.0, 0.75) | vec4(5.0, 2.5, 1.66666666667, 1.25) ];
1349e5c31af7Sopenharmony_ci				}
1350e5c31af7Sopenharmony_ci
1351e5c31af7Sopenharmony_ci				both ""
1352e5c31af7Sopenharmony_ci					#version 320 es
1353e5c31af7Sopenharmony_ci					precision highp float;
1354e5c31af7Sopenharmony_ci					${DECLARATIONS}
1355e5c31af7Sopenharmony_ci
1356e5c31af7Sopenharmony_ci					void main()
1357e5c31af7Sopenharmony_ci					{
1358e5c31af7Sopenharmony_ci						${SETUP}
1359e5c31af7Sopenharmony_ci						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
1360e5c31af7Sopenharmony_ci						${OUTPUT}
1361e5c31af7Sopenharmony_ci					}
1362e5c31af7Sopenharmony_ci				""
1363e5c31af7Sopenharmony_ci			end
1364e5c31af7Sopenharmony_ci			case int_to_uvec2
1365e5c31af7Sopenharmony_ci				version 320 es
1366e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1367e5c31af7Sopenharmony_ci				values
1368e5c31af7Sopenharmony_ci				{
1369e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1370e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(2, 1) | uvec2(1, 0) | uvec2(1, 0) | uvec2(3, 1) | uvec2(5, 2) ];
1371e5c31af7Sopenharmony_ci				}
1372e5c31af7Sopenharmony_ci
1373e5c31af7Sopenharmony_ci				both ""
1374e5c31af7Sopenharmony_ci					#version 320 es
1375e5c31af7Sopenharmony_ci					precision highp float;
1376e5c31af7Sopenharmony_ci					${DECLARATIONS}
1377e5c31af7Sopenharmony_ci
1378e5c31af7Sopenharmony_ci					void main()
1379e5c31af7Sopenharmony_ci					{
1380e5c31af7Sopenharmony_ci						${SETUP}
1381e5c31af7Sopenharmony_ci						out0 = in0 / uvec2(1, 2);
1382e5c31af7Sopenharmony_ci						${OUTPUT}
1383e5c31af7Sopenharmony_ci					}
1384e5c31af7Sopenharmony_ci				""
1385e5c31af7Sopenharmony_ci			end
1386e5c31af7Sopenharmony_ci			case int_to_uvec3
1387e5c31af7Sopenharmony_ci				version 320 es
1388e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1389e5c31af7Sopenharmony_ci				values
1390e5c31af7Sopenharmony_ci				{
1391e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1392e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(2, 1, 0) | uvec3(1, 0, 0) | uvec3(1, 0, 0) | uvec3(3, 1, 1) | uvec3(5, 2, 1) ];
1393e5c31af7Sopenharmony_ci				}
1394e5c31af7Sopenharmony_ci
1395e5c31af7Sopenharmony_ci				both ""
1396e5c31af7Sopenharmony_ci					#version 320 es
1397e5c31af7Sopenharmony_ci					precision highp float;
1398e5c31af7Sopenharmony_ci					${DECLARATIONS}
1399e5c31af7Sopenharmony_ci
1400e5c31af7Sopenharmony_ci					void main()
1401e5c31af7Sopenharmony_ci					{
1402e5c31af7Sopenharmony_ci						${SETUP}
1403e5c31af7Sopenharmony_ci						out0 = in0 / uvec3(1, 2, 3);
1404e5c31af7Sopenharmony_ci						${OUTPUT}
1405e5c31af7Sopenharmony_ci					}
1406e5c31af7Sopenharmony_ci				""
1407e5c31af7Sopenharmony_ci			end
1408e5c31af7Sopenharmony_ci			case int_to_uvec4
1409e5c31af7Sopenharmony_ci				version 320 es
1410e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1411e5c31af7Sopenharmony_ci				values
1412e5c31af7Sopenharmony_ci				{
1413e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1414e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(2, 1, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(3, 1, 1, 0) | uvec4(5, 2, 1, 1) ];
1415e5c31af7Sopenharmony_ci				}
1416e5c31af7Sopenharmony_ci
1417e5c31af7Sopenharmony_ci				both ""
1418e5c31af7Sopenharmony_ci					#version 320 es
1419e5c31af7Sopenharmony_ci					precision highp float;
1420e5c31af7Sopenharmony_ci					${DECLARATIONS}
1421e5c31af7Sopenharmony_ci
1422e5c31af7Sopenharmony_ci					void main()
1423e5c31af7Sopenharmony_ci					{
1424e5c31af7Sopenharmony_ci						${SETUP}
1425e5c31af7Sopenharmony_ci						out0 = in0 / uvec4(1, 2, 3, 4);
1426e5c31af7Sopenharmony_ci						${OUTPUT}
1427e5c31af7Sopenharmony_ci					}
1428e5c31af7Sopenharmony_ci				""
1429e5c31af7Sopenharmony_ci			end
1430e5c31af7Sopenharmony_ci			case uint_to_float
1431e5c31af7Sopenharmony_ci				version 320 es
1432e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1433e5c31af7Sopenharmony_ci				values
1434e5c31af7Sopenharmony_ci				{
1435e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1436e5c31af7Sopenharmony_ci					output float out0 = [ 0.5 | 1.5 | 2.0 | 3.5 | 5.5 ];
1437e5c31af7Sopenharmony_ci				}
1438e5c31af7Sopenharmony_ci
1439e5c31af7Sopenharmony_ci				both ""
1440e5c31af7Sopenharmony_ci					#version 320 es
1441e5c31af7Sopenharmony_ci					precision highp float;
1442e5c31af7Sopenharmony_ci					${DECLARATIONS}
1443e5c31af7Sopenharmony_ci
1444e5c31af7Sopenharmony_ci					void main()
1445e5c31af7Sopenharmony_ci					{
1446e5c31af7Sopenharmony_ci						${SETUP}
1447e5c31af7Sopenharmony_ci						out0 = in0 / 2.0;
1448e5c31af7Sopenharmony_ci						${OUTPUT}
1449e5c31af7Sopenharmony_ci					}
1450e5c31af7Sopenharmony_ci				""
1451e5c31af7Sopenharmony_ci			end
1452e5c31af7Sopenharmony_ci			case uint_to_vec2
1453e5c31af7Sopenharmony_ci				version 320 es
1454e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1455e5c31af7Sopenharmony_ci				values
1456e5c31af7Sopenharmony_ci				{
1457e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1458e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 0.5) | vec2(3.0, 1.5) | vec2(4.0, 2.0) | vec2(7.0, 3.5) | vec2(11.0, 5.5) ];
1459e5c31af7Sopenharmony_ci				}
1460e5c31af7Sopenharmony_ci
1461e5c31af7Sopenharmony_ci				both ""
1462e5c31af7Sopenharmony_ci					#version 320 es
1463e5c31af7Sopenharmony_ci					precision highp float;
1464e5c31af7Sopenharmony_ci					${DECLARATIONS}
1465e5c31af7Sopenharmony_ci
1466e5c31af7Sopenharmony_ci					void main()
1467e5c31af7Sopenharmony_ci					{
1468e5c31af7Sopenharmony_ci						${SETUP}
1469e5c31af7Sopenharmony_ci						out0 = in0 / vec2(1.0, 2.0);
1470e5c31af7Sopenharmony_ci						${OUTPUT}
1471e5c31af7Sopenharmony_ci					}
1472e5c31af7Sopenharmony_ci				""
1473e5c31af7Sopenharmony_ci			end
1474e5c31af7Sopenharmony_ci			case uint_to_vec3
1475e5c31af7Sopenharmony_ci				version 320 es
1476e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1477e5c31af7Sopenharmony_ci				values
1478e5c31af7Sopenharmony_ci				{
1479e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1480e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 0.5, 0.333333333333) | vec3(3.0, 1.5, 1.0) | vec3(4.0, 2.0, 1.33333333333) | vec3(7.0, 3.5, 2.33333333333) | vec3(11.0, 5.5, 3.66666666667) ];
1481e5c31af7Sopenharmony_ci				}
1482e5c31af7Sopenharmony_ci
1483e5c31af7Sopenharmony_ci				both ""
1484e5c31af7Sopenharmony_ci					#version 320 es
1485e5c31af7Sopenharmony_ci					precision highp float;
1486e5c31af7Sopenharmony_ci					${DECLARATIONS}
1487e5c31af7Sopenharmony_ci
1488e5c31af7Sopenharmony_ci					void main()
1489e5c31af7Sopenharmony_ci					{
1490e5c31af7Sopenharmony_ci						${SETUP}
1491e5c31af7Sopenharmony_ci						out0 = in0 / vec3(1.0, 2.0, 3.0);
1492e5c31af7Sopenharmony_ci						${OUTPUT}
1493e5c31af7Sopenharmony_ci					}
1494e5c31af7Sopenharmony_ci				""
1495e5c31af7Sopenharmony_ci			end
1496e5c31af7Sopenharmony_ci			case uint_to_vec4
1497e5c31af7Sopenharmony_ci				version 320 es
1498e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1499e5c31af7Sopenharmony_ci				values
1500e5c31af7Sopenharmony_ci				{
1501e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1502e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(3.0, 1.5, 1.0, 0.75) | vec4(4.0, 2.0, 1.33333333333, 1.0) | vec4(7.0, 3.5, 2.33333333333, 1.75) | vec4(11.0, 5.5, 3.66666666667, 2.75) ];
1503e5c31af7Sopenharmony_ci				}
1504e5c31af7Sopenharmony_ci
1505e5c31af7Sopenharmony_ci				both ""
1506e5c31af7Sopenharmony_ci					#version 320 es
1507e5c31af7Sopenharmony_ci					precision highp float;
1508e5c31af7Sopenharmony_ci					${DECLARATIONS}
1509e5c31af7Sopenharmony_ci
1510e5c31af7Sopenharmony_ci					void main()
1511e5c31af7Sopenharmony_ci					{
1512e5c31af7Sopenharmony_ci						${SETUP}
1513e5c31af7Sopenharmony_ci						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
1514e5c31af7Sopenharmony_ci						${OUTPUT}
1515e5c31af7Sopenharmony_ci					}
1516e5c31af7Sopenharmony_ci				""
1517e5c31af7Sopenharmony_ci			end
1518e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
1519e5c31af7Sopenharmony_ci				version 320 es
1520e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1521e5c31af7Sopenharmony_ci				values
1522e5c31af7Sopenharmony_ci				{
1523e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
1524e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(1, 1) | uvec2(2, 0) | uvec2(3, 3) ];
1525e5c31af7Sopenharmony_ci				}
1526e5c31af7Sopenharmony_ci
1527e5c31af7Sopenharmony_ci				both ""
1528e5c31af7Sopenharmony_ci					#version 320 es
1529e5c31af7Sopenharmony_ci					precision highp float;
1530e5c31af7Sopenharmony_ci					${DECLARATIONS}
1531e5c31af7Sopenharmony_ci
1532e5c31af7Sopenharmony_ci					void main()
1533e5c31af7Sopenharmony_ci					{
1534e5c31af7Sopenharmony_ci						${SETUP}
1535e5c31af7Sopenharmony_ci						out0 = in0 / uvec2(1, 2);
1536e5c31af7Sopenharmony_ci						${OUTPUT}
1537e5c31af7Sopenharmony_ci					}
1538e5c31af7Sopenharmony_ci				""
1539e5c31af7Sopenharmony_ci			end
1540e5c31af7Sopenharmony_ci			case ivec2_to_vec2
1541e5c31af7Sopenharmony_ci				version 320 es
1542e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1543e5c31af7Sopenharmony_ci				values
1544e5c31af7Sopenharmony_ci				{
1545e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
1546e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(2.0, 0.5) | vec2(3.0, 3.5) ];
1547e5c31af7Sopenharmony_ci				}
1548e5c31af7Sopenharmony_ci
1549e5c31af7Sopenharmony_ci				both ""
1550e5c31af7Sopenharmony_ci					#version 320 es
1551e5c31af7Sopenharmony_ci					precision highp float;
1552e5c31af7Sopenharmony_ci					${DECLARATIONS}
1553e5c31af7Sopenharmony_ci
1554e5c31af7Sopenharmony_ci					void main()
1555e5c31af7Sopenharmony_ci					{
1556e5c31af7Sopenharmony_ci						${SETUP}
1557e5c31af7Sopenharmony_ci						out0 = in0 / vec2(1.0, 2.0);
1558e5c31af7Sopenharmony_ci						${OUTPUT}
1559e5c31af7Sopenharmony_ci					}
1560e5c31af7Sopenharmony_ci				""
1561e5c31af7Sopenharmony_ci			end
1562e5c31af7Sopenharmony_ci			case uvec2_to_vec2
1563e5c31af7Sopenharmony_ci				version 320 es
1564e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1565e5c31af7Sopenharmony_ci				values
1566e5c31af7Sopenharmony_ci				{
1567e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
1568e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 1.5) | vec2(4.0, 3.0) | vec2(1.0, 6.5) ];
1569e5c31af7Sopenharmony_ci				}
1570e5c31af7Sopenharmony_ci
1571e5c31af7Sopenharmony_ci				both ""
1572e5c31af7Sopenharmony_ci					#version 320 es
1573e5c31af7Sopenharmony_ci					precision highp float;
1574e5c31af7Sopenharmony_ci					${DECLARATIONS}
1575e5c31af7Sopenharmony_ci
1576e5c31af7Sopenharmony_ci					void main()
1577e5c31af7Sopenharmony_ci					{
1578e5c31af7Sopenharmony_ci						${SETUP}
1579e5c31af7Sopenharmony_ci						out0 = in0 / vec2(1.0, 2.0);
1580e5c31af7Sopenharmony_ci						${OUTPUT}
1581e5c31af7Sopenharmony_ci					}
1582e5c31af7Sopenharmony_ci				""
1583e5c31af7Sopenharmony_ci			end
1584e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
1585e5c31af7Sopenharmony_ci				version 320 es
1586e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1587e5c31af7Sopenharmony_ci				values
1588e5c31af7Sopenharmony_ci				{
1589e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
1590e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(2, 0, 0) | uvec3(3, 3, 0) ];
1591e5c31af7Sopenharmony_ci				}
1592e5c31af7Sopenharmony_ci
1593e5c31af7Sopenharmony_ci				both ""
1594e5c31af7Sopenharmony_ci					#version 320 es
1595e5c31af7Sopenharmony_ci					precision highp float;
1596e5c31af7Sopenharmony_ci					${DECLARATIONS}
1597e5c31af7Sopenharmony_ci
1598e5c31af7Sopenharmony_ci					void main()
1599e5c31af7Sopenharmony_ci					{
1600e5c31af7Sopenharmony_ci						${SETUP}
1601e5c31af7Sopenharmony_ci						out0 = in0 / uvec3(1, 2, 3);
1602e5c31af7Sopenharmony_ci						${OUTPUT}
1603e5c31af7Sopenharmony_ci					}
1604e5c31af7Sopenharmony_ci				""
1605e5c31af7Sopenharmony_ci			end
1606e5c31af7Sopenharmony_ci			case ivec3_to_vec3
1607e5c31af7Sopenharmony_ci				version 320 es
1608e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1609e5c31af7Sopenharmony_ci				values
1610e5c31af7Sopenharmony_ci				{
1611e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
1612e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(2.0, 0.5, 0.666666666667) | vec3(3.0, 3.5, 0.666666666667) ];
1613e5c31af7Sopenharmony_ci				}
1614e5c31af7Sopenharmony_ci
1615e5c31af7Sopenharmony_ci				both ""
1616e5c31af7Sopenharmony_ci					#version 320 es
1617e5c31af7Sopenharmony_ci					precision highp float;
1618e5c31af7Sopenharmony_ci					${DECLARATIONS}
1619e5c31af7Sopenharmony_ci
1620e5c31af7Sopenharmony_ci					void main()
1621e5c31af7Sopenharmony_ci					{
1622e5c31af7Sopenharmony_ci						${SETUP}
1623e5c31af7Sopenharmony_ci						out0 = in0 / vec3(1.0, 2.0, 3.0);
1624e5c31af7Sopenharmony_ci						${OUTPUT}
1625e5c31af7Sopenharmony_ci					}
1626e5c31af7Sopenharmony_ci				""
1627e5c31af7Sopenharmony_ci			end
1628e5c31af7Sopenharmony_ci			case uvec3_to_vec3
1629e5c31af7Sopenharmony_ci				version 320 es
1630e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1631e5c31af7Sopenharmony_ci				values
1632e5c31af7Sopenharmony_ci				{
1633e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
1634e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 1.5, 1.66666666667) | vec3(4.0, 3.0, 0.666666666667) | vec3(1.0, 6.5, 2.33333333333) ];
1635e5c31af7Sopenharmony_ci				}
1636e5c31af7Sopenharmony_ci
1637e5c31af7Sopenharmony_ci				both ""
1638e5c31af7Sopenharmony_ci					#version 320 es
1639e5c31af7Sopenharmony_ci					precision highp float;
1640e5c31af7Sopenharmony_ci					${DECLARATIONS}
1641e5c31af7Sopenharmony_ci
1642e5c31af7Sopenharmony_ci					void main()
1643e5c31af7Sopenharmony_ci					{
1644e5c31af7Sopenharmony_ci						${SETUP}
1645e5c31af7Sopenharmony_ci						out0 = in0 / vec3(1.0, 2.0, 3.0);
1646e5c31af7Sopenharmony_ci						${OUTPUT}
1647e5c31af7Sopenharmony_ci					}
1648e5c31af7Sopenharmony_ci				""
1649e5c31af7Sopenharmony_ci			end
1650e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
1651e5c31af7Sopenharmony_ci				version 320 es
1652e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1653e5c31af7Sopenharmony_ci				values
1654e5c31af7Sopenharmony_ci				{
1655e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
1656e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(2, 0, 0, 1) | uvec4(3, 3, 0, 1) ];
1657e5c31af7Sopenharmony_ci				}
1658e5c31af7Sopenharmony_ci
1659e5c31af7Sopenharmony_ci				both ""
1660e5c31af7Sopenharmony_ci					#version 320 es
1661e5c31af7Sopenharmony_ci					precision highp float;
1662e5c31af7Sopenharmony_ci					${DECLARATIONS}
1663e5c31af7Sopenharmony_ci
1664e5c31af7Sopenharmony_ci					void main()
1665e5c31af7Sopenharmony_ci					{
1666e5c31af7Sopenharmony_ci						${SETUP}
1667e5c31af7Sopenharmony_ci						out0 = in0 / uvec4(1, 2, 3, 4);
1668e5c31af7Sopenharmony_ci						${OUTPUT}
1669e5c31af7Sopenharmony_ci					}
1670e5c31af7Sopenharmony_ci				""
1671e5c31af7Sopenharmony_ci			end
1672e5c31af7Sopenharmony_ci			case ivec4_to_vec4
1673e5c31af7Sopenharmony_ci				version 320 es
1674e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1675e5c31af7Sopenharmony_ci				values
1676e5c31af7Sopenharmony_ci				{
1677e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
1678e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 0.5, 0.666666666667, 1.5) | vec4(3.0, 3.5, 0.666666666667, 1.25) ];
1679e5c31af7Sopenharmony_ci				}
1680e5c31af7Sopenharmony_ci
1681e5c31af7Sopenharmony_ci				both ""
1682e5c31af7Sopenharmony_ci					#version 320 es
1683e5c31af7Sopenharmony_ci					precision highp float;
1684e5c31af7Sopenharmony_ci					${DECLARATIONS}
1685e5c31af7Sopenharmony_ci
1686e5c31af7Sopenharmony_ci					void main()
1687e5c31af7Sopenharmony_ci					{
1688e5c31af7Sopenharmony_ci						${SETUP}
1689e5c31af7Sopenharmony_ci						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
1690e5c31af7Sopenharmony_ci						${OUTPUT}
1691e5c31af7Sopenharmony_ci					}
1692e5c31af7Sopenharmony_ci				""
1693e5c31af7Sopenharmony_ci			end
1694e5c31af7Sopenharmony_ci			case uvec4_to_vec4
1695e5c31af7Sopenharmony_ci				version 320 es
1696e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1697e5c31af7Sopenharmony_ci				values
1698e5c31af7Sopenharmony_ci				{
1699e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
1700e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 1.5, 1.66666666667, 2.0) | vec4(4.0, 3.0, 0.666666666667, 2.25) | vec4(1.0, 6.5, 2.33333333333, 1.0) ];
1701e5c31af7Sopenharmony_ci				}
1702e5c31af7Sopenharmony_ci
1703e5c31af7Sopenharmony_ci				both ""
1704e5c31af7Sopenharmony_ci					#version 320 es
1705e5c31af7Sopenharmony_ci					precision highp float;
1706e5c31af7Sopenharmony_ci					${DECLARATIONS}
1707e5c31af7Sopenharmony_ci
1708e5c31af7Sopenharmony_ci					void main()
1709e5c31af7Sopenharmony_ci					{
1710e5c31af7Sopenharmony_ci						${SETUP}
1711e5c31af7Sopenharmony_ci						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
1712e5c31af7Sopenharmony_ci						${OUTPUT}
1713e5c31af7Sopenharmony_ci					}
1714e5c31af7Sopenharmony_ci				""
1715e5c31af7Sopenharmony_ci			end
1716e5c31af7Sopenharmony_ci
1717e5c31af7Sopenharmony_ci		end # div
1718e5c31af7Sopenharmony_ci
1719e5c31af7Sopenharmony_ci	end # input_before_literal
1720e5c31af7Sopenharmony_ci	group literal_before_input "Literal before input"
1721e5c31af7Sopenharmony_ci
1722e5c31af7Sopenharmony_ci		group add "Addition"
1723e5c31af7Sopenharmony_ci
1724e5c31af7Sopenharmony_ci			case int_to_float
1725e5c31af7Sopenharmony_ci				version 320 es
1726e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1727e5c31af7Sopenharmony_ci				values
1728e5c31af7Sopenharmony_ci				{
1729e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1730e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
1731e5c31af7Sopenharmony_ci				}
1732e5c31af7Sopenharmony_ci
1733e5c31af7Sopenharmony_ci				both ""
1734e5c31af7Sopenharmony_ci					#version 320 es
1735e5c31af7Sopenharmony_ci					precision highp float;
1736e5c31af7Sopenharmony_ci					${DECLARATIONS}
1737e5c31af7Sopenharmony_ci
1738e5c31af7Sopenharmony_ci					void main()
1739e5c31af7Sopenharmony_ci					{
1740e5c31af7Sopenharmony_ci						${SETUP}
1741e5c31af7Sopenharmony_ci						out0 = 2.0 + in0;
1742e5c31af7Sopenharmony_ci						${OUTPUT}
1743e5c31af7Sopenharmony_ci					}
1744e5c31af7Sopenharmony_ci				""
1745e5c31af7Sopenharmony_ci			end
1746e5c31af7Sopenharmony_ci			case int_to_uint
1747e5c31af7Sopenharmony_ci				version 320 es
1748e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1749e5c31af7Sopenharmony_ci				values
1750e5c31af7Sopenharmony_ci				{
1751e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1752e5c31af7Sopenharmony_ci					output uint out0 = [ 4 | 3 | 3 | 5 | 7 ];
1753e5c31af7Sopenharmony_ci				}
1754e5c31af7Sopenharmony_ci
1755e5c31af7Sopenharmony_ci				both ""
1756e5c31af7Sopenharmony_ci					#version 320 es
1757e5c31af7Sopenharmony_ci					precision highp float;
1758e5c31af7Sopenharmony_ci					${DECLARATIONS}
1759e5c31af7Sopenharmony_ci
1760e5c31af7Sopenharmony_ci					void main()
1761e5c31af7Sopenharmony_ci					{
1762e5c31af7Sopenharmony_ci						${SETUP}
1763e5c31af7Sopenharmony_ci						out0 = 2 + in0;
1764e5c31af7Sopenharmony_ci						${OUTPUT}
1765e5c31af7Sopenharmony_ci					}
1766e5c31af7Sopenharmony_ci				""
1767e5c31af7Sopenharmony_ci			end
1768e5c31af7Sopenharmony_ci			case int_to_vec2
1769e5c31af7Sopenharmony_ci				version 320 es
1770e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1771e5c31af7Sopenharmony_ci				values
1772e5c31af7Sopenharmony_ci				{
1773e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1774e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
1775e5c31af7Sopenharmony_ci				}
1776e5c31af7Sopenharmony_ci
1777e5c31af7Sopenharmony_ci				both ""
1778e5c31af7Sopenharmony_ci					#version 320 es
1779e5c31af7Sopenharmony_ci					precision highp float;
1780e5c31af7Sopenharmony_ci					${DECLARATIONS}
1781e5c31af7Sopenharmony_ci
1782e5c31af7Sopenharmony_ci					void main()
1783e5c31af7Sopenharmony_ci					{
1784e5c31af7Sopenharmony_ci						${SETUP}
1785e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) + in0;
1786e5c31af7Sopenharmony_ci						${OUTPUT}
1787e5c31af7Sopenharmony_ci					}
1788e5c31af7Sopenharmony_ci				""
1789e5c31af7Sopenharmony_ci			end
1790e5c31af7Sopenharmony_ci			case int_to_vec3
1791e5c31af7Sopenharmony_ci				version 320 es
1792e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1793e5c31af7Sopenharmony_ci				values
1794e5c31af7Sopenharmony_ci				{
1795e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1796e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
1797e5c31af7Sopenharmony_ci				}
1798e5c31af7Sopenharmony_ci
1799e5c31af7Sopenharmony_ci				both ""
1800e5c31af7Sopenharmony_ci					#version 320 es
1801e5c31af7Sopenharmony_ci					precision highp float;
1802e5c31af7Sopenharmony_ci					${DECLARATIONS}
1803e5c31af7Sopenharmony_ci
1804e5c31af7Sopenharmony_ci					void main()
1805e5c31af7Sopenharmony_ci					{
1806e5c31af7Sopenharmony_ci						${SETUP}
1807e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) + in0;
1808e5c31af7Sopenharmony_ci						${OUTPUT}
1809e5c31af7Sopenharmony_ci					}
1810e5c31af7Sopenharmony_ci				""
1811e5c31af7Sopenharmony_ci			end
1812e5c31af7Sopenharmony_ci			case int_to_vec4
1813e5c31af7Sopenharmony_ci				version 320 es
1814e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1815e5c31af7Sopenharmony_ci				values
1816e5c31af7Sopenharmony_ci				{
1817e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1818e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
1819e5c31af7Sopenharmony_ci				}
1820e5c31af7Sopenharmony_ci
1821e5c31af7Sopenharmony_ci				both ""
1822e5c31af7Sopenharmony_ci					#version 320 es
1823e5c31af7Sopenharmony_ci					precision highp float;
1824e5c31af7Sopenharmony_ci					${DECLARATIONS}
1825e5c31af7Sopenharmony_ci
1826e5c31af7Sopenharmony_ci					void main()
1827e5c31af7Sopenharmony_ci					{
1828e5c31af7Sopenharmony_ci						${SETUP}
1829e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
1830e5c31af7Sopenharmony_ci						${OUTPUT}
1831e5c31af7Sopenharmony_ci					}
1832e5c31af7Sopenharmony_ci				""
1833e5c31af7Sopenharmony_ci			end
1834e5c31af7Sopenharmony_ci			case int_to_uvec2
1835e5c31af7Sopenharmony_ci				version 320 es
1836e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1837e5c31af7Sopenharmony_ci				values
1838e5c31af7Sopenharmony_ci				{
1839e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1840e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(3, 4) | uvec2(2, 3) | uvec2(2, 3) | uvec2(4, 5) | uvec2(6, 7) ];
1841e5c31af7Sopenharmony_ci				}
1842e5c31af7Sopenharmony_ci
1843e5c31af7Sopenharmony_ci				both ""
1844e5c31af7Sopenharmony_ci					#version 320 es
1845e5c31af7Sopenharmony_ci					precision highp float;
1846e5c31af7Sopenharmony_ci					${DECLARATIONS}
1847e5c31af7Sopenharmony_ci
1848e5c31af7Sopenharmony_ci					void main()
1849e5c31af7Sopenharmony_ci					{
1850e5c31af7Sopenharmony_ci						${SETUP}
1851e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) + in0;
1852e5c31af7Sopenharmony_ci						${OUTPUT}
1853e5c31af7Sopenharmony_ci					}
1854e5c31af7Sopenharmony_ci				""
1855e5c31af7Sopenharmony_ci			end
1856e5c31af7Sopenharmony_ci			case int_to_uvec3
1857e5c31af7Sopenharmony_ci				version 320 es
1858e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1859e5c31af7Sopenharmony_ci				values
1860e5c31af7Sopenharmony_ci				{
1861e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1862e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(3, 4, 5) | uvec3(2, 3, 4) | uvec3(2, 3, 4) | uvec3(4, 5, 6) | uvec3(6, 7, 8) ];
1863e5c31af7Sopenharmony_ci				}
1864e5c31af7Sopenharmony_ci
1865e5c31af7Sopenharmony_ci				both ""
1866e5c31af7Sopenharmony_ci					#version 320 es
1867e5c31af7Sopenharmony_ci					precision highp float;
1868e5c31af7Sopenharmony_ci					${DECLARATIONS}
1869e5c31af7Sopenharmony_ci
1870e5c31af7Sopenharmony_ci					void main()
1871e5c31af7Sopenharmony_ci					{
1872e5c31af7Sopenharmony_ci						${SETUP}
1873e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) + in0;
1874e5c31af7Sopenharmony_ci						${OUTPUT}
1875e5c31af7Sopenharmony_ci					}
1876e5c31af7Sopenharmony_ci				""
1877e5c31af7Sopenharmony_ci			end
1878e5c31af7Sopenharmony_ci			case int_to_uvec4
1879e5c31af7Sopenharmony_ci				version 320 es
1880e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1881e5c31af7Sopenharmony_ci				values
1882e5c31af7Sopenharmony_ci				{
1883e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
1884e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(3, 4, 5, 6) | uvec4(2, 3, 4, 5) | uvec4(2, 3, 4, 5) | uvec4(4, 5, 6, 7) | uvec4(6, 7, 8, 9) ];
1885e5c31af7Sopenharmony_ci				}
1886e5c31af7Sopenharmony_ci
1887e5c31af7Sopenharmony_ci				both ""
1888e5c31af7Sopenharmony_ci					#version 320 es
1889e5c31af7Sopenharmony_ci					precision highp float;
1890e5c31af7Sopenharmony_ci					${DECLARATIONS}
1891e5c31af7Sopenharmony_ci
1892e5c31af7Sopenharmony_ci					void main()
1893e5c31af7Sopenharmony_ci					{
1894e5c31af7Sopenharmony_ci						${SETUP}
1895e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) + in0;
1896e5c31af7Sopenharmony_ci						${OUTPUT}
1897e5c31af7Sopenharmony_ci					}
1898e5c31af7Sopenharmony_ci				""
1899e5c31af7Sopenharmony_ci			end
1900e5c31af7Sopenharmony_ci			case uint_to_float
1901e5c31af7Sopenharmony_ci				version 320 es
1902e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1903e5c31af7Sopenharmony_ci				values
1904e5c31af7Sopenharmony_ci				{
1905e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1906e5c31af7Sopenharmony_ci					output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
1907e5c31af7Sopenharmony_ci				}
1908e5c31af7Sopenharmony_ci
1909e5c31af7Sopenharmony_ci				both ""
1910e5c31af7Sopenharmony_ci					#version 320 es
1911e5c31af7Sopenharmony_ci					precision highp float;
1912e5c31af7Sopenharmony_ci					${DECLARATIONS}
1913e5c31af7Sopenharmony_ci
1914e5c31af7Sopenharmony_ci					void main()
1915e5c31af7Sopenharmony_ci					{
1916e5c31af7Sopenharmony_ci						${SETUP}
1917e5c31af7Sopenharmony_ci						out0 = 2.0 + in0;
1918e5c31af7Sopenharmony_ci						${OUTPUT}
1919e5c31af7Sopenharmony_ci					}
1920e5c31af7Sopenharmony_ci				""
1921e5c31af7Sopenharmony_ci			end
1922e5c31af7Sopenharmony_ci			case uint_to_vec2
1923e5c31af7Sopenharmony_ci				version 320 es
1924e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1925e5c31af7Sopenharmony_ci				values
1926e5c31af7Sopenharmony_ci				{
1927e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1928e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
1929e5c31af7Sopenharmony_ci				}
1930e5c31af7Sopenharmony_ci
1931e5c31af7Sopenharmony_ci				both ""
1932e5c31af7Sopenharmony_ci					#version 320 es
1933e5c31af7Sopenharmony_ci					precision highp float;
1934e5c31af7Sopenharmony_ci					${DECLARATIONS}
1935e5c31af7Sopenharmony_ci
1936e5c31af7Sopenharmony_ci					void main()
1937e5c31af7Sopenharmony_ci					{
1938e5c31af7Sopenharmony_ci						${SETUP}
1939e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) + in0;
1940e5c31af7Sopenharmony_ci						${OUTPUT}
1941e5c31af7Sopenharmony_ci					}
1942e5c31af7Sopenharmony_ci				""
1943e5c31af7Sopenharmony_ci			end
1944e5c31af7Sopenharmony_ci			case uint_to_vec3
1945e5c31af7Sopenharmony_ci				version 320 es
1946e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1947e5c31af7Sopenharmony_ci				values
1948e5c31af7Sopenharmony_ci				{
1949e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1950e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
1951e5c31af7Sopenharmony_ci				}
1952e5c31af7Sopenharmony_ci
1953e5c31af7Sopenharmony_ci				both ""
1954e5c31af7Sopenharmony_ci					#version 320 es
1955e5c31af7Sopenharmony_ci					precision highp float;
1956e5c31af7Sopenharmony_ci					${DECLARATIONS}
1957e5c31af7Sopenharmony_ci
1958e5c31af7Sopenharmony_ci					void main()
1959e5c31af7Sopenharmony_ci					{
1960e5c31af7Sopenharmony_ci						${SETUP}
1961e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) + in0;
1962e5c31af7Sopenharmony_ci						${OUTPUT}
1963e5c31af7Sopenharmony_ci					}
1964e5c31af7Sopenharmony_ci				""
1965e5c31af7Sopenharmony_ci			end
1966e5c31af7Sopenharmony_ci			case uint_to_vec4
1967e5c31af7Sopenharmony_ci				version 320 es
1968e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1969e5c31af7Sopenharmony_ci				values
1970e5c31af7Sopenharmony_ci				{
1971e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
1972e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
1973e5c31af7Sopenharmony_ci				}
1974e5c31af7Sopenharmony_ci
1975e5c31af7Sopenharmony_ci				both ""
1976e5c31af7Sopenharmony_ci					#version 320 es
1977e5c31af7Sopenharmony_ci					precision highp float;
1978e5c31af7Sopenharmony_ci					${DECLARATIONS}
1979e5c31af7Sopenharmony_ci
1980e5c31af7Sopenharmony_ci					void main()
1981e5c31af7Sopenharmony_ci					{
1982e5c31af7Sopenharmony_ci						${SETUP}
1983e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
1984e5c31af7Sopenharmony_ci						${OUTPUT}
1985e5c31af7Sopenharmony_ci					}
1986e5c31af7Sopenharmony_ci				""
1987e5c31af7Sopenharmony_ci			end
1988e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
1989e5c31af7Sopenharmony_ci				version 320 es
1990e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
1991e5c31af7Sopenharmony_ci				values
1992e5c31af7Sopenharmony_ci				{
1993e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
1994e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(2, 4) | uvec2(3, 3) | uvec2(4, 9) ];
1995e5c31af7Sopenharmony_ci				}
1996e5c31af7Sopenharmony_ci
1997e5c31af7Sopenharmony_ci				both ""
1998e5c31af7Sopenharmony_ci					#version 320 es
1999e5c31af7Sopenharmony_ci					precision highp float;
2000e5c31af7Sopenharmony_ci					${DECLARATIONS}
2001e5c31af7Sopenharmony_ci
2002e5c31af7Sopenharmony_ci					void main()
2003e5c31af7Sopenharmony_ci					{
2004e5c31af7Sopenharmony_ci						${SETUP}
2005e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) + in0;
2006e5c31af7Sopenharmony_ci						${OUTPUT}
2007e5c31af7Sopenharmony_ci					}
2008e5c31af7Sopenharmony_ci				""
2009e5c31af7Sopenharmony_ci			end
2010e5c31af7Sopenharmony_ci			case ivec2_to_vec2
2011e5c31af7Sopenharmony_ci				version 320 es
2012e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2013e5c31af7Sopenharmony_ci				values
2014e5c31af7Sopenharmony_ci				{
2015e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
2016e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
2017e5c31af7Sopenharmony_ci				}
2018e5c31af7Sopenharmony_ci
2019e5c31af7Sopenharmony_ci				both ""
2020e5c31af7Sopenharmony_ci					#version 320 es
2021e5c31af7Sopenharmony_ci					precision highp float;
2022e5c31af7Sopenharmony_ci					${DECLARATIONS}
2023e5c31af7Sopenharmony_ci
2024e5c31af7Sopenharmony_ci					void main()
2025e5c31af7Sopenharmony_ci					{
2026e5c31af7Sopenharmony_ci						${SETUP}
2027e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) + in0;
2028e5c31af7Sopenharmony_ci						${OUTPUT}
2029e5c31af7Sopenharmony_ci					}
2030e5c31af7Sopenharmony_ci				""
2031e5c31af7Sopenharmony_ci			end
2032e5c31af7Sopenharmony_ci			case uvec2_to_vec2
2033e5c31af7Sopenharmony_ci				version 320 es
2034e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2035e5c31af7Sopenharmony_ci				values
2036e5c31af7Sopenharmony_ci				{
2037e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
2038e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
2039e5c31af7Sopenharmony_ci				}
2040e5c31af7Sopenharmony_ci
2041e5c31af7Sopenharmony_ci				both ""
2042e5c31af7Sopenharmony_ci					#version 320 es
2043e5c31af7Sopenharmony_ci					precision highp float;
2044e5c31af7Sopenharmony_ci					${DECLARATIONS}
2045e5c31af7Sopenharmony_ci
2046e5c31af7Sopenharmony_ci					void main()
2047e5c31af7Sopenharmony_ci					{
2048e5c31af7Sopenharmony_ci						${SETUP}
2049e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) + in0;
2050e5c31af7Sopenharmony_ci						${OUTPUT}
2051e5c31af7Sopenharmony_ci					}
2052e5c31af7Sopenharmony_ci				""
2053e5c31af7Sopenharmony_ci			end
2054e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
2055e5c31af7Sopenharmony_ci				version 320 es
2056e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2057e5c31af7Sopenharmony_ci				values
2058e5c31af7Sopenharmony_ci				{
2059e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
2060e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(3, 3, 5) | uvec3(4, 9, 5) ];
2061e5c31af7Sopenharmony_ci				}
2062e5c31af7Sopenharmony_ci
2063e5c31af7Sopenharmony_ci				both ""
2064e5c31af7Sopenharmony_ci					#version 320 es
2065e5c31af7Sopenharmony_ci					precision highp float;
2066e5c31af7Sopenharmony_ci					${DECLARATIONS}
2067e5c31af7Sopenharmony_ci
2068e5c31af7Sopenharmony_ci					void main()
2069e5c31af7Sopenharmony_ci					{
2070e5c31af7Sopenharmony_ci						${SETUP}
2071e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) + in0;
2072e5c31af7Sopenharmony_ci						${OUTPUT}
2073e5c31af7Sopenharmony_ci					}
2074e5c31af7Sopenharmony_ci				""
2075e5c31af7Sopenharmony_ci			end
2076e5c31af7Sopenharmony_ci			case ivec3_to_vec3
2077e5c31af7Sopenharmony_ci				version 320 es
2078e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2079e5c31af7Sopenharmony_ci				values
2080e5c31af7Sopenharmony_ci				{
2081e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
2082e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
2083e5c31af7Sopenharmony_ci				}
2084e5c31af7Sopenharmony_ci
2085e5c31af7Sopenharmony_ci				both ""
2086e5c31af7Sopenharmony_ci					#version 320 es
2087e5c31af7Sopenharmony_ci					precision highp float;
2088e5c31af7Sopenharmony_ci					${DECLARATIONS}
2089e5c31af7Sopenharmony_ci
2090e5c31af7Sopenharmony_ci					void main()
2091e5c31af7Sopenharmony_ci					{
2092e5c31af7Sopenharmony_ci						${SETUP}
2093e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) + in0;
2094e5c31af7Sopenharmony_ci						${OUTPUT}
2095e5c31af7Sopenharmony_ci					}
2096e5c31af7Sopenharmony_ci				""
2097e5c31af7Sopenharmony_ci			end
2098e5c31af7Sopenharmony_ci			case uvec3_to_vec3
2099e5c31af7Sopenharmony_ci				version 320 es
2100e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2101e5c31af7Sopenharmony_ci				values
2102e5c31af7Sopenharmony_ci				{
2103e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
2104e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
2105e5c31af7Sopenharmony_ci				}
2106e5c31af7Sopenharmony_ci
2107e5c31af7Sopenharmony_ci				both ""
2108e5c31af7Sopenharmony_ci					#version 320 es
2109e5c31af7Sopenharmony_ci					precision highp float;
2110e5c31af7Sopenharmony_ci					${DECLARATIONS}
2111e5c31af7Sopenharmony_ci
2112e5c31af7Sopenharmony_ci					void main()
2113e5c31af7Sopenharmony_ci					{
2114e5c31af7Sopenharmony_ci						${SETUP}
2115e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) + in0;
2116e5c31af7Sopenharmony_ci						${OUTPUT}
2117e5c31af7Sopenharmony_ci					}
2118e5c31af7Sopenharmony_ci				""
2119e5c31af7Sopenharmony_ci			end
2120e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
2121e5c31af7Sopenharmony_ci				version 320 es
2122e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2123e5c31af7Sopenharmony_ci				values
2124e5c31af7Sopenharmony_ci				{
2125e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
2126e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(3, 3, 5, 10) | uvec4(4, 9, 5, 9) ];
2127e5c31af7Sopenharmony_ci				}
2128e5c31af7Sopenharmony_ci
2129e5c31af7Sopenharmony_ci				both ""
2130e5c31af7Sopenharmony_ci					#version 320 es
2131e5c31af7Sopenharmony_ci					precision highp float;
2132e5c31af7Sopenharmony_ci					${DECLARATIONS}
2133e5c31af7Sopenharmony_ci
2134e5c31af7Sopenharmony_ci					void main()
2135e5c31af7Sopenharmony_ci					{
2136e5c31af7Sopenharmony_ci						${SETUP}
2137e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) + in0;
2138e5c31af7Sopenharmony_ci						${OUTPUT}
2139e5c31af7Sopenharmony_ci					}
2140e5c31af7Sopenharmony_ci				""
2141e5c31af7Sopenharmony_ci			end
2142e5c31af7Sopenharmony_ci			case ivec4_to_vec4
2143e5c31af7Sopenharmony_ci				version 320 es
2144e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2145e5c31af7Sopenharmony_ci				values
2146e5c31af7Sopenharmony_ci				{
2147e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
2148e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
2149e5c31af7Sopenharmony_ci				}
2150e5c31af7Sopenharmony_ci
2151e5c31af7Sopenharmony_ci				both ""
2152e5c31af7Sopenharmony_ci					#version 320 es
2153e5c31af7Sopenharmony_ci					precision highp float;
2154e5c31af7Sopenharmony_ci					${DECLARATIONS}
2155e5c31af7Sopenharmony_ci
2156e5c31af7Sopenharmony_ci					void main()
2157e5c31af7Sopenharmony_ci					{
2158e5c31af7Sopenharmony_ci						${SETUP}
2159e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
2160e5c31af7Sopenharmony_ci						${OUTPUT}
2161e5c31af7Sopenharmony_ci					}
2162e5c31af7Sopenharmony_ci				""
2163e5c31af7Sopenharmony_ci			end
2164e5c31af7Sopenharmony_ci			case uvec4_to_vec4
2165e5c31af7Sopenharmony_ci				version 320 es
2166e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2167e5c31af7Sopenharmony_ci				values
2168e5c31af7Sopenharmony_ci				{
2169e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
2170e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
2171e5c31af7Sopenharmony_ci				}
2172e5c31af7Sopenharmony_ci
2173e5c31af7Sopenharmony_ci				both ""
2174e5c31af7Sopenharmony_ci					#version 320 es
2175e5c31af7Sopenharmony_ci					precision highp float;
2176e5c31af7Sopenharmony_ci					${DECLARATIONS}
2177e5c31af7Sopenharmony_ci
2178e5c31af7Sopenharmony_ci					void main()
2179e5c31af7Sopenharmony_ci					{
2180e5c31af7Sopenharmony_ci						${SETUP}
2181e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
2182e5c31af7Sopenharmony_ci						${OUTPUT}
2183e5c31af7Sopenharmony_ci					}
2184e5c31af7Sopenharmony_ci				""
2185e5c31af7Sopenharmony_ci			end
2186e5c31af7Sopenharmony_ci
2187e5c31af7Sopenharmony_ci		end # add
2188e5c31af7Sopenharmony_ci		group sub "Subtraction"
2189e5c31af7Sopenharmony_ci
2190e5c31af7Sopenharmony_ci			case int_to_float
2191e5c31af7Sopenharmony_ci				version 320 es
2192e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2193e5c31af7Sopenharmony_ci				values
2194e5c31af7Sopenharmony_ci				{
2195e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2196e5c31af7Sopenharmony_ci					output float out0 = [ 0.0 | 1.0 | 1.0 | -1.0 | -3.0 ];
2197e5c31af7Sopenharmony_ci				}
2198e5c31af7Sopenharmony_ci
2199e5c31af7Sopenharmony_ci				both ""
2200e5c31af7Sopenharmony_ci					#version 320 es
2201e5c31af7Sopenharmony_ci					precision highp float;
2202e5c31af7Sopenharmony_ci					${DECLARATIONS}
2203e5c31af7Sopenharmony_ci
2204e5c31af7Sopenharmony_ci					void main()
2205e5c31af7Sopenharmony_ci					{
2206e5c31af7Sopenharmony_ci						${SETUP}
2207e5c31af7Sopenharmony_ci						out0 = 2.0 - in0;
2208e5c31af7Sopenharmony_ci						${OUTPUT}
2209e5c31af7Sopenharmony_ci					}
2210e5c31af7Sopenharmony_ci				""
2211e5c31af7Sopenharmony_ci			end
2212e5c31af7Sopenharmony_ci			case int_to_vec2
2213e5c31af7Sopenharmony_ci				version 320 es
2214e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2215e5c31af7Sopenharmony_ci				values
2216e5c31af7Sopenharmony_ci				{
2217e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2218e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(-1.0, 0.0) | vec2(0.0, 1.0) | vec2(0.0, 1.0) | vec2(-2.0, -1.0) | vec2(-4.0, -3.0) ];
2219e5c31af7Sopenharmony_ci				}
2220e5c31af7Sopenharmony_ci
2221e5c31af7Sopenharmony_ci				both ""
2222e5c31af7Sopenharmony_ci					#version 320 es
2223e5c31af7Sopenharmony_ci					precision highp float;
2224e5c31af7Sopenharmony_ci					${DECLARATIONS}
2225e5c31af7Sopenharmony_ci
2226e5c31af7Sopenharmony_ci					void main()
2227e5c31af7Sopenharmony_ci					{
2228e5c31af7Sopenharmony_ci						${SETUP}
2229e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) - in0;
2230e5c31af7Sopenharmony_ci						${OUTPUT}
2231e5c31af7Sopenharmony_ci					}
2232e5c31af7Sopenharmony_ci				""
2233e5c31af7Sopenharmony_ci			end
2234e5c31af7Sopenharmony_ci			case int_to_vec3
2235e5c31af7Sopenharmony_ci				version 320 es
2236e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2237e5c31af7Sopenharmony_ci				values
2238e5c31af7Sopenharmony_ci				{
2239e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2240e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(-1.0, 0.0, 1.0) | vec3(0.0, 1.0, 2.0) | vec3(0.0, 1.0, 2.0) | vec3(-2.0, -1.0, 0.0) | vec3(-4.0, -3.0, -2.0) ];
2241e5c31af7Sopenharmony_ci				}
2242e5c31af7Sopenharmony_ci
2243e5c31af7Sopenharmony_ci				both ""
2244e5c31af7Sopenharmony_ci					#version 320 es
2245e5c31af7Sopenharmony_ci					precision highp float;
2246e5c31af7Sopenharmony_ci					${DECLARATIONS}
2247e5c31af7Sopenharmony_ci
2248e5c31af7Sopenharmony_ci					void main()
2249e5c31af7Sopenharmony_ci					{
2250e5c31af7Sopenharmony_ci						${SETUP}
2251e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) - in0;
2252e5c31af7Sopenharmony_ci						${OUTPUT}
2253e5c31af7Sopenharmony_ci					}
2254e5c31af7Sopenharmony_ci				""
2255e5c31af7Sopenharmony_ci			end
2256e5c31af7Sopenharmony_ci			case int_to_vec4
2257e5c31af7Sopenharmony_ci				version 320 es
2258e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2259e5c31af7Sopenharmony_ci				values
2260e5c31af7Sopenharmony_ci				{
2261e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2262e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(-1.0, 0.0, 1.0, 2.0) | vec4(0.0, 1.0, 2.0, 3.0) | vec4(0.0, 1.0, 2.0, 3.0) | vec4(-2.0, -1.0, 0.0, 1.0) | vec4(-4.0, -3.0, -2.0, -1.0) ];
2263e5c31af7Sopenharmony_ci				}
2264e5c31af7Sopenharmony_ci
2265e5c31af7Sopenharmony_ci				both ""
2266e5c31af7Sopenharmony_ci					#version 320 es
2267e5c31af7Sopenharmony_ci					precision highp float;
2268e5c31af7Sopenharmony_ci					${DECLARATIONS}
2269e5c31af7Sopenharmony_ci
2270e5c31af7Sopenharmony_ci					void main()
2271e5c31af7Sopenharmony_ci					{
2272e5c31af7Sopenharmony_ci						${SETUP}
2273e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
2274e5c31af7Sopenharmony_ci						${OUTPUT}
2275e5c31af7Sopenharmony_ci					}
2276e5c31af7Sopenharmony_ci				""
2277e5c31af7Sopenharmony_ci			end
2278e5c31af7Sopenharmony_ci			case uint_to_float
2279e5c31af7Sopenharmony_ci				version 320 es
2280e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2281e5c31af7Sopenharmony_ci				values
2282e5c31af7Sopenharmony_ci				{
2283e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2284e5c31af7Sopenharmony_ci					output float out0 = [ 1.0 | -1.0 | -2.0 | -5.0 | -9.0 ];
2285e5c31af7Sopenharmony_ci				}
2286e5c31af7Sopenharmony_ci
2287e5c31af7Sopenharmony_ci				both ""
2288e5c31af7Sopenharmony_ci					#version 320 es
2289e5c31af7Sopenharmony_ci					precision highp float;
2290e5c31af7Sopenharmony_ci					${DECLARATIONS}
2291e5c31af7Sopenharmony_ci
2292e5c31af7Sopenharmony_ci					void main()
2293e5c31af7Sopenharmony_ci					{
2294e5c31af7Sopenharmony_ci						${SETUP}
2295e5c31af7Sopenharmony_ci						out0 = 2.0 - in0;
2296e5c31af7Sopenharmony_ci						${OUTPUT}
2297e5c31af7Sopenharmony_ci					}
2298e5c31af7Sopenharmony_ci				""
2299e5c31af7Sopenharmony_ci			end
2300e5c31af7Sopenharmony_ci			case uint_to_vec2
2301e5c31af7Sopenharmony_ci				version 320 es
2302e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2303e5c31af7Sopenharmony_ci				values
2304e5c31af7Sopenharmony_ci				{
2305e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2306e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.0, 1.0) | vec2(-2.0, -1.0) | vec2(-3.0, -2.0) | vec2(-6.0, -5.0) | vec2(-10.0, -9.0) ];
2307e5c31af7Sopenharmony_ci				}
2308e5c31af7Sopenharmony_ci
2309e5c31af7Sopenharmony_ci				both ""
2310e5c31af7Sopenharmony_ci					#version 320 es
2311e5c31af7Sopenharmony_ci					precision highp float;
2312e5c31af7Sopenharmony_ci					${DECLARATIONS}
2313e5c31af7Sopenharmony_ci
2314e5c31af7Sopenharmony_ci					void main()
2315e5c31af7Sopenharmony_ci					{
2316e5c31af7Sopenharmony_ci						${SETUP}
2317e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) - in0;
2318e5c31af7Sopenharmony_ci						${OUTPUT}
2319e5c31af7Sopenharmony_ci					}
2320e5c31af7Sopenharmony_ci				""
2321e5c31af7Sopenharmony_ci			end
2322e5c31af7Sopenharmony_ci			case uint_to_vec3
2323e5c31af7Sopenharmony_ci				version 320 es
2324e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2325e5c31af7Sopenharmony_ci				values
2326e5c31af7Sopenharmony_ci				{
2327e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2328e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.0, 1.0, 2.0) | vec3(-2.0, -1.0, 0.0) | vec3(-3.0, -2.0, -1.0) | vec3(-6.0, -5.0, -4.0) | vec3(-10.0, -9.0, -8.0) ];
2329e5c31af7Sopenharmony_ci				}
2330e5c31af7Sopenharmony_ci
2331e5c31af7Sopenharmony_ci				both ""
2332e5c31af7Sopenharmony_ci					#version 320 es
2333e5c31af7Sopenharmony_ci					precision highp float;
2334e5c31af7Sopenharmony_ci					${DECLARATIONS}
2335e5c31af7Sopenharmony_ci
2336e5c31af7Sopenharmony_ci					void main()
2337e5c31af7Sopenharmony_ci					{
2338e5c31af7Sopenharmony_ci						${SETUP}
2339e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) - in0;
2340e5c31af7Sopenharmony_ci						${OUTPUT}
2341e5c31af7Sopenharmony_ci					}
2342e5c31af7Sopenharmony_ci				""
2343e5c31af7Sopenharmony_ci			end
2344e5c31af7Sopenharmony_ci			case uint_to_vec4
2345e5c31af7Sopenharmony_ci				version 320 es
2346e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2347e5c31af7Sopenharmony_ci				values
2348e5c31af7Sopenharmony_ci				{
2349e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2350e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.0, 1.0, 2.0, 3.0) | vec4(-2.0, -1.0, 0.0, 1.0) | vec4(-3.0, -2.0, -1.0, 0.0) | vec4(-6.0, -5.0, -4.0, -3.0) | vec4(-10.0, -9.0, -8.0, -7.0) ];
2351e5c31af7Sopenharmony_ci				}
2352e5c31af7Sopenharmony_ci
2353e5c31af7Sopenharmony_ci				both ""
2354e5c31af7Sopenharmony_ci					#version 320 es
2355e5c31af7Sopenharmony_ci					precision highp float;
2356e5c31af7Sopenharmony_ci					${DECLARATIONS}
2357e5c31af7Sopenharmony_ci
2358e5c31af7Sopenharmony_ci					void main()
2359e5c31af7Sopenharmony_ci					{
2360e5c31af7Sopenharmony_ci						${SETUP}
2361e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
2362e5c31af7Sopenharmony_ci						${OUTPUT}
2363e5c31af7Sopenharmony_ci					}
2364e5c31af7Sopenharmony_ci				""
2365e5c31af7Sopenharmony_ci			end
2366e5c31af7Sopenharmony_ci			case ivec2_to_vec2
2367e5c31af7Sopenharmony_ci				version 320 es
2368e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2369e5c31af7Sopenharmony_ci				values
2370e5c31af7Sopenharmony_ci				{
2371e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
2372e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.0, 0.0) | vec2(-1.0, 1.0) | vec2(-2.0, -5.0) ];
2373e5c31af7Sopenharmony_ci				}
2374e5c31af7Sopenharmony_ci
2375e5c31af7Sopenharmony_ci				both ""
2376e5c31af7Sopenharmony_ci					#version 320 es
2377e5c31af7Sopenharmony_ci					precision highp float;
2378e5c31af7Sopenharmony_ci					${DECLARATIONS}
2379e5c31af7Sopenharmony_ci
2380e5c31af7Sopenharmony_ci					void main()
2381e5c31af7Sopenharmony_ci					{
2382e5c31af7Sopenharmony_ci						${SETUP}
2383e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) - in0;
2384e5c31af7Sopenharmony_ci						${OUTPUT}
2385e5c31af7Sopenharmony_ci					}
2386e5c31af7Sopenharmony_ci				""
2387e5c31af7Sopenharmony_ci			end
2388e5c31af7Sopenharmony_ci			case uvec2_to_vec2
2389e5c31af7Sopenharmony_ci				version 320 es
2390e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2391e5c31af7Sopenharmony_ci				values
2392e5c31af7Sopenharmony_ci				{
2393e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
2394e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(-1.0, -1.0) | vec2(-3.0, -4.0) | vec2(0.0, -11.0) ];
2395e5c31af7Sopenharmony_ci				}
2396e5c31af7Sopenharmony_ci
2397e5c31af7Sopenharmony_ci				both ""
2398e5c31af7Sopenharmony_ci					#version 320 es
2399e5c31af7Sopenharmony_ci					precision highp float;
2400e5c31af7Sopenharmony_ci					${DECLARATIONS}
2401e5c31af7Sopenharmony_ci
2402e5c31af7Sopenharmony_ci					void main()
2403e5c31af7Sopenharmony_ci					{
2404e5c31af7Sopenharmony_ci						${SETUP}
2405e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) - in0;
2406e5c31af7Sopenharmony_ci						${OUTPUT}
2407e5c31af7Sopenharmony_ci					}
2408e5c31af7Sopenharmony_ci				""
2409e5c31af7Sopenharmony_ci			end
2410e5c31af7Sopenharmony_ci			case ivec3_to_vec3
2411e5c31af7Sopenharmony_ci				version 320 es
2412e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2413e5c31af7Sopenharmony_ci				values
2414e5c31af7Sopenharmony_ci				{
2415e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
2416e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(-1.0, 1.0, 1.0) | vec3(-2.0, -5.0, 1.0) ];
2417e5c31af7Sopenharmony_ci				}
2418e5c31af7Sopenharmony_ci
2419e5c31af7Sopenharmony_ci				both ""
2420e5c31af7Sopenharmony_ci					#version 320 es
2421e5c31af7Sopenharmony_ci					precision highp float;
2422e5c31af7Sopenharmony_ci					${DECLARATIONS}
2423e5c31af7Sopenharmony_ci
2424e5c31af7Sopenharmony_ci					void main()
2425e5c31af7Sopenharmony_ci					{
2426e5c31af7Sopenharmony_ci						${SETUP}
2427e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) - in0;
2428e5c31af7Sopenharmony_ci						${OUTPUT}
2429e5c31af7Sopenharmony_ci					}
2430e5c31af7Sopenharmony_ci				""
2431e5c31af7Sopenharmony_ci			end
2432e5c31af7Sopenharmony_ci			case uvec3_to_vec3
2433e5c31af7Sopenharmony_ci				version 320 es
2434e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2435e5c31af7Sopenharmony_ci				values
2436e5c31af7Sopenharmony_ci				{
2437e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
2438e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(-1.0, -1.0, -2.0) | vec3(-3.0, -4.0, 1.0) | vec3(0.0, -11.0, -4.0) ];
2439e5c31af7Sopenharmony_ci				}
2440e5c31af7Sopenharmony_ci
2441e5c31af7Sopenharmony_ci				both ""
2442e5c31af7Sopenharmony_ci					#version 320 es
2443e5c31af7Sopenharmony_ci					precision highp float;
2444e5c31af7Sopenharmony_ci					${DECLARATIONS}
2445e5c31af7Sopenharmony_ci
2446e5c31af7Sopenharmony_ci					void main()
2447e5c31af7Sopenharmony_ci					{
2448e5c31af7Sopenharmony_ci						${SETUP}
2449e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) - in0;
2450e5c31af7Sopenharmony_ci						${OUTPUT}
2451e5c31af7Sopenharmony_ci					}
2452e5c31af7Sopenharmony_ci				""
2453e5c31af7Sopenharmony_ci			end
2454e5c31af7Sopenharmony_ci			case ivec4_to_vec4
2455e5c31af7Sopenharmony_ci				version 320 es
2456e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2457e5c31af7Sopenharmony_ci				values
2458e5c31af7Sopenharmony_ci				{
2459e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
2460e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(-1.0, 1.0, 1.0, -2.0) | vec4(-2.0, -5.0, 1.0, -1.0) ];
2461e5c31af7Sopenharmony_ci				}
2462e5c31af7Sopenharmony_ci
2463e5c31af7Sopenharmony_ci				both ""
2464e5c31af7Sopenharmony_ci					#version 320 es
2465e5c31af7Sopenharmony_ci					precision highp float;
2466e5c31af7Sopenharmony_ci					${DECLARATIONS}
2467e5c31af7Sopenharmony_ci
2468e5c31af7Sopenharmony_ci					void main()
2469e5c31af7Sopenharmony_ci					{
2470e5c31af7Sopenharmony_ci						${SETUP}
2471e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
2472e5c31af7Sopenharmony_ci						${OUTPUT}
2473e5c31af7Sopenharmony_ci					}
2474e5c31af7Sopenharmony_ci				""
2475e5c31af7Sopenharmony_ci			end
2476e5c31af7Sopenharmony_ci			case uvec4_to_vec4
2477e5c31af7Sopenharmony_ci				version 320 es
2478e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2479e5c31af7Sopenharmony_ci				values
2480e5c31af7Sopenharmony_ci				{
2481e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
2482e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(-1.0, -1.0, -2.0, -4.0) | vec4(-3.0, -4.0, 1.0, -5.0) | vec4(0.0, -11.0, -4.0, 0.0) ];
2483e5c31af7Sopenharmony_ci				}
2484e5c31af7Sopenharmony_ci
2485e5c31af7Sopenharmony_ci				both ""
2486e5c31af7Sopenharmony_ci					#version 320 es
2487e5c31af7Sopenharmony_ci					precision highp float;
2488e5c31af7Sopenharmony_ci					${DECLARATIONS}
2489e5c31af7Sopenharmony_ci
2490e5c31af7Sopenharmony_ci					void main()
2491e5c31af7Sopenharmony_ci					{
2492e5c31af7Sopenharmony_ci						${SETUP}
2493e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
2494e5c31af7Sopenharmony_ci						${OUTPUT}
2495e5c31af7Sopenharmony_ci					}
2496e5c31af7Sopenharmony_ci				""
2497e5c31af7Sopenharmony_ci			end
2498e5c31af7Sopenharmony_ci
2499e5c31af7Sopenharmony_ci		end # sub
2500e5c31af7Sopenharmony_ci		group mul "Multiplication"
2501e5c31af7Sopenharmony_ci
2502e5c31af7Sopenharmony_ci			case int_to_float
2503e5c31af7Sopenharmony_ci				version 320 es
2504e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2505e5c31af7Sopenharmony_ci				values
2506e5c31af7Sopenharmony_ci				{
2507e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2508e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
2509e5c31af7Sopenharmony_ci				}
2510e5c31af7Sopenharmony_ci
2511e5c31af7Sopenharmony_ci				both ""
2512e5c31af7Sopenharmony_ci					#version 320 es
2513e5c31af7Sopenharmony_ci					precision highp float;
2514e5c31af7Sopenharmony_ci					${DECLARATIONS}
2515e5c31af7Sopenharmony_ci
2516e5c31af7Sopenharmony_ci					void main()
2517e5c31af7Sopenharmony_ci					{
2518e5c31af7Sopenharmony_ci						${SETUP}
2519e5c31af7Sopenharmony_ci						out0 = 2.0 * in0;
2520e5c31af7Sopenharmony_ci						${OUTPUT}
2521e5c31af7Sopenharmony_ci					}
2522e5c31af7Sopenharmony_ci				""
2523e5c31af7Sopenharmony_ci			end
2524e5c31af7Sopenharmony_ci			case int_to_uint
2525e5c31af7Sopenharmony_ci				version 320 es
2526e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2527e5c31af7Sopenharmony_ci				values
2528e5c31af7Sopenharmony_ci				{
2529e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2530e5c31af7Sopenharmony_ci					output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
2531e5c31af7Sopenharmony_ci				}
2532e5c31af7Sopenharmony_ci
2533e5c31af7Sopenharmony_ci				both ""
2534e5c31af7Sopenharmony_ci					#version 320 es
2535e5c31af7Sopenharmony_ci					precision highp float;
2536e5c31af7Sopenharmony_ci					${DECLARATIONS}
2537e5c31af7Sopenharmony_ci
2538e5c31af7Sopenharmony_ci					void main()
2539e5c31af7Sopenharmony_ci					{
2540e5c31af7Sopenharmony_ci						${SETUP}
2541e5c31af7Sopenharmony_ci						out0 = 2 * in0;
2542e5c31af7Sopenharmony_ci						${OUTPUT}
2543e5c31af7Sopenharmony_ci					}
2544e5c31af7Sopenharmony_ci				""
2545e5c31af7Sopenharmony_ci			end
2546e5c31af7Sopenharmony_ci			case int_to_vec2
2547e5c31af7Sopenharmony_ci				version 320 es
2548e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2549e5c31af7Sopenharmony_ci				values
2550e5c31af7Sopenharmony_ci				{
2551e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2552e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(5.0, 10.0) ];
2553e5c31af7Sopenharmony_ci				}
2554e5c31af7Sopenharmony_ci
2555e5c31af7Sopenharmony_ci				both ""
2556e5c31af7Sopenharmony_ci					#version 320 es
2557e5c31af7Sopenharmony_ci					precision highp float;
2558e5c31af7Sopenharmony_ci					${DECLARATIONS}
2559e5c31af7Sopenharmony_ci
2560e5c31af7Sopenharmony_ci					void main()
2561e5c31af7Sopenharmony_ci					{
2562e5c31af7Sopenharmony_ci						${SETUP}
2563e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * in0;
2564e5c31af7Sopenharmony_ci						${OUTPUT}
2565e5c31af7Sopenharmony_ci					}
2566e5c31af7Sopenharmony_ci				""
2567e5c31af7Sopenharmony_ci			end
2568e5c31af7Sopenharmony_ci			case int_to_vec3
2569e5c31af7Sopenharmony_ci				version 320 es
2570e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2571e5c31af7Sopenharmony_ci				values
2572e5c31af7Sopenharmony_ci				{
2573e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2574e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(5.0, 10.0, 15.0) ];
2575e5c31af7Sopenharmony_ci				}
2576e5c31af7Sopenharmony_ci
2577e5c31af7Sopenharmony_ci				both ""
2578e5c31af7Sopenharmony_ci					#version 320 es
2579e5c31af7Sopenharmony_ci					precision highp float;
2580e5c31af7Sopenharmony_ci					${DECLARATIONS}
2581e5c31af7Sopenharmony_ci
2582e5c31af7Sopenharmony_ci					void main()
2583e5c31af7Sopenharmony_ci					{
2584e5c31af7Sopenharmony_ci						${SETUP}
2585e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * in0;
2586e5c31af7Sopenharmony_ci						${OUTPUT}
2587e5c31af7Sopenharmony_ci					}
2588e5c31af7Sopenharmony_ci				""
2589e5c31af7Sopenharmony_ci			end
2590e5c31af7Sopenharmony_ci			case int_to_vec4
2591e5c31af7Sopenharmony_ci				version 320 es
2592e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2593e5c31af7Sopenharmony_ci				values
2594e5c31af7Sopenharmony_ci				{
2595e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2596e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(5.0, 10.0, 15.0, 20.0) ];
2597e5c31af7Sopenharmony_ci				}
2598e5c31af7Sopenharmony_ci
2599e5c31af7Sopenharmony_ci				both ""
2600e5c31af7Sopenharmony_ci					#version 320 es
2601e5c31af7Sopenharmony_ci					precision highp float;
2602e5c31af7Sopenharmony_ci					${DECLARATIONS}
2603e5c31af7Sopenharmony_ci
2604e5c31af7Sopenharmony_ci					void main()
2605e5c31af7Sopenharmony_ci					{
2606e5c31af7Sopenharmony_ci						${SETUP}
2607e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
2608e5c31af7Sopenharmony_ci						${OUTPUT}
2609e5c31af7Sopenharmony_ci					}
2610e5c31af7Sopenharmony_ci				""
2611e5c31af7Sopenharmony_ci			end
2612e5c31af7Sopenharmony_ci			case int_to_uvec2
2613e5c31af7Sopenharmony_ci				version 320 es
2614e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2615e5c31af7Sopenharmony_ci				values
2616e5c31af7Sopenharmony_ci				{
2617e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2618e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(2, 4) | uvec2(1, 2) | uvec2(1, 2) | uvec2(3, 6) | uvec2(5, 10) ];
2619e5c31af7Sopenharmony_ci				}
2620e5c31af7Sopenharmony_ci
2621e5c31af7Sopenharmony_ci				both ""
2622e5c31af7Sopenharmony_ci					#version 320 es
2623e5c31af7Sopenharmony_ci					precision highp float;
2624e5c31af7Sopenharmony_ci					${DECLARATIONS}
2625e5c31af7Sopenharmony_ci
2626e5c31af7Sopenharmony_ci					void main()
2627e5c31af7Sopenharmony_ci					{
2628e5c31af7Sopenharmony_ci						${SETUP}
2629e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) * in0;
2630e5c31af7Sopenharmony_ci						${OUTPUT}
2631e5c31af7Sopenharmony_ci					}
2632e5c31af7Sopenharmony_ci				""
2633e5c31af7Sopenharmony_ci			end
2634e5c31af7Sopenharmony_ci			case int_to_uvec3
2635e5c31af7Sopenharmony_ci				version 320 es
2636e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2637e5c31af7Sopenharmony_ci				values
2638e5c31af7Sopenharmony_ci				{
2639e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2640e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(3, 6, 9) | uvec3(5, 10, 15) ];
2641e5c31af7Sopenharmony_ci				}
2642e5c31af7Sopenharmony_ci
2643e5c31af7Sopenharmony_ci				both ""
2644e5c31af7Sopenharmony_ci					#version 320 es
2645e5c31af7Sopenharmony_ci					precision highp float;
2646e5c31af7Sopenharmony_ci					${DECLARATIONS}
2647e5c31af7Sopenharmony_ci
2648e5c31af7Sopenharmony_ci					void main()
2649e5c31af7Sopenharmony_ci					{
2650e5c31af7Sopenharmony_ci						${SETUP}
2651e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) * in0;
2652e5c31af7Sopenharmony_ci						${OUTPUT}
2653e5c31af7Sopenharmony_ci					}
2654e5c31af7Sopenharmony_ci				""
2655e5c31af7Sopenharmony_ci			end
2656e5c31af7Sopenharmony_ci			case int_to_uvec4
2657e5c31af7Sopenharmony_ci				version 320 es
2658e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2659e5c31af7Sopenharmony_ci				values
2660e5c31af7Sopenharmony_ci				{
2661e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2662e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(3, 6, 9, 12) | uvec4(5, 10, 15, 20) ];
2663e5c31af7Sopenharmony_ci				}
2664e5c31af7Sopenharmony_ci
2665e5c31af7Sopenharmony_ci				both ""
2666e5c31af7Sopenharmony_ci					#version 320 es
2667e5c31af7Sopenharmony_ci					precision highp float;
2668e5c31af7Sopenharmony_ci					${DECLARATIONS}
2669e5c31af7Sopenharmony_ci
2670e5c31af7Sopenharmony_ci					void main()
2671e5c31af7Sopenharmony_ci					{
2672e5c31af7Sopenharmony_ci						${SETUP}
2673e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) * in0;
2674e5c31af7Sopenharmony_ci						${OUTPUT}
2675e5c31af7Sopenharmony_ci					}
2676e5c31af7Sopenharmony_ci				""
2677e5c31af7Sopenharmony_ci			end
2678e5c31af7Sopenharmony_ci			case uint_to_float
2679e5c31af7Sopenharmony_ci				version 320 es
2680e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2681e5c31af7Sopenharmony_ci				values
2682e5c31af7Sopenharmony_ci				{
2683e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2684e5c31af7Sopenharmony_ci					output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
2685e5c31af7Sopenharmony_ci				}
2686e5c31af7Sopenharmony_ci
2687e5c31af7Sopenharmony_ci				both ""
2688e5c31af7Sopenharmony_ci					#version 320 es
2689e5c31af7Sopenharmony_ci					precision highp float;
2690e5c31af7Sopenharmony_ci					${DECLARATIONS}
2691e5c31af7Sopenharmony_ci
2692e5c31af7Sopenharmony_ci					void main()
2693e5c31af7Sopenharmony_ci					{
2694e5c31af7Sopenharmony_ci						${SETUP}
2695e5c31af7Sopenharmony_ci						out0 = 2.0 * in0;
2696e5c31af7Sopenharmony_ci						${OUTPUT}
2697e5c31af7Sopenharmony_ci					}
2698e5c31af7Sopenharmony_ci				""
2699e5c31af7Sopenharmony_ci			end
2700e5c31af7Sopenharmony_ci			case uint_to_vec2
2701e5c31af7Sopenharmony_ci				version 320 es
2702e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2703e5c31af7Sopenharmony_ci				values
2704e5c31af7Sopenharmony_ci				{
2705e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2706e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(4.0, 8.0) | vec2(7.0, 14.0) | vec2(11.0, 22.0) ];
2707e5c31af7Sopenharmony_ci				}
2708e5c31af7Sopenharmony_ci
2709e5c31af7Sopenharmony_ci				both ""
2710e5c31af7Sopenharmony_ci					#version 320 es
2711e5c31af7Sopenharmony_ci					precision highp float;
2712e5c31af7Sopenharmony_ci					${DECLARATIONS}
2713e5c31af7Sopenharmony_ci
2714e5c31af7Sopenharmony_ci					void main()
2715e5c31af7Sopenharmony_ci					{
2716e5c31af7Sopenharmony_ci						${SETUP}
2717e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * in0;
2718e5c31af7Sopenharmony_ci						${OUTPUT}
2719e5c31af7Sopenharmony_ci					}
2720e5c31af7Sopenharmony_ci				""
2721e5c31af7Sopenharmony_ci			end
2722e5c31af7Sopenharmony_ci			case uint_to_vec3
2723e5c31af7Sopenharmony_ci				version 320 es
2724e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2725e5c31af7Sopenharmony_ci				values
2726e5c31af7Sopenharmony_ci				{
2727e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2728e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(4.0, 8.0, 12.0) | vec3(7.0, 14.0, 21.0) | vec3(11.0, 22.0, 33.0) ];
2729e5c31af7Sopenharmony_ci				}
2730e5c31af7Sopenharmony_ci
2731e5c31af7Sopenharmony_ci				both ""
2732e5c31af7Sopenharmony_ci					#version 320 es
2733e5c31af7Sopenharmony_ci					precision highp float;
2734e5c31af7Sopenharmony_ci					${DECLARATIONS}
2735e5c31af7Sopenharmony_ci
2736e5c31af7Sopenharmony_ci					void main()
2737e5c31af7Sopenharmony_ci					{
2738e5c31af7Sopenharmony_ci						${SETUP}
2739e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * in0;
2740e5c31af7Sopenharmony_ci						${OUTPUT}
2741e5c31af7Sopenharmony_ci					}
2742e5c31af7Sopenharmony_ci				""
2743e5c31af7Sopenharmony_ci			end
2744e5c31af7Sopenharmony_ci			case uint_to_vec4
2745e5c31af7Sopenharmony_ci				version 320 es
2746e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2747e5c31af7Sopenharmony_ci				values
2748e5c31af7Sopenharmony_ci				{
2749e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
2750e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(4.0, 8.0, 12.0, 16.0) | vec4(7.0, 14.0, 21.0, 28.0) | vec4(11.0, 22.0, 33.0, 44.0) ];
2751e5c31af7Sopenharmony_ci				}
2752e5c31af7Sopenharmony_ci
2753e5c31af7Sopenharmony_ci				both ""
2754e5c31af7Sopenharmony_ci					#version 320 es
2755e5c31af7Sopenharmony_ci					precision highp float;
2756e5c31af7Sopenharmony_ci					${DECLARATIONS}
2757e5c31af7Sopenharmony_ci
2758e5c31af7Sopenharmony_ci					void main()
2759e5c31af7Sopenharmony_ci					{
2760e5c31af7Sopenharmony_ci						${SETUP}
2761e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
2762e5c31af7Sopenharmony_ci						${OUTPUT}
2763e5c31af7Sopenharmony_ci					}
2764e5c31af7Sopenharmony_ci				""
2765e5c31af7Sopenharmony_ci			end
2766e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
2767e5c31af7Sopenharmony_ci				version 320 es
2768e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2769e5c31af7Sopenharmony_ci				values
2770e5c31af7Sopenharmony_ci				{
2771e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
2772e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(1, 4) | uvec2(2, 2) | uvec2(3, 14) ];
2773e5c31af7Sopenharmony_ci				}
2774e5c31af7Sopenharmony_ci
2775e5c31af7Sopenharmony_ci				both ""
2776e5c31af7Sopenharmony_ci					#version 320 es
2777e5c31af7Sopenharmony_ci					precision highp float;
2778e5c31af7Sopenharmony_ci					${DECLARATIONS}
2779e5c31af7Sopenharmony_ci
2780e5c31af7Sopenharmony_ci					void main()
2781e5c31af7Sopenharmony_ci					{
2782e5c31af7Sopenharmony_ci						${SETUP}
2783e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) * in0;
2784e5c31af7Sopenharmony_ci						${OUTPUT}
2785e5c31af7Sopenharmony_ci					}
2786e5c31af7Sopenharmony_ci				""
2787e5c31af7Sopenharmony_ci			end
2788e5c31af7Sopenharmony_ci			case ivec2_to_vec2
2789e5c31af7Sopenharmony_ci				version 320 es
2790e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2791e5c31af7Sopenharmony_ci				values
2792e5c31af7Sopenharmony_ci				{
2793e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
2794e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 4.0) | vec2(2.0, 2.0) | vec2(3.0, 14.0) ];
2795e5c31af7Sopenharmony_ci				}
2796e5c31af7Sopenharmony_ci
2797e5c31af7Sopenharmony_ci				both ""
2798e5c31af7Sopenharmony_ci					#version 320 es
2799e5c31af7Sopenharmony_ci					precision highp float;
2800e5c31af7Sopenharmony_ci					${DECLARATIONS}
2801e5c31af7Sopenharmony_ci
2802e5c31af7Sopenharmony_ci					void main()
2803e5c31af7Sopenharmony_ci					{
2804e5c31af7Sopenharmony_ci						${SETUP}
2805e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * in0;
2806e5c31af7Sopenharmony_ci						${OUTPUT}
2807e5c31af7Sopenharmony_ci					}
2808e5c31af7Sopenharmony_ci				""
2809e5c31af7Sopenharmony_ci			end
2810e5c31af7Sopenharmony_ci			case uvec2_to_vec2
2811e5c31af7Sopenharmony_ci				version 320 es
2812e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2813e5c31af7Sopenharmony_ci				values
2814e5c31af7Sopenharmony_ci				{
2815e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
2816e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(2.0, 6.0) | vec2(4.0, 12.0) | vec2(1.0, 26.0) ];
2817e5c31af7Sopenharmony_ci				}
2818e5c31af7Sopenharmony_ci
2819e5c31af7Sopenharmony_ci				both ""
2820e5c31af7Sopenharmony_ci					#version 320 es
2821e5c31af7Sopenharmony_ci					precision highp float;
2822e5c31af7Sopenharmony_ci					${DECLARATIONS}
2823e5c31af7Sopenharmony_ci
2824e5c31af7Sopenharmony_ci					void main()
2825e5c31af7Sopenharmony_ci					{
2826e5c31af7Sopenharmony_ci						${SETUP}
2827e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * in0;
2828e5c31af7Sopenharmony_ci						${OUTPUT}
2829e5c31af7Sopenharmony_ci					}
2830e5c31af7Sopenharmony_ci				""
2831e5c31af7Sopenharmony_ci			end
2832e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
2833e5c31af7Sopenharmony_ci				version 320 es
2834e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2835e5c31af7Sopenharmony_ci				values
2836e5c31af7Sopenharmony_ci				{
2837e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
2838e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(1, 4, 9) | uvec3(2, 2, 6) | uvec3(3, 14, 6) ];
2839e5c31af7Sopenharmony_ci				}
2840e5c31af7Sopenharmony_ci
2841e5c31af7Sopenharmony_ci				both ""
2842e5c31af7Sopenharmony_ci					#version 320 es
2843e5c31af7Sopenharmony_ci					precision highp float;
2844e5c31af7Sopenharmony_ci					${DECLARATIONS}
2845e5c31af7Sopenharmony_ci
2846e5c31af7Sopenharmony_ci					void main()
2847e5c31af7Sopenharmony_ci					{
2848e5c31af7Sopenharmony_ci						${SETUP}
2849e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) * in0;
2850e5c31af7Sopenharmony_ci						${OUTPUT}
2851e5c31af7Sopenharmony_ci					}
2852e5c31af7Sopenharmony_ci				""
2853e5c31af7Sopenharmony_ci			end
2854e5c31af7Sopenharmony_ci			case ivec3_to_vec3
2855e5c31af7Sopenharmony_ci				version 320 es
2856e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2857e5c31af7Sopenharmony_ci				values
2858e5c31af7Sopenharmony_ci				{
2859e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
2860e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 4.0, 9.0) | vec3(2.0, 2.0, 6.0) | vec3(3.0, 14.0, 6.0) ];
2861e5c31af7Sopenharmony_ci				}
2862e5c31af7Sopenharmony_ci
2863e5c31af7Sopenharmony_ci				both ""
2864e5c31af7Sopenharmony_ci					#version 320 es
2865e5c31af7Sopenharmony_ci					precision highp float;
2866e5c31af7Sopenharmony_ci					${DECLARATIONS}
2867e5c31af7Sopenharmony_ci
2868e5c31af7Sopenharmony_ci					void main()
2869e5c31af7Sopenharmony_ci					{
2870e5c31af7Sopenharmony_ci						${SETUP}
2871e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * in0;
2872e5c31af7Sopenharmony_ci						${OUTPUT}
2873e5c31af7Sopenharmony_ci					}
2874e5c31af7Sopenharmony_ci				""
2875e5c31af7Sopenharmony_ci			end
2876e5c31af7Sopenharmony_ci			case uvec3_to_vec3
2877e5c31af7Sopenharmony_ci				version 320 es
2878e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2879e5c31af7Sopenharmony_ci				values
2880e5c31af7Sopenharmony_ci				{
2881e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
2882e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(2.0, 6.0, 15.0) | vec3(4.0, 12.0, 6.0) | vec3(1.0, 26.0, 21.0) ];
2883e5c31af7Sopenharmony_ci				}
2884e5c31af7Sopenharmony_ci
2885e5c31af7Sopenharmony_ci				both ""
2886e5c31af7Sopenharmony_ci					#version 320 es
2887e5c31af7Sopenharmony_ci					precision highp float;
2888e5c31af7Sopenharmony_ci					${DECLARATIONS}
2889e5c31af7Sopenharmony_ci
2890e5c31af7Sopenharmony_ci					void main()
2891e5c31af7Sopenharmony_ci					{
2892e5c31af7Sopenharmony_ci						${SETUP}
2893e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * in0;
2894e5c31af7Sopenharmony_ci						${OUTPUT}
2895e5c31af7Sopenharmony_ci					}
2896e5c31af7Sopenharmony_ci				""
2897e5c31af7Sopenharmony_ci			end
2898e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
2899e5c31af7Sopenharmony_ci				version 320 es
2900e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2901e5c31af7Sopenharmony_ci				values
2902e5c31af7Sopenharmony_ci				{
2903e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
2904e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(1, 4, 9, 16) | uvec4(2, 2, 6, 24) | uvec4(3, 14, 6, 20) ];
2905e5c31af7Sopenharmony_ci				}
2906e5c31af7Sopenharmony_ci
2907e5c31af7Sopenharmony_ci				both ""
2908e5c31af7Sopenharmony_ci					#version 320 es
2909e5c31af7Sopenharmony_ci					precision highp float;
2910e5c31af7Sopenharmony_ci					${DECLARATIONS}
2911e5c31af7Sopenharmony_ci
2912e5c31af7Sopenharmony_ci					void main()
2913e5c31af7Sopenharmony_ci					{
2914e5c31af7Sopenharmony_ci						${SETUP}
2915e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) * in0;
2916e5c31af7Sopenharmony_ci						${OUTPUT}
2917e5c31af7Sopenharmony_ci					}
2918e5c31af7Sopenharmony_ci				""
2919e5c31af7Sopenharmony_ci			end
2920e5c31af7Sopenharmony_ci			case ivec4_to_vec4
2921e5c31af7Sopenharmony_ci				version 320 es
2922e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2923e5c31af7Sopenharmony_ci				values
2924e5c31af7Sopenharmony_ci				{
2925e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
2926e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 4.0, 9.0, 16.0) | vec4(2.0, 2.0, 6.0, 24.0) | vec4(3.0, 14.0, 6.0, 20.0) ];
2927e5c31af7Sopenharmony_ci				}
2928e5c31af7Sopenharmony_ci
2929e5c31af7Sopenharmony_ci				both ""
2930e5c31af7Sopenharmony_ci					#version 320 es
2931e5c31af7Sopenharmony_ci					precision highp float;
2932e5c31af7Sopenharmony_ci					${DECLARATIONS}
2933e5c31af7Sopenharmony_ci
2934e5c31af7Sopenharmony_ci					void main()
2935e5c31af7Sopenharmony_ci					{
2936e5c31af7Sopenharmony_ci						${SETUP}
2937e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
2938e5c31af7Sopenharmony_ci						${OUTPUT}
2939e5c31af7Sopenharmony_ci					}
2940e5c31af7Sopenharmony_ci				""
2941e5c31af7Sopenharmony_ci			end
2942e5c31af7Sopenharmony_ci			case uvec4_to_vec4
2943e5c31af7Sopenharmony_ci				version 320 es
2944e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2945e5c31af7Sopenharmony_ci				values
2946e5c31af7Sopenharmony_ci				{
2947e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
2948e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(2.0, 6.0, 15.0, 32.0) | vec4(4.0, 12.0, 6.0, 36.0) | vec4(1.0, 26.0, 21.0, 16.0) ];
2949e5c31af7Sopenharmony_ci				}
2950e5c31af7Sopenharmony_ci
2951e5c31af7Sopenharmony_ci				both ""
2952e5c31af7Sopenharmony_ci					#version 320 es
2953e5c31af7Sopenharmony_ci					precision highp float;
2954e5c31af7Sopenharmony_ci					${DECLARATIONS}
2955e5c31af7Sopenharmony_ci
2956e5c31af7Sopenharmony_ci					void main()
2957e5c31af7Sopenharmony_ci					{
2958e5c31af7Sopenharmony_ci						${SETUP}
2959e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
2960e5c31af7Sopenharmony_ci						${OUTPUT}
2961e5c31af7Sopenharmony_ci					}
2962e5c31af7Sopenharmony_ci				""
2963e5c31af7Sopenharmony_ci			end
2964e5c31af7Sopenharmony_ci
2965e5c31af7Sopenharmony_ci		end # mul
2966e5c31af7Sopenharmony_ci		group div "Division"
2967e5c31af7Sopenharmony_ci
2968e5c31af7Sopenharmony_ci			case int_to_float
2969e5c31af7Sopenharmony_ci				version 320 es
2970e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2971e5c31af7Sopenharmony_ci				values
2972e5c31af7Sopenharmony_ci				{
2973e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2974e5c31af7Sopenharmony_ci					output float out0 = [ 1.0 | 2.0 | 2.0 | 0.666666666667 | 0.4 ];
2975e5c31af7Sopenharmony_ci				}
2976e5c31af7Sopenharmony_ci
2977e5c31af7Sopenharmony_ci				both ""
2978e5c31af7Sopenharmony_ci					#version 320 es
2979e5c31af7Sopenharmony_ci					precision highp float;
2980e5c31af7Sopenharmony_ci					${DECLARATIONS}
2981e5c31af7Sopenharmony_ci
2982e5c31af7Sopenharmony_ci					void main()
2983e5c31af7Sopenharmony_ci					{
2984e5c31af7Sopenharmony_ci						${SETUP}
2985e5c31af7Sopenharmony_ci						out0 = 2.0 / in0;
2986e5c31af7Sopenharmony_ci						${OUTPUT}
2987e5c31af7Sopenharmony_ci					}
2988e5c31af7Sopenharmony_ci				""
2989e5c31af7Sopenharmony_ci			end
2990e5c31af7Sopenharmony_ci			case int_to_uint
2991e5c31af7Sopenharmony_ci				version 320 es
2992e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
2993e5c31af7Sopenharmony_ci				values
2994e5c31af7Sopenharmony_ci				{
2995e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
2996e5c31af7Sopenharmony_ci					output uint out0 = [ 1 | 2 | 2 | 0 | 0 ];
2997e5c31af7Sopenharmony_ci				}
2998e5c31af7Sopenharmony_ci
2999e5c31af7Sopenharmony_ci				both ""
3000e5c31af7Sopenharmony_ci					#version 320 es
3001e5c31af7Sopenharmony_ci					precision highp float;
3002e5c31af7Sopenharmony_ci					${DECLARATIONS}
3003e5c31af7Sopenharmony_ci
3004e5c31af7Sopenharmony_ci					void main()
3005e5c31af7Sopenharmony_ci					{
3006e5c31af7Sopenharmony_ci						${SETUP}
3007e5c31af7Sopenharmony_ci						out0 = 2 / in0;
3008e5c31af7Sopenharmony_ci						${OUTPUT}
3009e5c31af7Sopenharmony_ci					}
3010e5c31af7Sopenharmony_ci				""
3011e5c31af7Sopenharmony_ci			end
3012e5c31af7Sopenharmony_ci			case int_to_vec2
3013e5c31af7Sopenharmony_ci				version 320 es
3014e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3015e5c31af7Sopenharmony_ci				values
3016e5c31af7Sopenharmony_ci				{
3017e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3018e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.5, 1.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(0.333333333333, 0.666666666667) | vec2(0.2, 0.4) ];
3019e5c31af7Sopenharmony_ci				}
3020e5c31af7Sopenharmony_ci
3021e5c31af7Sopenharmony_ci				both ""
3022e5c31af7Sopenharmony_ci					#version 320 es
3023e5c31af7Sopenharmony_ci					precision highp float;
3024e5c31af7Sopenharmony_ci					${DECLARATIONS}
3025e5c31af7Sopenharmony_ci
3026e5c31af7Sopenharmony_ci					void main()
3027e5c31af7Sopenharmony_ci					{
3028e5c31af7Sopenharmony_ci						${SETUP}
3029e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) / in0;
3030e5c31af7Sopenharmony_ci						${OUTPUT}
3031e5c31af7Sopenharmony_ci					}
3032e5c31af7Sopenharmony_ci				""
3033e5c31af7Sopenharmony_ci			end
3034e5c31af7Sopenharmony_ci			case int_to_vec3
3035e5c31af7Sopenharmony_ci				version 320 es
3036e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3037e5c31af7Sopenharmony_ci				values
3038e5c31af7Sopenharmony_ci				{
3039e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3040e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.5, 1.0, 1.5) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(0.333333333333, 0.666666666667, 1.0) | vec3(0.2, 0.4, 0.6) ];
3041e5c31af7Sopenharmony_ci				}
3042e5c31af7Sopenharmony_ci
3043e5c31af7Sopenharmony_ci				both ""
3044e5c31af7Sopenharmony_ci					#version 320 es
3045e5c31af7Sopenharmony_ci					precision highp float;
3046e5c31af7Sopenharmony_ci					${DECLARATIONS}
3047e5c31af7Sopenharmony_ci
3048e5c31af7Sopenharmony_ci					void main()
3049e5c31af7Sopenharmony_ci					{
3050e5c31af7Sopenharmony_ci						${SETUP}
3051e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) / in0;
3052e5c31af7Sopenharmony_ci						${OUTPUT}
3053e5c31af7Sopenharmony_ci					}
3054e5c31af7Sopenharmony_ci				""
3055e5c31af7Sopenharmony_ci			end
3056e5c31af7Sopenharmony_ci			case int_to_vec4
3057e5c31af7Sopenharmony_ci				version 320 es
3058e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3059e5c31af7Sopenharmony_ci				values
3060e5c31af7Sopenharmony_ci				{
3061e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3062e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.5, 1.0, 1.5, 2.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(0.333333333333, 0.666666666667, 1.0, 1.33333333333) | vec4(0.2, 0.4, 0.6, 0.8) ];
3063e5c31af7Sopenharmony_ci				}
3064e5c31af7Sopenharmony_ci
3065e5c31af7Sopenharmony_ci				both ""
3066e5c31af7Sopenharmony_ci					#version 320 es
3067e5c31af7Sopenharmony_ci					precision highp float;
3068e5c31af7Sopenharmony_ci					${DECLARATIONS}
3069e5c31af7Sopenharmony_ci
3070e5c31af7Sopenharmony_ci					void main()
3071e5c31af7Sopenharmony_ci					{
3072e5c31af7Sopenharmony_ci						${SETUP}
3073e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
3074e5c31af7Sopenharmony_ci						${OUTPUT}
3075e5c31af7Sopenharmony_ci					}
3076e5c31af7Sopenharmony_ci				""
3077e5c31af7Sopenharmony_ci			end
3078e5c31af7Sopenharmony_ci			case int_to_uvec2
3079e5c31af7Sopenharmony_ci				version 320 es
3080e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3081e5c31af7Sopenharmony_ci				values
3082e5c31af7Sopenharmony_ci				{
3083e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3084e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(0, 1) | uvec2(1, 2) | uvec2(1, 2) | uvec2(0, 0) | uvec2(0, 0) ];
3085e5c31af7Sopenharmony_ci				}
3086e5c31af7Sopenharmony_ci
3087e5c31af7Sopenharmony_ci				both ""
3088e5c31af7Sopenharmony_ci					#version 320 es
3089e5c31af7Sopenharmony_ci					precision highp float;
3090e5c31af7Sopenharmony_ci					${DECLARATIONS}
3091e5c31af7Sopenharmony_ci
3092e5c31af7Sopenharmony_ci					void main()
3093e5c31af7Sopenharmony_ci					{
3094e5c31af7Sopenharmony_ci						${SETUP}
3095e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) / in0;
3096e5c31af7Sopenharmony_ci						${OUTPUT}
3097e5c31af7Sopenharmony_ci					}
3098e5c31af7Sopenharmony_ci				""
3099e5c31af7Sopenharmony_ci			end
3100e5c31af7Sopenharmony_ci			case int_to_uvec3
3101e5c31af7Sopenharmony_ci				version 320 es
3102e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3103e5c31af7Sopenharmony_ci				values
3104e5c31af7Sopenharmony_ci				{
3105e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3106e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(0, 1, 1) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(0, 0, 1) | uvec3(0, 0, 0) ];
3107e5c31af7Sopenharmony_ci				}
3108e5c31af7Sopenharmony_ci
3109e5c31af7Sopenharmony_ci				both ""
3110e5c31af7Sopenharmony_ci					#version 320 es
3111e5c31af7Sopenharmony_ci					precision highp float;
3112e5c31af7Sopenharmony_ci					${DECLARATIONS}
3113e5c31af7Sopenharmony_ci
3114e5c31af7Sopenharmony_ci					void main()
3115e5c31af7Sopenharmony_ci					{
3116e5c31af7Sopenharmony_ci						${SETUP}
3117e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) / in0;
3118e5c31af7Sopenharmony_ci						${OUTPUT}
3119e5c31af7Sopenharmony_ci					}
3120e5c31af7Sopenharmony_ci				""
3121e5c31af7Sopenharmony_ci			end
3122e5c31af7Sopenharmony_ci			case int_to_uvec4
3123e5c31af7Sopenharmony_ci				version 320 es
3124e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3125e5c31af7Sopenharmony_ci				values
3126e5c31af7Sopenharmony_ci				{
3127e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3128e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(0, 1, 1, 2) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(0, 0, 1, 1) | uvec4(0, 0, 0, 0) ];
3129e5c31af7Sopenharmony_ci				}
3130e5c31af7Sopenharmony_ci
3131e5c31af7Sopenharmony_ci				both ""
3132e5c31af7Sopenharmony_ci					#version 320 es
3133e5c31af7Sopenharmony_ci					precision highp float;
3134e5c31af7Sopenharmony_ci					${DECLARATIONS}
3135e5c31af7Sopenharmony_ci
3136e5c31af7Sopenharmony_ci					void main()
3137e5c31af7Sopenharmony_ci					{
3138e5c31af7Sopenharmony_ci						${SETUP}
3139e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) / in0;
3140e5c31af7Sopenharmony_ci						${OUTPUT}
3141e5c31af7Sopenharmony_ci					}
3142e5c31af7Sopenharmony_ci				""
3143e5c31af7Sopenharmony_ci			end
3144e5c31af7Sopenharmony_ci			case uint_to_float
3145e5c31af7Sopenharmony_ci				version 320 es
3146e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3147e5c31af7Sopenharmony_ci				values
3148e5c31af7Sopenharmony_ci				{
3149e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3150e5c31af7Sopenharmony_ci					output float out0 = [ 2.0 | 0.666666666667 | 0.5 | 0.285714285714 | 0.181818181818 ];
3151e5c31af7Sopenharmony_ci				}
3152e5c31af7Sopenharmony_ci
3153e5c31af7Sopenharmony_ci				both ""
3154e5c31af7Sopenharmony_ci					#version 320 es
3155e5c31af7Sopenharmony_ci					precision highp float;
3156e5c31af7Sopenharmony_ci					${DECLARATIONS}
3157e5c31af7Sopenharmony_ci
3158e5c31af7Sopenharmony_ci					void main()
3159e5c31af7Sopenharmony_ci					{
3160e5c31af7Sopenharmony_ci						${SETUP}
3161e5c31af7Sopenharmony_ci						out0 = 2.0 / in0;
3162e5c31af7Sopenharmony_ci						${OUTPUT}
3163e5c31af7Sopenharmony_ci					}
3164e5c31af7Sopenharmony_ci				""
3165e5c31af7Sopenharmony_ci			end
3166e5c31af7Sopenharmony_ci			case uint_to_vec2
3167e5c31af7Sopenharmony_ci				version 320 es
3168e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3169e5c31af7Sopenharmony_ci				values
3170e5c31af7Sopenharmony_ci				{
3171e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3172e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(0.333333333333, 0.666666666667) | vec2(0.25, 0.5) | vec2(0.142857142857, 0.285714285714) | vec2(0.0909090909091, 0.181818181818) ];
3173e5c31af7Sopenharmony_ci				}
3174e5c31af7Sopenharmony_ci
3175e5c31af7Sopenharmony_ci				both ""
3176e5c31af7Sopenharmony_ci					#version 320 es
3177e5c31af7Sopenharmony_ci					precision highp float;
3178e5c31af7Sopenharmony_ci					${DECLARATIONS}
3179e5c31af7Sopenharmony_ci
3180e5c31af7Sopenharmony_ci					void main()
3181e5c31af7Sopenharmony_ci					{
3182e5c31af7Sopenharmony_ci						${SETUP}
3183e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) / in0;
3184e5c31af7Sopenharmony_ci						${OUTPUT}
3185e5c31af7Sopenharmony_ci					}
3186e5c31af7Sopenharmony_ci				""
3187e5c31af7Sopenharmony_ci			end
3188e5c31af7Sopenharmony_ci			case uint_to_vec3
3189e5c31af7Sopenharmony_ci				version 320 es
3190e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3191e5c31af7Sopenharmony_ci				values
3192e5c31af7Sopenharmony_ci				{
3193e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3194e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(0.333333333333, 0.666666666667, 1.0) | vec3(0.25, 0.5, 0.75) | vec3(0.142857142857, 0.285714285714, 0.428571428571) | vec3(0.0909090909091, 0.181818181818, 0.272727272727) ];
3195e5c31af7Sopenharmony_ci				}
3196e5c31af7Sopenharmony_ci
3197e5c31af7Sopenharmony_ci				both ""
3198e5c31af7Sopenharmony_ci					#version 320 es
3199e5c31af7Sopenharmony_ci					precision highp float;
3200e5c31af7Sopenharmony_ci					${DECLARATIONS}
3201e5c31af7Sopenharmony_ci
3202e5c31af7Sopenharmony_ci					void main()
3203e5c31af7Sopenharmony_ci					{
3204e5c31af7Sopenharmony_ci						${SETUP}
3205e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) / in0;
3206e5c31af7Sopenharmony_ci						${OUTPUT}
3207e5c31af7Sopenharmony_ci					}
3208e5c31af7Sopenharmony_ci				""
3209e5c31af7Sopenharmony_ci			end
3210e5c31af7Sopenharmony_ci			case uint_to_vec4
3211e5c31af7Sopenharmony_ci				version 320 es
3212e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3213e5c31af7Sopenharmony_ci				values
3214e5c31af7Sopenharmony_ci				{
3215e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3216e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(0.333333333333, 0.666666666667, 1.0, 1.33333333333) | vec4(0.25, 0.5, 0.75, 1.0) | vec4(0.142857142857, 0.285714285714, 0.428571428571, 0.571428571429) | vec4(0.0909090909091, 0.181818181818, 0.272727272727, 0.363636363636) ];
3217e5c31af7Sopenharmony_ci				}
3218e5c31af7Sopenharmony_ci
3219e5c31af7Sopenharmony_ci				both ""
3220e5c31af7Sopenharmony_ci					#version 320 es
3221e5c31af7Sopenharmony_ci					precision highp float;
3222e5c31af7Sopenharmony_ci					${DECLARATIONS}
3223e5c31af7Sopenharmony_ci
3224e5c31af7Sopenharmony_ci					void main()
3225e5c31af7Sopenharmony_ci					{
3226e5c31af7Sopenharmony_ci						${SETUP}
3227e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
3228e5c31af7Sopenharmony_ci						${OUTPUT}
3229e5c31af7Sopenharmony_ci					}
3230e5c31af7Sopenharmony_ci				""
3231e5c31af7Sopenharmony_ci			end
3232e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
3233e5c31af7Sopenharmony_ci				version 320 es
3234e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3235e5c31af7Sopenharmony_ci				values
3236e5c31af7Sopenharmony_ci				{
3237e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3238e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 2) | uvec2(0, 0) ];
3239e5c31af7Sopenharmony_ci				}
3240e5c31af7Sopenharmony_ci
3241e5c31af7Sopenharmony_ci				both ""
3242e5c31af7Sopenharmony_ci					#version 320 es
3243e5c31af7Sopenharmony_ci					precision highp float;
3244e5c31af7Sopenharmony_ci					${DECLARATIONS}
3245e5c31af7Sopenharmony_ci
3246e5c31af7Sopenharmony_ci					void main()
3247e5c31af7Sopenharmony_ci					{
3248e5c31af7Sopenharmony_ci						${SETUP}
3249e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) / in0;
3250e5c31af7Sopenharmony_ci						${OUTPUT}
3251e5c31af7Sopenharmony_ci					}
3252e5c31af7Sopenharmony_ci				""
3253e5c31af7Sopenharmony_ci			end
3254e5c31af7Sopenharmony_ci			case ivec2_to_vec2
3255e5c31af7Sopenharmony_ci				version 320 es
3256e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3257e5c31af7Sopenharmony_ci				values
3258e5c31af7Sopenharmony_ci				{
3259e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3260e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.5, 2.0) | vec2(0.333333333333, 0.285714285714) ];
3261e5c31af7Sopenharmony_ci				}
3262e5c31af7Sopenharmony_ci
3263e5c31af7Sopenharmony_ci				both ""
3264e5c31af7Sopenharmony_ci					#version 320 es
3265e5c31af7Sopenharmony_ci					precision highp float;
3266e5c31af7Sopenharmony_ci					${DECLARATIONS}
3267e5c31af7Sopenharmony_ci
3268e5c31af7Sopenharmony_ci					void main()
3269e5c31af7Sopenharmony_ci					{
3270e5c31af7Sopenharmony_ci						${SETUP}
3271e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) / in0;
3272e5c31af7Sopenharmony_ci						${OUTPUT}
3273e5c31af7Sopenharmony_ci					}
3274e5c31af7Sopenharmony_ci				""
3275e5c31af7Sopenharmony_ci			end
3276e5c31af7Sopenharmony_ci			case uvec2_to_vec2
3277e5c31af7Sopenharmony_ci				version 320 es
3278e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3279e5c31af7Sopenharmony_ci				values
3280e5c31af7Sopenharmony_ci				{
3281e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
3282e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(0.5, 0.666666666667) | vec2(0.25, 0.333333333333) | vec2(1.0, 0.153846153846) ];
3283e5c31af7Sopenharmony_ci				}
3284e5c31af7Sopenharmony_ci
3285e5c31af7Sopenharmony_ci				both ""
3286e5c31af7Sopenharmony_ci					#version 320 es
3287e5c31af7Sopenharmony_ci					precision highp float;
3288e5c31af7Sopenharmony_ci					${DECLARATIONS}
3289e5c31af7Sopenharmony_ci
3290e5c31af7Sopenharmony_ci					void main()
3291e5c31af7Sopenharmony_ci					{
3292e5c31af7Sopenharmony_ci						${SETUP}
3293e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) / in0;
3294e5c31af7Sopenharmony_ci						${OUTPUT}
3295e5c31af7Sopenharmony_ci					}
3296e5c31af7Sopenharmony_ci				""
3297e5c31af7Sopenharmony_ci			end
3298e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
3299e5c31af7Sopenharmony_ci				version 320 es
3300e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3301e5c31af7Sopenharmony_ci				values
3302e5c31af7Sopenharmony_ci				{
3303e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3304e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(0, 2, 1) | uvec3(0, 0, 1) ];
3305e5c31af7Sopenharmony_ci				}
3306e5c31af7Sopenharmony_ci
3307e5c31af7Sopenharmony_ci				both ""
3308e5c31af7Sopenharmony_ci					#version 320 es
3309e5c31af7Sopenharmony_ci					precision highp float;
3310e5c31af7Sopenharmony_ci					${DECLARATIONS}
3311e5c31af7Sopenharmony_ci
3312e5c31af7Sopenharmony_ci					void main()
3313e5c31af7Sopenharmony_ci					{
3314e5c31af7Sopenharmony_ci						${SETUP}
3315e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) / in0;
3316e5c31af7Sopenharmony_ci						${OUTPUT}
3317e5c31af7Sopenharmony_ci					}
3318e5c31af7Sopenharmony_ci				""
3319e5c31af7Sopenharmony_ci			end
3320e5c31af7Sopenharmony_ci			case ivec3_to_vec3
3321e5c31af7Sopenharmony_ci				version 320 es
3322e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3323e5c31af7Sopenharmony_ci				values
3324e5c31af7Sopenharmony_ci				{
3325e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3326e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.5, 2.0, 1.5) | vec3(0.333333333333, 0.285714285714, 1.5) ];
3327e5c31af7Sopenharmony_ci				}
3328e5c31af7Sopenharmony_ci
3329e5c31af7Sopenharmony_ci				both ""
3330e5c31af7Sopenharmony_ci					#version 320 es
3331e5c31af7Sopenharmony_ci					precision highp float;
3332e5c31af7Sopenharmony_ci					${DECLARATIONS}
3333e5c31af7Sopenharmony_ci
3334e5c31af7Sopenharmony_ci					void main()
3335e5c31af7Sopenharmony_ci					{
3336e5c31af7Sopenharmony_ci						${SETUP}
3337e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) / in0;
3338e5c31af7Sopenharmony_ci						${OUTPUT}
3339e5c31af7Sopenharmony_ci					}
3340e5c31af7Sopenharmony_ci				""
3341e5c31af7Sopenharmony_ci			end
3342e5c31af7Sopenharmony_ci			case uvec3_to_vec3
3343e5c31af7Sopenharmony_ci				version 320 es
3344e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3345e5c31af7Sopenharmony_ci				values
3346e5c31af7Sopenharmony_ci				{
3347e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
3348e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(0.5, 0.666666666667, 0.6) | vec3(0.25, 0.333333333333, 1.5) | vec3(1.0, 0.153846153846, 0.428571428571) ];
3349e5c31af7Sopenharmony_ci				}
3350e5c31af7Sopenharmony_ci
3351e5c31af7Sopenharmony_ci				both ""
3352e5c31af7Sopenharmony_ci					#version 320 es
3353e5c31af7Sopenharmony_ci					precision highp float;
3354e5c31af7Sopenharmony_ci					${DECLARATIONS}
3355e5c31af7Sopenharmony_ci
3356e5c31af7Sopenharmony_ci					void main()
3357e5c31af7Sopenharmony_ci					{
3358e5c31af7Sopenharmony_ci						${SETUP}
3359e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) / in0;
3360e5c31af7Sopenharmony_ci						${OUTPUT}
3361e5c31af7Sopenharmony_ci					}
3362e5c31af7Sopenharmony_ci				""
3363e5c31af7Sopenharmony_ci			end
3364e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
3365e5c31af7Sopenharmony_ci				version 320 es
3366e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3367e5c31af7Sopenharmony_ci				values
3368e5c31af7Sopenharmony_ci				{
3369e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3370e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(0, 2, 1, 0) | uvec4(0, 0, 1, 0) ];
3371e5c31af7Sopenharmony_ci				}
3372e5c31af7Sopenharmony_ci
3373e5c31af7Sopenharmony_ci				both ""
3374e5c31af7Sopenharmony_ci					#version 320 es
3375e5c31af7Sopenharmony_ci					precision highp float;
3376e5c31af7Sopenharmony_ci					${DECLARATIONS}
3377e5c31af7Sopenharmony_ci
3378e5c31af7Sopenharmony_ci					void main()
3379e5c31af7Sopenharmony_ci					{
3380e5c31af7Sopenharmony_ci						${SETUP}
3381e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) / in0;
3382e5c31af7Sopenharmony_ci						${OUTPUT}
3383e5c31af7Sopenharmony_ci					}
3384e5c31af7Sopenharmony_ci				""
3385e5c31af7Sopenharmony_ci			end
3386e5c31af7Sopenharmony_ci			case ivec4_to_vec4
3387e5c31af7Sopenharmony_ci				version 320 es
3388e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3389e5c31af7Sopenharmony_ci				values
3390e5c31af7Sopenharmony_ci				{
3391e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3392e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.5, 2.0, 1.5, 0.666666666667) | vec4(0.333333333333, 0.285714285714, 1.5, 0.8) ];
3393e5c31af7Sopenharmony_ci				}
3394e5c31af7Sopenharmony_ci
3395e5c31af7Sopenharmony_ci				both ""
3396e5c31af7Sopenharmony_ci					#version 320 es
3397e5c31af7Sopenharmony_ci					precision highp float;
3398e5c31af7Sopenharmony_ci					${DECLARATIONS}
3399e5c31af7Sopenharmony_ci
3400e5c31af7Sopenharmony_ci					void main()
3401e5c31af7Sopenharmony_ci					{
3402e5c31af7Sopenharmony_ci						${SETUP}
3403e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
3404e5c31af7Sopenharmony_ci						${OUTPUT}
3405e5c31af7Sopenharmony_ci					}
3406e5c31af7Sopenharmony_ci				""
3407e5c31af7Sopenharmony_ci			end
3408e5c31af7Sopenharmony_ci			case uvec4_to_vec4
3409e5c31af7Sopenharmony_ci				version 320 es
3410e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3411e5c31af7Sopenharmony_ci				values
3412e5c31af7Sopenharmony_ci				{
3413e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
3414e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(0.5, 0.666666666667, 0.6, 0.5) | vec4(0.25, 0.333333333333, 1.5, 0.444444444444) | vec4(1.0, 0.153846153846, 0.428571428571, 1.0) ];
3415e5c31af7Sopenharmony_ci				}
3416e5c31af7Sopenharmony_ci
3417e5c31af7Sopenharmony_ci				both ""
3418e5c31af7Sopenharmony_ci					#version 320 es
3419e5c31af7Sopenharmony_ci					precision highp float;
3420e5c31af7Sopenharmony_ci					${DECLARATIONS}
3421e5c31af7Sopenharmony_ci
3422e5c31af7Sopenharmony_ci					void main()
3423e5c31af7Sopenharmony_ci					{
3424e5c31af7Sopenharmony_ci						${SETUP}
3425e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
3426e5c31af7Sopenharmony_ci						${OUTPUT}
3427e5c31af7Sopenharmony_ci					}
3428e5c31af7Sopenharmony_ci				""
3429e5c31af7Sopenharmony_ci			end
3430e5c31af7Sopenharmony_ci
3431e5c31af7Sopenharmony_ci		end # div
3432e5c31af7Sopenharmony_ci
3433e5c31af7Sopenharmony_ci	end # literal_before_input
3434e5c31af7Sopenharmony_ci
3435e5c31af7Sopenharmony_ciend # arithmetic
3436e5c31af7Sopenharmony_cigroup comparisons "Comparisons"
3437e5c31af7Sopenharmony_ci
3438e5c31af7Sopenharmony_ci	group input_before_literal "Input before literal"
3439e5c31af7Sopenharmony_ci
3440e5c31af7Sopenharmony_ci		group equal "Equal"
3441e5c31af7Sopenharmony_ci
3442e5c31af7Sopenharmony_ci			case int_to_float
3443e5c31af7Sopenharmony_ci				version 320 es
3444e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3445e5c31af7Sopenharmony_ci				values
3446e5c31af7Sopenharmony_ci				{
3447e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3448e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
3449e5c31af7Sopenharmony_ci				}
3450e5c31af7Sopenharmony_ci
3451e5c31af7Sopenharmony_ci				both ""
3452e5c31af7Sopenharmony_ci					#version 320 es
3453e5c31af7Sopenharmony_ci					precision highp float;
3454e5c31af7Sopenharmony_ci					${DECLARATIONS}
3455e5c31af7Sopenharmony_ci
3456e5c31af7Sopenharmony_ci					void main()
3457e5c31af7Sopenharmony_ci					{
3458e5c31af7Sopenharmony_ci						${SETUP}
3459e5c31af7Sopenharmony_ci						out0 = in0 == 2.0;
3460e5c31af7Sopenharmony_ci						${OUTPUT}
3461e5c31af7Sopenharmony_ci					}
3462e5c31af7Sopenharmony_ci				""
3463e5c31af7Sopenharmony_ci			end
3464e5c31af7Sopenharmony_ci			case int_to_uint
3465e5c31af7Sopenharmony_ci				version 320 es
3466e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3467e5c31af7Sopenharmony_ci				values
3468e5c31af7Sopenharmony_ci				{
3469e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3470e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
3471e5c31af7Sopenharmony_ci				}
3472e5c31af7Sopenharmony_ci
3473e5c31af7Sopenharmony_ci				both ""
3474e5c31af7Sopenharmony_ci					#version 320 es
3475e5c31af7Sopenharmony_ci					precision highp float;
3476e5c31af7Sopenharmony_ci					${DECLARATIONS}
3477e5c31af7Sopenharmony_ci
3478e5c31af7Sopenharmony_ci					void main()
3479e5c31af7Sopenharmony_ci					{
3480e5c31af7Sopenharmony_ci						${SETUP}
3481e5c31af7Sopenharmony_ci						out0 = in0 == 2;
3482e5c31af7Sopenharmony_ci						${OUTPUT}
3483e5c31af7Sopenharmony_ci					}
3484e5c31af7Sopenharmony_ci				""
3485e5c31af7Sopenharmony_ci			end
3486e5c31af7Sopenharmony_ci			case uint_to_float
3487e5c31af7Sopenharmony_ci				version 320 es
3488e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3489e5c31af7Sopenharmony_ci				values
3490e5c31af7Sopenharmony_ci				{
3491e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3492e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | false | false ];
3493e5c31af7Sopenharmony_ci				}
3494e5c31af7Sopenharmony_ci
3495e5c31af7Sopenharmony_ci				both ""
3496e5c31af7Sopenharmony_ci					#version 320 es
3497e5c31af7Sopenharmony_ci					precision highp float;
3498e5c31af7Sopenharmony_ci					${DECLARATIONS}
3499e5c31af7Sopenharmony_ci
3500e5c31af7Sopenharmony_ci					void main()
3501e5c31af7Sopenharmony_ci					{
3502e5c31af7Sopenharmony_ci						${SETUP}
3503e5c31af7Sopenharmony_ci						out0 = in0 == 2.0;
3504e5c31af7Sopenharmony_ci						${OUTPUT}
3505e5c31af7Sopenharmony_ci					}
3506e5c31af7Sopenharmony_ci				""
3507e5c31af7Sopenharmony_ci			end
3508e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
3509e5c31af7Sopenharmony_ci				version 320 es
3510e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3511e5c31af7Sopenharmony_ci				values
3512e5c31af7Sopenharmony_ci				{
3513e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3514e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3515e5c31af7Sopenharmony_ci				}
3516e5c31af7Sopenharmony_ci
3517e5c31af7Sopenharmony_ci				both ""
3518e5c31af7Sopenharmony_ci					#version 320 es
3519e5c31af7Sopenharmony_ci					precision highp float;
3520e5c31af7Sopenharmony_ci					${DECLARATIONS}
3521e5c31af7Sopenharmony_ci
3522e5c31af7Sopenharmony_ci					void main()
3523e5c31af7Sopenharmony_ci					{
3524e5c31af7Sopenharmony_ci						${SETUP}
3525e5c31af7Sopenharmony_ci						out0 = in0 == uvec2(1, 2);
3526e5c31af7Sopenharmony_ci						${OUTPUT}
3527e5c31af7Sopenharmony_ci					}
3528e5c31af7Sopenharmony_ci				""
3529e5c31af7Sopenharmony_ci			end
3530e5c31af7Sopenharmony_ci			case ivec2_to_vec2
3531e5c31af7Sopenharmony_ci				version 320 es
3532e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3533e5c31af7Sopenharmony_ci				values
3534e5c31af7Sopenharmony_ci				{
3535e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3536e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3537e5c31af7Sopenharmony_ci				}
3538e5c31af7Sopenharmony_ci
3539e5c31af7Sopenharmony_ci				both ""
3540e5c31af7Sopenharmony_ci					#version 320 es
3541e5c31af7Sopenharmony_ci					precision highp float;
3542e5c31af7Sopenharmony_ci					${DECLARATIONS}
3543e5c31af7Sopenharmony_ci
3544e5c31af7Sopenharmony_ci					void main()
3545e5c31af7Sopenharmony_ci					{
3546e5c31af7Sopenharmony_ci						${SETUP}
3547e5c31af7Sopenharmony_ci						out0 = in0 == vec2(1.0, 2.0);
3548e5c31af7Sopenharmony_ci						${OUTPUT}
3549e5c31af7Sopenharmony_ci					}
3550e5c31af7Sopenharmony_ci				""
3551e5c31af7Sopenharmony_ci			end
3552e5c31af7Sopenharmony_ci			case uvec2_to_vec2
3553e5c31af7Sopenharmony_ci				version 320 es
3554e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3555e5c31af7Sopenharmony_ci				values
3556e5c31af7Sopenharmony_ci				{
3557e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
3558e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
3559e5c31af7Sopenharmony_ci				}
3560e5c31af7Sopenharmony_ci
3561e5c31af7Sopenharmony_ci				both ""
3562e5c31af7Sopenharmony_ci					#version 320 es
3563e5c31af7Sopenharmony_ci					precision highp float;
3564e5c31af7Sopenharmony_ci					${DECLARATIONS}
3565e5c31af7Sopenharmony_ci
3566e5c31af7Sopenharmony_ci					void main()
3567e5c31af7Sopenharmony_ci					{
3568e5c31af7Sopenharmony_ci						${SETUP}
3569e5c31af7Sopenharmony_ci						out0 = in0 == vec2(1.0, 2.0);
3570e5c31af7Sopenharmony_ci						${OUTPUT}
3571e5c31af7Sopenharmony_ci					}
3572e5c31af7Sopenharmony_ci				""
3573e5c31af7Sopenharmony_ci			end
3574e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
3575e5c31af7Sopenharmony_ci				version 320 es
3576e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3577e5c31af7Sopenharmony_ci				values
3578e5c31af7Sopenharmony_ci				{
3579e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3580e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3581e5c31af7Sopenharmony_ci				}
3582e5c31af7Sopenharmony_ci
3583e5c31af7Sopenharmony_ci				both ""
3584e5c31af7Sopenharmony_ci					#version 320 es
3585e5c31af7Sopenharmony_ci					precision highp float;
3586e5c31af7Sopenharmony_ci					${DECLARATIONS}
3587e5c31af7Sopenharmony_ci
3588e5c31af7Sopenharmony_ci					void main()
3589e5c31af7Sopenharmony_ci					{
3590e5c31af7Sopenharmony_ci						${SETUP}
3591e5c31af7Sopenharmony_ci						out0 = in0 == uvec3(1, 2, 3);
3592e5c31af7Sopenharmony_ci						${OUTPUT}
3593e5c31af7Sopenharmony_ci					}
3594e5c31af7Sopenharmony_ci				""
3595e5c31af7Sopenharmony_ci			end
3596e5c31af7Sopenharmony_ci			case ivec3_to_vec3
3597e5c31af7Sopenharmony_ci				version 320 es
3598e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3599e5c31af7Sopenharmony_ci				values
3600e5c31af7Sopenharmony_ci				{
3601e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3602e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3603e5c31af7Sopenharmony_ci				}
3604e5c31af7Sopenharmony_ci
3605e5c31af7Sopenharmony_ci				both ""
3606e5c31af7Sopenharmony_ci					#version 320 es
3607e5c31af7Sopenharmony_ci					precision highp float;
3608e5c31af7Sopenharmony_ci					${DECLARATIONS}
3609e5c31af7Sopenharmony_ci
3610e5c31af7Sopenharmony_ci					void main()
3611e5c31af7Sopenharmony_ci					{
3612e5c31af7Sopenharmony_ci						${SETUP}
3613e5c31af7Sopenharmony_ci						out0 = in0 == vec3(1.0, 2.0, 3.0);
3614e5c31af7Sopenharmony_ci						${OUTPUT}
3615e5c31af7Sopenharmony_ci					}
3616e5c31af7Sopenharmony_ci				""
3617e5c31af7Sopenharmony_ci			end
3618e5c31af7Sopenharmony_ci			case uvec3_to_vec3
3619e5c31af7Sopenharmony_ci				version 320 es
3620e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3621e5c31af7Sopenharmony_ci				values
3622e5c31af7Sopenharmony_ci				{
3623e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
3624e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
3625e5c31af7Sopenharmony_ci				}
3626e5c31af7Sopenharmony_ci
3627e5c31af7Sopenharmony_ci				both ""
3628e5c31af7Sopenharmony_ci					#version 320 es
3629e5c31af7Sopenharmony_ci					precision highp float;
3630e5c31af7Sopenharmony_ci					${DECLARATIONS}
3631e5c31af7Sopenharmony_ci
3632e5c31af7Sopenharmony_ci					void main()
3633e5c31af7Sopenharmony_ci					{
3634e5c31af7Sopenharmony_ci						${SETUP}
3635e5c31af7Sopenharmony_ci						out0 = in0 == vec3(1.0, 2.0, 3.0);
3636e5c31af7Sopenharmony_ci						${OUTPUT}
3637e5c31af7Sopenharmony_ci					}
3638e5c31af7Sopenharmony_ci				""
3639e5c31af7Sopenharmony_ci			end
3640e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
3641e5c31af7Sopenharmony_ci				version 320 es
3642e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3643e5c31af7Sopenharmony_ci				values
3644e5c31af7Sopenharmony_ci				{
3645e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3646e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3647e5c31af7Sopenharmony_ci				}
3648e5c31af7Sopenharmony_ci
3649e5c31af7Sopenharmony_ci				both ""
3650e5c31af7Sopenharmony_ci					#version 320 es
3651e5c31af7Sopenharmony_ci					precision highp float;
3652e5c31af7Sopenharmony_ci					${DECLARATIONS}
3653e5c31af7Sopenharmony_ci
3654e5c31af7Sopenharmony_ci					void main()
3655e5c31af7Sopenharmony_ci					{
3656e5c31af7Sopenharmony_ci						${SETUP}
3657e5c31af7Sopenharmony_ci						out0 = in0 == uvec4(1, 2, 3, 4);
3658e5c31af7Sopenharmony_ci						${OUTPUT}
3659e5c31af7Sopenharmony_ci					}
3660e5c31af7Sopenharmony_ci				""
3661e5c31af7Sopenharmony_ci			end
3662e5c31af7Sopenharmony_ci			case ivec4_to_vec4
3663e5c31af7Sopenharmony_ci				version 320 es
3664e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3665e5c31af7Sopenharmony_ci				values
3666e5c31af7Sopenharmony_ci				{
3667e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3668e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
3669e5c31af7Sopenharmony_ci				}
3670e5c31af7Sopenharmony_ci
3671e5c31af7Sopenharmony_ci				both ""
3672e5c31af7Sopenharmony_ci					#version 320 es
3673e5c31af7Sopenharmony_ci					precision highp float;
3674e5c31af7Sopenharmony_ci					${DECLARATIONS}
3675e5c31af7Sopenharmony_ci
3676e5c31af7Sopenharmony_ci					void main()
3677e5c31af7Sopenharmony_ci					{
3678e5c31af7Sopenharmony_ci						${SETUP}
3679e5c31af7Sopenharmony_ci						out0 = in0 == vec4(1.0, 2.0, 3.0, 4.0);
3680e5c31af7Sopenharmony_ci						${OUTPUT}
3681e5c31af7Sopenharmony_ci					}
3682e5c31af7Sopenharmony_ci				""
3683e5c31af7Sopenharmony_ci			end
3684e5c31af7Sopenharmony_ci			case uvec4_to_vec4
3685e5c31af7Sopenharmony_ci				version 320 es
3686e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3687e5c31af7Sopenharmony_ci				values
3688e5c31af7Sopenharmony_ci				{
3689e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
3690e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
3691e5c31af7Sopenharmony_ci				}
3692e5c31af7Sopenharmony_ci
3693e5c31af7Sopenharmony_ci				both ""
3694e5c31af7Sopenharmony_ci					#version 320 es
3695e5c31af7Sopenharmony_ci					precision highp float;
3696e5c31af7Sopenharmony_ci					${DECLARATIONS}
3697e5c31af7Sopenharmony_ci
3698e5c31af7Sopenharmony_ci					void main()
3699e5c31af7Sopenharmony_ci					{
3700e5c31af7Sopenharmony_ci						${SETUP}
3701e5c31af7Sopenharmony_ci						out0 = in0 == vec4(1.0, 2.0, 3.0, 4.0);
3702e5c31af7Sopenharmony_ci						${OUTPUT}
3703e5c31af7Sopenharmony_ci					}
3704e5c31af7Sopenharmony_ci				""
3705e5c31af7Sopenharmony_ci			end
3706e5c31af7Sopenharmony_ci
3707e5c31af7Sopenharmony_ci		end # equal
3708e5c31af7Sopenharmony_ci		group not_equal "Not equal"
3709e5c31af7Sopenharmony_ci
3710e5c31af7Sopenharmony_ci			case int_to_float
3711e5c31af7Sopenharmony_ci				version 320 es
3712e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3713e5c31af7Sopenharmony_ci				values
3714e5c31af7Sopenharmony_ci				{
3715e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3716e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
3717e5c31af7Sopenharmony_ci				}
3718e5c31af7Sopenharmony_ci
3719e5c31af7Sopenharmony_ci				both ""
3720e5c31af7Sopenharmony_ci					#version 320 es
3721e5c31af7Sopenharmony_ci					precision highp float;
3722e5c31af7Sopenharmony_ci					${DECLARATIONS}
3723e5c31af7Sopenharmony_ci
3724e5c31af7Sopenharmony_ci					void main()
3725e5c31af7Sopenharmony_ci					{
3726e5c31af7Sopenharmony_ci						${SETUP}
3727e5c31af7Sopenharmony_ci						out0 = in0 != 2.0;
3728e5c31af7Sopenharmony_ci						${OUTPUT}
3729e5c31af7Sopenharmony_ci					}
3730e5c31af7Sopenharmony_ci				""
3731e5c31af7Sopenharmony_ci			end
3732e5c31af7Sopenharmony_ci			case int_to_uint
3733e5c31af7Sopenharmony_ci				version 320 es
3734e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3735e5c31af7Sopenharmony_ci				values
3736e5c31af7Sopenharmony_ci				{
3737e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3738e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
3739e5c31af7Sopenharmony_ci				}
3740e5c31af7Sopenharmony_ci
3741e5c31af7Sopenharmony_ci				both ""
3742e5c31af7Sopenharmony_ci					#version 320 es
3743e5c31af7Sopenharmony_ci					precision highp float;
3744e5c31af7Sopenharmony_ci					${DECLARATIONS}
3745e5c31af7Sopenharmony_ci
3746e5c31af7Sopenharmony_ci					void main()
3747e5c31af7Sopenharmony_ci					{
3748e5c31af7Sopenharmony_ci						${SETUP}
3749e5c31af7Sopenharmony_ci						out0 = in0 != 2;
3750e5c31af7Sopenharmony_ci						${OUTPUT}
3751e5c31af7Sopenharmony_ci					}
3752e5c31af7Sopenharmony_ci				""
3753e5c31af7Sopenharmony_ci			end
3754e5c31af7Sopenharmony_ci			case uint_to_float
3755e5c31af7Sopenharmony_ci				version 320 es
3756e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3757e5c31af7Sopenharmony_ci				values
3758e5c31af7Sopenharmony_ci				{
3759e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
3760e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | true | true ];
3761e5c31af7Sopenharmony_ci				}
3762e5c31af7Sopenharmony_ci
3763e5c31af7Sopenharmony_ci				both ""
3764e5c31af7Sopenharmony_ci					#version 320 es
3765e5c31af7Sopenharmony_ci					precision highp float;
3766e5c31af7Sopenharmony_ci					${DECLARATIONS}
3767e5c31af7Sopenharmony_ci
3768e5c31af7Sopenharmony_ci					void main()
3769e5c31af7Sopenharmony_ci					{
3770e5c31af7Sopenharmony_ci						${SETUP}
3771e5c31af7Sopenharmony_ci						out0 = in0 != 2.0;
3772e5c31af7Sopenharmony_ci						${OUTPUT}
3773e5c31af7Sopenharmony_ci					}
3774e5c31af7Sopenharmony_ci				""
3775e5c31af7Sopenharmony_ci			end
3776e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
3777e5c31af7Sopenharmony_ci				version 320 es
3778e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3779e5c31af7Sopenharmony_ci				values
3780e5c31af7Sopenharmony_ci				{
3781e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3782e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3783e5c31af7Sopenharmony_ci				}
3784e5c31af7Sopenharmony_ci
3785e5c31af7Sopenharmony_ci				both ""
3786e5c31af7Sopenharmony_ci					#version 320 es
3787e5c31af7Sopenharmony_ci					precision highp float;
3788e5c31af7Sopenharmony_ci					${DECLARATIONS}
3789e5c31af7Sopenharmony_ci
3790e5c31af7Sopenharmony_ci					void main()
3791e5c31af7Sopenharmony_ci					{
3792e5c31af7Sopenharmony_ci						${SETUP}
3793e5c31af7Sopenharmony_ci						out0 = in0 != uvec2(1, 2);
3794e5c31af7Sopenharmony_ci						${OUTPUT}
3795e5c31af7Sopenharmony_ci					}
3796e5c31af7Sopenharmony_ci				""
3797e5c31af7Sopenharmony_ci			end
3798e5c31af7Sopenharmony_ci			case ivec2_to_vec2
3799e5c31af7Sopenharmony_ci				version 320 es
3800e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3801e5c31af7Sopenharmony_ci				values
3802e5c31af7Sopenharmony_ci				{
3803e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
3804e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3805e5c31af7Sopenharmony_ci				}
3806e5c31af7Sopenharmony_ci
3807e5c31af7Sopenharmony_ci				both ""
3808e5c31af7Sopenharmony_ci					#version 320 es
3809e5c31af7Sopenharmony_ci					precision highp float;
3810e5c31af7Sopenharmony_ci					${DECLARATIONS}
3811e5c31af7Sopenharmony_ci
3812e5c31af7Sopenharmony_ci					void main()
3813e5c31af7Sopenharmony_ci					{
3814e5c31af7Sopenharmony_ci						${SETUP}
3815e5c31af7Sopenharmony_ci						out0 = in0 != vec2(1.0, 2.0);
3816e5c31af7Sopenharmony_ci						${OUTPUT}
3817e5c31af7Sopenharmony_ci					}
3818e5c31af7Sopenharmony_ci				""
3819e5c31af7Sopenharmony_ci			end
3820e5c31af7Sopenharmony_ci			case uvec2_to_vec2
3821e5c31af7Sopenharmony_ci				version 320 es
3822e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3823e5c31af7Sopenharmony_ci				values
3824e5c31af7Sopenharmony_ci				{
3825e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
3826e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
3827e5c31af7Sopenharmony_ci				}
3828e5c31af7Sopenharmony_ci
3829e5c31af7Sopenharmony_ci				both ""
3830e5c31af7Sopenharmony_ci					#version 320 es
3831e5c31af7Sopenharmony_ci					precision highp float;
3832e5c31af7Sopenharmony_ci					${DECLARATIONS}
3833e5c31af7Sopenharmony_ci
3834e5c31af7Sopenharmony_ci					void main()
3835e5c31af7Sopenharmony_ci					{
3836e5c31af7Sopenharmony_ci						${SETUP}
3837e5c31af7Sopenharmony_ci						out0 = in0 != vec2(1.0, 2.0);
3838e5c31af7Sopenharmony_ci						${OUTPUT}
3839e5c31af7Sopenharmony_ci					}
3840e5c31af7Sopenharmony_ci				""
3841e5c31af7Sopenharmony_ci			end
3842e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
3843e5c31af7Sopenharmony_ci				version 320 es
3844e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3845e5c31af7Sopenharmony_ci				values
3846e5c31af7Sopenharmony_ci				{
3847e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3848e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3849e5c31af7Sopenharmony_ci				}
3850e5c31af7Sopenharmony_ci
3851e5c31af7Sopenharmony_ci				both ""
3852e5c31af7Sopenharmony_ci					#version 320 es
3853e5c31af7Sopenharmony_ci					precision highp float;
3854e5c31af7Sopenharmony_ci					${DECLARATIONS}
3855e5c31af7Sopenharmony_ci
3856e5c31af7Sopenharmony_ci					void main()
3857e5c31af7Sopenharmony_ci					{
3858e5c31af7Sopenharmony_ci						${SETUP}
3859e5c31af7Sopenharmony_ci						out0 = in0 != uvec3(1, 2, 3);
3860e5c31af7Sopenharmony_ci						${OUTPUT}
3861e5c31af7Sopenharmony_ci					}
3862e5c31af7Sopenharmony_ci				""
3863e5c31af7Sopenharmony_ci			end
3864e5c31af7Sopenharmony_ci			case ivec3_to_vec3
3865e5c31af7Sopenharmony_ci				version 320 es
3866e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3867e5c31af7Sopenharmony_ci				values
3868e5c31af7Sopenharmony_ci				{
3869e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
3870e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3871e5c31af7Sopenharmony_ci				}
3872e5c31af7Sopenharmony_ci
3873e5c31af7Sopenharmony_ci				both ""
3874e5c31af7Sopenharmony_ci					#version 320 es
3875e5c31af7Sopenharmony_ci					precision highp float;
3876e5c31af7Sopenharmony_ci					${DECLARATIONS}
3877e5c31af7Sopenharmony_ci
3878e5c31af7Sopenharmony_ci					void main()
3879e5c31af7Sopenharmony_ci					{
3880e5c31af7Sopenharmony_ci						${SETUP}
3881e5c31af7Sopenharmony_ci						out0 = in0 != vec3(1.0, 2.0, 3.0);
3882e5c31af7Sopenharmony_ci						${OUTPUT}
3883e5c31af7Sopenharmony_ci					}
3884e5c31af7Sopenharmony_ci				""
3885e5c31af7Sopenharmony_ci			end
3886e5c31af7Sopenharmony_ci			case uvec3_to_vec3
3887e5c31af7Sopenharmony_ci				version 320 es
3888e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3889e5c31af7Sopenharmony_ci				values
3890e5c31af7Sopenharmony_ci				{
3891e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
3892e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
3893e5c31af7Sopenharmony_ci				}
3894e5c31af7Sopenharmony_ci
3895e5c31af7Sopenharmony_ci				both ""
3896e5c31af7Sopenharmony_ci					#version 320 es
3897e5c31af7Sopenharmony_ci					precision highp float;
3898e5c31af7Sopenharmony_ci					${DECLARATIONS}
3899e5c31af7Sopenharmony_ci
3900e5c31af7Sopenharmony_ci					void main()
3901e5c31af7Sopenharmony_ci					{
3902e5c31af7Sopenharmony_ci						${SETUP}
3903e5c31af7Sopenharmony_ci						out0 = in0 != vec3(1.0, 2.0, 3.0);
3904e5c31af7Sopenharmony_ci						${OUTPUT}
3905e5c31af7Sopenharmony_ci					}
3906e5c31af7Sopenharmony_ci				""
3907e5c31af7Sopenharmony_ci			end
3908e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
3909e5c31af7Sopenharmony_ci				version 320 es
3910e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3911e5c31af7Sopenharmony_ci				values
3912e5c31af7Sopenharmony_ci				{
3913e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3914e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3915e5c31af7Sopenharmony_ci				}
3916e5c31af7Sopenharmony_ci
3917e5c31af7Sopenharmony_ci				both ""
3918e5c31af7Sopenharmony_ci					#version 320 es
3919e5c31af7Sopenharmony_ci					precision highp float;
3920e5c31af7Sopenharmony_ci					${DECLARATIONS}
3921e5c31af7Sopenharmony_ci
3922e5c31af7Sopenharmony_ci					void main()
3923e5c31af7Sopenharmony_ci					{
3924e5c31af7Sopenharmony_ci						${SETUP}
3925e5c31af7Sopenharmony_ci						out0 = in0 != uvec4(1, 2, 3, 4);
3926e5c31af7Sopenharmony_ci						${OUTPUT}
3927e5c31af7Sopenharmony_ci					}
3928e5c31af7Sopenharmony_ci				""
3929e5c31af7Sopenharmony_ci			end
3930e5c31af7Sopenharmony_ci			case ivec4_to_vec4
3931e5c31af7Sopenharmony_ci				version 320 es
3932e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3933e5c31af7Sopenharmony_ci				values
3934e5c31af7Sopenharmony_ci				{
3935e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
3936e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
3937e5c31af7Sopenharmony_ci				}
3938e5c31af7Sopenharmony_ci
3939e5c31af7Sopenharmony_ci				both ""
3940e5c31af7Sopenharmony_ci					#version 320 es
3941e5c31af7Sopenharmony_ci					precision highp float;
3942e5c31af7Sopenharmony_ci					${DECLARATIONS}
3943e5c31af7Sopenharmony_ci
3944e5c31af7Sopenharmony_ci					void main()
3945e5c31af7Sopenharmony_ci					{
3946e5c31af7Sopenharmony_ci						${SETUP}
3947e5c31af7Sopenharmony_ci						out0 = in0 != vec4(1.0, 2.0, 3.0, 4.0);
3948e5c31af7Sopenharmony_ci						${OUTPUT}
3949e5c31af7Sopenharmony_ci					}
3950e5c31af7Sopenharmony_ci				""
3951e5c31af7Sopenharmony_ci			end
3952e5c31af7Sopenharmony_ci			case uvec4_to_vec4
3953e5c31af7Sopenharmony_ci				version 320 es
3954e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3955e5c31af7Sopenharmony_ci				values
3956e5c31af7Sopenharmony_ci				{
3957e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
3958e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
3959e5c31af7Sopenharmony_ci				}
3960e5c31af7Sopenharmony_ci
3961e5c31af7Sopenharmony_ci				both ""
3962e5c31af7Sopenharmony_ci					#version 320 es
3963e5c31af7Sopenharmony_ci					precision highp float;
3964e5c31af7Sopenharmony_ci					${DECLARATIONS}
3965e5c31af7Sopenharmony_ci
3966e5c31af7Sopenharmony_ci					void main()
3967e5c31af7Sopenharmony_ci					{
3968e5c31af7Sopenharmony_ci						${SETUP}
3969e5c31af7Sopenharmony_ci						out0 = in0 != vec4(1.0, 2.0, 3.0, 4.0);
3970e5c31af7Sopenharmony_ci						${OUTPUT}
3971e5c31af7Sopenharmony_ci					}
3972e5c31af7Sopenharmony_ci				""
3973e5c31af7Sopenharmony_ci			end
3974e5c31af7Sopenharmony_ci
3975e5c31af7Sopenharmony_ci		end # not_equal
3976e5c31af7Sopenharmony_ci		group less "Less than"
3977e5c31af7Sopenharmony_ci
3978e5c31af7Sopenharmony_ci			case int_to_float
3979e5c31af7Sopenharmony_ci				version 320 es
3980e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
3981e5c31af7Sopenharmony_ci				values
3982e5c31af7Sopenharmony_ci				{
3983e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
3984e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | false | false ];
3985e5c31af7Sopenharmony_ci				}
3986e5c31af7Sopenharmony_ci
3987e5c31af7Sopenharmony_ci				both ""
3988e5c31af7Sopenharmony_ci					#version 320 es
3989e5c31af7Sopenharmony_ci					precision highp float;
3990e5c31af7Sopenharmony_ci					${DECLARATIONS}
3991e5c31af7Sopenharmony_ci
3992e5c31af7Sopenharmony_ci					void main()
3993e5c31af7Sopenharmony_ci					{
3994e5c31af7Sopenharmony_ci						${SETUP}
3995e5c31af7Sopenharmony_ci						out0 = in0 < 2.0;
3996e5c31af7Sopenharmony_ci						${OUTPUT}
3997e5c31af7Sopenharmony_ci					}
3998e5c31af7Sopenharmony_ci				""
3999e5c31af7Sopenharmony_ci			end
4000e5c31af7Sopenharmony_ci			case int_to_uint
4001e5c31af7Sopenharmony_ci				version 320 es
4002e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4003e5c31af7Sopenharmony_ci				values
4004e5c31af7Sopenharmony_ci				{
4005e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4006e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | false | false ];
4007e5c31af7Sopenharmony_ci				}
4008e5c31af7Sopenharmony_ci
4009e5c31af7Sopenharmony_ci				both ""
4010e5c31af7Sopenharmony_ci					#version 320 es
4011e5c31af7Sopenharmony_ci					precision highp float;
4012e5c31af7Sopenharmony_ci					${DECLARATIONS}
4013e5c31af7Sopenharmony_ci
4014e5c31af7Sopenharmony_ci					void main()
4015e5c31af7Sopenharmony_ci					{
4016e5c31af7Sopenharmony_ci						${SETUP}
4017e5c31af7Sopenharmony_ci						out0 = in0 < 2;
4018e5c31af7Sopenharmony_ci						${OUTPUT}
4019e5c31af7Sopenharmony_ci					}
4020e5c31af7Sopenharmony_ci				""
4021e5c31af7Sopenharmony_ci			end
4022e5c31af7Sopenharmony_ci			case uint_to_float
4023e5c31af7Sopenharmony_ci				version 320 es
4024e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4025e5c31af7Sopenharmony_ci				values
4026e5c31af7Sopenharmony_ci				{
4027e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4028e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
4029e5c31af7Sopenharmony_ci				}
4030e5c31af7Sopenharmony_ci
4031e5c31af7Sopenharmony_ci				both ""
4032e5c31af7Sopenharmony_ci					#version 320 es
4033e5c31af7Sopenharmony_ci					precision highp float;
4034e5c31af7Sopenharmony_ci					${DECLARATIONS}
4035e5c31af7Sopenharmony_ci
4036e5c31af7Sopenharmony_ci					void main()
4037e5c31af7Sopenharmony_ci					{
4038e5c31af7Sopenharmony_ci						${SETUP}
4039e5c31af7Sopenharmony_ci						out0 = in0 < 2.0;
4040e5c31af7Sopenharmony_ci						${OUTPUT}
4041e5c31af7Sopenharmony_ci					}
4042e5c31af7Sopenharmony_ci				""
4043e5c31af7Sopenharmony_ci			end
4044e5c31af7Sopenharmony_ci
4045e5c31af7Sopenharmony_ci		end # less
4046e5c31af7Sopenharmony_ci		group greater "Greater than"
4047e5c31af7Sopenharmony_ci
4048e5c31af7Sopenharmony_ci			case int_to_float
4049e5c31af7Sopenharmony_ci				version 320 es
4050e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4051e5c31af7Sopenharmony_ci				values
4052e5c31af7Sopenharmony_ci				{
4053e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4054e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | true | true ];
4055e5c31af7Sopenharmony_ci				}
4056e5c31af7Sopenharmony_ci
4057e5c31af7Sopenharmony_ci				both ""
4058e5c31af7Sopenharmony_ci					#version 320 es
4059e5c31af7Sopenharmony_ci					precision highp float;
4060e5c31af7Sopenharmony_ci					${DECLARATIONS}
4061e5c31af7Sopenharmony_ci
4062e5c31af7Sopenharmony_ci					void main()
4063e5c31af7Sopenharmony_ci					{
4064e5c31af7Sopenharmony_ci						${SETUP}
4065e5c31af7Sopenharmony_ci						out0 = in0 > 2.0;
4066e5c31af7Sopenharmony_ci						${OUTPUT}
4067e5c31af7Sopenharmony_ci					}
4068e5c31af7Sopenharmony_ci				""
4069e5c31af7Sopenharmony_ci			end
4070e5c31af7Sopenharmony_ci			case int_to_uint
4071e5c31af7Sopenharmony_ci				version 320 es
4072e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4073e5c31af7Sopenharmony_ci				values
4074e5c31af7Sopenharmony_ci				{
4075e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4076e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | true | true ];
4077e5c31af7Sopenharmony_ci				}
4078e5c31af7Sopenharmony_ci
4079e5c31af7Sopenharmony_ci				both ""
4080e5c31af7Sopenharmony_ci					#version 320 es
4081e5c31af7Sopenharmony_ci					precision highp float;
4082e5c31af7Sopenharmony_ci					${DECLARATIONS}
4083e5c31af7Sopenharmony_ci
4084e5c31af7Sopenharmony_ci					void main()
4085e5c31af7Sopenharmony_ci					{
4086e5c31af7Sopenharmony_ci						${SETUP}
4087e5c31af7Sopenharmony_ci						out0 = in0 > 2;
4088e5c31af7Sopenharmony_ci						${OUTPUT}
4089e5c31af7Sopenharmony_ci					}
4090e5c31af7Sopenharmony_ci				""
4091e5c31af7Sopenharmony_ci			end
4092e5c31af7Sopenharmony_ci			case uint_to_float
4093e5c31af7Sopenharmony_ci				version 320 es
4094e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4095e5c31af7Sopenharmony_ci				values
4096e5c31af7Sopenharmony_ci				{
4097e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4098e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4099e5c31af7Sopenharmony_ci				}
4100e5c31af7Sopenharmony_ci
4101e5c31af7Sopenharmony_ci				both ""
4102e5c31af7Sopenharmony_ci					#version 320 es
4103e5c31af7Sopenharmony_ci					precision highp float;
4104e5c31af7Sopenharmony_ci					${DECLARATIONS}
4105e5c31af7Sopenharmony_ci
4106e5c31af7Sopenharmony_ci					void main()
4107e5c31af7Sopenharmony_ci					{
4108e5c31af7Sopenharmony_ci						${SETUP}
4109e5c31af7Sopenharmony_ci						out0 = in0 > 2.0;
4110e5c31af7Sopenharmony_ci						${OUTPUT}
4111e5c31af7Sopenharmony_ci					}
4112e5c31af7Sopenharmony_ci				""
4113e5c31af7Sopenharmony_ci			end
4114e5c31af7Sopenharmony_ci
4115e5c31af7Sopenharmony_ci		end # greater
4116e5c31af7Sopenharmony_ci		group less_or_equal "Less than or equal"
4117e5c31af7Sopenharmony_ci
4118e5c31af7Sopenharmony_ci			case int_to_float
4119e5c31af7Sopenharmony_ci				version 320 es
4120e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4121e5c31af7Sopenharmony_ci				values
4122e5c31af7Sopenharmony_ci				{
4123e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4124e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | false | false ];
4125e5c31af7Sopenharmony_ci				}
4126e5c31af7Sopenharmony_ci
4127e5c31af7Sopenharmony_ci				both ""
4128e5c31af7Sopenharmony_ci					#version 320 es
4129e5c31af7Sopenharmony_ci					precision highp float;
4130e5c31af7Sopenharmony_ci					${DECLARATIONS}
4131e5c31af7Sopenharmony_ci
4132e5c31af7Sopenharmony_ci					void main()
4133e5c31af7Sopenharmony_ci					{
4134e5c31af7Sopenharmony_ci						${SETUP}
4135e5c31af7Sopenharmony_ci						out0 = in0 <= 2.0;
4136e5c31af7Sopenharmony_ci						${OUTPUT}
4137e5c31af7Sopenharmony_ci					}
4138e5c31af7Sopenharmony_ci				""
4139e5c31af7Sopenharmony_ci			end
4140e5c31af7Sopenharmony_ci			case int_to_uint
4141e5c31af7Sopenharmony_ci				version 320 es
4142e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4143e5c31af7Sopenharmony_ci				values
4144e5c31af7Sopenharmony_ci				{
4145e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4146e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | false | false ];
4147e5c31af7Sopenharmony_ci				}
4148e5c31af7Sopenharmony_ci
4149e5c31af7Sopenharmony_ci				both ""
4150e5c31af7Sopenharmony_ci					#version 320 es
4151e5c31af7Sopenharmony_ci					precision highp float;
4152e5c31af7Sopenharmony_ci					${DECLARATIONS}
4153e5c31af7Sopenharmony_ci
4154e5c31af7Sopenharmony_ci					void main()
4155e5c31af7Sopenharmony_ci					{
4156e5c31af7Sopenharmony_ci						${SETUP}
4157e5c31af7Sopenharmony_ci						out0 = in0 <= 2;
4158e5c31af7Sopenharmony_ci						${OUTPUT}
4159e5c31af7Sopenharmony_ci					}
4160e5c31af7Sopenharmony_ci				""
4161e5c31af7Sopenharmony_ci			end
4162e5c31af7Sopenharmony_ci			case uint_to_float
4163e5c31af7Sopenharmony_ci				version 320 es
4164e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4165e5c31af7Sopenharmony_ci				values
4166e5c31af7Sopenharmony_ci				{
4167e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4168e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
4169e5c31af7Sopenharmony_ci				}
4170e5c31af7Sopenharmony_ci
4171e5c31af7Sopenharmony_ci				both ""
4172e5c31af7Sopenharmony_ci					#version 320 es
4173e5c31af7Sopenharmony_ci					precision highp float;
4174e5c31af7Sopenharmony_ci					${DECLARATIONS}
4175e5c31af7Sopenharmony_ci
4176e5c31af7Sopenharmony_ci					void main()
4177e5c31af7Sopenharmony_ci					{
4178e5c31af7Sopenharmony_ci						${SETUP}
4179e5c31af7Sopenharmony_ci						out0 = in0 <= 2.0;
4180e5c31af7Sopenharmony_ci						${OUTPUT}
4181e5c31af7Sopenharmony_ci					}
4182e5c31af7Sopenharmony_ci				""
4183e5c31af7Sopenharmony_ci			end
4184e5c31af7Sopenharmony_ci
4185e5c31af7Sopenharmony_ci		end # less_or_equal
4186e5c31af7Sopenharmony_ci		group greater_or_equal "Greater than or equal"
4187e5c31af7Sopenharmony_ci
4188e5c31af7Sopenharmony_ci			case int_to_float
4189e5c31af7Sopenharmony_ci				version 320 es
4190e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4191e5c31af7Sopenharmony_ci				values
4192e5c31af7Sopenharmony_ci				{
4193e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4194e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | true | true ];
4195e5c31af7Sopenharmony_ci				}
4196e5c31af7Sopenharmony_ci
4197e5c31af7Sopenharmony_ci				both ""
4198e5c31af7Sopenharmony_ci					#version 320 es
4199e5c31af7Sopenharmony_ci					precision highp float;
4200e5c31af7Sopenharmony_ci					${DECLARATIONS}
4201e5c31af7Sopenharmony_ci
4202e5c31af7Sopenharmony_ci					void main()
4203e5c31af7Sopenharmony_ci					{
4204e5c31af7Sopenharmony_ci						${SETUP}
4205e5c31af7Sopenharmony_ci						out0 = in0 >= 2.0;
4206e5c31af7Sopenharmony_ci						${OUTPUT}
4207e5c31af7Sopenharmony_ci					}
4208e5c31af7Sopenharmony_ci				""
4209e5c31af7Sopenharmony_ci			end
4210e5c31af7Sopenharmony_ci			case int_to_uint
4211e5c31af7Sopenharmony_ci				version 320 es
4212e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4213e5c31af7Sopenharmony_ci				values
4214e5c31af7Sopenharmony_ci				{
4215e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4216e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | true | true ];
4217e5c31af7Sopenharmony_ci				}
4218e5c31af7Sopenharmony_ci
4219e5c31af7Sopenharmony_ci				both ""
4220e5c31af7Sopenharmony_ci					#version 320 es
4221e5c31af7Sopenharmony_ci					precision highp float;
4222e5c31af7Sopenharmony_ci					${DECLARATIONS}
4223e5c31af7Sopenharmony_ci
4224e5c31af7Sopenharmony_ci					void main()
4225e5c31af7Sopenharmony_ci					{
4226e5c31af7Sopenharmony_ci						${SETUP}
4227e5c31af7Sopenharmony_ci						out0 = in0 >= 2;
4228e5c31af7Sopenharmony_ci						${OUTPUT}
4229e5c31af7Sopenharmony_ci					}
4230e5c31af7Sopenharmony_ci				""
4231e5c31af7Sopenharmony_ci			end
4232e5c31af7Sopenharmony_ci			case uint_to_float
4233e5c31af7Sopenharmony_ci				version 320 es
4234e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4235e5c31af7Sopenharmony_ci				values
4236e5c31af7Sopenharmony_ci				{
4237e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4238e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4239e5c31af7Sopenharmony_ci				}
4240e5c31af7Sopenharmony_ci
4241e5c31af7Sopenharmony_ci				both ""
4242e5c31af7Sopenharmony_ci					#version 320 es
4243e5c31af7Sopenharmony_ci					precision highp float;
4244e5c31af7Sopenharmony_ci					${DECLARATIONS}
4245e5c31af7Sopenharmony_ci
4246e5c31af7Sopenharmony_ci					void main()
4247e5c31af7Sopenharmony_ci					{
4248e5c31af7Sopenharmony_ci						${SETUP}
4249e5c31af7Sopenharmony_ci						out0 = in0 >= 2.0;
4250e5c31af7Sopenharmony_ci						${OUTPUT}
4251e5c31af7Sopenharmony_ci					}
4252e5c31af7Sopenharmony_ci				""
4253e5c31af7Sopenharmony_ci			end
4254e5c31af7Sopenharmony_ci
4255e5c31af7Sopenharmony_ci		end # greater_or_equal
4256e5c31af7Sopenharmony_ci
4257e5c31af7Sopenharmony_ci	end # input_before_literal
4258e5c31af7Sopenharmony_ci	group literal_before_input "Literal before input"
4259e5c31af7Sopenharmony_ci
4260e5c31af7Sopenharmony_ci		group equal "Equal"
4261e5c31af7Sopenharmony_ci
4262e5c31af7Sopenharmony_ci			case int_to_float
4263e5c31af7Sopenharmony_ci				version 320 es
4264e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4265e5c31af7Sopenharmony_ci				values
4266e5c31af7Sopenharmony_ci				{
4267e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4268e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
4269e5c31af7Sopenharmony_ci				}
4270e5c31af7Sopenharmony_ci
4271e5c31af7Sopenharmony_ci				both ""
4272e5c31af7Sopenharmony_ci					#version 320 es
4273e5c31af7Sopenharmony_ci					precision highp float;
4274e5c31af7Sopenharmony_ci					${DECLARATIONS}
4275e5c31af7Sopenharmony_ci
4276e5c31af7Sopenharmony_ci					void main()
4277e5c31af7Sopenharmony_ci					{
4278e5c31af7Sopenharmony_ci						${SETUP}
4279e5c31af7Sopenharmony_ci						out0 = 2.0 == in0;
4280e5c31af7Sopenharmony_ci						${OUTPUT}
4281e5c31af7Sopenharmony_ci					}
4282e5c31af7Sopenharmony_ci				""
4283e5c31af7Sopenharmony_ci			end
4284e5c31af7Sopenharmony_ci			case int_to_uint
4285e5c31af7Sopenharmony_ci				version 320 es
4286e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4287e5c31af7Sopenharmony_ci				values
4288e5c31af7Sopenharmony_ci				{
4289e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4290e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
4291e5c31af7Sopenharmony_ci				}
4292e5c31af7Sopenharmony_ci
4293e5c31af7Sopenharmony_ci				both ""
4294e5c31af7Sopenharmony_ci					#version 320 es
4295e5c31af7Sopenharmony_ci					precision highp float;
4296e5c31af7Sopenharmony_ci					${DECLARATIONS}
4297e5c31af7Sopenharmony_ci
4298e5c31af7Sopenharmony_ci					void main()
4299e5c31af7Sopenharmony_ci					{
4300e5c31af7Sopenharmony_ci						${SETUP}
4301e5c31af7Sopenharmony_ci						out0 = 2 == in0;
4302e5c31af7Sopenharmony_ci						${OUTPUT}
4303e5c31af7Sopenharmony_ci					}
4304e5c31af7Sopenharmony_ci				""
4305e5c31af7Sopenharmony_ci			end
4306e5c31af7Sopenharmony_ci			case uint_to_float
4307e5c31af7Sopenharmony_ci				version 320 es
4308e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4309e5c31af7Sopenharmony_ci				values
4310e5c31af7Sopenharmony_ci				{
4311e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4312e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | false | false ];
4313e5c31af7Sopenharmony_ci				}
4314e5c31af7Sopenharmony_ci
4315e5c31af7Sopenharmony_ci				both ""
4316e5c31af7Sopenharmony_ci					#version 320 es
4317e5c31af7Sopenharmony_ci					precision highp float;
4318e5c31af7Sopenharmony_ci					${DECLARATIONS}
4319e5c31af7Sopenharmony_ci
4320e5c31af7Sopenharmony_ci					void main()
4321e5c31af7Sopenharmony_ci					{
4322e5c31af7Sopenharmony_ci						${SETUP}
4323e5c31af7Sopenharmony_ci						out0 = 2.0 == in0;
4324e5c31af7Sopenharmony_ci						${OUTPUT}
4325e5c31af7Sopenharmony_ci					}
4326e5c31af7Sopenharmony_ci				""
4327e5c31af7Sopenharmony_ci			end
4328e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
4329e5c31af7Sopenharmony_ci				version 320 es
4330e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4331e5c31af7Sopenharmony_ci				values
4332e5c31af7Sopenharmony_ci				{
4333e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
4334e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4335e5c31af7Sopenharmony_ci				}
4336e5c31af7Sopenharmony_ci
4337e5c31af7Sopenharmony_ci				both ""
4338e5c31af7Sopenharmony_ci					#version 320 es
4339e5c31af7Sopenharmony_ci					precision highp float;
4340e5c31af7Sopenharmony_ci					${DECLARATIONS}
4341e5c31af7Sopenharmony_ci
4342e5c31af7Sopenharmony_ci					void main()
4343e5c31af7Sopenharmony_ci					{
4344e5c31af7Sopenharmony_ci						${SETUP}
4345e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) == in0;
4346e5c31af7Sopenharmony_ci						${OUTPUT}
4347e5c31af7Sopenharmony_ci					}
4348e5c31af7Sopenharmony_ci				""
4349e5c31af7Sopenharmony_ci			end
4350e5c31af7Sopenharmony_ci			case ivec2_to_vec2
4351e5c31af7Sopenharmony_ci				version 320 es
4352e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4353e5c31af7Sopenharmony_ci				values
4354e5c31af7Sopenharmony_ci				{
4355e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
4356e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4357e5c31af7Sopenharmony_ci				}
4358e5c31af7Sopenharmony_ci
4359e5c31af7Sopenharmony_ci				both ""
4360e5c31af7Sopenharmony_ci					#version 320 es
4361e5c31af7Sopenharmony_ci					precision highp float;
4362e5c31af7Sopenharmony_ci					${DECLARATIONS}
4363e5c31af7Sopenharmony_ci
4364e5c31af7Sopenharmony_ci					void main()
4365e5c31af7Sopenharmony_ci					{
4366e5c31af7Sopenharmony_ci						${SETUP}
4367e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) == in0;
4368e5c31af7Sopenharmony_ci						${OUTPUT}
4369e5c31af7Sopenharmony_ci					}
4370e5c31af7Sopenharmony_ci				""
4371e5c31af7Sopenharmony_ci			end
4372e5c31af7Sopenharmony_ci			case uvec2_to_vec2
4373e5c31af7Sopenharmony_ci				version 320 es
4374e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4375e5c31af7Sopenharmony_ci				values
4376e5c31af7Sopenharmony_ci				{
4377e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
4378e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
4379e5c31af7Sopenharmony_ci				}
4380e5c31af7Sopenharmony_ci
4381e5c31af7Sopenharmony_ci				both ""
4382e5c31af7Sopenharmony_ci					#version 320 es
4383e5c31af7Sopenharmony_ci					precision highp float;
4384e5c31af7Sopenharmony_ci					${DECLARATIONS}
4385e5c31af7Sopenharmony_ci
4386e5c31af7Sopenharmony_ci					void main()
4387e5c31af7Sopenharmony_ci					{
4388e5c31af7Sopenharmony_ci						${SETUP}
4389e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) == in0;
4390e5c31af7Sopenharmony_ci						${OUTPUT}
4391e5c31af7Sopenharmony_ci					}
4392e5c31af7Sopenharmony_ci				""
4393e5c31af7Sopenharmony_ci			end
4394e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
4395e5c31af7Sopenharmony_ci				version 320 es
4396e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4397e5c31af7Sopenharmony_ci				values
4398e5c31af7Sopenharmony_ci				{
4399e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
4400e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4401e5c31af7Sopenharmony_ci				}
4402e5c31af7Sopenharmony_ci
4403e5c31af7Sopenharmony_ci				both ""
4404e5c31af7Sopenharmony_ci					#version 320 es
4405e5c31af7Sopenharmony_ci					precision highp float;
4406e5c31af7Sopenharmony_ci					${DECLARATIONS}
4407e5c31af7Sopenharmony_ci
4408e5c31af7Sopenharmony_ci					void main()
4409e5c31af7Sopenharmony_ci					{
4410e5c31af7Sopenharmony_ci						${SETUP}
4411e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) == in0;
4412e5c31af7Sopenharmony_ci						${OUTPUT}
4413e5c31af7Sopenharmony_ci					}
4414e5c31af7Sopenharmony_ci				""
4415e5c31af7Sopenharmony_ci			end
4416e5c31af7Sopenharmony_ci			case ivec3_to_vec3
4417e5c31af7Sopenharmony_ci				version 320 es
4418e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4419e5c31af7Sopenharmony_ci				values
4420e5c31af7Sopenharmony_ci				{
4421e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
4422e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4423e5c31af7Sopenharmony_ci				}
4424e5c31af7Sopenharmony_ci
4425e5c31af7Sopenharmony_ci				both ""
4426e5c31af7Sopenharmony_ci					#version 320 es
4427e5c31af7Sopenharmony_ci					precision highp float;
4428e5c31af7Sopenharmony_ci					${DECLARATIONS}
4429e5c31af7Sopenharmony_ci
4430e5c31af7Sopenharmony_ci					void main()
4431e5c31af7Sopenharmony_ci					{
4432e5c31af7Sopenharmony_ci						${SETUP}
4433e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) == in0;
4434e5c31af7Sopenharmony_ci						${OUTPUT}
4435e5c31af7Sopenharmony_ci					}
4436e5c31af7Sopenharmony_ci				""
4437e5c31af7Sopenharmony_ci			end
4438e5c31af7Sopenharmony_ci			case uvec3_to_vec3
4439e5c31af7Sopenharmony_ci				version 320 es
4440e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4441e5c31af7Sopenharmony_ci				values
4442e5c31af7Sopenharmony_ci				{
4443e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
4444e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
4445e5c31af7Sopenharmony_ci				}
4446e5c31af7Sopenharmony_ci
4447e5c31af7Sopenharmony_ci				both ""
4448e5c31af7Sopenharmony_ci					#version 320 es
4449e5c31af7Sopenharmony_ci					precision highp float;
4450e5c31af7Sopenharmony_ci					${DECLARATIONS}
4451e5c31af7Sopenharmony_ci
4452e5c31af7Sopenharmony_ci					void main()
4453e5c31af7Sopenharmony_ci					{
4454e5c31af7Sopenharmony_ci						${SETUP}
4455e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) == in0;
4456e5c31af7Sopenharmony_ci						${OUTPUT}
4457e5c31af7Sopenharmony_ci					}
4458e5c31af7Sopenharmony_ci				""
4459e5c31af7Sopenharmony_ci			end
4460e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
4461e5c31af7Sopenharmony_ci				version 320 es
4462e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4463e5c31af7Sopenharmony_ci				values
4464e5c31af7Sopenharmony_ci				{
4465e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
4466e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4467e5c31af7Sopenharmony_ci				}
4468e5c31af7Sopenharmony_ci
4469e5c31af7Sopenharmony_ci				both ""
4470e5c31af7Sopenharmony_ci					#version 320 es
4471e5c31af7Sopenharmony_ci					precision highp float;
4472e5c31af7Sopenharmony_ci					${DECLARATIONS}
4473e5c31af7Sopenharmony_ci
4474e5c31af7Sopenharmony_ci					void main()
4475e5c31af7Sopenharmony_ci					{
4476e5c31af7Sopenharmony_ci						${SETUP}
4477e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) == in0;
4478e5c31af7Sopenharmony_ci						${OUTPUT}
4479e5c31af7Sopenharmony_ci					}
4480e5c31af7Sopenharmony_ci				""
4481e5c31af7Sopenharmony_ci			end
4482e5c31af7Sopenharmony_ci			case ivec4_to_vec4
4483e5c31af7Sopenharmony_ci				version 320 es
4484e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4485e5c31af7Sopenharmony_ci				values
4486e5c31af7Sopenharmony_ci				{
4487e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
4488e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false ];
4489e5c31af7Sopenharmony_ci				}
4490e5c31af7Sopenharmony_ci
4491e5c31af7Sopenharmony_ci				both ""
4492e5c31af7Sopenharmony_ci					#version 320 es
4493e5c31af7Sopenharmony_ci					precision highp float;
4494e5c31af7Sopenharmony_ci					${DECLARATIONS}
4495e5c31af7Sopenharmony_ci
4496e5c31af7Sopenharmony_ci					void main()
4497e5c31af7Sopenharmony_ci					{
4498e5c31af7Sopenharmony_ci						${SETUP}
4499e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) == in0;
4500e5c31af7Sopenharmony_ci						${OUTPUT}
4501e5c31af7Sopenharmony_ci					}
4502e5c31af7Sopenharmony_ci				""
4503e5c31af7Sopenharmony_ci			end
4504e5c31af7Sopenharmony_ci			case uvec4_to_vec4
4505e5c31af7Sopenharmony_ci				version 320 es
4506e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4507e5c31af7Sopenharmony_ci				values
4508e5c31af7Sopenharmony_ci				{
4509e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
4510e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false ];
4511e5c31af7Sopenharmony_ci				}
4512e5c31af7Sopenharmony_ci
4513e5c31af7Sopenharmony_ci				both ""
4514e5c31af7Sopenharmony_ci					#version 320 es
4515e5c31af7Sopenharmony_ci					precision highp float;
4516e5c31af7Sopenharmony_ci					${DECLARATIONS}
4517e5c31af7Sopenharmony_ci
4518e5c31af7Sopenharmony_ci					void main()
4519e5c31af7Sopenharmony_ci					{
4520e5c31af7Sopenharmony_ci						${SETUP}
4521e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) == in0;
4522e5c31af7Sopenharmony_ci						${OUTPUT}
4523e5c31af7Sopenharmony_ci					}
4524e5c31af7Sopenharmony_ci				""
4525e5c31af7Sopenharmony_ci			end
4526e5c31af7Sopenharmony_ci
4527e5c31af7Sopenharmony_ci		end # equal
4528e5c31af7Sopenharmony_ci		group not_equal "Not equal"
4529e5c31af7Sopenharmony_ci
4530e5c31af7Sopenharmony_ci			case int_to_float
4531e5c31af7Sopenharmony_ci				version 320 es
4532e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4533e5c31af7Sopenharmony_ci				values
4534e5c31af7Sopenharmony_ci				{
4535e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4536e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4537e5c31af7Sopenharmony_ci				}
4538e5c31af7Sopenharmony_ci
4539e5c31af7Sopenharmony_ci				both ""
4540e5c31af7Sopenharmony_ci					#version 320 es
4541e5c31af7Sopenharmony_ci					precision highp float;
4542e5c31af7Sopenharmony_ci					${DECLARATIONS}
4543e5c31af7Sopenharmony_ci
4544e5c31af7Sopenharmony_ci					void main()
4545e5c31af7Sopenharmony_ci					{
4546e5c31af7Sopenharmony_ci						${SETUP}
4547e5c31af7Sopenharmony_ci						out0 = 2.0 != in0;
4548e5c31af7Sopenharmony_ci						${OUTPUT}
4549e5c31af7Sopenharmony_ci					}
4550e5c31af7Sopenharmony_ci				""
4551e5c31af7Sopenharmony_ci			end
4552e5c31af7Sopenharmony_ci			case int_to_uint
4553e5c31af7Sopenharmony_ci				version 320 es
4554e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4555e5c31af7Sopenharmony_ci				values
4556e5c31af7Sopenharmony_ci				{
4557e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4558e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4559e5c31af7Sopenharmony_ci				}
4560e5c31af7Sopenharmony_ci
4561e5c31af7Sopenharmony_ci				both ""
4562e5c31af7Sopenharmony_ci					#version 320 es
4563e5c31af7Sopenharmony_ci					precision highp float;
4564e5c31af7Sopenharmony_ci					${DECLARATIONS}
4565e5c31af7Sopenharmony_ci
4566e5c31af7Sopenharmony_ci					void main()
4567e5c31af7Sopenharmony_ci					{
4568e5c31af7Sopenharmony_ci						${SETUP}
4569e5c31af7Sopenharmony_ci						out0 = 2 != in0;
4570e5c31af7Sopenharmony_ci						${OUTPUT}
4571e5c31af7Sopenharmony_ci					}
4572e5c31af7Sopenharmony_ci				""
4573e5c31af7Sopenharmony_ci			end
4574e5c31af7Sopenharmony_ci			case uint_to_float
4575e5c31af7Sopenharmony_ci				version 320 es
4576e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4577e5c31af7Sopenharmony_ci				values
4578e5c31af7Sopenharmony_ci				{
4579e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4580e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | true | true ];
4581e5c31af7Sopenharmony_ci				}
4582e5c31af7Sopenharmony_ci
4583e5c31af7Sopenharmony_ci				both ""
4584e5c31af7Sopenharmony_ci					#version 320 es
4585e5c31af7Sopenharmony_ci					precision highp float;
4586e5c31af7Sopenharmony_ci					${DECLARATIONS}
4587e5c31af7Sopenharmony_ci
4588e5c31af7Sopenharmony_ci					void main()
4589e5c31af7Sopenharmony_ci					{
4590e5c31af7Sopenharmony_ci						${SETUP}
4591e5c31af7Sopenharmony_ci						out0 = 2.0 != in0;
4592e5c31af7Sopenharmony_ci						${OUTPUT}
4593e5c31af7Sopenharmony_ci					}
4594e5c31af7Sopenharmony_ci				""
4595e5c31af7Sopenharmony_ci			end
4596e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
4597e5c31af7Sopenharmony_ci				version 320 es
4598e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4599e5c31af7Sopenharmony_ci				values
4600e5c31af7Sopenharmony_ci				{
4601e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
4602e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4603e5c31af7Sopenharmony_ci				}
4604e5c31af7Sopenharmony_ci
4605e5c31af7Sopenharmony_ci				both ""
4606e5c31af7Sopenharmony_ci					#version 320 es
4607e5c31af7Sopenharmony_ci					precision highp float;
4608e5c31af7Sopenharmony_ci					${DECLARATIONS}
4609e5c31af7Sopenharmony_ci
4610e5c31af7Sopenharmony_ci					void main()
4611e5c31af7Sopenharmony_ci					{
4612e5c31af7Sopenharmony_ci						${SETUP}
4613e5c31af7Sopenharmony_ci						out0 = uvec2(1, 2) != in0;
4614e5c31af7Sopenharmony_ci						${OUTPUT}
4615e5c31af7Sopenharmony_ci					}
4616e5c31af7Sopenharmony_ci				""
4617e5c31af7Sopenharmony_ci			end
4618e5c31af7Sopenharmony_ci			case ivec2_to_vec2
4619e5c31af7Sopenharmony_ci				version 320 es
4620e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4621e5c31af7Sopenharmony_ci				values
4622e5c31af7Sopenharmony_ci				{
4623e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
4624e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4625e5c31af7Sopenharmony_ci				}
4626e5c31af7Sopenharmony_ci
4627e5c31af7Sopenharmony_ci				both ""
4628e5c31af7Sopenharmony_ci					#version 320 es
4629e5c31af7Sopenharmony_ci					precision highp float;
4630e5c31af7Sopenharmony_ci					${DECLARATIONS}
4631e5c31af7Sopenharmony_ci
4632e5c31af7Sopenharmony_ci					void main()
4633e5c31af7Sopenharmony_ci					{
4634e5c31af7Sopenharmony_ci						${SETUP}
4635e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) != in0;
4636e5c31af7Sopenharmony_ci						${OUTPUT}
4637e5c31af7Sopenharmony_ci					}
4638e5c31af7Sopenharmony_ci				""
4639e5c31af7Sopenharmony_ci			end
4640e5c31af7Sopenharmony_ci			case uvec2_to_vec2
4641e5c31af7Sopenharmony_ci				version 320 es
4642e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4643e5c31af7Sopenharmony_ci				values
4644e5c31af7Sopenharmony_ci				{
4645e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
4646e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
4647e5c31af7Sopenharmony_ci				}
4648e5c31af7Sopenharmony_ci
4649e5c31af7Sopenharmony_ci				both ""
4650e5c31af7Sopenharmony_ci					#version 320 es
4651e5c31af7Sopenharmony_ci					precision highp float;
4652e5c31af7Sopenharmony_ci					${DECLARATIONS}
4653e5c31af7Sopenharmony_ci
4654e5c31af7Sopenharmony_ci					void main()
4655e5c31af7Sopenharmony_ci					{
4656e5c31af7Sopenharmony_ci						${SETUP}
4657e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) != in0;
4658e5c31af7Sopenharmony_ci						${OUTPUT}
4659e5c31af7Sopenharmony_ci					}
4660e5c31af7Sopenharmony_ci				""
4661e5c31af7Sopenharmony_ci			end
4662e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
4663e5c31af7Sopenharmony_ci				version 320 es
4664e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4665e5c31af7Sopenharmony_ci				values
4666e5c31af7Sopenharmony_ci				{
4667e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
4668e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4669e5c31af7Sopenharmony_ci				}
4670e5c31af7Sopenharmony_ci
4671e5c31af7Sopenharmony_ci				both ""
4672e5c31af7Sopenharmony_ci					#version 320 es
4673e5c31af7Sopenharmony_ci					precision highp float;
4674e5c31af7Sopenharmony_ci					${DECLARATIONS}
4675e5c31af7Sopenharmony_ci
4676e5c31af7Sopenharmony_ci					void main()
4677e5c31af7Sopenharmony_ci					{
4678e5c31af7Sopenharmony_ci						${SETUP}
4679e5c31af7Sopenharmony_ci						out0 = uvec3(1, 2, 3) != in0;
4680e5c31af7Sopenharmony_ci						${OUTPUT}
4681e5c31af7Sopenharmony_ci					}
4682e5c31af7Sopenharmony_ci				""
4683e5c31af7Sopenharmony_ci			end
4684e5c31af7Sopenharmony_ci			case ivec3_to_vec3
4685e5c31af7Sopenharmony_ci				version 320 es
4686e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4687e5c31af7Sopenharmony_ci				values
4688e5c31af7Sopenharmony_ci				{
4689e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
4690e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4691e5c31af7Sopenharmony_ci				}
4692e5c31af7Sopenharmony_ci
4693e5c31af7Sopenharmony_ci				both ""
4694e5c31af7Sopenharmony_ci					#version 320 es
4695e5c31af7Sopenharmony_ci					precision highp float;
4696e5c31af7Sopenharmony_ci					${DECLARATIONS}
4697e5c31af7Sopenharmony_ci
4698e5c31af7Sopenharmony_ci					void main()
4699e5c31af7Sopenharmony_ci					{
4700e5c31af7Sopenharmony_ci						${SETUP}
4701e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) != in0;
4702e5c31af7Sopenharmony_ci						${OUTPUT}
4703e5c31af7Sopenharmony_ci					}
4704e5c31af7Sopenharmony_ci				""
4705e5c31af7Sopenharmony_ci			end
4706e5c31af7Sopenharmony_ci			case uvec3_to_vec3
4707e5c31af7Sopenharmony_ci				version 320 es
4708e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4709e5c31af7Sopenharmony_ci				values
4710e5c31af7Sopenharmony_ci				{
4711e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
4712e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
4713e5c31af7Sopenharmony_ci				}
4714e5c31af7Sopenharmony_ci
4715e5c31af7Sopenharmony_ci				both ""
4716e5c31af7Sopenharmony_ci					#version 320 es
4717e5c31af7Sopenharmony_ci					precision highp float;
4718e5c31af7Sopenharmony_ci					${DECLARATIONS}
4719e5c31af7Sopenharmony_ci
4720e5c31af7Sopenharmony_ci					void main()
4721e5c31af7Sopenharmony_ci					{
4722e5c31af7Sopenharmony_ci						${SETUP}
4723e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) != in0;
4724e5c31af7Sopenharmony_ci						${OUTPUT}
4725e5c31af7Sopenharmony_ci					}
4726e5c31af7Sopenharmony_ci				""
4727e5c31af7Sopenharmony_ci			end
4728e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
4729e5c31af7Sopenharmony_ci				version 320 es
4730e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4731e5c31af7Sopenharmony_ci				values
4732e5c31af7Sopenharmony_ci				{
4733e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
4734e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4735e5c31af7Sopenharmony_ci				}
4736e5c31af7Sopenharmony_ci
4737e5c31af7Sopenharmony_ci				both ""
4738e5c31af7Sopenharmony_ci					#version 320 es
4739e5c31af7Sopenharmony_ci					precision highp float;
4740e5c31af7Sopenharmony_ci					${DECLARATIONS}
4741e5c31af7Sopenharmony_ci
4742e5c31af7Sopenharmony_ci					void main()
4743e5c31af7Sopenharmony_ci					{
4744e5c31af7Sopenharmony_ci						${SETUP}
4745e5c31af7Sopenharmony_ci						out0 = uvec4(1, 2, 3, 4) != in0;
4746e5c31af7Sopenharmony_ci						${OUTPUT}
4747e5c31af7Sopenharmony_ci					}
4748e5c31af7Sopenharmony_ci				""
4749e5c31af7Sopenharmony_ci			end
4750e5c31af7Sopenharmony_ci			case ivec4_to_vec4
4751e5c31af7Sopenharmony_ci				version 320 es
4752e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4753e5c31af7Sopenharmony_ci				values
4754e5c31af7Sopenharmony_ci				{
4755e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
4756e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true ];
4757e5c31af7Sopenharmony_ci				}
4758e5c31af7Sopenharmony_ci
4759e5c31af7Sopenharmony_ci				both ""
4760e5c31af7Sopenharmony_ci					#version 320 es
4761e5c31af7Sopenharmony_ci					precision highp float;
4762e5c31af7Sopenharmony_ci					${DECLARATIONS}
4763e5c31af7Sopenharmony_ci
4764e5c31af7Sopenharmony_ci					void main()
4765e5c31af7Sopenharmony_ci					{
4766e5c31af7Sopenharmony_ci						${SETUP}
4767e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) != in0;
4768e5c31af7Sopenharmony_ci						${OUTPUT}
4769e5c31af7Sopenharmony_ci					}
4770e5c31af7Sopenharmony_ci				""
4771e5c31af7Sopenharmony_ci			end
4772e5c31af7Sopenharmony_ci			case uvec4_to_vec4
4773e5c31af7Sopenharmony_ci				version 320 es
4774e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4775e5c31af7Sopenharmony_ci				values
4776e5c31af7Sopenharmony_ci				{
4777e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
4778e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true ];
4779e5c31af7Sopenharmony_ci				}
4780e5c31af7Sopenharmony_ci
4781e5c31af7Sopenharmony_ci				both ""
4782e5c31af7Sopenharmony_ci					#version 320 es
4783e5c31af7Sopenharmony_ci					precision highp float;
4784e5c31af7Sopenharmony_ci					${DECLARATIONS}
4785e5c31af7Sopenharmony_ci
4786e5c31af7Sopenharmony_ci					void main()
4787e5c31af7Sopenharmony_ci					{
4788e5c31af7Sopenharmony_ci						${SETUP}
4789e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) != in0;
4790e5c31af7Sopenharmony_ci						${OUTPUT}
4791e5c31af7Sopenharmony_ci					}
4792e5c31af7Sopenharmony_ci				""
4793e5c31af7Sopenharmony_ci			end
4794e5c31af7Sopenharmony_ci
4795e5c31af7Sopenharmony_ci		end # not_equal
4796e5c31af7Sopenharmony_ci		group less "Less than"
4797e5c31af7Sopenharmony_ci
4798e5c31af7Sopenharmony_ci			case int_to_float
4799e5c31af7Sopenharmony_ci				version 320 es
4800e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4801e5c31af7Sopenharmony_ci				values
4802e5c31af7Sopenharmony_ci				{
4803e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4804e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | true | true ];
4805e5c31af7Sopenharmony_ci				}
4806e5c31af7Sopenharmony_ci
4807e5c31af7Sopenharmony_ci				both ""
4808e5c31af7Sopenharmony_ci					#version 320 es
4809e5c31af7Sopenharmony_ci					precision highp float;
4810e5c31af7Sopenharmony_ci					${DECLARATIONS}
4811e5c31af7Sopenharmony_ci
4812e5c31af7Sopenharmony_ci					void main()
4813e5c31af7Sopenharmony_ci					{
4814e5c31af7Sopenharmony_ci						${SETUP}
4815e5c31af7Sopenharmony_ci						out0 = 2.0 < in0;
4816e5c31af7Sopenharmony_ci						${OUTPUT}
4817e5c31af7Sopenharmony_ci					}
4818e5c31af7Sopenharmony_ci				""
4819e5c31af7Sopenharmony_ci			end
4820e5c31af7Sopenharmony_ci			case int_to_uint
4821e5c31af7Sopenharmony_ci				version 320 es
4822e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4823e5c31af7Sopenharmony_ci				values
4824e5c31af7Sopenharmony_ci				{
4825e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4826e5c31af7Sopenharmony_ci					output bool out0 = [ false | false | false | true | true ];
4827e5c31af7Sopenharmony_ci				}
4828e5c31af7Sopenharmony_ci
4829e5c31af7Sopenharmony_ci				both ""
4830e5c31af7Sopenharmony_ci					#version 320 es
4831e5c31af7Sopenharmony_ci					precision highp float;
4832e5c31af7Sopenharmony_ci					${DECLARATIONS}
4833e5c31af7Sopenharmony_ci
4834e5c31af7Sopenharmony_ci					void main()
4835e5c31af7Sopenharmony_ci					{
4836e5c31af7Sopenharmony_ci						${SETUP}
4837e5c31af7Sopenharmony_ci						out0 = 2 < in0;
4838e5c31af7Sopenharmony_ci						${OUTPUT}
4839e5c31af7Sopenharmony_ci					}
4840e5c31af7Sopenharmony_ci				""
4841e5c31af7Sopenharmony_ci			end
4842e5c31af7Sopenharmony_ci			case uint_to_float
4843e5c31af7Sopenharmony_ci				version 320 es
4844e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4845e5c31af7Sopenharmony_ci				values
4846e5c31af7Sopenharmony_ci				{
4847e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4848e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4849e5c31af7Sopenharmony_ci				}
4850e5c31af7Sopenharmony_ci
4851e5c31af7Sopenharmony_ci				both ""
4852e5c31af7Sopenharmony_ci					#version 320 es
4853e5c31af7Sopenharmony_ci					precision highp float;
4854e5c31af7Sopenharmony_ci					${DECLARATIONS}
4855e5c31af7Sopenharmony_ci
4856e5c31af7Sopenharmony_ci					void main()
4857e5c31af7Sopenharmony_ci					{
4858e5c31af7Sopenharmony_ci						${SETUP}
4859e5c31af7Sopenharmony_ci						out0 = 2.0 < in0;
4860e5c31af7Sopenharmony_ci						${OUTPUT}
4861e5c31af7Sopenharmony_ci					}
4862e5c31af7Sopenharmony_ci				""
4863e5c31af7Sopenharmony_ci			end
4864e5c31af7Sopenharmony_ci
4865e5c31af7Sopenharmony_ci		end # less
4866e5c31af7Sopenharmony_ci		group greater "Greater than"
4867e5c31af7Sopenharmony_ci
4868e5c31af7Sopenharmony_ci			case int_to_float
4869e5c31af7Sopenharmony_ci				version 320 es
4870e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4871e5c31af7Sopenharmony_ci				values
4872e5c31af7Sopenharmony_ci				{
4873e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4874e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | false | false ];
4875e5c31af7Sopenharmony_ci				}
4876e5c31af7Sopenharmony_ci
4877e5c31af7Sopenharmony_ci				both ""
4878e5c31af7Sopenharmony_ci					#version 320 es
4879e5c31af7Sopenharmony_ci					precision highp float;
4880e5c31af7Sopenharmony_ci					${DECLARATIONS}
4881e5c31af7Sopenharmony_ci
4882e5c31af7Sopenharmony_ci					void main()
4883e5c31af7Sopenharmony_ci					{
4884e5c31af7Sopenharmony_ci						${SETUP}
4885e5c31af7Sopenharmony_ci						out0 = 2.0 > in0;
4886e5c31af7Sopenharmony_ci						${OUTPUT}
4887e5c31af7Sopenharmony_ci					}
4888e5c31af7Sopenharmony_ci				""
4889e5c31af7Sopenharmony_ci			end
4890e5c31af7Sopenharmony_ci			case int_to_uint
4891e5c31af7Sopenharmony_ci				version 320 es
4892e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4893e5c31af7Sopenharmony_ci				values
4894e5c31af7Sopenharmony_ci				{
4895e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4896e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | false | false ];
4897e5c31af7Sopenharmony_ci				}
4898e5c31af7Sopenharmony_ci
4899e5c31af7Sopenharmony_ci				both ""
4900e5c31af7Sopenharmony_ci					#version 320 es
4901e5c31af7Sopenharmony_ci					precision highp float;
4902e5c31af7Sopenharmony_ci					${DECLARATIONS}
4903e5c31af7Sopenharmony_ci
4904e5c31af7Sopenharmony_ci					void main()
4905e5c31af7Sopenharmony_ci					{
4906e5c31af7Sopenharmony_ci						${SETUP}
4907e5c31af7Sopenharmony_ci						out0 = 2 > in0;
4908e5c31af7Sopenharmony_ci						${OUTPUT}
4909e5c31af7Sopenharmony_ci					}
4910e5c31af7Sopenharmony_ci				""
4911e5c31af7Sopenharmony_ci			end
4912e5c31af7Sopenharmony_ci			case uint_to_float
4913e5c31af7Sopenharmony_ci				version 320 es
4914e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4915e5c31af7Sopenharmony_ci				values
4916e5c31af7Sopenharmony_ci				{
4917e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4918e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
4919e5c31af7Sopenharmony_ci				}
4920e5c31af7Sopenharmony_ci
4921e5c31af7Sopenharmony_ci				both ""
4922e5c31af7Sopenharmony_ci					#version 320 es
4923e5c31af7Sopenharmony_ci					precision highp float;
4924e5c31af7Sopenharmony_ci					${DECLARATIONS}
4925e5c31af7Sopenharmony_ci
4926e5c31af7Sopenharmony_ci					void main()
4927e5c31af7Sopenharmony_ci					{
4928e5c31af7Sopenharmony_ci						${SETUP}
4929e5c31af7Sopenharmony_ci						out0 = 2.0 > in0;
4930e5c31af7Sopenharmony_ci						${OUTPUT}
4931e5c31af7Sopenharmony_ci					}
4932e5c31af7Sopenharmony_ci				""
4933e5c31af7Sopenharmony_ci			end
4934e5c31af7Sopenharmony_ci
4935e5c31af7Sopenharmony_ci		end # greater
4936e5c31af7Sopenharmony_ci		group less_or_equal "Less than or equal"
4937e5c31af7Sopenharmony_ci
4938e5c31af7Sopenharmony_ci			case int_to_float
4939e5c31af7Sopenharmony_ci				version 320 es
4940e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4941e5c31af7Sopenharmony_ci				values
4942e5c31af7Sopenharmony_ci				{
4943e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4944e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | true | true ];
4945e5c31af7Sopenharmony_ci				}
4946e5c31af7Sopenharmony_ci
4947e5c31af7Sopenharmony_ci				both ""
4948e5c31af7Sopenharmony_ci					#version 320 es
4949e5c31af7Sopenharmony_ci					precision highp float;
4950e5c31af7Sopenharmony_ci					${DECLARATIONS}
4951e5c31af7Sopenharmony_ci
4952e5c31af7Sopenharmony_ci					void main()
4953e5c31af7Sopenharmony_ci					{
4954e5c31af7Sopenharmony_ci						${SETUP}
4955e5c31af7Sopenharmony_ci						out0 = 2.0 <= in0;
4956e5c31af7Sopenharmony_ci						${OUTPUT}
4957e5c31af7Sopenharmony_ci					}
4958e5c31af7Sopenharmony_ci				""
4959e5c31af7Sopenharmony_ci			end
4960e5c31af7Sopenharmony_ci			case int_to_uint
4961e5c31af7Sopenharmony_ci				version 320 es
4962e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4963e5c31af7Sopenharmony_ci				values
4964e5c31af7Sopenharmony_ci				{
4965e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
4966e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | true | true ];
4967e5c31af7Sopenharmony_ci				}
4968e5c31af7Sopenharmony_ci
4969e5c31af7Sopenharmony_ci				both ""
4970e5c31af7Sopenharmony_ci					#version 320 es
4971e5c31af7Sopenharmony_ci					precision highp float;
4972e5c31af7Sopenharmony_ci					${DECLARATIONS}
4973e5c31af7Sopenharmony_ci
4974e5c31af7Sopenharmony_ci					void main()
4975e5c31af7Sopenharmony_ci					{
4976e5c31af7Sopenharmony_ci						${SETUP}
4977e5c31af7Sopenharmony_ci						out0 = 2 <= in0;
4978e5c31af7Sopenharmony_ci						${OUTPUT}
4979e5c31af7Sopenharmony_ci					}
4980e5c31af7Sopenharmony_ci				""
4981e5c31af7Sopenharmony_ci			end
4982e5c31af7Sopenharmony_ci			case uint_to_float
4983e5c31af7Sopenharmony_ci				version 320 es
4984e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
4985e5c31af7Sopenharmony_ci				values
4986e5c31af7Sopenharmony_ci				{
4987e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
4988e5c31af7Sopenharmony_ci					output bool out0 = [ false | true | true | true | true ];
4989e5c31af7Sopenharmony_ci				}
4990e5c31af7Sopenharmony_ci
4991e5c31af7Sopenharmony_ci				both ""
4992e5c31af7Sopenharmony_ci					#version 320 es
4993e5c31af7Sopenharmony_ci					precision highp float;
4994e5c31af7Sopenharmony_ci					${DECLARATIONS}
4995e5c31af7Sopenharmony_ci
4996e5c31af7Sopenharmony_ci					void main()
4997e5c31af7Sopenharmony_ci					{
4998e5c31af7Sopenharmony_ci						${SETUP}
4999e5c31af7Sopenharmony_ci						out0 = 2.0 <= in0;
5000e5c31af7Sopenharmony_ci						${OUTPUT}
5001e5c31af7Sopenharmony_ci					}
5002e5c31af7Sopenharmony_ci				""
5003e5c31af7Sopenharmony_ci			end
5004e5c31af7Sopenharmony_ci
5005e5c31af7Sopenharmony_ci		end # less_or_equal
5006e5c31af7Sopenharmony_ci		group greater_or_equal "Greater than or equal"
5007e5c31af7Sopenharmony_ci
5008e5c31af7Sopenharmony_ci			case int_to_float
5009e5c31af7Sopenharmony_ci				version 320 es
5010e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5011e5c31af7Sopenharmony_ci				values
5012e5c31af7Sopenharmony_ci				{
5013e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5014e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | false | false ];
5015e5c31af7Sopenharmony_ci				}
5016e5c31af7Sopenharmony_ci
5017e5c31af7Sopenharmony_ci				both ""
5018e5c31af7Sopenharmony_ci					#version 320 es
5019e5c31af7Sopenharmony_ci					precision highp float;
5020e5c31af7Sopenharmony_ci					${DECLARATIONS}
5021e5c31af7Sopenharmony_ci
5022e5c31af7Sopenharmony_ci					void main()
5023e5c31af7Sopenharmony_ci					{
5024e5c31af7Sopenharmony_ci						${SETUP}
5025e5c31af7Sopenharmony_ci						out0 = 2.0 >= in0;
5026e5c31af7Sopenharmony_ci						${OUTPUT}
5027e5c31af7Sopenharmony_ci					}
5028e5c31af7Sopenharmony_ci				""
5029e5c31af7Sopenharmony_ci			end
5030e5c31af7Sopenharmony_ci			case int_to_uint
5031e5c31af7Sopenharmony_ci				version 320 es
5032e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5033e5c31af7Sopenharmony_ci				values
5034e5c31af7Sopenharmony_ci				{
5035e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5036e5c31af7Sopenharmony_ci					output bool out0 = [ true | true | true | false | false ];
5037e5c31af7Sopenharmony_ci				}
5038e5c31af7Sopenharmony_ci
5039e5c31af7Sopenharmony_ci				both ""
5040e5c31af7Sopenharmony_ci					#version 320 es
5041e5c31af7Sopenharmony_ci					precision highp float;
5042e5c31af7Sopenharmony_ci					${DECLARATIONS}
5043e5c31af7Sopenharmony_ci
5044e5c31af7Sopenharmony_ci					void main()
5045e5c31af7Sopenharmony_ci					{
5046e5c31af7Sopenharmony_ci						${SETUP}
5047e5c31af7Sopenharmony_ci						out0 = 2 >= in0;
5048e5c31af7Sopenharmony_ci						${OUTPUT}
5049e5c31af7Sopenharmony_ci					}
5050e5c31af7Sopenharmony_ci				""
5051e5c31af7Sopenharmony_ci			end
5052e5c31af7Sopenharmony_ci			case uint_to_float
5053e5c31af7Sopenharmony_ci				version 320 es
5054e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5055e5c31af7Sopenharmony_ci				values
5056e5c31af7Sopenharmony_ci				{
5057e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5058e5c31af7Sopenharmony_ci					output bool out0 = [ true | false | false | false | false ];
5059e5c31af7Sopenharmony_ci				}
5060e5c31af7Sopenharmony_ci
5061e5c31af7Sopenharmony_ci				both ""
5062e5c31af7Sopenharmony_ci					#version 320 es
5063e5c31af7Sopenharmony_ci					precision highp float;
5064e5c31af7Sopenharmony_ci					${DECLARATIONS}
5065e5c31af7Sopenharmony_ci
5066e5c31af7Sopenharmony_ci					void main()
5067e5c31af7Sopenharmony_ci					{
5068e5c31af7Sopenharmony_ci						${SETUP}
5069e5c31af7Sopenharmony_ci						out0 = 2.0 >= in0;
5070e5c31af7Sopenharmony_ci						${OUTPUT}
5071e5c31af7Sopenharmony_ci					}
5072e5c31af7Sopenharmony_ci				""
5073e5c31af7Sopenharmony_ci			end
5074e5c31af7Sopenharmony_ci
5075e5c31af7Sopenharmony_ci		end # greater_or_equal
5076e5c31af7Sopenharmony_ci
5077e5c31af7Sopenharmony_ci	end # literal_before_input
5078e5c31af7Sopenharmony_ci
5079e5c31af7Sopenharmony_ciend # comparisons
5080e5c31af7Sopenharmony_cigroup array_subscripts "Array subscripts"
5081e5c31af7Sopenharmony_ci
5082e5c31af7Sopenharmony_ci	group input_before_subscript "Input before subscript"
5083e5c31af7Sopenharmony_ci
5084e5c31af7Sopenharmony_ci		case int_to_float
5085e5c31af7Sopenharmony_ci			version 320 es
5086e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5087e5c31af7Sopenharmony_ci			values
5088e5c31af7Sopenharmony_ci			{
5089e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5090e5c31af7Sopenharmony_ci				output float out0 = [ 3.0 | 2.0 | 2.0 | 4.0 | 6.0 ];
5091e5c31af7Sopenharmony_ci			}
5092e5c31af7Sopenharmony_ci
5093e5c31af7Sopenharmony_ci			both ""
5094e5c31af7Sopenharmony_ci				#version 320 es
5095e5c31af7Sopenharmony_ci				precision highp float;
5096e5c31af7Sopenharmony_ci				${DECLARATIONS}
5097e5c31af7Sopenharmony_ci
5098e5c31af7Sopenharmony_ci				void main()
5099e5c31af7Sopenharmony_ci				{
5100e5c31af7Sopenharmony_ci					${SETUP}
5101e5c31af7Sopenharmony_ci					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
5102e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5103e5c31af7Sopenharmony_ci					${OUTPUT}
5104e5c31af7Sopenharmony_ci				}
5105e5c31af7Sopenharmony_ci			""
5106e5c31af7Sopenharmony_ci		end
5107e5c31af7Sopenharmony_ci		case int_to_uint
5108e5c31af7Sopenharmony_ci			version 320 es
5109e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5110e5c31af7Sopenharmony_ci			values
5111e5c31af7Sopenharmony_ci			{
5112e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5113e5c31af7Sopenharmony_ci				output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
5114e5c31af7Sopenharmony_ci			}
5115e5c31af7Sopenharmony_ci
5116e5c31af7Sopenharmony_ci			both ""
5117e5c31af7Sopenharmony_ci				#version 320 es
5118e5c31af7Sopenharmony_ci				precision highp float;
5119e5c31af7Sopenharmony_ci				${DECLARATIONS}
5120e5c31af7Sopenharmony_ci
5121e5c31af7Sopenharmony_ci				void main()
5122e5c31af7Sopenharmony_ci				{
5123e5c31af7Sopenharmony_ci					${SETUP}
5124e5c31af7Sopenharmony_ci					uint[] x = uint[] (1, 3, 4, 7, 11);
5125e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5126e5c31af7Sopenharmony_ci					${OUTPUT}
5127e5c31af7Sopenharmony_ci				}
5128e5c31af7Sopenharmony_ci			""
5129e5c31af7Sopenharmony_ci		end
5130e5c31af7Sopenharmony_ci		case int_to_vec2
5131e5c31af7Sopenharmony_ci			version 320 es
5132e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5133e5c31af7Sopenharmony_ci			values
5134e5c31af7Sopenharmony_ci			{
5135e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5136e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(4.0, 3.0) | vec2(3.0, 2.0) | vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(7.0, 6.0) ];
5137e5c31af7Sopenharmony_ci			}
5138e5c31af7Sopenharmony_ci
5139e5c31af7Sopenharmony_ci			both ""
5140e5c31af7Sopenharmony_ci				#version 320 es
5141e5c31af7Sopenharmony_ci				precision highp float;
5142e5c31af7Sopenharmony_ci				${DECLARATIONS}
5143e5c31af7Sopenharmony_ci
5144e5c31af7Sopenharmony_ci				void main()
5145e5c31af7Sopenharmony_ci				{
5146e5c31af7Sopenharmony_ci					${SETUP}
5147e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5148e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5149e5c31af7Sopenharmony_ci					${OUTPUT}
5150e5c31af7Sopenharmony_ci				}
5151e5c31af7Sopenharmony_ci			""
5152e5c31af7Sopenharmony_ci		end
5153e5c31af7Sopenharmony_ci		case int_to_vec3
5154e5c31af7Sopenharmony_ci			version 320 es
5155e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5156e5c31af7Sopenharmony_ci			values
5157e5c31af7Sopenharmony_ci			{
5158e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5159e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(4.0, 3.0, 4.0) | vec3(3.0, 2.0, 3.0) | vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(7.0, 6.0, 7.0) ];
5160e5c31af7Sopenharmony_ci			}
5161e5c31af7Sopenharmony_ci
5162e5c31af7Sopenharmony_ci			both ""
5163e5c31af7Sopenharmony_ci				#version 320 es
5164e5c31af7Sopenharmony_ci				precision highp float;
5165e5c31af7Sopenharmony_ci				${DECLARATIONS}
5166e5c31af7Sopenharmony_ci
5167e5c31af7Sopenharmony_ci				void main()
5168e5c31af7Sopenharmony_ci				{
5169e5c31af7Sopenharmony_ci					${SETUP}
5170e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5171e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5172e5c31af7Sopenharmony_ci					${OUTPUT}
5173e5c31af7Sopenharmony_ci				}
5174e5c31af7Sopenharmony_ci			""
5175e5c31af7Sopenharmony_ci		end
5176e5c31af7Sopenharmony_ci		case int_to_vec4
5177e5c31af7Sopenharmony_ci			version 320 es
5178e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5179e5c31af7Sopenharmony_ci			values
5180e5c31af7Sopenharmony_ci			{
5181e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5182e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(4.0, 3.0, 4.0, 8.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(7.0, 6.0, 7.0, 11.0) ];
5183e5c31af7Sopenharmony_ci			}
5184e5c31af7Sopenharmony_ci
5185e5c31af7Sopenharmony_ci			both ""
5186e5c31af7Sopenharmony_ci				#version 320 es
5187e5c31af7Sopenharmony_ci				precision highp float;
5188e5c31af7Sopenharmony_ci				${DECLARATIONS}
5189e5c31af7Sopenharmony_ci
5190e5c31af7Sopenharmony_ci				void main()
5191e5c31af7Sopenharmony_ci				{
5192e5c31af7Sopenharmony_ci					${SETUP}
5193e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5194e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5195e5c31af7Sopenharmony_ci					${OUTPUT}
5196e5c31af7Sopenharmony_ci				}
5197e5c31af7Sopenharmony_ci			""
5198e5c31af7Sopenharmony_ci		end
5199e5c31af7Sopenharmony_ci		case int_to_uvec2
5200e5c31af7Sopenharmony_ci			version 320 es
5201e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5202e5c31af7Sopenharmony_ci			values
5203e5c31af7Sopenharmony_ci			{
5204e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5205e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(6, 8) | uvec2(5, 7) | uvec2(5, 7) | uvec2(7, 9) | uvec2(9, 11) ];
5206e5c31af7Sopenharmony_ci			}
5207e5c31af7Sopenharmony_ci
5208e5c31af7Sopenharmony_ci			both ""
5209e5c31af7Sopenharmony_ci				#version 320 es
5210e5c31af7Sopenharmony_ci				precision highp float;
5211e5c31af7Sopenharmony_ci				${DECLARATIONS}
5212e5c31af7Sopenharmony_ci
5213e5c31af7Sopenharmony_ci				void main()
5214e5c31af7Sopenharmony_ci				{
5215e5c31af7Sopenharmony_ci					${SETUP}
5216e5c31af7Sopenharmony_ci					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
5217e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5218e5c31af7Sopenharmony_ci					${OUTPUT}
5219e5c31af7Sopenharmony_ci				}
5220e5c31af7Sopenharmony_ci			""
5221e5c31af7Sopenharmony_ci		end
5222e5c31af7Sopenharmony_ci		case int_to_uvec3
5223e5c31af7Sopenharmony_ci			version 320 es
5224e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5225e5c31af7Sopenharmony_ci			values
5226e5c31af7Sopenharmony_ci			{
5227e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5228e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(6, 8, 4) | uvec3(5, 7, 3) | uvec3(5, 7, 3) | uvec3(7, 9, 5) | uvec3(9, 11, 7) ];
5229e5c31af7Sopenharmony_ci			}
5230e5c31af7Sopenharmony_ci
5231e5c31af7Sopenharmony_ci			both ""
5232e5c31af7Sopenharmony_ci				#version 320 es
5233e5c31af7Sopenharmony_ci				precision highp float;
5234e5c31af7Sopenharmony_ci				${DECLARATIONS}
5235e5c31af7Sopenharmony_ci
5236e5c31af7Sopenharmony_ci				void main()
5237e5c31af7Sopenharmony_ci				{
5238e5c31af7Sopenharmony_ci					${SETUP}
5239e5c31af7Sopenharmony_ci					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
5240e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5241e5c31af7Sopenharmony_ci					${OUTPUT}
5242e5c31af7Sopenharmony_ci				}
5243e5c31af7Sopenharmony_ci			""
5244e5c31af7Sopenharmony_ci		end
5245e5c31af7Sopenharmony_ci		case int_to_uvec4
5246e5c31af7Sopenharmony_ci			version 320 es
5247e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5248e5c31af7Sopenharmony_ci			values
5249e5c31af7Sopenharmony_ci			{
5250e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5251e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(6, 8, 4, 11) | uvec4(5, 7, 3, 10) | uvec4(5, 7, 3, 10) | uvec4(7, 9, 5, 12) | uvec4(9, 11, 7, 14) ];
5252e5c31af7Sopenharmony_ci			}
5253e5c31af7Sopenharmony_ci
5254e5c31af7Sopenharmony_ci			both ""
5255e5c31af7Sopenharmony_ci				#version 320 es
5256e5c31af7Sopenharmony_ci				precision highp float;
5257e5c31af7Sopenharmony_ci				${DECLARATIONS}
5258e5c31af7Sopenharmony_ci
5259e5c31af7Sopenharmony_ci				void main()
5260e5c31af7Sopenharmony_ci				{
5261e5c31af7Sopenharmony_ci					${SETUP}
5262e5c31af7Sopenharmony_ci					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
5263e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5264e5c31af7Sopenharmony_ci					${OUTPUT}
5265e5c31af7Sopenharmony_ci				}
5266e5c31af7Sopenharmony_ci			""
5267e5c31af7Sopenharmony_ci		end
5268e5c31af7Sopenharmony_ci		case uint_to_float
5269e5c31af7Sopenharmony_ci			version 320 es
5270e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5271e5c31af7Sopenharmony_ci			values
5272e5c31af7Sopenharmony_ci			{
5273e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5274e5c31af7Sopenharmony_ci				output float out0 = [ 2.0 | 4.0 | 5.0 | 8.0 | 12.0 ];
5275e5c31af7Sopenharmony_ci			}
5276e5c31af7Sopenharmony_ci
5277e5c31af7Sopenharmony_ci			both ""
5278e5c31af7Sopenharmony_ci				#version 320 es
5279e5c31af7Sopenharmony_ci				precision highp float;
5280e5c31af7Sopenharmony_ci				${DECLARATIONS}
5281e5c31af7Sopenharmony_ci
5282e5c31af7Sopenharmony_ci				void main()
5283e5c31af7Sopenharmony_ci				{
5284e5c31af7Sopenharmony_ci					${SETUP}
5285e5c31af7Sopenharmony_ci					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
5286e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5287e5c31af7Sopenharmony_ci					${OUTPUT}
5288e5c31af7Sopenharmony_ci				}
5289e5c31af7Sopenharmony_ci			""
5290e5c31af7Sopenharmony_ci		end
5291e5c31af7Sopenharmony_ci		case uint_to_vec2
5292e5c31af7Sopenharmony_ci			version 320 es
5293e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5294e5c31af7Sopenharmony_ci			values
5295e5c31af7Sopenharmony_ci			{
5296e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5297e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(6.0, 5.0) | vec2(9.0, 8.0) | vec2(13.0, 12.0) ];
5298e5c31af7Sopenharmony_ci			}
5299e5c31af7Sopenharmony_ci
5300e5c31af7Sopenharmony_ci			both ""
5301e5c31af7Sopenharmony_ci				#version 320 es
5302e5c31af7Sopenharmony_ci				precision highp float;
5303e5c31af7Sopenharmony_ci				${DECLARATIONS}
5304e5c31af7Sopenharmony_ci
5305e5c31af7Sopenharmony_ci				void main()
5306e5c31af7Sopenharmony_ci				{
5307e5c31af7Sopenharmony_ci					${SETUP}
5308e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5309e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5310e5c31af7Sopenharmony_ci					${OUTPUT}
5311e5c31af7Sopenharmony_ci				}
5312e5c31af7Sopenharmony_ci			""
5313e5c31af7Sopenharmony_ci		end
5314e5c31af7Sopenharmony_ci		case uint_to_vec3
5315e5c31af7Sopenharmony_ci			version 320 es
5316e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5317e5c31af7Sopenharmony_ci			values
5318e5c31af7Sopenharmony_ci			{
5319e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5320e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(6.0, 5.0, 6.0) | vec3(9.0, 8.0, 9.0) | vec3(13.0, 12.0, 13.0) ];
5321e5c31af7Sopenharmony_ci			}
5322e5c31af7Sopenharmony_ci
5323e5c31af7Sopenharmony_ci			both ""
5324e5c31af7Sopenharmony_ci				#version 320 es
5325e5c31af7Sopenharmony_ci				precision highp float;
5326e5c31af7Sopenharmony_ci				${DECLARATIONS}
5327e5c31af7Sopenharmony_ci
5328e5c31af7Sopenharmony_ci				void main()
5329e5c31af7Sopenharmony_ci				{
5330e5c31af7Sopenharmony_ci					${SETUP}
5331e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5332e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5333e5c31af7Sopenharmony_ci					${OUTPUT}
5334e5c31af7Sopenharmony_ci				}
5335e5c31af7Sopenharmony_ci			""
5336e5c31af7Sopenharmony_ci		end
5337e5c31af7Sopenharmony_ci		case uint_to_vec4
5338e5c31af7Sopenharmony_ci			version 320 es
5339e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5340e5c31af7Sopenharmony_ci			values
5341e5c31af7Sopenharmony_ci			{
5342e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5343e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(6.0, 5.0, 6.0, 10.0) | vec4(9.0, 8.0, 9.0, 13.0) | vec4(13.0, 12.0, 13.0, 17.0) ];
5344e5c31af7Sopenharmony_ci			}
5345e5c31af7Sopenharmony_ci
5346e5c31af7Sopenharmony_ci			both ""
5347e5c31af7Sopenharmony_ci				#version 320 es
5348e5c31af7Sopenharmony_ci				precision highp float;
5349e5c31af7Sopenharmony_ci				${DECLARATIONS}
5350e5c31af7Sopenharmony_ci
5351e5c31af7Sopenharmony_ci				void main()
5352e5c31af7Sopenharmony_ci				{
5353e5c31af7Sopenharmony_ci					${SETUP}
5354e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5355e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5356e5c31af7Sopenharmony_ci					${OUTPUT}
5357e5c31af7Sopenharmony_ci				}
5358e5c31af7Sopenharmony_ci			""
5359e5c31af7Sopenharmony_ci		end
5360e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
5361e5c31af7Sopenharmony_ci			version 320 es
5362e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5363e5c31af7Sopenharmony_ci			values
5364e5c31af7Sopenharmony_ci			{
5365e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
5366e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(5, 8) | uvec2(6, 7) | uvec2(7, 13) ];
5367e5c31af7Sopenharmony_ci			}
5368e5c31af7Sopenharmony_ci
5369e5c31af7Sopenharmony_ci			both ""
5370e5c31af7Sopenharmony_ci				#version 320 es
5371e5c31af7Sopenharmony_ci				precision highp float;
5372e5c31af7Sopenharmony_ci				${DECLARATIONS}
5373e5c31af7Sopenharmony_ci
5374e5c31af7Sopenharmony_ci				void main()
5375e5c31af7Sopenharmony_ci				{
5376e5c31af7Sopenharmony_ci					${SETUP}
5377e5c31af7Sopenharmony_ci					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
5378e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5379e5c31af7Sopenharmony_ci					${OUTPUT}
5380e5c31af7Sopenharmony_ci				}
5381e5c31af7Sopenharmony_ci			""
5382e5c31af7Sopenharmony_ci		end
5383e5c31af7Sopenharmony_ci		case ivec2_to_vec2
5384e5c31af7Sopenharmony_ci			version 320 es
5385e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5386e5c31af7Sopenharmony_ci			values
5387e5c31af7Sopenharmony_ci			{
5388e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
5389e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 3.0) | vec2(4.0, 2.0) | vec2(5.0, 8.0) ];
5390e5c31af7Sopenharmony_ci			}
5391e5c31af7Sopenharmony_ci
5392e5c31af7Sopenharmony_ci			both ""
5393e5c31af7Sopenharmony_ci				#version 320 es
5394e5c31af7Sopenharmony_ci				precision highp float;
5395e5c31af7Sopenharmony_ci				${DECLARATIONS}
5396e5c31af7Sopenharmony_ci
5397e5c31af7Sopenharmony_ci				void main()
5398e5c31af7Sopenharmony_ci				{
5399e5c31af7Sopenharmony_ci					${SETUP}
5400e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5401e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5402e5c31af7Sopenharmony_ci					${OUTPUT}
5403e5c31af7Sopenharmony_ci				}
5404e5c31af7Sopenharmony_ci			""
5405e5c31af7Sopenharmony_ci		end
5406e5c31af7Sopenharmony_ci		case uvec2_to_vec2
5407e5c31af7Sopenharmony_ci			version 320 es
5408e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5409e5c31af7Sopenharmony_ci			values
5410e5c31af7Sopenharmony_ci			{
5411e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
5412e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(4.0, 4.0) | vec2(6.0, 7.0) | vec2(3.0, 14.0) ];
5413e5c31af7Sopenharmony_ci			}
5414e5c31af7Sopenharmony_ci
5415e5c31af7Sopenharmony_ci			both ""
5416e5c31af7Sopenharmony_ci				#version 320 es
5417e5c31af7Sopenharmony_ci				precision highp float;
5418e5c31af7Sopenharmony_ci				${DECLARATIONS}
5419e5c31af7Sopenharmony_ci
5420e5c31af7Sopenharmony_ci				void main()
5421e5c31af7Sopenharmony_ci				{
5422e5c31af7Sopenharmony_ci					${SETUP}
5423e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5424e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5425e5c31af7Sopenharmony_ci					${OUTPUT}
5426e5c31af7Sopenharmony_ci				}
5427e5c31af7Sopenharmony_ci			""
5428e5c31af7Sopenharmony_ci		end
5429e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
5430e5c31af7Sopenharmony_ci			version 320 es
5431e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5432e5c31af7Sopenharmony_ci			values
5433e5c31af7Sopenharmony_ci			{
5434e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
5435e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(5, 8, 5) | uvec3(6, 7, 4) | uvec3(7, 13, 4) ];
5436e5c31af7Sopenharmony_ci			}
5437e5c31af7Sopenharmony_ci
5438e5c31af7Sopenharmony_ci			both ""
5439e5c31af7Sopenharmony_ci				#version 320 es
5440e5c31af7Sopenharmony_ci				precision highp float;
5441e5c31af7Sopenharmony_ci				${DECLARATIONS}
5442e5c31af7Sopenharmony_ci
5443e5c31af7Sopenharmony_ci				void main()
5444e5c31af7Sopenharmony_ci				{
5445e5c31af7Sopenharmony_ci					${SETUP}
5446e5c31af7Sopenharmony_ci					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
5447e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5448e5c31af7Sopenharmony_ci					${OUTPUT}
5449e5c31af7Sopenharmony_ci				}
5450e5c31af7Sopenharmony_ci			""
5451e5c31af7Sopenharmony_ci		end
5452e5c31af7Sopenharmony_ci		case ivec3_to_vec3
5453e5c31af7Sopenharmony_ci			version 320 es
5454e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5455e5c31af7Sopenharmony_ci			values
5456e5c31af7Sopenharmony_ci			{
5457e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
5458e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(4.0, 2.0, 4.0) | vec3(5.0, 8.0, 4.0) ];
5459e5c31af7Sopenharmony_ci			}
5460e5c31af7Sopenharmony_ci
5461e5c31af7Sopenharmony_ci			both ""
5462e5c31af7Sopenharmony_ci				#version 320 es
5463e5c31af7Sopenharmony_ci				precision highp float;
5464e5c31af7Sopenharmony_ci				${DECLARATIONS}
5465e5c31af7Sopenharmony_ci
5466e5c31af7Sopenharmony_ci				void main()
5467e5c31af7Sopenharmony_ci				{
5468e5c31af7Sopenharmony_ci					${SETUP}
5469e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5470e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5471e5c31af7Sopenharmony_ci					${OUTPUT}
5472e5c31af7Sopenharmony_ci				}
5473e5c31af7Sopenharmony_ci			""
5474e5c31af7Sopenharmony_ci		end
5475e5c31af7Sopenharmony_ci		case uvec3_to_vec3
5476e5c31af7Sopenharmony_ci			version 320 es
5477e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5478e5c31af7Sopenharmony_ci			values
5479e5c31af7Sopenharmony_ci			{
5480e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
5481e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(4.0, 4.0, 7.0) | vec3(6.0, 7.0, 4.0) | vec3(3.0, 14.0, 9.0) ];
5482e5c31af7Sopenharmony_ci			}
5483e5c31af7Sopenharmony_ci
5484e5c31af7Sopenharmony_ci			both ""
5485e5c31af7Sopenharmony_ci				#version 320 es
5486e5c31af7Sopenharmony_ci				precision highp float;
5487e5c31af7Sopenharmony_ci				${DECLARATIONS}
5488e5c31af7Sopenharmony_ci
5489e5c31af7Sopenharmony_ci				void main()
5490e5c31af7Sopenharmony_ci				{
5491e5c31af7Sopenharmony_ci					${SETUP}
5492e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5493e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5494e5c31af7Sopenharmony_ci					${OUTPUT}
5495e5c31af7Sopenharmony_ci				}
5496e5c31af7Sopenharmony_ci			""
5497e5c31af7Sopenharmony_ci		end
5498e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
5499e5c31af7Sopenharmony_ci			version 320 es
5500e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5501e5c31af7Sopenharmony_ci			values
5502e5c31af7Sopenharmony_ci			{
5503e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
5504e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(5, 8, 5, 13) | uvec4(6, 7, 4, 15) | uvec4(7, 13, 4, 14) ];
5505e5c31af7Sopenharmony_ci			}
5506e5c31af7Sopenharmony_ci
5507e5c31af7Sopenharmony_ci			both ""
5508e5c31af7Sopenharmony_ci				#version 320 es
5509e5c31af7Sopenharmony_ci				precision highp float;
5510e5c31af7Sopenharmony_ci				${DECLARATIONS}
5511e5c31af7Sopenharmony_ci
5512e5c31af7Sopenharmony_ci				void main()
5513e5c31af7Sopenharmony_ci				{
5514e5c31af7Sopenharmony_ci					${SETUP}
5515e5c31af7Sopenharmony_ci					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
5516e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5517e5c31af7Sopenharmony_ci					${OUTPUT}
5518e5c31af7Sopenharmony_ci				}
5519e5c31af7Sopenharmony_ci			""
5520e5c31af7Sopenharmony_ci		end
5521e5c31af7Sopenharmony_ci		case ivec4_to_vec4
5522e5c31af7Sopenharmony_ci			version 320 es
5523e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5524e5c31af7Sopenharmony_ci			values
5525e5c31af7Sopenharmony_ci			{
5526e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
5527e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(5.0, 8.0, 4.0, 11.0) ];
5528e5c31af7Sopenharmony_ci			}
5529e5c31af7Sopenharmony_ci
5530e5c31af7Sopenharmony_ci			both ""
5531e5c31af7Sopenharmony_ci				#version 320 es
5532e5c31af7Sopenharmony_ci				precision highp float;
5533e5c31af7Sopenharmony_ci				${DECLARATIONS}
5534e5c31af7Sopenharmony_ci
5535e5c31af7Sopenharmony_ci				void main()
5536e5c31af7Sopenharmony_ci				{
5537e5c31af7Sopenharmony_ci					${SETUP}
5538e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5539e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5540e5c31af7Sopenharmony_ci					${OUTPUT}
5541e5c31af7Sopenharmony_ci				}
5542e5c31af7Sopenharmony_ci			""
5543e5c31af7Sopenharmony_ci		end
5544e5c31af7Sopenharmony_ci		case uvec4_to_vec4
5545e5c31af7Sopenharmony_ci			version 320 es
5546e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5547e5c31af7Sopenharmony_ci			values
5548e5c31af7Sopenharmony_ci			{
5549e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
5550e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(4.0, 4.0, 7.0, 14.0) | vec4(6.0, 7.0, 4.0, 15.0) | vec4(3.0, 14.0, 9.0, 10.0) ];
5551e5c31af7Sopenharmony_ci			}
5552e5c31af7Sopenharmony_ci
5553e5c31af7Sopenharmony_ci			both ""
5554e5c31af7Sopenharmony_ci				#version 320 es
5555e5c31af7Sopenharmony_ci				precision highp float;
5556e5c31af7Sopenharmony_ci				${DECLARATIONS}
5557e5c31af7Sopenharmony_ci
5558e5c31af7Sopenharmony_ci				void main()
5559e5c31af7Sopenharmony_ci				{
5560e5c31af7Sopenharmony_ci					${SETUP}
5561e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5562e5c31af7Sopenharmony_ci					out0 = in0 + x[1];
5563e5c31af7Sopenharmony_ci					${OUTPUT}
5564e5c31af7Sopenharmony_ci				}
5565e5c31af7Sopenharmony_ci			""
5566e5c31af7Sopenharmony_ci		end
5567e5c31af7Sopenharmony_ci
5568e5c31af7Sopenharmony_ci	end # input_before_subscript
5569e5c31af7Sopenharmony_ci	group subscript_before_input "Subscript before input"
5570e5c31af7Sopenharmony_ci
5571e5c31af7Sopenharmony_ci		case int_to_float
5572e5c31af7Sopenharmony_ci			version 320 es
5573e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5574e5c31af7Sopenharmony_ci			values
5575e5c31af7Sopenharmony_ci			{
5576e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5577e5c31af7Sopenharmony_ci				output float out0 = [ 3.0 | 2.0 | 2.0 | 4.0 | 6.0 ];
5578e5c31af7Sopenharmony_ci			}
5579e5c31af7Sopenharmony_ci
5580e5c31af7Sopenharmony_ci			both ""
5581e5c31af7Sopenharmony_ci				#version 320 es
5582e5c31af7Sopenharmony_ci				precision highp float;
5583e5c31af7Sopenharmony_ci				${DECLARATIONS}
5584e5c31af7Sopenharmony_ci
5585e5c31af7Sopenharmony_ci				void main()
5586e5c31af7Sopenharmony_ci				{
5587e5c31af7Sopenharmony_ci					${SETUP}
5588e5c31af7Sopenharmony_ci					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
5589e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5590e5c31af7Sopenharmony_ci					${OUTPUT}
5591e5c31af7Sopenharmony_ci				}
5592e5c31af7Sopenharmony_ci			""
5593e5c31af7Sopenharmony_ci		end
5594e5c31af7Sopenharmony_ci		case int_to_uint
5595e5c31af7Sopenharmony_ci			version 320 es
5596e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5597e5c31af7Sopenharmony_ci			values
5598e5c31af7Sopenharmony_ci			{
5599e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5600e5c31af7Sopenharmony_ci				output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
5601e5c31af7Sopenharmony_ci			}
5602e5c31af7Sopenharmony_ci
5603e5c31af7Sopenharmony_ci			both ""
5604e5c31af7Sopenharmony_ci				#version 320 es
5605e5c31af7Sopenharmony_ci				precision highp float;
5606e5c31af7Sopenharmony_ci				${DECLARATIONS}
5607e5c31af7Sopenharmony_ci
5608e5c31af7Sopenharmony_ci				void main()
5609e5c31af7Sopenharmony_ci				{
5610e5c31af7Sopenharmony_ci					${SETUP}
5611e5c31af7Sopenharmony_ci					uint[] x = uint[] (1, 3, 4, 7, 11);
5612e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5613e5c31af7Sopenharmony_ci					${OUTPUT}
5614e5c31af7Sopenharmony_ci				}
5615e5c31af7Sopenharmony_ci			""
5616e5c31af7Sopenharmony_ci		end
5617e5c31af7Sopenharmony_ci		case int_to_vec2
5618e5c31af7Sopenharmony_ci			version 320 es
5619e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5620e5c31af7Sopenharmony_ci			values
5621e5c31af7Sopenharmony_ci			{
5622e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5623e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(4.0, 3.0) | vec2(3.0, 2.0) | vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(7.0, 6.0) ];
5624e5c31af7Sopenharmony_ci			}
5625e5c31af7Sopenharmony_ci
5626e5c31af7Sopenharmony_ci			both ""
5627e5c31af7Sopenharmony_ci				#version 320 es
5628e5c31af7Sopenharmony_ci				precision highp float;
5629e5c31af7Sopenharmony_ci				${DECLARATIONS}
5630e5c31af7Sopenharmony_ci
5631e5c31af7Sopenharmony_ci				void main()
5632e5c31af7Sopenharmony_ci				{
5633e5c31af7Sopenharmony_ci					${SETUP}
5634e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5635e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5636e5c31af7Sopenharmony_ci					${OUTPUT}
5637e5c31af7Sopenharmony_ci				}
5638e5c31af7Sopenharmony_ci			""
5639e5c31af7Sopenharmony_ci		end
5640e5c31af7Sopenharmony_ci		case int_to_vec3
5641e5c31af7Sopenharmony_ci			version 320 es
5642e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5643e5c31af7Sopenharmony_ci			values
5644e5c31af7Sopenharmony_ci			{
5645e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5646e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(4.0, 3.0, 4.0) | vec3(3.0, 2.0, 3.0) | vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(7.0, 6.0, 7.0) ];
5647e5c31af7Sopenharmony_ci			}
5648e5c31af7Sopenharmony_ci
5649e5c31af7Sopenharmony_ci			both ""
5650e5c31af7Sopenharmony_ci				#version 320 es
5651e5c31af7Sopenharmony_ci				precision highp float;
5652e5c31af7Sopenharmony_ci				${DECLARATIONS}
5653e5c31af7Sopenharmony_ci
5654e5c31af7Sopenharmony_ci				void main()
5655e5c31af7Sopenharmony_ci				{
5656e5c31af7Sopenharmony_ci					${SETUP}
5657e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5658e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5659e5c31af7Sopenharmony_ci					${OUTPUT}
5660e5c31af7Sopenharmony_ci				}
5661e5c31af7Sopenharmony_ci			""
5662e5c31af7Sopenharmony_ci		end
5663e5c31af7Sopenharmony_ci		case int_to_vec4
5664e5c31af7Sopenharmony_ci			version 320 es
5665e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5666e5c31af7Sopenharmony_ci			values
5667e5c31af7Sopenharmony_ci			{
5668e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5669e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(4.0, 3.0, 4.0, 8.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(7.0, 6.0, 7.0, 11.0) ];
5670e5c31af7Sopenharmony_ci			}
5671e5c31af7Sopenharmony_ci
5672e5c31af7Sopenharmony_ci			both ""
5673e5c31af7Sopenharmony_ci				#version 320 es
5674e5c31af7Sopenharmony_ci				precision highp float;
5675e5c31af7Sopenharmony_ci				${DECLARATIONS}
5676e5c31af7Sopenharmony_ci
5677e5c31af7Sopenharmony_ci				void main()
5678e5c31af7Sopenharmony_ci				{
5679e5c31af7Sopenharmony_ci					${SETUP}
5680e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5681e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5682e5c31af7Sopenharmony_ci					${OUTPUT}
5683e5c31af7Sopenharmony_ci				}
5684e5c31af7Sopenharmony_ci			""
5685e5c31af7Sopenharmony_ci		end
5686e5c31af7Sopenharmony_ci		case int_to_uvec2
5687e5c31af7Sopenharmony_ci			version 320 es
5688e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5689e5c31af7Sopenharmony_ci			values
5690e5c31af7Sopenharmony_ci			{
5691e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5692e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(6, 8) | uvec2(5, 7) | uvec2(5, 7) | uvec2(7, 9) | uvec2(9, 11) ];
5693e5c31af7Sopenharmony_ci			}
5694e5c31af7Sopenharmony_ci
5695e5c31af7Sopenharmony_ci			both ""
5696e5c31af7Sopenharmony_ci				#version 320 es
5697e5c31af7Sopenharmony_ci				precision highp float;
5698e5c31af7Sopenharmony_ci				${DECLARATIONS}
5699e5c31af7Sopenharmony_ci
5700e5c31af7Sopenharmony_ci				void main()
5701e5c31af7Sopenharmony_ci				{
5702e5c31af7Sopenharmony_ci					${SETUP}
5703e5c31af7Sopenharmony_ci					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
5704e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5705e5c31af7Sopenharmony_ci					${OUTPUT}
5706e5c31af7Sopenharmony_ci				}
5707e5c31af7Sopenharmony_ci			""
5708e5c31af7Sopenharmony_ci		end
5709e5c31af7Sopenharmony_ci		case int_to_uvec3
5710e5c31af7Sopenharmony_ci			version 320 es
5711e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5712e5c31af7Sopenharmony_ci			values
5713e5c31af7Sopenharmony_ci			{
5714e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5715e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(6, 8, 4) | uvec3(5, 7, 3) | uvec3(5, 7, 3) | uvec3(7, 9, 5) | uvec3(9, 11, 7) ];
5716e5c31af7Sopenharmony_ci			}
5717e5c31af7Sopenharmony_ci
5718e5c31af7Sopenharmony_ci			both ""
5719e5c31af7Sopenharmony_ci				#version 320 es
5720e5c31af7Sopenharmony_ci				precision highp float;
5721e5c31af7Sopenharmony_ci				${DECLARATIONS}
5722e5c31af7Sopenharmony_ci
5723e5c31af7Sopenharmony_ci				void main()
5724e5c31af7Sopenharmony_ci				{
5725e5c31af7Sopenharmony_ci					${SETUP}
5726e5c31af7Sopenharmony_ci					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
5727e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5728e5c31af7Sopenharmony_ci					${OUTPUT}
5729e5c31af7Sopenharmony_ci				}
5730e5c31af7Sopenharmony_ci			""
5731e5c31af7Sopenharmony_ci		end
5732e5c31af7Sopenharmony_ci		case int_to_uvec4
5733e5c31af7Sopenharmony_ci			version 320 es
5734e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5735e5c31af7Sopenharmony_ci			values
5736e5c31af7Sopenharmony_ci			{
5737e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
5738e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(6, 8, 4, 11) | uvec4(5, 7, 3, 10) | uvec4(5, 7, 3, 10) | uvec4(7, 9, 5, 12) | uvec4(9, 11, 7, 14) ];
5739e5c31af7Sopenharmony_ci			}
5740e5c31af7Sopenharmony_ci
5741e5c31af7Sopenharmony_ci			both ""
5742e5c31af7Sopenharmony_ci				#version 320 es
5743e5c31af7Sopenharmony_ci				precision highp float;
5744e5c31af7Sopenharmony_ci				${DECLARATIONS}
5745e5c31af7Sopenharmony_ci
5746e5c31af7Sopenharmony_ci				void main()
5747e5c31af7Sopenharmony_ci				{
5748e5c31af7Sopenharmony_ci					${SETUP}
5749e5c31af7Sopenharmony_ci					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
5750e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5751e5c31af7Sopenharmony_ci					${OUTPUT}
5752e5c31af7Sopenharmony_ci				}
5753e5c31af7Sopenharmony_ci			""
5754e5c31af7Sopenharmony_ci		end
5755e5c31af7Sopenharmony_ci		case uint_to_float
5756e5c31af7Sopenharmony_ci			version 320 es
5757e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5758e5c31af7Sopenharmony_ci			values
5759e5c31af7Sopenharmony_ci			{
5760e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5761e5c31af7Sopenharmony_ci				output float out0 = [ 2.0 | 4.0 | 5.0 | 8.0 | 12.0 ];
5762e5c31af7Sopenharmony_ci			}
5763e5c31af7Sopenharmony_ci
5764e5c31af7Sopenharmony_ci			both ""
5765e5c31af7Sopenharmony_ci				#version 320 es
5766e5c31af7Sopenharmony_ci				precision highp float;
5767e5c31af7Sopenharmony_ci				${DECLARATIONS}
5768e5c31af7Sopenharmony_ci
5769e5c31af7Sopenharmony_ci				void main()
5770e5c31af7Sopenharmony_ci				{
5771e5c31af7Sopenharmony_ci					${SETUP}
5772e5c31af7Sopenharmony_ci					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
5773e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5774e5c31af7Sopenharmony_ci					${OUTPUT}
5775e5c31af7Sopenharmony_ci				}
5776e5c31af7Sopenharmony_ci			""
5777e5c31af7Sopenharmony_ci		end
5778e5c31af7Sopenharmony_ci		case uint_to_vec2
5779e5c31af7Sopenharmony_ci			version 320 es
5780e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5781e5c31af7Sopenharmony_ci			values
5782e5c31af7Sopenharmony_ci			{
5783e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5784e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(6.0, 5.0) | vec2(9.0, 8.0) | vec2(13.0, 12.0) ];
5785e5c31af7Sopenharmony_ci			}
5786e5c31af7Sopenharmony_ci
5787e5c31af7Sopenharmony_ci			both ""
5788e5c31af7Sopenharmony_ci				#version 320 es
5789e5c31af7Sopenharmony_ci				precision highp float;
5790e5c31af7Sopenharmony_ci				${DECLARATIONS}
5791e5c31af7Sopenharmony_ci
5792e5c31af7Sopenharmony_ci				void main()
5793e5c31af7Sopenharmony_ci				{
5794e5c31af7Sopenharmony_ci					${SETUP}
5795e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5796e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5797e5c31af7Sopenharmony_ci					${OUTPUT}
5798e5c31af7Sopenharmony_ci				}
5799e5c31af7Sopenharmony_ci			""
5800e5c31af7Sopenharmony_ci		end
5801e5c31af7Sopenharmony_ci		case uint_to_vec3
5802e5c31af7Sopenharmony_ci			version 320 es
5803e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5804e5c31af7Sopenharmony_ci			values
5805e5c31af7Sopenharmony_ci			{
5806e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5807e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(6.0, 5.0, 6.0) | vec3(9.0, 8.0, 9.0) | vec3(13.0, 12.0, 13.0) ];
5808e5c31af7Sopenharmony_ci			}
5809e5c31af7Sopenharmony_ci
5810e5c31af7Sopenharmony_ci			both ""
5811e5c31af7Sopenharmony_ci				#version 320 es
5812e5c31af7Sopenharmony_ci				precision highp float;
5813e5c31af7Sopenharmony_ci				${DECLARATIONS}
5814e5c31af7Sopenharmony_ci
5815e5c31af7Sopenharmony_ci				void main()
5816e5c31af7Sopenharmony_ci				{
5817e5c31af7Sopenharmony_ci					${SETUP}
5818e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5819e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5820e5c31af7Sopenharmony_ci					${OUTPUT}
5821e5c31af7Sopenharmony_ci				}
5822e5c31af7Sopenharmony_ci			""
5823e5c31af7Sopenharmony_ci		end
5824e5c31af7Sopenharmony_ci		case uint_to_vec4
5825e5c31af7Sopenharmony_ci			version 320 es
5826e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5827e5c31af7Sopenharmony_ci			values
5828e5c31af7Sopenharmony_ci			{
5829e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
5830e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(6.0, 5.0, 6.0, 10.0) | vec4(9.0, 8.0, 9.0, 13.0) | vec4(13.0, 12.0, 13.0, 17.0) ];
5831e5c31af7Sopenharmony_ci			}
5832e5c31af7Sopenharmony_ci
5833e5c31af7Sopenharmony_ci			both ""
5834e5c31af7Sopenharmony_ci				#version 320 es
5835e5c31af7Sopenharmony_ci				precision highp float;
5836e5c31af7Sopenharmony_ci				${DECLARATIONS}
5837e5c31af7Sopenharmony_ci
5838e5c31af7Sopenharmony_ci				void main()
5839e5c31af7Sopenharmony_ci				{
5840e5c31af7Sopenharmony_ci					${SETUP}
5841e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
5842e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5843e5c31af7Sopenharmony_ci					${OUTPUT}
5844e5c31af7Sopenharmony_ci				}
5845e5c31af7Sopenharmony_ci			""
5846e5c31af7Sopenharmony_ci		end
5847e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
5848e5c31af7Sopenharmony_ci			version 320 es
5849e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5850e5c31af7Sopenharmony_ci			values
5851e5c31af7Sopenharmony_ci			{
5852e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
5853e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(5, 8) | uvec2(6, 7) | uvec2(7, 13) ];
5854e5c31af7Sopenharmony_ci			}
5855e5c31af7Sopenharmony_ci
5856e5c31af7Sopenharmony_ci			both ""
5857e5c31af7Sopenharmony_ci				#version 320 es
5858e5c31af7Sopenharmony_ci				precision highp float;
5859e5c31af7Sopenharmony_ci				${DECLARATIONS}
5860e5c31af7Sopenharmony_ci
5861e5c31af7Sopenharmony_ci				void main()
5862e5c31af7Sopenharmony_ci				{
5863e5c31af7Sopenharmony_ci					${SETUP}
5864e5c31af7Sopenharmony_ci					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
5865e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5866e5c31af7Sopenharmony_ci					${OUTPUT}
5867e5c31af7Sopenharmony_ci				}
5868e5c31af7Sopenharmony_ci			""
5869e5c31af7Sopenharmony_ci		end
5870e5c31af7Sopenharmony_ci		case ivec2_to_vec2
5871e5c31af7Sopenharmony_ci			version 320 es
5872e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5873e5c31af7Sopenharmony_ci			values
5874e5c31af7Sopenharmony_ci			{
5875e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
5876e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 3.0) | vec2(4.0, 2.0) | vec2(5.0, 8.0) ];
5877e5c31af7Sopenharmony_ci			}
5878e5c31af7Sopenharmony_ci
5879e5c31af7Sopenharmony_ci			both ""
5880e5c31af7Sopenharmony_ci				#version 320 es
5881e5c31af7Sopenharmony_ci				precision highp float;
5882e5c31af7Sopenharmony_ci				${DECLARATIONS}
5883e5c31af7Sopenharmony_ci
5884e5c31af7Sopenharmony_ci				void main()
5885e5c31af7Sopenharmony_ci				{
5886e5c31af7Sopenharmony_ci					${SETUP}
5887e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5888e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5889e5c31af7Sopenharmony_ci					${OUTPUT}
5890e5c31af7Sopenharmony_ci				}
5891e5c31af7Sopenharmony_ci			""
5892e5c31af7Sopenharmony_ci		end
5893e5c31af7Sopenharmony_ci		case uvec2_to_vec2
5894e5c31af7Sopenharmony_ci			version 320 es
5895e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5896e5c31af7Sopenharmony_ci			values
5897e5c31af7Sopenharmony_ci			{
5898e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
5899e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(4.0, 4.0) | vec2(6.0, 7.0) | vec2(3.0, 14.0) ];
5900e5c31af7Sopenharmony_ci			}
5901e5c31af7Sopenharmony_ci
5902e5c31af7Sopenharmony_ci			both ""
5903e5c31af7Sopenharmony_ci				#version 320 es
5904e5c31af7Sopenharmony_ci				precision highp float;
5905e5c31af7Sopenharmony_ci				${DECLARATIONS}
5906e5c31af7Sopenharmony_ci
5907e5c31af7Sopenharmony_ci				void main()
5908e5c31af7Sopenharmony_ci				{
5909e5c31af7Sopenharmony_ci					${SETUP}
5910e5c31af7Sopenharmony_ci					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
5911e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5912e5c31af7Sopenharmony_ci					${OUTPUT}
5913e5c31af7Sopenharmony_ci				}
5914e5c31af7Sopenharmony_ci			""
5915e5c31af7Sopenharmony_ci		end
5916e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
5917e5c31af7Sopenharmony_ci			version 320 es
5918e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5919e5c31af7Sopenharmony_ci			values
5920e5c31af7Sopenharmony_ci			{
5921e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
5922e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(5, 8, 5) | uvec3(6, 7, 4) | uvec3(7, 13, 4) ];
5923e5c31af7Sopenharmony_ci			}
5924e5c31af7Sopenharmony_ci
5925e5c31af7Sopenharmony_ci			both ""
5926e5c31af7Sopenharmony_ci				#version 320 es
5927e5c31af7Sopenharmony_ci				precision highp float;
5928e5c31af7Sopenharmony_ci				${DECLARATIONS}
5929e5c31af7Sopenharmony_ci
5930e5c31af7Sopenharmony_ci				void main()
5931e5c31af7Sopenharmony_ci				{
5932e5c31af7Sopenharmony_ci					${SETUP}
5933e5c31af7Sopenharmony_ci					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
5934e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5935e5c31af7Sopenharmony_ci					${OUTPUT}
5936e5c31af7Sopenharmony_ci				}
5937e5c31af7Sopenharmony_ci			""
5938e5c31af7Sopenharmony_ci		end
5939e5c31af7Sopenharmony_ci		case ivec3_to_vec3
5940e5c31af7Sopenharmony_ci			version 320 es
5941e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5942e5c31af7Sopenharmony_ci			values
5943e5c31af7Sopenharmony_ci			{
5944e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
5945e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(4.0, 2.0, 4.0) | vec3(5.0, 8.0, 4.0) ];
5946e5c31af7Sopenharmony_ci			}
5947e5c31af7Sopenharmony_ci
5948e5c31af7Sopenharmony_ci			both ""
5949e5c31af7Sopenharmony_ci				#version 320 es
5950e5c31af7Sopenharmony_ci				precision highp float;
5951e5c31af7Sopenharmony_ci				${DECLARATIONS}
5952e5c31af7Sopenharmony_ci
5953e5c31af7Sopenharmony_ci				void main()
5954e5c31af7Sopenharmony_ci				{
5955e5c31af7Sopenharmony_ci					${SETUP}
5956e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5957e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5958e5c31af7Sopenharmony_ci					${OUTPUT}
5959e5c31af7Sopenharmony_ci				}
5960e5c31af7Sopenharmony_ci			""
5961e5c31af7Sopenharmony_ci		end
5962e5c31af7Sopenharmony_ci		case uvec3_to_vec3
5963e5c31af7Sopenharmony_ci			version 320 es
5964e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5965e5c31af7Sopenharmony_ci			values
5966e5c31af7Sopenharmony_ci			{
5967e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
5968e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(4.0, 4.0, 7.0) | vec3(6.0, 7.0, 4.0) | vec3(3.0, 14.0, 9.0) ];
5969e5c31af7Sopenharmony_ci			}
5970e5c31af7Sopenharmony_ci
5971e5c31af7Sopenharmony_ci			both ""
5972e5c31af7Sopenharmony_ci				#version 320 es
5973e5c31af7Sopenharmony_ci				precision highp float;
5974e5c31af7Sopenharmony_ci				${DECLARATIONS}
5975e5c31af7Sopenharmony_ci
5976e5c31af7Sopenharmony_ci				void main()
5977e5c31af7Sopenharmony_ci				{
5978e5c31af7Sopenharmony_ci					${SETUP}
5979e5c31af7Sopenharmony_ci					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
5980e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
5981e5c31af7Sopenharmony_ci					${OUTPUT}
5982e5c31af7Sopenharmony_ci				}
5983e5c31af7Sopenharmony_ci			""
5984e5c31af7Sopenharmony_ci		end
5985e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
5986e5c31af7Sopenharmony_ci			version 320 es
5987e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
5988e5c31af7Sopenharmony_ci			values
5989e5c31af7Sopenharmony_ci			{
5990e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
5991e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(5, 8, 5, 13) | uvec4(6, 7, 4, 15) | uvec4(7, 13, 4, 14) ];
5992e5c31af7Sopenharmony_ci			}
5993e5c31af7Sopenharmony_ci
5994e5c31af7Sopenharmony_ci			both ""
5995e5c31af7Sopenharmony_ci				#version 320 es
5996e5c31af7Sopenharmony_ci				precision highp float;
5997e5c31af7Sopenharmony_ci				${DECLARATIONS}
5998e5c31af7Sopenharmony_ci
5999e5c31af7Sopenharmony_ci				void main()
6000e5c31af7Sopenharmony_ci				{
6001e5c31af7Sopenharmony_ci					${SETUP}
6002e5c31af7Sopenharmony_ci					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
6003e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
6004e5c31af7Sopenharmony_ci					${OUTPUT}
6005e5c31af7Sopenharmony_ci				}
6006e5c31af7Sopenharmony_ci			""
6007e5c31af7Sopenharmony_ci		end
6008e5c31af7Sopenharmony_ci		case ivec4_to_vec4
6009e5c31af7Sopenharmony_ci			version 320 es
6010e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6011e5c31af7Sopenharmony_ci			values
6012e5c31af7Sopenharmony_ci			{
6013e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
6014e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(5.0, 8.0, 4.0, 11.0) ];
6015e5c31af7Sopenharmony_ci			}
6016e5c31af7Sopenharmony_ci
6017e5c31af7Sopenharmony_ci			both ""
6018e5c31af7Sopenharmony_ci				#version 320 es
6019e5c31af7Sopenharmony_ci				precision highp float;
6020e5c31af7Sopenharmony_ci				${DECLARATIONS}
6021e5c31af7Sopenharmony_ci
6022e5c31af7Sopenharmony_ci				void main()
6023e5c31af7Sopenharmony_ci				{
6024e5c31af7Sopenharmony_ci					${SETUP}
6025e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
6026e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
6027e5c31af7Sopenharmony_ci					${OUTPUT}
6028e5c31af7Sopenharmony_ci				}
6029e5c31af7Sopenharmony_ci			""
6030e5c31af7Sopenharmony_ci		end
6031e5c31af7Sopenharmony_ci		case uvec4_to_vec4
6032e5c31af7Sopenharmony_ci			version 320 es
6033e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6034e5c31af7Sopenharmony_ci			values
6035e5c31af7Sopenharmony_ci			{
6036e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
6037e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(4.0, 4.0, 7.0, 14.0) | vec4(6.0, 7.0, 4.0, 15.0) | vec4(3.0, 14.0, 9.0, 10.0) ];
6038e5c31af7Sopenharmony_ci			}
6039e5c31af7Sopenharmony_ci
6040e5c31af7Sopenharmony_ci			both ""
6041e5c31af7Sopenharmony_ci				#version 320 es
6042e5c31af7Sopenharmony_ci				precision highp float;
6043e5c31af7Sopenharmony_ci				${DECLARATIONS}
6044e5c31af7Sopenharmony_ci
6045e5c31af7Sopenharmony_ci				void main()
6046e5c31af7Sopenharmony_ci				{
6047e5c31af7Sopenharmony_ci					${SETUP}
6048e5c31af7Sopenharmony_ci					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
6049e5c31af7Sopenharmony_ci					out0 = x[1] + in0;
6050e5c31af7Sopenharmony_ci					${OUTPUT}
6051e5c31af7Sopenharmony_ci				}
6052e5c31af7Sopenharmony_ci			""
6053e5c31af7Sopenharmony_ci		end
6054e5c31af7Sopenharmony_ci
6055e5c31af7Sopenharmony_ci	end # subscript_before_input
6056e5c31af7Sopenharmony_ci
6057e5c31af7Sopenharmony_ciend # array_subscripts
6058e5c31af7Sopenharmony_cigroup functions "Function calls"
6059e5c31af7Sopenharmony_ci
6060e5c31af7Sopenharmony_ci	case int_to_float
6061e5c31af7Sopenharmony_ci		version 320 es
6062e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6063e5c31af7Sopenharmony_ci		values
6064e5c31af7Sopenharmony_ci		{
6065e5c31af7Sopenharmony_ci			input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6066e5c31af7Sopenharmony_ci			output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
6067e5c31af7Sopenharmony_ci		}
6068e5c31af7Sopenharmony_ci
6069e5c31af7Sopenharmony_ci		both ""
6070e5c31af7Sopenharmony_ci			#version 320 es
6071e5c31af7Sopenharmony_ci			precision highp float;
6072e5c31af7Sopenharmony_ci			${DECLARATIONS}
6073e5c31af7Sopenharmony_ci
6074e5c31af7Sopenharmony_ci			float func (float a)
6075e5c31af7Sopenharmony_ci			{
6076e5c31af7Sopenharmony_ci				return a * float(2);
6077e5c31af7Sopenharmony_ci			}
6078e5c31af7Sopenharmony_ci
6079e5c31af7Sopenharmony_ci			void main()
6080e5c31af7Sopenharmony_ci			{
6081e5c31af7Sopenharmony_ci				${SETUP}
6082e5c31af7Sopenharmony_ci				out0 = func(in0);
6083e5c31af7Sopenharmony_ci				${OUTPUT}
6084e5c31af7Sopenharmony_ci			}
6085e5c31af7Sopenharmony_ci		""
6086e5c31af7Sopenharmony_ci	end
6087e5c31af7Sopenharmony_ci	case int_to_uint
6088e5c31af7Sopenharmony_ci		version 320 es
6089e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6090e5c31af7Sopenharmony_ci		values
6091e5c31af7Sopenharmony_ci		{
6092e5c31af7Sopenharmony_ci			input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6093e5c31af7Sopenharmony_ci			output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
6094e5c31af7Sopenharmony_ci		}
6095e5c31af7Sopenharmony_ci
6096e5c31af7Sopenharmony_ci		both ""
6097e5c31af7Sopenharmony_ci			#version 320 es
6098e5c31af7Sopenharmony_ci			precision highp float;
6099e5c31af7Sopenharmony_ci			${DECLARATIONS}
6100e5c31af7Sopenharmony_ci
6101e5c31af7Sopenharmony_ci			uint func (uint a)
6102e5c31af7Sopenharmony_ci			{
6103e5c31af7Sopenharmony_ci				return a * uint(2);
6104e5c31af7Sopenharmony_ci			}
6105e5c31af7Sopenharmony_ci
6106e5c31af7Sopenharmony_ci			void main()
6107e5c31af7Sopenharmony_ci			{
6108e5c31af7Sopenharmony_ci				${SETUP}
6109e5c31af7Sopenharmony_ci				out0 = func(in0);
6110e5c31af7Sopenharmony_ci				${OUTPUT}
6111e5c31af7Sopenharmony_ci			}
6112e5c31af7Sopenharmony_ci		""
6113e5c31af7Sopenharmony_ci	end
6114e5c31af7Sopenharmony_ci	case uint_to_float
6115e5c31af7Sopenharmony_ci		version 320 es
6116e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6117e5c31af7Sopenharmony_ci		values
6118e5c31af7Sopenharmony_ci		{
6119e5c31af7Sopenharmony_ci			input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
6120e5c31af7Sopenharmony_ci			output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
6121e5c31af7Sopenharmony_ci		}
6122e5c31af7Sopenharmony_ci
6123e5c31af7Sopenharmony_ci		both ""
6124e5c31af7Sopenharmony_ci			#version 320 es
6125e5c31af7Sopenharmony_ci			precision highp float;
6126e5c31af7Sopenharmony_ci			${DECLARATIONS}
6127e5c31af7Sopenharmony_ci
6128e5c31af7Sopenharmony_ci			float func (float a)
6129e5c31af7Sopenharmony_ci			{
6130e5c31af7Sopenharmony_ci				return a * float(2);
6131e5c31af7Sopenharmony_ci			}
6132e5c31af7Sopenharmony_ci
6133e5c31af7Sopenharmony_ci			void main()
6134e5c31af7Sopenharmony_ci			{
6135e5c31af7Sopenharmony_ci				${SETUP}
6136e5c31af7Sopenharmony_ci				out0 = func(in0);
6137e5c31af7Sopenharmony_ci				${OUTPUT}
6138e5c31af7Sopenharmony_ci			}
6139e5c31af7Sopenharmony_ci		""
6140e5c31af7Sopenharmony_ci	end
6141e5c31af7Sopenharmony_ci	case ivec2_to_uvec2
6142e5c31af7Sopenharmony_ci		version 320 es
6143e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6144e5c31af7Sopenharmony_ci		values
6145e5c31af7Sopenharmony_ci		{
6146e5c31af7Sopenharmony_ci			input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
6147e5c31af7Sopenharmony_ci			output uvec2 out0 = [ uvec2(2, 4) | uvec2(4, 2) | uvec2(6, 14) ];
6148e5c31af7Sopenharmony_ci		}
6149e5c31af7Sopenharmony_ci
6150e5c31af7Sopenharmony_ci		both ""
6151e5c31af7Sopenharmony_ci			#version 320 es
6152e5c31af7Sopenharmony_ci			precision highp float;
6153e5c31af7Sopenharmony_ci			${DECLARATIONS}
6154e5c31af7Sopenharmony_ci
6155e5c31af7Sopenharmony_ci			uvec2 func (uvec2 a)
6156e5c31af7Sopenharmony_ci			{
6157e5c31af7Sopenharmony_ci				return a * uvec2(2);
6158e5c31af7Sopenharmony_ci			}
6159e5c31af7Sopenharmony_ci
6160e5c31af7Sopenharmony_ci			void main()
6161e5c31af7Sopenharmony_ci			{
6162e5c31af7Sopenharmony_ci				${SETUP}
6163e5c31af7Sopenharmony_ci				out0 = func(in0);
6164e5c31af7Sopenharmony_ci				${OUTPUT}
6165e5c31af7Sopenharmony_ci			}
6166e5c31af7Sopenharmony_ci		""
6167e5c31af7Sopenharmony_ci	end
6168e5c31af7Sopenharmony_ci	case ivec2_to_vec2
6169e5c31af7Sopenharmony_ci		version 320 es
6170e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6171e5c31af7Sopenharmony_ci		values
6172e5c31af7Sopenharmony_ci		{
6173e5c31af7Sopenharmony_ci			input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
6174e5c31af7Sopenharmony_ci			output vec2 out0 = [ vec2(2.0, 4.0) | vec2(4.0, 2.0) | vec2(6.0, 14.0) ];
6175e5c31af7Sopenharmony_ci		}
6176e5c31af7Sopenharmony_ci
6177e5c31af7Sopenharmony_ci		both ""
6178e5c31af7Sopenharmony_ci			#version 320 es
6179e5c31af7Sopenharmony_ci			precision highp float;
6180e5c31af7Sopenharmony_ci			${DECLARATIONS}
6181e5c31af7Sopenharmony_ci
6182e5c31af7Sopenharmony_ci			vec2 func (vec2 a)
6183e5c31af7Sopenharmony_ci			{
6184e5c31af7Sopenharmony_ci				return a * vec2(2);
6185e5c31af7Sopenharmony_ci			}
6186e5c31af7Sopenharmony_ci
6187e5c31af7Sopenharmony_ci			void main()
6188e5c31af7Sopenharmony_ci			{
6189e5c31af7Sopenharmony_ci				${SETUP}
6190e5c31af7Sopenharmony_ci				out0 = func(in0);
6191e5c31af7Sopenharmony_ci				${OUTPUT}
6192e5c31af7Sopenharmony_ci			}
6193e5c31af7Sopenharmony_ci		""
6194e5c31af7Sopenharmony_ci	end
6195e5c31af7Sopenharmony_ci	case uvec2_to_vec2
6196e5c31af7Sopenharmony_ci		version 320 es
6197e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6198e5c31af7Sopenharmony_ci		values
6199e5c31af7Sopenharmony_ci		{
6200e5c31af7Sopenharmony_ci			input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
6201e5c31af7Sopenharmony_ci			output vec2 out0 = [ vec2(4.0, 6.0) | vec2(8.0, 12.0) | vec2(2.0, 26.0) ];
6202e5c31af7Sopenharmony_ci		}
6203e5c31af7Sopenharmony_ci
6204e5c31af7Sopenharmony_ci		both ""
6205e5c31af7Sopenharmony_ci			#version 320 es
6206e5c31af7Sopenharmony_ci			precision highp float;
6207e5c31af7Sopenharmony_ci			${DECLARATIONS}
6208e5c31af7Sopenharmony_ci
6209e5c31af7Sopenharmony_ci			vec2 func (vec2 a)
6210e5c31af7Sopenharmony_ci			{
6211e5c31af7Sopenharmony_ci				return a * vec2(2);
6212e5c31af7Sopenharmony_ci			}
6213e5c31af7Sopenharmony_ci
6214e5c31af7Sopenharmony_ci			void main()
6215e5c31af7Sopenharmony_ci			{
6216e5c31af7Sopenharmony_ci				${SETUP}
6217e5c31af7Sopenharmony_ci				out0 = func(in0);
6218e5c31af7Sopenharmony_ci				${OUTPUT}
6219e5c31af7Sopenharmony_ci			}
6220e5c31af7Sopenharmony_ci		""
6221e5c31af7Sopenharmony_ci	end
6222e5c31af7Sopenharmony_ci	case ivec3_to_uvec3
6223e5c31af7Sopenharmony_ci		version 320 es
6224e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6225e5c31af7Sopenharmony_ci		values
6226e5c31af7Sopenharmony_ci		{
6227e5c31af7Sopenharmony_ci			input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
6228e5c31af7Sopenharmony_ci			output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(4, 2, 4) | uvec3(6, 14, 4) ];
6229e5c31af7Sopenharmony_ci		}
6230e5c31af7Sopenharmony_ci
6231e5c31af7Sopenharmony_ci		both ""
6232e5c31af7Sopenharmony_ci			#version 320 es
6233e5c31af7Sopenharmony_ci			precision highp float;
6234e5c31af7Sopenharmony_ci			${DECLARATIONS}
6235e5c31af7Sopenharmony_ci
6236e5c31af7Sopenharmony_ci			uvec3 func (uvec3 a)
6237e5c31af7Sopenharmony_ci			{
6238e5c31af7Sopenharmony_ci				return a * uvec3(2);
6239e5c31af7Sopenharmony_ci			}
6240e5c31af7Sopenharmony_ci
6241e5c31af7Sopenharmony_ci			void main()
6242e5c31af7Sopenharmony_ci			{
6243e5c31af7Sopenharmony_ci				${SETUP}
6244e5c31af7Sopenharmony_ci				out0 = func(in0);
6245e5c31af7Sopenharmony_ci				${OUTPUT}
6246e5c31af7Sopenharmony_ci			}
6247e5c31af7Sopenharmony_ci		""
6248e5c31af7Sopenharmony_ci	end
6249e5c31af7Sopenharmony_ci	case ivec3_to_vec3
6250e5c31af7Sopenharmony_ci		version 320 es
6251e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6252e5c31af7Sopenharmony_ci		values
6253e5c31af7Sopenharmony_ci		{
6254e5c31af7Sopenharmony_ci			input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
6255e5c31af7Sopenharmony_ci			output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(4.0, 2.0, 4.0) | vec3(6.0, 14.0, 4.0) ];
6256e5c31af7Sopenharmony_ci		}
6257e5c31af7Sopenharmony_ci
6258e5c31af7Sopenharmony_ci		both ""
6259e5c31af7Sopenharmony_ci			#version 320 es
6260e5c31af7Sopenharmony_ci			precision highp float;
6261e5c31af7Sopenharmony_ci			${DECLARATIONS}
6262e5c31af7Sopenharmony_ci
6263e5c31af7Sopenharmony_ci			vec3 func (vec3 a)
6264e5c31af7Sopenharmony_ci			{
6265e5c31af7Sopenharmony_ci				return a * vec3(2);
6266e5c31af7Sopenharmony_ci			}
6267e5c31af7Sopenharmony_ci
6268e5c31af7Sopenharmony_ci			void main()
6269e5c31af7Sopenharmony_ci			{
6270e5c31af7Sopenharmony_ci				${SETUP}
6271e5c31af7Sopenharmony_ci				out0 = func(in0);
6272e5c31af7Sopenharmony_ci				${OUTPUT}
6273e5c31af7Sopenharmony_ci			}
6274e5c31af7Sopenharmony_ci		""
6275e5c31af7Sopenharmony_ci	end
6276e5c31af7Sopenharmony_ci	case uvec3_to_vec3
6277e5c31af7Sopenharmony_ci		version 320 es
6278e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6279e5c31af7Sopenharmony_ci		values
6280e5c31af7Sopenharmony_ci		{
6281e5c31af7Sopenharmony_ci			input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
6282e5c31af7Sopenharmony_ci			output vec3 out0 = [ vec3(4.0, 6.0, 10.0) | vec3(8.0, 12.0, 4.0) | vec3(2.0, 26.0, 14.0) ];
6283e5c31af7Sopenharmony_ci		}
6284e5c31af7Sopenharmony_ci
6285e5c31af7Sopenharmony_ci		both ""
6286e5c31af7Sopenharmony_ci			#version 320 es
6287e5c31af7Sopenharmony_ci			precision highp float;
6288e5c31af7Sopenharmony_ci			${DECLARATIONS}
6289e5c31af7Sopenharmony_ci
6290e5c31af7Sopenharmony_ci			vec3 func (vec3 a)
6291e5c31af7Sopenharmony_ci			{
6292e5c31af7Sopenharmony_ci				return a * vec3(2);
6293e5c31af7Sopenharmony_ci			}
6294e5c31af7Sopenharmony_ci
6295e5c31af7Sopenharmony_ci			void main()
6296e5c31af7Sopenharmony_ci			{
6297e5c31af7Sopenharmony_ci				${SETUP}
6298e5c31af7Sopenharmony_ci				out0 = func(in0);
6299e5c31af7Sopenharmony_ci				${OUTPUT}
6300e5c31af7Sopenharmony_ci			}
6301e5c31af7Sopenharmony_ci		""
6302e5c31af7Sopenharmony_ci	end
6303e5c31af7Sopenharmony_ci	case ivec4_to_uvec4
6304e5c31af7Sopenharmony_ci		version 320 es
6305e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6306e5c31af7Sopenharmony_ci		values
6307e5c31af7Sopenharmony_ci		{
6308e5c31af7Sopenharmony_ci			input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
6309e5c31af7Sopenharmony_ci			output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(4, 2, 4, 12) | uvec4(6, 14, 4, 10) ];
6310e5c31af7Sopenharmony_ci		}
6311e5c31af7Sopenharmony_ci
6312e5c31af7Sopenharmony_ci		both ""
6313e5c31af7Sopenharmony_ci			#version 320 es
6314e5c31af7Sopenharmony_ci			precision highp float;
6315e5c31af7Sopenharmony_ci			${DECLARATIONS}
6316e5c31af7Sopenharmony_ci
6317e5c31af7Sopenharmony_ci			uvec4 func (uvec4 a)
6318e5c31af7Sopenharmony_ci			{
6319e5c31af7Sopenharmony_ci				return a * uvec4(2);
6320e5c31af7Sopenharmony_ci			}
6321e5c31af7Sopenharmony_ci
6322e5c31af7Sopenharmony_ci			void main()
6323e5c31af7Sopenharmony_ci			{
6324e5c31af7Sopenharmony_ci				${SETUP}
6325e5c31af7Sopenharmony_ci				out0 = func(in0);
6326e5c31af7Sopenharmony_ci				${OUTPUT}
6327e5c31af7Sopenharmony_ci			}
6328e5c31af7Sopenharmony_ci		""
6329e5c31af7Sopenharmony_ci	end
6330e5c31af7Sopenharmony_ci	case ivec4_to_vec4
6331e5c31af7Sopenharmony_ci		version 320 es
6332e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6333e5c31af7Sopenharmony_ci		values
6334e5c31af7Sopenharmony_ci		{
6335e5c31af7Sopenharmony_ci			input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
6336e5c31af7Sopenharmony_ci			output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(6.0, 14.0, 4.0, 10.0) ];
6337e5c31af7Sopenharmony_ci		}
6338e5c31af7Sopenharmony_ci
6339e5c31af7Sopenharmony_ci		both ""
6340e5c31af7Sopenharmony_ci			#version 320 es
6341e5c31af7Sopenharmony_ci			precision highp float;
6342e5c31af7Sopenharmony_ci			${DECLARATIONS}
6343e5c31af7Sopenharmony_ci
6344e5c31af7Sopenharmony_ci			vec4 func (vec4 a)
6345e5c31af7Sopenharmony_ci			{
6346e5c31af7Sopenharmony_ci				return a * vec4(2);
6347e5c31af7Sopenharmony_ci			}
6348e5c31af7Sopenharmony_ci
6349e5c31af7Sopenharmony_ci			void main()
6350e5c31af7Sopenharmony_ci			{
6351e5c31af7Sopenharmony_ci				${SETUP}
6352e5c31af7Sopenharmony_ci				out0 = func(in0);
6353e5c31af7Sopenharmony_ci				${OUTPUT}
6354e5c31af7Sopenharmony_ci			}
6355e5c31af7Sopenharmony_ci		""
6356e5c31af7Sopenharmony_ci	end
6357e5c31af7Sopenharmony_ci	case uvec4_to_vec4
6358e5c31af7Sopenharmony_ci		version 320 es
6359e5c31af7Sopenharmony_ci		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6360e5c31af7Sopenharmony_ci		values
6361e5c31af7Sopenharmony_ci		{
6362e5c31af7Sopenharmony_ci			input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
6363e5c31af7Sopenharmony_ci			output vec4 out0 = [ vec4(4.0, 6.0, 10.0, 16.0) | vec4(8.0, 12.0, 4.0, 18.0) | vec4(2.0, 26.0, 14.0, 8.0) ];
6364e5c31af7Sopenharmony_ci		}
6365e5c31af7Sopenharmony_ci
6366e5c31af7Sopenharmony_ci		both ""
6367e5c31af7Sopenharmony_ci			#version 320 es
6368e5c31af7Sopenharmony_ci			precision highp float;
6369e5c31af7Sopenharmony_ci			${DECLARATIONS}
6370e5c31af7Sopenharmony_ci
6371e5c31af7Sopenharmony_ci			vec4 func (vec4 a)
6372e5c31af7Sopenharmony_ci			{
6373e5c31af7Sopenharmony_ci				return a * vec4(2);
6374e5c31af7Sopenharmony_ci			}
6375e5c31af7Sopenharmony_ci
6376e5c31af7Sopenharmony_ci			void main()
6377e5c31af7Sopenharmony_ci			{
6378e5c31af7Sopenharmony_ci				${SETUP}
6379e5c31af7Sopenharmony_ci				out0 = func(in0);
6380e5c31af7Sopenharmony_ci				${OUTPUT}
6381e5c31af7Sopenharmony_ci			}
6382e5c31af7Sopenharmony_ci		""
6383e5c31af7Sopenharmony_ci	end
6384e5c31af7Sopenharmony_ci
6385e5c31af7Sopenharmony_ciend # functions
6386e5c31af7Sopenharmony_cigroup struct_fields "Struct field selectors"
6387e5c31af7Sopenharmony_ci
6388e5c31af7Sopenharmony_ci	group input_before_field "Input before field"
6389e5c31af7Sopenharmony_ci
6390e5c31af7Sopenharmony_ci		case int_to_float
6391e5c31af7Sopenharmony_ci			version 320 es
6392e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6393e5c31af7Sopenharmony_ci			values
6394e5c31af7Sopenharmony_ci			{
6395e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6396e5c31af7Sopenharmony_ci				output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
6397e5c31af7Sopenharmony_ci			}
6398e5c31af7Sopenharmony_ci
6399e5c31af7Sopenharmony_ci			both ""
6400e5c31af7Sopenharmony_ci				#version 320 es
6401e5c31af7Sopenharmony_ci				precision highp float;
6402e5c31af7Sopenharmony_ci				${DECLARATIONS}
6403e5c31af7Sopenharmony_ci
6404e5c31af7Sopenharmony_ci				void main()
6405e5c31af7Sopenharmony_ci				{
6406e5c31af7Sopenharmony_ci					${SETUP}
6407e5c31af7Sopenharmony_ci					struct {
6408e5c31af7Sopenharmony_ci						float val;
6409e5c31af7Sopenharmony_ci					} x;
6410e5c31af7Sopenharmony_ci
6411e5c31af7Sopenharmony_ci					x.val = 2.0;
6412e5c31af7Sopenharmony_ci
6413e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6414e5c31af7Sopenharmony_ci					${OUTPUT}
6415e5c31af7Sopenharmony_ci				}
6416e5c31af7Sopenharmony_ci			""
6417e5c31af7Sopenharmony_ci		end
6418e5c31af7Sopenharmony_ci		case int_to_uint
6419e5c31af7Sopenharmony_ci			version 320 es
6420e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6421e5c31af7Sopenharmony_ci			values
6422e5c31af7Sopenharmony_ci			{
6423e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6424e5c31af7Sopenharmony_ci				output uint out0 = [ 3 | 2 | 2 | 4 | 6 ];
6425e5c31af7Sopenharmony_ci			}
6426e5c31af7Sopenharmony_ci
6427e5c31af7Sopenharmony_ci			both ""
6428e5c31af7Sopenharmony_ci				#version 320 es
6429e5c31af7Sopenharmony_ci				precision highp float;
6430e5c31af7Sopenharmony_ci				${DECLARATIONS}
6431e5c31af7Sopenharmony_ci
6432e5c31af7Sopenharmony_ci				void main()
6433e5c31af7Sopenharmony_ci				{
6434e5c31af7Sopenharmony_ci					${SETUP}
6435e5c31af7Sopenharmony_ci					struct {
6436e5c31af7Sopenharmony_ci						uint val;
6437e5c31af7Sopenharmony_ci					} x;
6438e5c31af7Sopenharmony_ci
6439e5c31af7Sopenharmony_ci					x.val = 1;
6440e5c31af7Sopenharmony_ci
6441e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6442e5c31af7Sopenharmony_ci					${OUTPUT}
6443e5c31af7Sopenharmony_ci				}
6444e5c31af7Sopenharmony_ci			""
6445e5c31af7Sopenharmony_ci		end
6446e5c31af7Sopenharmony_ci		case int_to_vec2
6447e5c31af7Sopenharmony_ci			version 320 es
6448e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6449e5c31af7Sopenharmony_ci			values
6450e5c31af7Sopenharmony_ci			{
6451e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6452e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
6453e5c31af7Sopenharmony_ci			}
6454e5c31af7Sopenharmony_ci
6455e5c31af7Sopenharmony_ci			both ""
6456e5c31af7Sopenharmony_ci				#version 320 es
6457e5c31af7Sopenharmony_ci				precision highp float;
6458e5c31af7Sopenharmony_ci				${DECLARATIONS}
6459e5c31af7Sopenharmony_ci
6460e5c31af7Sopenharmony_ci				void main()
6461e5c31af7Sopenharmony_ci				{
6462e5c31af7Sopenharmony_ci					${SETUP}
6463e5c31af7Sopenharmony_ci					struct {
6464e5c31af7Sopenharmony_ci						vec2 val;
6465e5c31af7Sopenharmony_ci					} x;
6466e5c31af7Sopenharmony_ci
6467e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
6468e5c31af7Sopenharmony_ci
6469e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6470e5c31af7Sopenharmony_ci					${OUTPUT}
6471e5c31af7Sopenharmony_ci				}
6472e5c31af7Sopenharmony_ci			""
6473e5c31af7Sopenharmony_ci		end
6474e5c31af7Sopenharmony_ci		case int_to_vec3
6475e5c31af7Sopenharmony_ci			version 320 es
6476e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6477e5c31af7Sopenharmony_ci			values
6478e5c31af7Sopenharmony_ci			{
6479e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6480e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
6481e5c31af7Sopenharmony_ci			}
6482e5c31af7Sopenharmony_ci
6483e5c31af7Sopenharmony_ci			both ""
6484e5c31af7Sopenharmony_ci				#version 320 es
6485e5c31af7Sopenharmony_ci				precision highp float;
6486e5c31af7Sopenharmony_ci				${DECLARATIONS}
6487e5c31af7Sopenharmony_ci
6488e5c31af7Sopenharmony_ci				void main()
6489e5c31af7Sopenharmony_ci				{
6490e5c31af7Sopenharmony_ci					${SETUP}
6491e5c31af7Sopenharmony_ci					struct {
6492e5c31af7Sopenharmony_ci						vec3 val;
6493e5c31af7Sopenharmony_ci					} x;
6494e5c31af7Sopenharmony_ci
6495e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
6496e5c31af7Sopenharmony_ci
6497e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6498e5c31af7Sopenharmony_ci					${OUTPUT}
6499e5c31af7Sopenharmony_ci				}
6500e5c31af7Sopenharmony_ci			""
6501e5c31af7Sopenharmony_ci		end
6502e5c31af7Sopenharmony_ci		case int_to_vec4
6503e5c31af7Sopenharmony_ci			version 320 es
6504e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6505e5c31af7Sopenharmony_ci			values
6506e5c31af7Sopenharmony_ci			{
6507e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6508e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
6509e5c31af7Sopenharmony_ci			}
6510e5c31af7Sopenharmony_ci
6511e5c31af7Sopenharmony_ci			both ""
6512e5c31af7Sopenharmony_ci				#version 320 es
6513e5c31af7Sopenharmony_ci				precision highp float;
6514e5c31af7Sopenharmony_ci				${DECLARATIONS}
6515e5c31af7Sopenharmony_ci
6516e5c31af7Sopenharmony_ci				void main()
6517e5c31af7Sopenharmony_ci				{
6518e5c31af7Sopenharmony_ci					${SETUP}
6519e5c31af7Sopenharmony_ci					struct {
6520e5c31af7Sopenharmony_ci						vec4 val;
6521e5c31af7Sopenharmony_ci					} x;
6522e5c31af7Sopenharmony_ci
6523e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
6524e5c31af7Sopenharmony_ci
6525e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6526e5c31af7Sopenharmony_ci					${OUTPUT}
6527e5c31af7Sopenharmony_ci				}
6528e5c31af7Sopenharmony_ci			""
6529e5c31af7Sopenharmony_ci		end
6530e5c31af7Sopenharmony_ci		case int_to_uvec2
6531e5c31af7Sopenharmony_ci			version 320 es
6532e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6533e5c31af7Sopenharmony_ci			values
6534e5c31af7Sopenharmony_ci			{
6535e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6536e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(4, 5) | uvec2(3, 4) | uvec2(3, 4) | uvec2(5, 6) | uvec2(7, 8) ];
6537e5c31af7Sopenharmony_ci			}
6538e5c31af7Sopenharmony_ci
6539e5c31af7Sopenharmony_ci			both ""
6540e5c31af7Sopenharmony_ci				#version 320 es
6541e5c31af7Sopenharmony_ci				precision highp float;
6542e5c31af7Sopenharmony_ci				${DECLARATIONS}
6543e5c31af7Sopenharmony_ci
6544e5c31af7Sopenharmony_ci				void main()
6545e5c31af7Sopenharmony_ci				{
6546e5c31af7Sopenharmony_ci					${SETUP}
6547e5c31af7Sopenharmony_ci					struct {
6548e5c31af7Sopenharmony_ci						uvec2 val;
6549e5c31af7Sopenharmony_ci					} x;
6550e5c31af7Sopenharmony_ci
6551e5c31af7Sopenharmony_ci					x.val = uvec2(2, 3);
6552e5c31af7Sopenharmony_ci
6553e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6554e5c31af7Sopenharmony_ci					${OUTPUT}
6555e5c31af7Sopenharmony_ci				}
6556e5c31af7Sopenharmony_ci			""
6557e5c31af7Sopenharmony_ci		end
6558e5c31af7Sopenharmony_ci		case int_to_uvec3
6559e5c31af7Sopenharmony_ci			version 320 es
6560e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6561e5c31af7Sopenharmony_ci			values
6562e5c31af7Sopenharmony_ci			{
6563e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6564e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(4, 5, 7) | uvec3(3, 4, 6) | uvec3(3, 4, 6) | uvec3(5, 6, 8) | uvec3(7, 8, 10) ];
6565e5c31af7Sopenharmony_ci			}
6566e5c31af7Sopenharmony_ci
6567e5c31af7Sopenharmony_ci			both ""
6568e5c31af7Sopenharmony_ci				#version 320 es
6569e5c31af7Sopenharmony_ci				precision highp float;
6570e5c31af7Sopenharmony_ci				${DECLARATIONS}
6571e5c31af7Sopenharmony_ci
6572e5c31af7Sopenharmony_ci				void main()
6573e5c31af7Sopenharmony_ci				{
6574e5c31af7Sopenharmony_ci					${SETUP}
6575e5c31af7Sopenharmony_ci					struct {
6576e5c31af7Sopenharmony_ci						uvec3 val;
6577e5c31af7Sopenharmony_ci					} x;
6578e5c31af7Sopenharmony_ci
6579e5c31af7Sopenharmony_ci					x.val = uvec3(2, 3, 5);
6580e5c31af7Sopenharmony_ci
6581e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6582e5c31af7Sopenharmony_ci					${OUTPUT}
6583e5c31af7Sopenharmony_ci				}
6584e5c31af7Sopenharmony_ci			""
6585e5c31af7Sopenharmony_ci		end
6586e5c31af7Sopenharmony_ci		case int_to_uvec4
6587e5c31af7Sopenharmony_ci			version 320 es
6588e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6589e5c31af7Sopenharmony_ci			values
6590e5c31af7Sopenharmony_ci			{
6591e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6592e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(4, 5, 7, 10) | uvec4(3, 4, 6, 9) | uvec4(3, 4, 6, 9) | uvec4(5, 6, 8, 11) | uvec4(7, 8, 10, 13) ];
6593e5c31af7Sopenharmony_ci			}
6594e5c31af7Sopenharmony_ci
6595e5c31af7Sopenharmony_ci			both ""
6596e5c31af7Sopenharmony_ci				#version 320 es
6597e5c31af7Sopenharmony_ci				precision highp float;
6598e5c31af7Sopenharmony_ci				${DECLARATIONS}
6599e5c31af7Sopenharmony_ci
6600e5c31af7Sopenharmony_ci				void main()
6601e5c31af7Sopenharmony_ci				{
6602e5c31af7Sopenharmony_ci					${SETUP}
6603e5c31af7Sopenharmony_ci					struct {
6604e5c31af7Sopenharmony_ci						uvec4 val;
6605e5c31af7Sopenharmony_ci					} x;
6606e5c31af7Sopenharmony_ci
6607e5c31af7Sopenharmony_ci					x.val = uvec4(2, 3, 5, 8);
6608e5c31af7Sopenharmony_ci
6609e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6610e5c31af7Sopenharmony_ci					${OUTPUT}
6611e5c31af7Sopenharmony_ci				}
6612e5c31af7Sopenharmony_ci			""
6613e5c31af7Sopenharmony_ci		end
6614e5c31af7Sopenharmony_ci		case uint_to_float
6615e5c31af7Sopenharmony_ci			version 320 es
6616e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6617e5c31af7Sopenharmony_ci			values
6618e5c31af7Sopenharmony_ci			{
6619e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
6620e5c31af7Sopenharmony_ci				output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
6621e5c31af7Sopenharmony_ci			}
6622e5c31af7Sopenharmony_ci
6623e5c31af7Sopenharmony_ci			both ""
6624e5c31af7Sopenharmony_ci				#version 320 es
6625e5c31af7Sopenharmony_ci				precision highp float;
6626e5c31af7Sopenharmony_ci				${DECLARATIONS}
6627e5c31af7Sopenharmony_ci
6628e5c31af7Sopenharmony_ci				void main()
6629e5c31af7Sopenharmony_ci				{
6630e5c31af7Sopenharmony_ci					${SETUP}
6631e5c31af7Sopenharmony_ci					struct {
6632e5c31af7Sopenharmony_ci						float val;
6633e5c31af7Sopenharmony_ci					} x;
6634e5c31af7Sopenharmony_ci
6635e5c31af7Sopenharmony_ci					x.val = 2.0;
6636e5c31af7Sopenharmony_ci
6637e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6638e5c31af7Sopenharmony_ci					${OUTPUT}
6639e5c31af7Sopenharmony_ci				}
6640e5c31af7Sopenharmony_ci			""
6641e5c31af7Sopenharmony_ci		end
6642e5c31af7Sopenharmony_ci		case uint_to_vec2
6643e5c31af7Sopenharmony_ci			version 320 es
6644e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6645e5c31af7Sopenharmony_ci			values
6646e5c31af7Sopenharmony_ci			{
6647e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
6648e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
6649e5c31af7Sopenharmony_ci			}
6650e5c31af7Sopenharmony_ci
6651e5c31af7Sopenharmony_ci			both ""
6652e5c31af7Sopenharmony_ci				#version 320 es
6653e5c31af7Sopenharmony_ci				precision highp float;
6654e5c31af7Sopenharmony_ci				${DECLARATIONS}
6655e5c31af7Sopenharmony_ci
6656e5c31af7Sopenharmony_ci				void main()
6657e5c31af7Sopenharmony_ci				{
6658e5c31af7Sopenharmony_ci					${SETUP}
6659e5c31af7Sopenharmony_ci					struct {
6660e5c31af7Sopenharmony_ci						vec2 val;
6661e5c31af7Sopenharmony_ci					} x;
6662e5c31af7Sopenharmony_ci
6663e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
6664e5c31af7Sopenharmony_ci
6665e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6666e5c31af7Sopenharmony_ci					${OUTPUT}
6667e5c31af7Sopenharmony_ci				}
6668e5c31af7Sopenharmony_ci			""
6669e5c31af7Sopenharmony_ci		end
6670e5c31af7Sopenharmony_ci		case uint_to_vec3
6671e5c31af7Sopenharmony_ci			version 320 es
6672e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6673e5c31af7Sopenharmony_ci			values
6674e5c31af7Sopenharmony_ci			{
6675e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
6676e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
6677e5c31af7Sopenharmony_ci			}
6678e5c31af7Sopenharmony_ci
6679e5c31af7Sopenharmony_ci			both ""
6680e5c31af7Sopenharmony_ci				#version 320 es
6681e5c31af7Sopenharmony_ci				precision highp float;
6682e5c31af7Sopenharmony_ci				${DECLARATIONS}
6683e5c31af7Sopenharmony_ci
6684e5c31af7Sopenharmony_ci				void main()
6685e5c31af7Sopenharmony_ci				{
6686e5c31af7Sopenharmony_ci					${SETUP}
6687e5c31af7Sopenharmony_ci					struct {
6688e5c31af7Sopenharmony_ci						vec3 val;
6689e5c31af7Sopenharmony_ci					} x;
6690e5c31af7Sopenharmony_ci
6691e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
6692e5c31af7Sopenharmony_ci
6693e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6694e5c31af7Sopenharmony_ci					${OUTPUT}
6695e5c31af7Sopenharmony_ci				}
6696e5c31af7Sopenharmony_ci			""
6697e5c31af7Sopenharmony_ci		end
6698e5c31af7Sopenharmony_ci		case uint_to_vec4
6699e5c31af7Sopenharmony_ci			version 320 es
6700e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6701e5c31af7Sopenharmony_ci			values
6702e5c31af7Sopenharmony_ci			{
6703e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
6704e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
6705e5c31af7Sopenharmony_ci			}
6706e5c31af7Sopenharmony_ci
6707e5c31af7Sopenharmony_ci			both ""
6708e5c31af7Sopenharmony_ci				#version 320 es
6709e5c31af7Sopenharmony_ci				precision highp float;
6710e5c31af7Sopenharmony_ci				${DECLARATIONS}
6711e5c31af7Sopenharmony_ci
6712e5c31af7Sopenharmony_ci				void main()
6713e5c31af7Sopenharmony_ci				{
6714e5c31af7Sopenharmony_ci					${SETUP}
6715e5c31af7Sopenharmony_ci					struct {
6716e5c31af7Sopenharmony_ci						vec4 val;
6717e5c31af7Sopenharmony_ci					} x;
6718e5c31af7Sopenharmony_ci
6719e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
6720e5c31af7Sopenharmony_ci
6721e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6722e5c31af7Sopenharmony_ci					${OUTPUT}
6723e5c31af7Sopenharmony_ci				}
6724e5c31af7Sopenharmony_ci			""
6725e5c31af7Sopenharmony_ci		end
6726e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
6727e5c31af7Sopenharmony_ci			version 320 es
6728e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6729e5c31af7Sopenharmony_ci			values
6730e5c31af7Sopenharmony_ci			{
6731e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
6732e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(3, 5) | uvec2(4, 4) | uvec2(5, 10) ];
6733e5c31af7Sopenharmony_ci			}
6734e5c31af7Sopenharmony_ci
6735e5c31af7Sopenharmony_ci			both ""
6736e5c31af7Sopenharmony_ci				#version 320 es
6737e5c31af7Sopenharmony_ci				precision highp float;
6738e5c31af7Sopenharmony_ci				${DECLARATIONS}
6739e5c31af7Sopenharmony_ci
6740e5c31af7Sopenharmony_ci				void main()
6741e5c31af7Sopenharmony_ci				{
6742e5c31af7Sopenharmony_ci					${SETUP}
6743e5c31af7Sopenharmony_ci					struct {
6744e5c31af7Sopenharmony_ci						uvec2 val;
6745e5c31af7Sopenharmony_ci					} x;
6746e5c31af7Sopenharmony_ci
6747e5c31af7Sopenharmony_ci					x.val = uvec2(2, 3);
6748e5c31af7Sopenharmony_ci
6749e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6750e5c31af7Sopenharmony_ci					${OUTPUT}
6751e5c31af7Sopenharmony_ci				}
6752e5c31af7Sopenharmony_ci			""
6753e5c31af7Sopenharmony_ci		end
6754e5c31af7Sopenharmony_ci		case ivec2_to_vec2
6755e5c31af7Sopenharmony_ci			version 320 es
6756e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6757e5c31af7Sopenharmony_ci			values
6758e5c31af7Sopenharmony_ci			{
6759e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
6760e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
6761e5c31af7Sopenharmony_ci			}
6762e5c31af7Sopenharmony_ci
6763e5c31af7Sopenharmony_ci			both ""
6764e5c31af7Sopenharmony_ci				#version 320 es
6765e5c31af7Sopenharmony_ci				precision highp float;
6766e5c31af7Sopenharmony_ci				${DECLARATIONS}
6767e5c31af7Sopenharmony_ci
6768e5c31af7Sopenharmony_ci				void main()
6769e5c31af7Sopenharmony_ci				{
6770e5c31af7Sopenharmony_ci					${SETUP}
6771e5c31af7Sopenharmony_ci					struct {
6772e5c31af7Sopenharmony_ci						vec2 val;
6773e5c31af7Sopenharmony_ci					} x;
6774e5c31af7Sopenharmony_ci
6775e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
6776e5c31af7Sopenharmony_ci
6777e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6778e5c31af7Sopenharmony_ci					${OUTPUT}
6779e5c31af7Sopenharmony_ci				}
6780e5c31af7Sopenharmony_ci			""
6781e5c31af7Sopenharmony_ci		end
6782e5c31af7Sopenharmony_ci		case uvec2_to_vec2
6783e5c31af7Sopenharmony_ci			version 320 es
6784e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6785e5c31af7Sopenharmony_ci			values
6786e5c31af7Sopenharmony_ci			{
6787e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
6788e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
6789e5c31af7Sopenharmony_ci			}
6790e5c31af7Sopenharmony_ci
6791e5c31af7Sopenharmony_ci			both ""
6792e5c31af7Sopenharmony_ci				#version 320 es
6793e5c31af7Sopenharmony_ci				precision highp float;
6794e5c31af7Sopenharmony_ci				${DECLARATIONS}
6795e5c31af7Sopenharmony_ci
6796e5c31af7Sopenharmony_ci				void main()
6797e5c31af7Sopenharmony_ci				{
6798e5c31af7Sopenharmony_ci					${SETUP}
6799e5c31af7Sopenharmony_ci					struct {
6800e5c31af7Sopenharmony_ci						vec2 val;
6801e5c31af7Sopenharmony_ci					} x;
6802e5c31af7Sopenharmony_ci
6803e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
6804e5c31af7Sopenharmony_ci
6805e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6806e5c31af7Sopenharmony_ci					${OUTPUT}
6807e5c31af7Sopenharmony_ci				}
6808e5c31af7Sopenharmony_ci			""
6809e5c31af7Sopenharmony_ci		end
6810e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
6811e5c31af7Sopenharmony_ci			version 320 es
6812e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6813e5c31af7Sopenharmony_ci			values
6814e5c31af7Sopenharmony_ci			{
6815e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
6816e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(3, 5, 8) | uvec3(4, 4, 7) | uvec3(5, 10, 7) ];
6817e5c31af7Sopenharmony_ci			}
6818e5c31af7Sopenharmony_ci
6819e5c31af7Sopenharmony_ci			both ""
6820e5c31af7Sopenharmony_ci				#version 320 es
6821e5c31af7Sopenharmony_ci				precision highp float;
6822e5c31af7Sopenharmony_ci				${DECLARATIONS}
6823e5c31af7Sopenharmony_ci
6824e5c31af7Sopenharmony_ci				void main()
6825e5c31af7Sopenharmony_ci				{
6826e5c31af7Sopenharmony_ci					${SETUP}
6827e5c31af7Sopenharmony_ci					struct {
6828e5c31af7Sopenharmony_ci						uvec3 val;
6829e5c31af7Sopenharmony_ci					} x;
6830e5c31af7Sopenharmony_ci
6831e5c31af7Sopenharmony_ci					x.val = uvec3(2, 3, 5);
6832e5c31af7Sopenharmony_ci
6833e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6834e5c31af7Sopenharmony_ci					${OUTPUT}
6835e5c31af7Sopenharmony_ci				}
6836e5c31af7Sopenharmony_ci			""
6837e5c31af7Sopenharmony_ci		end
6838e5c31af7Sopenharmony_ci		case ivec3_to_vec3
6839e5c31af7Sopenharmony_ci			version 320 es
6840e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6841e5c31af7Sopenharmony_ci			values
6842e5c31af7Sopenharmony_ci			{
6843e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
6844e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
6845e5c31af7Sopenharmony_ci			}
6846e5c31af7Sopenharmony_ci
6847e5c31af7Sopenharmony_ci			both ""
6848e5c31af7Sopenharmony_ci				#version 320 es
6849e5c31af7Sopenharmony_ci				precision highp float;
6850e5c31af7Sopenharmony_ci				${DECLARATIONS}
6851e5c31af7Sopenharmony_ci
6852e5c31af7Sopenharmony_ci				void main()
6853e5c31af7Sopenharmony_ci				{
6854e5c31af7Sopenharmony_ci					${SETUP}
6855e5c31af7Sopenharmony_ci					struct {
6856e5c31af7Sopenharmony_ci						vec3 val;
6857e5c31af7Sopenharmony_ci					} x;
6858e5c31af7Sopenharmony_ci
6859e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
6860e5c31af7Sopenharmony_ci
6861e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6862e5c31af7Sopenharmony_ci					${OUTPUT}
6863e5c31af7Sopenharmony_ci				}
6864e5c31af7Sopenharmony_ci			""
6865e5c31af7Sopenharmony_ci		end
6866e5c31af7Sopenharmony_ci		case uvec3_to_vec3
6867e5c31af7Sopenharmony_ci			version 320 es
6868e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6869e5c31af7Sopenharmony_ci			values
6870e5c31af7Sopenharmony_ci			{
6871e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
6872e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
6873e5c31af7Sopenharmony_ci			}
6874e5c31af7Sopenharmony_ci
6875e5c31af7Sopenharmony_ci			both ""
6876e5c31af7Sopenharmony_ci				#version 320 es
6877e5c31af7Sopenharmony_ci				precision highp float;
6878e5c31af7Sopenharmony_ci				${DECLARATIONS}
6879e5c31af7Sopenharmony_ci
6880e5c31af7Sopenharmony_ci				void main()
6881e5c31af7Sopenharmony_ci				{
6882e5c31af7Sopenharmony_ci					${SETUP}
6883e5c31af7Sopenharmony_ci					struct {
6884e5c31af7Sopenharmony_ci						vec3 val;
6885e5c31af7Sopenharmony_ci					} x;
6886e5c31af7Sopenharmony_ci
6887e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
6888e5c31af7Sopenharmony_ci
6889e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6890e5c31af7Sopenharmony_ci					${OUTPUT}
6891e5c31af7Sopenharmony_ci				}
6892e5c31af7Sopenharmony_ci			""
6893e5c31af7Sopenharmony_ci		end
6894e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
6895e5c31af7Sopenharmony_ci			version 320 es
6896e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6897e5c31af7Sopenharmony_ci			values
6898e5c31af7Sopenharmony_ci			{
6899e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
6900e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(3, 5, 8, 12) | uvec4(4, 4, 7, 14) | uvec4(5, 10, 7, 13) ];
6901e5c31af7Sopenharmony_ci			}
6902e5c31af7Sopenharmony_ci
6903e5c31af7Sopenharmony_ci			both ""
6904e5c31af7Sopenharmony_ci				#version 320 es
6905e5c31af7Sopenharmony_ci				precision highp float;
6906e5c31af7Sopenharmony_ci				${DECLARATIONS}
6907e5c31af7Sopenharmony_ci
6908e5c31af7Sopenharmony_ci				void main()
6909e5c31af7Sopenharmony_ci				{
6910e5c31af7Sopenharmony_ci					${SETUP}
6911e5c31af7Sopenharmony_ci					struct {
6912e5c31af7Sopenharmony_ci						uvec4 val;
6913e5c31af7Sopenharmony_ci					} x;
6914e5c31af7Sopenharmony_ci
6915e5c31af7Sopenharmony_ci					x.val = uvec4(2, 3, 5, 8);
6916e5c31af7Sopenharmony_ci
6917e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6918e5c31af7Sopenharmony_ci					${OUTPUT}
6919e5c31af7Sopenharmony_ci				}
6920e5c31af7Sopenharmony_ci			""
6921e5c31af7Sopenharmony_ci		end
6922e5c31af7Sopenharmony_ci		case ivec4_to_vec4
6923e5c31af7Sopenharmony_ci			version 320 es
6924e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6925e5c31af7Sopenharmony_ci			values
6926e5c31af7Sopenharmony_ci			{
6927e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
6928e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
6929e5c31af7Sopenharmony_ci			}
6930e5c31af7Sopenharmony_ci
6931e5c31af7Sopenharmony_ci			both ""
6932e5c31af7Sopenharmony_ci				#version 320 es
6933e5c31af7Sopenharmony_ci				precision highp float;
6934e5c31af7Sopenharmony_ci				${DECLARATIONS}
6935e5c31af7Sopenharmony_ci
6936e5c31af7Sopenharmony_ci				void main()
6937e5c31af7Sopenharmony_ci				{
6938e5c31af7Sopenharmony_ci					${SETUP}
6939e5c31af7Sopenharmony_ci					struct {
6940e5c31af7Sopenharmony_ci						vec4 val;
6941e5c31af7Sopenharmony_ci					} x;
6942e5c31af7Sopenharmony_ci
6943e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
6944e5c31af7Sopenharmony_ci
6945e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6946e5c31af7Sopenharmony_ci					${OUTPUT}
6947e5c31af7Sopenharmony_ci				}
6948e5c31af7Sopenharmony_ci			""
6949e5c31af7Sopenharmony_ci		end
6950e5c31af7Sopenharmony_ci		case uvec4_to_vec4
6951e5c31af7Sopenharmony_ci			version 320 es
6952e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6953e5c31af7Sopenharmony_ci			values
6954e5c31af7Sopenharmony_ci			{
6955e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
6956e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
6957e5c31af7Sopenharmony_ci			}
6958e5c31af7Sopenharmony_ci
6959e5c31af7Sopenharmony_ci			both ""
6960e5c31af7Sopenharmony_ci				#version 320 es
6961e5c31af7Sopenharmony_ci				precision highp float;
6962e5c31af7Sopenharmony_ci				${DECLARATIONS}
6963e5c31af7Sopenharmony_ci
6964e5c31af7Sopenharmony_ci				void main()
6965e5c31af7Sopenharmony_ci				{
6966e5c31af7Sopenharmony_ci					${SETUP}
6967e5c31af7Sopenharmony_ci					struct {
6968e5c31af7Sopenharmony_ci						vec4 val;
6969e5c31af7Sopenharmony_ci					} x;
6970e5c31af7Sopenharmony_ci
6971e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
6972e5c31af7Sopenharmony_ci
6973e5c31af7Sopenharmony_ci					out0 = in0 + x.val;
6974e5c31af7Sopenharmony_ci					${OUTPUT}
6975e5c31af7Sopenharmony_ci				}
6976e5c31af7Sopenharmony_ci			""
6977e5c31af7Sopenharmony_ci		end
6978e5c31af7Sopenharmony_ci
6979e5c31af7Sopenharmony_ci	end # input_before_field
6980e5c31af7Sopenharmony_ci	group field_before_input "Field before input"
6981e5c31af7Sopenharmony_ci
6982e5c31af7Sopenharmony_ci		case int_to_float
6983e5c31af7Sopenharmony_ci			version 320 es
6984e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
6985e5c31af7Sopenharmony_ci			values
6986e5c31af7Sopenharmony_ci			{
6987e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
6988e5c31af7Sopenharmony_ci				output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
6989e5c31af7Sopenharmony_ci			}
6990e5c31af7Sopenharmony_ci
6991e5c31af7Sopenharmony_ci			both ""
6992e5c31af7Sopenharmony_ci				#version 320 es
6993e5c31af7Sopenharmony_ci				precision highp float;
6994e5c31af7Sopenharmony_ci				${DECLARATIONS}
6995e5c31af7Sopenharmony_ci
6996e5c31af7Sopenharmony_ci				void main()
6997e5c31af7Sopenharmony_ci				{
6998e5c31af7Sopenharmony_ci					${SETUP}
6999e5c31af7Sopenharmony_ci					struct {
7000e5c31af7Sopenharmony_ci						float val;
7001e5c31af7Sopenharmony_ci					} x;
7002e5c31af7Sopenharmony_ci
7003e5c31af7Sopenharmony_ci					x.val = 2.0;
7004e5c31af7Sopenharmony_ci
7005e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7006e5c31af7Sopenharmony_ci					${OUTPUT}
7007e5c31af7Sopenharmony_ci				}
7008e5c31af7Sopenharmony_ci			""
7009e5c31af7Sopenharmony_ci		end
7010e5c31af7Sopenharmony_ci		case int_to_uint
7011e5c31af7Sopenharmony_ci			version 320 es
7012e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7013e5c31af7Sopenharmony_ci			values
7014e5c31af7Sopenharmony_ci			{
7015e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7016e5c31af7Sopenharmony_ci				output uint out0 = [ 3 | 2 | 2 | 4 | 6 ];
7017e5c31af7Sopenharmony_ci			}
7018e5c31af7Sopenharmony_ci
7019e5c31af7Sopenharmony_ci			both ""
7020e5c31af7Sopenharmony_ci				#version 320 es
7021e5c31af7Sopenharmony_ci				precision highp float;
7022e5c31af7Sopenharmony_ci				${DECLARATIONS}
7023e5c31af7Sopenharmony_ci
7024e5c31af7Sopenharmony_ci				void main()
7025e5c31af7Sopenharmony_ci				{
7026e5c31af7Sopenharmony_ci					${SETUP}
7027e5c31af7Sopenharmony_ci					struct {
7028e5c31af7Sopenharmony_ci						uint val;
7029e5c31af7Sopenharmony_ci					} x;
7030e5c31af7Sopenharmony_ci
7031e5c31af7Sopenharmony_ci					x.val = 1;
7032e5c31af7Sopenharmony_ci
7033e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7034e5c31af7Sopenharmony_ci					${OUTPUT}
7035e5c31af7Sopenharmony_ci				}
7036e5c31af7Sopenharmony_ci			""
7037e5c31af7Sopenharmony_ci		end
7038e5c31af7Sopenharmony_ci		case int_to_vec2
7039e5c31af7Sopenharmony_ci			version 320 es
7040e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7041e5c31af7Sopenharmony_ci			values
7042e5c31af7Sopenharmony_ci			{
7043e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7044e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
7045e5c31af7Sopenharmony_ci			}
7046e5c31af7Sopenharmony_ci
7047e5c31af7Sopenharmony_ci			both ""
7048e5c31af7Sopenharmony_ci				#version 320 es
7049e5c31af7Sopenharmony_ci				precision highp float;
7050e5c31af7Sopenharmony_ci				${DECLARATIONS}
7051e5c31af7Sopenharmony_ci
7052e5c31af7Sopenharmony_ci				void main()
7053e5c31af7Sopenharmony_ci				{
7054e5c31af7Sopenharmony_ci					${SETUP}
7055e5c31af7Sopenharmony_ci					struct {
7056e5c31af7Sopenharmony_ci						vec2 val;
7057e5c31af7Sopenharmony_ci					} x;
7058e5c31af7Sopenharmony_ci
7059e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
7060e5c31af7Sopenharmony_ci
7061e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7062e5c31af7Sopenharmony_ci					${OUTPUT}
7063e5c31af7Sopenharmony_ci				}
7064e5c31af7Sopenharmony_ci			""
7065e5c31af7Sopenharmony_ci		end
7066e5c31af7Sopenharmony_ci		case int_to_vec3
7067e5c31af7Sopenharmony_ci			version 320 es
7068e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7069e5c31af7Sopenharmony_ci			values
7070e5c31af7Sopenharmony_ci			{
7071e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7072e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
7073e5c31af7Sopenharmony_ci			}
7074e5c31af7Sopenharmony_ci
7075e5c31af7Sopenharmony_ci			both ""
7076e5c31af7Sopenharmony_ci				#version 320 es
7077e5c31af7Sopenharmony_ci				precision highp float;
7078e5c31af7Sopenharmony_ci				${DECLARATIONS}
7079e5c31af7Sopenharmony_ci
7080e5c31af7Sopenharmony_ci				void main()
7081e5c31af7Sopenharmony_ci				{
7082e5c31af7Sopenharmony_ci					${SETUP}
7083e5c31af7Sopenharmony_ci					struct {
7084e5c31af7Sopenharmony_ci						vec3 val;
7085e5c31af7Sopenharmony_ci					} x;
7086e5c31af7Sopenharmony_ci
7087e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
7088e5c31af7Sopenharmony_ci
7089e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7090e5c31af7Sopenharmony_ci					${OUTPUT}
7091e5c31af7Sopenharmony_ci				}
7092e5c31af7Sopenharmony_ci			""
7093e5c31af7Sopenharmony_ci		end
7094e5c31af7Sopenharmony_ci		case int_to_vec4
7095e5c31af7Sopenharmony_ci			version 320 es
7096e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7097e5c31af7Sopenharmony_ci			values
7098e5c31af7Sopenharmony_ci			{
7099e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7100e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
7101e5c31af7Sopenharmony_ci			}
7102e5c31af7Sopenharmony_ci
7103e5c31af7Sopenharmony_ci			both ""
7104e5c31af7Sopenharmony_ci				#version 320 es
7105e5c31af7Sopenharmony_ci				precision highp float;
7106e5c31af7Sopenharmony_ci				${DECLARATIONS}
7107e5c31af7Sopenharmony_ci
7108e5c31af7Sopenharmony_ci				void main()
7109e5c31af7Sopenharmony_ci				{
7110e5c31af7Sopenharmony_ci					${SETUP}
7111e5c31af7Sopenharmony_ci					struct {
7112e5c31af7Sopenharmony_ci						vec4 val;
7113e5c31af7Sopenharmony_ci					} x;
7114e5c31af7Sopenharmony_ci
7115e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
7116e5c31af7Sopenharmony_ci
7117e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7118e5c31af7Sopenharmony_ci					${OUTPUT}
7119e5c31af7Sopenharmony_ci				}
7120e5c31af7Sopenharmony_ci			""
7121e5c31af7Sopenharmony_ci		end
7122e5c31af7Sopenharmony_ci		case int_to_uvec2
7123e5c31af7Sopenharmony_ci			version 320 es
7124e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7125e5c31af7Sopenharmony_ci			values
7126e5c31af7Sopenharmony_ci			{
7127e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7128e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(4, 5) | uvec2(3, 4) | uvec2(3, 4) | uvec2(5, 6) | uvec2(7, 8) ];
7129e5c31af7Sopenharmony_ci			}
7130e5c31af7Sopenharmony_ci
7131e5c31af7Sopenharmony_ci			both ""
7132e5c31af7Sopenharmony_ci				#version 320 es
7133e5c31af7Sopenharmony_ci				precision highp float;
7134e5c31af7Sopenharmony_ci				${DECLARATIONS}
7135e5c31af7Sopenharmony_ci
7136e5c31af7Sopenharmony_ci				void main()
7137e5c31af7Sopenharmony_ci				{
7138e5c31af7Sopenharmony_ci					${SETUP}
7139e5c31af7Sopenharmony_ci					struct {
7140e5c31af7Sopenharmony_ci						uvec2 val;
7141e5c31af7Sopenharmony_ci					} x;
7142e5c31af7Sopenharmony_ci
7143e5c31af7Sopenharmony_ci					x.val = uvec2(2, 3);
7144e5c31af7Sopenharmony_ci
7145e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7146e5c31af7Sopenharmony_ci					${OUTPUT}
7147e5c31af7Sopenharmony_ci				}
7148e5c31af7Sopenharmony_ci			""
7149e5c31af7Sopenharmony_ci		end
7150e5c31af7Sopenharmony_ci		case int_to_uvec3
7151e5c31af7Sopenharmony_ci			version 320 es
7152e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7153e5c31af7Sopenharmony_ci			values
7154e5c31af7Sopenharmony_ci			{
7155e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7156e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(4, 5, 7) | uvec3(3, 4, 6) | uvec3(3, 4, 6) | uvec3(5, 6, 8) | uvec3(7, 8, 10) ];
7157e5c31af7Sopenharmony_ci			}
7158e5c31af7Sopenharmony_ci
7159e5c31af7Sopenharmony_ci			both ""
7160e5c31af7Sopenharmony_ci				#version 320 es
7161e5c31af7Sopenharmony_ci				precision highp float;
7162e5c31af7Sopenharmony_ci				${DECLARATIONS}
7163e5c31af7Sopenharmony_ci
7164e5c31af7Sopenharmony_ci				void main()
7165e5c31af7Sopenharmony_ci				{
7166e5c31af7Sopenharmony_ci					${SETUP}
7167e5c31af7Sopenharmony_ci					struct {
7168e5c31af7Sopenharmony_ci						uvec3 val;
7169e5c31af7Sopenharmony_ci					} x;
7170e5c31af7Sopenharmony_ci
7171e5c31af7Sopenharmony_ci					x.val = uvec3(2, 3, 5);
7172e5c31af7Sopenharmony_ci
7173e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7174e5c31af7Sopenharmony_ci					${OUTPUT}
7175e5c31af7Sopenharmony_ci				}
7176e5c31af7Sopenharmony_ci			""
7177e5c31af7Sopenharmony_ci		end
7178e5c31af7Sopenharmony_ci		case int_to_uvec4
7179e5c31af7Sopenharmony_ci			version 320 es
7180e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7181e5c31af7Sopenharmony_ci			values
7182e5c31af7Sopenharmony_ci			{
7183e5c31af7Sopenharmony_ci				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7184e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(4, 5, 7, 10) | uvec4(3, 4, 6, 9) | uvec4(3, 4, 6, 9) | uvec4(5, 6, 8, 11) | uvec4(7, 8, 10, 13) ];
7185e5c31af7Sopenharmony_ci			}
7186e5c31af7Sopenharmony_ci
7187e5c31af7Sopenharmony_ci			both ""
7188e5c31af7Sopenharmony_ci				#version 320 es
7189e5c31af7Sopenharmony_ci				precision highp float;
7190e5c31af7Sopenharmony_ci				${DECLARATIONS}
7191e5c31af7Sopenharmony_ci
7192e5c31af7Sopenharmony_ci				void main()
7193e5c31af7Sopenharmony_ci				{
7194e5c31af7Sopenharmony_ci					${SETUP}
7195e5c31af7Sopenharmony_ci					struct {
7196e5c31af7Sopenharmony_ci						uvec4 val;
7197e5c31af7Sopenharmony_ci					} x;
7198e5c31af7Sopenharmony_ci
7199e5c31af7Sopenharmony_ci					x.val = uvec4(2, 3, 5, 8);
7200e5c31af7Sopenharmony_ci
7201e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7202e5c31af7Sopenharmony_ci					${OUTPUT}
7203e5c31af7Sopenharmony_ci				}
7204e5c31af7Sopenharmony_ci			""
7205e5c31af7Sopenharmony_ci		end
7206e5c31af7Sopenharmony_ci		case uint_to_float
7207e5c31af7Sopenharmony_ci			version 320 es
7208e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7209e5c31af7Sopenharmony_ci			values
7210e5c31af7Sopenharmony_ci			{
7211e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7212e5c31af7Sopenharmony_ci				output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
7213e5c31af7Sopenharmony_ci			}
7214e5c31af7Sopenharmony_ci
7215e5c31af7Sopenharmony_ci			both ""
7216e5c31af7Sopenharmony_ci				#version 320 es
7217e5c31af7Sopenharmony_ci				precision highp float;
7218e5c31af7Sopenharmony_ci				${DECLARATIONS}
7219e5c31af7Sopenharmony_ci
7220e5c31af7Sopenharmony_ci				void main()
7221e5c31af7Sopenharmony_ci				{
7222e5c31af7Sopenharmony_ci					${SETUP}
7223e5c31af7Sopenharmony_ci					struct {
7224e5c31af7Sopenharmony_ci						float val;
7225e5c31af7Sopenharmony_ci					} x;
7226e5c31af7Sopenharmony_ci
7227e5c31af7Sopenharmony_ci					x.val = 2.0;
7228e5c31af7Sopenharmony_ci
7229e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7230e5c31af7Sopenharmony_ci					${OUTPUT}
7231e5c31af7Sopenharmony_ci				}
7232e5c31af7Sopenharmony_ci			""
7233e5c31af7Sopenharmony_ci		end
7234e5c31af7Sopenharmony_ci		case uint_to_vec2
7235e5c31af7Sopenharmony_ci			version 320 es
7236e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7237e5c31af7Sopenharmony_ci			values
7238e5c31af7Sopenharmony_ci			{
7239e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7240e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
7241e5c31af7Sopenharmony_ci			}
7242e5c31af7Sopenharmony_ci
7243e5c31af7Sopenharmony_ci			both ""
7244e5c31af7Sopenharmony_ci				#version 320 es
7245e5c31af7Sopenharmony_ci				precision highp float;
7246e5c31af7Sopenharmony_ci				${DECLARATIONS}
7247e5c31af7Sopenharmony_ci
7248e5c31af7Sopenharmony_ci				void main()
7249e5c31af7Sopenharmony_ci				{
7250e5c31af7Sopenharmony_ci					${SETUP}
7251e5c31af7Sopenharmony_ci					struct {
7252e5c31af7Sopenharmony_ci						vec2 val;
7253e5c31af7Sopenharmony_ci					} x;
7254e5c31af7Sopenharmony_ci
7255e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
7256e5c31af7Sopenharmony_ci
7257e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7258e5c31af7Sopenharmony_ci					${OUTPUT}
7259e5c31af7Sopenharmony_ci				}
7260e5c31af7Sopenharmony_ci			""
7261e5c31af7Sopenharmony_ci		end
7262e5c31af7Sopenharmony_ci		case uint_to_vec3
7263e5c31af7Sopenharmony_ci			version 320 es
7264e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7265e5c31af7Sopenharmony_ci			values
7266e5c31af7Sopenharmony_ci			{
7267e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7268e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
7269e5c31af7Sopenharmony_ci			}
7270e5c31af7Sopenharmony_ci
7271e5c31af7Sopenharmony_ci			both ""
7272e5c31af7Sopenharmony_ci				#version 320 es
7273e5c31af7Sopenharmony_ci				precision highp float;
7274e5c31af7Sopenharmony_ci				${DECLARATIONS}
7275e5c31af7Sopenharmony_ci
7276e5c31af7Sopenharmony_ci				void main()
7277e5c31af7Sopenharmony_ci				{
7278e5c31af7Sopenharmony_ci					${SETUP}
7279e5c31af7Sopenharmony_ci					struct {
7280e5c31af7Sopenharmony_ci						vec3 val;
7281e5c31af7Sopenharmony_ci					} x;
7282e5c31af7Sopenharmony_ci
7283e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
7284e5c31af7Sopenharmony_ci
7285e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7286e5c31af7Sopenharmony_ci					${OUTPUT}
7287e5c31af7Sopenharmony_ci				}
7288e5c31af7Sopenharmony_ci			""
7289e5c31af7Sopenharmony_ci		end
7290e5c31af7Sopenharmony_ci		case uint_to_vec4
7291e5c31af7Sopenharmony_ci			version 320 es
7292e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7293e5c31af7Sopenharmony_ci			values
7294e5c31af7Sopenharmony_ci			{
7295e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7296e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
7297e5c31af7Sopenharmony_ci			}
7298e5c31af7Sopenharmony_ci
7299e5c31af7Sopenharmony_ci			both ""
7300e5c31af7Sopenharmony_ci				#version 320 es
7301e5c31af7Sopenharmony_ci				precision highp float;
7302e5c31af7Sopenharmony_ci				${DECLARATIONS}
7303e5c31af7Sopenharmony_ci
7304e5c31af7Sopenharmony_ci				void main()
7305e5c31af7Sopenharmony_ci				{
7306e5c31af7Sopenharmony_ci					${SETUP}
7307e5c31af7Sopenharmony_ci					struct {
7308e5c31af7Sopenharmony_ci						vec4 val;
7309e5c31af7Sopenharmony_ci					} x;
7310e5c31af7Sopenharmony_ci
7311e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
7312e5c31af7Sopenharmony_ci
7313e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7314e5c31af7Sopenharmony_ci					${OUTPUT}
7315e5c31af7Sopenharmony_ci				}
7316e5c31af7Sopenharmony_ci			""
7317e5c31af7Sopenharmony_ci		end
7318e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
7319e5c31af7Sopenharmony_ci			version 320 es
7320e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7321e5c31af7Sopenharmony_ci			values
7322e5c31af7Sopenharmony_ci			{
7323e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
7324e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(3, 5) | uvec2(4, 4) | uvec2(5, 10) ];
7325e5c31af7Sopenharmony_ci			}
7326e5c31af7Sopenharmony_ci
7327e5c31af7Sopenharmony_ci			both ""
7328e5c31af7Sopenharmony_ci				#version 320 es
7329e5c31af7Sopenharmony_ci				precision highp float;
7330e5c31af7Sopenharmony_ci				${DECLARATIONS}
7331e5c31af7Sopenharmony_ci
7332e5c31af7Sopenharmony_ci				void main()
7333e5c31af7Sopenharmony_ci				{
7334e5c31af7Sopenharmony_ci					${SETUP}
7335e5c31af7Sopenharmony_ci					struct {
7336e5c31af7Sopenharmony_ci						uvec2 val;
7337e5c31af7Sopenharmony_ci					} x;
7338e5c31af7Sopenharmony_ci
7339e5c31af7Sopenharmony_ci					x.val = uvec2(2, 3);
7340e5c31af7Sopenharmony_ci
7341e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7342e5c31af7Sopenharmony_ci					${OUTPUT}
7343e5c31af7Sopenharmony_ci				}
7344e5c31af7Sopenharmony_ci			""
7345e5c31af7Sopenharmony_ci		end
7346e5c31af7Sopenharmony_ci		case ivec2_to_vec2
7347e5c31af7Sopenharmony_ci			version 320 es
7348e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7349e5c31af7Sopenharmony_ci			values
7350e5c31af7Sopenharmony_ci			{
7351e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
7352e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
7353e5c31af7Sopenharmony_ci			}
7354e5c31af7Sopenharmony_ci
7355e5c31af7Sopenharmony_ci			both ""
7356e5c31af7Sopenharmony_ci				#version 320 es
7357e5c31af7Sopenharmony_ci				precision highp float;
7358e5c31af7Sopenharmony_ci				${DECLARATIONS}
7359e5c31af7Sopenharmony_ci
7360e5c31af7Sopenharmony_ci				void main()
7361e5c31af7Sopenharmony_ci				{
7362e5c31af7Sopenharmony_ci					${SETUP}
7363e5c31af7Sopenharmony_ci					struct {
7364e5c31af7Sopenharmony_ci						vec2 val;
7365e5c31af7Sopenharmony_ci					} x;
7366e5c31af7Sopenharmony_ci
7367e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
7368e5c31af7Sopenharmony_ci
7369e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7370e5c31af7Sopenharmony_ci					${OUTPUT}
7371e5c31af7Sopenharmony_ci				}
7372e5c31af7Sopenharmony_ci			""
7373e5c31af7Sopenharmony_ci		end
7374e5c31af7Sopenharmony_ci		case uvec2_to_vec2
7375e5c31af7Sopenharmony_ci			version 320 es
7376e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7377e5c31af7Sopenharmony_ci			values
7378e5c31af7Sopenharmony_ci			{
7379e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
7380e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
7381e5c31af7Sopenharmony_ci			}
7382e5c31af7Sopenharmony_ci
7383e5c31af7Sopenharmony_ci			both ""
7384e5c31af7Sopenharmony_ci				#version 320 es
7385e5c31af7Sopenharmony_ci				precision highp float;
7386e5c31af7Sopenharmony_ci				${DECLARATIONS}
7387e5c31af7Sopenharmony_ci
7388e5c31af7Sopenharmony_ci				void main()
7389e5c31af7Sopenharmony_ci				{
7390e5c31af7Sopenharmony_ci					${SETUP}
7391e5c31af7Sopenharmony_ci					struct {
7392e5c31af7Sopenharmony_ci						vec2 val;
7393e5c31af7Sopenharmony_ci					} x;
7394e5c31af7Sopenharmony_ci
7395e5c31af7Sopenharmony_ci					x.val = vec2(1.0, 2.0);
7396e5c31af7Sopenharmony_ci
7397e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7398e5c31af7Sopenharmony_ci					${OUTPUT}
7399e5c31af7Sopenharmony_ci				}
7400e5c31af7Sopenharmony_ci			""
7401e5c31af7Sopenharmony_ci		end
7402e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
7403e5c31af7Sopenharmony_ci			version 320 es
7404e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7405e5c31af7Sopenharmony_ci			values
7406e5c31af7Sopenharmony_ci			{
7407e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
7408e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(3, 5, 8) | uvec3(4, 4, 7) | uvec3(5, 10, 7) ];
7409e5c31af7Sopenharmony_ci			}
7410e5c31af7Sopenharmony_ci
7411e5c31af7Sopenharmony_ci			both ""
7412e5c31af7Sopenharmony_ci				#version 320 es
7413e5c31af7Sopenharmony_ci				precision highp float;
7414e5c31af7Sopenharmony_ci				${DECLARATIONS}
7415e5c31af7Sopenharmony_ci
7416e5c31af7Sopenharmony_ci				void main()
7417e5c31af7Sopenharmony_ci				{
7418e5c31af7Sopenharmony_ci					${SETUP}
7419e5c31af7Sopenharmony_ci					struct {
7420e5c31af7Sopenharmony_ci						uvec3 val;
7421e5c31af7Sopenharmony_ci					} x;
7422e5c31af7Sopenharmony_ci
7423e5c31af7Sopenharmony_ci					x.val = uvec3(2, 3, 5);
7424e5c31af7Sopenharmony_ci
7425e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7426e5c31af7Sopenharmony_ci					${OUTPUT}
7427e5c31af7Sopenharmony_ci				}
7428e5c31af7Sopenharmony_ci			""
7429e5c31af7Sopenharmony_ci		end
7430e5c31af7Sopenharmony_ci		case ivec3_to_vec3
7431e5c31af7Sopenharmony_ci			version 320 es
7432e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7433e5c31af7Sopenharmony_ci			values
7434e5c31af7Sopenharmony_ci			{
7435e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
7436e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
7437e5c31af7Sopenharmony_ci			}
7438e5c31af7Sopenharmony_ci
7439e5c31af7Sopenharmony_ci			both ""
7440e5c31af7Sopenharmony_ci				#version 320 es
7441e5c31af7Sopenharmony_ci				precision highp float;
7442e5c31af7Sopenharmony_ci				${DECLARATIONS}
7443e5c31af7Sopenharmony_ci
7444e5c31af7Sopenharmony_ci				void main()
7445e5c31af7Sopenharmony_ci				{
7446e5c31af7Sopenharmony_ci					${SETUP}
7447e5c31af7Sopenharmony_ci					struct {
7448e5c31af7Sopenharmony_ci						vec3 val;
7449e5c31af7Sopenharmony_ci					} x;
7450e5c31af7Sopenharmony_ci
7451e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
7452e5c31af7Sopenharmony_ci
7453e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7454e5c31af7Sopenharmony_ci					${OUTPUT}
7455e5c31af7Sopenharmony_ci				}
7456e5c31af7Sopenharmony_ci			""
7457e5c31af7Sopenharmony_ci		end
7458e5c31af7Sopenharmony_ci		case uvec3_to_vec3
7459e5c31af7Sopenharmony_ci			version 320 es
7460e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7461e5c31af7Sopenharmony_ci			values
7462e5c31af7Sopenharmony_ci			{
7463e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
7464e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
7465e5c31af7Sopenharmony_ci			}
7466e5c31af7Sopenharmony_ci
7467e5c31af7Sopenharmony_ci			both ""
7468e5c31af7Sopenharmony_ci				#version 320 es
7469e5c31af7Sopenharmony_ci				precision highp float;
7470e5c31af7Sopenharmony_ci				${DECLARATIONS}
7471e5c31af7Sopenharmony_ci
7472e5c31af7Sopenharmony_ci				void main()
7473e5c31af7Sopenharmony_ci				{
7474e5c31af7Sopenharmony_ci					${SETUP}
7475e5c31af7Sopenharmony_ci					struct {
7476e5c31af7Sopenharmony_ci						vec3 val;
7477e5c31af7Sopenharmony_ci					} x;
7478e5c31af7Sopenharmony_ci
7479e5c31af7Sopenharmony_ci					x.val = vec3(1.0, 2.0, 3.0);
7480e5c31af7Sopenharmony_ci
7481e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7482e5c31af7Sopenharmony_ci					${OUTPUT}
7483e5c31af7Sopenharmony_ci				}
7484e5c31af7Sopenharmony_ci			""
7485e5c31af7Sopenharmony_ci		end
7486e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
7487e5c31af7Sopenharmony_ci			version 320 es
7488e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7489e5c31af7Sopenharmony_ci			values
7490e5c31af7Sopenharmony_ci			{
7491e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
7492e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(3, 5, 8, 12) | uvec4(4, 4, 7, 14) | uvec4(5, 10, 7, 13) ];
7493e5c31af7Sopenharmony_ci			}
7494e5c31af7Sopenharmony_ci
7495e5c31af7Sopenharmony_ci			both ""
7496e5c31af7Sopenharmony_ci				#version 320 es
7497e5c31af7Sopenharmony_ci				precision highp float;
7498e5c31af7Sopenharmony_ci				${DECLARATIONS}
7499e5c31af7Sopenharmony_ci
7500e5c31af7Sopenharmony_ci				void main()
7501e5c31af7Sopenharmony_ci				{
7502e5c31af7Sopenharmony_ci					${SETUP}
7503e5c31af7Sopenharmony_ci					struct {
7504e5c31af7Sopenharmony_ci						uvec4 val;
7505e5c31af7Sopenharmony_ci					} x;
7506e5c31af7Sopenharmony_ci
7507e5c31af7Sopenharmony_ci					x.val = uvec4(2, 3, 5, 8);
7508e5c31af7Sopenharmony_ci
7509e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7510e5c31af7Sopenharmony_ci					${OUTPUT}
7511e5c31af7Sopenharmony_ci				}
7512e5c31af7Sopenharmony_ci			""
7513e5c31af7Sopenharmony_ci		end
7514e5c31af7Sopenharmony_ci		case ivec4_to_vec4
7515e5c31af7Sopenharmony_ci			version 320 es
7516e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7517e5c31af7Sopenharmony_ci			values
7518e5c31af7Sopenharmony_ci			{
7519e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
7520e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
7521e5c31af7Sopenharmony_ci			}
7522e5c31af7Sopenharmony_ci
7523e5c31af7Sopenharmony_ci			both ""
7524e5c31af7Sopenharmony_ci				#version 320 es
7525e5c31af7Sopenharmony_ci				precision highp float;
7526e5c31af7Sopenharmony_ci				${DECLARATIONS}
7527e5c31af7Sopenharmony_ci
7528e5c31af7Sopenharmony_ci				void main()
7529e5c31af7Sopenharmony_ci				{
7530e5c31af7Sopenharmony_ci					${SETUP}
7531e5c31af7Sopenharmony_ci					struct {
7532e5c31af7Sopenharmony_ci						vec4 val;
7533e5c31af7Sopenharmony_ci					} x;
7534e5c31af7Sopenharmony_ci
7535e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
7536e5c31af7Sopenharmony_ci
7537e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7538e5c31af7Sopenharmony_ci					${OUTPUT}
7539e5c31af7Sopenharmony_ci				}
7540e5c31af7Sopenharmony_ci			""
7541e5c31af7Sopenharmony_ci		end
7542e5c31af7Sopenharmony_ci		case uvec4_to_vec4
7543e5c31af7Sopenharmony_ci			version 320 es
7544e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7545e5c31af7Sopenharmony_ci			values
7546e5c31af7Sopenharmony_ci			{
7547e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
7548e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
7549e5c31af7Sopenharmony_ci			}
7550e5c31af7Sopenharmony_ci
7551e5c31af7Sopenharmony_ci			both ""
7552e5c31af7Sopenharmony_ci				#version 320 es
7553e5c31af7Sopenharmony_ci				precision highp float;
7554e5c31af7Sopenharmony_ci				${DECLARATIONS}
7555e5c31af7Sopenharmony_ci
7556e5c31af7Sopenharmony_ci				void main()
7557e5c31af7Sopenharmony_ci				{
7558e5c31af7Sopenharmony_ci					${SETUP}
7559e5c31af7Sopenharmony_ci					struct {
7560e5c31af7Sopenharmony_ci						vec4 val;
7561e5c31af7Sopenharmony_ci					} x;
7562e5c31af7Sopenharmony_ci
7563e5c31af7Sopenharmony_ci					x.val = vec4(1.0, 2.0, 3.0, 4.0);
7564e5c31af7Sopenharmony_ci
7565e5c31af7Sopenharmony_ci					out0 = x.val + in0;
7566e5c31af7Sopenharmony_ci					${OUTPUT}
7567e5c31af7Sopenharmony_ci				}
7568e5c31af7Sopenharmony_ci			""
7569e5c31af7Sopenharmony_ci		end
7570e5c31af7Sopenharmony_ci
7571e5c31af7Sopenharmony_ci	end # field_before_input
7572e5c31af7Sopenharmony_ci
7573e5c31af7Sopenharmony_ciend # struct_fields
7574e5c31af7Sopenharmony_cigroup parenthesized_expressions "Parenthesized expressions"
7575e5c31af7Sopenharmony_ci
7576e5c31af7Sopenharmony_ci	group paren_expr_before_literal "Parenthesized expression before literal"
7577e5c31af7Sopenharmony_ci
7578e5c31af7Sopenharmony_ci		group input_in_parens "Input variable in parenthesized expression"
7579e5c31af7Sopenharmony_ci
7580e5c31af7Sopenharmony_ci			case int_to_float
7581e5c31af7Sopenharmony_ci				version 320 es
7582e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7583e5c31af7Sopenharmony_ci				values
7584e5c31af7Sopenharmony_ci				{
7585e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7586e5c31af7Sopenharmony_ci					output float out0 = [ 6.0 | 4.0 | 4.0 | 8.0 | 12.0 ];
7587e5c31af7Sopenharmony_ci				}
7588e5c31af7Sopenharmony_ci
7589e5c31af7Sopenharmony_ci				both ""
7590e5c31af7Sopenharmony_ci					#version 320 es
7591e5c31af7Sopenharmony_ci					precision highp float;
7592e5c31af7Sopenharmony_ci					${DECLARATIONS}
7593e5c31af7Sopenharmony_ci
7594e5c31af7Sopenharmony_ci					void main()
7595e5c31af7Sopenharmony_ci					{
7596e5c31af7Sopenharmony_ci						${SETUP}
7597e5c31af7Sopenharmony_ci						out0 = (in0 + 1.0) * 2.0;
7598e5c31af7Sopenharmony_ci						${OUTPUT}
7599e5c31af7Sopenharmony_ci					}
7600e5c31af7Sopenharmony_ci				""
7601e5c31af7Sopenharmony_ci			end
7602e5c31af7Sopenharmony_ci			case int_to_uint
7603e5c31af7Sopenharmony_ci				version 320 es
7604e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7605e5c31af7Sopenharmony_ci				values
7606e5c31af7Sopenharmony_ci				{
7607e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7608e5c31af7Sopenharmony_ci					output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
7609e5c31af7Sopenharmony_ci				}
7610e5c31af7Sopenharmony_ci
7611e5c31af7Sopenharmony_ci				both ""
7612e5c31af7Sopenharmony_ci					#version 320 es
7613e5c31af7Sopenharmony_ci					precision highp float;
7614e5c31af7Sopenharmony_ci					${DECLARATIONS}
7615e5c31af7Sopenharmony_ci
7616e5c31af7Sopenharmony_ci					void main()
7617e5c31af7Sopenharmony_ci					{
7618e5c31af7Sopenharmony_ci						${SETUP}
7619e5c31af7Sopenharmony_ci						out0 = (in0 + 3) * 1;
7620e5c31af7Sopenharmony_ci						${OUTPUT}
7621e5c31af7Sopenharmony_ci					}
7622e5c31af7Sopenharmony_ci				""
7623e5c31af7Sopenharmony_ci			end
7624e5c31af7Sopenharmony_ci			case int_to_vec2
7625e5c31af7Sopenharmony_ci				version 320 es
7626e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7627e5c31af7Sopenharmony_ci				values
7628e5c31af7Sopenharmony_ci				{
7629e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7630e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(4.0, 6.0) | vec2(3.0, 4.0) | vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(7.0, 12.0) ];
7631e5c31af7Sopenharmony_ci				}
7632e5c31af7Sopenharmony_ci
7633e5c31af7Sopenharmony_ci				both ""
7634e5c31af7Sopenharmony_ci					#version 320 es
7635e5c31af7Sopenharmony_ci					precision highp float;
7636e5c31af7Sopenharmony_ci					${DECLARATIONS}
7637e5c31af7Sopenharmony_ci
7638e5c31af7Sopenharmony_ci					void main()
7639e5c31af7Sopenharmony_ci					{
7640e5c31af7Sopenharmony_ci						${SETUP}
7641e5c31af7Sopenharmony_ci						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
7642e5c31af7Sopenharmony_ci						${OUTPUT}
7643e5c31af7Sopenharmony_ci					}
7644e5c31af7Sopenharmony_ci				""
7645e5c31af7Sopenharmony_ci			end
7646e5c31af7Sopenharmony_ci			case int_to_vec3
7647e5c31af7Sopenharmony_ci				version 320 es
7648e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7649e5c31af7Sopenharmony_ci				values
7650e5c31af7Sopenharmony_ci				{
7651e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7652e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(4.0, 6.0, 12.0) | vec3(3.0, 4.0, 9.0) | vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(7.0, 12.0, 21.0) ];
7653e5c31af7Sopenharmony_ci				}
7654e5c31af7Sopenharmony_ci
7655e5c31af7Sopenharmony_ci				both ""
7656e5c31af7Sopenharmony_ci					#version 320 es
7657e5c31af7Sopenharmony_ci					precision highp float;
7658e5c31af7Sopenharmony_ci					${DECLARATIONS}
7659e5c31af7Sopenharmony_ci
7660e5c31af7Sopenharmony_ci					void main()
7661e5c31af7Sopenharmony_ci					{
7662e5c31af7Sopenharmony_ci						${SETUP}
7663e5c31af7Sopenharmony_ci						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
7664e5c31af7Sopenharmony_ci						${OUTPUT}
7665e5c31af7Sopenharmony_ci					}
7666e5c31af7Sopenharmony_ci				""
7667e5c31af7Sopenharmony_ci			end
7668e5c31af7Sopenharmony_ci			case int_to_vec4
7669e5c31af7Sopenharmony_ci				version 320 es
7670e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7671e5c31af7Sopenharmony_ci				values
7672e5c31af7Sopenharmony_ci				{
7673e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7674e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(4.0, 6.0, 12.0, 32.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(7.0, 12.0, 21.0, 44.0) ];
7675e5c31af7Sopenharmony_ci				}
7676e5c31af7Sopenharmony_ci
7677e5c31af7Sopenharmony_ci				both ""
7678e5c31af7Sopenharmony_ci					#version 320 es
7679e5c31af7Sopenharmony_ci					precision highp float;
7680e5c31af7Sopenharmony_ci					${DECLARATIONS}
7681e5c31af7Sopenharmony_ci
7682e5c31af7Sopenharmony_ci					void main()
7683e5c31af7Sopenharmony_ci					{
7684e5c31af7Sopenharmony_ci						${SETUP}
7685e5c31af7Sopenharmony_ci						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
7686e5c31af7Sopenharmony_ci						${OUTPUT}
7687e5c31af7Sopenharmony_ci					}
7688e5c31af7Sopenharmony_ci				""
7689e5c31af7Sopenharmony_ci			end
7690e5c31af7Sopenharmony_ci			case int_to_uvec2
7691e5c31af7Sopenharmony_ci				version 320 es
7692e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7693e5c31af7Sopenharmony_ci				values
7694e5c31af7Sopenharmony_ci				{
7695e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7696e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(12, 24) | uvec2(10, 21) | uvec2(10, 21) | uvec2(14, 27) | uvec2(18, 33) ];
7697e5c31af7Sopenharmony_ci				}
7698e5c31af7Sopenharmony_ci
7699e5c31af7Sopenharmony_ci				both ""
7700e5c31af7Sopenharmony_ci					#version 320 es
7701e5c31af7Sopenharmony_ci					precision highp float;
7702e5c31af7Sopenharmony_ci					${DECLARATIONS}
7703e5c31af7Sopenharmony_ci
7704e5c31af7Sopenharmony_ci					void main()
7705e5c31af7Sopenharmony_ci					{
7706e5c31af7Sopenharmony_ci						${SETUP}
7707e5c31af7Sopenharmony_ci						out0 = (in0 + ivec2(4, 6)) * ivec2(2, 3);
7708e5c31af7Sopenharmony_ci						${OUTPUT}
7709e5c31af7Sopenharmony_ci					}
7710e5c31af7Sopenharmony_ci				""
7711e5c31af7Sopenharmony_ci			end
7712e5c31af7Sopenharmony_ci			case int_to_uvec3
7713e5c31af7Sopenharmony_ci				version 320 es
7714e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7715e5c31af7Sopenharmony_ci				values
7716e5c31af7Sopenharmony_ci				{
7717e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7718e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(12, 24, 20) | uvec3(10, 21, 15) | uvec3(10, 21, 15) | uvec3(14, 27, 25) | uvec3(18, 33, 35) ];
7719e5c31af7Sopenharmony_ci				}
7720e5c31af7Sopenharmony_ci
7721e5c31af7Sopenharmony_ci				both ""
7722e5c31af7Sopenharmony_ci					#version 320 es
7723e5c31af7Sopenharmony_ci					precision highp float;
7724e5c31af7Sopenharmony_ci					${DECLARATIONS}
7725e5c31af7Sopenharmony_ci
7726e5c31af7Sopenharmony_ci					void main()
7727e5c31af7Sopenharmony_ci					{
7728e5c31af7Sopenharmony_ci						${SETUP}
7729e5c31af7Sopenharmony_ci						out0 = (in0 + ivec3(4, 6, 2)) * ivec3(2, 3, 5);
7730e5c31af7Sopenharmony_ci						${OUTPUT}
7731e5c31af7Sopenharmony_ci					}
7732e5c31af7Sopenharmony_ci				""
7733e5c31af7Sopenharmony_ci			end
7734e5c31af7Sopenharmony_ci			case int_to_uvec4
7735e5c31af7Sopenharmony_ci				version 320 es
7736e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7737e5c31af7Sopenharmony_ci				values
7738e5c31af7Sopenharmony_ci				{
7739e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
7740e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(12, 24, 20, 88) | uvec4(10, 21, 15, 80) | uvec4(10, 21, 15, 80) | uvec4(14, 27, 25, 96) | uvec4(18, 33, 35, 112) ];
7741e5c31af7Sopenharmony_ci				}
7742e5c31af7Sopenharmony_ci
7743e5c31af7Sopenharmony_ci				both ""
7744e5c31af7Sopenharmony_ci					#version 320 es
7745e5c31af7Sopenharmony_ci					precision highp float;
7746e5c31af7Sopenharmony_ci					${DECLARATIONS}
7747e5c31af7Sopenharmony_ci
7748e5c31af7Sopenharmony_ci					void main()
7749e5c31af7Sopenharmony_ci					{
7750e5c31af7Sopenharmony_ci						${SETUP}
7751e5c31af7Sopenharmony_ci						out0 = (in0 + ivec4(4, 6, 2, 9)) * ivec4(2, 3, 5, 8);
7752e5c31af7Sopenharmony_ci						${OUTPUT}
7753e5c31af7Sopenharmony_ci					}
7754e5c31af7Sopenharmony_ci				""
7755e5c31af7Sopenharmony_ci			end
7756e5c31af7Sopenharmony_ci			case uint_to_float
7757e5c31af7Sopenharmony_ci				version 320 es
7758e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7759e5c31af7Sopenharmony_ci				values
7760e5c31af7Sopenharmony_ci				{
7761e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7762e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 8.0 | 10.0 | 16.0 | 24.0 ];
7763e5c31af7Sopenharmony_ci				}
7764e5c31af7Sopenharmony_ci
7765e5c31af7Sopenharmony_ci				both ""
7766e5c31af7Sopenharmony_ci					#version 320 es
7767e5c31af7Sopenharmony_ci					precision highp float;
7768e5c31af7Sopenharmony_ci					${DECLARATIONS}
7769e5c31af7Sopenharmony_ci
7770e5c31af7Sopenharmony_ci					void main()
7771e5c31af7Sopenharmony_ci					{
7772e5c31af7Sopenharmony_ci						${SETUP}
7773e5c31af7Sopenharmony_ci						out0 = (in0 + 1.0) * 2.0;
7774e5c31af7Sopenharmony_ci						${OUTPUT}
7775e5c31af7Sopenharmony_ci					}
7776e5c31af7Sopenharmony_ci				""
7777e5c31af7Sopenharmony_ci			end
7778e5c31af7Sopenharmony_ci			case uint_to_vec2
7779e5c31af7Sopenharmony_ci				version 320 es
7780e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7781e5c31af7Sopenharmony_ci				values
7782e5c31af7Sopenharmony_ci				{
7783e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7784e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(6.0, 10.0) | vec2(9.0, 16.0) | vec2(13.0, 24.0) ];
7785e5c31af7Sopenharmony_ci				}
7786e5c31af7Sopenharmony_ci
7787e5c31af7Sopenharmony_ci				both ""
7788e5c31af7Sopenharmony_ci					#version 320 es
7789e5c31af7Sopenharmony_ci					precision highp float;
7790e5c31af7Sopenharmony_ci					${DECLARATIONS}
7791e5c31af7Sopenharmony_ci
7792e5c31af7Sopenharmony_ci					void main()
7793e5c31af7Sopenharmony_ci					{
7794e5c31af7Sopenharmony_ci						${SETUP}
7795e5c31af7Sopenharmony_ci						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
7796e5c31af7Sopenharmony_ci						${OUTPUT}
7797e5c31af7Sopenharmony_ci					}
7798e5c31af7Sopenharmony_ci				""
7799e5c31af7Sopenharmony_ci			end
7800e5c31af7Sopenharmony_ci			case uint_to_vec3
7801e5c31af7Sopenharmony_ci				version 320 es
7802e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7803e5c31af7Sopenharmony_ci				values
7804e5c31af7Sopenharmony_ci				{
7805e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7806e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(6.0, 10.0, 18.0) | vec3(9.0, 16.0, 27.0) | vec3(13.0, 24.0, 39.0) ];
7807e5c31af7Sopenharmony_ci				}
7808e5c31af7Sopenharmony_ci
7809e5c31af7Sopenharmony_ci				both ""
7810e5c31af7Sopenharmony_ci					#version 320 es
7811e5c31af7Sopenharmony_ci					precision highp float;
7812e5c31af7Sopenharmony_ci					${DECLARATIONS}
7813e5c31af7Sopenharmony_ci
7814e5c31af7Sopenharmony_ci					void main()
7815e5c31af7Sopenharmony_ci					{
7816e5c31af7Sopenharmony_ci						${SETUP}
7817e5c31af7Sopenharmony_ci						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
7818e5c31af7Sopenharmony_ci						${OUTPUT}
7819e5c31af7Sopenharmony_ci					}
7820e5c31af7Sopenharmony_ci				""
7821e5c31af7Sopenharmony_ci			end
7822e5c31af7Sopenharmony_ci			case uint_to_vec4
7823e5c31af7Sopenharmony_ci				version 320 es
7824e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7825e5c31af7Sopenharmony_ci				values
7826e5c31af7Sopenharmony_ci				{
7827e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
7828e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(6.0, 10.0, 18.0, 40.0) | vec4(9.0, 16.0, 27.0, 52.0) | vec4(13.0, 24.0, 39.0, 68.0) ];
7829e5c31af7Sopenharmony_ci				}
7830e5c31af7Sopenharmony_ci
7831e5c31af7Sopenharmony_ci				both ""
7832e5c31af7Sopenharmony_ci					#version 320 es
7833e5c31af7Sopenharmony_ci					precision highp float;
7834e5c31af7Sopenharmony_ci					${DECLARATIONS}
7835e5c31af7Sopenharmony_ci
7836e5c31af7Sopenharmony_ci					void main()
7837e5c31af7Sopenharmony_ci					{
7838e5c31af7Sopenharmony_ci						${SETUP}
7839e5c31af7Sopenharmony_ci						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
7840e5c31af7Sopenharmony_ci						${OUTPUT}
7841e5c31af7Sopenharmony_ci					}
7842e5c31af7Sopenharmony_ci				""
7843e5c31af7Sopenharmony_ci			end
7844e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
7845e5c31af7Sopenharmony_ci				version 320 es
7846e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7847e5c31af7Sopenharmony_ci				values
7848e5c31af7Sopenharmony_ci				{
7849e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
7850e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(10, 24) | uvec2(12, 21) | uvec2(14, 39) ];
7851e5c31af7Sopenharmony_ci				}
7852e5c31af7Sopenharmony_ci
7853e5c31af7Sopenharmony_ci				both ""
7854e5c31af7Sopenharmony_ci					#version 320 es
7855e5c31af7Sopenharmony_ci					precision highp float;
7856e5c31af7Sopenharmony_ci					${DECLARATIONS}
7857e5c31af7Sopenharmony_ci
7858e5c31af7Sopenharmony_ci					void main()
7859e5c31af7Sopenharmony_ci					{
7860e5c31af7Sopenharmony_ci						${SETUP}
7861e5c31af7Sopenharmony_ci						out0 = (in0 + ivec2(4, 6)) * ivec2(2, 3);
7862e5c31af7Sopenharmony_ci						${OUTPUT}
7863e5c31af7Sopenharmony_ci					}
7864e5c31af7Sopenharmony_ci				""
7865e5c31af7Sopenharmony_ci			end
7866e5c31af7Sopenharmony_ci			case ivec2_to_vec2
7867e5c31af7Sopenharmony_ci				version 320 es
7868e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7869e5c31af7Sopenharmony_ci				values
7870e5c31af7Sopenharmony_ci				{
7871e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
7872e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(4.0, 4.0) | vec2(5.0, 16.0) ];
7873e5c31af7Sopenharmony_ci				}
7874e5c31af7Sopenharmony_ci
7875e5c31af7Sopenharmony_ci				both ""
7876e5c31af7Sopenharmony_ci					#version 320 es
7877e5c31af7Sopenharmony_ci					precision highp float;
7878e5c31af7Sopenharmony_ci					${DECLARATIONS}
7879e5c31af7Sopenharmony_ci
7880e5c31af7Sopenharmony_ci					void main()
7881e5c31af7Sopenharmony_ci					{
7882e5c31af7Sopenharmony_ci						${SETUP}
7883e5c31af7Sopenharmony_ci						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
7884e5c31af7Sopenharmony_ci						${OUTPUT}
7885e5c31af7Sopenharmony_ci					}
7886e5c31af7Sopenharmony_ci				""
7887e5c31af7Sopenharmony_ci			end
7888e5c31af7Sopenharmony_ci			case uvec2_to_vec2
7889e5c31af7Sopenharmony_ci				version 320 es
7890e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7891e5c31af7Sopenharmony_ci				values
7892e5c31af7Sopenharmony_ci				{
7893e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
7894e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(4.0, 8.0) | vec2(6.0, 14.0) | vec2(3.0, 28.0) ];
7895e5c31af7Sopenharmony_ci				}
7896e5c31af7Sopenharmony_ci
7897e5c31af7Sopenharmony_ci				both ""
7898e5c31af7Sopenharmony_ci					#version 320 es
7899e5c31af7Sopenharmony_ci					precision highp float;
7900e5c31af7Sopenharmony_ci					${DECLARATIONS}
7901e5c31af7Sopenharmony_ci
7902e5c31af7Sopenharmony_ci					void main()
7903e5c31af7Sopenharmony_ci					{
7904e5c31af7Sopenharmony_ci						${SETUP}
7905e5c31af7Sopenharmony_ci						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
7906e5c31af7Sopenharmony_ci						${OUTPUT}
7907e5c31af7Sopenharmony_ci					}
7908e5c31af7Sopenharmony_ci				""
7909e5c31af7Sopenharmony_ci			end
7910e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
7911e5c31af7Sopenharmony_ci				version 320 es
7912e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7913e5c31af7Sopenharmony_ci				values
7914e5c31af7Sopenharmony_ci				{
7915e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
7916e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(10, 24, 25) | uvec3(12, 21, 20) | uvec3(14, 39, 20) ];
7917e5c31af7Sopenharmony_ci				}
7918e5c31af7Sopenharmony_ci
7919e5c31af7Sopenharmony_ci				both ""
7920e5c31af7Sopenharmony_ci					#version 320 es
7921e5c31af7Sopenharmony_ci					precision highp float;
7922e5c31af7Sopenharmony_ci					${DECLARATIONS}
7923e5c31af7Sopenharmony_ci
7924e5c31af7Sopenharmony_ci					void main()
7925e5c31af7Sopenharmony_ci					{
7926e5c31af7Sopenharmony_ci						${SETUP}
7927e5c31af7Sopenharmony_ci						out0 = (in0 + ivec3(4, 6, 2)) * ivec3(2, 3, 5);
7928e5c31af7Sopenharmony_ci						${OUTPUT}
7929e5c31af7Sopenharmony_ci					}
7930e5c31af7Sopenharmony_ci				""
7931e5c31af7Sopenharmony_ci			end
7932e5c31af7Sopenharmony_ci			case ivec3_to_vec3
7933e5c31af7Sopenharmony_ci				version 320 es
7934e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7935e5c31af7Sopenharmony_ci				values
7936e5c31af7Sopenharmony_ci				{
7937e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
7938e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(4.0, 4.0, 12.0) | vec3(5.0, 16.0, 12.0) ];
7939e5c31af7Sopenharmony_ci				}
7940e5c31af7Sopenharmony_ci
7941e5c31af7Sopenharmony_ci				both ""
7942e5c31af7Sopenharmony_ci					#version 320 es
7943e5c31af7Sopenharmony_ci					precision highp float;
7944e5c31af7Sopenharmony_ci					${DECLARATIONS}
7945e5c31af7Sopenharmony_ci
7946e5c31af7Sopenharmony_ci					void main()
7947e5c31af7Sopenharmony_ci					{
7948e5c31af7Sopenharmony_ci						${SETUP}
7949e5c31af7Sopenharmony_ci						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
7950e5c31af7Sopenharmony_ci						${OUTPUT}
7951e5c31af7Sopenharmony_ci					}
7952e5c31af7Sopenharmony_ci				""
7953e5c31af7Sopenharmony_ci			end
7954e5c31af7Sopenharmony_ci			case uvec3_to_vec3
7955e5c31af7Sopenharmony_ci				version 320 es
7956e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7957e5c31af7Sopenharmony_ci				values
7958e5c31af7Sopenharmony_ci				{
7959e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
7960e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(4.0, 8.0, 21.0) | vec3(6.0, 14.0, 12.0) | vec3(3.0, 28.0, 27.0) ];
7961e5c31af7Sopenharmony_ci				}
7962e5c31af7Sopenharmony_ci
7963e5c31af7Sopenharmony_ci				both ""
7964e5c31af7Sopenharmony_ci					#version 320 es
7965e5c31af7Sopenharmony_ci					precision highp float;
7966e5c31af7Sopenharmony_ci					${DECLARATIONS}
7967e5c31af7Sopenharmony_ci
7968e5c31af7Sopenharmony_ci					void main()
7969e5c31af7Sopenharmony_ci					{
7970e5c31af7Sopenharmony_ci						${SETUP}
7971e5c31af7Sopenharmony_ci						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
7972e5c31af7Sopenharmony_ci						${OUTPUT}
7973e5c31af7Sopenharmony_ci					}
7974e5c31af7Sopenharmony_ci				""
7975e5c31af7Sopenharmony_ci			end
7976e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
7977e5c31af7Sopenharmony_ci				version 320 es
7978e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
7979e5c31af7Sopenharmony_ci				values
7980e5c31af7Sopenharmony_ci				{
7981e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
7982e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(10, 24, 25, 104) | uvec4(12, 21, 20, 120) | uvec4(14, 39, 20, 112) ];
7983e5c31af7Sopenharmony_ci				}
7984e5c31af7Sopenharmony_ci
7985e5c31af7Sopenharmony_ci				both ""
7986e5c31af7Sopenharmony_ci					#version 320 es
7987e5c31af7Sopenharmony_ci					precision highp float;
7988e5c31af7Sopenharmony_ci					${DECLARATIONS}
7989e5c31af7Sopenharmony_ci
7990e5c31af7Sopenharmony_ci					void main()
7991e5c31af7Sopenharmony_ci					{
7992e5c31af7Sopenharmony_ci						${SETUP}
7993e5c31af7Sopenharmony_ci						out0 = (in0 + ivec4(4, 6, 2, 9)) * ivec4(2, 3, 5, 8);
7994e5c31af7Sopenharmony_ci						${OUTPUT}
7995e5c31af7Sopenharmony_ci					}
7996e5c31af7Sopenharmony_ci				""
7997e5c31af7Sopenharmony_ci			end
7998e5c31af7Sopenharmony_ci			case ivec4_to_vec4
7999e5c31af7Sopenharmony_ci				version 320 es
8000e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8001e5c31af7Sopenharmony_ci				values
8002e5c31af7Sopenharmony_ci				{
8003e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
8004e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(4.0, 4.0, 12.0, 48.0) | vec4(5.0, 16.0, 12.0, 44.0) ];
8005e5c31af7Sopenharmony_ci				}
8006e5c31af7Sopenharmony_ci
8007e5c31af7Sopenharmony_ci				both ""
8008e5c31af7Sopenharmony_ci					#version 320 es
8009e5c31af7Sopenharmony_ci					precision highp float;
8010e5c31af7Sopenharmony_ci					${DECLARATIONS}
8011e5c31af7Sopenharmony_ci
8012e5c31af7Sopenharmony_ci					void main()
8013e5c31af7Sopenharmony_ci					{
8014e5c31af7Sopenharmony_ci						${SETUP}
8015e5c31af7Sopenharmony_ci						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
8016e5c31af7Sopenharmony_ci						${OUTPUT}
8017e5c31af7Sopenharmony_ci					}
8018e5c31af7Sopenharmony_ci				""
8019e5c31af7Sopenharmony_ci			end
8020e5c31af7Sopenharmony_ci			case uvec4_to_vec4
8021e5c31af7Sopenharmony_ci				version 320 es
8022e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8023e5c31af7Sopenharmony_ci				values
8024e5c31af7Sopenharmony_ci				{
8025e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
8026e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(4.0, 8.0, 21.0, 56.0) | vec4(6.0, 14.0, 12.0, 60.0) | vec4(3.0, 28.0, 27.0, 40.0) ];
8027e5c31af7Sopenharmony_ci				}
8028e5c31af7Sopenharmony_ci
8029e5c31af7Sopenharmony_ci				both ""
8030e5c31af7Sopenharmony_ci					#version 320 es
8031e5c31af7Sopenharmony_ci					precision highp float;
8032e5c31af7Sopenharmony_ci					${DECLARATIONS}
8033e5c31af7Sopenharmony_ci
8034e5c31af7Sopenharmony_ci					void main()
8035e5c31af7Sopenharmony_ci					{
8036e5c31af7Sopenharmony_ci						${SETUP}
8037e5c31af7Sopenharmony_ci						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
8038e5c31af7Sopenharmony_ci						${OUTPUT}
8039e5c31af7Sopenharmony_ci					}
8040e5c31af7Sopenharmony_ci				""
8041e5c31af7Sopenharmony_ci			end
8042e5c31af7Sopenharmony_ci
8043e5c31af7Sopenharmony_ci		end # input_in_parens
8044e5c31af7Sopenharmony_ci		group input_outside_parens "Input variable outside parenthesized expression"
8045e5c31af7Sopenharmony_ci
8046e5c31af7Sopenharmony_ci			case int_to_float
8047e5c31af7Sopenharmony_ci				version 320 es
8048e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8049e5c31af7Sopenharmony_ci				values
8050e5c31af7Sopenharmony_ci				{
8051e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8052e5c31af7Sopenharmony_ci					output float out0 = [ 6.0 | 3.0 | 3.0 | 9.0 | 15.0 ];
8053e5c31af7Sopenharmony_ci				}
8054e5c31af7Sopenharmony_ci
8055e5c31af7Sopenharmony_ci				both ""
8056e5c31af7Sopenharmony_ci					#version 320 es
8057e5c31af7Sopenharmony_ci					precision highp float;
8058e5c31af7Sopenharmony_ci					${DECLARATIONS}
8059e5c31af7Sopenharmony_ci
8060e5c31af7Sopenharmony_ci					void main()
8061e5c31af7Sopenharmony_ci					{
8062e5c31af7Sopenharmony_ci						${SETUP}
8063e5c31af7Sopenharmony_ci						out0 = (2.0 + 1.0) * in0;
8064e5c31af7Sopenharmony_ci						${OUTPUT}
8065e5c31af7Sopenharmony_ci					}
8066e5c31af7Sopenharmony_ci				""
8067e5c31af7Sopenharmony_ci			end
8068e5c31af7Sopenharmony_ci			case int_to_uint
8069e5c31af7Sopenharmony_ci				version 320 es
8070e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8071e5c31af7Sopenharmony_ci				values
8072e5c31af7Sopenharmony_ci				{
8073e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8074e5c31af7Sopenharmony_ci					output uint out0 = [ 8 | 4 | 4 | 12 | 20 ];
8075e5c31af7Sopenharmony_ci				}
8076e5c31af7Sopenharmony_ci
8077e5c31af7Sopenharmony_ci				both ""
8078e5c31af7Sopenharmony_ci					#version 320 es
8079e5c31af7Sopenharmony_ci					precision highp float;
8080e5c31af7Sopenharmony_ci					${DECLARATIONS}
8081e5c31af7Sopenharmony_ci
8082e5c31af7Sopenharmony_ci					void main()
8083e5c31af7Sopenharmony_ci					{
8084e5c31af7Sopenharmony_ci						${SETUP}
8085e5c31af7Sopenharmony_ci						out0 = (1 + 3) * in0;
8086e5c31af7Sopenharmony_ci						${OUTPUT}
8087e5c31af7Sopenharmony_ci					}
8088e5c31af7Sopenharmony_ci				""
8089e5c31af7Sopenharmony_ci			end
8090e5c31af7Sopenharmony_ci			case int_to_vec2
8091e5c31af7Sopenharmony_ci				version 320 es
8092e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8093e5c31af7Sopenharmony_ci				values
8094e5c31af7Sopenharmony_ci				{
8095e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8096e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(6.0, 6.0) | vec2(3.0, 3.0) | vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(15.0, 15.0) ];
8097e5c31af7Sopenharmony_ci				}
8098e5c31af7Sopenharmony_ci
8099e5c31af7Sopenharmony_ci				both ""
8100e5c31af7Sopenharmony_ci					#version 320 es
8101e5c31af7Sopenharmony_ci					precision highp float;
8102e5c31af7Sopenharmony_ci					${DECLARATIONS}
8103e5c31af7Sopenharmony_ci
8104e5c31af7Sopenharmony_ci					void main()
8105e5c31af7Sopenharmony_ci					{
8106e5c31af7Sopenharmony_ci						${SETUP}
8107e5c31af7Sopenharmony_ci						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
8108e5c31af7Sopenharmony_ci						${OUTPUT}
8109e5c31af7Sopenharmony_ci					}
8110e5c31af7Sopenharmony_ci				""
8111e5c31af7Sopenharmony_ci			end
8112e5c31af7Sopenharmony_ci			case int_to_vec3
8113e5c31af7Sopenharmony_ci				version 320 es
8114e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8115e5c31af7Sopenharmony_ci				values
8116e5c31af7Sopenharmony_ci				{
8117e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8118e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(6.0, 6.0, 10.0) | vec3(3.0, 3.0, 5.0) | vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(15.0, 15.0, 25.0) ];
8119e5c31af7Sopenharmony_ci				}
8120e5c31af7Sopenharmony_ci
8121e5c31af7Sopenharmony_ci				both ""
8122e5c31af7Sopenharmony_ci					#version 320 es
8123e5c31af7Sopenharmony_ci					precision highp float;
8124e5c31af7Sopenharmony_ci					${DECLARATIONS}
8125e5c31af7Sopenharmony_ci
8126e5c31af7Sopenharmony_ci					void main()
8127e5c31af7Sopenharmony_ci					{
8128e5c31af7Sopenharmony_ci						${SETUP}
8129e5c31af7Sopenharmony_ci						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
8130e5c31af7Sopenharmony_ci						${OUTPUT}
8131e5c31af7Sopenharmony_ci					}
8132e5c31af7Sopenharmony_ci				""
8133e5c31af7Sopenharmony_ci			end
8134e5c31af7Sopenharmony_ci			case int_to_vec4
8135e5c31af7Sopenharmony_ci				version 320 es
8136e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8137e5c31af7Sopenharmony_ci				values
8138e5c31af7Sopenharmony_ci				{
8139e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8140e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(6.0, 6.0, 10.0, 20.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(15.0, 15.0, 25.0, 50.0) ];
8141e5c31af7Sopenharmony_ci				}
8142e5c31af7Sopenharmony_ci
8143e5c31af7Sopenharmony_ci				both ""
8144e5c31af7Sopenharmony_ci					#version 320 es
8145e5c31af7Sopenharmony_ci					precision highp float;
8146e5c31af7Sopenharmony_ci					${DECLARATIONS}
8147e5c31af7Sopenharmony_ci
8148e5c31af7Sopenharmony_ci					void main()
8149e5c31af7Sopenharmony_ci					{
8150e5c31af7Sopenharmony_ci						${SETUP}
8151e5c31af7Sopenharmony_ci						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
8152e5c31af7Sopenharmony_ci						${OUTPUT}
8153e5c31af7Sopenharmony_ci					}
8154e5c31af7Sopenharmony_ci				""
8155e5c31af7Sopenharmony_ci			end
8156e5c31af7Sopenharmony_ci			case int_to_uvec2
8157e5c31af7Sopenharmony_ci				version 320 es
8158e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8159e5c31af7Sopenharmony_ci				values
8160e5c31af7Sopenharmony_ci				{
8161e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8162e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(12, 18) | uvec2(6, 9) | uvec2(6, 9) | uvec2(18, 27) | uvec2(30, 45) ];
8163e5c31af7Sopenharmony_ci				}
8164e5c31af7Sopenharmony_ci
8165e5c31af7Sopenharmony_ci				both ""
8166e5c31af7Sopenharmony_ci					#version 320 es
8167e5c31af7Sopenharmony_ci					precision highp float;
8168e5c31af7Sopenharmony_ci					${DECLARATIONS}
8169e5c31af7Sopenharmony_ci
8170e5c31af7Sopenharmony_ci					void main()
8171e5c31af7Sopenharmony_ci					{
8172e5c31af7Sopenharmony_ci						${SETUP}
8173e5c31af7Sopenharmony_ci						out0 = (ivec2(2, 3) + ivec2(4, 6)) * in0;
8174e5c31af7Sopenharmony_ci						${OUTPUT}
8175e5c31af7Sopenharmony_ci					}
8176e5c31af7Sopenharmony_ci				""
8177e5c31af7Sopenharmony_ci			end
8178e5c31af7Sopenharmony_ci			case int_to_uvec3
8179e5c31af7Sopenharmony_ci				version 320 es
8180e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8181e5c31af7Sopenharmony_ci				values
8182e5c31af7Sopenharmony_ci				{
8183e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8184e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(12, 18, 14) | uvec3(6, 9, 7) | uvec3(6, 9, 7) | uvec3(18, 27, 21) | uvec3(30, 45, 35) ];
8185e5c31af7Sopenharmony_ci				}
8186e5c31af7Sopenharmony_ci
8187e5c31af7Sopenharmony_ci				both ""
8188e5c31af7Sopenharmony_ci					#version 320 es
8189e5c31af7Sopenharmony_ci					precision highp float;
8190e5c31af7Sopenharmony_ci					${DECLARATIONS}
8191e5c31af7Sopenharmony_ci
8192e5c31af7Sopenharmony_ci					void main()
8193e5c31af7Sopenharmony_ci					{
8194e5c31af7Sopenharmony_ci						${SETUP}
8195e5c31af7Sopenharmony_ci						out0 = (ivec3(2, 3, 5) + ivec3(4, 6, 2)) * in0;
8196e5c31af7Sopenharmony_ci						${OUTPUT}
8197e5c31af7Sopenharmony_ci					}
8198e5c31af7Sopenharmony_ci				""
8199e5c31af7Sopenharmony_ci			end
8200e5c31af7Sopenharmony_ci			case int_to_uvec4
8201e5c31af7Sopenharmony_ci				version 320 es
8202e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8203e5c31af7Sopenharmony_ci				values
8204e5c31af7Sopenharmony_ci				{
8205e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8206e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(12, 18, 14, 34) | uvec4(6, 9, 7, 17) | uvec4(6, 9, 7, 17) | uvec4(18, 27, 21, 51) | uvec4(30, 45, 35, 85) ];
8207e5c31af7Sopenharmony_ci				}
8208e5c31af7Sopenharmony_ci
8209e5c31af7Sopenharmony_ci				both ""
8210e5c31af7Sopenharmony_ci					#version 320 es
8211e5c31af7Sopenharmony_ci					precision highp float;
8212e5c31af7Sopenharmony_ci					${DECLARATIONS}
8213e5c31af7Sopenharmony_ci
8214e5c31af7Sopenharmony_ci					void main()
8215e5c31af7Sopenharmony_ci					{
8216e5c31af7Sopenharmony_ci						${SETUP}
8217e5c31af7Sopenharmony_ci						out0 = (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9)) * in0;
8218e5c31af7Sopenharmony_ci						${OUTPUT}
8219e5c31af7Sopenharmony_ci					}
8220e5c31af7Sopenharmony_ci				""
8221e5c31af7Sopenharmony_ci			end
8222e5c31af7Sopenharmony_ci			case uint_to_float
8223e5c31af7Sopenharmony_ci				version 320 es
8224e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8225e5c31af7Sopenharmony_ci				values
8226e5c31af7Sopenharmony_ci				{
8227e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8228e5c31af7Sopenharmony_ci					output float out0 = [ 3.0 | 9.0 | 12.0 | 21.0 | 33.0 ];
8229e5c31af7Sopenharmony_ci				}
8230e5c31af7Sopenharmony_ci
8231e5c31af7Sopenharmony_ci				both ""
8232e5c31af7Sopenharmony_ci					#version 320 es
8233e5c31af7Sopenharmony_ci					precision highp float;
8234e5c31af7Sopenharmony_ci					${DECLARATIONS}
8235e5c31af7Sopenharmony_ci
8236e5c31af7Sopenharmony_ci					void main()
8237e5c31af7Sopenharmony_ci					{
8238e5c31af7Sopenharmony_ci						${SETUP}
8239e5c31af7Sopenharmony_ci						out0 = (2.0 + 1.0) * in0;
8240e5c31af7Sopenharmony_ci						${OUTPUT}
8241e5c31af7Sopenharmony_ci					}
8242e5c31af7Sopenharmony_ci				""
8243e5c31af7Sopenharmony_ci			end
8244e5c31af7Sopenharmony_ci			case uint_to_vec2
8245e5c31af7Sopenharmony_ci				version 320 es
8246e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8247e5c31af7Sopenharmony_ci				values
8248e5c31af7Sopenharmony_ci				{
8249e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8250e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(21.0, 21.0) | vec2(33.0, 33.0) ];
8251e5c31af7Sopenharmony_ci				}
8252e5c31af7Sopenharmony_ci
8253e5c31af7Sopenharmony_ci				both ""
8254e5c31af7Sopenharmony_ci					#version 320 es
8255e5c31af7Sopenharmony_ci					precision highp float;
8256e5c31af7Sopenharmony_ci					${DECLARATIONS}
8257e5c31af7Sopenharmony_ci
8258e5c31af7Sopenharmony_ci					void main()
8259e5c31af7Sopenharmony_ci					{
8260e5c31af7Sopenharmony_ci						${SETUP}
8261e5c31af7Sopenharmony_ci						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
8262e5c31af7Sopenharmony_ci						${OUTPUT}
8263e5c31af7Sopenharmony_ci					}
8264e5c31af7Sopenharmony_ci				""
8265e5c31af7Sopenharmony_ci			end
8266e5c31af7Sopenharmony_ci			case uint_to_vec3
8267e5c31af7Sopenharmony_ci				version 320 es
8268e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8269e5c31af7Sopenharmony_ci				values
8270e5c31af7Sopenharmony_ci				{
8271e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8272e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(12.0, 12.0, 20.0) | vec3(21.0, 21.0, 35.0) | vec3(33.0, 33.0, 55.0) ];
8273e5c31af7Sopenharmony_ci				}
8274e5c31af7Sopenharmony_ci
8275e5c31af7Sopenharmony_ci				both ""
8276e5c31af7Sopenharmony_ci					#version 320 es
8277e5c31af7Sopenharmony_ci					precision highp float;
8278e5c31af7Sopenharmony_ci					${DECLARATIONS}
8279e5c31af7Sopenharmony_ci
8280e5c31af7Sopenharmony_ci					void main()
8281e5c31af7Sopenharmony_ci					{
8282e5c31af7Sopenharmony_ci						${SETUP}
8283e5c31af7Sopenharmony_ci						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
8284e5c31af7Sopenharmony_ci						${OUTPUT}
8285e5c31af7Sopenharmony_ci					}
8286e5c31af7Sopenharmony_ci				""
8287e5c31af7Sopenharmony_ci			end
8288e5c31af7Sopenharmony_ci			case uint_to_vec4
8289e5c31af7Sopenharmony_ci				version 320 es
8290e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8291e5c31af7Sopenharmony_ci				values
8292e5c31af7Sopenharmony_ci				{
8293e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8294e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(12.0, 12.0, 20.0, 40.0) | vec4(21.0, 21.0, 35.0, 70.0) | vec4(33.0, 33.0, 55.0, 110.0) ];
8295e5c31af7Sopenharmony_ci				}
8296e5c31af7Sopenharmony_ci
8297e5c31af7Sopenharmony_ci				both ""
8298e5c31af7Sopenharmony_ci					#version 320 es
8299e5c31af7Sopenharmony_ci					precision highp float;
8300e5c31af7Sopenharmony_ci					${DECLARATIONS}
8301e5c31af7Sopenharmony_ci
8302e5c31af7Sopenharmony_ci					void main()
8303e5c31af7Sopenharmony_ci					{
8304e5c31af7Sopenharmony_ci						${SETUP}
8305e5c31af7Sopenharmony_ci						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
8306e5c31af7Sopenharmony_ci						${OUTPUT}
8307e5c31af7Sopenharmony_ci					}
8308e5c31af7Sopenharmony_ci				""
8309e5c31af7Sopenharmony_ci			end
8310e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
8311e5c31af7Sopenharmony_ci				version 320 es
8312e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8313e5c31af7Sopenharmony_ci				values
8314e5c31af7Sopenharmony_ci				{
8315e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
8316e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(6, 18) | uvec2(12, 9) | uvec2(18, 63) ];
8317e5c31af7Sopenharmony_ci				}
8318e5c31af7Sopenharmony_ci
8319e5c31af7Sopenharmony_ci				both ""
8320e5c31af7Sopenharmony_ci					#version 320 es
8321e5c31af7Sopenharmony_ci					precision highp float;
8322e5c31af7Sopenharmony_ci					${DECLARATIONS}
8323e5c31af7Sopenharmony_ci
8324e5c31af7Sopenharmony_ci					void main()
8325e5c31af7Sopenharmony_ci					{
8326e5c31af7Sopenharmony_ci						${SETUP}
8327e5c31af7Sopenharmony_ci						out0 = (ivec2(2, 3) + ivec2(4, 6)) * in0;
8328e5c31af7Sopenharmony_ci						${OUTPUT}
8329e5c31af7Sopenharmony_ci					}
8330e5c31af7Sopenharmony_ci				""
8331e5c31af7Sopenharmony_ci			end
8332e5c31af7Sopenharmony_ci			case ivec2_to_vec2
8333e5c31af7Sopenharmony_ci				version 320 es
8334e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8335e5c31af7Sopenharmony_ci				values
8336e5c31af7Sopenharmony_ci				{
8337e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
8338e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(6.0, 3.0) | vec2(9.0, 21.0) ];
8339e5c31af7Sopenharmony_ci				}
8340e5c31af7Sopenharmony_ci
8341e5c31af7Sopenharmony_ci				both ""
8342e5c31af7Sopenharmony_ci					#version 320 es
8343e5c31af7Sopenharmony_ci					precision highp float;
8344e5c31af7Sopenharmony_ci					${DECLARATIONS}
8345e5c31af7Sopenharmony_ci
8346e5c31af7Sopenharmony_ci					void main()
8347e5c31af7Sopenharmony_ci					{
8348e5c31af7Sopenharmony_ci						${SETUP}
8349e5c31af7Sopenharmony_ci						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
8350e5c31af7Sopenharmony_ci						${OUTPUT}
8351e5c31af7Sopenharmony_ci					}
8352e5c31af7Sopenharmony_ci				""
8353e5c31af7Sopenharmony_ci			end
8354e5c31af7Sopenharmony_ci			case uvec2_to_vec2
8355e5c31af7Sopenharmony_ci				version 320 es
8356e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8357e5c31af7Sopenharmony_ci				values
8358e5c31af7Sopenharmony_ci				{
8359e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
8360e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(6.0, 9.0) | vec2(12.0, 18.0) | vec2(3.0, 39.0) ];
8361e5c31af7Sopenharmony_ci				}
8362e5c31af7Sopenharmony_ci
8363e5c31af7Sopenharmony_ci				both ""
8364e5c31af7Sopenharmony_ci					#version 320 es
8365e5c31af7Sopenharmony_ci					precision highp float;
8366e5c31af7Sopenharmony_ci					${DECLARATIONS}
8367e5c31af7Sopenharmony_ci
8368e5c31af7Sopenharmony_ci					void main()
8369e5c31af7Sopenharmony_ci					{
8370e5c31af7Sopenharmony_ci						${SETUP}
8371e5c31af7Sopenharmony_ci						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
8372e5c31af7Sopenharmony_ci						${OUTPUT}
8373e5c31af7Sopenharmony_ci					}
8374e5c31af7Sopenharmony_ci				""
8375e5c31af7Sopenharmony_ci			end
8376e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
8377e5c31af7Sopenharmony_ci				version 320 es
8378e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8379e5c31af7Sopenharmony_ci				values
8380e5c31af7Sopenharmony_ci				{
8381e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
8382e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(6, 18, 21) | uvec3(12, 9, 14) | uvec3(18, 63, 14) ];
8383e5c31af7Sopenharmony_ci				}
8384e5c31af7Sopenharmony_ci
8385e5c31af7Sopenharmony_ci				both ""
8386e5c31af7Sopenharmony_ci					#version 320 es
8387e5c31af7Sopenharmony_ci					precision highp float;
8388e5c31af7Sopenharmony_ci					${DECLARATIONS}
8389e5c31af7Sopenharmony_ci
8390e5c31af7Sopenharmony_ci					void main()
8391e5c31af7Sopenharmony_ci					{
8392e5c31af7Sopenharmony_ci						${SETUP}
8393e5c31af7Sopenharmony_ci						out0 = (ivec3(2, 3, 5) + ivec3(4, 6, 2)) * in0;
8394e5c31af7Sopenharmony_ci						${OUTPUT}
8395e5c31af7Sopenharmony_ci					}
8396e5c31af7Sopenharmony_ci				""
8397e5c31af7Sopenharmony_ci			end
8398e5c31af7Sopenharmony_ci			case ivec3_to_vec3
8399e5c31af7Sopenharmony_ci				version 320 es
8400e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8401e5c31af7Sopenharmony_ci				values
8402e5c31af7Sopenharmony_ci				{
8403e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
8404e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(6.0, 3.0, 10.0) | vec3(9.0, 21.0, 10.0) ];
8405e5c31af7Sopenharmony_ci				}
8406e5c31af7Sopenharmony_ci
8407e5c31af7Sopenharmony_ci				both ""
8408e5c31af7Sopenharmony_ci					#version 320 es
8409e5c31af7Sopenharmony_ci					precision highp float;
8410e5c31af7Sopenharmony_ci					${DECLARATIONS}
8411e5c31af7Sopenharmony_ci
8412e5c31af7Sopenharmony_ci					void main()
8413e5c31af7Sopenharmony_ci					{
8414e5c31af7Sopenharmony_ci						${SETUP}
8415e5c31af7Sopenharmony_ci						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
8416e5c31af7Sopenharmony_ci						${OUTPUT}
8417e5c31af7Sopenharmony_ci					}
8418e5c31af7Sopenharmony_ci				""
8419e5c31af7Sopenharmony_ci			end
8420e5c31af7Sopenharmony_ci			case uvec3_to_vec3
8421e5c31af7Sopenharmony_ci				version 320 es
8422e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8423e5c31af7Sopenharmony_ci				values
8424e5c31af7Sopenharmony_ci				{
8425e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
8426e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(6.0, 9.0, 25.0) | vec3(12.0, 18.0, 10.0) | vec3(3.0, 39.0, 35.0) ];
8427e5c31af7Sopenharmony_ci				}
8428e5c31af7Sopenharmony_ci
8429e5c31af7Sopenharmony_ci				both ""
8430e5c31af7Sopenharmony_ci					#version 320 es
8431e5c31af7Sopenharmony_ci					precision highp float;
8432e5c31af7Sopenharmony_ci					${DECLARATIONS}
8433e5c31af7Sopenharmony_ci
8434e5c31af7Sopenharmony_ci					void main()
8435e5c31af7Sopenharmony_ci					{
8436e5c31af7Sopenharmony_ci						${SETUP}
8437e5c31af7Sopenharmony_ci						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
8438e5c31af7Sopenharmony_ci						${OUTPUT}
8439e5c31af7Sopenharmony_ci					}
8440e5c31af7Sopenharmony_ci				""
8441e5c31af7Sopenharmony_ci			end
8442e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
8443e5c31af7Sopenharmony_ci				version 320 es
8444e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8445e5c31af7Sopenharmony_ci				values
8446e5c31af7Sopenharmony_ci				{
8447e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
8448e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(6, 18, 21, 68) | uvec4(12, 9, 14, 102) | uvec4(18, 63, 14, 85) ];
8449e5c31af7Sopenharmony_ci				}
8450e5c31af7Sopenharmony_ci
8451e5c31af7Sopenharmony_ci				both ""
8452e5c31af7Sopenharmony_ci					#version 320 es
8453e5c31af7Sopenharmony_ci					precision highp float;
8454e5c31af7Sopenharmony_ci					${DECLARATIONS}
8455e5c31af7Sopenharmony_ci
8456e5c31af7Sopenharmony_ci					void main()
8457e5c31af7Sopenharmony_ci					{
8458e5c31af7Sopenharmony_ci						${SETUP}
8459e5c31af7Sopenharmony_ci						out0 = (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9)) * in0;
8460e5c31af7Sopenharmony_ci						${OUTPUT}
8461e5c31af7Sopenharmony_ci					}
8462e5c31af7Sopenharmony_ci				""
8463e5c31af7Sopenharmony_ci			end
8464e5c31af7Sopenharmony_ci			case ivec4_to_vec4
8465e5c31af7Sopenharmony_ci				version 320 es
8466e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8467e5c31af7Sopenharmony_ci				values
8468e5c31af7Sopenharmony_ci				{
8469e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
8470e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(6.0, 3.0, 10.0, 60.0) | vec4(9.0, 21.0, 10.0, 50.0) ];
8471e5c31af7Sopenharmony_ci				}
8472e5c31af7Sopenharmony_ci
8473e5c31af7Sopenharmony_ci				both ""
8474e5c31af7Sopenharmony_ci					#version 320 es
8475e5c31af7Sopenharmony_ci					precision highp float;
8476e5c31af7Sopenharmony_ci					${DECLARATIONS}
8477e5c31af7Sopenharmony_ci
8478e5c31af7Sopenharmony_ci					void main()
8479e5c31af7Sopenharmony_ci					{
8480e5c31af7Sopenharmony_ci						${SETUP}
8481e5c31af7Sopenharmony_ci						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
8482e5c31af7Sopenharmony_ci						${OUTPUT}
8483e5c31af7Sopenharmony_ci					}
8484e5c31af7Sopenharmony_ci				""
8485e5c31af7Sopenharmony_ci			end
8486e5c31af7Sopenharmony_ci			case uvec4_to_vec4
8487e5c31af7Sopenharmony_ci				version 320 es
8488e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8489e5c31af7Sopenharmony_ci				values
8490e5c31af7Sopenharmony_ci				{
8491e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
8492e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(6.0, 9.0, 25.0, 80.0) | vec4(12.0, 18.0, 10.0, 90.0) | vec4(3.0, 39.0, 35.0, 40.0) ];
8493e5c31af7Sopenharmony_ci				}
8494e5c31af7Sopenharmony_ci
8495e5c31af7Sopenharmony_ci				both ""
8496e5c31af7Sopenharmony_ci					#version 320 es
8497e5c31af7Sopenharmony_ci					precision highp float;
8498e5c31af7Sopenharmony_ci					${DECLARATIONS}
8499e5c31af7Sopenharmony_ci
8500e5c31af7Sopenharmony_ci					void main()
8501e5c31af7Sopenharmony_ci					{
8502e5c31af7Sopenharmony_ci						${SETUP}
8503e5c31af7Sopenharmony_ci						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
8504e5c31af7Sopenharmony_ci						${OUTPUT}
8505e5c31af7Sopenharmony_ci					}
8506e5c31af7Sopenharmony_ci				""
8507e5c31af7Sopenharmony_ci			end
8508e5c31af7Sopenharmony_ci
8509e5c31af7Sopenharmony_ci		end # input_outside_parens
8510e5c31af7Sopenharmony_ci
8511e5c31af7Sopenharmony_ci	end # paren_expr_before_literal
8512e5c31af7Sopenharmony_ci	group literal_before_paren_expr "Literal before parenthesized expression"
8513e5c31af7Sopenharmony_ci
8514e5c31af7Sopenharmony_ci		group input_in_parens "Input variable in parenthesized expression"
8515e5c31af7Sopenharmony_ci
8516e5c31af7Sopenharmony_ci			case int_to_float
8517e5c31af7Sopenharmony_ci				version 320 es
8518e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8519e5c31af7Sopenharmony_ci				values
8520e5c31af7Sopenharmony_ci				{
8521e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8522e5c31af7Sopenharmony_ci					output float out0 = [ 6.0 | 4.0 | 4.0 | 8.0 | 12.0 ];
8523e5c31af7Sopenharmony_ci				}
8524e5c31af7Sopenharmony_ci
8525e5c31af7Sopenharmony_ci				both ""
8526e5c31af7Sopenharmony_ci					#version 320 es
8527e5c31af7Sopenharmony_ci					precision highp float;
8528e5c31af7Sopenharmony_ci					${DECLARATIONS}
8529e5c31af7Sopenharmony_ci
8530e5c31af7Sopenharmony_ci					void main()
8531e5c31af7Sopenharmony_ci					{
8532e5c31af7Sopenharmony_ci						${SETUP}
8533e5c31af7Sopenharmony_ci						out0 = 2.0 * (in0 + 1.0);
8534e5c31af7Sopenharmony_ci						${OUTPUT}
8535e5c31af7Sopenharmony_ci					}
8536e5c31af7Sopenharmony_ci				""
8537e5c31af7Sopenharmony_ci			end
8538e5c31af7Sopenharmony_ci			case int_to_uint
8539e5c31af7Sopenharmony_ci				version 320 es
8540e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8541e5c31af7Sopenharmony_ci				values
8542e5c31af7Sopenharmony_ci				{
8543e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8544e5c31af7Sopenharmony_ci					output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
8545e5c31af7Sopenharmony_ci				}
8546e5c31af7Sopenharmony_ci
8547e5c31af7Sopenharmony_ci				both ""
8548e5c31af7Sopenharmony_ci					#version 320 es
8549e5c31af7Sopenharmony_ci					precision highp float;
8550e5c31af7Sopenharmony_ci					${DECLARATIONS}
8551e5c31af7Sopenharmony_ci
8552e5c31af7Sopenharmony_ci					void main()
8553e5c31af7Sopenharmony_ci					{
8554e5c31af7Sopenharmony_ci						${SETUP}
8555e5c31af7Sopenharmony_ci						out0 = 1 * (in0 + 3);
8556e5c31af7Sopenharmony_ci						${OUTPUT}
8557e5c31af7Sopenharmony_ci					}
8558e5c31af7Sopenharmony_ci				""
8559e5c31af7Sopenharmony_ci			end
8560e5c31af7Sopenharmony_ci			case int_to_vec2
8561e5c31af7Sopenharmony_ci				version 320 es
8562e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8563e5c31af7Sopenharmony_ci				values
8564e5c31af7Sopenharmony_ci				{
8565e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8566e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(4.0, 6.0) | vec2(3.0, 4.0) | vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(7.0, 12.0) ];
8567e5c31af7Sopenharmony_ci				}
8568e5c31af7Sopenharmony_ci
8569e5c31af7Sopenharmony_ci				both ""
8570e5c31af7Sopenharmony_ci					#version 320 es
8571e5c31af7Sopenharmony_ci					precision highp float;
8572e5c31af7Sopenharmony_ci					${DECLARATIONS}
8573e5c31af7Sopenharmony_ci
8574e5c31af7Sopenharmony_ci					void main()
8575e5c31af7Sopenharmony_ci					{
8576e5c31af7Sopenharmony_ci						${SETUP}
8577e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
8578e5c31af7Sopenharmony_ci						${OUTPUT}
8579e5c31af7Sopenharmony_ci					}
8580e5c31af7Sopenharmony_ci				""
8581e5c31af7Sopenharmony_ci			end
8582e5c31af7Sopenharmony_ci			case int_to_vec3
8583e5c31af7Sopenharmony_ci				version 320 es
8584e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8585e5c31af7Sopenharmony_ci				values
8586e5c31af7Sopenharmony_ci				{
8587e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8588e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(4.0, 6.0, 12.0) | vec3(3.0, 4.0, 9.0) | vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(7.0, 12.0, 21.0) ];
8589e5c31af7Sopenharmony_ci				}
8590e5c31af7Sopenharmony_ci
8591e5c31af7Sopenharmony_ci				both ""
8592e5c31af7Sopenharmony_ci					#version 320 es
8593e5c31af7Sopenharmony_ci					precision highp float;
8594e5c31af7Sopenharmony_ci					${DECLARATIONS}
8595e5c31af7Sopenharmony_ci
8596e5c31af7Sopenharmony_ci					void main()
8597e5c31af7Sopenharmony_ci					{
8598e5c31af7Sopenharmony_ci						${SETUP}
8599e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
8600e5c31af7Sopenharmony_ci						${OUTPUT}
8601e5c31af7Sopenharmony_ci					}
8602e5c31af7Sopenharmony_ci				""
8603e5c31af7Sopenharmony_ci			end
8604e5c31af7Sopenharmony_ci			case int_to_vec4
8605e5c31af7Sopenharmony_ci				version 320 es
8606e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8607e5c31af7Sopenharmony_ci				values
8608e5c31af7Sopenharmony_ci				{
8609e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8610e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(4.0, 6.0, 12.0, 32.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(7.0, 12.0, 21.0, 44.0) ];
8611e5c31af7Sopenharmony_ci				}
8612e5c31af7Sopenharmony_ci
8613e5c31af7Sopenharmony_ci				both ""
8614e5c31af7Sopenharmony_ci					#version 320 es
8615e5c31af7Sopenharmony_ci					precision highp float;
8616e5c31af7Sopenharmony_ci					${DECLARATIONS}
8617e5c31af7Sopenharmony_ci
8618e5c31af7Sopenharmony_ci					void main()
8619e5c31af7Sopenharmony_ci					{
8620e5c31af7Sopenharmony_ci						${SETUP}
8621e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
8622e5c31af7Sopenharmony_ci						${OUTPUT}
8623e5c31af7Sopenharmony_ci					}
8624e5c31af7Sopenharmony_ci				""
8625e5c31af7Sopenharmony_ci			end
8626e5c31af7Sopenharmony_ci			case int_to_uvec2
8627e5c31af7Sopenharmony_ci				version 320 es
8628e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8629e5c31af7Sopenharmony_ci				values
8630e5c31af7Sopenharmony_ci				{
8631e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8632e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(12, 24) | uvec2(10, 21) | uvec2(10, 21) | uvec2(14, 27) | uvec2(18, 33) ];
8633e5c31af7Sopenharmony_ci				}
8634e5c31af7Sopenharmony_ci
8635e5c31af7Sopenharmony_ci				both ""
8636e5c31af7Sopenharmony_ci					#version 320 es
8637e5c31af7Sopenharmony_ci					precision highp float;
8638e5c31af7Sopenharmony_ci					${DECLARATIONS}
8639e5c31af7Sopenharmony_ci
8640e5c31af7Sopenharmony_ci					void main()
8641e5c31af7Sopenharmony_ci					{
8642e5c31af7Sopenharmony_ci						${SETUP}
8643e5c31af7Sopenharmony_ci						out0 = ivec2(2, 3) * (in0 + ivec2(4, 6));
8644e5c31af7Sopenharmony_ci						${OUTPUT}
8645e5c31af7Sopenharmony_ci					}
8646e5c31af7Sopenharmony_ci				""
8647e5c31af7Sopenharmony_ci			end
8648e5c31af7Sopenharmony_ci			case int_to_uvec3
8649e5c31af7Sopenharmony_ci				version 320 es
8650e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8651e5c31af7Sopenharmony_ci				values
8652e5c31af7Sopenharmony_ci				{
8653e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8654e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(12, 24, 20) | uvec3(10, 21, 15) | uvec3(10, 21, 15) | uvec3(14, 27, 25) | uvec3(18, 33, 35) ];
8655e5c31af7Sopenharmony_ci				}
8656e5c31af7Sopenharmony_ci
8657e5c31af7Sopenharmony_ci				both ""
8658e5c31af7Sopenharmony_ci					#version 320 es
8659e5c31af7Sopenharmony_ci					precision highp float;
8660e5c31af7Sopenharmony_ci					${DECLARATIONS}
8661e5c31af7Sopenharmony_ci
8662e5c31af7Sopenharmony_ci					void main()
8663e5c31af7Sopenharmony_ci					{
8664e5c31af7Sopenharmony_ci						${SETUP}
8665e5c31af7Sopenharmony_ci						out0 = ivec3(2, 3, 5) * (in0 + ivec3(4, 6, 2));
8666e5c31af7Sopenharmony_ci						${OUTPUT}
8667e5c31af7Sopenharmony_ci					}
8668e5c31af7Sopenharmony_ci				""
8669e5c31af7Sopenharmony_ci			end
8670e5c31af7Sopenharmony_ci			case int_to_uvec4
8671e5c31af7Sopenharmony_ci				version 320 es
8672e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8673e5c31af7Sopenharmony_ci				values
8674e5c31af7Sopenharmony_ci				{
8675e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8676e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(12, 24, 20, 88) | uvec4(10, 21, 15, 80) | uvec4(10, 21, 15, 80) | uvec4(14, 27, 25, 96) | uvec4(18, 33, 35, 112) ];
8677e5c31af7Sopenharmony_ci				}
8678e5c31af7Sopenharmony_ci
8679e5c31af7Sopenharmony_ci				both ""
8680e5c31af7Sopenharmony_ci					#version 320 es
8681e5c31af7Sopenharmony_ci					precision highp float;
8682e5c31af7Sopenharmony_ci					${DECLARATIONS}
8683e5c31af7Sopenharmony_ci
8684e5c31af7Sopenharmony_ci					void main()
8685e5c31af7Sopenharmony_ci					{
8686e5c31af7Sopenharmony_ci						${SETUP}
8687e5c31af7Sopenharmony_ci						out0 = ivec4(2, 3, 5, 8) * (in0 + ivec4(4, 6, 2, 9));
8688e5c31af7Sopenharmony_ci						${OUTPUT}
8689e5c31af7Sopenharmony_ci					}
8690e5c31af7Sopenharmony_ci				""
8691e5c31af7Sopenharmony_ci			end
8692e5c31af7Sopenharmony_ci			case uint_to_float
8693e5c31af7Sopenharmony_ci				version 320 es
8694e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8695e5c31af7Sopenharmony_ci				values
8696e5c31af7Sopenharmony_ci				{
8697e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8698e5c31af7Sopenharmony_ci					output float out0 = [ 4.0 | 8.0 | 10.0 | 16.0 | 24.0 ];
8699e5c31af7Sopenharmony_ci				}
8700e5c31af7Sopenharmony_ci
8701e5c31af7Sopenharmony_ci				both ""
8702e5c31af7Sopenharmony_ci					#version 320 es
8703e5c31af7Sopenharmony_ci					precision highp float;
8704e5c31af7Sopenharmony_ci					${DECLARATIONS}
8705e5c31af7Sopenharmony_ci
8706e5c31af7Sopenharmony_ci					void main()
8707e5c31af7Sopenharmony_ci					{
8708e5c31af7Sopenharmony_ci						${SETUP}
8709e5c31af7Sopenharmony_ci						out0 = 2.0 * (in0 + 1.0);
8710e5c31af7Sopenharmony_ci						${OUTPUT}
8711e5c31af7Sopenharmony_ci					}
8712e5c31af7Sopenharmony_ci				""
8713e5c31af7Sopenharmony_ci			end
8714e5c31af7Sopenharmony_ci			case uint_to_vec2
8715e5c31af7Sopenharmony_ci				version 320 es
8716e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8717e5c31af7Sopenharmony_ci				values
8718e5c31af7Sopenharmony_ci				{
8719e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8720e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(6.0, 10.0) | vec2(9.0, 16.0) | vec2(13.0, 24.0) ];
8721e5c31af7Sopenharmony_ci				}
8722e5c31af7Sopenharmony_ci
8723e5c31af7Sopenharmony_ci				both ""
8724e5c31af7Sopenharmony_ci					#version 320 es
8725e5c31af7Sopenharmony_ci					precision highp float;
8726e5c31af7Sopenharmony_ci					${DECLARATIONS}
8727e5c31af7Sopenharmony_ci
8728e5c31af7Sopenharmony_ci					void main()
8729e5c31af7Sopenharmony_ci					{
8730e5c31af7Sopenharmony_ci						${SETUP}
8731e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
8732e5c31af7Sopenharmony_ci						${OUTPUT}
8733e5c31af7Sopenharmony_ci					}
8734e5c31af7Sopenharmony_ci				""
8735e5c31af7Sopenharmony_ci			end
8736e5c31af7Sopenharmony_ci			case uint_to_vec3
8737e5c31af7Sopenharmony_ci				version 320 es
8738e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8739e5c31af7Sopenharmony_ci				values
8740e5c31af7Sopenharmony_ci				{
8741e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8742e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(6.0, 10.0, 18.0) | vec3(9.0, 16.0, 27.0) | vec3(13.0, 24.0, 39.0) ];
8743e5c31af7Sopenharmony_ci				}
8744e5c31af7Sopenharmony_ci
8745e5c31af7Sopenharmony_ci				both ""
8746e5c31af7Sopenharmony_ci					#version 320 es
8747e5c31af7Sopenharmony_ci					precision highp float;
8748e5c31af7Sopenharmony_ci					${DECLARATIONS}
8749e5c31af7Sopenharmony_ci
8750e5c31af7Sopenharmony_ci					void main()
8751e5c31af7Sopenharmony_ci					{
8752e5c31af7Sopenharmony_ci						${SETUP}
8753e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
8754e5c31af7Sopenharmony_ci						${OUTPUT}
8755e5c31af7Sopenharmony_ci					}
8756e5c31af7Sopenharmony_ci				""
8757e5c31af7Sopenharmony_ci			end
8758e5c31af7Sopenharmony_ci			case uint_to_vec4
8759e5c31af7Sopenharmony_ci				version 320 es
8760e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8761e5c31af7Sopenharmony_ci				values
8762e5c31af7Sopenharmony_ci				{
8763e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
8764e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(6.0, 10.0, 18.0, 40.0) | vec4(9.0, 16.0, 27.0, 52.0) | vec4(13.0, 24.0, 39.0, 68.0) ];
8765e5c31af7Sopenharmony_ci				}
8766e5c31af7Sopenharmony_ci
8767e5c31af7Sopenharmony_ci				both ""
8768e5c31af7Sopenharmony_ci					#version 320 es
8769e5c31af7Sopenharmony_ci					precision highp float;
8770e5c31af7Sopenharmony_ci					${DECLARATIONS}
8771e5c31af7Sopenharmony_ci
8772e5c31af7Sopenharmony_ci					void main()
8773e5c31af7Sopenharmony_ci					{
8774e5c31af7Sopenharmony_ci						${SETUP}
8775e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
8776e5c31af7Sopenharmony_ci						${OUTPUT}
8777e5c31af7Sopenharmony_ci					}
8778e5c31af7Sopenharmony_ci				""
8779e5c31af7Sopenharmony_ci			end
8780e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
8781e5c31af7Sopenharmony_ci				version 320 es
8782e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8783e5c31af7Sopenharmony_ci				values
8784e5c31af7Sopenharmony_ci				{
8785e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
8786e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(10, 24) | uvec2(12, 21) | uvec2(14, 39) ];
8787e5c31af7Sopenharmony_ci				}
8788e5c31af7Sopenharmony_ci
8789e5c31af7Sopenharmony_ci				both ""
8790e5c31af7Sopenharmony_ci					#version 320 es
8791e5c31af7Sopenharmony_ci					precision highp float;
8792e5c31af7Sopenharmony_ci					${DECLARATIONS}
8793e5c31af7Sopenharmony_ci
8794e5c31af7Sopenharmony_ci					void main()
8795e5c31af7Sopenharmony_ci					{
8796e5c31af7Sopenharmony_ci						${SETUP}
8797e5c31af7Sopenharmony_ci						out0 = ivec2(2, 3) * (in0 + ivec2(4, 6));
8798e5c31af7Sopenharmony_ci						${OUTPUT}
8799e5c31af7Sopenharmony_ci					}
8800e5c31af7Sopenharmony_ci				""
8801e5c31af7Sopenharmony_ci			end
8802e5c31af7Sopenharmony_ci			case ivec2_to_vec2
8803e5c31af7Sopenharmony_ci				version 320 es
8804e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8805e5c31af7Sopenharmony_ci				values
8806e5c31af7Sopenharmony_ci				{
8807e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
8808e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(4.0, 4.0) | vec2(5.0, 16.0) ];
8809e5c31af7Sopenharmony_ci				}
8810e5c31af7Sopenharmony_ci
8811e5c31af7Sopenharmony_ci				both ""
8812e5c31af7Sopenharmony_ci					#version 320 es
8813e5c31af7Sopenharmony_ci					precision highp float;
8814e5c31af7Sopenharmony_ci					${DECLARATIONS}
8815e5c31af7Sopenharmony_ci
8816e5c31af7Sopenharmony_ci					void main()
8817e5c31af7Sopenharmony_ci					{
8818e5c31af7Sopenharmony_ci						${SETUP}
8819e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
8820e5c31af7Sopenharmony_ci						${OUTPUT}
8821e5c31af7Sopenharmony_ci					}
8822e5c31af7Sopenharmony_ci				""
8823e5c31af7Sopenharmony_ci			end
8824e5c31af7Sopenharmony_ci			case uvec2_to_vec2
8825e5c31af7Sopenharmony_ci				version 320 es
8826e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8827e5c31af7Sopenharmony_ci				values
8828e5c31af7Sopenharmony_ci				{
8829e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
8830e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(4.0, 8.0) | vec2(6.0, 14.0) | vec2(3.0, 28.0) ];
8831e5c31af7Sopenharmony_ci				}
8832e5c31af7Sopenharmony_ci
8833e5c31af7Sopenharmony_ci				both ""
8834e5c31af7Sopenharmony_ci					#version 320 es
8835e5c31af7Sopenharmony_ci					precision highp float;
8836e5c31af7Sopenharmony_ci					${DECLARATIONS}
8837e5c31af7Sopenharmony_ci
8838e5c31af7Sopenharmony_ci					void main()
8839e5c31af7Sopenharmony_ci					{
8840e5c31af7Sopenharmony_ci						${SETUP}
8841e5c31af7Sopenharmony_ci						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
8842e5c31af7Sopenharmony_ci						${OUTPUT}
8843e5c31af7Sopenharmony_ci					}
8844e5c31af7Sopenharmony_ci				""
8845e5c31af7Sopenharmony_ci			end
8846e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
8847e5c31af7Sopenharmony_ci				version 320 es
8848e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8849e5c31af7Sopenharmony_ci				values
8850e5c31af7Sopenharmony_ci				{
8851e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
8852e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(10, 24, 25) | uvec3(12, 21, 20) | uvec3(14, 39, 20) ];
8853e5c31af7Sopenharmony_ci				}
8854e5c31af7Sopenharmony_ci
8855e5c31af7Sopenharmony_ci				both ""
8856e5c31af7Sopenharmony_ci					#version 320 es
8857e5c31af7Sopenharmony_ci					precision highp float;
8858e5c31af7Sopenharmony_ci					${DECLARATIONS}
8859e5c31af7Sopenharmony_ci
8860e5c31af7Sopenharmony_ci					void main()
8861e5c31af7Sopenharmony_ci					{
8862e5c31af7Sopenharmony_ci						${SETUP}
8863e5c31af7Sopenharmony_ci						out0 = ivec3(2, 3, 5) * (in0 + ivec3(4, 6, 2));
8864e5c31af7Sopenharmony_ci						${OUTPUT}
8865e5c31af7Sopenharmony_ci					}
8866e5c31af7Sopenharmony_ci				""
8867e5c31af7Sopenharmony_ci			end
8868e5c31af7Sopenharmony_ci			case ivec3_to_vec3
8869e5c31af7Sopenharmony_ci				version 320 es
8870e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8871e5c31af7Sopenharmony_ci				values
8872e5c31af7Sopenharmony_ci				{
8873e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
8874e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(4.0, 4.0, 12.0) | vec3(5.0, 16.0, 12.0) ];
8875e5c31af7Sopenharmony_ci				}
8876e5c31af7Sopenharmony_ci
8877e5c31af7Sopenharmony_ci				both ""
8878e5c31af7Sopenharmony_ci					#version 320 es
8879e5c31af7Sopenharmony_ci					precision highp float;
8880e5c31af7Sopenharmony_ci					${DECLARATIONS}
8881e5c31af7Sopenharmony_ci
8882e5c31af7Sopenharmony_ci					void main()
8883e5c31af7Sopenharmony_ci					{
8884e5c31af7Sopenharmony_ci						${SETUP}
8885e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
8886e5c31af7Sopenharmony_ci						${OUTPUT}
8887e5c31af7Sopenharmony_ci					}
8888e5c31af7Sopenharmony_ci				""
8889e5c31af7Sopenharmony_ci			end
8890e5c31af7Sopenharmony_ci			case uvec3_to_vec3
8891e5c31af7Sopenharmony_ci				version 320 es
8892e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8893e5c31af7Sopenharmony_ci				values
8894e5c31af7Sopenharmony_ci				{
8895e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
8896e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(4.0, 8.0, 21.0) | vec3(6.0, 14.0, 12.0) | vec3(3.0, 28.0, 27.0) ];
8897e5c31af7Sopenharmony_ci				}
8898e5c31af7Sopenharmony_ci
8899e5c31af7Sopenharmony_ci				both ""
8900e5c31af7Sopenharmony_ci					#version 320 es
8901e5c31af7Sopenharmony_ci					precision highp float;
8902e5c31af7Sopenharmony_ci					${DECLARATIONS}
8903e5c31af7Sopenharmony_ci
8904e5c31af7Sopenharmony_ci					void main()
8905e5c31af7Sopenharmony_ci					{
8906e5c31af7Sopenharmony_ci						${SETUP}
8907e5c31af7Sopenharmony_ci						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
8908e5c31af7Sopenharmony_ci						${OUTPUT}
8909e5c31af7Sopenharmony_ci					}
8910e5c31af7Sopenharmony_ci				""
8911e5c31af7Sopenharmony_ci			end
8912e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
8913e5c31af7Sopenharmony_ci				version 320 es
8914e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8915e5c31af7Sopenharmony_ci				values
8916e5c31af7Sopenharmony_ci				{
8917e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
8918e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(10, 24, 25, 104) | uvec4(12, 21, 20, 120) | uvec4(14, 39, 20, 112) ];
8919e5c31af7Sopenharmony_ci				}
8920e5c31af7Sopenharmony_ci
8921e5c31af7Sopenharmony_ci				both ""
8922e5c31af7Sopenharmony_ci					#version 320 es
8923e5c31af7Sopenharmony_ci					precision highp float;
8924e5c31af7Sopenharmony_ci					${DECLARATIONS}
8925e5c31af7Sopenharmony_ci
8926e5c31af7Sopenharmony_ci					void main()
8927e5c31af7Sopenharmony_ci					{
8928e5c31af7Sopenharmony_ci						${SETUP}
8929e5c31af7Sopenharmony_ci						out0 = ivec4(2, 3, 5, 8) * (in0 + ivec4(4, 6, 2, 9));
8930e5c31af7Sopenharmony_ci						${OUTPUT}
8931e5c31af7Sopenharmony_ci					}
8932e5c31af7Sopenharmony_ci				""
8933e5c31af7Sopenharmony_ci			end
8934e5c31af7Sopenharmony_ci			case ivec4_to_vec4
8935e5c31af7Sopenharmony_ci				version 320 es
8936e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8937e5c31af7Sopenharmony_ci				values
8938e5c31af7Sopenharmony_ci				{
8939e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
8940e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(4.0, 4.0, 12.0, 48.0) | vec4(5.0, 16.0, 12.0, 44.0) ];
8941e5c31af7Sopenharmony_ci				}
8942e5c31af7Sopenharmony_ci
8943e5c31af7Sopenharmony_ci				both ""
8944e5c31af7Sopenharmony_ci					#version 320 es
8945e5c31af7Sopenharmony_ci					precision highp float;
8946e5c31af7Sopenharmony_ci					${DECLARATIONS}
8947e5c31af7Sopenharmony_ci
8948e5c31af7Sopenharmony_ci					void main()
8949e5c31af7Sopenharmony_ci					{
8950e5c31af7Sopenharmony_ci						${SETUP}
8951e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
8952e5c31af7Sopenharmony_ci						${OUTPUT}
8953e5c31af7Sopenharmony_ci					}
8954e5c31af7Sopenharmony_ci				""
8955e5c31af7Sopenharmony_ci			end
8956e5c31af7Sopenharmony_ci			case uvec4_to_vec4
8957e5c31af7Sopenharmony_ci				version 320 es
8958e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8959e5c31af7Sopenharmony_ci				values
8960e5c31af7Sopenharmony_ci				{
8961e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
8962e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(4.0, 8.0, 21.0, 56.0) | vec4(6.0, 14.0, 12.0, 60.0) | vec4(3.0, 28.0, 27.0, 40.0) ];
8963e5c31af7Sopenharmony_ci				}
8964e5c31af7Sopenharmony_ci
8965e5c31af7Sopenharmony_ci				both ""
8966e5c31af7Sopenharmony_ci					#version 320 es
8967e5c31af7Sopenharmony_ci					precision highp float;
8968e5c31af7Sopenharmony_ci					${DECLARATIONS}
8969e5c31af7Sopenharmony_ci
8970e5c31af7Sopenharmony_ci					void main()
8971e5c31af7Sopenharmony_ci					{
8972e5c31af7Sopenharmony_ci						${SETUP}
8973e5c31af7Sopenharmony_ci						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
8974e5c31af7Sopenharmony_ci						${OUTPUT}
8975e5c31af7Sopenharmony_ci					}
8976e5c31af7Sopenharmony_ci				""
8977e5c31af7Sopenharmony_ci			end
8978e5c31af7Sopenharmony_ci
8979e5c31af7Sopenharmony_ci		end # input_in_parens
8980e5c31af7Sopenharmony_ci		group input_outside_parens "Input variable outside parenthesized expression"
8981e5c31af7Sopenharmony_ci
8982e5c31af7Sopenharmony_ci			case int_to_float
8983e5c31af7Sopenharmony_ci				version 320 es
8984e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
8985e5c31af7Sopenharmony_ci				values
8986e5c31af7Sopenharmony_ci				{
8987e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
8988e5c31af7Sopenharmony_ci					output float out0 = [ 6.0 | 3.0 | 3.0 | 9.0 | 15.0 ];
8989e5c31af7Sopenharmony_ci				}
8990e5c31af7Sopenharmony_ci
8991e5c31af7Sopenharmony_ci				both ""
8992e5c31af7Sopenharmony_ci					#version 320 es
8993e5c31af7Sopenharmony_ci					precision highp float;
8994e5c31af7Sopenharmony_ci					${DECLARATIONS}
8995e5c31af7Sopenharmony_ci
8996e5c31af7Sopenharmony_ci					void main()
8997e5c31af7Sopenharmony_ci					{
8998e5c31af7Sopenharmony_ci						${SETUP}
8999e5c31af7Sopenharmony_ci						out0 = in0 * (2.0 + 1.0);
9000e5c31af7Sopenharmony_ci						${OUTPUT}
9001e5c31af7Sopenharmony_ci					}
9002e5c31af7Sopenharmony_ci				""
9003e5c31af7Sopenharmony_ci			end
9004e5c31af7Sopenharmony_ci			case int_to_uint
9005e5c31af7Sopenharmony_ci				version 320 es
9006e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9007e5c31af7Sopenharmony_ci				values
9008e5c31af7Sopenharmony_ci				{
9009e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9010e5c31af7Sopenharmony_ci					output uint out0 = [ 8 | 4 | 4 | 12 | 20 ];
9011e5c31af7Sopenharmony_ci				}
9012e5c31af7Sopenharmony_ci
9013e5c31af7Sopenharmony_ci				both ""
9014e5c31af7Sopenharmony_ci					#version 320 es
9015e5c31af7Sopenharmony_ci					precision highp float;
9016e5c31af7Sopenharmony_ci					${DECLARATIONS}
9017e5c31af7Sopenharmony_ci
9018e5c31af7Sopenharmony_ci					void main()
9019e5c31af7Sopenharmony_ci					{
9020e5c31af7Sopenharmony_ci						${SETUP}
9021e5c31af7Sopenharmony_ci						out0 = in0 * (1 + 3);
9022e5c31af7Sopenharmony_ci						${OUTPUT}
9023e5c31af7Sopenharmony_ci					}
9024e5c31af7Sopenharmony_ci				""
9025e5c31af7Sopenharmony_ci			end
9026e5c31af7Sopenharmony_ci			case int_to_vec2
9027e5c31af7Sopenharmony_ci				version 320 es
9028e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9029e5c31af7Sopenharmony_ci				values
9030e5c31af7Sopenharmony_ci				{
9031e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9032e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(6.0, 6.0) | vec2(3.0, 3.0) | vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(15.0, 15.0) ];
9033e5c31af7Sopenharmony_ci				}
9034e5c31af7Sopenharmony_ci
9035e5c31af7Sopenharmony_ci				both ""
9036e5c31af7Sopenharmony_ci					#version 320 es
9037e5c31af7Sopenharmony_ci					precision highp float;
9038e5c31af7Sopenharmony_ci					${DECLARATIONS}
9039e5c31af7Sopenharmony_ci
9040e5c31af7Sopenharmony_ci					void main()
9041e5c31af7Sopenharmony_ci					{
9042e5c31af7Sopenharmony_ci						${SETUP}
9043e5c31af7Sopenharmony_ci						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
9044e5c31af7Sopenharmony_ci						${OUTPUT}
9045e5c31af7Sopenharmony_ci					}
9046e5c31af7Sopenharmony_ci				""
9047e5c31af7Sopenharmony_ci			end
9048e5c31af7Sopenharmony_ci			case int_to_vec3
9049e5c31af7Sopenharmony_ci				version 320 es
9050e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9051e5c31af7Sopenharmony_ci				values
9052e5c31af7Sopenharmony_ci				{
9053e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9054e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(6.0, 6.0, 10.0) | vec3(3.0, 3.0, 5.0) | vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(15.0, 15.0, 25.0) ];
9055e5c31af7Sopenharmony_ci				}
9056e5c31af7Sopenharmony_ci
9057e5c31af7Sopenharmony_ci				both ""
9058e5c31af7Sopenharmony_ci					#version 320 es
9059e5c31af7Sopenharmony_ci					precision highp float;
9060e5c31af7Sopenharmony_ci					${DECLARATIONS}
9061e5c31af7Sopenharmony_ci
9062e5c31af7Sopenharmony_ci					void main()
9063e5c31af7Sopenharmony_ci					{
9064e5c31af7Sopenharmony_ci						${SETUP}
9065e5c31af7Sopenharmony_ci						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
9066e5c31af7Sopenharmony_ci						${OUTPUT}
9067e5c31af7Sopenharmony_ci					}
9068e5c31af7Sopenharmony_ci				""
9069e5c31af7Sopenharmony_ci			end
9070e5c31af7Sopenharmony_ci			case int_to_vec4
9071e5c31af7Sopenharmony_ci				version 320 es
9072e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9073e5c31af7Sopenharmony_ci				values
9074e5c31af7Sopenharmony_ci				{
9075e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9076e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(6.0, 6.0, 10.0, 20.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(15.0, 15.0, 25.0, 50.0) ];
9077e5c31af7Sopenharmony_ci				}
9078e5c31af7Sopenharmony_ci
9079e5c31af7Sopenharmony_ci				both ""
9080e5c31af7Sopenharmony_ci					#version 320 es
9081e5c31af7Sopenharmony_ci					precision highp float;
9082e5c31af7Sopenharmony_ci					${DECLARATIONS}
9083e5c31af7Sopenharmony_ci
9084e5c31af7Sopenharmony_ci					void main()
9085e5c31af7Sopenharmony_ci					{
9086e5c31af7Sopenharmony_ci						${SETUP}
9087e5c31af7Sopenharmony_ci						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
9088e5c31af7Sopenharmony_ci						${OUTPUT}
9089e5c31af7Sopenharmony_ci					}
9090e5c31af7Sopenharmony_ci				""
9091e5c31af7Sopenharmony_ci			end
9092e5c31af7Sopenharmony_ci			case int_to_uvec2
9093e5c31af7Sopenharmony_ci				version 320 es
9094e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9095e5c31af7Sopenharmony_ci				values
9096e5c31af7Sopenharmony_ci				{
9097e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9098e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(12, 18) | uvec2(6, 9) | uvec2(6, 9) | uvec2(18, 27) | uvec2(30, 45) ];
9099e5c31af7Sopenharmony_ci				}
9100e5c31af7Sopenharmony_ci
9101e5c31af7Sopenharmony_ci				both ""
9102e5c31af7Sopenharmony_ci					#version 320 es
9103e5c31af7Sopenharmony_ci					precision highp float;
9104e5c31af7Sopenharmony_ci					${DECLARATIONS}
9105e5c31af7Sopenharmony_ci
9106e5c31af7Sopenharmony_ci					void main()
9107e5c31af7Sopenharmony_ci					{
9108e5c31af7Sopenharmony_ci						${SETUP}
9109e5c31af7Sopenharmony_ci						out0 = in0 * (ivec2(2, 3) + ivec2(4, 6));
9110e5c31af7Sopenharmony_ci						${OUTPUT}
9111e5c31af7Sopenharmony_ci					}
9112e5c31af7Sopenharmony_ci				""
9113e5c31af7Sopenharmony_ci			end
9114e5c31af7Sopenharmony_ci			case int_to_uvec3
9115e5c31af7Sopenharmony_ci				version 320 es
9116e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9117e5c31af7Sopenharmony_ci				values
9118e5c31af7Sopenharmony_ci				{
9119e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9120e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(12, 18, 14) | uvec3(6, 9, 7) | uvec3(6, 9, 7) | uvec3(18, 27, 21) | uvec3(30, 45, 35) ];
9121e5c31af7Sopenharmony_ci				}
9122e5c31af7Sopenharmony_ci
9123e5c31af7Sopenharmony_ci				both ""
9124e5c31af7Sopenharmony_ci					#version 320 es
9125e5c31af7Sopenharmony_ci					precision highp float;
9126e5c31af7Sopenharmony_ci					${DECLARATIONS}
9127e5c31af7Sopenharmony_ci
9128e5c31af7Sopenharmony_ci					void main()
9129e5c31af7Sopenharmony_ci					{
9130e5c31af7Sopenharmony_ci						${SETUP}
9131e5c31af7Sopenharmony_ci						out0 = in0 * (ivec3(2, 3, 5) + ivec3(4, 6, 2));
9132e5c31af7Sopenharmony_ci						${OUTPUT}
9133e5c31af7Sopenharmony_ci					}
9134e5c31af7Sopenharmony_ci				""
9135e5c31af7Sopenharmony_ci			end
9136e5c31af7Sopenharmony_ci			case int_to_uvec4
9137e5c31af7Sopenharmony_ci				version 320 es
9138e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9139e5c31af7Sopenharmony_ci				values
9140e5c31af7Sopenharmony_ci				{
9141e5c31af7Sopenharmony_ci					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
9142e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(12, 18, 14, 34) | uvec4(6, 9, 7, 17) | uvec4(6, 9, 7, 17) | uvec4(18, 27, 21, 51) | uvec4(30, 45, 35, 85) ];
9143e5c31af7Sopenharmony_ci				}
9144e5c31af7Sopenharmony_ci
9145e5c31af7Sopenharmony_ci				both ""
9146e5c31af7Sopenharmony_ci					#version 320 es
9147e5c31af7Sopenharmony_ci					precision highp float;
9148e5c31af7Sopenharmony_ci					${DECLARATIONS}
9149e5c31af7Sopenharmony_ci
9150e5c31af7Sopenharmony_ci					void main()
9151e5c31af7Sopenharmony_ci					{
9152e5c31af7Sopenharmony_ci						${SETUP}
9153e5c31af7Sopenharmony_ci						out0 = in0 * (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9));
9154e5c31af7Sopenharmony_ci						${OUTPUT}
9155e5c31af7Sopenharmony_ci					}
9156e5c31af7Sopenharmony_ci				""
9157e5c31af7Sopenharmony_ci			end
9158e5c31af7Sopenharmony_ci			case uint_to_float
9159e5c31af7Sopenharmony_ci				version 320 es
9160e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9161e5c31af7Sopenharmony_ci				values
9162e5c31af7Sopenharmony_ci				{
9163e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9164e5c31af7Sopenharmony_ci					output float out0 = [ 3.0 | 9.0 | 12.0 | 21.0 | 33.0 ];
9165e5c31af7Sopenharmony_ci				}
9166e5c31af7Sopenharmony_ci
9167e5c31af7Sopenharmony_ci				both ""
9168e5c31af7Sopenharmony_ci					#version 320 es
9169e5c31af7Sopenharmony_ci					precision highp float;
9170e5c31af7Sopenharmony_ci					${DECLARATIONS}
9171e5c31af7Sopenharmony_ci
9172e5c31af7Sopenharmony_ci					void main()
9173e5c31af7Sopenharmony_ci					{
9174e5c31af7Sopenharmony_ci						${SETUP}
9175e5c31af7Sopenharmony_ci						out0 = in0 * (2.0 + 1.0);
9176e5c31af7Sopenharmony_ci						${OUTPUT}
9177e5c31af7Sopenharmony_ci					}
9178e5c31af7Sopenharmony_ci				""
9179e5c31af7Sopenharmony_ci			end
9180e5c31af7Sopenharmony_ci			case uint_to_vec2
9181e5c31af7Sopenharmony_ci				version 320 es
9182e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9183e5c31af7Sopenharmony_ci				values
9184e5c31af7Sopenharmony_ci				{
9185e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9186e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(21.0, 21.0) | vec2(33.0, 33.0) ];
9187e5c31af7Sopenharmony_ci				}
9188e5c31af7Sopenharmony_ci
9189e5c31af7Sopenharmony_ci				both ""
9190e5c31af7Sopenharmony_ci					#version 320 es
9191e5c31af7Sopenharmony_ci					precision highp float;
9192e5c31af7Sopenharmony_ci					${DECLARATIONS}
9193e5c31af7Sopenharmony_ci
9194e5c31af7Sopenharmony_ci					void main()
9195e5c31af7Sopenharmony_ci					{
9196e5c31af7Sopenharmony_ci						${SETUP}
9197e5c31af7Sopenharmony_ci						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
9198e5c31af7Sopenharmony_ci						${OUTPUT}
9199e5c31af7Sopenharmony_ci					}
9200e5c31af7Sopenharmony_ci				""
9201e5c31af7Sopenharmony_ci			end
9202e5c31af7Sopenharmony_ci			case uint_to_vec3
9203e5c31af7Sopenharmony_ci				version 320 es
9204e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9205e5c31af7Sopenharmony_ci				values
9206e5c31af7Sopenharmony_ci				{
9207e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9208e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(12.0, 12.0, 20.0) | vec3(21.0, 21.0, 35.0) | vec3(33.0, 33.0, 55.0) ];
9209e5c31af7Sopenharmony_ci				}
9210e5c31af7Sopenharmony_ci
9211e5c31af7Sopenharmony_ci				both ""
9212e5c31af7Sopenharmony_ci					#version 320 es
9213e5c31af7Sopenharmony_ci					precision highp float;
9214e5c31af7Sopenharmony_ci					${DECLARATIONS}
9215e5c31af7Sopenharmony_ci
9216e5c31af7Sopenharmony_ci					void main()
9217e5c31af7Sopenharmony_ci					{
9218e5c31af7Sopenharmony_ci						${SETUP}
9219e5c31af7Sopenharmony_ci						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
9220e5c31af7Sopenharmony_ci						${OUTPUT}
9221e5c31af7Sopenharmony_ci					}
9222e5c31af7Sopenharmony_ci				""
9223e5c31af7Sopenharmony_ci			end
9224e5c31af7Sopenharmony_ci			case uint_to_vec4
9225e5c31af7Sopenharmony_ci				version 320 es
9226e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9227e5c31af7Sopenharmony_ci				values
9228e5c31af7Sopenharmony_ci				{
9229e5c31af7Sopenharmony_ci					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9230e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(12.0, 12.0, 20.0, 40.0) | vec4(21.0, 21.0, 35.0, 70.0) | vec4(33.0, 33.0, 55.0, 110.0) ];
9231e5c31af7Sopenharmony_ci				}
9232e5c31af7Sopenharmony_ci
9233e5c31af7Sopenharmony_ci				both ""
9234e5c31af7Sopenharmony_ci					#version 320 es
9235e5c31af7Sopenharmony_ci					precision highp float;
9236e5c31af7Sopenharmony_ci					${DECLARATIONS}
9237e5c31af7Sopenharmony_ci
9238e5c31af7Sopenharmony_ci					void main()
9239e5c31af7Sopenharmony_ci					{
9240e5c31af7Sopenharmony_ci						${SETUP}
9241e5c31af7Sopenharmony_ci						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
9242e5c31af7Sopenharmony_ci						${OUTPUT}
9243e5c31af7Sopenharmony_ci					}
9244e5c31af7Sopenharmony_ci				""
9245e5c31af7Sopenharmony_ci			end
9246e5c31af7Sopenharmony_ci			case ivec2_to_uvec2
9247e5c31af7Sopenharmony_ci				version 320 es
9248e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9249e5c31af7Sopenharmony_ci				values
9250e5c31af7Sopenharmony_ci				{
9251e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9252e5c31af7Sopenharmony_ci					output uvec2 out0 = [ uvec2(6, 18) | uvec2(12, 9) | uvec2(18, 63) ];
9253e5c31af7Sopenharmony_ci				}
9254e5c31af7Sopenharmony_ci
9255e5c31af7Sopenharmony_ci				both ""
9256e5c31af7Sopenharmony_ci					#version 320 es
9257e5c31af7Sopenharmony_ci					precision highp float;
9258e5c31af7Sopenharmony_ci					${DECLARATIONS}
9259e5c31af7Sopenharmony_ci
9260e5c31af7Sopenharmony_ci					void main()
9261e5c31af7Sopenharmony_ci					{
9262e5c31af7Sopenharmony_ci						${SETUP}
9263e5c31af7Sopenharmony_ci						out0 = in0 * (ivec2(2, 3) + ivec2(4, 6));
9264e5c31af7Sopenharmony_ci						${OUTPUT}
9265e5c31af7Sopenharmony_ci					}
9266e5c31af7Sopenharmony_ci				""
9267e5c31af7Sopenharmony_ci			end
9268e5c31af7Sopenharmony_ci			case ivec2_to_vec2
9269e5c31af7Sopenharmony_ci				version 320 es
9270e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9271e5c31af7Sopenharmony_ci				values
9272e5c31af7Sopenharmony_ci				{
9273e5c31af7Sopenharmony_ci					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9274e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(6.0, 3.0) | vec2(9.0, 21.0) ];
9275e5c31af7Sopenharmony_ci				}
9276e5c31af7Sopenharmony_ci
9277e5c31af7Sopenharmony_ci				both ""
9278e5c31af7Sopenharmony_ci					#version 320 es
9279e5c31af7Sopenharmony_ci					precision highp float;
9280e5c31af7Sopenharmony_ci					${DECLARATIONS}
9281e5c31af7Sopenharmony_ci
9282e5c31af7Sopenharmony_ci					void main()
9283e5c31af7Sopenharmony_ci					{
9284e5c31af7Sopenharmony_ci						${SETUP}
9285e5c31af7Sopenharmony_ci						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
9286e5c31af7Sopenharmony_ci						${OUTPUT}
9287e5c31af7Sopenharmony_ci					}
9288e5c31af7Sopenharmony_ci				""
9289e5c31af7Sopenharmony_ci			end
9290e5c31af7Sopenharmony_ci			case uvec2_to_vec2
9291e5c31af7Sopenharmony_ci				version 320 es
9292e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9293e5c31af7Sopenharmony_ci				values
9294e5c31af7Sopenharmony_ci				{
9295e5c31af7Sopenharmony_ci					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9296e5c31af7Sopenharmony_ci					output vec2 out0 = [ vec2(6.0, 9.0) | vec2(12.0, 18.0) | vec2(3.0, 39.0) ];
9297e5c31af7Sopenharmony_ci				}
9298e5c31af7Sopenharmony_ci
9299e5c31af7Sopenharmony_ci				both ""
9300e5c31af7Sopenharmony_ci					#version 320 es
9301e5c31af7Sopenharmony_ci					precision highp float;
9302e5c31af7Sopenharmony_ci					${DECLARATIONS}
9303e5c31af7Sopenharmony_ci
9304e5c31af7Sopenharmony_ci					void main()
9305e5c31af7Sopenharmony_ci					{
9306e5c31af7Sopenharmony_ci						${SETUP}
9307e5c31af7Sopenharmony_ci						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
9308e5c31af7Sopenharmony_ci						${OUTPUT}
9309e5c31af7Sopenharmony_ci					}
9310e5c31af7Sopenharmony_ci				""
9311e5c31af7Sopenharmony_ci			end
9312e5c31af7Sopenharmony_ci			case ivec3_to_uvec3
9313e5c31af7Sopenharmony_ci				version 320 es
9314e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9315e5c31af7Sopenharmony_ci				values
9316e5c31af7Sopenharmony_ci				{
9317e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9318e5c31af7Sopenharmony_ci					output uvec3 out0 = [ uvec3(6, 18, 21) | uvec3(12, 9, 14) | uvec3(18, 63, 14) ];
9319e5c31af7Sopenharmony_ci				}
9320e5c31af7Sopenharmony_ci
9321e5c31af7Sopenharmony_ci				both ""
9322e5c31af7Sopenharmony_ci					#version 320 es
9323e5c31af7Sopenharmony_ci					precision highp float;
9324e5c31af7Sopenharmony_ci					${DECLARATIONS}
9325e5c31af7Sopenharmony_ci
9326e5c31af7Sopenharmony_ci					void main()
9327e5c31af7Sopenharmony_ci					{
9328e5c31af7Sopenharmony_ci						${SETUP}
9329e5c31af7Sopenharmony_ci						out0 = in0 * (ivec3(2, 3, 5) + ivec3(4, 6, 2));
9330e5c31af7Sopenharmony_ci						${OUTPUT}
9331e5c31af7Sopenharmony_ci					}
9332e5c31af7Sopenharmony_ci				""
9333e5c31af7Sopenharmony_ci			end
9334e5c31af7Sopenharmony_ci			case ivec3_to_vec3
9335e5c31af7Sopenharmony_ci				version 320 es
9336e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9337e5c31af7Sopenharmony_ci				values
9338e5c31af7Sopenharmony_ci				{
9339e5c31af7Sopenharmony_ci					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9340e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(6.0, 3.0, 10.0) | vec3(9.0, 21.0, 10.0) ];
9341e5c31af7Sopenharmony_ci				}
9342e5c31af7Sopenharmony_ci
9343e5c31af7Sopenharmony_ci				both ""
9344e5c31af7Sopenharmony_ci					#version 320 es
9345e5c31af7Sopenharmony_ci					precision highp float;
9346e5c31af7Sopenharmony_ci					${DECLARATIONS}
9347e5c31af7Sopenharmony_ci
9348e5c31af7Sopenharmony_ci					void main()
9349e5c31af7Sopenharmony_ci					{
9350e5c31af7Sopenharmony_ci						${SETUP}
9351e5c31af7Sopenharmony_ci						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
9352e5c31af7Sopenharmony_ci						${OUTPUT}
9353e5c31af7Sopenharmony_ci					}
9354e5c31af7Sopenharmony_ci				""
9355e5c31af7Sopenharmony_ci			end
9356e5c31af7Sopenharmony_ci			case uvec3_to_vec3
9357e5c31af7Sopenharmony_ci				version 320 es
9358e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9359e5c31af7Sopenharmony_ci				values
9360e5c31af7Sopenharmony_ci				{
9361e5c31af7Sopenharmony_ci					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
9362e5c31af7Sopenharmony_ci					output vec3 out0 = [ vec3(6.0, 9.0, 25.0) | vec3(12.0, 18.0, 10.0) | vec3(3.0, 39.0, 35.0) ];
9363e5c31af7Sopenharmony_ci				}
9364e5c31af7Sopenharmony_ci
9365e5c31af7Sopenharmony_ci				both ""
9366e5c31af7Sopenharmony_ci					#version 320 es
9367e5c31af7Sopenharmony_ci					precision highp float;
9368e5c31af7Sopenharmony_ci					${DECLARATIONS}
9369e5c31af7Sopenharmony_ci
9370e5c31af7Sopenharmony_ci					void main()
9371e5c31af7Sopenharmony_ci					{
9372e5c31af7Sopenharmony_ci						${SETUP}
9373e5c31af7Sopenharmony_ci						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
9374e5c31af7Sopenharmony_ci						${OUTPUT}
9375e5c31af7Sopenharmony_ci					}
9376e5c31af7Sopenharmony_ci				""
9377e5c31af7Sopenharmony_ci			end
9378e5c31af7Sopenharmony_ci			case ivec4_to_uvec4
9379e5c31af7Sopenharmony_ci				version 320 es
9380e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9381e5c31af7Sopenharmony_ci				values
9382e5c31af7Sopenharmony_ci				{
9383e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
9384e5c31af7Sopenharmony_ci					output uvec4 out0 = [ uvec4(6, 18, 21, 68) | uvec4(12, 9, 14, 102) | uvec4(18, 63, 14, 85) ];
9385e5c31af7Sopenharmony_ci				}
9386e5c31af7Sopenharmony_ci
9387e5c31af7Sopenharmony_ci				both ""
9388e5c31af7Sopenharmony_ci					#version 320 es
9389e5c31af7Sopenharmony_ci					precision highp float;
9390e5c31af7Sopenharmony_ci					${DECLARATIONS}
9391e5c31af7Sopenharmony_ci
9392e5c31af7Sopenharmony_ci					void main()
9393e5c31af7Sopenharmony_ci					{
9394e5c31af7Sopenharmony_ci						${SETUP}
9395e5c31af7Sopenharmony_ci						out0 = in0 * (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9));
9396e5c31af7Sopenharmony_ci						${OUTPUT}
9397e5c31af7Sopenharmony_ci					}
9398e5c31af7Sopenharmony_ci				""
9399e5c31af7Sopenharmony_ci			end
9400e5c31af7Sopenharmony_ci			case ivec4_to_vec4
9401e5c31af7Sopenharmony_ci				version 320 es
9402e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9403e5c31af7Sopenharmony_ci				values
9404e5c31af7Sopenharmony_ci				{
9405e5c31af7Sopenharmony_ci					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
9406e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(6.0, 3.0, 10.0, 60.0) | vec4(9.0, 21.0, 10.0, 50.0) ];
9407e5c31af7Sopenharmony_ci				}
9408e5c31af7Sopenharmony_ci
9409e5c31af7Sopenharmony_ci				both ""
9410e5c31af7Sopenharmony_ci					#version 320 es
9411e5c31af7Sopenharmony_ci					precision highp float;
9412e5c31af7Sopenharmony_ci					${DECLARATIONS}
9413e5c31af7Sopenharmony_ci
9414e5c31af7Sopenharmony_ci					void main()
9415e5c31af7Sopenharmony_ci					{
9416e5c31af7Sopenharmony_ci						${SETUP}
9417e5c31af7Sopenharmony_ci						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
9418e5c31af7Sopenharmony_ci						${OUTPUT}
9419e5c31af7Sopenharmony_ci					}
9420e5c31af7Sopenharmony_ci				""
9421e5c31af7Sopenharmony_ci			end
9422e5c31af7Sopenharmony_ci			case uvec4_to_vec4
9423e5c31af7Sopenharmony_ci				version 320 es
9424e5c31af7Sopenharmony_ci				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9425e5c31af7Sopenharmony_ci				values
9426e5c31af7Sopenharmony_ci				{
9427e5c31af7Sopenharmony_ci					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
9428e5c31af7Sopenharmony_ci					output vec4 out0 = [ vec4(6.0, 9.0, 25.0, 80.0) | vec4(12.0, 18.0, 10.0, 90.0) | vec4(3.0, 39.0, 35.0, 40.0) ];
9429e5c31af7Sopenharmony_ci				}
9430e5c31af7Sopenharmony_ci
9431e5c31af7Sopenharmony_ci				both ""
9432e5c31af7Sopenharmony_ci					#version 320 es
9433e5c31af7Sopenharmony_ci					precision highp float;
9434e5c31af7Sopenharmony_ci					${DECLARATIONS}
9435e5c31af7Sopenharmony_ci
9436e5c31af7Sopenharmony_ci					void main()
9437e5c31af7Sopenharmony_ci					{
9438e5c31af7Sopenharmony_ci						${SETUP}
9439e5c31af7Sopenharmony_ci						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
9440e5c31af7Sopenharmony_ci						${OUTPUT}
9441e5c31af7Sopenharmony_ci					}
9442e5c31af7Sopenharmony_ci				""
9443e5c31af7Sopenharmony_ci			end
9444e5c31af7Sopenharmony_ci
9445e5c31af7Sopenharmony_ci		end # input_outside_parens
9446e5c31af7Sopenharmony_ci
9447e5c31af7Sopenharmony_ci	end # literal_before_paren_expr
9448e5c31af7Sopenharmony_ci
9449e5c31af7Sopenharmony_ciend # parenthesized_expressions
9450e5c31af7Sopenharmony_cigroup invalid "Invalid conversions"
9451e5c31af7Sopenharmony_ci
9452e5c31af7Sopenharmony_ci	group variables "Single variables"
9453e5c31af7Sopenharmony_ci
9454e5c31af7Sopenharmony_ci		case uint_to_int
9455e5c31af7Sopenharmony_ci			expect compile_fail
9456e5c31af7Sopenharmony_ci			version 320 es
9457e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9458e5c31af7Sopenharmony_ci			values
9459e5c31af7Sopenharmony_ci			{
9460e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9461e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 | 2 | 2 ];
9462e5c31af7Sopenharmony_ci			}
9463e5c31af7Sopenharmony_ci
9464e5c31af7Sopenharmony_ci			both ""
9465e5c31af7Sopenharmony_ci				#version 320 es
9466e5c31af7Sopenharmony_ci				precision highp float;
9467e5c31af7Sopenharmony_ci				${DECLARATIONS}
9468e5c31af7Sopenharmony_ci
9469e5c31af7Sopenharmony_ci				void main()
9470e5c31af7Sopenharmony_ci				{
9471e5c31af7Sopenharmony_ci					${SETUP}
9472e5c31af7Sopenharmony_ci					out0 = in0 + 2;
9473e5c31af7Sopenharmony_ci					${OUTPUT}
9474e5c31af7Sopenharmony_ci				}
9475e5c31af7Sopenharmony_ci			""
9476e5c31af7Sopenharmony_ci		end
9477e5c31af7Sopenharmony_ci		case uint_to_ivec2
9478e5c31af7Sopenharmony_ci			expect compile_fail
9479e5c31af7Sopenharmony_ci			version 320 es
9480e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9481e5c31af7Sopenharmony_ci			values
9482e5c31af7Sopenharmony_ci			{
9483e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9484e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
9485e5c31af7Sopenharmony_ci			}
9486e5c31af7Sopenharmony_ci
9487e5c31af7Sopenharmony_ci			both ""
9488e5c31af7Sopenharmony_ci				#version 320 es
9489e5c31af7Sopenharmony_ci				precision highp float;
9490e5c31af7Sopenharmony_ci				${DECLARATIONS}
9491e5c31af7Sopenharmony_ci
9492e5c31af7Sopenharmony_ci				void main()
9493e5c31af7Sopenharmony_ci				{
9494e5c31af7Sopenharmony_ci					${SETUP}
9495e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
9496e5c31af7Sopenharmony_ci					${OUTPUT}
9497e5c31af7Sopenharmony_ci				}
9498e5c31af7Sopenharmony_ci			""
9499e5c31af7Sopenharmony_ci		end
9500e5c31af7Sopenharmony_ci		case uint_to_ivec3
9501e5c31af7Sopenharmony_ci			expect compile_fail
9502e5c31af7Sopenharmony_ci			version 320 es
9503e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9504e5c31af7Sopenharmony_ci			values
9505e5c31af7Sopenharmony_ci			{
9506e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9507e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
9508e5c31af7Sopenharmony_ci			}
9509e5c31af7Sopenharmony_ci
9510e5c31af7Sopenharmony_ci			both ""
9511e5c31af7Sopenharmony_ci				#version 320 es
9512e5c31af7Sopenharmony_ci				precision highp float;
9513e5c31af7Sopenharmony_ci				${DECLARATIONS}
9514e5c31af7Sopenharmony_ci
9515e5c31af7Sopenharmony_ci				void main()
9516e5c31af7Sopenharmony_ci				{
9517e5c31af7Sopenharmony_ci					${SETUP}
9518e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
9519e5c31af7Sopenharmony_ci					${OUTPUT}
9520e5c31af7Sopenharmony_ci				}
9521e5c31af7Sopenharmony_ci			""
9522e5c31af7Sopenharmony_ci		end
9523e5c31af7Sopenharmony_ci		case uint_to_ivec4
9524e5c31af7Sopenharmony_ci			expect compile_fail
9525e5c31af7Sopenharmony_ci			version 320 es
9526e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9527e5c31af7Sopenharmony_ci			values
9528e5c31af7Sopenharmony_ci			{
9529e5c31af7Sopenharmony_ci				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
9530e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
9531e5c31af7Sopenharmony_ci			}
9532e5c31af7Sopenharmony_ci
9533e5c31af7Sopenharmony_ci			both ""
9534e5c31af7Sopenharmony_ci				#version 320 es
9535e5c31af7Sopenharmony_ci				precision highp float;
9536e5c31af7Sopenharmony_ci				${DECLARATIONS}
9537e5c31af7Sopenharmony_ci
9538e5c31af7Sopenharmony_ci				void main()
9539e5c31af7Sopenharmony_ci				{
9540e5c31af7Sopenharmony_ci					${SETUP}
9541e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
9542e5c31af7Sopenharmony_ci					${OUTPUT}
9543e5c31af7Sopenharmony_ci				}
9544e5c31af7Sopenharmony_ci			""
9545e5c31af7Sopenharmony_ci		end
9546e5c31af7Sopenharmony_ci		case ivec2_to_uint
9547e5c31af7Sopenharmony_ci			expect compile_fail
9548e5c31af7Sopenharmony_ci			version 320 es
9549e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9550e5c31af7Sopenharmony_ci			values
9551e5c31af7Sopenharmony_ci			{
9552e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9553e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
9554e5c31af7Sopenharmony_ci			}
9555e5c31af7Sopenharmony_ci
9556e5c31af7Sopenharmony_ci			both ""
9557e5c31af7Sopenharmony_ci				#version 320 es
9558e5c31af7Sopenharmony_ci				precision highp float;
9559e5c31af7Sopenharmony_ci				${DECLARATIONS}
9560e5c31af7Sopenharmony_ci
9561e5c31af7Sopenharmony_ci				void main()
9562e5c31af7Sopenharmony_ci				{
9563e5c31af7Sopenharmony_ci					${SETUP}
9564e5c31af7Sopenharmony_ci					out0 = in0 + 1;
9565e5c31af7Sopenharmony_ci					${OUTPUT}
9566e5c31af7Sopenharmony_ci				}
9567e5c31af7Sopenharmony_ci			""
9568e5c31af7Sopenharmony_ci		end
9569e5c31af7Sopenharmony_ci		case ivec2_to_ivec3
9570e5c31af7Sopenharmony_ci			expect compile_fail
9571e5c31af7Sopenharmony_ci			version 320 es
9572e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9573e5c31af7Sopenharmony_ci			values
9574e5c31af7Sopenharmony_ci			{
9575e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9576e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
9577e5c31af7Sopenharmony_ci			}
9578e5c31af7Sopenharmony_ci
9579e5c31af7Sopenharmony_ci			both ""
9580e5c31af7Sopenharmony_ci				#version 320 es
9581e5c31af7Sopenharmony_ci				precision highp float;
9582e5c31af7Sopenharmony_ci				${DECLARATIONS}
9583e5c31af7Sopenharmony_ci
9584e5c31af7Sopenharmony_ci				void main()
9585e5c31af7Sopenharmony_ci				{
9586e5c31af7Sopenharmony_ci					${SETUP}
9587e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
9588e5c31af7Sopenharmony_ci					${OUTPUT}
9589e5c31af7Sopenharmony_ci				}
9590e5c31af7Sopenharmony_ci			""
9591e5c31af7Sopenharmony_ci		end
9592e5c31af7Sopenharmony_ci		case ivec2_to_uvec3
9593e5c31af7Sopenharmony_ci			expect compile_fail
9594e5c31af7Sopenharmony_ci			version 320 es
9595e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9596e5c31af7Sopenharmony_ci			values
9597e5c31af7Sopenharmony_ci			{
9598e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9599e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
9600e5c31af7Sopenharmony_ci			}
9601e5c31af7Sopenharmony_ci
9602e5c31af7Sopenharmony_ci			both ""
9603e5c31af7Sopenharmony_ci				#version 320 es
9604e5c31af7Sopenharmony_ci				precision highp float;
9605e5c31af7Sopenharmony_ci				${DECLARATIONS}
9606e5c31af7Sopenharmony_ci
9607e5c31af7Sopenharmony_ci				void main()
9608e5c31af7Sopenharmony_ci				{
9609e5c31af7Sopenharmony_ci					${SETUP}
9610e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
9611e5c31af7Sopenharmony_ci					${OUTPUT}
9612e5c31af7Sopenharmony_ci				}
9613e5c31af7Sopenharmony_ci			""
9614e5c31af7Sopenharmony_ci		end
9615e5c31af7Sopenharmony_ci		case ivec2_to_ivec4
9616e5c31af7Sopenharmony_ci			expect compile_fail
9617e5c31af7Sopenharmony_ci			version 320 es
9618e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9619e5c31af7Sopenharmony_ci			values
9620e5c31af7Sopenharmony_ci			{
9621e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9622e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
9623e5c31af7Sopenharmony_ci			}
9624e5c31af7Sopenharmony_ci
9625e5c31af7Sopenharmony_ci			both ""
9626e5c31af7Sopenharmony_ci				#version 320 es
9627e5c31af7Sopenharmony_ci				precision highp float;
9628e5c31af7Sopenharmony_ci				${DECLARATIONS}
9629e5c31af7Sopenharmony_ci
9630e5c31af7Sopenharmony_ci				void main()
9631e5c31af7Sopenharmony_ci				{
9632e5c31af7Sopenharmony_ci					${SETUP}
9633e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
9634e5c31af7Sopenharmony_ci					${OUTPUT}
9635e5c31af7Sopenharmony_ci				}
9636e5c31af7Sopenharmony_ci			""
9637e5c31af7Sopenharmony_ci		end
9638e5c31af7Sopenharmony_ci		case ivec2_to_uvec4
9639e5c31af7Sopenharmony_ci			expect compile_fail
9640e5c31af7Sopenharmony_ci			version 320 es
9641e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9642e5c31af7Sopenharmony_ci			values
9643e5c31af7Sopenharmony_ci			{
9644e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9645e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
9646e5c31af7Sopenharmony_ci			}
9647e5c31af7Sopenharmony_ci
9648e5c31af7Sopenharmony_ci			both ""
9649e5c31af7Sopenharmony_ci				#version 320 es
9650e5c31af7Sopenharmony_ci				precision highp float;
9651e5c31af7Sopenharmony_ci				${DECLARATIONS}
9652e5c31af7Sopenharmony_ci
9653e5c31af7Sopenharmony_ci				void main()
9654e5c31af7Sopenharmony_ci				{
9655e5c31af7Sopenharmony_ci					${SETUP}
9656e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
9657e5c31af7Sopenharmony_ci					${OUTPUT}
9658e5c31af7Sopenharmony_ci				}
9659e5c31af7Sopenharmony_ci			""
9660e5c31af7Sopenharmony_ci		end
9661e5c31af7Sopenharmony_ci		case ivec2_to_vec3
9662e5c31af7Sopenharmony_ci			expect compile_fail
9663e5c31af7Sopenharmony_ci			version 320 es
9664e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9665e5c31af7Sopenharmony_ci			values
9666e5c31af7Sopenharmony_ci			{
9667e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9668e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
9669e5c31af7Sopenharmony_ci			}
9670e5c31af7Sopenharmony_ci
9671e5c31af7Sopenharmony_ci			both ""
9672e5c31af7Sopenharmony_ci				#version 320 es
9673e5c31af7Sopenharmony_ci				precision highp float;
9674e5c31af7Sopenharmony_ci				${DECLARATIONS}
9675e5c31af7Sopenharmony_ci
9676e5c31af7Sopenharmony_ci				void main()
9677e5c31af7Sopenharmony_ci				{
9678e5c31af7Sopenharmony_ci					${SETUP}
9679e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
9680e5c31af7Sopenharmony_ci					${OUTPUT}
9681e5c31af7Sopenharmony_ci				}
9682e5c31af7Sopenharmony_ci			""
9683e5c31af7Sopenharmony_ci		end
9684e5c31af7Sopenharmony_ci		case ivec2_to_vec4
9685e5c31af7Sopenharmony_ci			expect compile_fail
9686e5c31af7Sopenharmony_ci			version 320 es
9687e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9688e5c31af7Sopenharmony_ci			values
9689e5c31af7Sopenharmony_ci			{
9690e5c31af7Sopenharmony_ci				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
9691e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
9692e5c31af7Sopenharmony_ci			}
9693e5c31af7Sopenharmony_ci
9694e5c31af7Sopenharmony_ci			both ""
9695e5c31af7Sopenharmony_ci				#version 320 es
9696e5c31af7Sopenharmony_ci				precision highp float;
9697e5c31af7Sopenharmony_ci				${DECLARATIONS}
9698e5c31af7Sopenharmony_ci
9699e5c31af7Sopenharmony_ci				void main()
9700e5c31af7Sopenharmony_ci				{
9701e5c31af7Sopenharmony_ci					${SETUP}
9702e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
9703e5c31af7Sopenharmony_ci					${OUTPUT}
9704e5c31af7Sopenharmony_ci				}
9705e5c31af7Sopenharmony_ci			""
9706e5c31af7Sopenharmony_ci		end
9707e5c31af7Sopenharmony_ci		case uvec2_to_int
9708e5c31af7Sopenharmony_ci			expect compile_fail
9709e5c31af7Sopenharmony_ci			version 320 es
9710e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9711e5c31af7Sopenharmony_ci			values
9712e5c31af7Sopenharmony_ci			{
9713e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9714e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
9715e5c31af7Sopenharmony_ci			}
9716e5c31af7Sopenharmony_ci
9717e5c31af7Sopenharmony_ci			both ""
9718e5c31af7Sopenharmony_ci				#version 320 es
9719e5c31af7Sopenharmony_ci				precision highp float;
9720e5c31af7Sopenharmony_ci				${DECLARATIONS}
9721e5c31af7Sopenharmony_ci
9722e5c31af7Sopenharmony_ci				void main()
9723e5c31af7Sopenharmony_ci				{
9724e5c31af7Sopenharmony_ci					${SETUP}
9725e5c31af7Sopenharmony_ci					out0 = in0 + 2;
9726e5c31af7Sopenharmony_ci					${OUTPUT}
9727e5c31af7Sopenharmony_ci				}
9728e5c31af7Sopenharmony_ci			""
9729e5c31af7Sopenharmony_ci		end
9730e5c31af7Sopenharmony_ci		case uvec2_to_ivec2
9731e5c31af7Sopenharmony_ci			expect compile_fail
9732e5c31af7Sopenharmony_ci			version 320 es
9733e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9734e5c31af7Sopenharmony_ci			values
9735e5c31af7Sopenharmony_ci			{
9736e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9737e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
9738e5c31af7Sopenharmony_ci			}
9739e5c31af7Sopenharmony_ci
9740e5c31af7Sopenharmony_ci			both ""
9741e5c31af7Sopenharmony_ci				#version 320 es
9742e5c31af7Sopenharmony_ci				precision highp float;
9743e5c31af7Sopenharmony_ci				${DECLARATIONS}
9744e5c31af7Sopenharmony_ci
9745e5c31af7Sopenharmony_ci				void main()
9746e5c31af7Sopenharmony_ci				{
9747e5c31af7Sopenharmony_ci					${SETUP}
9748e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
9749e5c31af7Sopenharmony_ci					${OUTPUT}
9750e5c31af7Sopenharmony_ci				}
9751e5c31af7Sopenharmony_ci			""
9752e5c31af7Sopenharmony_ci		end
9753e5c31af7Sopenharmony_ci		case uvec2_to_ivec3
9754e5c31af7Sopenharmony_ci			expect compile_fail
9755e5c31af7Sopenharmony_ci			version 320 es
9756e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9757e5c31af7Sopenharmony_ci			values
9758e5c31af7Sopenharmony_ci			{
9759e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9760e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
9761e5c31af7Sopenharmony_ci			}
9762e5c31af7Sopenharmony_ci
9763e5c31af7Sopenharmony_ci			both ""
9764e5c31af7Sopenharmony_ci				#version 320 es
9765e5c31af7Sopenharmony_ci				precision highp float;
9766e5c31af7Sopenharmony_ci				${DECLARATIONS}
9767e5c31af7Sopenharmony_ci
9768e5c31af7Sopenharmony_ci				void main()
9769e5c31af7Sopenharmony_ci				{
9770e5c31af7Sopenharmony_ci					${SETUP}
9771e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
9772e5c31af7Sopenharmony_ci					${OUTPUT}
9773e5c31af7Sopenharmony_ci				}
9774e5c31af7Sopenharmony_ci			""
9775e5c31af7Sopenharmony_ci		end
9776e5c31af7Sopenharmony_ci		case uvec2_to_uvec3
9777e5c31af7Sopenharmony_ci			expect compile_fail
9778e5c31af7Sopenharmony_ci			version 320 es
9779e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9780e5c31af7Sopenharmony_ci			values
9781e5c31af7Sopenharmony_ci			{
9782e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9783e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
9784e5c31af7Sopenharmony_ci			}
9785e5c31af7Sopenharmony_ci
9786e5c31af7Sopenharmony_ci			both ""
9787e5c31af7Sopenharmony_ci				#version 320 es
9788e5c31af7Sopenharmony_ci				precision highp float;
9789e5c31af7Sopenharmony_ci				${DECLARATIONS}
9790e5c31af7Sopenharmony_ci
9791e5c31af7Sopenharmony_ci				void main()
9792e5c31af7Sopenharmony_ci				{
9793e5c31af7Sopenharmony_ci					${SETUP}
9794e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
9795e5c31af7Sopenharmony_ci					${OUTPUT}
9796e5c31af7Sopenharmony_ci				}
9797e5c31af7Sopenharmony_ci			""
9798e5c31af7Sopenharmony_ci		end
9799e5c31af7Sopenharmony_ci		case uvec2_to_ivec4
9800e5c31af7Sopenharmony_ci			expect compile_fail
9801e5c31af7Sopenharmony_ci			version 320 es
9802e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9803e5c31af7Sopenharmony_ci			values
9804e5c31af7Sopenharmony_ci			{
9805e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9806e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
9807e5c31af7Sopenharmony_ci			}
9808e5c31af7Sopenharmony_ci
9809e5c31af7Sopenharmony_ci			both ""
9810e5c31af7Sopenharmony_ci				#version 320 es
9811e5c31af7Sopenharmony_ci				precision highp float;
9812e5c31af7Sopenharmony_ci				${DECLARATIONS}
9813e5c31af7Sopenharmony_ci
9814e5c31af7Sopenharmony_ci				void main()
9815e5c31af7Sopenharmony_ci				{
9816e5c31af7Sopenharmony_ci					${SETUP}
9817e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
9818e5c31af7Sopenharmony_ci					${OUTPUT}
9819e5c31af7Sopenharmony_ci				}
9820e5c31af7Sopenharmony_ci			""
9821e5c31af7Sopenharmony_ci		end
9822e5c31af7Sopenharmony_ci		case uvec2_to_uvec4
9823e5c31af7Sopenharmony_ci			expect compile_fail
9824e5c31af7Sopenharmony_ci			version 320 es
9825e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9826e5c31af7Sopenharmony_ci			values
9827e5c31af7Sopenharmony_ci			{
9828e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9829e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
9830e5c31af7Sopenharmony_ci			}
9831e5c31af7Sopenharmony_ci
9832e5c31af7Sopenharmony_ci			both ""
9833e5c31af7Sopenharmony_ci				#version 320 es
9834e5c31af7Sopenharmony_ci				precision highp float;
9835e5c31af7Sopenharmony_ci				${DECLARATIONS}
9836e5c31af7Sopenharmony_ci
9837e5c31af7Sopenharmony_ci				void main()
9838e5c31af7Sopenharmony_ci				{
9839e5c31af7Sopenharmony_ci					${SETUP}
9840e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
9841e5c31af7Sopenharmony_ci					${OUTPUT}
9842e5c31af7Sopenharmony_ci				}
9843e5c31af7Sopenharmony_ci			""
9844e5c31af7Sopenharmony_ci		end
9845e5c31af7Sopenharmony_ci		case uvec2_to_vec3
9846e5c31af7Sopenharmony_ci			expect compile_fail
9847e5c31af7Sopenharmony_ci			version 320 es
9848e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9849e5c31af7Sopenharmony_ci			values
9850e5c31af7Sopenharmony_ci			{
9851e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9852e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
9853e5c31af7Sopenharmony_ci			}
9854e5c31af7Sopenharmony_ci
9855e5c31af7Sopenharmony_ci			both ""
9856e5c31af7Sopenharmony_ci				#version 320 es
9857e5c31af7Sopenharmony_ci				precision highp float;
9858e5c31af7Sopenharmony_ci				${DECLARATIONS}
9859e5c31af7Sopenharmony_ci
9860e5c31af7Sopenharmony_ci				void main()
9861e5c31af7Sopenharmony_ci				{
9862e5c31af7Sopenharmony_ci					${SETUP}
9863e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
9864e5c31af7Sopenharmony_ci					${OUTPUT}
9865e5c31af7Sopenharmony_ci				}
9866e5c31af7Sopenharmony_ci			""
9867e5c31af7Sopenharmony_ci		end
9868e5c31af7Sopenharmony_ci		case uvec2_to_vec4
9869e5c31af7Sopenharmony_ci			expect compile_fail
9870e5c31af7Sopenharmony_ci			version 320 es
9871e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9872e5c31af7Sopenharmony_ci			values
9873e5c31af7Sopenharmony_ci			{
9874e5c31af7Sopenharmony_ci				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
9875e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
9876e5c31af7Sopenharmony_ci			}
9877e5c31af7Sopenharmony_ci
9878e5c31af7Sopenharmony_ci			both ""
9879e5c31af7Sopenharmony_ci				#version 320 es
9880e5c31af7Sopenharmony_ci				precision highp float;
9881e5c31af7Sopenharmony_ci				${DECLARATIONS}
9882e5c31af7Sopenharmony_ci
9883e5c31af7Sopenharmony_ci				void main()
9884e5c31af7Sopenharmony_ci				{
9885e5c31af7Sopenharmony_ci					${SETUP}
9886e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
9887e5c31af7Sopenharmony_ci					${OUTPUT}
9888e5c31af7Sopenharmony_ci				}
9889e5c31af7Sopenharmony_ci			""
9890e5c31af7Sopenharmony_ci		end
9891e5c31af7Sopenharmony_ci		case ivec3_to_uint
9892e5c31af7Sopenharmony_ci			expect compile_fail
9893e5c31af7Sopenharmony_ci			version 320 es
9894e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9895e5c31af7Sopenharmony_ci			values
9896e5c31af7Sopenharmony_ci			{
9897e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9898e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
9899e5c31af7Sopenharmony_ci			}
9900e5c31af7Sopenharmony_ci
9901e5c31af7Sopenharmony_ci			both ""
9902e5c31af7Sopenharmony_ci				#version 320 es
9903e5c31af7Sopenharmony_ci				precision highp float;
9904e5c31af7Sopenharmony_ci				${DECLARATIONS}
9905e5c31af7Sopenharmony_ci
9906e5c31af7Sopenharmony_ci				void main()
9907e5c31af7Sopenharmony_ci				{
9908e5c31af7Sopenharmony_ci					${SETUP}
9909e5c31af7Sopenharmony_ci					out0 = in0 + 1;
9910e5c31af7Sopenharmony_ci					${OUTPUT}
9911e5c31af7Sopenharmony_ci				}
9912e5c31af7Sopenharmony_ci			""
9913e5c31af7Sopenharmony_ci		end
9914e5c31af7Sopenharmony_ci		case ivec3_to_ivec2
9915e5c31af7Sopenharmony_ci			expect compile_fail
9916e5c31af7Sopenharmony_ci			version 320 es
9917e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9918e5c31af7Sopenharmony_ci			values
9919e5c31af7Sopenharmony_ci			{
9920e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9921e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
9922e5c31af7Sopenharmony_ci			}
9923e5c31af7Sopenharmony_ci
9924e5c31af7Sopenharmony_ci			both ""
9925e5c31af7Sopenharmony_ci				#version 320 es
9926e5c31af7Sopenharmony_ci				precision highp float;
9927e5c31af7Sopenharmony_ci				${DECLARATIONS}
9928e5c31af7Sopenharmony_ci
9929e5c31af7Sopenharmony_ci				void main()
9930e5c31af7Sopenharmony_ci				{
9931e5c31af7Sopenharmony_ci					${SETUP}
9932e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
9933e5c31af7Sopenharmony_ci					${OUTPUT}
9934e5c31af7Sopenharmony_ci				}
9935e5c31af7Sopenharmony_ci			""
9936e5c31af7Sopenharmony_ci		end
9937e5c31af7Sopenharmony_ci		case ivec3_to_uvec2
9938e5c31af7Sopenharmony_ci			expect compile_fail
9939e5c31af7Sopenharmony_ci			version 320 es
9940e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9941e5c31af7Sopenharmony_ci			values
9942e5c31af7Sopenharmony_ci			{
9943e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9944e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
9945e5c31af7Sopenharmony_ci			}
9946e5c31af7Sopenharmony_ci
9947e5c31af7Sopenharmony_ci			both ""
9948e5c31af7Sopenharmony_ci				#version 320 es
9949e5c31af7Sopenharmony_ci				precision highp float;
9950e5c31af7Sopenharmony_ci				${DECLARATIONS}
9951e5c31af7Sopenharmony_ci
9952e5c31af7Sopenharmony_ci				void main()
9953e5c31af7Sopenharmony_ci				{
9954e5c31af7Sopenharmony_ci					${SETUP}
9955e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
9956e5c31af7Sopenharmony_ci					${OUTPUT}
9957e5c31af7Sopenharmony_ci				}
9958e5c31af7Sopenharmony_ci			""
9959e5c31af7Sopenharmony_ci		end
9960e5c31af7Sopenharmony_ci		case ivec3_to_ivec4
9961e5c31af7Sopenharmony_ci			expect compile_fail
9962e5c31af7Sopenharmony_ci			version 320 es
9963e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9964e5c31af7Sopenharmony_ci			values
9965e5c31af7Sopenharmony_ci			{
9966e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9967e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
9968e5c31af7Sopenharmony_ci			}
9969e5c31af7Sopenharmony_ci
9970e5c31af7Sopenharmony_ci			both ""
9971e5c31af7Sopenharmony_ci				#version 320 es
9972e5c31af7Sopenharmony_ci				precision highp float;
9973e5c31af7Sopenharmony_ci				${DECLARATIONS}
9974e5c31af7Sopenharmony_ci
9975e5c31af7Sopenharmony_ci				void main()
9976e5c31af7Sopenharmony_ci				{
9977e5c31af7Sopenharmony_ci					${SETUP}
9978e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
9979e5c31af7Sopenharmony_ci					${OUTPUT}
9980e5c31af7Sopenharmony_ci				}
9981e5c31af7Sopenharmony_ci			""
9982e5c31af7Sopenharmony_ci		end
9983e5c31af7Sopenharmony_ci		case ivec3_to_uvec4
9984e5c31af7Sopenharmony_ci			expect compile_fail
9985e5c31af7Sopenharmony_ci			version 320 es
9986e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
9987e5c31af7Sopenharmony_ci			values
9988e5c31af7Sopenharmony_ci			{
9989e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
9990e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
9991e5c31af7Sopenharmony_ci			}
9992e5c31af7Sopenharmony_ci
9993e5c31af7Sopenharmony_ci			both ""
9994e5c31af7Sopenharmony_ci				#version 320 es
9995e5c31af7Sopenharmony_ci				precision highp float;
9996e5c31af7Sopenharmony_ci				${DECLARATIONS}
9997e5c31af7Sopenharmony_ci
9998e5c31af7Sopenharmony_ci				void main()
9999e5c31af7Sopenharmony_ci				{
10000e5c31af7Sopenharmony_ci					${SETUP}
10001e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
10002e5c31af7Sopenharmony_ci					${OUTPUT}
10003e5c31af7Sopenharmony_ci				}
10004e5c31af7Sopenharmony_ci			""
10005e5c31af7Sopenharmony_ci		end
10006e5c31af7Sopenharmony_ci		case ivec3_to_vec2
10007e5c31af7Sopenharmony_ci			expect compile_fail
10008e5c31af7Sopenharmony_ci			version 320 es
10009e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10010e5c31af7Sopenharmony_ci			values
10011e5c31af7Sopenharmony_ci			{
10012e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
10013e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
10014e5c31af7Sopenharmony_ci			}
10015e5c31af7Sopenharmony_ci
10016e5c31af7Sopenharmony_ci			both ""
10017e5c31af7Sopenharmony_ci				#version 320 es
10018e5c31af7Sopenharmony_ci				precision highp float;
10019e5c31af7Sopenharmony_ci				${DECLARATIONS}
10020e5c31af7Sopenharmony_ci
10021e5c31af7Sopenharmony_ci				void main()
10022e5c31af7Sopenharmony_ci				{
10023e5c31af7Sopenharmony_ci					${SETUP}
10024e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
10025e5c31af7Sopenharmony_ci					${OUTPUT}
10026e5c31af7Sopenharmony_ci				}
10027e5c31af7Sopenharmony_ci			""
10028e5c31af7Sopenharmony_ci		end
10029e5c31af7Sopenharmony_ci		case ivec3_to_vec4
10030e5c31af7Sopenharmony_ci			expect compile_fail
10031e5c31af7Sopenharmony_ci			version 320 es
10032e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10033e5c31af7Sopenharmony_ci			values
10034e5c31af7Sopenharmony_ci			{
10035e5c31af7Sopenharmony_ci				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
10036e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
10037e5c31af7Sopenharmony_ci			}
10038e5c31af7Sopenharmony_ci
10039e5c31af7Sopenharmony_ci			both ""
10040e5c31af7Sopenharmony_ci				#version 320 es
10041e5c31af7Sopenharmony_ci				precision highp float;
10042e5c31af7Sopenharmony_ci				${DECLARATIONS}
10043e5c31af7Sopenharmony_ci
10044e5c31af7Sopenharmony_ci				void main()
10045e5c31af7Sopenharmony_ci				{
10046e5c31af7Sopenharmony_ci					${SETUP}
10047e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
10048e5c31af7Sopenharmony_ci					${OUTPUT}
10049e5c31af7Sopenharmony_ci				}
10050e5c31af7Sopenharmony_ci			""
10051e5c31af7Sopenharmony_ci		end
10052e5c31af7Sopenharmony_ci		case uvec3_to_int
10053e5c31af7Sopenharmony_ci			expect compile_fail
10054e5c31af7Sopenharmony_ci			version 320 es
10055e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10056e5c31af7Sopenharmony_ci			values
10057e5c31af7Sopenharmony_ci			{
10058e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10059e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
10060e5c31af7Sopenharmony_ci			}
10061e5c31af7Sopenharmony_ci
10062e5c31af7Sopenharmony_ci			both ""
10063e5c31af7Sopenharmony_ci				#version 320 es
10064e5c31af7Sopenharmony_ci				precision highp float;
10065e5c31af7Sopenharmony_ci				${DECLARATIONS}
10066e5c31af7Sopenharmony_ci
10067e5c31af7Sopenharmony_ci				void main()
10068e5c31af7Sopenharmony_ci				{
10069e5c31af7Sopenharmony_ci					${SETUP}
10070e5c31af7Sopenharmony_ci					out0 = in0 + 2;
10071e5c31af7Sopenharmony_ci					${OUTPUT}
10072e5c31af7Sopenharmony_ci				}
10073e5c31af7Sopenharmony_ci			""
10074e5c31af7Sopenharmony_ci		end
10075e5c31af7Sopenharmony_ci		case uvec3_to_ivec2
10076e5c31af7Sopenharmony_ci			expect compile_fail
10077e5c31af7Sopenharmony_ci			version 320 es
10078e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10079e5c31af7Sopenharmony_ci			values
10080e5c31af7Sopenharmony_ci			{
10081e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10082e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
10083e5c31af7Sopenharmony_ci			}
10084e5c31af7Sopenharmony_ci
10085e5c31af7Sopenharmony_ci			both ""
10086e5c31af7Sopenharmony_ci				#version 320 es
10087e5c31af7Sopenharmony_ci				precision highp float;
10088e5c31af7Sopenharmony_ci				${DECLARATIONS}
10089e5c31af7Sopenharmony_ci
10090e5c31af7Sopenharmony_ci				void main()
10091e5c31af7Sopenharmony_ci				{
10092e5c31af7Sopenharmony_ci					${SETUP}
10093e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
10094e5c31af7Sopenharmony_ci					${OUTPUT}
10095e5c31af7Sopenharmony_ci				}
10096e5c31af7Sopenharmony_ci			""
10097e5c31af7Sopenharmony_ci		end
10098e5c31af7Sopenharmony_ci		case uvec3_to_uvec2
10099e5c31af7Sopenharmony_ci			expect compile_fail
10100e5c31af7Sopenharmony_ci			version 320 es
10101e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10102e5c31af7Sopenharmony_ci			values
10103e5c31af7Sopenharmony_ci			{
10104e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10105e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
10106e5c31af7Sopenharmony_ci			}
10107e5c31af7Sopenharmony_ci
10108e5c31af7Sopenharmony_ci			both ""
10109e5c31af7Sopenharmony_ci				#version 320 es
10110e5c31af7Sopenharmony_ci				precision highp float;
10111e5c31af7Sopenharmony_ci				${DECLARATIONS}
10112e5c31af7Sopenharmony_ci
10113e5c31af7Sopenharmony_ci				void main()
10114e5c31af7Sopenharmony_ci				{
10115e5c31af7Sopenharmony_ci					${SETUP}
10116e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
10117e5c31af7Sopenharmony_ci					${OUTPUT}
10118e5c31af7Sopenharmony_ci				}
10119e5c31af7Sopenharmony_ci			""
10120e5c31af7Sopenharmony_ci		end
10121e5c31af7Sopenharmony_ci		case uvec3_to_ivec3
10122e5c31af7Sopenharmony_ci			expect compile_fail
10123e5c31af7Sopenharmony_ci			version 320 es
10124e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10125e5c31af7Sopenharmony_ci			values
10126e5c31af7Sopenharmony_ci			{
10127e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10128e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
10129e5c31af7Sopenharmony_ci			}
10130e5c31af7Sopenharmony_ci
10131e5c31af7Sopenharmony_ci			both ""
10132e5c31af7Sopenharmony_ci				#version 320 es
10133e5c31af7Sopenharmony_ci				precision highp float;
10134e5c31af7Sopenharmony_ci				${DECLARATIONS}
10135e5c31af7Sopenharmony_ci
10136e5c31af7Sopenharmony_ci				void main()
10137e5c31af7Sopenharmony_ci				{
10138e5c31af7Sopenharmony_ci					${SETUP}
10139e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
10140e5c31af7Sopenharmony_ci					${OUTPUT}
10141e5c31af7Sopenharmony_ci				}
10142e5c31af7Sopenharmony_ci			""
10143e5c31af7Sopenharmony_ci		end
10144e5c31af7Sopenharmony_ci		case uvec3_to_ivec4
10145e5c31af7Sopenharmony_ci			expect compile_fail
10146e5c31af7Sopenharmony_ci			version 320 es
10147e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10148e5c31af7Sopenharmony_ci			values
10149e5c31af7Sopenharmony_ci			{
10150e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10151e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
10152e5c31af7Sopenharmony_ci			}
10153e5c31af7Sopenharmony_ci
10154e5c31af7Sopenharmony_ci			both ""
10155e5c31af7Sopenharmony_ci				#version 320 es
10156e5c31af7Sopenharmony_ci				precision highp float;
10157e5c31af7Sopenharmony_ci				${DECLARATIONS}
10158e5c31af7Sopenharmony_ci
10159e5c31af7Sopenharmony_ci				void main()
10160e5c31af7Sopenharmony_ci				{
10161e5c31af7Sopenharmony_ci					${SETUP}
10162e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
10163e5c31af7Sopenharmony_ci					${OUTPUT}
10164e5c31af7Sopenharmony_ci				}
10165e5c31af7Sopenharmony_ci			""
10166e5c31af7Sopenharmony_ci		end
10167e5c31af7Sopenharmony_ci		case uvec3_to_uvec4
10168e5c31af7Sopenharmony_ci			expect compile_fail
10169e5c31af7Sopenharmony_ci			version 320 es
10170e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10171e5c31af7Sopenharmony_ci			values
10172e5c31af7Sopenharmony_ci			{
10173e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10174e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
10175e5c31af7Sopenharmony_ci			}
10176e5c31af7Sopenharmony_ci
10177e5c31af7Sopenharmony_ci			both ""
10178e5c31af7Sopenharmony_ci				#version 320 es
10179e5c31af7Sopenharmony_ci				precision highp float;
10180e5c31af7Sopenharmony_ci				${DECLARATIONS}
10181e5c31af7Sopenharmony_ci
10182e5c31af7Sopenharmony_ci				void main()
10183e5c31af7Sopenharmony_ci				{
10184e5c31af7Sopenharmony_ci					${SETUP}
10185e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
10186e5c31af7Sopenharmony_ci					${OUTPUT}
10187e5c31af7Sopenharmony_ci				}
10188e5c31af7Sopenharmony_ci			""
10189e5c31af7Sopenharmony_ci		end
10190e5c31af7Sopenharmony_ci		case uvec3_to_vec2
10191e5c31af7Sopenharmony_ci			expect compile_fail
10192e5c31af7Sopenharmony_ci			version 320 es
10193e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10194e5c31af7Sopenharmony_ci			values
10195e5c31af7Sopenharmony_ci			{
10196e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10197e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
10198e5c31af7Sopenharmony_ci			}
10199e5c31af7Sopenharmony_ci
10200e5c31af7Sopenharmony_ci			both ""
10201e5c31af7Sopenharmony_ci				#version 320 es
10202e5c31af7Sopenharmony_ci				precision highp float;
10203e5c31af7Sopenharmony_ci				${DECLARATIONS}
10204e5c31af7Sopenharmony_ci
10205e5c31af7Sopenharmony_ci				void main()
10206e5c31af7Sopenharmony_ci				{
10207e5c31af7Sopenharmony_ci					${SETUP}
10208e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
10209e5c31af7Sopenharmony_ci					${OUTPUT}
10210e5c31af7Sopenharmony_ci				}
10211e5c31af7Sopenharmony_ci			""
10212e5c31af7Sopenharmony_ci		end
10213e5c31af7Sopenharmony_ci		case uvec3_to_vec4
10214e5c31af7Sopenharmony_ci			expect compile_fail
10215e5c31af7Sopenharmony_ci			version 320 es
10216e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10217e5c31af7Sopenharmony_ci			values
10218e5c31af7Sopenharmony_ci			{
10219e5c31af7Sopenharmony_ci				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
10220e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
10221e5c31af7Sopenharmony_ci			}
10222e5c31af7Sopenharmony_ci
10223e5c31af7Sopenharmony_ci			both ""
10224e5c31af7Sopenharmony_ci				#version 320 es
10225e5c31af7Sopenharmony_ci				precision highp float;
10226e5c31af7Sopenharmony_ci				${DECLARATIONS}
10227e5c31af7Sopenharmony_ci
10228e5c31af7Sopenharmony_ci				void main()
10229e5c31af7Sopenharmony_ci				{
10230e5c31af7Sopenharmony_ci					${SETUP}
10231e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
10232e5c31af7Sopenharmony_ci					${OUTPUT}
10233e5c31af7Sopenharmony_ci				}
10234e5c31af7Sopenharmony_ci			""
10235e5c31af7Sopenharmony_ci		end
10236e5c31af7Sopenharmony_ci		case ivec4_to_uint
10237e5c31af7Sopenharmony_ci			expect compile_fail
10238e5c31af7Sopenharmony_ci			version 320 es
10239e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10240e5c31af7Sopenharmony_ci			values
10241e5c31af7Sopenharmony_ci			{
10242e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10243e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
10244e5c31af7Sopenharmony_ci			}
10245e5c31af7Sopenharmony_ci
10246e5c31af7Sopenharmony_ci			both ""
10247e5c31af7Sopenharmony_ci				#version 320 es
10248e5c31af7Sopenharmony_ci				precision highp float;
10249e5c31af7Sopenharmony_ci				${DECLARATIONS}
10250e5c31af7Sopenharmony_ci
10251e5c31af7Sopenharmony_ci				void main()
10252e5c31af7Sopenharmony_ci				{
10253e5c31af7Sopenharmony_ci					${SETUP}
10254e5c31af7Sopenharmony_ci					out0 = in0 + 1;
10255e5c31af7Sopenharmony_ci					${OUTPUT}
10256e5c31af7Sopenharmony_ci				}
10257e5c31af7Sopenharmony_ci			""
10258e5c31af7Sopenharmony_ci		end
10259e5c31af7Sopenharmony_ci		case ivec4_to_ivec2
10260e5c31af7Sopenharmony_ci			expect compile_fail
10261e5c31af7Sopenharmony_ci			version 320 es
10262e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10263e5c31af7Sopenharmony_ci			values
10264e5c31af7Sopenharmony_ci			{
10265e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10266e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
10267e5c31af7Sopenharmony_ci			}
10268e5c31af7Sopenharmony_ci
10269e5c31af7Sopenharmony_ci			both ""
10270e5c31af7Sopenharmony_ci				#version 320 es
10271e5c31af7Sopenharmony_ci				precision highp float;
10272e5c31af7Sopenharmony_ci				${DECLARATIONS}
10273e5c31af7Sopenharmony_ci
10274e5c31af7Sopenharmony_ci				void main()
10275e5c31af7Sopenharmony_ci				{
10276e5c31af7Sopenharmony_ci					${SETUP}
10277e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
10278e5c31af7Sopenharmony_ci					${OUTPUT}
10279e5c31af7Sopenharmony_ci				}
10280e5c31af7Sopenharmony_ci			""
10281e5c31af7Sopenharmony_ci		end
10282e5c31af7Sopenharmony_ci		case ivec4_to_uvec2
10283e5c31af7Sopenharmony_ci			expect compile_fail
10284e5c31af7Sopenharmony_ci			version 320 es
10285e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10286e5c31af7Sopenharmony_ci			values
10287e5c31af7Sopenharmony_ci			{
10288e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10289e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
10290e5c31af7Sopenharmony_ci			}
10291e5c31af7Sopenharmony_ci
10292e5c31af7Sopenharmony_ci			both ""
10293e5c31af7Sopenharmony_ci				#version 320 es
10294e5c31af7Sopenharmony_ci				precision highp float;
10295e5c31af7Sopenharmony_ci				${DECLARATIONS}
10296e5c31af7Sopenharmony_ci
10297e5c31af7Sopenharmony_ci				void main()
10298e5c31af7Sopenharmony_ci				{
10299e5c31af7Sopenharmony_ci					${SETUP}
10300e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
10301e5c31af7Sopenharmony_ci					${OUTPUT}
10302e5c31af7Sopenharmony_ci				}
10303e5c31af7Sopenharmony_ci			""
10304e5c31af7Sopenharmony_ci		end
10305e5c31af7Sopenharmony_ci		case ivec4_to_ivec3
10306e5c31af7Sopenharmony_ci			expect compile_fail
10307e5c31af7Sopenharmony_ci			version 320 es
10308e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10309e5c31af7Sopenharmony_ci			values
10310e5c31af7Sopenharmony_ci			{
10311e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10312e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
10313e5c31af7Sopenharmony_ci			}
10314e5c31af7Sopenharmony_ci
10315e5c31af7Sopenharmony_ci			both ""
10316e5c31af7Sopenharmony_ci				#version 320 es
10317e5c31af7Sopenharmony_ci				precision highp float;
10318e5c31af7Sopenharmony_ci				${DECLARATIONS}
10319e5c31af7Sopenharmony_ci
10320e5c31af7Sopenharmony_ci				void main()
10321e5c31af7Sopenharmony_ci				{
10322e5c31af7Sopenharmony_ci					${SETUP}
10323e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
10324e5c31af7Sopenharmony_ci					${OUTPUT}
10325e5c31af7Sopenharmony_ci				}
10326e5c31af7Sopenharmony_ci			""
10327e5c31af7Sopenharmony_ci		end
10328e5c31af7Sopenharmony_ci		case ivec4_to_uvec3
10329e5c31af7Sopenharmony_ci			expect compile_fail
10330e5c31af7Sopenharmony_ci			version 320 es
10331e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10332e5c31af7Sopenharmony_ci			values
10333e5c31af7Sopenharmony_ci			{
10334e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10335e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
10336e5c31af7Sopenharmony_ci			}
10337e5c31af7Sopenharmony_ci
10338e5c31af7Sopenharmony_ci			both ""
10339e5c31af7Sopenharmony_ci				#version 320 es
10340e5c31af7Sopenharmony_ci				precision highp float;
10341e5c31af7Sopenharmony_ci				${DECLARATIONS}
10342e5c31af7Sopenharmony_ci
10343e5c31af7Sopenharmony_ci				void main()
10344e5c31af7Sopenharmony_ci				{
10345e5c31af7Sopenharmony_ci					${SETUP}
10346e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
10347e5c31af7Sopenharmony_ci					${OUTPUT}
10348e5c31af7Sopenharmony_ci				}
10349e5c31af7Sopenharmony_ci			""
10350e5c31af7Sopenharmony_ci		end
10351e5c31af7Sopenharmony_ci		case ivec4_to_vec2
10352e5c31af7Sopenharmony_ci			expect compile_fail
10353e5c31af7Sopenharmony_ci			version 320 es
10354e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10355e5c31af7Sopenharmony_ci			values
10356e5c31af7Sopenharmony_ci			{
10357e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10358e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
10359e5c31af7Sopenharmony_ci			}
10360e5c31af7Sopenharmony_ci
10361e5c31af7Sopenharmony_ci			both ""
10362e5c31af7Sopenharmony_ci				#version 320 es
10363e5c31af7Sopenharmony_ci				precision highp float;
10364e5c31af7Sopenharmony_ci				${DECLARATIONS}
10365e5c31af7Sopenharmony_ci
10366e5c31af7Sopenharmony_ci				void main()
10367e5c31af7Sopenharmony_ci				{
10368e5c31af7Sopenharmony_ci					${SETUP}
10369e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
10370e5c31af7Sopenharmony_ci					${OUTPUT}
10371e5c31af7Sopenharmony_ci				}
10372e5c31af7Sopenharmony_ci			""
10373e5c31af7Sopenharmony_ci		end
10374e5c31af7Sopenharmony_ci		case ivec4_to_vec3
10375e5c31af7Sopenharmony_ci			expect compile_fail
10376e5c31af7Sopenharmony_ci			version 320 es
10377e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10378e5c31af7Sopenharmony_ci			values
10379e5c31af7Sopenharmony_ci			{
10380e5c31af7Sopenharmony_ci				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
10381e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
10382e5c31af7Sopenharmony_ci			}
10383e5c31af7Sopenharmony_ci
10384e5c31af7Sopenharmony_ci			both ""
10385e5c31af7Sopenharmony_ci				#version 320 es
10386e5c31af7Sopenharmony_ci				precision highp float;
10387e5c31af7Sopenharmony_ci				${DECLARATIONS}
10388e5c31af7Sopenharmony_ci
10389e5c31af7Sopenharmony_ci				void main()
10390e5c31af7Sopenharmony_ci				{
10391e5c31af7Sopenharmony_ci					${SETUP}
10392e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
10393e5c31af7Sopenharmony_ci					${OUTPUT}
10394e5c31af7Sopenharmony_ci				}
10395e5c31af7Sopenharmony_ci			""
10396e5c31af7Sopenharmony_ci		end
10397e5c31af7Sopenharmony_ci		case uvec4_to_int
10398e5c31af7Sopenharmony_ci			expect compile_fail
10399e5c31af7Sopenharmony_ci			version 320 es
10400e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10401e5c31af7Sopenharmony_ci			values
10402e5c31af7Sopenharmony_ci			{
10403e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10404e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
10405e5c31af7Sopenharmony_ci			}
10406e5c31af7Sopenharmony_ci
10407e5c31af7Sopenharmony_ci			both ""
10408e5c31af7Sopenharmony_ci				#version 320 es
10409e5c31af7Sopenharmony_ci				precision highp float;
10410e5c31af7Sopenharmony_ci				${DECLARATIONS}
10411e5c31af7Sopenharmony_ci
10412e5c31af7Sopenharmony_ci				void main()
10413e5c31af7Sopenharmony_ci				{
10414e5c31af7Sopenharmony_ci					${SETUP}
10415e5c31af7Sopenharmony_ci					out0 = in0 + 2;
10416e5c31af7Sopenharmony_ci					${OUTPUT}
10417e5c31af7Sopenharmony_ci				}
10418e5c31af7Sopenharmony_ci			""
10419e5c31af7Sopenharmony_ci		end
10420e5c31af7Sopenharmony_ci		case uvec4_to_ivec2
10421e5c31af7Sopenharmony_ci			expect compile_fail
10422e5c31af7Sopenharmony_ci			version 320 es
10423e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10424e5c31af7Sopenharmony_ci			values
10425e5c31af7Sopenharmony_ci			{
10426e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10427e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
10428e5c31af7Sopenharmony_ci			}
10429e5c31af7Sopenharmony_ci
10430e5c31af7Sopenharmony_ci			both ""
10431e5c31af7Sopenharmony_ci				#version 320 es
10432e5c31af7Sopenharmony_ci				precision highp float;
10433e5c31af7Sopenharmony_ci				${DECLARATIONS}
10434e5c31af7Sopenharmony_ci
10435e5c31af7Sopenharmony_ci				void main()
10436e5c31af7Sopenharmony_ci				{
10437e5c31af7Sopenharmony_ci					${SETUP}
10438e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
10439e5c31af7Sopenharmony_ci					${OUTPUT}
10440e5c31af7Sopenharmony_ci				}
10441e5c31af7Sopenharmony_ci			""
10442e5c31af7Sopenharmony_ci		end
10443e5c31af7Sopenharmony_ci		case uvec4_to_uvec2
10444e5c31af7Sopenharmony_ci			expect compile_fail
10445e5c31af7Sopenharmony_ci			version 320 es
10446e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10447e5c31af7Sopenharmony_ci			values
10448e5c31af7Sopenharmony_ci			{
10449e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10450e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
10451e5c31af7Sopenharmony_ci			}
10452e5c31af7Sopenharmony_ci
10453e5c31af7Sopenharmony_ci			both ""
10454e5c31af7Sopenharmony_ci				#version 320 es
10455e5c31af7Sopenharmony_ci				precision highp float;
10456e5c31af7Sopenharmony_ci				${DECLARATIONS}
10457e5c31af7Sopenharmony_ci
10458e5c31af7Sopenharmony_ci				void main()
10459e5c31af7Sopenharmony_ci				{
10460e5c31af7Sopenharmony_ci					${SETUP}
10461e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
10462e5c31af7Sopenharmony_ci					${OUTPUT}
10463e5c31af7Sopenharmony_ci				}
10464e5c31af7Sopenharmony_ci			""
10465e5c31af7Sopenharmony_ci		end
10466e5c31af7Sopenharmony_ci		case uvec4_to_ivec3
10467e5c31af7Sopenharmony_ci			expect compile_fail
10468e5c31af7Sopenharmony_ci			version 320 es
10469e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10470e5c31af7Sopenharmony_ci			values
10471e5c31af7Sopenharmony_ci			{
10472e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10473e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
10474e5c31af7Sopenharmony_ci			}
10475e5c31af7Sopenharmony_ci
10476e5c31af7Sopenharmony_ci			both ""
10477e5c31af7Sopenharmony_ci				#version 320 es
10478e5c31af7Sopenharmony_ci				precision highp float;
10479e5c31af7Sopenharmony_ci				${DECLARATIONS}
10480e5c31af7Sopenharmony_ci
10481e5c31af7Sopenharmony_ci				void main()
10482e5c31af7Sopenharmony_ci				{
10483e5c31af7Sopenharmony_ci					${SETUP}
10484e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
10485e5c31af7Sopenharmony_ci					${OUTPUT}
10486e5c31af7Sopenharmony_ci				}
10487e5c31af7Sopenharmony_ci			""
10488e5c31af7Sopenharmony_ci		end
10489e5c31af7Sopenharmony_ci		case uvec4_to_uvec3
10490e5c31af7Sopenharmony_ci			expect compile_fail
10491e5c31af7Sopenharmony_ci			version 320 es
10492e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10493e5c31af7Sopenharmony_ci			values
10494e5c31af7Sopenharmony_ci			{
10495e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10496e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
10497e5c31af7Sopenharmony_ci			}
10498e5c31af7Sopenharmony_ci
10499e5c31af7Sopenharmony_ci			both ""
10500e5c31af7Sopenharmony_ci				#version 320 es
10501e5c31af7Sopenharmony_ci				precision highp float;
10502e5c31af7Sopenharmony_ci				${DECLARATIONS}
10503e5c31af7Sopenharmony_ci
10504e5c31af7Sopenharmony_ci				void main()
10505e5c31af7Sopenharmony_ci				{
10506e5c31af7Sopenharmony_ci					${SETUP}
10507e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
10508e5c31af7Sopenharmony_ci					${OUTPUT}
10509e5c31af7Sopenharmony_ci				}
10510e5c31af7Sopenharmony_ci			""
10511e5c31af7Sopenharmony_ci		end
10512e5c31af7Sopenharmony_ci		case uvec4_to_ivec4
10513e5c31af7Sopenharmony_ci			expect compile_fail
10514e5c31af7Sopenharmony_ci			version 320 es
10515e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10516e5c31af7Sopenharmony_ci			values
10517e5c31af7Sopenharmony_ci			{
10518e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10519e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
10520e5c31af7Sopenharmony_ci			}
10521e5c31af7Sopenharmony_ci
10522e5c31af7Sopenharmony_ci			both ""
10523e5c31af7Sopenharmony_ci				#version 320 es
10524e5c31af7Sopenharmony_ci				precision highp float;
10525e5c31af7Sopenharmony_ci				${DECLARATIONS}
10526e5c31af7Sopenharmony_ci
10527e5c31af7Sopenharmony_ci				void main()
10528e5c31af7Sopenharmony_ci				{
10529e5c31af7Sopenharmony_ci					${SETUP}
10530e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
10531e5c31af7Sopenharmony_ci					${OUTPUT}
10532e5c31af7Sopenharmony_ci				}
10533e5c31af7Sopenharmony_ci			""
10534e5c31af7Sopenharmony_ci		end
10535e5c31af7Sopenharmony_ci		case uvec4_to_vec2
10536e5c31af7Sopenharmony_ci			expect compile_fail
10537e5c31af7Sopenharmony_ci			version 320 es
10538e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10539e5c31af7Sopenharmony_ci			values
10540e5c31af7Sopenharmony_ci			{
10541e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10542e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
10543e5c31af7Sopenharmony_ci			}
10544e5c31af7Sopenharmony_ci
10545e5c31af7Sopenharmony_ci			both ""
10546e5c31af7Sopenharmony_ci				#version 320 es
10547e5c31af7Sopenharmony_ci				precision highp float;
10548e5c31af7Sopenharmony_ci				${DECLARATIONS}
10549e5c31af7Sopenharmony_ci
10550e5c31af7Sopenharmony_ci				void main()
10551e5c31af7Sopenharmony_ci				{
10552e5c31af7Sopenharmony_ci					${SETUP}
10553e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
10554e5c31af7Sopenharmony_ci					${OUTPUT}
10555e5c31af7Sopenharmony_ci				}
10556e5c31af7Sopenharmony_ci			""
10557e5c31af7Sopenharmony_ci		end
10558e5c31af7Sopenharmony_ci		case uvec4_to_vec3
10559e5c31af7Sopenharmony_ci			expect compile_fail
10560e5c31af7Sopenharmony_ci			version 320 es
10561e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10562e5c31af7Sopenharmony_ci			values
10563e5c31af7Sopenharmony_ci			{
10564e5c31af7Sopenharmony_ci				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
10565e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
10566e5c31af7Sopenharmony_ci			}
10567e5c31af7Sopenharmony_ci
10568e5c31af7Sopenharmony_ci			both ""
10569e5c31af7Sopenharmony_ci				#version 320 es
10570e5c31af7Sopenharmony_ci				precision highp float;
10571e5c31af7Sopenharmony_ci				${DECLARATIONS}
10572e5c31af7Sopenharmony_ci
10573e5c31af7Sopenharmony_ci				void main()
10574e5c31af7Sopenharmony_ci				{
10575e5c31af7Sopenharmony_ci					${SETUP}
10576e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
10577e5c31af7Sopenharmony_ci					${OUTPUT}
10578e5c31af7Sopenharmony_ci				}
10579e5c31af7Sopenharmony_ci			""
10580e5c31af7Sopenharmony_ci		end
10581e5c31af7Sopenharmony_ci		case float_to_int
10582e5c31af7Sopenharmony_ci			expect compile_fail
10583e5c31af7Sopenharmony_ci			version 320 es
10584e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10585e5c31af7Sopenharmony_ci			values
10586e5c31af7Sopenharmony_ci			{
10587e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10588e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 | 2 | 2 ];
10589e5c31af7Sopenharmony_ci			}
10590e5c31af7Sopenharmony_ci
10591e5c31af7Sopenharmony_ci			both ""
10592e5c31af7Sopenharmony_ci				#version 320 es
10593e5c31af7Sopenharmony_ci				precision highp float;
10594e5c31af7Sopenharmony_ci				${DECLARATIONS}
10595e5c31af7Sopenharmony_ci
10596e5c31af7Sopenharmony_ci				void main()
10597e5c31af7Sopenharmony_ci				{
10598e5c31af7Sopenharmony_ci					${SETUP}
10599e5c31af7Sopenharmony_ci					out0 = in0 + 2;
10600e5c31af7Sopenharmony_ci					${OUTPUT}
10601e5c31af7Sopenharmony_ci				}
10602e5c31af7Sopenharmony_ci			""
10603e5c31af7Sopenharmony_ci		end
10604e5c31af7Sopenharmony_ci		case float_to_uint
10605e5c31af7Sopenharmony_ci			expect compile_fail
10606e5c31af7Sopenharmony_ci			version 320 es
10607e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10608e5c31af7Sopenharmony_ci			values
10609e5c31af7Sopenharmony_ci			{
10610e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10611e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 | 1 | 1 ];
10612e5c31af7Sopenharmony_ci			}
10613e5c31af7Sopenharmony_ci
10614e5c31af7Sopenharmony_ci			both ""
10615e5c31af7Sopenharmony_ci				#version 320 es
10616e5c31af7Sopenharmony_ci				precision highp float;
10617e5c31af7Sopenharmony_ci				${DECLARATIONS}
10618e5c31af7Sopenharmony_ci
10619e5c31af7Sopenharmony_ci				void main()
10620e5c31af7Sopenharmony_ci				{
10621e5c31af7Sopenharmony_ci					${SETUP}
10622e5c31af7Sopenharmony_ci					out0 = in0 + 1;
10623e5c31af7Sopenharmony_ci					${OUTPUT}
10624e5c31af7Sopenharmony_ci				}
10625e5c31af7Sopenharmony_ci			""
10626e5c31af7Sopenharmony_ci		end
10627e5c31af7Sopenharmony_ci		case float_to_ivec2
10628e5c31af7Sopenharmony_ci			expect compile_fail
10629e5c31af7Sopenharmony_ci			version 320 es
10630e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10631e5c31af7Sopenharmony_ci			values
10632e5c31af7Sopenharmony_ci			{
10633e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10634e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
10635e5c31af7Sopenharmony_ci			}
10636e5c31af7Sopenharmony_ci
10637e5c31af7Sopenharmony_ci			both ""
10638e5c31af7Sopenharmony_ci				#version 320 es
10639e5c31af7Sopenharmony_ci				precision highp float;
10640e5c31af7Sopenharmony_ci				${DECLARATIONS}
10641e5c31af7Sopenharmony_ci
10642e5c31af7Sopenharmony_ci				void main()
10643e5c31af7Sopenharmony_ci				{
10644e5c31af7Sopenharmony_ci					${SETUP}
10645e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
10646e5c31af7Sopenharmony_ci					${OUTPUT}
10647e5c31af7Sopenharmony_ci				}
10648e5c31af7Sopenharmony_ci			""
10649e5c31af7Sopenharmony_ci		end
10650e5c31af7Sopenharmony_ci		case float_to_uvec2
10651e5c31af7Sopenharmony_ci			expect compile_fail
10652e5c31af7Sopenharmony_ci			version 320 es
10653e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10654e5c31af7Sopenharmony_ci			values
10655e5c31af7Sopenharmony_ci			{
10656e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10657e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
10658e5c31af7Sopenharmony_ci			}
10659e5c31af7Sopenharmony_ci
10660e5c31af7Sopenharmony_ci			both ""
10661e5c31af7Sopenharmony_ci				#version 320 es
10662e5c31af7Sopenharmony_ci				precision highp float;
10663e5c31af7Sopenharmony_ci				${DECLARATIONS}
10664e5c31af7Sopenharmony_ci
10665e5c31af7Sopenharmony_ci				void main()
10666e5c31af7Sopenharmony_ci				{
10667e5c31af7Sopenharmony_ci					${SETUP}
10668e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
10669e5c31af7Sopenharmony_ci					${OUTPUT}
10670e5c31af7Sopenharmony_ci				}
10671e5c31af7Sopenharmony_ci			""
10672e5c31af7Sopenharmony_ci		end
10673e5c31af7Sopenharmony_ci		case float_to_ivec3
10674e5c31af7Sopenharmony_ci			expect compile_fail
10675e5c31af7Sopenharmony_ci			version 320 es
10676e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10677e5c31af7Sopenharmony_ci			values
10678e5c31af7Sopenharmony_ci			{
10679e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10680e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
10681e5c31af7Sopenharmony_ci			}
10682e5c31af7Sopenharmony_ci
10683e5c31af7Sopenharmony_ci			both ""
10684e5c31af7Sopenharmony_ci				#version 320 es
10685e5c31af7Sopenharmony_ci				precision highp float;
10686e5c31af7Sopenharmony_ci				${DECLARATIONS}
10687e5c31af7Sopenharmony_ci
10688e5c31af7Sopenharmony_ci				void main()
10689e5c31af7Sopenharmony_ci				{
10690e5c31af7Sopenharmony_ci					${SETUP}
10691e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
10692e5c31af7Sopenharmony_ci					${OUTPUT}
10693e5c31af7Sopenharmony_ci				}
10694e5c31af7Sopenharmony_ci			""
10695e5c31af7Sopenharmony_ci		end
10696e5c31af7Sopenharmony_ci		case float_to_uvec3
10697e5c31af7Sopenharmony_ci			expect compile_fail
10698e5c31af7Sopenharmony_ci			version 320 es
10699e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10700e5c31af7Sopenharmony_ci			values
10701e5c31af7Sopenharmony_ci			{
10702e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10703e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
10704e5c31af7Sopenharmony_ci			}
10705e5c31af7Sopenharmony_ci
10706e5c31af7Sopenharmony_ci			both ""
10707e5c31af7Sopenharmony_ci				#version 320 es
10708e5c31af7Sopenharmony_ci				precision highp float;
10709e5c31af7Sopenharmony_ci				${DECLARATIONS}
10710e5c31af7Sopenharmony_ci
10711e5c31af7Sopenharmony_ci				void main()
10712e5c31af7Sopenharmony_ci				{
10713e5c31af7Sopenharmony_ci					${SETUP}
10714e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
10715e5c31af7Sopenharmony_ci					${OUTPUT}
10716e5c31af7Sopenharmony_ci				}
10717e5c31af7Sopenharmony_ci			""
10718e5c31af7Sopenharmony_ci		end
10719e5c31af7Sopenharmony_ci		case float_to_ivec4
10720e5c31af7Sopenharmony_ci			expect compile_fail
10721e5c31af7Sopenharmony_ci			version 320 es
10722e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10723e5c31af7Sopenharmony_ci			values
10724e5c31af7Sopenharmony_ci			{
10725e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10726e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
10727e5c31af7Sopenharmony_ci			}
10728e5c31af7Sopenharmony_ci
10729e5c31af7Sopenharmony_ci			both ""
10730e5c31af7Sopenharmony_ci				#version 320 es
10731e5c31af7Sopenharmony_ci				precision highp float;
10732e5c31af7Sopenharmony_ci				${DECLARATIONS}
10733e5c31af7Sopenharmony_ci
10734e5c31af7Sopenharmony_ci				void main()
10735e5c31af7Sopenharmony_ci				{
10736e5c31af7Sopenharmony_ci					${SETUP}
10737e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
10738e5c31af7Sopenharmony_ci					${OUTPUT}
10739e5c31af7Sopenharmony_ci				}
10740e5c31af7Sopenharmony_ci			""
10741e5c31af7Sopenharmony_ci		end
10742e5c31af7Sopenharmony_ci		case float_to_uvec4
10743e5c31af7Sopenharmony_ci			expect compile_fail
10744e5c31af7Sopenharmony_ci			version 320 es
10745e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10746e5c31af7Sopenharmony_ci			values
10747e5c31af7Sopenharmony_ci			{
10748e5c31af7Sopenharmony_ci				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
10749e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
10750e5c31af7Sopenharmony_ci			}
10751e5c31af7Sopenharmony_ci
10752e5c31af7Sopenharmony_ci			both ""
10753e5c31af7Sopenharmony_ci				#version 320 es
10754e5c31af7Sopenharmony_ci				precision highp float;
10755e5c31af7Sopenharmony_ci				${DECLARATIONS}
10756e5c31af7Sopenharmony_ci
10757e5c31af7Sopenharmony_ci				void main()
10758e5c31af7Sopenharmony_ci				{
10759e5c31af7Sopenharmony_ci					${SETUP}
10760e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
10761e5c31af7Sopenharmony_ci					${OUTPUT}
10762e5c31af7Sopenharmony_ci				}
10763e5c31af7Sopenharmony_ci			""
10764e5c31af7Sopenharmony_ci		end
10765e5c31af7Sopenharmony_ci		case vec2_to_int
10766e5c31af7Sopenharmony_ci			expect compile_fail
10767e5c31af7Sopenharmony_ci			version 320 es
10768e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10769e5c31af7Sopenharmony_ci			values
10770e5c31af7Sopenharmony_ci			{
10771e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10772e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
10773e5c31af7Sopenharmony_ci			}
10774e5c31af7Sopenharmony_ci
10775e5c31af7Sopenharmony_ci			both ""
10776e5c31af7Sopenharmony_ci				#version 320 es
10777e5c31af7Sopenharmony_ci				precision highp float;
10778e5c31af7Sopenharmony_ci				${DECLARATIONS}
10779e5c31af7Sopenharmony_ci
10780e5c31af7Sopenharmony_ci				void main()
10781e5c31af7Sopenharmony_ci				{
10782e5c31af7Sopenharmony_ci					${SETUP}
10783e5c31af7Sopenharmony_ci					out0 = in0 + 2;
10784e5c31af7Sopenharmony_ci					${OUTPUT}
10785e5c31af7Sopenharmony_ci				}
10786e5c31af7Sopenharmony_ci			""
10787e5c31af7Sopenharmony_ci		end
10788e5c31af7Sopenharmony_ci		case vec2_to_uint
10789e5c31af7Sopenharmony_ci			expect compile_fail
10790e5c31af7Sopenharmony_ci			version 320 es
10791e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10792e5c31af7Sopenharmony_ci			values
10793e5c31af7Sopenharmony_ci			{
10794e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10795e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
10796e5c31af7Sopenharmony_ci			}
10797e5c31af7Sopenharmony_ci
10798e5c31af7Sopenharmony_ci			both ""
10799e5c31af7Sopenharmony_ci				#version 320 es
10800e5c31af7Sopenharmony_ci				precision highp float;
10801e5c31af7Sopenharmony_ci				${DECLARATIONS}
10802e5c31af7Sopenharmony_ci
10803e5c31af7Sopenharmony_ci				void main()
10804e5c31af7Sopenharmony_ci				{
10805e5c31af7Sopenharmony_ci					${SETUP}
10806e5c31af7Sopenharmony_ci					out0 = in0 + 1;
10807e5c31af7Sopenharmony_ci					${OUTPUT}
10808e5c31af7Sopenharmony_ci				}
10809e5c31af7Sopenharmony_ci			""
10810e5c31af7Sopenharmony_ci		end
10811e5c31af7Sopenharmony_ci		case vec2_to_ivec2
10812e5c31af7Sopenharmony_ci			expect compile_fail
10813e5c31af7Sopenharmony_ci			version 320 es
10814e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10815e5c31af7Sopenharmony_ci			values
10816e5c31af7Sopenharmony_ci			{
10817e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10818e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
10819e5c31af7Sopenharmony_ci			}
10820e5c31af7Sopenharmony_ci
10821e5c31af7Sopenharmony_ci			both ""
10822e5c31af7Sopenharmony_ci				#version 320 es
10823e5c31af7Sopenharmony_ci				precision highp float;
10824e5c31af7Sopenharmony_ci				${DECLARATIONS}
10825e5c31af7Sopenharmony_ci
10826e5c31af7Sopenharmony_ci				void main()
10827e5c31af7Sopenharmony_ci				{
10828e5c31af7Sopenharmony_ci					${SETUP}
10829e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
10830e5c31af7Sopenharmony_ci					${OUTPUT}
10831e5c31af7Sopenharmony_ci				}
10832e5c31af7Sopenharmony_ci			""
10833e5c31af7Sopenharmony_ci		end
10834e5c31af7Sopenharmony_ci		case vec2_to_uvec2
10835e5c31af7Sopenharmony_ci			expect compile_fail
10836e5c31af7Sopenharmony_ci			version 320 es
10837e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10838e5c31af7Sopenharmony_ci			values
10839e5c31af7Sopenharmony_ci			{
10840e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10841e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
10842e5c31af7Sopenharmony_ci			}
10843e5c31af7Sopenharmony_ci
10844e5c31af7Sopenharmony_ci			both ""
10845e5c31af7Sopenharmony_ci				#version 320 es
10846e5c31af7Sopenharmony_ci				precision highp float;
10847e5c31af7Sopenharmony_ci				${DECLARATIONS}
10848e5c31af7Sopenharmony_ci
10849e5c31af7Sopenharmony_ci				void main()
10850e5c31af7Sopenharmony_ci				{
10851e5c31af7Sopenharmony_ci					${SETUP}
10852e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
10853e5c31af7Sopenharmony_ci					${OUTPUT}
10854e5c31af7Sopenharmony_ci				}
10855e5c31af7Sopenharmony_ci			""
10856e5c31af7Sopenharmony_ci		end
10857e5c31af7Sopenharmony_ci		case vec2_to_ivec3
10858e5c31af7Sopenharmony_ci			expect compile_fail
10859e5c31af7Sopenharmony_ci			version 320 es
10860e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10861e5c31af7Sopenharmony_ci			values
10862e5c31af7Sopenharmony_ci			{
10863e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10864e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
10865e5c31af7Sopenharmony_ci			}
10866e5c31af7Sopenharmony_ci
10867e5c31af7Sopenharmony_ci			both ""
10868e5c31af7Sopenharmony_ci				#version 320 es
10869e5c31af7Sopenharmony_ci				precision highp float;
10870e5c31af7Sopenharmony_ci				${DECLARATIONS}
10871e5c31af7Sopenharmony_ci
10872e5c31af7Sopenharmony_ci				void main()
10873e5c31af7Sopenharmony_ci				{
10874e5c31af7Sopenharmony_ci					${SETUP}
10875e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
10876e5c31af7Sopenharmony_ci					${OUTPUT}
10877e5c31af7Sopenharmony_ci				}
10878e5c31af7Sopenharmony_ci			""
10879e5c31af7Sopenharmony_ci		end
10880e5c31af7Sopenharmony_ci		case vec2_to_uvec3
10881e5c31af7Sopenharmony_ci			expect compile_fail
10882e5c31af7Sopenharmony_ci			version 320 es
10883e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10884e5c31af7Sopenharmony_ci			values
10885e5c31af7Sopenharmony_ci			{
10886e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10887e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
10888e5c31af7Sopenharmony_ci			}
10889e5c31af7Sopenharmony_ci
10890e5c31af7Sopenharmony_ci			both ""
10891e5c31af7Sopenharmony_ci				#version 320 es
10892e5c31af7Sopenharmony_ci				precision highp float;
10893e5c31af7Sopenharmony_ci				${DECLARATIONS}
10894e5c31af7Sopenharmony_ci
10895e5c31af7Sopenharmony_ci				void main()
10896e5c31af7Sopenharmony_ci				{
10897e5c31af7Sopenharmony_ci					${SETUP}
10898e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
10899e5c31af7Sopenharmony_ci					${OUTPUT}
10900e5c31af7Sopenharmony_ci				}
10901e5c31af7Sopenharmony_ci			""
10902e5c31af7Sopenharmony_ci		end
10903e5c31af7Sopenharmony_ci		case vec2_to_ivec4
10904e5c31af7Sopenharmony_ci			expect compile_fail
10905e5c31af7Sopenharmony_ci			version 320 es
10906e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10907e5c31af7Sopenharmony_ci			values
10908e5c31af7Sopenharmony_ci			{
10909e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10910e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
10911e5c31af7Sopenharmony_ci			}
10912e5c31af7Sopenharmony_ci
10913e5c31af7Sopenharmony_ci			both ""
10914e5c31af7Sopenharmony_ci				#version 320 es
10915e5c31af7Sopenharmony_ci				precision highp float;
10916e5c31af7Sopenharmony_ci				${DECLARATIONS}
10917e5c31af7Sopenharmony_ci
10918e5c31af7Sopenharmony_ci				void main()
10919e5c31af7Sopenharmony_ci				{
10920e5c31af7Sopenharmony_ci					${SETUP}
10921e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
10922e5c31af7Sopenharmony_ci					${OUTPUT}
10923e5c31af7Sopenharmony_ci				}
10924e5c31af7Sopenharmony_ci			""
10925e5c31af7Sopenharmony_ci		end
10926e5c31af7Sopenharmony_ci		case vec2_to_uvec4
10927e5c31af7Sopenharmony_ci			expect compile_fail
10928e5c31af7Sopenharmony_ci			version 320 es
10929e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10930e5c31af7Sopenharmony_ci			values
10931e5c31af7Sopenharmony_ci			{
10932e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10933e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
10934e5c31af7Sopenharmony_ci			}
10935e5c31af7Sopenharmony_ci
10936e5c31af7Sopenharmony_ci			both ""
10937e5c31af7Sopenharmony_ci				#version 320 es
10938e5c31af7Sopenharmony_ci				precision highp float;
10939e5c31af7Sopenharmony_ci				${DECLARATIONS}
10940e5c31af7Sopenharmony_ci
10941e5c31af7Sopenharmony_ci				void main()
10942e5c31af7Sopenharmony_ci				{
10943e5c31af7Sopenharmony_ci					${SETUP}
10944e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
10945e5c31af7Sopenharmony_ci					${OUTPUT}
10946e5c31af7Sopenharmony_ci				}
10947e5c31af7Sopenharmony_ci			""
10948e5c31af7Sopenharmony_ci		end
10949e5c31af7Sopenharmony_ci		case vec2_to_vec3
10950e5c31af7Sopenharmony_ci			expect compile_fail
10951e5c31af7Sopenharmony_ci			version 320 es
10952e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10953e5c31af7Sopenharmony_ci			values
10954e5c31af7Sopenharmony_ci			{
10955e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10956e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
10957e5c31af7Sopenharmony_ci			}
10958e5c31af7Sopenharmony_ci
10959e5c31af7Sopenharmony_ci			both ""
10960e5c31af7Sopenharmony_ci				#version 320 es
10961e5c31af7Sopenharmony_ci				precision highp float;
10962e5c31af7Sopenharmony_ci				${DECLARATIONS}
10963e5c31af7Sopenharmony_ci
10964e5c31af7Sopenharmony_ci				void main()
10965e5c31af7Sopenharmony_ci				{
10966e5c31af7Sopenharmony_ci					${SETUP}
10967e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
10968e5c31af7Sopenharmony_ci					${OUTPUT}
10969e5c31af7Sopenharmony_ci				}
10970e5c31af7Sopenharmony_ci			""
10971e5c31af7Sopenharmony_ci		end
10972e5c31af7Sopenharmony_ci		case vec2_to_vec4
10973e5c31af7Sopenharmony_ci			expect compile_fail
10974e5c31af7Sopenharmony_ci			version 320 es
10975e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10976e5c31af7Sopenharmony_ci			values
10977e5c31af7Sopenharmony_ci			{
10978e5c31af7Sopenharmony_ci				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
10979e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
10980e5c31af7Sopenharmony_ci			}
10981e5c31af7Sopenharmony_ci
10982e5c31af7Sopenharmony_ci			both ""
10983e5c31af7Sopenharmony_ci				#version 320 es
10984e5c31af7Sopenharmony_ci				precision highp float;
10985e5c31af7Sopenharmony_ci				${DECLARATIONS}
10986e5c31af7Sopenharmony_ci
10987e5c31af7Sopenharmony_ci				void main()
10988e5c31af7Sopenharmony_ci				{
10989e5c31af7Sopenharmony_ci					${SETUP}
10990e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
10991e5c31af7Sopenharmony_ci					${OUTPUT}
10992e5c31af7Sopenharmony_ci				}
10993e5c31af7Sopenharmony_ci			""
10994e5c31af7Sopenharmony_ci		end
10995e5c31af7Sopenharmony_ci		case vec3_to_int
10996e5c31af7Sopenharmony_ci			expect compile_fail
10997e5c31af7Sopenharmony_ci			version 320 es
10998e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
10999e5c31af7Sopenharmony_ci			values
11000e5c31af7Sopenharmony_ci			{
11001e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11002e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
11003e5c31af7Sopenharmony_ci			}
11004e5c31af7Sopenharmony_ci
11005e5c31af7Sopenharmony_ci			both ""
11006e5c31af7Sopenharmony_ci				#version 320 es
11007e5c31af7Sopenharmony_ci				precision highp float;
11008e5c31af7Sopenharmony_ci				${DECLARATIONS}
11009e5c31af7Sopenharmony_ci
11010e5c31af7Sopenharmony_ci				void main()
11011e5c31af7Sopenharmony_ci				{
11012e5c31af7Sopenharmony_ci					${SETUP}
11013e5c31af7Sopenharmony_ci					out0 = in0 + 2;
11014e5c31af7Sopenharmony_ci					${OUTPUT}
11015e5c31af7Sopenharmony_ci				}
11016e5c31af7Sopenharmony_ci			""
11017e5c31af7Sopenharmony_ci		end
11018e5c31af7Sopenharmony_ci		case vec3_to_uint
11019e5c31af7Sopenharmony_ci			expect compile_fail
11020e5c31af7Sopenharmony_ci			version 320 es
11021e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11022e5c31af7Sopenharmony_ci			values
11023e5c31af7Sopenharmony_ci			{
11024e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11025e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
11026e5c31af7Sopenharmony_ci			}
11027e5c31af7Sopenharmony_ci
11028e5c31af7Sopenharmony_ci			both ""
11029e5c31af7Sopenharmony_ci				#version 320 es
11030e5c31af7Sopenharmony_ci				precision highp float;
11031e5c31af7Sopenharmony_ci				${DECLARATIONS}
11032e5c31af7Sopenharmony_ci
11033e5c31af7Sopenharmony_ci				void main()
11034e5c31af7Sopenharmony_ci				{
11035e5c31af7Sopenharmony_ci					${SETUP}
11036e5c31af7Sopenharmony_ci					out0 = in0 + 1;
11037e5c31af7Sopenharmony_ci					${OUTPUT}
11038e5c31af7Sopenharmony_ci				}
11039e5c31af7Sopenharmony_ci			""
11040e5c31af7Sopenharmony_ci		end
11041e5c31af7Sopenharmony_ci		case vec3_to_ivec2
11042e5c31af7Sopenharmony_ci			expect compile_fail
11043e5c31af7Sopenharmony_ci			version 320 es
11044e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11045e5c31af7Sopenharmony_ci			values
11046e5c31af7Sopenharmony_ci			{
11047e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11048e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
11049e5c31af7Sopenharmony_ci			}
11050e5c31af7Sopenharmony_ci
11051e5c31af7Sopenharmony_ci			both ""
11052e5c31af7Sopenharmony_ci				#version 320 es
11053e5c31af7Sopenharmony_ci				precision highp float;
11054e5c31af7Sopenharmony_ci				${DECLARATIONS}
11055e5c31af7Sopenharmony_ci
11056e5c31af7Sopenharmony_ci				void main()
11057e5c31af7Sopenharmony_ci				{
11058e5c31af7Sopenharmony_ci					${SETUP}
11059e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
11060e5c31af7Sopenharmony_ci					${OUTPUT}
11061e5c31af7Sopenharmony_ci				}
11062e5c31af7Sopenharmony_ci			""
11063e5c31af7Sopenharmony_ci		end
11064e5c31af7Sopenharmony_ci		case vec3_to_uvec2
11065e5c31af7Sopenharmony_ci			expect compile_fail
11066e5c31af7Sopenharmony_ci			version 320 es
11067e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11068e5c31af7Sopenharmony_ci			values
11069e5c31af7Sopenharmony_ci			{
11070e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11071e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
11072e5c31af7Sopenharmony_ci			}
11073e5c31af7Sopenharmony_ci
11074e5c31af7Sopenharmony_ci			both ""
11075e5c31af7Sopenharmony_ci				#version 320 es
11076e5c31af7Sopenharmony_ci				precision highp float;
11077e5c31af7Sopenharmony_ci				${DECLARATIONS}
11078e5c31af7Sopenharmony_ci
11079e5c31af7Sopenharmony_ci				void main()
11080e5c31af7Sopenharmony_ci				{
11081e5c31af7Sopenharmony_ci					${SETUP}
11082e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
11083e5c31af7Sopenharmony_ci					${OUTPUT}
11084e5c31af7Sopenharmony_ci				}
11085e5c31af7Sopenharmony_ci			""
11086e5c31af7Sopenharmony_ci		end
11087e5c31af7Sopenharmony_ci		case vec3_to_ivec3
11088e5c31af7Sopenharmony_ci			expect compile_fail
11089e5c31af7Sopenharmony_ci			version 320 es
11090e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11091e5c31af7Sopenharmony_ci			values
11092e5c31af7Sopenharmony_ci			{
11093e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11094e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
11095e5c31af7Sopenharmony_ci			}
11096e5c31af7Sopenharmony_ci
11097e5c31af7Sopenharmony_ci			both ""
11098e5c31af7Sopenharmony_ci				#version 320 es
11099e5c31af7Sopenharmony_ci				precision highp float;
11100e5c31af7Sopenharmony_ci				${DECLARATIONS}
11101e5c31af7Sopenharmony_ci
11102e5c31af7Sopenharmony_ci				void main()
11103e5c31af7Sopenharmony_ci				{
11104e5c31af7Sopenharmony_ci					${SETUP}
11105e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
11106e5c31af7Sopenharmony_ci					${OUTPUT}
11107e5c31af7Sopenharmony_ci				}
11108e5c31af7Sopenharmony_ci			""
11109e5c31af7Sopenharmony_ci		end
11110e5c31af7Sopenharmony_ci		case vec3_to_uvec3
11111e5c31af7Sopenharmony_ci			expect compile_fail
11112e5c31af7Sopenharmony_ci			version 320 es
11113e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11114e5c31af7Sopenharmony_ci			values
11115e5c31af7Sopenharmony_ci			{
11116e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11117e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
11118e5c31af7Sopenharmony_ci			}
11119e5c31af7Sopenharmony_ci
11120e5c31af7Sopenharmony_ci			both ""
11121e5c31af7Sopenharmony_ci				#version 320 es
11122e5c31af7Sopenharmony_ci				precision highp float;
11123e5c31af7Sopenharmony_ci				${DECLARATIONS}
11124e5c31af7Sopenharmony_ci
11125e5c31af7Sopenharmony_ci				void main()
11126e5c31af7Sopenharmony_ci				{
11127e5c31af7Sopenharmony_ci					${SETUP}
11128e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
11129e5c31af7Sopenharmony_ci					${OUTPUT}
11130e5c31af7Sopenharmony_ci				}
11131e5c31af7Sopenharmony_ci			""
11132e5c31af7Sopenharmony_ci		end
11133e5c31af7Sopenharmony_ci		case vec3_to_ivec4
11134e5c31af7Sopenharmony_ci			expect compile_fail
11135e5c31af7Sopenharmony_ci			version 320 es
11136e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11137e5c31af7Sopenharmony_ci			values
11138e5c31af7Sopenharmony_ci			{
11139e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11140e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
11141e5c31af7Sopenharmony_ci			}
11142e5c31af7Sopenharmony_ci
11143e5c31af7Sopenharmony_ci			both ""
11144e5c31af7Sopenharmony_ci				#version 320 es
11145e5c31af7Sopenharmony_ci				precision highp float;
11146e5c31af7Sopenharmony_ci				${DECLARATIONS}
11147e5c31af7Sopenharmony_ci
11148e5c31af7Sopenharmony_ci				void main()
11149e5c31af7Sopenharmony_ci				{
11150e5c31af7Sopenharmony_ci					${SETUP}
11151e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
11152e5c31af7Sopenharmony_ci					${OUTPUT}
11153e5c31af7Sopenharmony_ci				}
11154e5c31af7Sopenharmony_ci			""
11155e5c31af7Sopenharmony_ci		end
11156e5c31af7Sopenharmony_ci		case vec3_to_uvec4
11157e5c31af7Sopenharmony_ci			expect compile_fail
11158e5c31af7Sopenharmony_ci			version 320 es
11159e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11160e5c31af7Sopenharmony_ci			values
11161e5c31af7Sopenharmony_ci			{
11162e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11163e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
11164e5c31af7Sopenharmony_ci			}
11165e5c31af7Sopenharmony_ci
11166e5c31af7Sopenharmony_ci			both ""
11167e5c31af7Sopenharmony_ci				#version 320 es
11168e5c31af7Sopenharmony_ci				precision highp float;
11169e5c31af7Sopenharmony_ci				${DECLARATIONS}
11170e5c31af7Sopenharmony_ci
11171e5c31af7Sopenharmony_ci				void main()
11172e5c31af7Sopenharmony_ci				{
11173e5c31af7Sopenharmony_ci					${SETUP}
11174e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
11175e5c31af7Sopenharmony_ci					${OUTPUT}
11176e5c31af7Sopenharmony_ci				}
11177e5c31af7Sopenharmony_ci			""
11178e5c31af7Sopenharmony_ci		end
11179e5c31af7Sopenharmony_ci		case vec3_to_vec2
11180e5c31af7Sopenharmony_ci			expect compile_fail
11181e5c31af7Sopenharmony_ci			version 320 es
11182e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11183e5c31af7Sopenharmony_ci			values
11184e5c31af7Sopenharmony_ci			{
11185e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11186e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
11187e5c31af7Sopenharmony_ci			}
11188e5c31af7Sopenharmony_ci
11189e5c31af7Sopenharmony_ci			both ""
11190e5c31af7Sopenharmony_ci				#version 320 es
11191e5c31af7Sopenharmony_ci				precision highp float;
11192e5c31af7Sopenharmony_ci				${DECLARATIONS}
11193e5c31af7Sopenharmony_ci
11194e5c31af7Sopenharmony_ci				void main()
11195e5c31af7Sopenharmony_ci				{
11196e5c31af7Sopenharmony_ci					${SETUP}
11197e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
11198e5c31af7Sopenharmony_ci					${OUTPUT}
11199e5c31af7Sopenharmony_ci				}
11200e5c31af7Sopenharmony_ci			""
11201e5c31af7Sopenharmony_ci		end
11202e5c31af7Sopenharmony_ci		case vec3_to_vec4
11203e5c31af7Sopenharmony_ci			expect compile_fail
11204e5c31af7Sopenharmony_ci			version 320 es
11205e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11206e5c31af7Sopenharmony_ci			values
11207e5c31af7Sopenharmony_ci			{
11208e5c31af7Sopenharmony_ci				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
11209e5c31af7Sopenharmony_ci				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
11210e5c31af7Sopenharmony_ci			}
11211e5c31af7Sopenharmony_ci
11212e5c31af7Sopenharmony_ci			both ""
11213e5c31af7Sopenharmony_ci				#version 320 es
11214e5c31af7Sopenharmony_ci				precision highp float;
11215e5c31af7Sopenharmony_ci				${DECLARATIONS}
11216e5c31af7Sopenharmony_ci
11217e5c31af7Sopenharmony_ci				void main()
11218e5c31af7Sopenharmony_ci				{
11219e5c31af7Sopenharmony_ci					${SETUP}
11220e5c31af7Sopenharmony_ci					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
11221e5c31af7Sopenharmony_ci					${OUTPUT}
11222e5c31af7Sopenharmony_ci				}
11223e5c31af7Sopenharmony_ci			""
11224e5c31af7Sopenharmony_ci		end
11225e5c31af7Sopenharmony_ci		case vec4_to_int
11226e5c31af7Sopenharmony_ci			expect compile_fail
11227e5c31af7Sopenharmony_ci			version 320 es
11228e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11229e5c31af7Sopenharmony_ci			values
11230e5c31af7Sopenharmony_ci			{
11231e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11232e5c31af7Sopenharmony_ci				output int out0 = [ 2 | 2 | 2 ];
11233e5c31af7Sopenharmony_ci			}
11234e5c31af7Sopenharmony_ci
11235e5c31af7Sopenharmony_ci			both ""
11236e5c31af7Sopenharmony_ci				#version 320 es
11237e5c31af7Sopenharmony_ci				precision highp float;
11238e5c31af7Sopenharmony_ci				${DECLARATIONS}
11239e5c31af7Sopenharmony_ci
11240e5c31af7Sopenharmony_ci				void main()
11241e5c31af7Sopenharmony_ci				{
11242e5c31af7Sopenharmony_ci					${SETUP}
11243e5c31af7Sopenharmony_ci					out0 = in0 + 2;
11244e5c31af7Sopenharmony_ci					${OUTPUT}
11245e5c31af7Sopenharmony_ci				}
11246e5c31af7Sopenharmony_ci			""
11247e5c31af7Sopenharmony_ci		end
11248e5c31af7Sopenharmony_ci		case vec4_to_uint
11249e5c31af7Sopenharmony_ci			expect compile_fail
11250e5c31af7Sopenharmony_ci			version 320 es
11251e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11252e5c31af7Sopenharmony_ci			values
11253e5c31af7Sopenharmony_ci			{
11254e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11255e5c31af7Sopenharmony_ci				output uint out0 = [ 1 | 1 | 1 ];
11256e5c31af7Sopenharmony_ci			}
11257e5c31af7Sopenharmony_ci
11258e5c31af7Sopenharmony_ci			both ""
11259e5c31af7Sopenharmony_ci				#version 320 es
11260e5c31af7Sopenharmony_ci				precision highp float;
11261e5c31af7Sopenharmony_ci				${DECLARATIONS}
11262e5c31af7Sopenharmony_ci
11263e5c31af7Sopenharmony_ci				void main()
11264e5c31af7Sopenharmony_ci				{
11265e5c31af7Sopenharmony_ci					${SETUP}
11266e5c31af7Sopenharmony_ci					out0 = in0 + 1;
11267e5c31af7Sopenharmony_ci					${OUTPUT}
11268e5c31af7Sopenharmony_ci				}
11269e5c31af7Sopenharmony_ci			""
11270e5c31af7Sopenharmony_ci		end
11271e5c31af7Sopenharmony_ci		case vec4_to_ivec2
11272e5c31af7Sopenharmony_ci			expect compile_fail
11273e5c31af7Sopenharmony_ci			version 320 es
11274e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11275e5c31af7Sopenharmony_ci			values
11276e5c31af7Sopenharmony_ci			{
11277e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11278e5c31af7Sopenharmony_ci				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
11279e5c31af7Sopenharmony_ci			}
11280e5c31af7Sopenharmony_ci
11281e5c31af7Sopenharmony_ci			both ""
11282e5c31af7Sopenharmony_ci				#version 320 es
11283e5c31af7Sopenharmony_ci				precision highp float;
11284e5c31af7Sopenharmony_ci				${DECLARATIONS}
11285e5c31af7Sopenharmony_ci
11286e5c31af7Sopenharmony_ci				void main()
11287e5c31af7Sopenharmony_ci				{
11288e5c31af7Sopenharmony_ci					${SETUP}
11289e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(1, 2);
11290e5c31af7Sopenharmony_ci					${OUTPUT}
11291e5c31af7Sopenharmony_ci				}
11292e5c31af7Sopenharmony_ci			""
11293e5c31af7Sopenharmony_ci		end
11294e5c31af7Sopenharmony_ci		case vec4_to_uvec2
11295e5c31af7Sopenharmony_ci			expect compile_fail
11296e5c31af7Sopenharmony_ci			version 320 es
11297e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11298e5c31af7Sopenharmony_ci			values
11299e5c31af7Sopenharmony_ci			{
11300e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11301e5c31af7Sopenharmony_ci				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
11302e5c31af7Sopenharmony_ci			}
11303e5c31af7Sopenharmony_ci
11304e5c31af7Sopenharmony_ci			both ""
11305e5c31af7Sopenharmony_ci				#version 320 es
11306e5c31af7Sopenharmony_ci				precision highp float;
11307e5c31af7Sopenharmony_ci				${DECLARATIONS}
11308e5c31af7Sopenharmony_ci
11309e5c31af7Sopenharmony_ci				void main()
11310e5c31af7Sopenharmony_ci				{
11311e5c31af7Sopenharmony_ci					${SETUP}
11312e5c31af7Sopenharmony_ci					out0 = in0 + ivec2(2, 3);
11313e5c31af7Sopenharmony_ci					${OUTPUT}
11314e5c31af7Sopenharmony_ci				}
11315e5c31af7Sopenharmony_ci			""
11316e5c31af7Sopenharmony_ci		end
11317e5c31af7Sopenharmony_ci		case vec4_to_ivec3
11318e5c31af7Sopenharmony_ci			expect compile_fail
11319e5c31af7Sopenharmony_ci			version 320 es
11320e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11321e5c31af7Sopenharmony_ci			values
11322e5c31af7Sopenharmony_ci			{
11323e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11324e5c31af7Sopenharmony_ci				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
11325e5c31af7Sopenharmony_ci			}
11326e5c31af7Sopenharmony_ci
11327e5c31af7Sopenharmony_ci			both ""
11328e5c31af7Sopenharmony_ci				#version 320 es
11329e5c31af7Sopenharmony_ci				precision highp float;
11330e5c31af7Sopenharmony_ci				${DECLARATIONS}
11331e5c31af7Sopenharmony_ci
11332e5c31af7Sopenharmony_ci				void main()
11333e5c31af7Sopenharmony_ci				{
11334e5c31af7Sopenharmony_ci					${SETUP}
11335e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(1, 2, 3);
11336e5c31af7Sopenharmony_ci					${OUTPUT}
11337e5c31af7Sopenharmony_ci				}
11338e5c31af7Sopenharmony_ci			""
11339e5c31af7Sopenharmony_ci		end
11340e5c31af7Sopenharmony_ci		case vec4_to_uvec3
11341e5c31af7Sopenharmony_ci			expect compile_fail
11342e5c31af7Sopenharmony_ci			version 320 es
11343e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11344e5c31af7Sopenharmony_ci			values
11345e5c31af7Sopenharmony_ci			{
11346e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11347e5c31af7Sopenharmony_ci				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
11348e5c31af7Sopenharmony_ci			}
11349e5c31af7Sopenharmony_ci
11350e5c31af7Sopenharmony_ci			both ""
11351e5c31af7Sopenharmony_ci				#version 320 es
11352e5c31af7Sopenharmony_ci				precision highp float;
11353e5c31af7Sopenharmony_ci				${DECLARATIONS}
11354e5c31af7Sopenharmony_ci
11355e5c31af7Sopenharmony_ci				void main()
11356e5c31af7Sopenharmony_ci				{
11357e5c31af7Sopenharmony_ci					${SETUP}
11358e5c31af7Sopenharmony_ci					out0 = in0 + ivec3(2, 3, 5);
11359e5c31af7Sopenharmony_ci					${OUTPUT}
11360e5c31af7Sopenharmony_ci				}
11361e5c31af7Sopenharmony_ci			""
11362e5c31af7Sopenharmony_ci		end
11363e5c31af7Sopenharmony_ci		case vec4_to_ivec4
11364e5c31af7Sopenharmony_ci			expect compile_fail
11365e5c31af7Sopenharmony_ci			version 320 es
11366e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11367e5c31af7Sopenharmony_ci			values
11368e5c31af7Sopenharmony_ci			{
11369e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11370e5c31af7Sopenharmony_ci				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
11371e5c31af7Sopenharmony_ci			}
11372e5c31af7Sopenharmony_ci
11373e5c31af7Sopenharmony_ci			both ""
11374e5c31af7Sopenharmony_ci				#version 320 es
11375e5c31af7Sopenharmony_ci				precision highp float;
11376e5c31af7Sopenharmony_ci				${DECLARATIONS}
11377e5c31af7Sopenharmony_ci
11378e5c31af7Sopenharmony_ci				void main()
11379e5c31af7Sopenharmony_ci				{
11380e5c31af7Sopenharmony_ci					${SETUP}
11381e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(1, 2, 3, 4);
11382e5c31af7Sopenharmony_ci					${OUTPUT}
11383e5c31af7Sopenharmony_ci				}
11384e5c31af7Sopenharmony_ci			""
11385e5c31af7Sopenharmony_ci		end
11386e5c31af7Sopenharmony_ci		case vec4_to_uvec4
11387e5c31af7Sopenharmony_ci			expect compile_fail
11388e5c31af7Sopenharmony_ci			version 320 es
11389e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11390e5c31af7Sopenharmony_ci			values
11391e5c31af7Sopenharmony_ci			{
11392e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11393e5c31af7Sopenharmony_ci				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
11394e5c31af7Sopenharmony_ci			}
11395e5c31af7Sopenharmony_ci
11396e5c31af7Sopenharmony_ci			both ""
11397e5c31af7Sopenharmony_ci				#version 320 es
11398e5c31af7Sopenharmony_ci				precision highp float;
11399e5c31af7Sopenharmony_ci				${DECLARATIONS}
11400e5c31af7Sopenharmony_ci
11401e5c31af7Sopenharmony_ci				void main()
11402e5c31af7Sopenharmony_ci				{
11403e5c31af7Sopenharmony_ci					${SETUP}
11404e5c31af7Sopenharmony_ci					out0 = in0 + ivec4(2, 3, 5, 8);
11405e5c31af7Sopenharmony_ci					${OUTPUT}
11406e5c31af7Sopenharmony_ci				}
11407e5c31af7Sopenharmony_ci			""
11408e5c31af7Sopenharmony_ci		end
11409e5c31af7Sopenharmony_ci		case vec4_to_vec2
11410e5c31af7Sopenharmony_ci			expect compile_fail
11411e5c31af7Sopenharmony_ci			version 320 es
11412e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11413e5c31af7Sopenharmony_ci			values
11414e5c31af7Sopenharmony_ci			{
11415e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11416e5c31af7Sopenharmony_ci				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
11417e5c31af7Sopenharmony_ci			}
11418e5c31af7Sopenharmony_ci
11419e5c31af7Sopenharmony_ci			both ""
11420e5c31af7Sopenharmony_ci				#version 320 es
11421e5c31af7Sopenharmony_ci				precision highp float;
11422e5c31af7Sopenharmony_ci				${DECLARATIONS}
11423e5c31af7Sopenharmony_ci
11424e5c31af7Sopenharmony_ci				void main()
11425e5c31af7Sopenharmony_ci				{
11426e5c31af7Sopenharmony_ci					${SETUP}
11427e5c31af7Sopenharmony_ci					out0 = in0 + vec2(1.0, 2.0);
11428e5c31af7Sopenharmony_ci					${OUTPUT}
11429e5c31af7Sopenharmony_ci				}
11430e5c31af7Sopenharmony_ci			""
11431e5c31af7Sopenharmony_ci		end
11432e5c31af7Sopenharmony_ci		case vec4_to_vec3
11433e5c31af7Sopenharmony_ci			expect compile_fail
11434e5c31af7Sopenharmony_ci			version 320 es
11435e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11436e5c31af7Sopenharmony_ci			values
11437e5c31af7Sopenharmony_ci			{
11438e5c31af7Sopenharmony_ci				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
11439e5c31af7Sopenharmony_ci				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
11440e5c31af7Sopenharmony_ci			}
11441e5c31af7Sopenharmony_ci
11442e5c31af7Sopenharmony_ci			both ""
11443e5c31af7Sopenharmony_ci				#version 320 es
11444e5c31af7Sopenharmony_ci				precision highp float;
11445e5c31af7Sopenharmony_ci				${DECLARATIONS}
11446e5c31af7Sopenharmony_ci
11447e5c31af7Sopenharmony_ci				void main()
11448e5c31af7Sopenharmony_ci				{
11449e5c31af7Sopenharmony_ci					${SETUP}
11450e5c31af7Sopenharmony_ci					out0 = in0 + vec3(1.0, 2.0, 3.0);
11451e5c31af7Sopenharmony_ci					${OUTPUT}
11452e5c31af7Sopenharmony_ci				}
11453e5c31af7Sopenharmony_ci			""
11454e5c31af7Sopenharmony_ci		end
11455e5c31af7Sopenharmony_ci
11456e5c31af7Sopenharmony_ci	end # variables
11457e5c31af7Sopenharmony_ci	group arrays "Arrays"
11458e5c31af7Sopenharmony_ci
11459e5c31af7Sopenharmony_ci		case int_to_float
11460e5c31af7Sopenharmony_ci			expect compile_fail
11461e5c31af7Sopenharmony_ci			version 320 es
11462e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11463e5c31af7Sopenharmony_ci			values {}
11464e5c31af7Sopenharmony_ci
11465e5c31af7Sopenharmony_ci			both ""
11466e5c31af7Sopenharmony_ci				#version 320 es
11467e5c31af7Sopenharmony_ci				precision highp float;
11468e5c31af7Sopenharmony_ci				${DECLARATIONS}
11469e5c31af7Sopenharmony_ci
11470e5c31af7Sopenharmony_ci				void main()
11471e5c31af7Sopenharmony_ci				{
11472e5c31af7Sopenharmony_ci					${SETUP}
11473e5c31af7Sopenharmony_ci					float a[] = int[] (2, 1, 1, 3, 5);
11474e5c31af7Sopenharmony_ci					${OUTPUT}
11475e5c31af7Sopenharmony_ci				}
11476e5c31af7Sopenharmony_ci			""
11477e5c31af7Sopenharmony_ci		end
11478e5c31af7Sopenharmony_ci		case int_to_uint
11479e5c31af7Sopenharmony_ci			expect compile_fail
11480e5c31af7Sopenharmony_ci			version 320 es
11481e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11482e5c31af7Sopenharmony_ci			values {}
11483e5c31af7Sopenharmony_ci
11484e5c31af7Sopenharmony_ci			both ""
11485e5c31af7Sopenharmony_ci				#version 320 es
11486e5c31af7Sopenharmony_ci				precision highp float;
11487e5c31af7Sopenharmony_ci				${DECLARATIONS}
11488e5c31af7Sopenharmony_ci
11489e5c31af7Sopenharmony_ci				void main()
11490e5c31af7Sopenharmony_ci				{
11491e5c31af7Sopenharmony_ci					${SETUP}
11492e5c31af7Sopenharmony_ci					uint a[] = int[] (2, 1, 1, 3, 5);
11493e5c31af7Sopenharmony_ci					${OUTPUT}
11494e5c31af7Sopenharmony_ci				}
11495e5c31af7Sopenharmony_ci			""
11496e5c31af7Sopenharmony_ci		end
11497e5c31af7Sopenharmony_ci		case uint_to_float
11498e5c31af7Sopenharmony_ci			expect compile_fail
11499e5c31af7Sopenharmony_ci			version 320 es
11500e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11501e5c31af7Sopenharmony_ci			values {}
11502e5c31af7Sopenharmony_ci
11503e5c31af7Sopenharmony_ci			both ""
11504e5c31af7Sopenharmony_ci				#version 320 es
11505e5c31af7Sopenharmony_ci				precision highp float;
11506e5c31af7Sopenharmony_ci				${DECLARATIONS}
11507e5c31af7Sopenharmony_ci
11508e5c31af7Sopenharmony_ci				void main()
11509e5c31af7Sopenharmony_ci				{
11510e5c31af7Sopenharmony_ci					${SETUP}
11511e5c31af7Sopenharmony_ci					float a[] = uint[] (1, 3, 4, 7, 11);
11512e5c31af7Sopenharmony_ci					${OUTPUT}
11513e5c31af7Sopenharmony_ci				}
11514e5c31af7Sopenharmony_ci			""
11515e5c31af7Sopenharmony_ci		end
11516e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
11517e5c31af7Sopenharmony_ci			expect compile_fail
11518e5c31af7Sopenharmony_ci			version 320 es
11519e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11520e5c31af7Sopenharmony_ci			values {}
11521e5c31af7Sopenharmony_ci
11522e5c31af7Sopenharmony_ci			both ""
11523e5c31af7Sopenharmony_ci				#version 320 es
11524e5c31af7Sopenharmony_ci				precision highp float;
11525e5c31af7Sopenharmony_ci				${DECLARATIONS}
11526e5c31af7Sopenharmony_ci
11527e5c31af7Sopenharmony_ci				void main()
11528e5c31af7Sopenharmony_ci				{
11529e5c31af7Sopenharmony_ci					${SETUP}
11530e5c31af7Sopenharmony_ci					uvec2 a[] = ivec2[] (uvec2(1, 2), uvec2(2, 1), uvec2(3, 7));
11531e5c31af7Sopenharmony_ci					${OUTPUT}
11532e5c31af7Sopenharmony_ci				}
11533e5c31af7Sopenharmony_ci			""
11534e5c31af7Sopenharmony_ci		end
11535e5c31af7Sopenharmony_ci		case ivec2_to_vec2
11536e5c31af7Sopenharmony_ci			expect compile_fail
11537e5c31af7Sopenharmony_ci			version 320 es
11538e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11539e5c31af7Sopenharmony_ci			values {}
11540e5c31af7Sopenharmony_ci
11541e5c31af7Sopenharmony_ci			both ""
11542e5c31af7Sopenharmony_ci				#version 320 es
11543e5c31af7Sopenharmony_ci				precision highp float;
11544e5c31af7Sopenharmony_ci				${DECLARATIONS}
11545e5c31af7Sopenharmony_ci
11546e5c31af7Sopenharmony_ci				void main()
11547e5c31af7Sopenharmony_ci				{
11548e5c31af7Sopenharmony_ci					${SETUP}
11549e5c31af7Sopenharmony_ci					vec2 a[] = ivec2[] (vec2(1, 2), vec2(2, 1), vec2(3, 7));
11550e5c31af7Sopenharmony_ci					${OUTPUT}
11551e5c31af7Sopenharmony_ci				}
11552e5c31af7Sopenharmony_ci			""
11553e5c31af7Sopenharmony_ci		end
11554e5c31af7Sopenharmony_ci		case uvec2_to_vec2
11555e5c31af7Sopenharmony_ci			expect compile_fail
11556e5c31af7Sopenharmony_ci			version 320 es
11557e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11558e5c31af7Sopenharmony_ci			values {}
11559e5c31af7Sopenharmony_ci
11560e5c31af7Sopenharmony_ci			both ""
11561e5c31af7Sopenharmony_ci				#version 320 es
11562e5c31af7Sopenharmony_ci				precision highp float;
11563e5c31af7Sopenharmony_ci				${DECLARATIONS}
11564e5c31af7Sopenharmony_ci
11565e5c31af7Sopenharmony_ci				void main()
11566e5c31af7Sopenharmony_ci				{
11567e5c31af7Sopenharmony_ci					${SETUP}
11568e5c31af7Sopenharmony_ci					vec2 a[] = uvec2[] (vec2(2, 3), vec2(4, 6), vec2(1, 13));
11569e5c31af7Sopenharmony_ci					${OUTPUT}
11570e5c31af7Sopenharmony_ci				}
11571e5c31af7Sopenharmony_ci			""
11572e5c31af7Sopenharmony_ci		end
11573e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
11574e5c31af7Sopenharmony_ci			expect compile_fail
11575e5c31af7Sopenharmony_ci			version 320 es
11576e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11577e5c31af7Sopenharmony_ci			values {}
11578e5c31af7Sopenharmony_ci
11579e5c31af7Sopenharmony_ci			both ""
11580e5c31af7Sopenharmony_ci				#version 320 es
11581e5c31af7Sopenharmony_ci				precision highp float;
11582e5c31af7Sopenharmony_ci				${DECLARATIONS}
11583e5c31af7Sopenharmony_ci
11584e5c31af7Sopenharmony_ci				void main()
11585e5c31af7Sopenharmony_ci				{
11586e5c31af7Sopenharmony_ci					${SETUP}
11587e5c31af7Sopenharmony_ci					uvec3 a[] = ivec3[] (uvec3(1, 2, 3), uvec3(2, 1, 2), uvec3(3, 7, 2));
11588e5c31af7Sopenharmony_ci					${OUTPUT}
11589e5c31af7Sopenharmony_ci				}
11590e5c31af7Sopenharmony_ci			""
11591e5c31af7Sopenharmony_ci		end
11592e5c31af7Sopenharmony_ci		case ivec3_to_vec3
11593e5c31af7Sopenharmony_ci			expect compile_fail
11594e5c31af7Sopenharmony_ci			version 320 es
11595e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11596e5c31af7Sopenharmony_ci			values {}
11597e5c31af7Sopenharmony_ci
11598e5c31af7Sopenharmony_ci			both ""
11599e5c31af7Sopenharmony_ci				#version 320 es
11600e5c31af7Sopenharmony_ci				precision highp float;
11601e5c31af7Sopenharmony_ci				${DECLARATIONS}
11602e5c31af7Sopenharmony_ci
11603e5c31af7Sopenharmony_ci				void main()
11604e5c31af7Sopenharmony_ci				{
11605e5c31af7Sopenharmony_ci					${SETUP}
11606e5c31af7Sopenharmony_ci					vec3 a[] = ivec3[] (vec3(1, 2, 3), vec3(2, 1, 2), vec3(3, 7, 2));
11607e5c31af7Sopenharmony_ci					${OUTPUT}
11608e5c31af7Sopenharmony_ci				}
11609e5c31af7Sopenharmony_ci			""
11610e5c31af7Sopenharmony_ci		end
11611e5c31af7Sopenharmony_ci		case uvec3_to_vec3
11612e5c31af7Sopenharmony_ci			expect compile_fail
11613e5c31af7Sopenharmony_ci			version 320 es
11614e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11615e5c31af7Sopenharmony_ci			values {}
11616e5c31af7Sopenharmony_ci
11617e5c31af7Sopenharmony_ci			both ""
11618e5c31af7Sopenharmony_ci				#version 320 es
11619e5c31af7Sopenharmony_ci				precision highp float;
11620e5c31af7Sopenharmony_ci				${DECLARATIONS}
11621e5c31af7Sopenharmony_ci
11622e5c31af7Sopenharmony_ci				void main()
11623e5c31af7Sopenharmony_ci				{
11624e5c31af7Sopenharmony_ci					${SETUP}
11625e5c31af7Sopenharmony_ci					vec3 a[] = uvec3[] (vec3(2, 3, 5), vec3(4, 6, 2), vec3(1, 13, 7));
11626e5c31af7Sopenharmony_ci					${OUTPUT}
11627e5c31af7Sopenharmony_ci				}
11628e5c31af7Sopenharmony_ci			""
11629e5c31af7Sopenharmony_ci		end
11630e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
11631e5c31af7Sopenharmony_ci			expect compile_fail
11632e5c31af7Sopenharmony_ci			version 320 es
11633e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11634e5c31af7Sopenharmony_ci			values {}
11635e5c31af7Sopenharmony_ci
11636e5c31af7Sopenharmony_ci			both ""
11637e5c31af7Sopenharmony_ci				#version 320 es
11638e5c31af7Sopenharmony_ci				precision highp float;
11639e5c31af7Sopenharmony_ci				${DECLARATIONS}
11640e5c31af7Sopenharmony_ci
11641e5c31af7Sopenharmony_ci				void main()
11642e5c31af7Sopenharmony_ci				{
11643e5c31af7Sopenharmony_ci					${SETUP}
11644e5c31af7Sopenharmony_ci					uvec4 a[] = ivec4[] (uvec4(1, 2, 3, 4), uvec4(2, 1, 2, 6), uvec4(3, 7, 2, 5));
11645e5c31af7Sopenharmony_ci					${OUTPUT}
11646e5c31af7Sopenharmony_ci				}
11647e5c31af7Sopenharmony_ci			""
11648e5c31af7Sopenharmony_ci		end
11649e5c31af7Sopenharmony_ci		case ivec4_to_vec4
11650e5c31af7Sopenharmony_ci			expect compile_fail
11651e5c31af7Sopenharmony_ci			version 320 es
11652e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11653e5c31af7Sopenharmony_ci			values {}
11654e5c31af7Sopenharmony_ci
11655e5c31af7Sopenharmony_ci			both ""
11656e5c31af7Sopenharmony_ci				#version 320 es
11657e5c31af7Sopenharmony_ci				precision highp float;
11658e5c31af7Sopenharmony_ci				${DECLARATIONS}
11659e5c31af7Sopenharmony_ci
11660e5c31af7Sopenharmony_ci				void main()
11661e5c31af7Sopenharmony_ci				{
11662e5c31af7Sopenharmony_ci					${SETUP}
11663e5c31af7Sopenharmony_ci					vec4 a[] = ivec4[] (vec4(1, 2, 3, 4), vec4(2, 1, 2, 6), vec4(3, 7, 2, 5));
11664e5c31af7Sopenharmony_ci					${OUTPUT}
11665e5c31af7Sopenharmony_ci				}
11666e5c31af7Sopenharmony_ci			""
11667e5c31af7Sopenharmony_ci		end
11668e5c31af7Sopenharmony_ci		case uvec4_to_vec4
11669e5c31af7Sopenharmony_ci			expect compile_fail
11670e5c31af7Sopenharmony_ci			version 320 es
11671e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11672e5c31af7Sopenharmony_ci			values {}
11673e5c31af7Sopenharmony_ci
11674e5c31af7Sopenharmony_ci			both ""
11675e5c31af7Sopenharmony_ci				#version 320 es
11676e5c31af7Sopenharmony_ci				precision highp float;
11677e5c31af7Sopenharmony_ci				${DECLARATIONS}
11678e5c31af7Sopenharmony_ci
11679e5c31af7Sopenharmony_ci				void main()
11680e5c31af7Sopenharmony_ci				{
11681e5c31af7Sopenharmony_ci					${SETUP}
11682e5c31af7Sopenharmony_ci					vec4 a[] = uvec4[] (vec4(2, 3, 5, 8), vec4(4, 6, 2, 9), vec4(1, 13, 7, 4));
11683e5c31af7Sopenharmony_ci					${OUTPUT}
11684e5c31af7Sopenharmony_ci				}
11685e5c31af7Sopenharmony_ci			""
11686e5c31af7Sopenharmony_ci		end
11687e5c31af7Sopenharmony_ci
11688e5c31af7Sopenharmony_ci	end # arrays
11689e5c31af7Sopenharmony_ci	group structs "Structs"
11690e5c31af7Sopenharmony_ci
11691e5c31af7Sopenharmony_ci		case int_to_float
11692e5c31af7Sopenharmony_ci			expect compile_fail
11693e5c31af7Sopenharmony_ci			version 320 es
11694e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11695e5c31af7Sopenharmony_ci			values {}
11696e5c31af7Sopenharmony_ci
11697e5c31af7Sopenharmony_ci			both ""
11698e5c31af7Sopenharmony_ci				#version 320 es
11699e5c31af7Sopenharmony_ci				precision highp float;
11700e5c31af7Sopenharmony_ci				${DECLARATIONS}
11701e5c31af7Sopenharmony_ci
11702e5c31af7Sopenharmony_ci				void main()
11703e5c31af7Sopenharmony_ci				{
11704e5c31af7Sopenharmony_ci					${SETUP}
11705e5c31af7Sopenharmony_ci					struct { int value; } a;
11706e5c31af7Sopenharmony_ci					struct { float value; } b;
11707e5c31af7Sopenharmony_ci					a = 2;
11708e5c31af7Sopenharmony_ci					b = a;
11709e5c31af7Sopenharmony_ci					${OUTPUT}
11710e5c31af7Sopenharmony_ci				}
11711e5c31af7Sopenharmony_ci			""
11712e5c31af7Sopenharmony_ci		end
11713e5c31af7Sopenharmony_ci		case int_to_uint
11714e5c31af7Sopenharmony_ci			expect compile_fail
11715e5c31af7Sopenharmony_ci			version 320 es
11716e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11717e5c31af7Sopenharmony_ci			values {}
11718e5c31af7Sopenharmony_ci
11719e5c31af7Sopenharmony_ci			both ""
11720e5c31af7Sopenharmony_ci				#version 320 es
11721e5c31af7Sopenharmony_ci				precision highp float;
11722e5c31af7Sopenharmony_ci				${DECLARATIONS}
11723e5c31af7Sopenharmony_ci
11724e5c31af7Sopenharmony_ci				void main()
11725e5c31af7Sopenharmony_ci				{
11726e5c31af7Sopenharmony_ci					${SETUP}
11727e5c31af7Sopenharmony_ci					struct { int value; } a;
11728e5c31af7Sopenharmony_ci					struct { uint value; } b;
11729e5c31af7Sopenharmony_ci					a = 2;
11730e5c31af7Sopenharmony_ci					b = a;
11731e5c31af7Sopenharmony_ci					${OUTPUT}
11732e5c31af7Sopenharmony_ci				}
11733e5c31af7Sopenharmony_ci			""
11734e5c31af7Sopenharmony_ci		end
11735e5c31af7Sopenharmony_ci		case uint_to_float
11736e5c31af7Sopenharmony_ci			expect compile_fail
11737e5c31af7Sopenharmony_ci			version 320 es
11738e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11739e5c31af7Sopenharmony_ci			values {}
11740e5c31af7Sopenharmony_ci
11741e5c31af7Sopenharmony_ci			both ""
11742e5c31af7Sopenharmony_ci				#version 320 es
11743e5c31af7Sopenharmony_ci				precision highp float;
11744e5c31af7Sopenharmony_ci				${DECLARATIONS}
11745e5c31af7Sopenharmony_ci
11746e5c31af7Sopenharmony_ci				void main()
11747e5c31af7Sopenharmony_ci				{
11748e5c31af7Sopenharmony_ci					${SETUP}
11749e5c31af7Sopenharmony_ci					struct { uint value; } a;
11750e5c31af7Sopenharmony_ci					struct { float value; } b;
11751e5c31af7Sopenharmony_ci					a = 1;
11752e5c31af7Sopenharmony_ci					b = a;
11753e5c31af7Sopenharmony_ci					${OUTPUT}
11754e5c31af7Sopenharmony_ci				}
11755e5c31af7Sopenharmony_ci			""
11756e5c31af7Sopenharmony_ci		end
11757e5c31af7Sopenharmony_ci		case ivec2_to_uvec2
11758e5c31af7Sopenharmony_ci			expect compile_fail
11759e5c31af7Sopenharmony_ci			version 320 es
11760e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11761e5c31af7Sopenharmony_ci			values {}
11762e5c31af7Sopenharmony_ci
11763e5c31af7Sopenharmony_ci			both ""
11764e5c31af7Sopenharmony_ci				#version 320 es
11765e5c31af7Sopenharmony_ci				precision highp float;
11766e5c31af7Sopenharmony_ci				${DECLARATIONS}
11767e5c31af7Sopenharmony_ci
11768e5c31af7Sopenharmony_ci				void main()
11769e5c31af7Sopenharmony_ci				{
11770e5c31af7Sopenharmony_ci					${SETUP}
11771e5c31af7Sopenharmony_ci					struct { ivec2 value; } a;
11772e5c31af7Sopenharmony_ci					struct { uvec2 value; } b;
11773e5c31af7Sopenharmony_ci					a = ivec2(1, 2);
11774e5c31af7Sopenharmony_ci					b = a;
11775e5c31af7Sopenharmony_ci					${OUTPUT}
11776e5c31af7Sopenharmony_ci				}
11777e5c31af7Sopenharmony_ci			""
11778e5c31af7Sopenharmony_ci		end
11779e5c31af7Sopenharmony_ci		case ivec2_to_vec2
11780e5c31af7Sopenharmony_ci			expect compile_fail
11781e5c31af7Sopenharmony_ci			version 320 es
11782e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11783e5c31af7Sopenharmony_ci			values {}
11784e5c31af7Sopenharmony_ci
11785e5c31af7Sopenharmony_ci			both ""
11786e5c31af7Sopenharmony_ci				#version 320 es
11787e5c31af7Sopenharmony_ci				precision highp float;
11788e5c31af7Sopenharmony_ci				${DECLARATIONS}
11789e5c31af7Sopenharmony_ci
11790e5c31af7Sopenharmony_ci				void main()
11791e5c31af7Sopenharmony_ci				{
11792e5c31af7Sopenharmony_ci					${SETUP}
11793e5c31af7Sopenharmony_ci					struct { ivec2 value; } a;
11794e5c31af7Sopenharmony_ci					struct { vec2 value; } b;
11795e5c31af7Sopenharmony_ci					a = ivec2(1, 2);
11796e5c31af7Sopenharmony_ci					b = a;
11797e5c31af7Sopenharmony_ci					${OUTPUT}
11798e5c31af7Sopenharmony_ci				}
11799e5c31af7Sopenharmony_ci			""
11800e5c31af7Sopenharmony_ci		end
11801e5c31af7Sopenharmony_ci		case uvec2_to_vec2
11802e5c31af7Sopenharmony_ci			expect compile_fail
11803e5c31af7Sopenharmony_ci			version 320 es
11804e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11805e5c31af7Sopenharmony_ci			values {}
11806e5c31af7Sopenharmony_ci
11807e5c31af7Sopenharmony_ci			both ""
11808e5c31af7Sopenharmony_ci				#version 320 es
11809e5c31af7Sopenharmony_ci				precision highp float;
11810e5c31af7Sopenharmony_ci				${DECLARATIONS}
11811e5c31af7Sopenharmony_ci
11812e5c31af7Sopenharmony_ci				void main()
11813e5c31af7Sopenharmony_ci				{
11814e5c31af7Sopenharmony_ci					${SETUP}
11815e5c31af7Sopenharmony_ci					struct { uvec2 value; } a;
11816e5c31af7Sopenharmony_ci					struct { vec2 value; } b;
11817e5c31af7Sopenharmony_ci					a = uvec2(2, 3);
11818e5c31af7Sopenharmony_ci					b = a;
11819e5c31af7Sopenharmony_ci					${OUTPUT}
11820e5c31af7Sopenharmony_ci				}
11821e5c31af7Sopenharmony_ci			""
11822e5c31af7Sopenharmony_ci		end
11823e5c31af7Sopenharmony_ci		case ivec3_to_uvec3
11824e5c31af7Sopenharmony_ci			expect compile_fail
11825e5c31af7Sopenharmony_ci			version 320 es
11826e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11827e5c31af7Sopenharmony_ci			values {}
11828e5c31af7Sopenharmony_ci
11829e5c31af7Sopenharmony_ci			both ""
11830e5c31af7Sopenharmony_ci				#version 320 es
11831e5c31af7Sopenharmony_ci				precision highp float;
11832e5c31af7Sopenharmony_ci				${DECLARATIONS}
11833e5c31af7Sopenharmony_ci
11834e5c31af7Sopenharmony_ci				void main()
11835e5c31af7Sopenharmony_ci				{
11836e5c31af7Sopenharmony_ci					${SETUP}
11837e5c31af7Sopenharmony_ci					struct { ivec3 value; } a;
11838e5c31af7Sopenharmony_ci					struct { uvec3 value; } b;
11839e5c31af7Sopenharmony_ci					a = ivec3(1, 2, 3);
11840e5c31af7Sopenharmony_ci					b = a;
11841e5c31af7Sopenharmony_ci					${OUTPUT}
11842e5c31af7Sopenharmony_ci				}
11843e5c31af7Sopenharmony_ci			""
11844e5c31af7Sopenharmony_ci		end
11845e5c31af7Sopenharmony_ci		case ivec3_to_vec3
11846e5c31af7Sopenharmony_ci			expect compile_fail
11847e5c31af7Sopenharmony_ci			version 320 es
11848e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11849e5c31af7Sopenharmony_ci			values {}
11850e5c31af7Sopenharmony_ci
11851e5c31af7Sopenharmony_ci			both ""
11852e5c31af7Sopenharmony_ci				#version 320 es
11853e5c31af7Sopenharmony_ci				precision highp float;
11854e5c31af7Sopenharmony_ci				${DECLARATIONS}
11855e5c31af7Sopenharmony_ci
11856e5c31af7Sopenharmony_ci				void main()
11857e5c31af7Sopenharmony_ci				{
11858e5c31af7Sopenharmony_ci					${SETUP}
11859e5c31af7Sopenharmony_ci					struct { ivec3 value; } a;
11860e5c31af7Sopenharmony_ci					struct { vec3 value; } b;
11861e5c31af7Sopenharmony_ci					a = ivec3(1, 2, 3);
11862e5c31af7Sopenharmony_ci					b = a;
11863e5c31af7Sopenharmony_ci					${OUTPUT}
11864e5c31af7Sopenharmony_ci				}
11865e5c31af7Sopenharmony_ci			""
11866e5c31af7Sopenharmony_ci		end
11867e5c31af7Sopenharmony_ci		case uvec3_to_vec3
11868e5c31af7Sopenharmony_ci			expect compile_fail
11869e5c31af7Sopenharmony_ci			version 320 es
11870e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11871e5c31af7Sopenharmony_ci			values {}
11872e5c31af7Sopenharmony_ci
11873e5c31af7Sopenharmony_ci			both ""
11874e5c31af7Sopenharmony_ci				#version 320 es
11875e5c31af7Sopenharmony_ci				precision highp float;
11876e5c31af7Sopenharmony_ci				${DECLARATIONS}
11877e5c31af7Sopenharmony_ci
11878e5c31af7Sopenharmony_ci				void main()
11879e5c31af7Sopenharmony_ci				{
11880e5c31af7Sopenharmony_ci					${SETUP}
11881e5c31af7Sopenharmony_ci					struct { uvec3 value; } a;
11882e5c31af7Sopenharmony_ci					struct { vec3 value; } b;
11883e5c31af7Sopenharmony_ci					a = uvec3(2, 3, 5);
11884e5c31af7Sopenharmony_ci					b = a;
11885e5c31af7Sopenharmony_ci					${OUTPUT}
11886e5c31af7Sopenharmony_ci				}
11887e5c31af7Sopenharmony_ci			""
11888e5c31af7Sopenharmony_ci		end
11889e5c31af7Sopenharmony_ci		case ivec4_to_uvec4
11890e5c31af7Sopenharmony_ci			expect compile_fail
11891e5c31af7Sopenharmony_ci			version 320 es
11892e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11893e5c31af7Sopenharmony_ci			values {}
11894e5c31af7Sopenharmony_ci
11895e5c31af7Sopenharmony_ci			both ""
11896e5c31af7Sopenharmony_ci				#version 320 es
11897e5c31af7Sopenharmony_ci				precision highp float;
11898e5c31af7Sopenharmony_ci				${DECLARATIONS}
11899e5c31af7Sopenharmony_ci
11900e5c31af7Sopenharmony_ci				void main()
11901e5c31af7Sopenharmony_ci				{
11902e5c31af7Sopenharmony_ci					${SETUP}
11903e5c31af7Sopenharmony_ci					struct { ivec4 value; } a;
11904e5c31af7Sopenharmony_ci					struct { uvec4 value; } b;
11905e5c31af7Sopenharmony_ci					a = ivec4(1, 2, 3, 4);
11906e5c31af7Sopenharmony_ci					b = a;
11907e5c31af7Sopenharmony_ci					${OUTPUT}
11908e5c31af7Sopenharmony_ci				}
11909e5c31af7Sopenharmony_ci			""
11910e5c31af7Sopenharmony_ci		end
11911e5c31af7Sopenharmony_ci		case ivec4_to_vec4
11912e5c31af7Sopenharmony_ci			expect compile_fail
11913e5c31af7Sopenharmony_ci			version 320 es
11914e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11915e5c31af7Sopenharmony_ci			values {}
11916e5c31af7Sopenharmony_ci
11917e5c31af7Sopenharmony_ci			both ""
11918e5c31af7Sopenharmony_ci				#version 320 es
11919e5c31af7Sopenharmony_ci				precision highp float;
11920e5c31af7Sopenharmony_ci				${DECLARATIONS}
11921e5c31af7Sopenharmony_ci
11922e5c31af7Sopenharmony_ci				void main()
11923e5c31af7Sopenharmony_ci				{
11924e5c31af7Sopenharmony_ci					${SETUP}
11925e5c31af7Sopenharmony_ci					struct { ivec4 value; } a;
11926e5c31af7Sopenharmony_ci					struct { vec4 value; } b;
11927e5c31af7Sopenharmony_ci					a = ivec4(1, 2, 3, 4);
11928e5c31af7Sopenharmony_ci					b = a;
11929e5c31af7Sopenharmony_ci					${OUTPUT}
11930e5c31af7Sopenharmony_ci				}
11931e5c31af7Sopenharmony_ci			""
11932e5c31af7Sopenharmony_ci		end
11933e5c31af7Sopenharmony_ci		case uvec4_to_vec4
11934e5c31af7Sopenharmony_ci			expect compile_fail
11935e5c31af7Sopenharmony_ci			version 320 es
11936e5c31af7Sopenharmony_ci			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
11937e5c31af7Sopenharmony_ci			values {}
11938e5c31af7Sopenharmony_ci
11939e5c31af7Sopenharmony_ci			both ""
11940e5c31af7Sopenharmony_ci				#version 320 es
11941e5c31af7Sopenharmony_ci				precision highp float;
11942e5c31af7Sopenharmony_ci				${DECLARATIONS}
11943e5c31af7Sopenharmony_ci
11944e5c31af7Sopenharmony_ci				void main()
11945e5c31af7Sopenharmony_ci				{
11946e5c31af7Sopenharmony_ci					${SETUP}
11947e5c31af7Sopenharmony_ci					struct { uvec4 value; } a;
11948e5c31af7Sopenharmony_ci					struct { vec4 value; } b;
11949e5c31af7Sopenharmony_ci					a = uvec4(2, 3, 5, 8);
11950e5c31af7Sopenharmony_ci					b = a;
11951e5c31af7Sopenharmony_ci					${OUTPUT}
11952e5c31af7Sopenharmony_ci				}
11953e5c31af7Sopenharmony_ci			""
11954e5c31af7Sopenharmony_ci		end
11955e5c31af7Sopenharmony_ci
11956e5c31af7Sopenharmony_ci	end # structs
11957e5c31af7Sopenharmony_ci
11958e5c31af7Sopenharmony_ciend # invalid
11959