1e5c31af7Sopenharmony_cigroup trivial "Trivial expressions"
2e5c31af7Sopenharmony_ci
3e5c31af7Sopenharmony_ci	case float
4e5c31af7Sopenharmony_ci		version 300 es
5e5c31af7Sopenharmony_ci		values { output float out0 = 5.0; }
6e5c31af7Sopenharmony_ci		both ""
7e5c31af7Sopenharmony_ci			#version 300 es
8e5c31af7Sopenharmony_ci			precision highp float;
9e5c31af7Sopenharmony_ci			${DECLARATIONS}
10e5c31af7Sopenharmony_ci
11e5c31af7Sopenharmony_ci			void main()
12e5c31af7Sopenharmony_ci			{
13e5c31af7Sopenharmony_ci				const float a = 5.0;
14e5c31af7Sopenharmony_ci				out0 = a;
15e5c31af7Sopenharmony_ci				${OUTPUT}
16e5c31af7Sopenharmony_ci			}
17e5c31af7Sopenharmony_ci		""
18e5c31af7Sopenharmony_ci	end
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci	case int
21e5c31af7Sopenharmony_ci		version 300 es
22e5c31af7Sopenharmony_ci		values { output int out0 = 5; }
23e5c31af7Sopenharmony_ci		both ""
24e5c31af7Sopenharmony_ci			#version 300 es
25e5c31af7Sopenharmony_ci			precision highp float;
26e5c31af7Sopenharmony_ci			${DECLARATIONS}
27e5c31af7Sopenharmony_ci
28e5c31af7Sopenharmony_ci			void main()
29e5c31af7Sopenharmony_ci			{
30e5c31af7Sopenharmony_ci				const int a = 5;
31e5c31af7Sopenharmony_ci				out0 = a;
32e5c31af7Sopenharmony_ci				${OUTPUT}
33e5c31af7Sopenharmony_ci			}
34e5c31af7Sopenharmony_ci		""
35e5c31af7Sopenharmony_ci	end
36e5c31af7Sopenharmony_ci
37e5c31af7Sopenharmony_ci	case bool
38e5c31af7Sopenharmony_ci		version 300 es
39e5c31af7Sopenharmony_ci		values { output bool out0 = true; }
40e5c31af7Sopenharmony_ci		both ""
41e5c31af7Sopenharmony_ci			#version 300 es
42e5c31af7Sopenharmony_ci			precision highp float;
43e5c31af7Sopenharmony_ci			${DECLARATIONS}
44e5c31af7Sopenharmony_ci
45e5c31af7Sopenharmony_ci			void main()
46e5c31af7Sopenharmony_ci			{
47e5c31af7Sopenharmony_ci				const bool a = true;
48e5c31af7Sopenharmony_ci				out0 = a;
49e5c31af7Sopenharmony_ci				${OUTPUT}
50e5c31af7Sopenharmony_ci			}
51e5c31af7Sopenharmony_ci		""
52e5c31af7Sopenharmony_ci	end
53e5c31af7Sopenharmony_ci
54e5c31af7Sopenharmony_ci	case cast
55e5c31af7Sopenharmony_ci		version 300 es
56e5c31af7Sopenharmony_ci		values { output float out0 = 1.0; }
57e5c31af7Sopenharmony_ci		both ""
58e5c31af7Sopenharmony_ci			#version 300 es
59e5c31af7Sopenharmony_ci			precision highp float;
60e5c31af7Sopenharmony_ci			${DECLARATIONS}
61e5c31af7Sopenharmony_ci
62e5c31af7Sopenharmony_ci			void main()
63e5c31af7Sopenharmony_ci			{
64e5c31af7Sopenharmony_ci				const float a = float(int(bool(true)));
65e5c31af7Sopenharmony_ci				out0 = a;
66e5c31af7Sopenharmony_ci				${OUTPUT}
67e5c31af7Sopenharmony_ci			}
68e5c31af7Sopenharmony_ci		""
69e5c31af7Sopenharmony_ci	end
70e5c31af7Sopenharmony_ci
71e5c31af7Sopenharmony_ciend # trivial
72e5c31af7Sopenharmony_ci
73e5c31af7Sopenharmony_cigroup operators "Operators"
74e5c31af7Sopenharmony_ci
75e5c31af7Sopenharmony_ci	case math_float
76e5c31af7Sopenharmony_ci		version 300 es
77e5c31af7Sopenharmony_ci		values { output float out0 = 2.19; }
78e5c31af7Sopenharmony_ci		both ""
79e5c31af7Sopenharmony_ci			#version 300 es
80e5c31af7Sopenharmony_ci			precision highp float;
81e5c31af7Sopenharmony_ci			${DECLARATIONS}
82e5c31af7Sopenharmony_ci
83e5c31af7Sopenharmony_ci			void main()
84e5c31af7Sopenharmony_ci			{
85e5c31af7Sopenharmony_ci				const float a = 6.0/3.5 + 1.8*2.6 - 4.2;
86e5c31af7Sopenharmony_ci				out0 = a;
87e5c31af7Sopenharmony_ci				${OUTPUT}
88e5c31af7Sopenharmony_ci			}
89e5c31af7Sopenharmony_ci		""
90e5c31af7Sopenharmony_ci	end
91e5c31af7Sopenharmony_ci
92e5c31af7Sopenharmony_ci	case math_vec
93e5c31af7Sopenharmony_ci		version 300 es
94e5c31af7Sopenharmony_ci		values { output float out0 = 15.0; }
95e5c31af7Sopenharmony_ci		both ""
96e5c31af7Sopenharmony_ci			#version 300 es
97e5c31af7Sopenharmony_ci			precision highp float;
98e5c31af7Sopenharmony_ci			${DECLARATIONS}
99e5c31af7Sopenharmony_ci
100e5c31af7Sopenharmony_ci			void main()
101e5c31af7Sopenharmony_ci			{
102e5c31af7Sopenharmony_ci				const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy;
103e5c31af7Sopenharmony_ci				out0 = a.x + a.y + a.z;
104e5c31af7Sopenharmony_ci				${OUTPUT}
105e5c31af7Sopenharmony_ci			}
106e5c31af7Sopenharmony_ci		""
107e5c31af7Sopenharmony_ci	end
108e5c31af7Sopenharmony_ci
109e5c31af7Sopenharmony_ci	case math_int
110e5c31af7Sopenharmony_ci		version 300 es
111e5c31af7Sopenharmony_ci		values { output int out0 = 7; }
112e5c31af7Sopenharmony_ci		both ""
113e5c31af7Sopenharmony_ci			#version 300 es
114e5c31af7Sopenharmony_ci			precision highp int;
115e5c31af7Sopenharmony_ci			${DECLARATIONS}
116e5c31af7Sopenharmony_ci
117e5c31af7Sopenharmony_ci			void main()
118e5c31af7Sopenharmony_ci			{
119e5c31af7Sopenharmony_ci				const int a = 25%7 + 2*3 - 9/3;
120e5c31af7Sopenharmony_ci				out0 = a;
121e5c31af7Sopenharmony_ci				${OUTPUT}
122e5c31af7Sopenharmony_ci			}
123e5c31af7Sopenharmony_ci		""
124e5c31af7Sopenharmony_ci	end
125e5c31af7Sopenharmony_ci
126e5c31af7Sopenharmony_ci	case math_ivec
127e5c31af7Sopenharmony_ci		version 300 es
128e5c31af7Sopenharmony_ci		values { output int out0 = 21; }
129e5c31af7Sopenharmony_ci		both ""
130e5c31af7Sopenharmony_ci			#version 300 es
131e5c31af7Sopenharmony_ci			precision highp int;
132e5c31af7Sopenharmony_ci			${DECLARATIONS}
133e5c31af7Sopenharmony_ci
134e5c31af7Sopenharmony_ci			void main()
135e5c31af7Sopenharmony_ci			{
136e5c31af7Sopenharmony_ci				const ivec3 a = ivec2(25%7, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz;
137e5c31af7Sopenharmony_ci				out0 = a.x + a.y + a.z;
138e5c31af7Sopenharmony_ci				${OUTPUT}
139e5c31af7Sopenharmony_ci			}
140e5c31af7Sopenharmony_ci		""
141e5c31af7Sopenharmony_ci	end
142e5c31af7Sopenharmony_ci
143e5c31af7Sopenharmony_ci	case math_mat
144e5c31af7Sopenharmony_ci		version 300 es
145e5c31af7Sopenharmony_ci		values { output float out0 = 8.0; }
146e5c31af7Sopenharmony_ci		both ""
147e5c31af7Sopenharmony_ci			#version 300 es
148e5c31af7Sopenharmony_ci			precision highp float;
149e5c31af7Sopenharmony_ci			${DECLARATIONS}
150e5c31af7Sopenharmony_ci
151e5c31af7Sopenharmony_ci			void main()
152e5c31af7Sopenharmony_ci			{
153e5c31af7Sopenharmony_ci				const mat3 a = mat3(3.0) * mat3(4.0);
154e5c31af7Sopenharmony_ci				const mat4 b = mat4(a[1][1])*2.0;
155e5c31af7Sopenharmony_ci				const mat2 c = mat2(b[0][0]) / 3.0;
156e5c31af7Sopenharmony_ci				out0 = c[0][0]+c[1][0];
157e5c31af7Sopenharmony_ci				${OUTPUT}
158e5c31af7Sopenharmony_ci			}
159e5c31af7Sopenharmony_ci		""
160e5c31af7Sopenharmony_ci	end
161e5c31af7Sopenharmony_ci
162e5c31af7Sopenharmony_ci	case bitwise
163e5c31af7Sopenharmony_ci		version 300 es
164e5c31af7Sopenharmony_ci		values { output int out0 = 678332; }
165e5c31af7Sopenharmony_ci		both ""
166e5c31af7Sopenharmony_ci			#version 300 es
167e5c31af7Sopenharmony_ci			precision highp int;
168e5c31af7Sopenharmony_ci			${DECLARATIONS}
169e5c31af7Sopenharmony_ci
170e5c31af7Sopenharmony_ci			void main()
171e5c31af7Sopenharmony_ci			{
172e5c31af7Sopenharmony_ci				const int a = (((0xABBA<<4) ^ 0xCAFE) | (0xDCBA & (0xABCD>>2))) ^ (~0xDEAD & 0xBEEF);
173e5c31af7Sopenharmony_ci				out0 = a;
174e5c31af7Sopenharmony_ci				${OUTPUT}
175e5c31af7Sopenharmony_ci			}
176e5c31af7Sopenharmony_ci		""
177e5c31af7Sopenharmony_ci	end
178e5c31af7Sopenharmony_ci
179e5c31af7Sopenharmony_ci	case logical
180e5c31af7Sopenharmony_ci		version 300 es
181e5c31af7Sopenharmony_ci		values { output bool out0 = true; }
182e5c31af7Sopenharmony_ci		both ""
183e5c31af7Sopenharmony_ci			#version 300 es
184e5c31af7Sopenharmony_ci			precision highp int;
185e5c31af7Sopenharmony_ci			${DECLARATIONS}
186e5c31af7Sopenharmony_ci
187e5c31af7Sopenharmony_ci			void main()
188e5c31af7Sopenharmony_ci			{
189e5c31af7Sopenharmony_ci				const bool a = (!false || false) && (true ^^ false);
190e5c31af7Sopenharmony_ci				out0 = a;
191e5c31af7Sopenharmony_ci				${OUTPUT}
192e5c31af7Sopenharmony_ci			}
193e5c31af7Sopenharmony_ci		""
194e5c31af7Sopenharmony_ci	end
195e5c31af7Sopenharmony_ci
196e5c31af7Sopenharmony_ci	case compare
197e5c31af7Sopenharmony_ci		version 300 es
198e5c31af7Sopenharmony_ci		values { output bool out0 = true; }
199e5c31af7Sopenharmony_ci		both ""
200e5c31af7Sopenharmony_ci			#version 300 es
201e5c31af7Sopenharmony_ci			precision highp int;
202e5c31af7Sopenharmony_ci			${DECLARATIONS}
203e5c31af7Sopenharmony_ci
204e5c31af7Sopenharmony_ci			void main()
205e5c31af7Sopenharmony_ci			{
206e5c31af7Sopenharmony_ci				const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1));
207e5c31af7Sopenharmony_ci				out0 = a;
208e5c31af7Sopenharmony_ci				${OUTPUT}
209e5c31af7Sopenharmony_ci			}
210e5c31af7Sopenharmony_ci		""
211e5c31af7Sopenharmony_ci	end
212e5c31af7Sopenharmony_ci
213e5c31af7Sopenharmony_ci	case selection
214e5c31af7Sopenharmony_ci		version 300 es
215e5c31af7Sopenharmony_ci		values { output float out0 = 5.3; }
216e5c31af7Sopenharmony_ci		both ""
217e5c31af7Sopenharmony_ci			#version 300 es
218e5c31af7Sopenharmony_ci			precision highp float;
219e5c31af7Sopenharmony_ci			${DECLARATIONS}
220e5c31af7Sopenharmony_ci
221e5c31af7Sopenharmony_ci			void main()
222e5c31af7Sopenharmony_ci			{
223e5c31af7Sopenharmony_ci				const float a = false ? 0.0 : (true ? 5.3 : 1.0);
224e5c31af7Sopenharmony_ci				out0 = a;
225e5c31af7Sopenharmony_ci				${OUTPUT}
226e5c31af7Sopenharmony_ci			}
227e5c31af7Sopenharmony_ci		""
228e5c31af7Sopenharmony_ci	end
229e5c31af7Sopenharmony_ci
230e5c31af7Sopenharmony_ciend # operators
231e5c31af7Sopenharmony_ci
232e5c31af7Sopenharmony_cigroup complex_types "Arrays & Structs"
233e5c31af7Sopenharmony_ci
234e5c31af7Sopenharmony_ci	case struct
235e5c31af7Sopenharmony_ci		version 300 es
236e5c31af7Sopenharmony_ci		values { output float out0 = 260.922; }
237e5c31af7Sopenharmony_ci		both ""
238e5c31af7Sopenharmony_ci			#version 300 es
239e5c31af7Sopenharmony_ci			precision highp float;
240e5c31af7Sopenharmony_ci			${DECLARATIONS}
241e5c31af7Sopenharmony_ci
242e5c31af7Sopenharmony_ci			struct S
243e5c31af7Sopenharmony_ci			{
244e5c31af7Sopenharmony_ci				vec4 a;
245e5c31af7Sopenharmony_ci				int  b;
246e5c31af7Sopenharmony_ci			};
247e5c31af7Sopenharmony_ci
248e5c31af7Sopenharmony_ci			void main()
249e5c31af7Sopenharmony_ci			{
250e5c31af7Sopenharmony_ci				const S s = S(vec4(1.5), 123);
251e5c31af7Sopenharmony_ci				out0 = length(s.a.xy)*float(s.b);
252e5c31af7Sopenharmony_ci				${OUTPUT}
253e5c31af7Sopenharmony_ci			}
254e5c31af7Sopenharmony_ci		""
255e5c31af7Sopenharmony_ci	end
256e5c31af7Sopenharmony_ci
257e5c31af7Sopenharmony_ci	case nested_struct
258e5c31af7Sopenharmony_ci		version 300 es
259e5c31af7Sopenharmony_ci		values { output float out0 = 965.9; }
260e5c31af7Sopenharmony_ci		both ""
261e5c31af7Sopenharmony_ci			#version 300 es
262e5c31af7Sopenharmony_ci			precision highp float;
263e5c31af7Sopenharmony_ci			${DECLARATIONS}
264e5c31af7Sopenharmony_ci
265e5c31af7Sopenharmony_ci			struct S
266e5c31af7Sopenharmony_ci			{
267e5c31af7Sopenharmony_ci				vec4 v;
268e5c31af7Sopenharmony_ci				int  i;
269e5c31af7Sopenharmony_ci			};
270e5c31af7Sopenharmony_ci
271e5c31af7Sopenharmony_ci			struct T
272e5c31af7Sopenharmony_ci			{
273e5c31af7Sopenharmony_ci				S s;
274e5c31af7Sopenharmony_ci				bool b;
275e5c31af7Sopenharmony_ci				int i;
276e5c31af7Sopenharmony_ci			};
277e5c31af7Sopenharmony_ci
278e5c31af7Sopenharmony_ci			struct U
279e5c31af7Sopenharmony_ci			{
280e5c31af7Sopenharmony_ci				S s;
281e5c31af7Sopenharmony_ci				T t;
282e5c31af7Sopenharmony_ci			};
283e5c31af7Sopenharmony_ci
284e5c31af7Sopenharmony_ci			void main()
285e5c31af7Sopenharmony_ci			{
286e5c31af7Sopenharmony_ci				const S s = S(vec4(1.5), 123);
287e5c31af7Sopenharmony_ci				const T t = T(s, false, 3);
288e5c31af7Sopenharmony_ci				const U u = U(s, t);
289e5c31af7Sopenharmony_ci				const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6));
290e5c31af7Sopenharmony_ci				out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3
291e5c31af7Sopenharmony_ci				${OUTPUT}
292e5c31af7Sopenharmony_ci			}
293e5c31af7Sopenharmony_ci		""
294e5c31af7Sopenharmony_ci	end
295e5c31af7Sopenharmony_ci
296e5c31af7Sopenharmony_ci	case array_size
297e5c31af7Sopenharmony_ci		version 300 es
298e5c31af7Sopenharmony_ci		values { output int out0 = 1; }
299e5c31af7Sopenharmony_ci		both ""
300e5c31af7Sopenharmony_ci			#version 300 es
301e5c31af7Sopenharmony_ci			precision highp float;
302e5c31af7Sopenharmony_ci			${DECLARATIONS}
303e5c31af7Sopenharmony_ci
304e5c31af7Sopenharmony_ci			void main()
305e5c31af7Sopenharmony_ci			{
306e5c31af7Sopenharmony_ci				const int a[max(-1, 1)] = int[1](1);
307e5c31af7Sopenharmony_ci				out0 = a[0];
308e5c31af7Sopenharmony_ci				${OUTPUT}
309e5c31af7Sopenharmony_ci			}
310e5c31af7Sopenharmony_ci		""
311e5c31af7Sopenharmony_ci	end
312e5c31af7Sopenharmony_ci
313e5c31af7Sopenharmony_ci	case array_length
314e5c31af7Sopenharmony_ci		version 300 es
315e5c31af7Sopenharmony_ci		values { output int out0 = 2; }
316e5c31af7Sopenharmony_ci		both ""
317e5c31af7Sopenharmony_ci			#version 300 es
318e5c31af7Sopenharmony_ci			precision highp float;
319e5c31af7Sopenharmony_ci			${DECLARATIONS}
320e5c31af7Sopenharmony_ci
321e5c31af7Sopenharmony_ci			void main()
322e5c31af7Sopenharmony_ci			{
323e5c31af7Sopenharmony_ci				const int a[1] = int[1](1);
324e5c31af7Sopenharmony_ci				out0 = a.length() + a[0];
325e5c31af7Sopenharmony_ci				${OUTPUT}
326e5c31af7Sopenharmony_ci			}
327e5c31af7Sopenharmony_ci		""
328e5c31af7Sopenharmony_ci	end
329e5c31af7Sopenharmony_ci
330e5c31af7Sopenharmony_ci	case array
331e5c31af7Sopenharmony_ci		version 300 es
332e5c31af7Sopenharmony_ci		values { output float out0 = 4.0; }
333e5c31af7Sopenharmony_ci		both ""
334e5c31af7Sopenharmony_ci			#version 300 es
335e5c31af7Sopenharmony_ci			precision highp float;
336e5c31af7Sopenharmony_ci			${DECLARATIONS}
337e5c31af7Sopenharmony_ci
338e5c31af7Sopenharmony_ci			void main()
339e5c31af7Sopenharmony_ci			{
340e5c31af7Sopenharmony_ci				const float a[1+2+5] = float[8](0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0);
341e5c31af7Sopenharmony_ci				const float f = a[1+2+4];
342e5c31af7Sopenharmony_ci				out0 = f + float(a.length()-8);
343e5c31af7Sopenharmony_ci				${OUTPUT}
344e5c31af7Sopenharmony_ci			}
345e5c31af7Sopenharmony_ci		""
346e5c31af7Sopenharmony_ci	end
347e5c31af7Sopenharmony_ci
348e5c31af7Sopenharmony_ciend # complex_types
349e5c31af7Sopenharmony_ci
350e5c31af7Sopenharmony_cigroup other "Other operations"
351e5c31af7Sopenharmony_ci
352e5c31af7Sopenharmony_ci	case switch_case
353e5c31af7Sopenharmony_ci		version 300 es
354e5c31af7Sopenharmony_ci		values
355e5c31af7Sopenharmony_ci		{
356e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ];
357e5c31af7Sopenharmony_ci			output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10];
358e5c31af7Sopenharmony_ci		}
359e5c31af7Sopenharmony_ci
360e5c31af7Sopenharmony_ci		both ""
361e5c31af7Sopenharmony_ci			#version 300 es
362e5c31af7Sopenharmony_ci			precision highp float;
363e5c31af7Sopenharmony_ci			${DECLARATIONS}
364e5c31af7Sopenharmony_ci
365e5c31af7Sopenharmony_ci			void main()
366e5c31af7Sopenharmony_ci			{
367e5c31af7Sopenharmony_ci				const int _0 = 0;
368e5c31af7Sopenharmony_ci				const int _1 = 1;
369e5c31af7Sopenharmony_ci				const int _2 = 2;
370e5c31af7Sopenharmony_ci				const int _3 = 3;
371e5c31af7Sopenharmony_ci				const int _4 = 4;
372e5c31af7Sopenharmony_ci
373e5c31af7Sopenharmony_ci				switch(int(in0))
374e5c31af7Sopenharmony_ci				{
375e5c31af7Sopenharmony_ci					case _0:
376e5c31af7Sopenharmony_ci						out0 = 0;
377e5c31af7Sopenharmony_ci						break;
378e5c31af7Sopenharmony_ci					case _1:
379e5c31af7Sopenharmony_ci						out0 = 1;
380e5c31af7Sopenharmony_ci						break;
381e5c31af7Sopenharmony_ci					case _2:
382e5c31af7Sopenharmony_ci						out0 = 2;
383e5c31af7Sopenharmony_ci						break;
384e5c31af7Sopenharmony_ci					case _3:
385e5c31af7Sopenharmony_ci						out0 = 3;
386e5c31af7Sopenharmony_ci						break;
387e5c31af7Sopenharmony_ci					case _4:
388e5c31af7Sopenharmony_ci						out0 = 4;
389e5c31af7Sopenharmony_ci						break;
390e5c31af7Sopenharmony_ci					case 5:
391e5c31af7Sopenharmony_ci						out0 = 10;
392e5c31af7Sopenharmony_ci						break;
393e5c31af7Sopenharmony_ci					default:
394e5c31af7Sopenharmony_ci						out0 = 100;
395e5c31af7Sopenharmony_ci
396e5c31af7Sopenharmony_ci				}
397e5c31af7Sopenharmony_ci				${OUTPUT}
398e5c31af7Sopenharmony_ci			}
399e5c31af7Sopenharmony_ci		""
400e5c31af7Sopenharmony_ci	end
401e5c31af7Sopenharmony_ci
402e5c31af7Sopenharmony_ci	case nested_builtin_funcs
403e5c31af7Sopenharmony_ci		version 300 es
404e5c31af7Sopenharmony_ci		values { output float out0 = 3.05; }
405e5c31af7Sopenharmony_ci		both ""
406e5c31af7Sopenharmony_ci			#version 300 es
407e5c31af7Sopenharmony_ci			precision highp float;
408e5c31af7Sopenharmony_ci			${DECLARATIONS}
409e5c31af7Sopenharmony_ci
410e5c31af7Sopenharmony_ci			void main()
411e5c31af7Sopenharmony_ci			{
412e5c31af7Sopenharmony_ci				const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/);
413e5c31af7Sopenharmony_ci				out0 = a;
414e5c31af7Sopenharmony_ci				${OUTPUT}
415e5c31af7Sopenharmony_ci			}
416e5c31af7Sopenharmony_ci		""
417e5c31af7Sopenharmony_ci	end
418e5c31af7Sopenharmony_ci
419e5c31af7Sopenharmony_ci	case complex
420e5c31af7Sopenharmony_ci		version 300 es
421e5c31af7Sopenharmony_ci		values
422e5c31af7Sopenharmony_ci		{
423e5c31af7Sopenharmony_ci			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | 5.0 ];
424e5c31af7Sopenharmony_ci			output int out0 = [ 0 | 1 | 2 | 3 | 4 | 10];
425e5c31af7Sopenharmony_ci		}
426e5c31af7Sopenharmony_ci
427e5c31af7Sopenharmony_ci		both ""
428e5c31af7Sopenharmony_ci			#version 300 es
429e5c31af7Sopenharmony_ci			precision highp float;
430e5c31af7Sopenharmony_ci			${DECLARATIONS}
431e5c31af7Sopenharmony_ci
432e5c31af7Sopenharmony_ci			struct T
433e5c31af7Sopenharmony_ci			{
434e5c31af7Sopenharmony_ci				vec4 v;
435e5c31af7Sopenharmony_ci			};
436e5c31af7Sopenharmony_ci
437e5c31af7Sopenharmony_ci			struct S
438e5c31af7Sopenharmony_ci			{
439e5c31af7Sopenharmony_ci				T t;
440e5c31af7Sopenharmony_ci				int i;
441e5c31af7Sopenharmony_ci				bool b;
442e5c31af7Sopenharmony_ci			};
443e5c31af7Sopenharmony_ci
444e5c31af7Sopenharmony_ci			void main()
445e5c31af7Sopenharmony_ci			{
446e5c31af7Sopenharmony_ci				const T   t  = T(vec4(1.0));
447e5c31af7Sopenharmony_ci				const S   s  = S(t, 42, true);
448e5c31af7Sopenharmony_ci				const int _0 = int(sin(0.0));
449e5c31af7Sopenharmony_ci				const int _1 = int(1.0);
450e5c31af7Sopenharmony_ci				const int _2 = 2 + int(float(_0>_1));
451e5c31af7Sopenharmony_ci				const int _3 = min(gl_MaxVertexAttribs, 16)/4 - 1;
452e5c31af7Sopenharmony_ci				const int _4 = min(gl_MaxDrawBuffers, 4);
453e5c31af7Sopenharmony_ci				const ivec4 nums = ivec4(0, 1, 2, 3);
454e5c31af7Sopenharmony_ci
455e5c31af7Sopenharmony_ci				switch(int(in0))
456e5c31af7Sopenharmony_ci				{
457e5c31af7Sopenharmony_ci					case int(float(_0)):
458e5c31af7Sopenharmony_ci						out0 = ((true!=false) && (!false)) ? 0 : 25;
459e5c31af7Sopenharmony_ci						break;
460e5c31af7Sopenharmony_ci					case ivec3(_1).x:
461e5c31af7Sopenharmony_ci						out0 = 3*18/9-5;
462e5c31af7Sopenharmony_ci						break;
463e5c31af7Sopenharmony_ci					case nums[_2]:
464e5c31af7Sopenharmony_ci						out0 = int(length(vec4(1.0))+0.001);
465e5c31af7Sopenharmony_ci						break;
466e5c31af7Sopenharmony_ci					case _3:
467e5c31af7Sopenharmony_ci						out0 = 3;
468e5c31af7Sopenharmony_ci						break;
469e5c31af7Sopenharmony_ci					case clamp(_4, 1, 6):
470e5c31af7Sopenharmony_ci						out0 = (s.i-2)/10;
471e5c31af7Sopenharmony_ci						break;
472e5c31af7Sopenharmony_ci					case max(3, 5):
473e5c31af7Sopenharmony_ci						out0 = 10;
474e5c31af7Sopenharmony_ci						break;
475e5c31af7Sopenharmony_ci					default:
476e5c31af7Sopenharmony_ci						out0 = 100;
477e5c31af7Sopenharmony_ci
478e5c31af7Sopenharmony_ci				}
479e5c31af7Sopenharmony_ci				${OUTPUT}
480e5c31af7Sopenharmony_ci			}
481e5c31af7Sopenharmony_ci		""
482e5c31af7Sopenharmony_ci	end
483e5c31af7Sopenharmony_ciend
484