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 variables "Order of qualification in variable declarations."
5e5c31af7Sopenharmony_ci
6e5c31af7Sopenharmony_ci	group valid "Valid orderings."
7e5c31af7Sopenharmony_ci
8e5c31af7Sopenharmony_ci		case invariant_storage_precision
9e5c31af7Sopenharmony_ci			expect pass
10e5c31af7Sopenharmony_ci			values {}
11e5c31af7Sopenharmony_ci
12e5c31af7Sopenharmony_ci			vertex ""
13e5c31af7Sopenharmony_ci				precision mediump float;
14e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
15e5c31af7Sopenharmony_ci
16e5c31af7Sopenharmony_ci				invariant varying lowp float x0;
17e5c31af7Sopenharmony_ci
18e5c31af7Sopenharmony_ci				 uniform mediump float x1;
19e5c31af7Sopenharmony_ci
20e5c31af7Sopenharmony_ci				 attribute mediump float x2;
21e5c31af7Sopenharmony_ci
22e5c31af7Sopenharmony_ci				void main()
23e5c31af7Sopenharmony_ci				{
24e5c31af7Sopenharmony_ci					x0 = 1.0;
25e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
26e5c31af7Sopenharmony_ci				}
27e5c31af7Sopenharmony_ci			""
28e5c31af7Sopenharmony_ci
29e5c31af7Sopenharmony_ci			fragment ""
30e5c31af7Sopenharmony_ci				precision mediump float;
31e5c31af7Sopenharmony_ci
32e5c31af7Sopenharmony_ci				invariant varying lowp float x0;
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_ci				 uniform mediump float x1;
35e5c31af7Sopenharmony_ci
36e5c31af7Sopenharmony_ci				void main()
37e5c31af7Sopenharmony_ci				{
38e5c31af7Sopenharmony_ci					float result = x0 + x1;
39e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
40e5c31af7Sopenharmony_ci				}
41e5c31af7Sopenharmony_ci			""
42e5c31af7Sopenharmony_ci		end
43e5c31af7Sopenharmony_ci		case storage_precision
44e5c31af7Sopenharmony_ci			expect pass
45e5c31af7Sopenharmony_ci			values {}
46e5c31af7Sopenharmony_ci
47e5c31af7Sopenharmony_ci			vertex ""
48e5c31af7Sopenharmony_ci				precision mediump float;
49e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
50e5c31af7Sopenharmony_ci
51e5c31af7Sopenharmony_ci				varying lowp float x0;
52e5c31af7Sopenharmony_ci
53e5c31af7Sopenharmony_ci				uniform mediump float x1;
54e5c31af7Sopenharmony_ci
55e5c31af7Sopenharmony_ci				attribute mediump float x2;
56e5c31af7Sopenharmony_ci
57e5c31af7Sopenharmony_ci				void main()
58e5c31af7Sopenharmony_ci				{
59e5c31af7Sopenharmony_ci					x0 = 1.0;
60e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
61e5c31af7Sopenharmony_ci				}
62e5c31af7Sopenharmony_ci			""
63e5c31af7Sopenharmony_ci
64e5c31af7Sopenharmony_ci			fragment ""
65e5c31af7Sopenharmony_ci				precision mediump float;
66e5c31af7Sopenharmony_ci
67e5c31af7Sopenharmony_ci				varying lowp float x0;
68e5c31af7Sopenharmony_ci
69e5c31af7Sopenharmony_ci				uniform mediump float x1;
70e5c31af7Sopenharmony_ci
71e5c31af7Sopenharmony_ci				void main()
72e5c31af7Sopenharmony_ci				{
73e5c31af7Sopenharmony_ci					float result = x0 + x1;
74e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
75e5c31af7Sopenharmony_ci				}
76e5c31af7Sopenharmony_ci			""
77e5c31af7Sopenharmony_ci		end
78e5c31af7Sopenharmony_ci		case invariant_storage
79e5c31af7Sopenharmony_ci			expect pass
80e5c31af7Sopenharmony_ci			values {}
81e5c31af7Sopenharmony_ci
82e5c31af7Sopenharmony_ci			vertex ""
83e5c31af7Sopenharmony_ci				precision mediump float;
84e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
85e5c31af7Sopenharmony_ci
86e5c31af7Sopenharmony_ci				invariant varying float x0;
87e5c31af7Sopenharmony_ci
88e5c31af7Sopenharmony_ci				 uniform float x1;
89e5c31af7Sopenharmony_ci
90e5c31af7Sopenharmony_ci				 attribute float x2;
91e5c31af7Sopenharmony_ci
92e5c31af7Sopenharmony_ci				void main()
93e5c31af7Sopenharmony_ci				{
94e5c31af7Sopenharmony_ci					x0 = 1.0;
95e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
96e5c31af7Sopenharmony_ci				}
97e5c31af7Sopenharmony_ci			""
98e5c31af7Sopenharmony_ci
99e5c31af7Sopenharmony_ci			fragment ""
100e5c31af7Sopenharmony_ci				precision mediump float;
101e5c31af7Sopenharmony_ci
102e5c31af7Sopenharmony_ci				invariant varying float x0;
103e5c31af7Sopenharmony_ci
104e5c31af7Sopenharmony_ci				 uniform float x1;
105e5c31af7Sopenharmony_ci
106e5c31af7Sopenharmony_ci				void main()
107e5c31af7Sopenharmony_ci				{
108e5c31af7Sopenharmony_ci					float result = x0 + x1;
109e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
110e5c31af7Sopenharmony_ci				}
111e5c31af7Sopenharmony_ci			""
112e5c31af7Sopenharmony_ci		end
113e5c31af7Sopenharmony_ci
114e5c31af7Sopenharmony_ci	end # valid
115e5c31af7Sopenharmony_ci	group invalid "Invalid orderings."
116e5c31af7Sopenharmony_ci
117e5c31af7Sopenharmony_ci		case invariant_precision_storage
118e5c31af7Sopenharmony_ci			expect compile_fail
119e5c31af7Sopenharmony_ci			values {}
120e5c31af7Sopenharmony_ci
121e5c31af7Sopenharmony_ci			vertex ""
122e5c31af7Sopenharmony_ci				precision mediump float;
123e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
124e5c31af7Sopenharmony_ci
125e5c31af7Sopenharmony_ci				invariant lowp varying float x0;
126e5c31af7Sopenharmony_ci
127e5c31af7Sopenharmony_ci				 mediump uniform float x1;
128e5c31af7Sopenharmony_ci
129e5c31af7Sopenharmony_ci				 mediump attribute float x2;
130e5c31af7Sopenharmony_ci
131e5c31af7Sopenharmony_ci				void main()
132e5c31af7Sopenharmony_ci				{
133e5c31af7Sopenharmony_ci					x0 = 1.0;
134e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
135e5c31af7Sopenharmony_ci				}
136e5c31af7Sopenharmony_ci			""
137e5c31af7Sopenharmony_ci
138e5c31af7Sopenharmony_ci			fragment ""
139e5c31af7Sopenharmony_ci				precision mediump float;
140e5c31af7Sopenharmony_ci
141e5c31af7Sopenharmony_ci				invariant lowp varying float x0;
142e5c31af7Sopenharmony_ci
143e5c31af7Sopenharmony_ci				 mediump uniform float x1;
144e5c31af7Sopenharmony_ci
145e5c31af7Sopenharmony_ci				void main()
146e5c31af7Sopenharmony_ci				{
147e5c31af7Sopenharmony_ci					float result = x0 + x1;
148e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
149e5c31af7Sopenharmony_ci				}
150e5c31af7Sopenharmony_ci			""
151e5c31af7Sopenharmony_ci		end
152e5c31af7Sopenharmony_ci		case storage_invariant_precision
153e5c31af7Sopenharmony_ci			expect compile_fail
154e5c31af7Sopenharmony_ci			values {}
155e5c31af7Sopenharmony_ci
156e5c31af7Sopenharmony_ci			vertex ""
157e5c31af7Sopenharmony_ci				precision mediump float;
158e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
159e5c31af7Sopenharmony_ci
160e5c31af7Sopenharmony_ci				varying invariant lowp float x0;
161e5c31af7Sopenharmony_ci
162e5c31af7Sopenharmony_ci				uniform mediump float x1;
163e5c31af7Sopenharmony_ci
164e5c31af7Sopenharmony_ci				attribute mediump float x2;
165e5c31af7Sopenharmony_ci
166e5c31af7Sopenharmony_ci				void main()
167e5c31af7Sopenharmony_ci				{
168e5c31af7Sopenharmony_ci					x0 = 1.0;
169e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
170e5c31af7Sopenharmony_ci				}
171e5c31af7Sopenharmony_ci			""
172e5c31af7Sopenharmony_ci
173e5c31af7Sopenharmony_ci			fragment ""
174e5c31af7Sopenharmony_ci				precision mediump float;
175e5c31af7Sopenharmony_ci
176e5c31af7Sopenharmony_ci				varying invariant lowp float x0;
177e5c31af7Sopenharmony_ci
178e5c31af7Sopenharmony_ci				uniform mediump float x1;
179e5c31af7Sopenharmony_ci
180e5c31af7Sopenharmony_ci				void main()
181e5c31af7Sopenharmony_ci				{
182e5c31af7Sopenharmony_ci					float result = x0 + x1;
183e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
184e5c31af7Sopenharmony_ci				}
185e5c31af7Sopenharmony_ci			""
186e5c31af7Sopenharmony_ci		end
187e5c31af7Sopenharmony_ci		case storage_precision_invariant
188e5c31af7Sopenharmony_ci			expect compile_fail
189e5c31af7Sopenharmony_ci			values {}
190e5c31af7Sopenharmony_ci
191e5c31af7Sopenharmony_ci			vertex ""
192e5c31af7Sopenharmony_ci				precision mediump float;
193e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
194e5c31af7Sopenharmony_ci
195e5c31af7Sopenharmony_ci				varying lowp invariant float x0;
196e5c31af7Sopenharmony_ci
197e5c31af7Sopenharmony_ci				uniform mediump float x1;
198e5c31af7Sopenharmony_ci
199e5c31af7Sopenharmony_ci				attribute mediump float x2;
200e5c31af7Sopenharmony_ci
201e5c31af7Sopenharmony_ci				void main()
202e5c31af7Sopenharmony_ci				{
203e5c31af7Sopenharmony_ci					x0 = 1.0;
204e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
205e5c31af7Sopenharmony_ci				}
206e5c31af7Sopenharmony_ci			""
207e5c31af7Sopenharmony_ci
208e5c31af7Sopenharmony_ci			fragment ""
209e5c31af7Sopenharmony_ci				precision mediump float;
210e5c31af7Sopenharmony_ci
211e5c31af7Sopenharmony_ci				varying lowp invariant float x0;
212e5c31af7Sopenharmony_ci
213e5c31af7Sopenharmony_ci				uniform mediump float x1;
214e5c31af7Sopenharmony_ci
215e5c31af7Sopenharmony_ci				void main()
216e5c31af7Sopenharmony_ci				{
217e5c31af7Sopenharmony_ci					float result = x0 + x1;
218e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
219e5c31af7Sopenharmony_ci				}
220e5c31af7Sopenharmony_ci			""
221e5c31af7Sopenharmony_ci		end
222e5c31af7Sopenharmony_ci		case precision_invariant_storage
223e5c31af7Sopenharmony_ci			expect compile_fail
224e5c31af7Sopenharmony_ci			values {}
225e5c31af7Sopenharmony_ci
226e5c31af7Sopenharmony_ci			vertex ""
227e5c31af7Sopenharmony_ci				precision mediump float;
228e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
229e5c31af7Sopenharmony_ci
230e5c31af7Sopenharmony_ci				lowp invariant varying float x0;
231e5c31af7Sopenharmony_ci
232e5c31af7Sopenharmony_ci				mediump uniform float x1;
233e5c31af7Sopenharmony_ci
234e5c31af7Sopenharmony_ci				mediump attribute float x2;
235e5c31af7Sopenharmony_ci
236e5c31af7Sopenharmony_ci				void main()
237e5c31af7Sopenharmony_ci				{
238e5c31af7Sopenharmony_ci					x0 = 1.0;
239e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
240e5c31af7Sopenharmony_ci				}
241e5c31af7Sopenharmony_ci			""
242e5c31af7Sopenharmony_ci
243e5c31af7Sopenharmony_ci			fragment ""
244e5c31af7Sopenharmony_ci				precision mediump float;
245e5c31af7Sopenharmony_ci
246e5c31af7Sopenharmony_ci				lowp invariant varying float x0;
247e5c31af7Sopenharmony_ci
248e5c31af7Sopenharmony_ci				mediump uniform float x1;
249e5c31af7Sopenharmony_ci
250e5c31af7Sopenharmony_ci				void main()
251e5c31af7Sopenharmony_ci				{
252e5c31af7Sopenharmony_ci					float result = x0 + x1;
253e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
254e5c31af7Sopenharmony_ci				}
255e5c31af7Sopenharmony_ci			""
256e5c31af7Sopenharmony_ci		end
257e5c31af7Sopenharmony_ci		case precision_storage_invariant
258e5c31af7Sopenharmony_ci			expect compile_fail
259e5c31af7Sopenharmony_ci			values {}
260e5c31af7Sopenharmony_ci
261e5c31af7Sopenharmony_ci			vertex ""
262e5c31af7Sopenharmony_ci				precision mediump float;
263e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
264e5c31af7Sopenharmony_ci
265e5c31af7Sopenharmony_ci				lowp varying invariant float x0;
266e5c31af7Sopenharmony_ci
267e5c31af7Sopenharmony_ci				mediump uniform float x1;
268e5c31af7Sopenharmony_ci
269e5c31af7Sopenharmony_ci				mediump attribute float x2;
270e5c31af7Sopenharmony_ci
271e5c31af7Sopenharmony_ci				void main()
272e5c31af7Sopenharmony_ci				{
273e5c31af7Sopenharmony_ci					x0 = 1.0;
274e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
275e5c31af7Sopenharmony_ci				}
276e5c31af7Sopenharmony_ci			""
277e5c31af7Sopenharmony_ci
278e5c31af7Sopenharmony_ci			fragment ""
279e5c31af7Sopenharmony_ci				precision mediump float;
280e5c31af7Sopenharmony_ci
281e5c31af7Sopenharmony_ci				lowp varying invariant float x0;
282e5c31af7Sopenharmony_ci
283e5c31af7Sopenharmony_ci				mediump uniform float x1;
284e5c31af7Sopenharmony_ci
285e5c31af7Sopenharmony_ci				void main()
286e5c31af7Sopenharmony_ci				{
287e5c31af7Sopenharmony_ci					float result = x0 + x1;
288e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
289e5c31af7Sopenharmony_ci				}
290e5c31af7Sopenharmony_ci			""
291e5c31af7Sopenharmony_ci		end
292e5c31af7Sopenharmony_ci		case precision_storage
293e5c31af7Sopenharmony_ci			expect compile_fail
294e5c31af7Sopenharmony_ci			values {}
295e5c31af7Sopenharmony_ci
296e5c31af7Sopenharmony_ci			vertex ""
297e5c31af7Sopenharmony_ci				precision mediump float;
298e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
299e5c31af7Sopenharmony_ci
300e5c31af7Sopenharmony_ci				lowp varying float x0;
301e5c31af7Sopenharmony_ci
302e5c31af7Sopenharmony_ci				mediump uniform float x1;
303e5c31af7Sopenharmony_ci
304e5c31af7Sopenharmony_ci				mediump attribute float x2;
305e5c31af7Sopenharmony_ci
306e5c31af7Sopenharmony_ci				void main()
307e5c31af7Sopenharmony_ci				{
308e5c31af7Sopenharmony_ci					x0 = 1.0;
309e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
310e5c31af7Sopenharmony_ci				}
311e5c31af7Sopenharmony_ci			""
312e5c31af7Sopenharmony_ci
313e5c31af7Sopenharmony_ci			fragment ""
314e5c31af7Sopenharmony_ci				precision mediump float;
315e5c31af7Sopenharmony_ci
316e5c31af7Sopenharmony_ci				lowp varying float x0;
317e5c31af7Sopenharmony_ci
318e5c31af7Sopenharmony_ci				mediump uniform float x1;
319e5c31af7Sopenharmony_ci
320e5c31af7Sopenharmony_ci				void main()
321e5c31af7Sopenharmony_ci				{
322e5c31af7Sopenharmony_ci					float result = x0 + x1;
323e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
324e5c31af7Sopenharmony_ci				}
325e5c31af7Sopenharmony_ci			""
326e5c31af7Sopenharmony_ci		end
327e5c31af7Sopenharmony_ci		case storage_invariant
328e5c31af7Sopenharmony_ci			expect compile_fail
329e5c31af7Sopenharmony_ci			values {}
330e5c31af7Sopenharmony_ci
331e5c31af7Sopenharmony_ci			vertex ""
332e5c31af7Sopenharmony_ci				precision mediump float;
333e5c31af7Sopenharmony_ci				attribute highp vec4 dEQP_Position;
334e5c31af7Sopenharmony_ci
335e5c31af7Sopenharmony_ci				varying invariant float x0;
336e5c31af7Sopenharmony_ci
337e5c31af7Sopenharmony_ci				uniform float x1;
338e5c31af7Sopenharmony_ci
339e5c31af7Sopenharmony_ci				attribute float x2;
340e5c31af7Sopenharmony_ci
341e5c31af7Sopenharmony_ci				void main()
342e5c31af7Sopenharmony_ci				{
343e5c31af7Sopenharmony_ci					x0 = 1.0;
344e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
345e5c31af7Sopenharmony_ci				}
346e5c31af7Sopenharmony_ci			""
347e5c31af7Sopenharmony_ci
348e5c31af7Sopenharmony_ci			fragment ""
349e5c31af7Sopenharmony_ci				precision mediump float;
350e5c31af7Sopenharmony_ci
351e5c31af7Sopenharmony_ci				varying invariant float x0;
352e5c31af7Sopenharmony_ci
353e5c31af7Sopenharmony_ci				uniform float x1;
354e5c31af7Sopenharmony_ci
355e5c31af7Sopenharmony_ci				void main()
356e5c31af7Sopenharmony_ci				{
357e5c31af7Sopenharmony_ci					float result = x0 + x1;
358e5c31af7Sopenharmony_ci					gl_FragColor = vec4(result, result, result, 1.0);
359e5c31af7Sopenharmony_ci				}
360e5c31af7Sopenharmony_ci			""
361e5c31af7Sopenharmony_ci		end
362e5c31af7Sopenharmony_ci
363e5c31af7Sopenharmony_ci	end # invalid
364e5c31af7Sopenharmony_ci
365e5c31af7Sopenharmony_ciend # variables
366e5c31af7Sopenharmony_cigroup parameters "Order of qualification in function parameters."
367e5c31af7Sopenharmony_ci
368e5c31af7Sopenharmony_ci	group valid "Valid orderings."
369e5c31af7Sopenharmony_ci
370e5c31af7Sopenharmony_ci		case storage_parameter_precision
371e5c31af7Sopenharmony_ci			expect pass
372e5c31af7Sopenharmony_ci			values {}
373e5c31af7Sopenharmony_ci
374e5c31af7Sopenharmony_ci			both ""
375e5c31af7Sopenharmony_ci				precision mediump float;
376e5c31af7Sopenharmony_ci				${DECLARATIONS}
377e5c31af7Sopenharmony_ci
378e5c31af7Sopenharmony_ci				float foo0 (const in lowp float x)
379e5c31af7Sopenharmony_ci				{
380e5c31af7Sopenharmony_ci					return x + 1.0;
381e5c31af7Sopenharmony_ci				}
382e5c31af7Sopenharmony_ci
383e5c31af7Sopenharmony_ci				void foo1 ( out mediump float x)
384e5c31af7Sopenharmony_ci				{
385e5c31af7Sopenharmony_ci					x = 1.0;
386e5c31af7Sopenharmony_ci				}
387e5c31af7Sopenharmony_ci
388e5c31af7Sopenharmony_ci				float foo2 ( inout mediump float x)
389e5c31af7Sopenharmony_ci				{
390e5c31af7Sopenharmony_ci					return x + 1.0;
391e5c31af7Sopenharmony_ci				}
392e5c31af7Sopenharmony_ci
393e5c31af7Sopenharmony_ci				void main()
394e5c31af7Sopenharmony_ci				{
395e5c31af7Sopenharmony_ci					${SETUP}
396e5c31af7Sopenharmony_ci					float result;
397e5c31af7Sopenharmony_ci					foo1(result);
398e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
399e5c31af7Sopenharmony_ci					foo2(result);
400e5c31af7Sopenharmony_ci					${OUTPUT}
401e5c31af7Sopenharmony_ci				}
402e5c31af7Sopenharmony_ci			""
403e5c31af7Sopenharmony_ci		end
404e5c31af7Sopenharmony_ci		case storage_parameter
405e5c31af7Sopenharmony_ci			expect pass
406e5c31af7Sopenharmony_ci			values {}
407e5c31af7Sopenharmony_ci
408e5c31af7Sopenharmony_ci			both ""
409e5c31af7Sopenharmony_ci				precision mediump float;
410e5c31af7Sopenharmony_ci				${DECLARATIONS}
411e5c31af7Sopenharmony_ci
412e5c31af7Sopenharmony_ci				float foo0 (const in float x)
413e5c31af7Sopenharmony_ci				{
414e5c31af7Sopenharmony_ci					return x + 1.0;
415e5c31af7Sopenharmony_ci				}
416e5c31af7Sopenharmony_ci
417e5c31af7Sopenharmony_ci				void foo1 ( out float x)
418e5c31af7Sopenharmony_ci				{
419e5c31af7Sopenharmony_ci					x = 1.0;
420e5c31af7Sopenharmony_ci				}
421e5c31af7Sopenharmony_ci
422e5c31af7Sopenharmony_ci				float foo2 ( inout float x)
423e5c31af7Sopenharmony_ci				{
424e5c31af7Sopenharmony_ci					return x + 1.0;
425e5c31af7Sopenharmony_ci				}
426e5c31af7Sopenharmony_ci
427e5c31af7Sopenharmony_ci				void main()
428e5c31af7Sopenharmony_ci				{
429e5c31af7Sopenharmony_ci					${SETUP}
430e5c31af7Sopenharmony_ci					float result;
431e5c31af7Sopenharmony_ci					foo1(result);
432e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
433e5c31af7Sopenharmony_ci					foo2(result);
434e5c31af7Sopenharmony_ci					${OUTPUT}
435e5c31af7Sopenharmony_ci				}
436e5c31af7Sopenharmony_ci			""
437e5c31af7Sopenharmony_ci		end
438e5c31af7Sopenharmony_ci		case storage_precision
439e5c31af7Sopenharmony_ci			expect pass
440e5c31af7Sopenharmony_ci			values {}
441e5c31af7Sopenharmony_ci
442e5c31af7Sopenharmony_ci			both ""
443e5c31af7Sopenharmony_ci				precision mediump float;
444e5c31af7Sopenharmony_ci				${DECLARATIONS}
445e5c31af7Sopenharmony_ci
446e5c31af7Sopenharmony_ci				float foo0 (const lowp float x)
447e5c31af7Sopenharmony_ci				{
448e5c31af7Sopenharmony_ci					return x + 1.0;
449e5c31af7Sopenharmony_ci				}
450e5c31af7Sopenharmony_ci
451e5c31af7Sopenharmony_ci				void foo1 ( mediump float x)
452e5c31af7Sopenharmony_ci				{
453e5c31af7Sopenharmony_ci					x = 1.0;
454e5c31af7Sopenharmony_ci				}
455e5c31af7Sopenharmony_ci
456e5c31af7Sopenharmony_ci				float foo2 ( mediump float x)
457e5c31af7Sopenharmony_ci				{
458e5c31af7Sopenharmony_ci					return x + 1.0;
459e5c31af7Sopenharmony_ci				}
460e5c31af7Sopenharmony_ci
461e5c31af7Sopenharmony_ci				void main()
462e5c31af7Sopenharmony_ci				{
463e5c31af7Sopenharmony_ci					${SETUP}
464e5c31af7Sopenharmony_ci					float result;
465e5c31af7Sopenharmony_ci					foo1(result);
466e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
467e5c31af7Sopenharmony_ci					foo2(result);
468e5c31af7Sopenharmony_ci					${OUTPUT}
469e5c31af7Sopenharmony_ci				}
470e5c31af7Sopenharmony_ci			""
471e5c31af7Sopenharmony_ci		end
472e5c31af7Sopenharmony_ci		case parameter_precision
473e5c31af7Sopenharmony_ci			expect pass
474e5c31af7Sopenharmony_ci			values {}
475e5c31af7Sopenharmony_ci
476e5c31af7Sopenharmony_ci			both ""
477e5c31af7Sopenharmony_ci				precision mediump float;
478e5c31af7Sopenharmony_ci				${DECLARATIONS}
479e5c31af7Sopenharmony_ci
480e5c31af7Sopenharmony_ci				float foo0 (in lowp float x)
481e5c31af7Sopenharmony_ci				{
482e5c31af7Sopenharmony_ci					return x + 1.0;
483e5c31af7Sopenharmony_ci				}
484e5c31af7Sopenharmony_ci
485e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
486e5c31af7Sopenharmony_ci				{
487e5c31af7Sopenharmony_ci					x = 1.0;
488e5c31af7Sopenharmony_ci				}
489e5c31af7Sopenharmony_ci
490e5c31af7Sopenharmony_ci				float foo2 (inout mediump float x)
491e5c31af7Sopenharmony_ci				{
492e5c31af7Sopenharmony_ci					return x + 1.0;
493e5c31af7Sopenharmony_ci				}
494e5c31af7Sopenharmony_ci
495e5c31af7Sopenharmony_ci				void main()
496e5c31af7Sopenharmony_ci				{
497e5c31af7Sopenharmony_ci					${SETUP}
498e5c31af7Sopenharmony_ci					float result;
499e5c31af7Sopenharmony_ci					foo1(result);
500e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
501e5c31af7Sopenharmony_ci					foo2(result);
502e5c31af7Sopenharmony_ci					${OUTPUT}
503e5c31af7Sopenharmony_ci				}
504e5c31af7Sopenharmony_ci			""
505e5c31af7Sopenharmony_ci		end
506e5c31af7Sopenharmony_ci
507e5c31af7Sopenharmony_ci	end # valid
508e5c31af7Sopenharmony_ci	group invalid "Invalid orderings."
509e5c31af7Sopenharmony_ci
510e5c31af7Sopenharmony_ci		case storage_precision_parameter
511e5c31af7Sopenharmony_ci			expect compile_fail
512e5c31af7Sopenharmony_ci			values {}
513e5c31af7Sopenharmony_ci
514e5c31af7Sopenharmony_ci			both ""
515e5c31af7Sopenharmony_ci				precision mediump float;
516e5c31af7Sopenharmony_ci				${DECLARATIONS}
517e5c31af7Sopenharmony_ci
518e5c31af7Sopenharmony_ci				float foo0 (const lowp in float x)
519e5c31af7Sopenharmony_ci				{
520e5c31af7Sopenharmony_ci					return x + 1.0;
521e5c31af7Sopenharmony_ci				}
522e5c31af7Sopenharmony_ci
523e5c31af7Sopenharmony_ci				void foo1 ( mediump out float x)
524e5c31af7Sopenharmony_ci				{
525e5c31af7Sopenharmony_ci					x = 1.0;
526e5c31af7Sopenharmony_ci				}
527e5c31af7Sopenharmony_ci
528e5c31af7Sopenharmony_ci				float foo2 ( mediump inout float x)
529e5c31af7Sopenharmony_ci				{
530e5c31af7Sopenharmony_ci					return x + 1.0;
531e5c31af7Sopenharmony_ci				}
532e5c31af7Sopenharmony_ci
533e5c31af7Sopenharmony_ci				void main()
534e5c31af7Sopenharmony_ci				{
535e5c31af7Sopenharmony_ci					${SETUP}
536e5c31af7Sopenharmony_ci					float result;
537e5c31af7Sopenharmony_ci					foo1(result);
538e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
539e5c31af7Sopenharmony_ci					foo2(result);
540e5c31af7Sopenharmony_ci					${OUTPUT}
541e5c31af7Sopenharmony_ci				}
542e5c31af7Sopenharmony_ci			""
543e5c31af7Sopenharmony_ci		end
544e5c31af7Sopenharmony_ci		case parameter_storage_precision
545e5c31af7Sopenharmony_ci			expect compile_fail
546e5c31af7Sopenharmony_ci			values {}
547e5c31af7Sopenharmony_ci
548e5c31af7Sopenharmony_ci			both ""
549e5c31af7Sopenharmony_ci				precision mediump float;
550e5c31af7Sopenharmony_ci				${DECLARATIONS}
551e5c31af7Sopenharmony_ci
552e5c31af7Sopenharmony_ci				float foo0 (in const lowp float x)
553e5c31af7Sopenharmony_ci				{
554e5c31af7Sopenharmony_ci					return x + 1.0;
555e5c31af7Sopenharmony_ci				}
556e5c31af7Sopenharmony_ci
557e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
558e5c31af7Sopenharmony_ci				{
559e5c31af7Sopenharmony_ci					x = 1.0;
560e5c31af7Sopenharmony_ci				}
561e5c31af7Sopenharmony_ci
562e5c31af7Sopenharmony_ci				float foo2 (inout mediump float x)
563e5c31af7Sopenharmony_ci				{
564e5c31af7Sopenharmony_ci					return x + 1.0;
565e5c31af7Sopenharmony_ci				}
566e5c31af7Sopenharmony_ci
567e5c31af7Sopenharmony_ci				void main()
568e5c31af7Sopenharmony_ci				{
569e5c31af7Sopenharmony_ci					${SETUP}
570e5c31af7Sopenharmony_ci					float result;
571e5c31af7Sopenharmony_ci					foo1(result);
572e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
573e5c31af7Sopenharmony_ci					foo2(result);
574e5c31af7Sopenharmony_ci					${OUTPUT}
575e5c31af7Sopenharmony_ci				}
576e5c31af7Sopenharmony_ci			""
577e5c31af7Sopenharmony_ci		end
578e5c31af7Sopenharmony_ci		case parameter_precision_storage
579e5c31af7Sopenharmony_ci			expect compile_fail
580e5c31af7Sopenharmony_ci			values {}
581e5c31af7Sopenharmony_ci
582e5c31af7Sopenharmony_ci			both ""
583e5c31af7Sopenharmony_ci				precision mediump float;
584e5c31af7Sopenharmony_ci				${DECLARATIONS}
585e5c31af7Sopenharmony_ci
586e5c31af7Sopenharmony_ci				float foo0 (in lowp const float x)
587e5c31af7Sopenharmony_ci				{
588e5c31af7Sopenharmony_ci					return x + 1.0;
589e5c31af7Sopenharmony_ci				}
590e5c31af7Sopenharmony_ci
591e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
592e5c31af7Sopenharmony_ci				{
593e5c31af7Sopenharmony_ci					x = 1.0;
594e5c31af7Sopenharmony_ci				}
595e5c31af7Sopenharmony_ci
596e5c31af7Sopenharmony_ci				float foo2 (inout mediump float x)
597e5c31af7Sopenharmony_ci				{
598e5c31af7Sopenharmony_ci					return x + 1.0;
599e5c31af7Sopenharmony_ci				}
600e5c31af7Sopenharmony_ci
601e5c31af7Sopenharmony_ci				void main()
602e5c31af7Sopenharmony_ci				{
603e5c31af7Sopenharmony_ci					${SETUP}
604e5c31af7Sopenharmony_ci					float result;
605e5c31af7Sopenharmony_ci					foo1(result);
606e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
607e5c31af7Sopenharmony_ci					foo2(result);
608e5c31af7Sopenharmony_ci					${OUTPUT}
609e5c31af7Sopenharmony_ci				}
610e5c31af7Sopenharmony_ci			""
611e5c31af7Sopenharmony_ci		end
612e5c31af7Sopenharmony_ci		case precision_storage_parameter
613e5c31af7Sopenharmony_ci			expect compile_fail
614e5c31af7Sopenharmony_ci			values {}
615e5c31af7Sopenharmony_ci
616e5c31af7Sopenharmony_ci			both ""
617e5c31af7Sopenharmony_ci				precision mediump float;
618e5c31af7Sopenharmony_ci				${DECLARATIONS}
619e5c31af7Sopenharmony_ci
620e5c31af7Sopenharmony_ci				float foo0 (lowp const in float x)
621e5c31af7Sopenharmony_ci				{
622e5c31af7Sopenharmony_ci					return x + 1.0;
623e5c31af7Sopenharmony_ci				}
624e5c31af7Sopenharmony_ci
625e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
626e5c31af7Sopenharmony_ci				{
627e5c31af7Sopenharmony_ci					x = 1.0;
628e5c31af7Sopenharmony_ci				}
629e5c31af7Sopenharmony_ci
630e5c31af7Sopenharmony_ci				float foo2 (mediump inout float x)
631e5c31af7Sopenharmony_ci				{
632e5c31af7Sopenharmony_ci					return x + 1.0;
633e5c31af7Sopenharmony_ci				}
634e5c31af7Sopenharmony_ci
635e5c31af7Sopenharmony_ci				void main()
636e5c31af7Sopenharmony_ci				{
637e5c31af7Sopenharmony_ci					${SETUP}
638e5c31af7Sopenharmony_ci					float result;
639e5c31af7Sopenharmony_ci					foo1(result);
640e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
641e5c31af7Sopenharmony_ci					foo2(result);
642e5c31af7Sopenharmony_ci					${OUTPUT}
643e5c31af7Sopenharmony_ci				}
644e5c31af7Sopenharmony_ci			""
645e5c31af7Sopenharmony_ci		end
646e5c31af7Sopenharmony_ci		case precision_parameter_storage
647e5c31af7Sopenharmony_ci			expect compile_fail
648e5c31af7Sopenharmony_ci			values {}
649e5c31af7Sopenharmony_ci
650e5c31af7Sopenharmony_ci			both ""
651e5c31af7Sopenharmony_ci				precision mediump float;
652e5c31af7Sopenharmony_ci				${DECLARATIONS}
653e5c31af7Sopenharmony_ci
654e5c31af7Sopenharmony_ci				float foo0 (lowp in const float x)
655e5c31af7Sopenharmony_ci				{
656e5c31af7Sopenharmony_ci					return x + 1.0;
657e5c31af7Sopenharmony_ci				}
658e5c31af7Sopenharmony_ci
659e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
660e5c31af7Sopenharmony_ci				{
661e5c31af7Sopenharmony_ci					x = 1.0;
662e5c31af7Sopenharmony_ci				}
663e5c31af7Sopenharmony_ci
664e5c31af7Sopenharmony_ci				float foo2 (mediump inout float x)
665e5c31af7Sopenharmony_ci				{
666e5c31af7Sopenharmony_ci					return x + 1.0;
667e5c31af7Sopenharmony_ci				}
668e5c31af7Sopenharmony_ci
669e5c31af7Sopenharmony_ci				void main()
670e5c31af7Sopenharmony_ci				{
671e5c31af7Sopenharmony_ci					${SETUP}
672e5c31af7Sopenharmony_ci					float result;
673e5c31af7Sopenharmony_ci					foo1(result);
674e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
675e5c31af7Sopenharmony_ci					foo2(result);
676e5c31af7Sopenharmony_ci					${OUTPUT}
677e5c31af7Sopenharmony_ci				}
678e5c31af7Sopenharmony_ci			""
679e5c31af7Sopenharmony_ci		end
680e5c31af7Sopenharmony_ci		case parameter_storage
681e5c31af7Sopenharmony_ci			expect compile_fail
682e5c31af7Sopenharmony_ci			values {}
683e5c31af7Sopenharmony_ci
684e5c31af7Sopenharmony_ci			both ""
685e5c31af7Sopenharmony_ci				precision mediump float;
686e5c31af7Sopenharmony_ci				${DECLARATIONS}
687e5c31af7Sopenharmony_ci
688e5c31af7Sopenharmony_ci				float foo0 (in const float x)
689e5c31af7Sopenharmony_ci				{
690e5c31af7Sopenharmony_ci					return x + 1.0;
691e5c31af7Sopenharmony_ci				}
692e5c31af7Sopenharmony_ci
693e5c31af7Sopenharmony_ci				void foo1 (out float x)
694e5c31af7Sopenharmony_ci				{
695e5c31af7Sopenharmony_ci					x = 1.0;
696e5c31af7Sopenharmony_ci				}
697e5c31af7Sopenharmony_ci
698e5c31af7Sopenharmony_ci				float foo2 (inout float x)
699e5c31af7Sopenharmony_ci				{
700e5c31af7Sopenharmony_ci					return x + 1.0;
701e5c31af7Sopenharmony_ci				}
702e5c31af7Sopenharmony_ci
703e5c31af7Sopenharmony_ci				void main()
704e5c31af7Sopenharmony_ci				{
705e5c31af7Sopenharmony_ci					${SETUP}
706e5c31af7Sopenharmony_ci					float result;
707e5c31af7Sopenharmony_ci					foo1(result);
708e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
709e5c31af7Sopenharmony_ci					foo2(result);
710e5c31af7Sopenharmony_ci					${OUTPUT}
711e5c31af7Sopenharmony_ci				}
712e5c31af7Sopenharmony_ci			""
713e5c31af7Sopenharmony_ci		end
714e5c31af7Sopenharmony_ci		case precision_storage
715e5c31af7Sopenharmony_ci			expect compile_fail
716e5c31af7Sopenharmony_ci			values {}
717e5c31af7Sopenharmony_ci
718e5c31af7Sopenharmony_ci			both ""
719e5c31af7Sopenharmony_ci				precision mediump float;
720e5c31af7Sopenharmony_ci				${DECLARATIONS}
721e5c31af7Sopenharmony_ci
722e5c31af7Sopenharmony_ci				float foo0 (lowp const float x)
723e5c31af7Sopenharmony_ci				{
724e5c31af7Sopenharmony_ci					return x + 1.0;
725e5c31af7Sopenharmony_ci				}
726e5c31af7Sopenharmony_ci
727e5c31af7Sopenharmony_ci				void foo1 (mediump float x)
728e5c31af7Sopenharmony_ci				{
729e5c31af7Sopenharmony_ci					x = 1.0;
730e5c31af7Sopenharmony_ci				}
731e5c31af7Sopenharmony_ci
732e5c31af7Sopenharmony_ci				float foo2 (mediump float x)
733e5c31af7Sopenharmony_ci				{
734e5c31af7Sopenharmony_ci					return x + 1.0;
735e5c31af7Sopenharmony_ci				}
736e5c31af7Sopenharmony_ci
737e5c31af7Sopenharmony_ci				void main()
738e5c31af7Sopenharmony_ci				{
739e5c31af7Sopenharmony_ci					${SETUP}
740e5c31af7Sopenharmony_ci					float result;
741e5c31af7Sopenharmony_ci					foo1(result);
742e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
743e5c31af7Sopenharmony_ci					foo2(result);
744e5c31af7Sopenharmony_ci					${OUTPUT}
745e5c31af7Sopenharmony_ci				}
746e5c31af7Sopenharmony_ci			""
747e5c31af7Sopenharmony_ci		end
748e5c31af7Sopenharmony_ci		case precision_parameter
749e5c31af7Sopenharmony_ci			expect compile_fail
750e5c31af7Sopenharmony_ci			values {}
751e5c31af7Sopenharmony_ci
752e5c31af7Sopenharmony_ci			both ""
753e5c31af7Sopenharmony_ci				precision mediump float;
754e5c31af7Sopenharmony_ci				${DECLARATIONS}
755e5c31af7Sopenharmony_ci
756e5c31af7Sopenharmony_ci				float foo0 (lowp in float x)
757e5c31af7Sopenharmony_ci				{
758e5c31af7Sopenharmony_ci					return x + 1.0;
759e5c31af7Sopenharmony_ci				}
760e5c31af7Sopenharmony_ci
761e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
762e5c31af7Sopenharmony_ci				{
763e5c31af7Sopenharmony_ci					x = 1.0;
764e5c31af7Sopenharmony_ci				}
765e5c31af7Sopenharmony_ci
766e5c31af7Sopenharmony_ci				float foo2 (mediump inout float x)
767e5c31af7Sopenharmony_ci				{
768e5c31af7Sopenharmony_ci					return x + 1.0;
769e5c31af7Sopenharmony_ci				}
770e5c31af7Sopenharmony_ci
771e5c31af7Sopenharmony_ci				void main()
772e5c31af7Sopenharmony_ci				{
773e5c31af7Sopenharmony_ci					${SETUP}
774e5c31af7Sopenharmony_ci					float result;
775e5c31af7Sopenharmony_ci					foo1(result);
776e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
777e5c31af7Sopenharmony_ci					foo2(result);
778e5c31af7Sopenharmony_ci					${OUTPUT}
779e5c31af7Sopenharmony_ci				}
780e5c31af7Sopenharmony_ci			""
781e5c31af7Sopenharmony_ci		end
782e5c31af7Sopenharmony_ci
783e5c31af7Sopenharmony_ci	end # invalid
784e5c31af7Sopenharmony_ci
785e5c31af7Sopenharmony_ciend # parameters
786