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_interp_storage_precision
9e5c31af7Sopenharmony_ci			expect pass
10e5c31af7Sopenharmony_ci			values {}
11e5c31af7Sopenharmony_ci
12e5c31af7Sopenharmony_ci			vertex ""
13e5c31af7Sopenharmony_ci				#version 300 es
14e5c31af7Sopenharmony_ci				precision mediump float;
15e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
16e5c31af7Sopenharmony_ci
17e5c31af7Sopenharmony_ci				invariant smooth centroid out lowp float x0;
18e5c31af7Sopenharmony_ci
19e5c31af7Sopenharmony_ci				 flat out mediump float x1;
20e5c31af7Sopenharmony_ci
21e5c31af7Sopenharmony_ci				 uniform highp float x2;
22e5c31af7Sopenharmony_ci
23e5c31af7Sopenharmony_ci				void main()
24e5c31af7Sopenharmony_ci				{
25e5c31af7Sopenharmony_ci					x0 = 1.0;
26e5c31af7Sopenharmony_ci					x1 = 2.0;
27e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
28e5c31af7Sopenharmony_ci				}
29e5c31af7Sopenharmony_ci			""
30e5c31af7Sopenharmony_ci
31e5c31af7Sopenharmony_ci			fragment ""
32e5c31af7Sopenharmony_ci				#version 300 es
33e5c31af7Sopenharmony_ci				precision mediump float;
34e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
35e5c31af7Sopenharmony_ci
36e5c31af7Sopenharmony_ci				 smooth centroid in lowp float x0;
37e5c31af7Sopenharmony_ci
38e5c31af7Sopenharmony_ci				 flat in mediump float x1;
39e5c31af7Sopenharmony_ci
40e5c31af7Sopenharmony_ci				 uniform highp float x2;
41e5c31af7Sopenharmony_ci
42e5c31af7Sopenharmony_ci				void main()
43e5c31af7Sopenharmony_ci				{
44e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
45e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
46e5c31af7Sopenharmony_ci				}
47e5c31af7Sopenharmony_ci			""
48e5c31af7Sopenharmony_ci		end
49e5c31af7Sopenharmony_ci		case interp_storage_precision
50e5c31af7Sopenharmony_ci			expect pass
51e5c31af7Sopenharmony_ci			values {}
52e5c31af7Sopenharmony_ci
53e5c31af7Sopenharmony_ci			vertex ""
54e5c31af7Sopenharmony_ci				#version 300 es
55e5c31af7Sopenharmony_ci				precision mediump float;
56e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
57e5c31af7Sopenharmony_ci
58e5c31af7Sopenharmony_ci				smooth centroid out lowp float x0;
59e5c31af7Sopenharmony_ci
60e5c31af7Sopenharmony_ci				flat out mediump float x1;
61e5c31af7Sopenharmony_ci
62e5c31af7Sopenharmony_ci				 uniform highp float x2;
63e5c31af7Sopenharmony_ci
64e5c31af7Sopenharmony_ci				void main()
65e5c31af7Sopenharmony_ci				{
66e5c31af7Sopenharmony_ci					x0 = 1.0;
67e5c31af7Sopenharmony_ci					x1 = 2.0;
68e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
69e5c31af7Sopenharmony_ci				}
70e5c31af7Sopenharmony_ci			""
71e5c31af7Sopenharmony_ci
72e5c31af7Sopenharmony_ci			fragment ""
73e5c31af7Sopenharmony_ci				#version 300 es
74e5c31af7Sopenharmony_ci				precision mediump float;
75e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
76e5c31af7Sopenharmony_ci
77e5c31af7Sopenharmony_ci				smooth centroid in lowp float x0;
78e5c31af7Sopenharmony_ci
79e5c31af7Sopenharmony_ci				flat in mediump float x1;
80e5c31af7Sopenharmony_ci
81e5c31af7Sopenharmony_ci				 uniform highp float x2;
82e5c31af7Sopenharmony_ci
83e5c31af7Sopenharmony_ci				void main()
84e5c31af7Sopenharmony_ci				{
85e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
86e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
87e5c31af7Sopenharmony_ci				}
88e5c31af7Sopenharmony_ci			""
89e5c31af7Sopenharmony_ci		end
90e5c31af7Sopenharmony_ci		case invariant_interp_storage
91e5c31af7Sopenharmony_ci			expect pass
92e5c31af7Sopenharmony_ci			values {}
93e5c31af7Sopenharmony_ci
94e5c31af7Sopenharmony_ci			vertex ""
95e5c31af7Sopenharmony_ci				#version 300 es
96e5c31af7Sopenharmony_ci				precision mediump float;
97e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
98e5c31af7Sopenharmony_ci
99e5c31af7Sopenharmony_ci				invariant smooth centroid out float x0;
100e5c31af7Sopenharmony_ci
101e5c31af7Sopenharmony_ci				 flat out float x1;
102e5c31af7Sopenharmony_ci
103e5c31af7Sopenharmony_ci				 uniform float x2;
104e5c31af7Sopenharmony_ci
105e5c31af7Sopenharmony_ci				void main()
106e5c31af7Sopenharmony_ci				{
107e5c31af7Sopenharmony_ci					x0 = 1.0;
108e5c31af7Sopenharmony_ci					x1 = 2.0;
109e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
110e5c31af7Sopenharmony_ci				}
111e5c31af7Sopenharmony_ci			""
112e5c31af7Sopenharmony_ci
113e5c31af7Sopenharmony_ci			fragment ""
114e5c31af7Sopenharmony_ci				#version 300 es
115e5c31af7Sopenharmony_ci				precision mediump float;
116e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
117e5c31af7Sopenharmony_ci
118e5c31af7Sopenharmony_ci				 smooth centroid in float x0;
119e5c31af7Sopenharmony_ci
120e5c31af7Sopenharmony_ci				 flat in float x1;
121e5c31af7Sopenharmony_ci
122e5c31af7Sopenharmony_ci				 uniform float x2;
123e5c31af7Sopenharmony_ci
124e5c31af7Sopenharmony_ci				void main()
125e5c31af7Sopenharmony_ci				{
126e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
127e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
128e5c31af7Sopenharmony_ci				}
129e5c31af7Sopenharmony_ci			""
130e5c31af7Sopenharmony_ci		end
131e5c31af7Sopenharmony_ci		case invariant_storage_precision
132e5c31af7Sopenharmony_ci			expect pass
133e5c31af7Sopenharmony_ci			values {}
134e5c31af7Sopenharmony_ci
135e5c31af7Sopenharmony_ci			vertex ""
136e5c31af7Sopenharmony_ci				#version 300 es
137e5c31af7Sopenharmony_ci				precision mediump float;
138e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
139e5c31af7Sopenharmony_ci
140e5c31af7Sopenharmony_ci				invariant centroid out lowp float x0;
141e5c31af7Sopenharmony_ci
142e5c31af7Sopenharmony_ci				 out mediump float x1;
143e5c31af7Sopenharmony_ci
144e5c31af7Sopenharmony_ci				 uniform highp float x2;
145e5c31af7Sopenharmony_ci
146e5c31af7Sopenharmony_ci				void main()
147e5c31af7Sopenharmony_ci				{
148e5c31af7Sopenharmony_ci					x0 = 1.0;
149e5c31af7Sopenharmony_ci					x1 = 2.0;
150e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
151e5c31af7Sopenharmony_ci				}
152e5c31af7Sopenharmony_ci			""
153e5c31af7Sopenharmony_ci
154e5c31af7Sopenharmony_ci			fragment ""
155e5c31af7Sopenharmony_ci				#version 300 es
156e5c31af7Sopenharmony_ci				precision mediump float;
157e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
158e5c31af7Sopenharmony_ci
159e5c31af7Sopenharmony_ci				 centroid in lowp float x0;
160e5c31af7Sopenharmony_ci
161e5c31af7Sopenharmony_ci				 in mediump float x1;
162e5c31af7Sopenharmony_ci
163e5c31af7Sopenharmony_ci				 uniform highp float x2;
164e5c31af7Sopenharmony_ci
165e5c31af7Sopenharmony_ci				void main()
166e5c31af7Sopenharmony_ci				{
167e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
168e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
169e5c31af7Sopenharmony_ci				}
170e5c31af7Sopenharmony_ci			""
171e5c31af7Sopenharmony_ci		end
172e5c31af7Sopenharmony_ci		case storage_precision
173e5c31af7Sopenharmony_ci			expect pass
174e5c31af7Sopenharmony_ci			values {}
175e5c31af7Sopenharmony_ci
176e5c31af7Sopenharmony_ci			vertex ""
177e5c31af7Sopenharmony_ci				#version 300 es
178e5c31af7Sopenharmony_ci				precision mediump float;
179e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
180e5c31af7Sopenharmony_ci
181e5c31af7Sopenharmony_ci				centroid out lowp float x0;
182e5c31af7Sopenharmony_ci
183e5c31af7Sopenharmony_ci				out mediump float x1;
184e5c31af7Sopenharmony_ci
185e5c31af7Sopenharmony_ci				uniform highp float x2;
186e5c31af7Sopenharmony_ci
187e5c31af7Sopenharmony_ci				void main()
188e5c31af7Sopenharmony_ci				{
189e5c31af7Sopenharmony_ci					x0 = 1.0;
190e5c31af7Sopenharmony_ci					x1 = 2.0;
191e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
192e5c31af7Sopenharmony_ci				}
193e5c31af7Sopenharmony_ci			""
194e5c31af7Sopenharmony_ci
195e5c31af7Sopenharmony_ci			fragment ""
196e5c31af7Sopenharmony_ci				#version 300 es
197e5c31af7Sopenharmony_ci				precision mediump float;
198e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
199e5c31af7Sopenharmony_ci
200e5c31af7Sopenharmony_ci				centroid in lowp float x0;
201e5c31af7Sopenharmony_ci
202e5c31af7Sopenharmony_ci				in mediump float x1;
203e5c31af7Sopenharmony_ci
204e5c31af7Sopenharmony_ci				uniform highp float x2;
205e5c31af7Sopenharmony_ci
206e5c31af7Sopenharmony_ci				void main()
207e5c31af7Sopenharmony_ci				{
208e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
209e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
210e5c31af7Sopenharmony_ci				}
211e5c31af7Sopenharmony_ci			""
212e5c31af7Sopenharmony_ci		end
213e5c31af7Sopenharmony_ci		case interp_storage
214e5c31af7Sopenharmony_ci			expect pass
215e5c31af7Sopenharmony_ci			values {}
216e5c31af7Sopenharmony_ci
217e5c31af7Sopenharmony_ci			vertex ""
218e5c31af7Sopenharmony_ci				#version 300 es
219e5c31af7Sopenharmony_ci				precision mediump float;
220e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
221e5c31af7Sopenharmony_ci
222e5c31af7Sopenharmony_ci				smooth centroid out float x0;
223e5c31af7Sopenharmony_ci
224e5c31af7Sopenharmony_ci				flat out float x1;
225e5c31af7Sopenharmony_ci
226e5c31af7Sopenharmony_ci				 uniform float x2;
227e5c31af7Sopenharmony_ci
228e5c31af7Sopenharmony_ci				void main()
229e5c31af7Sopenharmony_ci				{
230e5c31af7Sopenharmony_ci					x0 = 1.0;
231e5c31af7Sopenharmony_ci					x1 = 2.0;
232e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
233e5c31af7Sopenharmony_ci				}
234e5c31af7Sopenharmony_ci			""
235e5c31af7Sopenharmony_ci
236e5c31af7Sopenharmony_ci			fragment ""
237e5c31af7Sopenharmony_ci				#version 300 es
238e5c31af7Sopenharmony_ci				precision mediump float;
239e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
240e5c31af7Sopenharmony_ci
241e5c31af7Sopenharmony_ci				smooth centroid in float x0;
242e5c31af7Sopenharmony_ci
243e5c31af7Sopenharmony_ci				flat in float x1;
244e5c31af7Sopenharmony_ci
245e5c31af7Sopenharmony_ci				 uniform float x2;
246e5c31af7Sopenharmony_ci
247e5c31af7Sopenharmony_ci				void main()
248e5c31af7Sopenharmony_ci				{
249e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
250e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
251e5c31af7Sopenharmony_ci				}
252e5c31af7Sopenharmony_ci			""
253e5c31af7Sopenharmony_ci		end
254e5c31af7Sopenharmony_ci		case invariant_storage
255e5c31af7Sopenharmony_ci			expect pass
256e5c31af7Sopenharmony_ci			values {}
257e5c31af7Sopenharmony_ci
258e5c31af7Sopenharmony_ci			vertex ""
259e5c31af7Sopenharmony_ci				#version 300 es
260e5c31af7Sopenharmony_ci				precision mediump float;
261e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
262e5c31af7Sopenharmony_ci
263e5c31af7Sopenharmony_ci				invariant centroid out float x0;
264e5c31af7Sopenharmony_ci
265e5c31af7Sopenharmony_ci				 out float x1;
266e5c31af7Sopenharmony_ci
267e5c31af7Sopenharmony_ci				 uniform float x2;
268e5c31af7Sopenharmony_ci
269e5c31af7Sopenharmony_ci				void main()
270e5c31af7Sopenharmony_ci				{
271e5c31af7Sopenharmony_ci					x0 = 1.0;
272e5c31af7Sopenharmony_ci					x1 = 2.0;
273e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
274e5c31af7Sopenharmony_ci				}
275e5c31af7Sopenharmony_ci			""
276e5c31af7Sopenharmony_ci
277e5c31af7Sopenharmony_ci			fragment ""
278e5c31af7Sopenharmony_ci				#version 300 es
279e5c31af7Sopenharmony_ci				precision mediump float;
280e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
281e5c31af7Sopenharmony_ci
282e5c31af7Sopenharmony_ci				 centroid in float x0;
283e5c31af7Sopenharmony_ci
284e5c31af7Sopenharmony_ci				 in float x1;
285e5c31af7Sopenharmony_ci
286e5c31af7Sopenharmony_ci				 uniform float x2;
287e5c31af7Sopenharmony_ci
288e5c31af7Sopenharmony_ci				void main()
289e5c31af7Sopenharmony_ci				{
290e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
291e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
292e5c31af7Sopenharmony_ci				}
293e5c31af7Sopenharmony_ci			""
294e5c31af7Sopenharmony_ci		end
295e5c31af7Sopenharmony_ci
296e5c31af7Sopenharmony_ci	end # valid
297e5c31af7Sopenharmony_ci	group invalid "Invalid orderings."
298e5c31af7Sopenharmony_ci
299e5c31af7Sopenharmony_ci		case invariant_interp_precision_storage
300e5c31af7Sopenharmony_ci			expect compile_fail
301e5c31af7Sopenharmony_ci			values {}
302e5c31af7Sopenharmony_ci
303e5c31af7Sopenharmony_ci			vertex ""
304e5c31af7Sopenharmony_ci				#version 300 es
305e5c31af7Sopenharmony_ci				precision mediump float;
306e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
307e5c31af7Sopenharmony_ci
308e5c31af7Sopenharmony_ci				invariant smooth lowp centroid out float x0;
309e5c31af7Sopenharmony_ci
310e5c31af7Sopenharmony_ci				 flat mediump out float x1;
311e5c31af7Sopenharmony_ci
312e5c31af7Sopenharmony_ci				 highp uniform float x2;
313e5c31af7Sopenharmony_ci
314e5c31af7Sopenharmony_ci				void main()
315e5c31af7Sopenharmony_ci				{
316e5c31af7Sopenharmony_ci					x0 = 1.0;
317e5c31af7Sopenharmony_ci					x1 = 2.0;
318e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
319e5c31af7Sopenharmony_ci				}
320e5c31af7Sopenharmony_ci			""
321e5c31af7Sopenharmony_ci
322e5c31af7Sopenharmony_ci			fragment ""
323e5c31af7Sopenharmony_ci				#version 300 es
324e5c31af7Sopenharmony_ci				precision mediump float;
325e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
326e5c31af7Sopenharmony_ci
327e5c31af7Sopenharmony_ci				 smooth lowp centroid in float x0;
328e5c31af7Sopenharmony_ci
329e5c31af7Sopenharmony_ci				 flat mediump in float x1;
330e5c31af7Sopenharmony_ci
331e5c31af7Sopenharmony_ci				 highp uniform float x2;
332e5c31af7Sopenharmony_ci
333e5c31af7Sopenharmony_ci				void main()
334e5c31af7Sopenharmony_ci				{
335e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
336e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
337e5c31af7Sopenharmony_ci				}
338e5c31af7Sopenharmony_ci			""
339e5c31af7Sopenharmony_ci		end
340e5c31af7Sopenharmony_ci		case invariant_storage_interp_precision
341e5c31af7Sopenharmony_ci			expect compile_fail
342e5c31af7Sopenharmony_ci			values {}
343e5c31af7Sopenharmony_ci
344e5c31af7Sopenharmony_ci			vertex ""
345e5c31af7Sopenharmony_ci				#version 300 es
346e5c31af7Sopenharmony_ci				precision mediump float;
347e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
348e5c31af7Sopenharmony_ci
349e5c31af7Sopenharmony_ci				invariant centroid out smooth lowp float x0;
350e5c31af7Sopenharmony_ci
351e5c31af7Sopenharmony_ci				 out flat mediump float x1;
352e5c31af7Sopenharmony_ci
353e5c31af7Sopenharmony_ci				 uniform highp float x2;
354e5c31af7Sopenharmony_ci
355e5c31af7Sopenharmony_ci				void main()
356e5c31af7Sopenharmony_ci				{
357e5c31af7Sopenharmony_ci					x0 = 1.0;
358e5c31af7Sopenharmony_ci					x1 = 2.0;
359e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
360e5c31af7Sopenharmony_ci				}
361e5c31af7Sopenharmony_ci			""
362e5c31af7Sopenharmony_ci
363e5c31af7Sopenharmony_ci			fragment ""
364e5c31af7Sopenharmony_ci				#version 300 es
365e5c31af7Sopenharmony_ci				precision mediump float;
366e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
367e5c31af7Sopenharmony_ci
368e5c31af7Sopenharmony_ci				 centroid in smooth lowp float x0;
369e5c31af7Sopenharmony_ci
370e5c31af7Sopenharmony_ci				 in flat mediump float x1;
371e5c31af7Sopenharmony_ci
372e5c31af7Sopenharmony_ci				 uniform highp float x2;
373e5c31af7Sopenharmony_ci
374e5c31af7Sopenharmony_ci				void main()
375e5c31af7Sopenharmony_ci				{
376e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
377e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
378e5c31af7Sopenharmony_ci				}
379e5c31af7Sopenharmony_ci			""
380e5c31af7Sopenharmony_ci		end
381e5c31af7Sopenharmony_ci		case invariant_storage_precision_interp
382e5c31af7Sopenharmony_ci			expect compile_fail
383e5c31af7Sopenharmony_ci			values {}
384e5c31af7Sopenharmony_ci
385e5c31af7Sopenharmony_ci			vertex ""
386e5c31af7Sopenharmony_ci				#version 300 es
387e5c31af7Sopenharmony_ci				precision mediump float;
388e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
389e5c31af7Sopenharmony_ci
390e5c31af7Sopenharmony_ci				invariant centroid out lowp smooth float x0;
391e5c31af7Sopenharmony_ci
392e5c31af7Sopenharmony_ci				 out mediump flat float x1;
393e5c31af7Sopenharmony_ci
394e5c31af7Sopenharmony_ci				 uniform highp float x2;
395e5c31af7Sopenharmony_ci
396e5c31af7Sopenharmony_ci				void main()
397e5c31af7Sopenharmony_ci				{
398e5c31af7Sopenharmony_ci					x0 = 1.0;
399e5c31af7Sopenharmony_ci					x1 = 2.0;
400e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
401e5c31af7Sopenharmony_ci				}
402e5c31af7Sopenharmony_ci			""
403e5c31af7Sopenharmony_ci
404e5c31af7Sopenharmony_ci			fragment ""
405e5c31af7Sopenharmony_ci				#version 300 es
406e5c31af7Sopenharmony_ci				precision mediump float;
407e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
408e5c31af7Sopenharmony_ci
409e5c31af7Sopenharmony_ci				 centroid in lowp smooth float x0;
410e5c31af7Sopenharmony_ci
411e5c31af7Sopenharmony_ci				 in mediump flat float x1;
412e5c31af7Sopenharmony_ci
413e5c31af7Sopenharmony_ci				 uniform highp float x2;
414e5c31af7Sopenharmony_ci
415e5c31af7Sopenharmony_ci				void main()
416e5c31af7Sopenharmony_ci				{
417e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
418e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
419e5c31af7Sopenharmony_ci				}
420e5c31af7Sopenharmony_ci			""
421e5c31af7Sopenharmony_ci		end
422e5c31af7Sopenharmony_ci		case invariant_precision_interp_storage
423e5c31af7Sopenharmony_ci			expect compile_fail
424e5c31af7Sopenharmony_ci			values {}
425e5c31af7Sopenharmony_ci
426e5c31af7Sopenharmony_ci			vertex ""
427e5c31af7Sopenharmony_ci				#version 300 es
428e5c31af7Sopenharmony_ci				precision mediump float;
429e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
430e5c31af7Sopenharmony_ci
431e5c31af7Sopenharmony_ci				invariant lowp smooth centroid out float x0;
432e5c31af7Sopenharmony_ci
433e5c31af7Sopenharmony_ci				 mediump flat out float x1;
434e5c31af7Sopenharmony_ci
435e5c31af7Sopenharmony_ci				 highp uniform float x2;
436e5c31af7Sopenharmony_ci
437e5c31af7Sopenharmony_ci				void main()
438e5c31af7Sopenharmony_ci				{
439e5c31af7Sopenharmony_ci					x0 = 1.0;
440e5c31af7Sopenharmony_ci					x1 = 2.0;
441e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
442e5c31af7Sopenharmony_ci				}
443e5c31af7Sopenharmony_ci			""
444e5c31af7Sopenharmony_ci
445e5c31af7Sopenharmony_ci			fragment ""
446e5c31af7Sopenharmony_ci				#version 300 es
447e5c31af7Sopenharmony_ci				precision mediump float;
448e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
449e5c31af7Sopenharmony_ci
450e5c31af7Sopenharmony_ci				 lowp smooth centroid in float x0;
451e5c31af7Sopenharmony_ci
452e5c31af7Sopenharmony_ci				 mediump flat in float x1;
453e5c31af7Sopenharmony_ci
454e5c31af7Sopenharmony_ci				 highp uniform float x2;
455e5c31af7Sopenharmony_ci
456e5c31af7Sopenharmony_ci				void main()
457e5c31af7Sopenharmony_ci				{
458e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
459e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
460e5c31af7Sopenharmony_ci				}
461e5c31af7Sopenharmony_ci			""
462e5c31af7Sopenharmony_ci		end
463e5c31af7Sopenharmony_ci		case invariant_precision_storage_interp
464e5c31af7Sopenharmony_ci			expect compile_fail
465e5c31af7Sopenharmony_ci			values {}
466e5c31af7Sopenharmony_ci
467e5c31af7Sopenharmony_ci			vertex ""
468e5c31af7Sopenharmony_ci				#version 300 es
469e5c31af7Sopenharmony_ci				precision mediump float;
470e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
471e5c31af7Sopenharmony_ci
472e5c31af7Sopenharmony_ci				invariant lowp centroid out smooth float x0;
473e5c31af7Sopenharmony_ci
474e5c31af7Sopenharmony_ci				 mediump out flat float x1;
475e5c31af7Sopenharmony_ci
476e5c31af7Sopenharmony_ci				 highp uniform float x2;
477e5c31af7Sopenharmony_ci
478e5c31af7Sopenharmony_ci				void main()
479e5c31af7Sopenharmony_ci				{
480e5c31af7Sopenharmony_ci					x0 = 1.0;
481e5c31af7Sopenharmony_ci					x1 = 2.0;
482e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
483e5c31af7Sopenharmony_ci				}
484e5c31af7Sopenharmony_ci			""
485e5c31af7Sopenharmony_ci
486e5c31af7Sopenharmony_ci			fragment ""
487e5c31af7Sopenharmony_ci				#version 300 es
488e5c31af7Sopenharmony_ci				precision mediump float;
489e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
490e5c31af7Sopenharmony_ci
491e5c31af7Sopenharmony_ci				 lowp centroid in smooth float x0;
492e5c31af7Sopenharmony_ci
493e5c31af7Sopenharmony_ci				 mediump in flat float x1;
494e5c31af7Sopenharmony_ci
495e5c31af7Sopenharmony_ci				 highp uniform float x2;
496e5c31af7Sopenharmony_ci
497e5c31af7Sopenharmony_ci				void main()
498e5c31af7Sopenharmony_ci				{
499e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
500e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
501e5c31af7Sopenharmony_ci				}
502e5c31af7Sopenharmony_ci			""
503e5c31af7Sopenharmony_ci		end
504e5c31af7Sopenharmony_ci		case interp_invariant_storage_precision
505e5c31af7Sopenharmony_ci			expect compile_fail
506e5c31af7Sopenharmony_ci			values {}
507e5c31af7Sopenharmony_ci
508e5c31af7Sopenharmony_ci			vertex ""
509e5c31af7Sopenharmony_ci				#version 300 es
510e5c31af7Sopenharmony_ci				precision mediump float;
511e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
512e5c31af7Sopenharmony_ci
513e5c31af7Sopenharmony_ci				smooth invariant centroid out lowp float x0;
514e5c31af7Sopenharmony_ci
515e5c31af7Sopenharmony_ci				flat out mediump float x1;
516e5c31af7Sopenharmony_ci
517e5c31af7Sopenharmony_ci				 uniform highp float x2;
518e5c31af7Sopenharmony_ci
519e5c31af7Sopenharmony_ci				void main()
520e5c31af7Sopenharmony_ci				{
521e5c31af7Sopenharmony_ci					x0 = 1.0;
522e5c31af7Sopenharmony_ci					x1 = 2.0;
523e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
524e5c31af7Sopenharmony_ci				}
525e5c31af7Sopenharmony_ci			""
526e5c31af7Sopenharmony_ci
527e5c31af7Sopenharmony_ci			fragment ""
528e5c31af7Sopenharmony_ci				#version 300 es
529e5c31af7Sopenharmony_ci				precision mediump float;
530e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
531e5c31af7Sopenharmony_ci
532e5c31af7Sopenharmony_ci				smooth  centroid in lowp float x0;
533e5c31af7Sopenharmony_ci
534e5c31af7Sopenharmony_ci				flat in mediump float x1;
535e5c31af7Sopenharmony_ci
536e5c31af7Sopenharmony_ci				 uniform highp float x2;
537e5c31af7Sopenharmony_ci
538e5c31af7Sopenharmony_ci				void main()
539e5c31af7Sopenharmony_ci				{
540e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
541e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
542e5c31af7Sopenharmony_ci				}
543e5c31af7Sopenharmony_ci			""
544e5c31af7Sopenharmony_ci		end
545e5c31af7Sopenharmony_ci		case interp_invariant_precision_storage
546e5c31af7Sopenharmony_ci			expect compile_fail
547e5c31af7Sopenharmony_ci			values {}
548e5c31af7Sopenharmony_ci
549e5c31af7Sopenharmony_ci			vertex ""
550e5c31af7Sopenharmony_ci				#version 300 es
551e5c31af7Sopenharmony_ci				precision mediump float;
552e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
553e5c31af7Sopenharmony_ci
554e5c31af7Sopenharmony_ci				smooth invariant lowp centroid out float x0;
555e5c31af7Sopenharmony_ci
556e5c31af7Sopenharmony_ci				flat mediump out float x1;
557e5c31af7Sopenharmony_ci
558e5c31af7Sopenharmony_ci				 highp uniform float x2;
559e5c31af7Sopenharmony_ci
560e5c31af7Sopenharmony_ci				void main()
561e5c31af7Sopenharmony_ci				{
562e5c31af7Sopenharmony_ci					x0 = 1.0;
563e5c31af7Sopenharmony_ci					x1 = 2.0;
564e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
565e5c31af7Sopenharmony_ci				}
566e5c31af7Sopenharmony_ci			""
567e5c31af7Sopenharmony_ci
568e5c31af7Sopenharmony_ci			fragment ""
569e5c31af7Sopenharmony_ci				#version 300 es
570e5c31af7Sopenharmony_ci				precision mediump float;
571e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
572e5c31af7Sopenharmony_ci
573e5c31af7Sopenharmony_ci				smooth  lowp centroid in float x0;
574e5c31af7Sopenharmony_ci
575e5c31af7Sopenharmony_ci				flat mediump in float x1;
576e5c31af7Sopenharmony_ci
577e5c31af7Sopenharmony_ci				 highp uniform float x2;
578e5c31af7Sopenharmony_ci
579e5c31af7Sopenharmony_ci				void main()
580e5c31af7Sopenharmony_ci				{
581e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
582e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
583e5c31af7Sopenharmony_ci				}
584e5c31af7Sopenharmony_ci			""
585e5c31af7Sopenharmony_ci		end
586e5c31af7Sopenharmony_ci		case interp_storage_invariant_precision
587e5c31af7Sopenharmony_ci			expect compile_fail
588e5c31af7Sopenharmony_ci			values {}
589e5c31af7Sopenharmony_ci
590e5c31af7Sopenharmony_ci			vertex ""
591e5c31af7Sopenharmony_ci				#version 300 es
592e5c31af7Sopenharmony_ci				precision mediump float;
593e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
594e5c31af7Sopenharmony_ci
595e5c31af7Sopenharmony_ci				smooth centroid out invariant lowp float x0;
596e5c31af7Sopenharmony_ci
597e5c31af7Sopenharmony_ci				flat out mediump float x1;
598e5c31af7Sopenharmony_ci
599e5c31af7Sopenharmony_ci				 uniform highp float x2;
600e5c31af7Sopenharmony_ci
601e5c31af7Sopenharmony_ci				void main()
602e5c31af7Sopenharmony_ci				{
603e5c31af7Sopenharmony_ci					x0 = 1.0;
604e5c31af7Sopenharmony_ci					x1 = 2.0;
605e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
606e5c31af7Sopenharmony_ci				}
607e5c31af7Sopenharmony_ci			""
608e5c31af7Sopenharmony_ci
609e5c31af7Sopenharmony_ci			fragment ""
610e5c31af7Sopenharmony_ci				#version 300 es
611e5c31af7Sopenharmony_ci				precision mediump float;
612e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
613e5c31af7Sopenharmony_ci
614e5c31af7Sopenharmony_ci				smooth centroid in  lowp float x0;
615e5c31af7Sopenharmony_ci
616e5c31af7Sopenharmony_ci				flat in mediump float x1;
617e5c31af7Sopenharmony_ci
618e5c31af7Sopenharmony_ci				 uniform highp float x2;
619e5c31af7Sopenharmony_ci
620e5c31af7Sopenharmony_ci				void main()
621e5c31af7Sopenharmony_ci				{
622e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
623e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
624e5c31af7Sopenharmony_ci				}
625e5c31af7Sopenharmony_ci			""
626e5c31af7Sopenharmony_ci		end
627e5c31af7Sopenharmony_ci		case interp_storage_precision_invariant
628e5c31af7Sopenharmony_ci			expect compile_fail
629e5c31af7Sopenharmony_ci			values {}
630e5c31af7Sopenharmony_ci
631e5c31af7Sopenharmony_ci			vertex ""
632e5c31af7Sopenharmony_ci				#version 300 es
633e5c31af7Sopenharmony_ci				precision mediump float;
634e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
635e5c31af7Sopenharmony_ci
636e5c31af7Sopenharmony_ci				smooth centroid out lowp invariant float x0;
637e5c31af7Sopenharmony_ci
638e5c31af7Sopenharmony_ci				flat out mediump float x1;
639e5c31af7Sopenharmony_ci
640e5c31af7Sopenharmony_ci				 uniform highp float x2;
641e5c31af7Sopenharmony_ci
642e5c31af7Sopenharmony_ci				void main()
643e5c31af7Sopenharmony_ci				{
644e5c31af7Sopenharmony_ci					x0 = 1.0;
645e5c31af7Sopenharmony_ci					x1 = 2.0;
646e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
647e5c31af7Sopenharmony_ci				}
648e5c31af7Sopenharmony_ci			""
649e5c31af7Sopenharmony_ci
650e5c31af7Sopenharmony_ci			fragment ""
651e5c31af7Sopenharmony_ci				#version 300 es
652e5c31af7Sopenharmony_ci				precision mediump float;
653e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
654e5c31af7Sopenharmony_ci
655e5c31af7Sopenharmony_ci				smooth centroid in lowp  float x0;
656e5c31af7Sopenharmony_ci
657e5c31af7Sopenharmony_ci				flat in mediump float x1;
658e5c31af7Sopenharmony_ci
659e5c31af7Sopenharmony_ci				 uniform highp float x2;
660e5c31af7Sopenharmony_ci
661e5c31af7Sopenharmony_ci				void main()
662e5c31af7Sopenharmony_ci				{
663e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
664e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
665e5c31af7Sopenharmony_ci				}
666e5c31af7Sopenharmony_ci			""
667e5c31af7Sopenharmony_ci		end
668e5c31af7Sopenharmony_ci		case interp_precision_invariant_storage
669e5c31af7Sopenharmony_ci			expect compile_fail
670e5c31af7Sopenharmony_ci			values {}
671e5c31af7Sopenharmony_ci
672e5c31af7Sopenharmony_ci			vertex ""
673e5c31af7Sopenharmony_ci				#version 300 es
674e5c31af7Sopenharmony_ci				precision mediump float;
675e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
676e5c31af7Sopenharmony_ci
677e5c31af7Sopenharmony_ci				smooth lowp invariant centroid out float x0;
678e5c31af7Sopenharmony_ci
679e5c31af7Sopenharmony_ci				flat mediump out float x1;
680e5c31af7Sopenharmony_ci
681e5c31af7Sopenharmony_ci				 highp uniform float x2;
682e5c31af7Sopenharmony_ci
683e5c31af7Sopenharmony_ci				void main()
684e5c31af7Sopenharmony_ci				{
685e5c31af7Sopenharmony_ci					x0 = 1.0;
686e5c31af7Sopenharmony_ci					x1 = 2.0;
687e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
688e5c31af7Sopenharmony_ci				}
689e5c31af7Sopenharmony_ci			""
690e5c31af7Sopenharmony_ci
691e5c31af7Sopenharmony_ci			fragment ""
692e5c31af7Sopenharmony_ci				#version 300 es
693e5c31af7Sopenharmony_ci				precision mediump float;
694e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
695e5c31af7Sopenharmony_ci
696e5c31af7Sopenharmony_ci				smooth lowp  centroid in float x0;
697e5c31af7Sopenharmony_ci
698e5c31af7Sopenharmony_ci				flat mediump in float x1;
699e5c31af7Sopenharmony_ci
700e5c31af7Sopenharmony_ci				 highp uniform float x2;
701e5c31af7Sopenharmony_ci
702e5c31af7Sopenharmony_ci				void main()
703e5c31af7Sopenharmony_ci				{
704e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
705e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
706e5c31af7Sopenharmony_ci				}
707e5c31af7Sopenharmony_ci			""
708e5c31af7Sopenharmony_ci		end
709e5c31af7Sopenharmony_ci		case interp_precision_storage_invariant
710e5c31af7Sopenharmony_ci			expect compile_fail
711e5c31af7Sopenharmony_ci			values {}
712e5c31af7Sopenharmony_ci
713e5c31af7Sopenharmony_ci			vertex ""
714e5c31af7Sopenharmony_ci				#version 300 es
715e5c31af7Sopenharmony_ci				precision mediump float;
716e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
717e5c31af7Sopenharmony_ci
718e5c31af7Sopenharmony_ci				smooth lowp centroid out invariant float x0;
719e5c31af7Sopenharmony_ci
720e5c31af7Sopenharmony_ci				flat mediump out float x1;
721e5c31af7Sopenharmony_ci
722e5c31af7Sopenharmony_ci				 highp uniform float x2;
723e5c31af7Sopenharmony_ci
724e5c31af7Sopenharmony_ci				void main()
725e5c31af7Sopenharmony_ci				{
726e5c31af7Sopenharmony_ci					x0 = 1.0;
727e5c31af7Sopenharmony_ci					x1 = 2.0;
728e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
729e5c31af7Sopenharmony_ci				}
730e5c31af7Sopenharmony_ci			""
731e5c31af7Sopenharmony_ci
732e5c31af7Sopenharmony_ci			fragment ""
733e5c31af7Sopenharmony_ci				#version 300 es
734e5c31af7Sopenharmony_ci				precision mediump float;
735e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
736e5c31af7Sopenharmony_ci
737e5c31af7Sopenharmony_ci				smooth lowp centroid in  float x0;
738e5c31af7Sopenharmony_ci
739e5c31af7Sopenharmony_ci				flat mediump in float x1;
740e5c31af7Sopenharmony_ci
741e5c31af7Sopenharmony_ci				 highp uniform float x2;
742e5c31af7Sopenharmony_ci
743e5c31af7Sopenharmony_ci				void main()
744e5c31af7Sopenharmony_ci				{
745e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
746e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
747e5c31af7Sopenharmony_ci				}
748e5c31af7Sopenharmony_ci			""
749e5c31af7Sopenharmony_ci		end
750e5c31af7Sopenharmony_ci		case storage_invariant_interp_precision
751e5c31af7Sopenharmony_ci			expect compile_fail
752e5c31af7Sopenharmony_ci			values {}
753e5c31af7Sopenharmony_ci
754e5c31af7Sopenharmony_ci			vertex ""
755e5c31af7Sopenharmony_ci				#version 300 es
756e5c31af7Sopenharmony_ci				precision mediump float;
757e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
758e5c31af7Sopenharmony_ci
759e5c31af7Sopenharmony_ci				centroid out invariant smooth lowp float x0;
760e5c31af7Sopenharmony_ci
761e5c31af7Sopenharmony_ci				out flat mediump float x1;
762e5c31af7Sopenharmony_ci
763e5c31af7Sopenharmony_ci				uniform  highp float x2;
764e5c31af7Sopenharmony_ci
765e5c31af7Sopenharmony_ci				void main()
766e5c31af7Sopenharmony_ci				{
767e5c31af7Sopenharmony_ci					x0 = 1.0;
768e5c31af7Sopenharmony_ci					x1 = 2.0;
769e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
770e5c31af7Sopenharmony_ci				}
771e5c31af7Sopenharmony_ci			""
772e5c31af7Sopenharmony_ci
773e5c31af7Sopenharmony_ci			fragment ""
774e5c31af7Sopenharmony_ci				#version 300 es
775e5c31af7Sopenharmony_ci				precision mediump float;
776e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
777e5c31af7Sopenharmony_ci
778e5c31af7Sopenharmony_ci				centroid in  smooth lowp float x0;
779e5c31af7Sopenharmony_ci
780e5c31af7Sopenharmony_ci				in flat mediump float x1;
781e5c31af7Sopenharmony_ci
782e5c31af7Sopenharmony_ci				uniform  highp float x2;
783e5c31af7Sopenharmony_ci
784e5c31af7Sopenharmony_ci				void main()
785e5c31af7Sopenharmony_ci				{
786e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
787e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
788e5c31af7Sopenharmony_ci				}
789e5c31af7Sopenharmony_ci			""
790e5c31af7Sopenharmony_ci		end
791e5c31af7Sopenharmony_ci		case storage_invariant_precision_interp
792e5c31af7Sopenharmony_ci			expect compile_fail
793e5c31af7Sopenharmony_ci			values {}
794e5c31af7Sopenharmony_ci
795e5c31af7Sopenharmony_ci			vertex ""
796e5c31af7Sopenharmony_ci				#version 300 es
797e5c31af7Sopenharmony_ci				precision mediump float;
798e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
799e5c31af7Sopenharmony_ci
800e5c31af7Sopenharmony_ci				centroid out invariant lowp smooth float x0;
801e5c31af7Sopenharmony_ci
802e5c31af7Sopenharmony_ci				out mediump flat float x1;
803e5c31af7Sopenharmony_ci
804e5c31af7Sopenharmony_ci				uniform highp float x2;
805e5c31af7Sopenharmony_ci
806e5c31af7Sopenharmony_ci				void main()
807e5c31af7Sopenharmony_ci				{
808e5c31af7Sopenharmony_ci					x0 = 1.0;
809e5c31af7Sopenharmony_ci					x1 = 2.0;
810e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
811e5c31af7Sopenharmony_ci				}
812e5c31af7Sopenharmony_ci			""
813e5c31af7Sopenharmony_ci
814e5c31af7Sopenharmony_ci			fragment ""
815e5c31af7Sopenharmony_ci				#version 300 es
816e5c31af7Sopenharmony_ci				precision mediump float;
817e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
818e5c31af7Sopenharmony_ci
819e5c31af7Sopenharmony_ci				centroid in  lowp smooth float x0;
820e5c31af7Sopenharmony_ci
821e5c31af7Sopenharmony_ci				in mediump flat float x1;
822e5c31af7Sopenharmony_ci
823e5c31af7Sopenharmony_ci				uniform highp float x2;
824e5c31af7Sopenharmony_ci
825e5c31af7Sopenharmony_ci				void main()
826e5c31af7Sopenharmony_ci				{
827e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
828e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
829e5c31af7Sopenharmony_ci				}
830e5c31af7Sopenharmony_ci			""
831e5c31af7Sopenharmony_ci		end
832e5c31af7Sopenharmony_ci		case storage_interp_invariant_precision
833e5c31af7Sopenharmony_ci			expect compile_fail
834e5c31af7Sopenharmony_ci			values {}
835e5c31af7Sopenharmony_ci
836e5c31af7Sopenharmony_ci			vertex ""
837e5c31af7Sopenharmony_ci				#version 300 es
838e5c31af7Sopenharmony_ci				precision mediump float;
839e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
840e5c31af7Sopenharmony_ci
841e5c31af7Sopenharmony_ci				centroid out smooth invariant lowp float x0;
842e5c31af7Sopenharmony_ci
843e5c31af7Sopenharmony_ci				out flat mediump float x1;
844e5c31af7Sopenharmony_ci
845e5c31af7Sopenharmony_ci				uniform  highp float x2;
846e5c31af7Sopenharmony_ci
847e5c31af7Sopenharmony_ci				void main()
848e5c31af7Sopenharmony_ci				{
849e5c31af7Sopenharmony_ci					x0 = 1.0;
850e5c31af7Sopenharmony_ci					x1 = 2.0;
851e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
852e5c31af7Sopenharmony_ci				}
853e5c31af7Sopenharmony_ci			""
854e5c31af7Sopenharmony_ci
855e5c31af7Sopenharmony_ci			fragment ""
856e5c31af7Sopenharmony_ci				#version 300 es
857e5c31af7Sopenharmony_ci				precision mediump float;
858e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
859e5c31af7Sopenharmony_ci
860e5c31af7Sopenharmony_ci				centroid in smooth  lowp float x0;
861e5c31af7Sopenharmony_ci
862e5c31af7Sopenharmony_ci				in flat mediump float x1;
863e5c31af7Sopenharmony_ci
864e5c31af7Sopenharmony_ci				uniform  highp float x2;
865e5c31af7Sopenharmony_ci
866e5c31af7Sopenharmony_ci				void main()
867e5c31af7Sopenharmony_ci				{
868e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
869e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
870e5c31af7Sopenharmony_ci				}
871e5c31af7Sopenharmony_ci			""
872e5c31af7Sopenharmony_ci		end
873e5c31af7Sopenharmony_ci		case storage_interp_precision_invariant
874e5c31af7Sopenharmony_ci			expect compile_fail
875e5c31af7Sopenharmony_ci			values {}
876e5c31af7Sopenharmony_ci
877e5c31af7Sopenharmony_ci			vertex ""
878e5c31af7Sopenharmony_ci				#version 300 es
879e5c31af7Sopenharmony_ci				precision mediump float;
880e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
881e5c31af7Sopenharmony_ci
882e5c31af7Sopenharmony_ci				centroid out smooth lowp invariant float x0;
883e5c31af7Sopenharmony_ci
884e5c31af7Sopenharmony_ci				out flat mediump float x1;
885e5c31af7Sopenharmony_ci
886e5c31af7Sopenharmony_ci				uniform highp float x2;
887e5c31af7Sopenharmony_ci
888e5c31af7Sopenharmony_ci				void main()
889e5c31af7Sopenharmony_ci				{
890e5c31af7Sopenharmony_ci					x0 = 1.0;
891e5c31af7Sopenharmony_ci					x1 = 2.0;
892e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
893e5c31af7Sopenharmony_ci				}
894e5c31af7Sopenharmony_ci			""
895e5c31af7Sopenharmony_ci
896e5c31af7Sopenharmony_ci			fragment ""
897e5c31af7Sopenharmony_ci				#version 300 es
898e5c31af7Sopenharmony_ci				precision mediump float;
899e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
900e5c31af7Sopenharmony_ci
901e5c31af7Sopenharmony_ci				centroid in smooth lowp  float x0;
902e5c31af7Sopenharmony_ci
903e5c31af7Sopenharmony_ci				in flat mediump float x1;
904e5c31af7Sopenharmony_ci
905e5c31af7Sopenharmony_ci				uniform highp float x2;
906e5c31af7Sopenharmony_ci
907e5c31af7Sopenharmony_ci				void main()
908e5c31af7Sopenharmony_ci				{
909e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
910e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
911e5c31af7Sopenharmony_ci				}
912e5c31af7Sopenharmony_ci			""
913e5c31af7Sopenharmony_ci		end
914e5c31af7Sopenharmony_ci		case storage_precision_invariant_interp
915e5c31af7Sopenharmony_ci			expect compile_fail
916e5c31af7Sopenharmony_ci			values {}
917e5c31af7Sopenharmony_ci
918e5c31af7Sopenharmony_ci			vertex ""
919e5c31af7Sopenharmony_ci				#version 300 es
920e5c31af7Sopenharmony_ci				precision mediump float;
921e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
922e5c31af7Sopenharmony_ci
923e5c31af7Sopenharmony_ci				centroid out lowp invariant smooth float x0;
924e5c31af7Sopenharmony_ci
925e5c31af7Sopenharmony_ci				out mediump flat float x1;
926e5c31af7Sopenharmony_ci
927e5c31af7Sopenharmony_ci				uniform highp  float x2;
928e5c31af7Sopenharmony_ci
929e5c31af7Sopenharmony_ci				void main()
930e5c31af7Sopenharmony_ci				{
931e5c31af7Sopenharmony_ci					x0 = 1.0;
932e5c31af7Sopenharmony_ci					x1 = 2.0;
933e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
934e5c31af7Sopenharmony_ci				}
935e5c31af7Sopenharmony_ci			""
936e5c31af7Sopenharmony_ci
937e5c31af7Sopenharmony_ci			fragment ""
938e5c31af7Sopenharmony_ci				#version 300 es
939e5c31af7Sopenharmony_ci				precision mediump float;
940e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
941e5c31af7Sopenharmony_ci
942e5c31af7Sopenharmony_ci				centroid in lowp  smooth float x0;
943e5c31af7Sopenharmony_ci
944e5c31af7Sopenharmony_ci				in mediump flat float x1;
945e5c31af7Sopenharmony_ci
946e5c31af7Sopenharmony_ci				uniform highp  float x2;
947e5c31af7Sopenharmony_ci
948e5c31af7Sopenharmony_ci				void main()
949e5c31af7Sopenharmony_ci				{
950e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
951e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
952e5c31af7Sopenharmony_ci				}
953e5c31af7Sopenharmony_ci			""
954e5c31af7Sopenharmony_ci		end
955e5c31af7Sopenharmony_ci		case storage_precision_interp_invariant
956e5c31af7Sopenharmony_ci			expect compile_fail
957e5c31af7Sopenharmony_ci			values {}
958e5c31af7Sopenharmony_ci
959e5c31af7Sopenharmony_ci			vertex ""
960e5c31af7Sopenharmony_ci				#version 300 es
961e5c31af7Sopenharmony_ci				precision mediump float;
962e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
963e5c31af7Sopenharmony_ci
964e5c31af7Sopenharmony_ci				centroid out lowp smooth invariant float x0;
965e5c31af7Sopenharmony_ci
966e5c31af7Sopenharmony_ci				out mediump flat float x1;
967e5c31af7Sopenharmony_ci
968e5c31af7Sopenharmony_ci				uniform highp  float x2;
969e5c31af7Sopenharmony_ci
970e5c31af7Sopenharmony_ci				void main()
971e5c31af7Sopenharmony_ci				{
972e5c31af7Sopenharmony_ci					x0 = 1.0;
973e5c31af7Sopenharmony_ci					x1 = 2.0;
974e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
975e5c31af7Sopenharmony_ci				}
976e5c31af7Sopenharmony_ci			""
977e5c31af7Sopenharmony_ci
978e5c31af7Sopenharmony_ci			fragment ""
979e5c31af7Sopenharmony_ci				#version 300 es
980e5c31af7Sopenharmony_ci				precision mediump float;
981e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
982e5c31af7Sopenharmony_ci
983e5c31af7Sopenharmony_ci				centroid in lowp smooth  float x0;
984e5c31af7Sopenharmony_ci
985e5c31af7Sopenharmony_ci				in mediump flat float x1;
986e5c31af7Sopenharmony_ci
987e5c31af7Sopenharmony_ci				uniform highp  float x2;
988e5c31af7Sopenharmony_ci
989e5c31af7Sopenharmony_ci				void main()
990e5c31af7Sopenharmony_ci				{
991e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
992e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
993e5c31af7Sopenharmony_ci				}
994e5c31af7Sopenharmony_ci			""
995e5c31af7Sopenharmony_ci		end
996e5c31af7Sopenharmony_ci		case precision_invariant_interp_storage
997e5c31af7Sopenharmony_ci			expect compile_fail
998e5c31af7Sopenharmony_ci			values {}
999e5c31af7Sopenharmony_ci
1000e5c31af7Sopenharmony_ci			vertex ""
1001e5c31af7Sopenharmony_ci				#version 300 es
1002e5c31af7Sopenharmony_ci				precision mediump float;
1003e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1004e5c31af7Sopenharmony_ci
1005e5c31af7Sopenharmony_ci				lowp invariant smooth centroid out float x0;
1006e5c31af7Sopenharmony_ci
1007e5c31af7Sopenharmony_ci				mediump flat out float x1;
1008e5c31af7Sopenharmony_ci
1009e5c31af7Sopenharmony_ci				highp  uniform float x2;
1010e5c31af7Sopenharmony_ci
1011e5c31af7Sopenharmony_ci				void main()
1012e5c31af7Sopenharmony_ci				{
1013e5c31af7Sopenharmony_ci					x0 = 1.0;
1014e5c31af7Sopenharmony_ci					x1 = 2.0;
1015e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1016e5c31af7Sopenharmony_ci				}
1017e5c31af7Sopenharmony_ci			""
1018e5c31af7Sopenharmony_ci
1019e5c31af7Sopenharmony_ci			fragment ""
1020e5c31af7Sopenharmony_ci				#version 300 es
1021e5c31af7Sopenharmony_ci				precision mediump float;
1022e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1023e5c31af7Sopenharmony_ci
1024e5c31af7Sopenharmony_ci				lowp  smooth centroid in float x0;
1025e5c31af7Sopenharmony_ci
1026e5c31af7Sopenharmony_ci				mediump flat in float x1;
1027e5c31af7Sopenharmony_ci
1028e5c31af7Sopenharmony_ci				highp  uniform float x2;
1029e5c31af7Sopenharmony_ci
1030e5c31af7Sopenharmony_ci				void main()
1031e5c31af7Sopenharmony_ci				{
1032e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1033e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1034e5c31af7Sopenharmony_ci				}
1035e5c31af7Sopenharmony_ci			""
1036e5c31af7Sopenharmony_ci		end
1037e5c31af7Sopenharmony_ci		case precision_invariant_storage_interp
1038e5c31af7Sopenharmony_ci			expect compile_fail
1039e5c31af7Sopenharmony_ci			values {}
1040e5c31af7Sopenharmony_ci
1041e5c31af7Sopenharmony_ci			vertex ""
1042e5c31af7Sopenharmony_ci				#version 300 es
1043e5c31af7Sopenharmony_ci				precision mediump float;
1044e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1045e5c31af7Sopenharmony_ci
1046e5c31af7Sopenharmony_ci				lowp invariant centroid out smooth float x0;
1047e5c31af7Sopenharmony_ci
1048e5c31af7Sopenharmony_ci				mediump out flat float x1;
1049e5c31af7Sopenharmony_ci
1050e5c31af7Sopenharmony_ci				highp uniform float x2;
1051e5c31af7Sopenharmony_ci
1052e5c31af7Sopenharmony_ci				void main()
1053e5c31af7Sopenharmony_ci				{
1054e5c31af7Sopenharmony_ci					x0 = 1.0;
1055e5c31af7Sopenharmony_ci					x1 = 2.0;
1056e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1057e5c31af7Sopenharmony_ci				}
1058e5c31af7Sopenharmony_ci			""
1059e5c31af7Sopenharmony_ci
1060e5c31af7Sopenharmony_ci			fragment ""
1061e5c31af7Sopenharmony_ci				#version 300 es
1062e5c31af7Sopenharmony_ci				precision mediump float;
1063e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1064e5c31af7Sopenharmony_ci
1065e5c31af7Sopenharmony_ci				lowp  centroid in smooth float x0;
1066e5c31af7Sopenharmony_ci
1067e5c31af7Sopenharmony_ci				mediump in flat float x1;
1068e5c31af7Sopenharmony_ci
1069e5c31af7Sopenharmony_ci				highp uniform float x2;
1070e5c31af7Sopenharmony_ci
1071e5c31af7Sopenharmony_ci				void main()
1072e5c31af7Sopenharmony_ci				{
1073e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1074e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1075e5c31af7Sopenharmony_ci				}
1076e5c31af7Sopenharmony_ci			""
1077e5c31af7Sopenharmony_ci		end
1078e5c31af7Sopenharmony_ci		case precision_interp_invariant_storage
1079e5c31af7Sopenharmony_ci			expect compile_fail
1080e5c31af7Sopenharmony_ci			values {}
1081e5c31af7Sopenharmony_ci
1082e5c31af7Sopenharmony_ci			vertex ""
1083e5c31af7Sopenharmony_ci				#version 300 es
1084e5c31af7Sopenharmony_ci				precision mediump float;
1085e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1086e5c31af7Sopenharmony_ci
1087e5c31af7Sopenharmony_ci				lowp smooth invariant centroid out float x0;
1088e5c31af7Sopenharmony_ci
1089e5c31af7Sopenharmony_ci				mediump flat out float x1;
1090e5c31af7Sopenharmony_ci
1091e5c31af7Sopenharmony_ci				highp  uniform float x2;
1092e5c31af7Sopenharmony_ci
1093e5c31af7Sopenharmony_ci				void main()
1094e5c31af7Sopenharmony_ci				{
1095e5c31af7Sopenharmony_ci					x0 = 1.0;
1096e5c31af7Sopenharmony_ci					x1 = 2.0;
1097e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1098e5c31af7Sopenharmony_ci				}
1099e5c31af7Sopenharmony_ci			""
1100e5c31af7Sopenharmony_ci
1101e5c31af7Sopenharmony_ci			fragment ""
1102e5c31af7Sopenharmony_ci				#version 300 es
1103e5c31af7Sopenharmony_ci				precision mediump float;
1104e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1105e5c31af7Sopenharmony_ci
1106e5c31af7Sopenharmony_ci				lowp smooth  centroid in float x0;
1107e5c31af7Sopenharmony_ci
1108e5c31af7Sopenharmony_ci				mediump flat in float x1;
1109e5c31af7Sopenharmony_ci
1110e5c31af7Sopenharmony_ci				highp  uniform float x2;
1111e5c31af7Sopenharmony_ci
1112e5c31af7Sopenharmony_ci				void main()
1113e5c31af7Sopenharmony_ci				{
1114e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1115e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1116e5c31af7Sopenharmony_ci				}
1117e5c31af7Sopenharmony_ci			""
1118e5c31af7Sopenharmony_ci		end
1119e5c31af7Sopenharmony_ci		case precision_interp_storage_invariant
1120e5c31af7Sopenharmony_ci			expect compile_fail
1121e5c31af7Sopenharmony_ci			values {}
1122e5c31af7Sopenharmony_ci
1123e5c31af7Sopenharmony_ci			vertex ""
1124e5c31af7Sopenharmony_ci				#version 300 es
1125e5c31af7Sopenharmony_ci				precision mediump float;
1126e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1127e5c31af7Sopenharmony_ci
1128e5c31af7Sopenharmony_ci				lowp smooth centroid out invariant float x0;
1129e5c31af7Sopenharmony_ci
1130e5c31af7Sopenharmony_ci				mediump flat out float x1;
1131e5c31af7Sopenharmony_ci
1132e5c31af7Sopenharmony_ci				highp uniform float x2;
1133e5c31af7Sopenharmony_ci
1134e5c31af7Sopenharmony_ci				void main()
1135e5c31af7Sopenharmony_ci				{
1136e5c31af7Sopenharmony_ci					x0 = 1.0;
1137e5c31af7Sopenharmony_ci					x1 = 2.0;
1138e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1139e5c31af7Sopenharmony_ci				}
1140e5c31af7Sopenharmony_ci			""
1141e5c31af7Sopenharmony_ci
1142e5c31af7Sopenharmony_ci			fragment ""
1143e5c31af7Sopenharmony_ci				#version 300 es
1144e5c31af7Sopenharmony_ci				precision mediump float;
1145e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1146e5c31af7Sopenharmony_ci
1147e5c31af7Sopenharmony_ci				lowp smooth centroid in  float x0;
1148e5c31af7Sopenharmony_ci
1149e5c31af7Sopenharmony_ci				mediump flat in float x1;
1150e5c31af7Sopenharmony_ci
1151e5c31af7Sopenharmony_ci				highp uniform float x2;
1152e5c31af7Sopenharmony_ci
1153e5c31af7Sopenharmony_ci				void main()
1154e5c31af7Sopenharmony_ci				{
1155e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1156e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1157e5c31af7Sopenharmony_ci				}
1158e5c31af7Sopenharmony_ci			""
1159e5c31af7Sopenharmony_ci		end
1160e5c31af7Sopenharmony_ci		case precision_storage_invariant_interp
1161e5c31af7Sopenharmony_ci			expect compile_fail
1162e5c31af7Sopenharmony_ci			values {}
1163e5c31af7Sopenharmony_ci
1164e5c31af7Sopenharmony_ci			vertex ""
1165e5c31af7Sopenharmony_ci				#version 300 es
1166e5c31af7Sopenharmony_ci				precision mediump float;
1167e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1168e5c31af7Sopenharmony_ci
1169e5c31af7Sopenharmony_ci				lowp centroid out invariant smooth float x0;
1170e5c31af7Sopenharmony_ci
1171e5c31af7Sopenharmony_ci				mediump out flat float x1;
1172e5c31af7Sopenharmony_ci
1173e5c31af7Sopenharmony_ci				highp uniform  float x2;
1174e5c31af7Sopenharmony_ci
1175e5c31af7Sopenharmony_ci				void main()
1176e5c31af7Sopenharmony_ci				{
1177e5c31af7Sopenharmony_ci					x0 = 1.0;
1178e5c31af7Sopenharmony_ci					x1 = 2.0;
1179e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1180e5c31af7Sopenharmony_ci				}
1181e5c31af7Sopenharmony_ci			""
1182e5c31af7Sopenharmony_ci
1183e5c31af7Sopenharmony_ci			fragment ""
1184e5c31af7Sopenharmony_ci				#version 300 es
1185e5c31af7Sopenharmony_ci				precision mediump float;
1186e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1187e5c31af7Sopenharmony_ci
1188e5c31af7Sopenharmony_ci				lowp centroid in  smooth float x0;
1189e5c31af7Sopenharmony_ci
1190e5c31af7Sopenharmony_ci				mediump in flat float x1;
1191e5c31af7Sopenharmony_ci
1192e5c31af7Sopenharmony_ci				highp uniform  float x2;
1193e5c31af7Sopenharmony_ci
1194e5c31af7Sopenharmony_ci				void main()
1195e5c31af7Sopenharmony_ci				{
1196e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1197e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1198e5c31af7Sopenharmony_ci				}
1199e5c31af7Sopenharmony_ci			""
1200e5c31af7Sopenharmony_ci		end
1201e5c31af7Sopenharmony_ci		case precision_storage_interp_invariant
1202e5c31af7Sopenharmony_ci			expect compile_fail
1203e5c31af7Sopenharmony_ci			values {}
1204e5c31af7Sopenharmony_ci
1205e5c31af7Sopenharmony_ci			vertex ""
1206e5c31af7Sopenharmony_ci				#version 300 es
1207e5c31af7Sopenharmony_ci				precision mediump float;
1208e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1209e5c31af7Sopenharmony_ci
1210e5c31af7Sopenharmony_ci				lowp centroid out smooth invariant float x0;
1211e5c31af7Sopenharmony_ci
1212e5c31af7Sopenharmony_ci				mediump out flat float x1;
1213e5c31af7Sopenharmony_ci
1214e5c31af7Sopenharmony_ci				highp uniform  float x2;
1215e5c31af7Sopenharmony_ci
1216e5c31af7Sopenharmony_ci				void main()
1217e5c31af7Sopenharmony_ci				{
1218e5c31af7Sopenharmony_ci					x0 = 1.0;
1219e5c31af7Sopenharmony_ci					x1 = 2.0;
1220e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1221e5c31af7Sopenharmony_ci				}
1222e5c31af7Sopenharmony_ci			""
1223e5c31af7Sopenharmony_ci
1224e5c31af7Sopenharmony_ci			fragment ""
1225e5c31af7Sopenharmony_ci				#version 300 es
1226e5c31af7Sopenharmony_ci				precision mediump float;
1227e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1228e5c31af7Sopenharmony_ci
1229e5c31af7Sopenharmony_ci				lowp centroid in smooth  float x0;
1230e5c31af7Sopenharmony_ci
1231e5c31af7Sopenharmony_ci				mediump in flat float x1;
1232e5c31af7Sopenharmony_ci
1233e5c31af7Sopenharmony_ci				highp uniform  float x2;
1234e5c31af7Sopenharmony_ci
1235e5c31af7Sopenharmony_ci				void main()
1236e5c31af7Sopenharmony_ci				{
1237e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1238e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1239e5c31af7Sopenharmony_ci				}
1240e5c31af7Sopenharmony_ci			""
1241e5c31af7Sopenharmony_ci		end
1242e5c31af7Sopenharmony_ci		case interp_precision_storage
1243e5c31af7Sopenharmony_ci			expect compile_fail
1244e5c31af7Sopenharmony_ci			values {}
1245e5c31af7Sopenharmony_ci
1246e5c31af7Sopenharmony_ci			vertex ""
1247e5c31af7Sopenharmony_ci				#version 300 es
1248e5c31af7Sopenharmony_ci				precision mediump float;
1249e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1250e5c31af7Sopenharmony_ci
1251e5c31af7Sopenharmony_ci				smooth lowp centroid out float x0;
1252e5c31af7Sopenharmony_ci
1253e5c31af7Sopenharmony_ci				flat mediump out float x1;
1254e5c31af7Sopenharmony_ci
1255e5c31af7Sopenharmony_ci				 highp uniform float x2;
1256e5c31af7Sopenharmony_ci
1257e5c31af7Sopenharmony_ci				void main()
1258e5c31af7Sopenharmony_ci				{
1259e5c31af7Sopenharmony_ci					x0 = 1.0;
1260e5c31af7Sopenharmony_ci					x1 = 2.0;
1261e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1262e5c31af7Sopenharmony_ci				}
1263e5c31af7Sopenharmony_ci			""
1264e5c31af7Sopenharmony_ci
1265e5c31af7Sopenharmony_ci			fragment ""
1266e5c31af7Sopenharmony_ci				#version 300 es
1267e5c31af7Sopenharmony_ci				precision mediump float;
1268e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1269e5c31af7Sopenharmony_ci
1270e5c31af7Sopenharmony_ci				smooth lowp centroid in float x0;
1271e5c31af7Sopenharmony_ci
1272e5c31af7Sopenharmony_ci				flat mediump in float x1;
1273e5c31af7Sopenharmony_ci
1274e5c31af7Sopenharmony_ci				 highp uniform float x2;
1275e5c31af7Sopenharmony_ci
1276e5c31af7Sopenharmony_ci				void main()
1277e5c31af7Sopenharmony_ci				{
1278e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1279e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1280e5c31af7Sopenharmony_ci				}
1281e5c31af7Sopenharmony_ci			""
1282e5c31af7Sopenharmony_ci		end
1283e5c31af7Sopenharmony_ci		case storage_interp_precision
1284e5c31af7Sopenharmony_ci			expect compile_fail
1285e5c31af7Sopenharmony_ci			values {}
1286e5c31af7Sopenharmony_ci
1287e5c31af7Sopenharmony_ci			vertex ""
1288e5c31af7Sopenharmony_ci				#version 300 es
1289e5c31af7Sopenharmony_ci				precision mediump float;
1290e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1291e5c31af7Sopenharmony_ci
1292e5c31af7Sopenharmony_ci				centroid out smooth lowp float x0;
1293e5c31af7Sopenharmony_ci
1294e5c31af7Sopenharmony_ci				out flat mediump float x1;
1295e5c31af7Sopenharmony_ci
1296e5c31af7Sopenharmony_ci				uniform highp float x2;
1297e5c31af7Sopenharmony_ci
1298e5c31af7Sopenharmony_ci				void main()
1299e5c31af7Sopenharmony_ci				{
1300e5c31af7Sopenharmony_ci					x0 = 1.0;
1301e5c31af7Sopenharmony_ci					x1 = 2.0;
1302e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1303e5c31af7Sopenharmony_ci				}
1304e5c31af7Sopenharmony_ci			""
1305e5c31af7Sopenharmony_ci
1306e5c31af7Sopenharmony_ci			fragment ""
1307e5c31af7Sopenharmony_ci				#version 300 es
1308e5c31af7Sopenharmony_ci				precision mediump float;
1309e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1310e5c31af7Sopenharmony_ci
1311e5c31af7Sopenharmony_ci				centroid in smooth lowp float x0;
1312e5c31af7Sopenharmony_ci
1313e5c31af7Sopenharmony_ci				in flat mediump float x1;
1314e5c31af7Sopenharmony_ci
1315e5c31af7Sopenharmony_ci				uniform highp float x2;
1316e5c31af7Sopenharmony_ci
1317e5c31af7Sopenharmony_ci				void main()
1318e5c31af7Sopenharmony_ci				{
1319e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1320e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1321e5c31af7Sopenharmony_ci				}
1322e5c31af7Sopenharmony_ci			""
1323e5c31af7Sopenharmony_ci		end
1324e5c31af7Sopenharmony_ci		case storage_precision_interp
1325e5c31af7Sopenharmony_ci			expect compile_fail
1326e5c31af7Sopenharmony_ci			values {}
1327e5c31af7Sopenharmony_ci
1328e5c31af7Sopenharmony_ci			vertex ""
1329e5c31af7Sopenharmony_ci				#version 300 es
1330e5c31af7Sopenharmony_ci				precision mediump float;
1331e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1332e5c31af7Sopenharmony_ci
1333e5c31af7Sopenharmony_ci				centroid out lowp smooth float x0;
1334e5c31af7Sopenharmony_ci
1335e5c31af7Sopenharmony_ci				out mediump flat float x1;
1336e5c31af7Sopenharmony_ci
1337e5c31af7Sopenharmony_ci				uniform highp float x2;
1338e5c31af7Sopenharmony_ci
1339e5c31af7Sopenharmony_ci				void main()
1340e5c31af7Sopenharmony_ci				{
1341e5c31af7Sopenharmony_ci					x0 = 1.0;
1342e5c31af7Sopenharmony_ci					x1 = 2.0;
1343e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1344e5c31af7Sopenharmony_ci				}
1345e5c31af7Sopenharmony_ci			""
1346e5c31af7Sopenharmony_ci
1347e5c31af7Sopenharmony_ci			fragment ""
1348e5c31af7Sopenharmony_ci				#version 300 es
1349e5c31af7Sopenharmony_ci				precision mediump float;
1350e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1351e5c31af7Sopenharmony_ci
1352e5c31af7Sopenharmony_ci				centroid in lowp smooth float x0;
1353e5c31af7Sopenharmony_ci
1354e5c31af7Sopenharmony_ci				in mediump flat float x1;
1355e5c31af7Sopenharmony_ci
1356e5c31af7Sopenharmony_ci				uniform highp float x2;
1357e5c31af7Sopenharmony_ci
1358e5c31af7Sopenharmony_ci				void main()
1359e5c31af7Sopenharmony_ci				{
1360e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1361e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1362e5c31af7Sopenharmony_ci				}
1363e5c31af7Sopenharmony_ci			""
1364e5c31af7Sopenharmony_ci		end
1365e5c31af7Sopenharmony_ci		case precision_interp_storage
1366e5c31af7Sopenharmony_ci			expect compile_fail
1367e5c31af7Sopenharmony_ci			values {}
1368e5c31af7Sopenharmony_ci
1369e5c31af7Sopenharmony_ci			vertex ""
1370e5c31af7Sopenharmony_ci				#version 300 es
1371e5c31af7Sopenharmony_ci				precision mediump float;
1372e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1373e5c31af7Sopenharmony_ci
1374e5c31af7Sopenharmony_ci				lowp smooth centroid out float x0;
1375e5c31af7Sopenharmony_ci
1376e5c31af7Sopenharmony_ci				mediump flat out float x1;
1377e5c31af7Sopenharmony_ci
1378e5c31af7Sopenharmony_ci				highp uniform float x2;
1379e5c31af7Sopenharmony_ci
1380e5c31af7Sopenharmony_ci				void main()
1381e5c31af7Sopenharmony_ci				{
1382e5c31af7Sopenharmony_ci					x0 = 1.0;
1383e5c31af7Sopenharmony_ci					x1 = 2.0;
1384e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1385e5c31af7Sopenharmony_ci				}
1386e5c31af7Sopenharmony_ci			""
1387e5c31af7Sopenharmony_ci
1388e5c31af7Sopenharmony_ci			fragment ""
1389e5c31af7Sopenharmony_ci				#version 300 es
1390e5c31af7Sopenharmony_ci				precision mediump float;
1391e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1392e5c31af7Sopenharmony_ci
1393e5c31af7Sopenharmony_ci				lowp smooth centroid in float x0;
1394e5c31af7Sopenharmony_ci
1395e5c31af7Sopenharmony_ci				mediump flat in float x1;
1396e5c31af7Sopenharmony_ci
1397e5c31af7Sopenharmony_ci				highp uniform float x2;
1398e5c31af7Sopenharmony_ci
1399e5c31af7Sopenharmony_ci				void main()
1400e5c31af7Sopenharmony_ci				{
1401e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1402e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1403e5c31af7Sopenharmony_ci				}
1404e5c31af7Sopenharmony_ci			""
1405e5c31af7Sopenharmony_ci		end
1406e5c31af7Sopenharmony_ci		case precision_storage_interp
1407e5c31af7Sopenharmony_ci			expect compile_fail
1408e5c31af7Sopenharmony_ci			values {}
1409e5c31af7Sopenharmony_ci
1410e5c31af7Sopenharmony_ci			vertex ""
1411e5c31af7Sopenharmony_ci				#version 300 es
1412e5c31af7Sopenharmony_ci				precision mediump float;
1413e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1414e5c31af7Sopenharmony_ci
1415e5c31af7Sopenharmony_ci				lowp centroid out smooth float x0;
1416e5c31af7Sopenharmony_ci
1417e5c31af7Sopenharmony_ci				mediump out flat float x1;
1418e5c31af7Sopenharmony_ci
1419e5c31af7Sopenharmony_ci				highp uniform float x2;
1420e5c31af7Sopenharmony_ci
1421e5c31af7Sopenharmony_ci				void main()
1422e5c31af7Sopenharmony_ci				{
1423e5c31af7Sopenharmony_ci					x0 = 1.0;
1424e5c31af7Sopenharmony_ci					x1 = 2.0;
1425e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1426e5c31af7Sopenharmony_ci				}
1427e5c31af7Sopenharmony_ci			""
1428e5c31af7Sopenharmony_ci
1429e5c31af7Sopenharmony_ci			fragment ""
1430e5c31af7Sopenharmony_ci				#version 300 es
1431e5c31af7Sopenharmony_ci				precision mediump float;
1432e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1433e5c31af7Sopenharmony_ci
1434e5c31af7Sopenharmony_ci				lowp centroid in smooth float x0;
1435e5c31af7Sopenharmony_ci
1436e5c31af7Sopenharmony_ci				mediump in flat float x1;
1437e5c31af7Sopenharmony_ci
1438e5c31af7Sopenharmony_ci				highp uniform float x2;
1439e5c31af7Sopenharmony_ci
1440e5c31af7Sopenharmony_ci				void main()
1441e5c31af7Sopenharmony_ci				{
1442e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1443e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1444e5c31af7Sopenharmony_ci				}
1445e5c31af7Sopenharmony_ci			""
1446e5c31af7Sopenharmony_ci		end
1447e5c31af7Sopenharmony_ci		case invariant_storage_interp
1448e5c31af7Sopenharmony_ci			expect compile_fail
1449e5c31af7Sopenharmony_ci			values {}
1450e5c31af7Sopenharmony_ci
1451e5c31af7Sopenharmony_ci			vertex ""
1452e5c31af7Sopenharmony_ci				#version 300 es
1453e5c31af7Sopenharmony_ci				precision mediump float;
1454e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1455e5c31af7Sopenharmony_ci
1456e5c31af7Sopenharmony_ci				invariant centroid out smooth float x0;
1457e5c31af7Sopenharmony_ci
1458e5c31af7Sopenharmony_ci				 out flat float x1;
1459e5c31af7Sopenharmony_ci
1460e5c31af7Sopenharmony_ci				 uniform float x2;
1461e5c31af7Sopenharmony_ci
1462e5c31af7Sopenharmony_ci				void main()
1463e5c31af7Sopenharmony_ci				{
1464e5c31af7Sopenharmony_ci					x0 = 1.0;
1465e5c31af7Sopenharmony_ci					x1 = 2.0;
1466e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1467e5c31af7Sopenharmony_ci				}
1468e5c31af7Sopenharmony_ci			""
1469e5c31af7Sopenharmony_ci
1470e5c31af7Sopenharmony_ci			fragment ""
1471e5c31af7Sopenharmony_ci				#version 300 es
1472e5c31af7Sopenharmony_ci				precision mediump float;
1473e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1474e5c31af7Sopenharmony_ci
1475e5c31af7Sopenharmony_ci				 centroid in smooth float x0;
1476e5c31af7Sopenharmony_ci
1477e5c31af7Sopenharmony_ci				 in flat float x1;
1478e5c31af7Sopenharmony_ci
1479e5c31af7Sopenharmony_ci				 uniform float x2;
1480e5c31af7Sopenharmony_ci
1481e5c31af7Sopenharmony_ci				void main()
1482e5c31af7Sopenharmony_ci				{
1483e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1484e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1485e5c31af7Sopenharmony_ci				}
1486e5c31af7Sopenharmony_ci			""
1487e5c31af7Sopenharmony_ci		end
1488e5c31af7Sopenharmony_ci		case interp_invariant_storage
1489e5c31af7Sopenharmony_ci			expect compile_fail
1490e5c31af7Sopenharmony_ci			values {}
1491e5c31af7Sopenharmony_ci
1492e5c31af7Sopenharmony_ci			vertex ""
1493e5c31af7Sopenharmony_ci				#version 300 es
1494e5c31af7Sopenharmony_ci				precision mediump float;
1495e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1496e5c31af7Sopenharmony_ci
1497e5c31af7Sopenharmony_ci				smooth invariant centroid out float x0;
1498e5c31af7Sopenharmony_ci
1499e5c31af7Sopenharmony_ci				flat out float x1;
1500e5c31af7Sopenharmony_ci
1501e5c31af7Sopenharmony_ci				 uniform float x2;
1502e5c31af7Sopenharmony_ci
1503e5c31af7Sopenharmony_ci				void main()
1504e5c31af7Sopenharmony_ci				{
1505e5c31af7Sopenharmony_ci					x0 = 1.0;
1506e5c31af7Sopenharmony_ci					x1 = 2.0;
1507e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1508e5c31af7Sopenharmony_ci				}
1509e5c31af7Sopenharmony_ci			""
1510e5c31af7Sopenharmony_ci
1511e5c31af7Sopenharmony_ci			fragment ""
1512e5c31af7Sopenharmony_ci				#version 300 es
1513e5c31af7Sopenharmony_ci				precision mediump float;
1514e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1515e5c31af7Sopenharmony_ci
1516e5c31af7Sopenharmony_ci				smooth  centroid in float x0;
1517e5c31af7Sopenharmony_ci
1518e5c31af7Sopenharmony_ci				flat in float x1;
1519e5c31af7Sopenharmony_ci
1520e5c31af7Sopenharmony_ci				 uniform float x2;
1521e5c31af7Sopenharmony_ci
1522e5c31af7Sopenharmony_ci				void main()
1523e5c31af7Sopenharmony_ci				{
1524e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1525e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1526e5c31af7Sopenharmony_ci				}
1527e5c31af7Sopenharmony_ci			""
1528e5c31af7Sopenharmony_ci		end
1529e5c31af7Sopenharmony_ci		case interp_storage_invariant
1530e5c31af7Sopenharmony_ci			expect compile_fail
1531e5c31af7Sopenharmony_ci			values {}
1532e5c31af7Sopenharmony_ci
1533e5c31af7Sopenharmony_ci			vertex ""
1534e5c31af7Sopenharmony_ci				#version 300 es
1535e5c31af7Sopenharmony_ci				precision mediump float;
1536e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1537e5c31af7Sopenharmony_ci
1538e5c31af7Sopenharmony_ci				smooth centroid out invariant float x0;
1539e5c31af7Sopenharmony_ci
1540e5c31af7Sopenharmony_ci				flat out float x1;
1541e5c31af7Sopenharmony_ci
1542e5c31af7Sopenharmony_ci				 uniform float x2;
1543e5c31af7Sopenharmony_ci
1544e5c31af7Sopenharmony_ci				void main()
1545e5c31af7Sopenharmony_ci				{
1546e5c31af7Sopenharmony_ci					x0 = 1.0;
1547e5c31af7Sopenharmony_ci					x1 = 2.0;
1548e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1549e5c31af7Sopenharmony_ci				}
1550e5c31af7Sopenharmony_ci			""
1551e5c31af7Sopenharmony_ci
1552e5c31af7Sopenharmony_ci			fragment ""
1553e5c31af7Sopenharmony_ci				#version 300 es
1554e5c31af7Sopenharmony_ci				precision mediump float;
1555e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1556e5c31af7Sopenharmony_ci
1557e5c31af7Sopenharmony_ci				smooth centroid in  float x0;
1558e5c31af7Sopenharmony_ci
1559e5c31af7Sopenharmony_ci				flat in float x1;
1560e5c31af7Sopenharmony_ci
1561e5c31af7Sopenharmony_ci				 uniform float x2;
1562e5c31af7Sopenharmony_ci
1563e5c31af7Sopenharmony_ci				void main()
1564e5c31af7Sopenharmony_ci				{
1565e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1566e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1567e5c31af7Sopenharmony_ci				}
1568e5c31af7Sopenharmony_ci			""
1569e5c31af7Sopenharmony_ci		end
1570e5c31af7Sopenharmony_ci		case storage_invariant_interp
1571e5c31af7Sopenharmony_ci			expect compile_fail
1572e5c31af7Sopenharmony_ci			values {}
1573e5c31af7Sopenharmony_ci
1574e5c31af7Sopenharmony_ci			vertex ""
1575e5c31af7Sopenharmony_ci				#version 300 es
1576e5c31af7Sopenharmony_ci				precision mediump float;
1577e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1578e5c31af7Sopenharmony_ci
1579e5c31af7Sopenharmony_ci				centroid out invariant smooth float x0;
1580e5c31af7Sopenharmony_ci
1581e5c31af7Sopenharmony_ci				out flat float x1;
1582e5c31af7Sopenharmony_ci
1583e5c31af7Sopenharmony_ci				uniform  float x2;
1584e5c31af7Sopenharmony_ci
1585e5c31af7Sopenharmony_ci				void main()
1586e5c31af7Sopenharmony_ci				{
1587e5c31af7Sopenharmony_ci					x0 = 1.0;
1588e5c31af7Sopenharmony_ci					x1 = 2.0;
1589e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1590e5c31af7Sopenharmony_ci				}
1591e5c31af7Sopenharmony_ci			""
1592e5c31af7Sopenharmony_ci
1593e5c31af7Sopenharmony_ci			fragment ""
1594e5c31af7Sopenharmony_ci				#version 300 es
1595e5c31af7Sopenharmony_ci				precision mediump float;
1596e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1597e5c31af7Sopenharmony_ci
1598e5c31af7Sopenharmony_ci				centroid in  smooth float x0;
1599e5c31af7Sopenharmony_ci
1600e5c31af7Sopenharmony_ci				in flat float x1;
1601e5c31af7Sopenharmony_ci
1602e5c31af7Sopenharmony_ci				uniform  float x2;
1603e5c31af7Sopenharmony_ci
1604e5c31af7Sopenharmony_ci				void main()
1605e5c31af7Sopenharmony_ci				{
1606e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1607e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1608e5c31af7Sopenharmony_ci				}
1609e5c31af7Sopenharmony_ci			""
1610e5c31af7Sopenharmony_ci		end
1611e5c31af7Sopenharmony_ci		case storage_interp_invariant
1612e5c31af7Sopenharmony_ci			expect compile_fail
1613e5c31af7Sopenharmony_ci			values {}
1614e5c31af7Sopenharmony_ci
1615e5c31af7Sopenharmony_ci			vertex ""
1616e5c31af7Sopenharmony_ci				#version 300 es
1617e5c31af7Sopenharmony_ci				precision mediump float;
1618e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1619e5c31af7Sopenharmony_ci
1620e5c31af7Sopenharmony_ci				centroid out smooth invariant float x0;
1621e5c31af7Sopenharmony_ci
1622e5c31af7Sopenharmony_ci				out flat float x1;
1623e5c31af7Sopenharmony_ci
1624e5c31af7Sopenharmony_ci				uniform  float x2;
1625e5c31af7Sopenharmony_ci
1626e5c31af7Sopenharmony_ci				void main()
1627e5c31af7Sopenharmony_ci				{
1628e5c31af7Sopenharmony_ci					x0 = 1.0;
1629e5c31af7Sopenharmony_ci					x1 = 2.0;
1630e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1631e5c31af7Sopenharmony_ci				}
1632e5c31af7Sopenharmony_ci			""
1633e5c31af7Sopenharmony_ci
1634e5c31af7Sopenharmony_ci			fragment ""
1635e5c31af7Sopenharmony_ci				#version 300 es
1636e5c31af7Sopenharmony_ci				precision mediump float;
1637e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1638e5c31af7Sopenharmony_ci
1639e5c31af7Sopenharmony_ci				centroid in smooth  float x0;
1640e5c31af7Sopenharmony_ci
1641e5c31af7Sopenharmony_ci				in flat float x1;
1642e5c31af7Sopenharmony_ci
1643e5c31af7Sopenharmony_ci				uniform  float x2;
1644e5c31af7Sopenharmony_ci
1645e5c31af7Sopenharmony_ci				void main()
1646e5c31af7Sopenharmony_ci				{
1647e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1648e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1649e5c31af7Sopenharmony_ci				}
1650e5c31af7Sopenharmony_ci			""
1651e5c31af7Sopenharmony_ci		end
1652e5c31af7Sopenharmony_ci		case invariant_precision_storage
1653e5c31af7Sopenharmony_ci			expect compile_fail
1654e5c31af7Sopenharmony_ci			values {}
1655e5c31af7Sopenharmony_ci
1656e5c31af7Sopenharmony_ci			vertex ""
1657e5c31af7Sopenharmony_ci				#version 300 es
1658e5c31af7Sopenharmony_ci				precision mediump float;
1659e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1660e5c31af7Sopenharmony_ci
1661e5c31af7Sopenharmony_ci				invariant lowp centroid out float x0;
1662e5c31af7Sopenharmony_ci
1663e5c31af7Sopenharmony_ci				 mediump out float x1;
1664e5c31af7Sopenharmony_ci
1665e5c31af7Sopenharmony_ci				 highp uniform float x2;
1666e5c31af7Sopenharmony_ci
1667e5c31af7Sopenharmony_ci				void main()
1668e5c31af7Sopenharmony_ci				{
1669e5c31af7Sopenharmony_ci					x0 = 1.0;
1670e5c31af7Sopenharmony_ci					x1 = 2.0;
1671e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1672e5c31af7Sopenharmony_ci				}
1673e5c31af7Sopenharmony_ci			""
1674e5c31af7Sopenharmony_ci
1675e5c31af7Sopenharmony_ci			fragment ""
1676e5c31af7Sopenharmony_ci				#version 300 es
1677e5c31af7Sopenharmony_ci				precision mediump float;
1678e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1679e5c31af7Sopenharmony_ci
1680e5c31af7Sopenharmony_ci				 lowp centroid in float x0;
1681e5c31af7Sopenharmony_ci
1682e5c31af7Sopenharmony_ci				 mediump in float x1;
1683e5c31af7Sopenharmony_ci
1684e5c31af7Sopenharmony_ci				 highp uniform float x2;
1685e5c31af7Sopenharmony_ci
1686e5c31af7Sopenharmony_ci				void main()
1687e5c31af7Sopenharmony_ci				{
1688e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1689e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1690e5c31af7Sopenharmony_ci				}
1691e5c31af7Sopenharmony_ci			""
1692e5c31af7Sopenharmony_ci		end
1693e5c31af7Sopenharmony_ci		case storage_invariant_precision
1694e5c31af7Sopenharmony_ci			expect compile_fail
1695e5c31af7Sopenharmony_ci			values {}
1696e5c31af7Sopenharmony_ci
1697e5c31af7Sopenharmony_ci			vertex ""
1698e5c31af7Sopenharmony_ci				#version 300 es
1699e5c31af7Sopenharmony_ci				precision mediump float;
1700e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1701e5c31af7Sopenharmony_ci
1702e5c31af7Sopenharmony_ci				centroid out invariant lowp float x0;
1703e5c31af7Sopenharmony_ci
1704e5c31af7Sopenharmony_ci				out mediump float x1;
1705e5c31af7Sopenharmony_ci
1706e5c31af7Sopenharmony_ci				uniform highp float x2;
1707e5c31af7Sopenharmony_ci
1708e5c31af7Sopenharmony_ci				void main()
1709e5c31af7Sopenharmony_ci				{
1710e5c31af7Sopenharmony_ci					x0 = 1.0;
1711e5c31af7Sopenharmony_ci					x1 = 2.0;
1712e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1713e5c31af7Sopenharmony_ci				}
1714e5c31af7Sopenharmony_ci			""
1715e5c31af7Sopenharmony_ci
1716e5c31af7Sopenharmony_ci			fragment ""
1717e5c31af7Sopenharmony_ci				#version 300 es
1718e5c31af7Sopenharmony_ci				precision mediump float;
1719e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1720e5c31af7Sopenharmony_ci
1721e5c31af7Sopenharmony_ci				centroid in  lowp float x0;
1722e5c31af7Sopenharmony_ci
1723e5c31af7Sopenharmony_ci				in mediump float x1;
1724e5c31af7Sopenharmony_ci
1725e5c31af7Sopenharmony_ci				uniform highp float x2;
1726e5c31af7Sopenharmony_ci
1727e5c31af7Sopenharmony_ci				void main()
1728e5c31af7Sopenharmony_ci				{
1729e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1730e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1731e5c31af7Sopenharmony_ci				}
1732e5c31af7Sopenharmony_ci			""
1733e5c31af7Sopenharmony_ci		end
1734e5c31af7Sopenharmony_ci		case storage_precision_invariant
1735e5c31af7Sopenharmony_ci			expect compile_fail
1736e5c31af7Sopenharmony_ci			values {}
1737e5c31af7Sopenharmony_ci
1738e5c31af7Sopenharmony_ci			vertex ""
1739e5c31af7Sopenharmony_ci				#version 300 es
1740e5c31af7Sopenharmony_ci				precision mediump float;
1741e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1742e5c31af7Sopenharmony_ci
1743e5c31af7Sopenharmony_ci				centroid out lowp invariant float x0;
1744e5c31af7Sopenharmony_ci
1745e5c31af7Sopenharmony_ci				out mediump float x1;
1746e5c31af7Sopenharmony_ci
1747e5c31af7Sopenharmony_ci				uniform highp float x2;
1748e5c31af7Sopenharmony_ci
1749e5c31af7Sopenharmony_ci				void main()
1750e5c31af7Sopenharmony_ci				{
1751e5c31af7Sopenharmony_ci					x0 = 1.0;
1752e5c31af7Sopenharmony_ci					x1 = 2.0;
1753e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1754e5c31af7Sopenharmony_ci				}
1755e5c31af7Sopenharmony_ci			""
1756e5c31af7Sopenharmony_ci
1757e5c31af7Sopenharmony_ci			fragment ""
1758e5c31af7Sopenharmony_ci				#version 300 es
1759e5c31af7Sopenharmony_ci				precision mediump float;
1760e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1761e5c31af7Sopenharmony_ci
1762e5c31af7Sopenharmony_ci				centroid in lowp  float x0;
1763e5c31af7Sopenharmony_ci
1764e5c31af7Sopenharmony_ci				in mediump float x1;
1765e5c31af7Sopenharmony_ci
1766e5c31af7Sopenharmony_ci				uniform highp float x2;
1767e5c31af7Sopenharmony_ci
1768e5c31af7Sopenharmony_ci				void main()
1769e5c31af7Sopenharmony_ci				{
1770e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1771e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1772e5c31af7Sopenharmony_ci				}
1773e5c31af7Sopenharmony_ci			""
1774e5c31af7Sopenharmony_ci		end
1775e5c31af7Sopenharmony_ci		case precision_invariant_storage
1776e5c31af7Sopenharmony_ci			expect compile_fail
1777e5c31af7Sopenharmony_ci			values {}
1778e5c31af7Sopenharmony_ci
1779e5c31af7Sopenharmony_ci			vertex ""
1780e5c31af7Sopenharmony_ci				#version 300 es
1781e5c31af7Sopenharmony_ci				precision mediump float;
1782e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1783e5c31af7Sopenharmony_ci
1784e5c31af7Sopenharmony_ci				lowp invariant centroid out float x0;
1785e5c31af7Sopenharmony_ci
1786e5c31af7Sopenharmony_ci				mediump out float x1;
1787e5c31af7Sopenharmony_ci
1788e5c31af7Sopenharmony_ci				highp uniform float x2;
1789e5c31af7Sopenharmony_ci
1790e5c31af7Sopenharmony_ci				void main()
1791e5c31af7Sopenharmony_ci				{
1792e5c31af7Sopenharmony_ci					x0 = 1.0;
1793e5c31af7Sopenharmony_ci					x1 = 2.0;
1794e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1795e5c31af7Sopenharmony_ci				}
1796e5c31af7Sopenharmony_ci			""
1797e5c31af7Sopenharmony_ci
1798e5c31af7Sopenharmony_ci			fragment ""
1799e5c31af7Sopenharmony_ci				#version 300 es
1800e5c31af7Sopenharmony_ci				precision mediump float;
1801e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1802e5c31af7Sopenharmony_ci
1803e5c31af7Sopenharmony_ci				lowp  centroid in float x0;
1804e5c31af7Sopenharmony_ci
1805e5c31af7Sopenharmony_ci				mediump in float x1;
1806e5c31af7Sopenharmony_ci
1807e5c31af7Sopenharmony_ci				highp uniform float x2;
1808e5c31af7Sopenharmony_ci
1809e5c31af7Sopenharmony_ci				void main()
1810e5c31af7Sopenharmony_ci				{
1811e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1812e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1813e5c31af7Sopenharmony_ci				}
1814e5c31af7Sopenharmony_ci			""
1815e5c31af7Sopenharmony_ci		end
1816e5c31af7Sopenharmony_ci		case precision_storage_invariant
1817e5c31af7Sopenharmony_ci			expect compile_fail
1818e5c31af7Sopenharmony_ci			values {}
1819e5c31af7Sopenharmony_ci
1820e5c31af7Sopenharmony_ci			vertex ""
1821e5c31af7Sopenharmony_ci				#version 300 es
1822e5c31af7Sopenharmony_ci				precision mediump float;
1823e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1824e5c31af7Sopenharmony_ci
1825e5c31af7Sopenharmony_ci				lowp centroid out invariant float x0;
1826e5c31af7Sopenharmony_ci
1827e5c31af7Sopenharmony_ci				mediump out float x1;
1828e5c31af7Sopenharmony_ci
1829e5c31af7Sopenharmony_ci				highp uniform float x2;
1830e5c31af7Sopenharmony_ci
1831e5c31af7Sopenharmony_ci				void main()
1832e5c31af7Sopenharmony_ci				{
1833e5c31af7Sopenharmony_ci					x0 = 1.0;
1834e5c31af7Sopenharmony_ci					x1 = 2.0;
1835e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1836e5c31af7Sopenharmony_ci				}
1837e5c31af7Sopenharmony_ci			""
1838e5c31af7Sopenharmony_ci
1839e5c31af7Sopenharmony_ci			fragment ""
1840e5c31af7Sopenharmony_ci				#version 300 es
1841e5c31af7Sopenharmony_ci				precision mediump float;
1842e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1843e5c31af7Sopenharmony_ci
1844e5c31af7Sopenharmony_ci				lowp centroid in  float x0;
1845e5c31af7Sopenharmony_ci
1846e5c31af7Sopenharmony_ci				mediump in float x1;
1847e5c31af7Sopenharmony_ci
1848e5c31af7Sopenharmony_ci				highp uniform float x2;
1849e5c31af7Sopenharmony_ci
1850e5c31af7Sopenharmony_ci				void main()
1851e5c31af7Sopenharmony_ci				{
1852e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1853e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1854e5c31af7Sopenharmony_ci				}
1855e5c31af7Sopenharmony_ci			""
1856e5c31af7Sopenharmony_ci		end
1857e5c31af7Sopenharmony_ci		case precision_storage
1858e5c31af7Sopenharmony_ci			expect compile_fail
1859e5c31af7Sopenharmony_ci			values {}
1860e5c31af7Sopenharmony_ci
1861e5c31af7Sopenharmony_ci			vertex ""
1862e5c31af7Sopenharmony_ci				#version 300 es
1863e5c31af7Sopenharmony_ci				precision mediump float;
1864e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1865e5c31af7Sopenharmony_ci
1866e5c31af7Sopenharmony_ci				lowp centroid out float x0;
1867e5c31af7Sopenharmony_ci
1868e5c31af7Sopenharmony_ci				mediump out float x1;
1869e5c31af7Sopenharmony_ci
1870e5c31af7Sopenharmony_ci				highp uniform float x2;
1871e5c31af7Sopenharmony_ci
1872e5c31af7Sopenharmony_ci				void main()
1873e5c31af7Sopenharmony_ci				{
1874e5c31af7Sopenharmony_ci					x0 = 1.0;
1875e5c31af7Sopenharmony_ci					x1 = 2.0;
1876e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1877e5c31af7Sopenharmony_ci				}
1878e5c31af7Sopenharmony_ci			""
1879e5c31af7Sopenharmony_ci
1880e5c31af7Sopenharmony_ci			fragment ""
1881e5c31af7Sopenharmony_ci				#version 300 es
1882e5c31af7Sopenharmony_ci				precision mediump float;
1883e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1884e5c31af7Sopenharmony_ci
1885e5c31af7Sopenharmony_ci				lowp centroid in float x0;
1886e5c31af7Sopenharmony_ci
1887e5c31af7Sopenharmony_ci				mediump in float x1;
1888e5c31af7Sopenharmony_ci
1889e5c31af7Sopenharmony_ci				highp uniform float x2;
1890e5c31af7Sopenharmony_ci
1891e5c31af7Sopenharmony_ci				void main()
1892e5c31af7Sopenharmony_ci				{
1893e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1894e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1895e5c31af7Sopenharmony_ci				}
1896e5c31af7Sopenharmony_ci			""
1897e5c31af7Sopenharmony_ci		end
1898e5c31af7Sopenharmony_ci		case storage_interp
1899e5c31af7Sopenharmony_ci			expect compile_fail
1900e5c31af7Sopenharmony_ci			values {}
1901e5c31af7Sopenharmony_ci
1902e5c31af7Sopenharmony_ci			vertex ""
1903e5c31af7Sopenharmony_ci				#version 300 es
1904e5c31af7Sopenharmony_ci				precision mediump float;
1905e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1906e5c31af7Sopenharmony_ci
1907e5c31af7Sopenharmony_ci				centroid out smooth float x0;
1908e5c31af7Sopenharmony_ci
1909e5c31af7Sopenharmony_ci				out flat float x1;
1910e5c31af7Sopenharmony_ci
1911e5c31af7Sopenharmony_ci				uniform float x2;
1912e5c31af7Sopenharmony_ci
1913e5c31af7Sopenharmony_ci				void main()
1914e5c31af7Sopenharmony_ci				{
1915e5c31af7Sopenharmony_ci					x0 = 1.0;
1916e5c31af7Sopenharmony_ci					x1 = 2.0;
1917e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1918e5c31af7Sopenharmony_ci				}
1919e5c31af7Sopenharmony_ci			""
1920e5c31af7Sopenharmony_ci
1921e5c31af7Sopenharmony_ci			fragment ""
1922e5c31af7Sopenharmony_ci				#version 300 es
1923e5c31af7Sopenharmony_ci				precision mediump float;
1924e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1925e5c31af7Sopenharmony_ci
1926e5c31af7Sopenharmony_ci				centroid in smooth float x0;
1927e5c31af7Sopenharmony_ci
1928e5c31af7Sopenharmony_ci				in flat float x1;
1929e5c31af7Sopenharmony_ci
1930e5c31af7Sopenharmony_ci				uniform float x2;
1931e5c31af7Sopenharmony_ci
1932e5c31af7Sopenharmony_ci				void main()
1933e5c31af7Sopenharmony_ci				{
1934e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1935e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1936e5c31af7Sopenharmony_ci				}
1937e5c31af7Sopenharmony_ci			""
1938e5c31af7Sopenharmony_ci		end
1939e5c31af7Sopenharmony_ci		case storage_invariant
1940e5c31af7Sopenharmony_ci			expect compile_fail
1941e5c31af7Sopenharmony_ci			values {}
1942e5c31af7Sopenharmony_ci
1943e5c31af7Sopenharmony_ci			vertex ""
1944e5c31af7Sopenharmony_ci				#version 300 es
1945e5c31af7Sopenharmony_ci				precision mediump float;
1946e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1947e5c31af7Sopenharmony_ci
1948e5c31af7Sopenharmony_ci				centroid out invariant float x0;
1949e5c31af7Sopenharmony_ci
1950e5c31af7Sopenharmony_ci				out float x1;
1951e5c31af7Sopenharmony_ci
1952e5c31af7Sopenharmony_ci				uniform float x2;
1953e5c31af7Sopenharmony_ci
1954e5c31af7Sopenharmony_ci				void main()
1955e5c31af7Sopenharmony_ci				{
1956e5c31af7Sopenharmony_ci					x0 = 1.0;
1957e5c31af7Sopenharmony_ci					x1 = 2.0;
1958e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
1959e5c31af7Sopenharmony_ci				}
1960e5c31af7Sopenharmony_ci			""
1961e5c31af7Sopenharmony_ci
1962e5c31af7Sopenharmony_ci			fragment ""
1963e5c31af7Sopenharmony_ci				#version 300 es
1964e5c31af7Sopenharmony_ci				precision mediump float;
1965e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
1966e5c31af7Sopenharmony_ci
1967e5c31af7Sopenharmony_ci				centroid in  float x0;
1968e5c31af7Sopenharmony_ci
1969e5c31af7Sopenharmony_ci				in float x1;
1970e5c31af7Sopenharmony_ci
1971e5c31af7Sopenharmony_ci				uniform float x2;
1972e5c31af7Sopenharmony_ci
1973e5c31af7Sopenharmony_ci				void main()
1974e5c31af7Sopenharmony_ci				{
1975e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
1976e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
1977e5c31af7Sopenharmony_ci				}
1978e5c31af7Sopenharmony_ci			""
1979e5c31af7Sopenharmony_ci		end
1980e5c31af7Sopenharmony_ci		case invariant_interp_storage_precision_invariant_input
1981e5c31af7Sopenharmony_ci			expect compile_fail
1982e5c31af7Sopenharmony_ci			values {}
1983e5c31af7Sopenharmony_ci
1984e5c31af7Sopenharmony_ci			vertex ""
1985e5c31af7Sopenharmony_ci				#version 300 es
1986e5c31af7Sopenharmony_ci				precision mediump float;
1987e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
1988e5c31af7Sopenharmony_ci
1989e5c31af7Sopenharmony_ci				invariant smooth centroid out lowp float x0;
1990e5c31af7Sopenharmony_ci
1991e5c31af7Sopenharmony_ci				 flat out mediump float x1;
1992e5c31af7Sopenharmony_ci
1993e5c31af7Sopenharmony_ci				 uniform highp float x2;
1994e5c31af7Sopenharmony_ci
1995e5c31af7Sopenharmony_ci				void main()
1996e5c31af7Sopenharmony_ci				{
1997e5c31af7Sopenharmony_ci					x0 = 1.0;
1998e5c31af7Sopenharmony_ci					x1 = 2.0;
1999e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2000e5c31af7Sopenharmony_ci				}
2001e5c31af7Sopenharmony_ci			""
2002e5c31af7Sopenharmony_ci
2003e5c31af7Sopenharmony_ci			fragment ""
2004e5c31af7Sopenharmony_ci				#version 300 es
2005e5c31af7Sopenharmony_ci				precision mediump float;
2006e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2007e5c31af7Sopenharmony_ci
2008e5c31af7Sopenharmony_ci				invariant  smooth centroid in lowp float x0;
2009e5c31af7Sopenharmony_ci
2010e5c31af7Sopenharmony_ci				 flat in mediump float x1;
2011e5c31af7Sopenharmony_ci
2012e5c31af7Sopenharmony_ci				 uniform highp float x2;
2013e5c31af7Sopenharmony_ci
2014e5c31af7Sopenharmony_ci				void main()
2015e5c31af7Sopenharmony_ci				{
2016e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2017e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2018e5c31af7Sopenharmony_ci				}
2019e5c31af7Sopenharmony_ci			""
2020e5c31af7Sopenharmony_ci		end
2021e5c31af7Sopenharmony_ci		case interp_storage_precision_invariant_input
2022e5c31af7Sopenharmony_ci			expect compile_fail
2023e5c31af7Sopenharmony_ci			values {}
2024e5c31af7Sopenharmony_ci
2025e5c31af7Sopenharmony_ci			vertex ""
2026e5c31af7Sopenharmony_ci				#version 300 es
2027e5c31af7Sopenharmony_ci				precision mediump float;
2028e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2029e5c31af7Sopenharmony_ci
2030e5c31af7Sopenharmony_ci				smooth centroid out lowp float x0;
2031e5c31af7Sopenharmony_ci
2032e5c31af7Sopenharmony_ci				flat out mediump float x1;
2033e5c31af7Sopenharmony_ci
2034e5c31af7Sopenharmony_ci				 uniform highp float x2;
2035e5c31af7Sopenharmony_ci
2036e5c31af7Sopenharmony_ci				void main()
2037e5c31af7Sopenharmony_ci				{
2038e5c31af7Sopenharmony_ci					x0 = 1.0;
2039e5c31af7Sopenharmony_ci					x1 = 2.0;
2040e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2041e5c31af7Sopenharmony_ci				}
2042e5c31af7Sopenharmony_ci			""
2043e5c31af7Sopenharmony_ci
2044e5c31af7Sopenharmony_ci			fragment ""
2045e5c31af7Sopenharmony_ci				#version 300 es
2046e5c31af7Sopenharmony_ci				precision mediump float;
2047e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2048e5c31af7Sopenharmony_ci
2049e5c31af7Sopenharmony_ci				invariant smooth centroid in lowp float x0;
2050e5c31af7Sopenharmony_ci
2051e5c31af7Sopenharmony_ci				flat in mediump float x1;
2052e5c31af7Sopenharmony_ci
2053e5c31af7Sopenharmony_ci				 uniform highp float x2;
2054e5c31af7Sopenharmony_ci
2055e5c31af7Sopenharmony_ci				void main()
2056e5c31af7Sopenharmony_ci				{
2057e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2058e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2059e5c31af7Sopenharmony_ci				}
2060e5c31af7Sopenharmony_ci			""
2061e5c31af7Sopenharmony_ci		end
2062e5c31af7Sopenharmony_ci		case invariant_interp_storage_invariant_input
2063e5c31af7Sopenharmony_ci			expect compile_fail
2064e5c31af7Sopenharmony_ci			values {}
2065e5c31af7Sopenharmony_ci
2066e5c31af7Sopenharmony_ci			vertex ""
2067e5c31af7Sopenharmony_ci				#version 300 es
2068e5c31af7Sopenharmony_ci				precision mediump float;
2069e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2070e5c31af7Sopenharmony_ci
2071e5c31af7Sopenharmony_ci				invariant smooth centroid out float x0;
2072e5c31af7Sopenharmony_ci
2073e5c31af7Sopenharmony_ci				 flat out float x1;
2074e5c31af7Sopenharmony_ci
2075e5c31af7Sopenharmony_ci				 uniform float x2;
2076e5c31af7Sopenharmony_ci
2077e5c31af7Sopenharmony_ci				void main()
2078e5c31af7Sopenharmony_ci				{
2079e5c31af7Sopenharmony_ci					x0 = 1.0;
2080e5c31af7Sopenharmony_ci					x1 = 2.0;
2081e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2082e5c31af7Sopenharmony_ci				}
2083e5c31af7Sopenharmony_ci			""
2084e5c31af7Sopenharmony_ci
2085e5c31af7Sopenharmony_ci			fragment ""
2086e5c31af7Sopenharmony_ci				#version 300 es
2087e5c31af7Sopenharmony_ci				precision mediump float;
2088e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2089e5c31af7Sopenharmony_ci
2090e5c31af7Sopenharmony_ci				invariant  smooth centroid in float x0;
2091e5c31af7Sopenharmony_ci
2092e5c31af7Sopenharmony_ci				 flat in float x1;
2093e5c31af7Sopenharmony_ci
2094e5c31af7Sopenharmony_ci				 uniform float x2;
2095e5c31af7Sopenharmony_ci
2096e5c31af7Sopenharmony_ci				void main()
2097e5c31af7Sopenharmony_ci				{
2098e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2099e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2100e5c31af7Sopenharmony_ci				}
2101e5c31af7Sopenharmony_ci			""
2102e5c31af7Sopenharmony_ci		end
2103e5c31af7Sopenharmony_ci		case invariant_storage_precision_invariant_input
2104e5c31af7Sopenharmony_ci			expect compile_fail
2105e5c31af7Sopenharmony_ci			values {}
2106e5c31af7Sopenharmony_ci
2107e5c31af7Sopenharmony_ci			vertex ""
2108e5c31af7Sopenharmony_ci				#version 300 es
2109e5c31af7Sopenharmony_ci				precision mediump float;
2110e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2111e5c31af7Sopenharmony_ci
2112e5c31af7Sopenharmony_ci				invariant centroid out lowp float x0;
2113e5c31af7Sopenharmony_ci
2114e5c31af7Sopenharmony_ci				 out mediump float x1;
2115e5c31af7Sopenharmony_ci
2116e5c31af7Sopenharmony_ci				 uniform highp float x2;
2117e5c31af7Sopenharmony_ci
2118e5c31af7Sopenharmony_ci				void main()
2119e5c31af7Sopenharmony_ci				{
2120e5c31af7Sopenharmony_ci					x0 = 1.0;
2121e5c31af7Sopenharmony_ci					x1 = 2.0;
2122e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2123e5c31af7Sopenharmony_ci				}
2124e5c31af7Sopenharmony_ci			""
2125e5c31af7Sopenharmony_ci
2126e5c31af7Sopenharmony_ci			fragment ""
2127e5c31af7Sopenharmony_ci				#version 300 es
2128e5c31af7Sopenharmony_ci				precision mediump float;
2129e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2130e5c31af7Sopenharmony_ci
2131e5c31af7Sopenharmony_ci				invariant  centroid in lowp float x0;
2132e5c31af7Sopenharmony_ci
2133e5c31af7Sopenharmony_ci				 in mediump float x1;
2134e5c31af7Sopenharmony_ci
2135e5c31af7Sopenharmony_ci				 uniform highp float x2;
2136e5c31af7Sopenharmony_ci
2137e5c31af7Sopenharmony_ci				void main()
2138e5c31af7Sopenharmony_ci				{
2139e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2140e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2141e5c31af7Sopenharmony_ci				}
2142e5c31af7Sopenharmony_ci			""
2143e5c31af7Sopenharmony_ci		end
2144e5c31af7Sopenharmony_ci		case storage_precision_invariant_input
2145e5c31af7Sopenharmony_ci			expect compile_fail
2146e5c31af7Sopenharmony_ci			values {}
2147e5c31af7Sopenharmony_ci
2148e5c31af7Sopenharmony_ci			vertex ""
2149e5c31af7Sopenharmony_ci				#version 300 es
2150e5c31af7Sopenharmony_ci				precision mediump float;
2151e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2152e5c31af7Sopenharmony_ci
2153e5c31af7Sopenharmony_ci				centroid out lowp float x0;
2154e5c31af7Sopenharmony_ci
2155e5c31af7Sopenharmony_ci				out mediump float x1;
2156e5c31af7Sopenharmony_ci
2157e5c31af7Sopenharmony_ci				uniform highp float x2;
2158e5c31af7Sopenharmony_ci
2159e5c31af7Sopenharmony_ci				void main()
2160e5c31af7Sopenharmony_ci				{
2161e5c31af7Sopenharmony_ci					x0 = 1.0;
2162e5c31af7Sopenharmony_ci					x1 = 2.0;
2163e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2164e5c31af7Sopenharmony_ci				}
2165e5c31af7Sopenharmony_ci			""
2166e5c31af7Sopenharmony_ci
2167e5c31af7Sopenharmony_ci			fragment ""
2168e5c31af7Sopenharmony_ci				#version 300 es
2169e5c31af7Sopenharmony_ci				precision mediump float;
2170e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2171e5c31af7Sopenharmony_ci
2172e5c31af7Sopenharmony_ci				invariant centroid in lowp float x0;
2173e5c31af7Sopenharmony_ci
2174e5c31af7Sopenharmony_ci				in mediump float x1;
2175e5c31af7Sopenharmony_ci
2176e5c31af7Sopenharmony_ci				uniform highp float x2;
2177e5c31af7Sopenharmony_ci
2178e5c31af7Sopenharmony_ci				void main()
2179e5c31af7Sopenharmony_ci				{
2180e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2181e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2182e5c31af7Sopenharmony_ci				}
2183e5c31af7Sopenharmony_ci			""
2184e5c31af7Sopenharmony_ci		end
2185e5c31af7Sopenharmony_ci		case interp_storage_invariant_input
2186e5c31af7Sopenharmony_ci			expect compile_fail
2187e5c31af7Sopenharmony_ci			values {}
2188e5c31af7Sopenharmony_ci
2189e5c31af7Sopenharmony_ci			vertex ""
2190e5c31af7Sopenharmony_ci				#version 300 es
2191e5c31af7Sopenharmony_ci				precision mediump float;
2192e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2193e5c31af7Sopenharmony_ci
2194e5c31af7Sopenharmony_ci				smooth centroid out float x0;
2195e5c31af7Sopenharmony_ci
2196e5c31af7Sopenharmony_ci				flat out float x1;
2197e5c31af7Sopenharmony_ci
2198e5c31af7Sopenharmony_ci				 uniform float x2;
2199e5c31af7Sopenharmony_ci
2200e5c31af7Sopenharmony_ci				void main()
2201e5c31af7Sopenharmony_ci				{
2202e5c31af7Sopenharmony_ci					x0 = 1.0;
2203e5c31af7Sopenharmony_ci					x1 = 2.0;
2204e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2205e5c31af7Sopenharmony_ci				}
2206e5c31af7Sopenharmony_ci			""
2207e5c31af7Sopenharmony_ci
2208e5c31af7Sopenharmony_ci			fragment ""
2209e5c31af7Sopenharmony_ci				#version 300 es
2210e5c31af7Sopenharmony_ci				precision mediump float;
2211e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2212e5c31af7Sopenharmony_ci
2213e5c31af7Sopenharmony_ci				invariant smooth centroid in float x0;
2214e5c31af7Sopenharmony_ci
2215e5c31af7Sopenharmony_ci				flat in float x1;
2216e5c31af7Sopenharmony_ci
2217e5c31af7Sopenharmony_ci				 uniform float x2;
2218e5c31af7Sopenharmony_ci
2219e5c31af7Sopenharmony_ci				void main()
2220e5c31af7Sopenharmony_ci				{
2221e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2222e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2223e5c31af7Sopenharmony_ci				}
2224e5c31af7Sopenharmony_ci			""
2225e5c31af7Sopenharmony_ci		end
2226e5c31af7Sopenharmony_ci		case invariant_storage_invariant_input
2227e5c31af7Sopenharmony_ci			expect compile_fail
2228e5c31af7Sopenharmony_ci			values {}
2229e5c31af7Sopenharmony_ci
2230e5c31af7Sopenharmony_ci			vertex ""
2231e5c31af7Sopenharmony_ci				#version 300 es
2232e5c31af7Sopenharmony_ci				precision mediump float;
2233e5c31af7Sopenharmony_ci				in highp vec4 dEQP_Position;
2234e5c31af7Sopenharmony_ci
2235e5c31af7Sopenharmony_ci				invariant centroid out float x0;
2236e5c31af7Sopenharmony_ci
2237e5c31af7Sopenharmony_ci				 out float x1;
2238e5c31af7Sopenharmony_ci
2239e5c31af7Sopenharmony_ci				 uniform float x2;
2240e5c31af7Sopenharmony_ci
2241e5c31af7Sopenharmony_ci				void main()
2242e5c31af7Sopenharmony_ci				{
2243e5c31af7Sopenharmony_ci					x0 = 1.0;
2244e5c31af7Sopenharmony_ci					x1 = 2.0;
2245e5c31af7Sopenharmony_ci					gl_Position = dEQP_Position;
2246e5c31af7Sopenharmony_ci				}
2247e5c31af7Sopenharmony_ci			""
2248e5c31af7Sopenharmony_ci
2249e5c31af7Sopenharmony_ci			fragment ""
2250e5c31af7Sopenharmony_ci				#version 300 es
2251e5c31af7Sopenharmony_ci				precision mediump float;
2252e5c31af7Sopenharmony_ci				layout(location = 0) out mediump vec4 dEQP_FragColor;
2253e5c31af7Sopenharmony_ci
2254e5c31af7Sopenharmony_ci				invariant  centroid in float x0;
2255e5c31af7Sopenharmony_ci
2256e5c31af7Sopenharmony_ci				 in float x1;
2257e5c31af7Sopenharmony_ci
2258e5c31af7Sopenharmony_ci				 uniform float x2;
2259e5c31af7Sopenharmony_ci
2260e5c31af7Sopenharmony_ci				void main()
2261e5c31af7Sopenharmony_ci				{
2262e5c31af7Sopenharmony_ci					float result = (x0 + x1 + x2) / 3.0;
2263e5c31af7Sopenharmony_ci					dEQP_FragColor = vec4(result, result, result, 1.0);
2264e5c31af7Sopenharmony_ci				}
2265e5c31af7Sopenharmony_ci			""
2266e5c31af7Sopenharmony_ci		end
2267e5c31af7Sopenharmony_ci
2268e5c31af7Sopenharmony_ci	end # invalid
2269e5c31af7Sopenharmony_ci
2270e5c31af7Sopenharmony_ciend # variables
2271e5c31af7Sopenharmony_cigroup parameters "Order of qualification in function parameters."
2272e5c31af7Sopenharmony_ci
2273e5c31af7Sopenharmony_ci	group valid "Valid orderings."
2274e5c31af7Sopenharmony_ci
2275e5c31af7Sopenharmony_ci		case storage_parameter_precision
2276e5c31af7Sopenharmony_ci			expect pass
2277e5c31af7Sopenharmony_ci			version 300 es
2278e5c31af7Sopenharmony_ci			values {}
2279e5c31af7Sopenharmony_ci
2280e5c31af7Sopenharmony_ci			both ""
2281e5c31af7Sopenharmony_ci				#version 300 es
2282e5c31af7Sopenharmony_ci				precision mediump float;
2283e5c31af7Sopenharmony_ci				${DECLARATIONS}
2284e5c31af7Sopenharmony_ci
2285e5c31af7Sopenharmony_ci				float foo0 (const in lowp float x)
2286e5c31af7Sopenharmony_ci				{
2287e5c31af7Sopenharmony_ci					return x + 1.0;
2288e5c31af7Sopenharmony_ci				}
2289e5c31af7Sopenharmony_ci
2290e5c31af7Sopenharmony_ci				void foo1 ( out mediump float x)
2291e5c31af7Sopenharmony_ci				{
2292e5c31af7Sopenharmony_ci					x = 1.0;
2293e5c31af7Sopenharmony_ci				}
2294e5c31af7Sopenharmony_ci
2295e5c31af7Sopenharmony_ci				float foo2 ( inout highp float x)
2296e5c31af7Sopenharmony_ci				{
2297e5c31af7Sopenharmony_ci					return x + 1.0;
2298e5c31af7Sopenharmony_ci				}
2299e5c31af7Sopenharmony_ci
2300e5c31af7Sopenharmony_ci				void main()
2301e5c31af7Sopenharmony_ci				{
2302e5c31af7Sopenharmony_ci					${SETUP}
2303e5c31af7Sopenharmony_ci					float result;
2304e5c31af7Sopenharmony_ci					foo1(result);
2305e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2306e5c31af7Sopenharmony_ci					foo2(result);
2307e5c31af7Sopenharmony_ci					${OUTPUT}
2308e5c31af7Sopenharmony_ci				}
2309e5c31af7Sopenharmony_ci			""
2310e5c31af7Sopenharmony_ci		end
2311e5c31af7Sopenharmony_ci		case storage_parameter
2312e5c31af7Sopenharmony_ci			expect pass
2313e5c31af7Sopenharmony_ci			version 300 es
2314e5c31af7Sopenharmony_ci			values {}
2315e5c31af7Sopenharmony_ci
2316e5c31af7Sopenharmony_ci			both ""
2317e5c31af7Sopenharmony_ci				#version 300 es
2318e5c31af7Sopenharmony_ci				precision mediump float;
2319e5c31af7Sopenharmony_ci				${DECLARATIONS}
2320e5c31af7Sopenharmony_ci
2321e5c31af7Sopenharmony_ci				float foo0 (const in float x)
2322e5c31af7Sopenharmony_ci				{
2323e5c31af7Sopenharmony_ci					return x + 1.0;
2324e5c31af7Sopenharmony_ci				}
2325e5c31af7Sopenharmony_ci
2326e5c31af7Sopenharmony_ci				void foo1 ( out float x)
2327e5c31af7Sopenharmony_ci				{
2328e5c31af7Sopenharmony_ci					x = 1.0;
2329e5c31af7Sopenharmony_ci				}
2330e5c31af7Sopenharmony_ci
2331e5c31af7Sopenharmony_ci				float foo2 ( inout float x)
2332e5c31af7Sopenharmony_ci				{
2333e5c31af7Sopenharmony_ci					return x + 1.0;
2334e5c31af7Sopenharmony_ci				}
2335e5c31af7Sopenharmony_ci
2336e5c31af7Sopenharmony_ci				void main()
2337e5c31af7Sopenharmony_ci				{
2338e5c31af7Sopenharmony_ci					${SETUP}
2339e5c31af7Sopenharmony_ci					float result;
2340e5c31af7Sopenharmony_ci					foo1(result);
2341e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2342e5c31af7Sopenharmony_ci					foo2(result);
2343e5c31af7Sopenharmony_ci					${OUTPUT}
2344e5c31af7Sopenharmony_ci				}
2345e5c31af7Sopenharmony_ci			""
2346e5c31af7Sopenharmony_ci		end
2347e5c31af7Sopenharmony_ci		case storage_precision
2348e5c31af7Sopenharmony_ci			expect pass
2349e5c31af7Sopenharmony_ci			version 300 es
2350e5c31af7Sopenharmony_ci			values {}
2351e5c31af7Sopenharmony_ci
2352e5c31af7Sopenharmony_ci			both ""
2353e5c31af7Sopenharmony_ci				#version 300 es
2354e5c31af7Sopenharmony_ci				precision mediump float;
2355e5c31af7Sopenharmony_ci				${DECLARATIONS}
2356e5c31af7Sopenharmony_ci
2357e5c31af7Sopenharmony_ci				float foo0 (const lowp float x)
2358e5c31af7Sopenharmony_ci				{
2359e5c31af7Sopenharmony_ci					return x + 1.0;
2360e5c31af7Sopenharmony_ci				}
2361e5c31af7Sopenharmony_ci
2362e5c31af7Sopenharmony_ci				void foo1 ( mediump float x)
2363e5c31af7Sopenharmony_ci				{
2364e5c31af7Sopenharmony_ci					x = 1.0;
2365e5c31af7Sopenharmony_ci				}
2366e5c31af7Sopenharmony_ci
2367e5c31af7Sopenharmony_ci				float foo2 ( highp float x)
2368e5c31af7Sopenharmony_ci				{
2369e5c31af7Sopenharmony_ci					return x + 1.0;
2370e5c31af7Sopenharmony_ci				}
2371e5c31af7Sopenharmony_ci
2372e5c31af7Sopenharmony_ci				void main()
2373e5c31af7Sopenharmony_ci				{
2374e5c31af7Sopenharmony_ci					${SETUP}
2375e5c31af7Sopenharmony_ci					float result;
2376e5c31af7Sopenharmony_ci					foo1(result);
2377e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2378e5c31af7Sopenharmony_ci					foo2(result);
2379e5c31af7Sopenharmony_ci					${OUTPUT}
2380e5c31af7Sopenharmony_ci				}
2381e5c31af7Sopenharmony_ci			""
2382e5c31af7Sopenharmony_ci		end
2383e5c31af7Sopenharmony_ci		case parameter_precision
2384e5c31af7Sopenharmony_ci			expect pass
2385e5c31af7Sopenharmony_ci			version 300 es
2386e5c31af7Sopenharmony_ci			values {}
2387e5c31af7Sopenharmony_ci
2388e5c31af7Sopenharmony_ci			both ""
2389e5c31af7Sopenharmony_ci				#version 300 es
2390e5c31af7Sopenharmony_ci				precision mediump float;
2391e5c31af7Sopenharmony_ci				${DECLARATIONS}
2392e5c31af7Sopenharmony_ci
2393e5c31af7Sopenharmony_ci				float foo0 (in lowp float x)
2394e5c31af7Sopenharmony_ci				{
2395e5c31af7Sopenharmony_ci					return x + 1.0;
2396e5c31af7Sopenharmony_ci				}
2397e5c31af7Sopenharmony_ci
2398e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
2399e5c31af7Sopenharmony_ci				{
2400e5c31af7Sopenharmony_ci					x = 1.0;
2401e5c31af7Sopenharmony_ci				}
2402e5c31af7Sopenharmony_ci
2403e5c31af7Sopenharmony_ci				float foo2 (inout highp float x)
2404e5c31af7Sopenharmony_ci				{
2405e5c31af7Sopenharmony_ci					return x + 1.0;
2406e5c31af7Sopenharmony_ci				}
2407e5c31af7Sopenharmony_ci
2408e5c31af7Sopenharmony_ci				void main()
2409e5c31af7Sopenharmony_ci				{
2410e5c31af7Sopenharmony_ci					${SETUP}
2411e5c31af7Sopenharmony_ci					float result;
2412e5c31af7Sopenharmony_ci					foo1(result);
2413e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2414e5c31af7Sopenharmony_ci					foo2(result);
2415e5c31af7Sopenharmony_ci					${OUTPUT}
2416e5c31af7Sopenharmony_ci				}
2417e5c31af7Sopenharmony_ci			""
2418e5c31af7Sopenharmony_ci		end
2419e5c31af7Sopenharmony_ci
2420e5c31af7Sopenharmony_ci	end # valid
2421e5c31af7Sopenharmony_ci	group invalid "Invalid orderings."
2422e5c31af7Sopenharmony_ci
2423e5c31af7Sopenharmony_ci		case storage_precision_parameter
2424e5c31af7Sopenharmony_ci			expect compile_fail
2425e5c31af7Sopenharmony_ci			version 300 es
2426e5c31af7Sopenharmony_ci			values {}
2427e5c31af7Sopenharmony_ci
2428e5c31af7Sopenharmony_ci			both ""
2429e5c31af7Sopenharmony_ci				#version 300 es
2430e5c31af7Sopenharmony_ci				precision mediump float;
2431e5c31af7Sopenharmony_ci				${DECLARATIONS}
2432e5c31af7Sopenharmony_ci
2433e5c31af7Sopenharmony_ci				float foo0 (const lowp in float x)
2434e5c31af7Sopenharmony_ci				{
2435e5c31af7Sopenharmony_ci					return x + 1.0;
2436e5c31af7Sopenharmony_ci				}
2437e5c31af7Sopenharmony_ci
2438e5c31af7Sopenharmony_ci				void foo1 ( mediump out float x)
2439e5c31af7Sopenharmony_ci				{
2440e5c31af7Sopenharmony_ci					x = 1.0;
2441e5c31af7Sopenharmony_ci				}
2442e5c31af7Sopenharmony_ci
2443e5c31af7Sopenharmony_ci				float foo2 ( highp inout float x)
2444e5c31af7Sopenharmony_ci				{
2445e5c31af7Sopenharmony_ci					return x + 1.0;
2446e5c31af7Sopenharmony_ci				}
2447e5c31af7Sopenharmony_ci
2448e5c31af7Sopenharmony_ci				void main()
2449e5c31af7Sopenharmony_ci				{
2450e5c31af7Sopenharmony_ci					${SETUP}
2451e5c31af7Sopenharmony_ci					float result;
2452e5c31af7Sopenharmony_ci					foo1(result);
2453e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2454e5c31af7Sopenharmony_ci					foo2(result);
2455e5c31af7Sopenharmony_ci					${OUTPUT}
2456e5c31af7Sopenharmony_ci				}
2457e5c31af7Sopenharmony_ci			""
2458e5c31af7Sopenharmony_ci		end
2459e5c31af7Sopenharmony_ci		case parameter_storage_precision
2460e5c31af7Sopenharmony_ci			expect compile_fail
2461e5c31af7Sopenharmony_ci			version 300 es
2462e5c31af7Sopenharmony_ci			values {}
2463e5c31af7Sopenharmony_ci
2464e5c31af7Sopenharmony_ci			both ""
2465e5c31af7Sopenharmony_ci				#version 300 es
2466e5c31af7Sopenharmony_ci				precision mediump float;
2467e5c31af7Sopenharmony_ci				${DECLARATIONS}
2468e5c31af7Sopenharmony_ci
2469e5c31af7Sopenharmony_ci				float foo0 (in const lowp float x)
2470e5c31af7Sopenharmony_ci				{
2471e5c31af7Sopenharmony_ci					return x + 1.0;
2472e5c31af7Sopenharmony_ci				}
2473e5c31af7Sopenharmony_ci
2474e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
2475e5c31af7Sopenharmony_ci				{
2476e5c31af7Sopenharmony_ci					x = 1.0;
2477e5c31af7Sopenharmony_ci				}
2478e5c31af7Sopenharmony_ci
2479e5c31af7Sopenharmony_ci				float foo2 (inout highp float x)
2480e5c31af7Sopenharmony_ci				{
2481e5c31af7Sopenharmony_ci					return x + 1.0;
2482e5c31af7Sopenharmony_ci				}
2483e5c31af7Sopenharmony_ci
2484e5c31af7Sopenharmony_ci				void main()
2485e5c31af7Sopenharmony_ci				{
2486e5c31af7Sopenharmony_ci					${SETUP}
2487e5c31af7Sopenharmony_ci					float result;
2488e5c31af7Sopenharmony_ci					foo1(result);
2489e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2490e5c31af7Sopenharmony_ci					foo2(result);
2491e5c31af7Sopenharmony_ci					${OUTPUT}
2492e5c31af7Sopenharmony_ci				}
2493e5c31af7Sopenharmony_ci			""
2494e5c31af7Sopenharmony_ci		end
2495e5c31af7Sopenharmony_ci		case parameter_precision_storage
2496e5c31af7Sopenharmony_ci			expect compile_fail
2497e5c31af7Sopenharmony_ci			version 300 es
2498e5c31af7Sopenharmony_ci			values {}
2499e5c31af7Sopenharmony_ci
2500e5c31af7Sopenharmony_ci			both ""
2501e5c31af7Sopenharmony_ci				#version 300 es
2502e5c31af7Sopenharmony_ci				precision mediump float;
2503e5c31af7Sopenharmony_ci				${DECLARATIONS}
2504e5c31af7Sopenharmony_ci
2505e5c31af7Sopenharmony_ci				float foo0 (in lowp const float x)
2506e5c31af7Sopenharmony_ci				{
2507e5c31af7Sopenharmony_ci					return x + 1.0;
2508e5c31af7Sopenharmony_ci				}
2509e5c31af7Sopenharmony_ci
2510e5c31af7Sopenharmony_ci				void foo1 (out mediump float x)
2511e5c31af7Sopenharmony_ci				{
2512e5c31af7Sopenharmony_ci					x = 1.0;
2513e5c31af7Sopenharmony_ci				}
2514e5c31af7Sopenharmony_ci
2515e5c31af7Sopenharmony_ci				float foo2 (inout highp float x)
2516e5c31af7Sopenharmony_ci				{
2517e5c31af7Sopenharmony_ci					return x + 1.0;
2518e5c31af7Sopenharmony_ci				}
2519e5c31af7Sopenharmony_ci
2520e5c31af7Sopenharmony_ci				void main()
2521e5c31af7Sopenharmony_ci				{
2522e5c31af7Sopenharmony_ci					${SETUP}
2523e5c31af7Sopenharmony_ci					float result;
2524e5c31af7Sopenharmony_ci					foo1(result);
2525e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2526e5c31af7Sopenharmony_ci					foo2(result);
2527e5c31af7Sopenharmony_ci					${OUTPUT}
2528e5c31af7Sopenharmony_ci				}
2529e5c31af7Sopenharmony_ci			""
2530e5c31af7Sopenharmony_ci		end
2531e5c31af7Sopenharmony_ci		case precision_storage_parameter
2532e5c31af7Sopenharmony_ci			expect compile_fail
2533e5c31af7Sopenharmony_ci			version 300 es
2534e5c31af7Sopenharmony_ci			values {}
2535e5c31af7Sopenharmony_ci
2536e5c31af7Sopenharmony_ci			both ""
2537e5c31af7Sopenharmony_ci				#version 300 es
2538e5c31af7Sopenharmony_ci				precision mediump float;
2539e5c31af7Sopenharmony_ci				${DECLARATIONS}
2540e5c31af7Sopenharmony_ci
2541e5c31af7Sopenharmony_ci				float foo0 (lowp const in float x)
2542e5c31af7Sopenharmony_ci				{
2543e5c31af7Sopenharmony_ci					return x + 1.0;
2544e5c31af7Sopenharmony_ci				}
2545e5c31af7Sopenharmony_ci
2546e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
2547e5c31af7Sopenharmony_ci				{
2548e5c31af7Sopenharmony_ci					x = 1.0;
2549e5c31af7Sopenharmony_ci				}
2550e5c31af7Sopenharmony_ci
2551e5c31af7Sopenharmony_ci				float foo2 (highp inout float x)
2552e5c31af7Sopenharmony_ci				{
2553e5c31af7Sopenharmony_ci					return x + 1.0;
2554e5c31af7Sopenharmony_ci				}
2555e5c31af7Sopenharmony_ci
2556e5c31af7Sopenharmony_ci				void main()
2557e5c31af7Sopenharmony_ci				{
2558e5c31af7Sopenharmony_ci					${SETUP}
2559e5c31af7Sopenharmony_ci					float result;
2560e5c31af7Sopenharmony_ci					foo1(result);
2561e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2562e5c31af7Sopenharmony_ci					foo2(result);
2563e5c31af7Sopenharmony_ci					${OUTPUT}
2564e5c31af7Sopenharmony_ci				}
2565e5c31af7Sopenharmony_ci			""
2566e5c31af7Sopenharmony_ci		end
2567e5c31af7Sopenharmony_ci		case precision_parameter_storage
2568e5c31af7Sopenharmony_ci			expect compile_fail
2569e5c31af7Sopenharmony_ci			version 300 es
2570e5c31af7Sopenharmony_ci			values {}
2571e5c31af7Sopenharmony_ci
2572e5c31af7Sopenharmony_ci			both ""
2573e5c31af7Sopenharmony_ci				#version 300 es
2574e5c31af7Sopenharmony_ci				precision mediump float;
2575e5c31af7Sopenharmony_ci				${DECLARATIONS}
2576e5c31af7Sopenharmony_ci
2577e5c31af7Sopenharmony_ci				float foo0 (lowp in const float x)
2578e5c31af7Sopenharmony_ci				{
2579e5c31af7Sopenharmony_ci					return x + 1.0;
2580e5c31af7Sopenharmony_ci				}
2581e5c31af7Sopenharmony_ci
2582e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
2583e5c31af7Sopenharmony_ci				{
2584e5c31af7Sopenharmony_ci					x = 1.0;
2585e5c31af7Sopenharmony_ci				}
2586e5c31af7Sopenharmony_ci
2587e5c31af7Sopenharmony_ci				float foo2 (highp inout float x)
2588e5c31af7Sopenharmony_ci				{
2589e5c31af7Sopenharmony_ci					return x + 1.0;
2590e5c31af7Sopenharmony_ci				}
2591e5c31af7Sopenharmony_ci
2592e5c31af7Sopenharmony_ci				void main()
2593e5c31af7Sopenharmony_ci				{
2594e5c31af7Sopenharmony_ci					${SETUP}
2595e5c31af7Sopenharmony_ci					float result;
2596e5c31af7Sopenharmony_ci					foo1(result);
2597e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2598e5c31af7Sopenharmony_ci					foo2(result);
2599e5c31af7Sopenharmony_ci					${OUTPUT}
2600e5c31af7Sopenharmony_ci				}
2601e5c31af7Sopenharmony_ci			""
2602e5c31af7Sopenharmony_ci		end
2603e5c31af7Sopenharmony_ci		case parameter_storage
2604e5c31af7Sopenharmony_ci			expect compile_fail
2605e5c31af7Sopenharmony_ci			version 300 es
2606e5c31af7Sopenharmony_ci			values {}
2607e5c31af7Sopenharmony_ci
2608e5c31af7Sopenharmony_ci			both ""
2609e5c31af7Sopenharmony_ci				#version 300 es
2610e5c31af7Sopenharmony_ci				precision mediump float;
2611e5c31af7Sopenharmony_ci				${DECLARATIONS}
2612e5c31af7Sopenharmony_ci
2613e5c31af7Sopenharmony_ci				float foo0 (in const float x)
2614e5c31af7Sopenharmony_ci				{
2615e5c31af7Sopenharmony_ci					return x + 1.0;
2616e5c31af7Sopenharmony_ci				}
2617e5c31af7Sopenharmony_ci
2618e5c31af7Sopenharmony_ci				void foo1 (out float x)
2619e5c31af7Sopenharmony_ci				{
2620e5c31af7Sopenharmony_ci					x = 1.0;
2621e5c31af7Sopenharmony_ci				}
2622e5c31af7Sopenharmony_ci
2623e5c31af7Sopenharmony_ci				float foo2 (inout float x)
2624e5c31af7Sopenharmony_ci				{
2625e5c31af7Sopenharmony_ci					return x + 1.0;
2626e5c31af7Sopenharmony_ci				}
2627e5c31af7Sopenharmony_ci
2628e5c31af7Sopenharmony_ci				void main()
2629e5c31af7Sopenharmony_ci				{
2630e5c31af7Sopenharmony_ci					${SETUP}
2631e5c31af7Sopenharmony_ci					float result;
2632e5c31af7Sopenharmony_ci					foo1(result);
2633e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2634e5c31af7Sopenharmony_ci					foo2(result);
2635e5c31af7Sopenharmony_ci					${OUTPUT}
2636e5c31af7Sopenharmony_ci				}
2637e5c31af7Sopenharmony_ci			""
2638e5c31af7Sopenharmony_ci		end
2639e5c31af7Sopenharmony_ci		case precision_storage
2640e5c31af7Sopenharmony_ci			expect compile_fail
2641e5c31af7Sopenharmony_ci			version 300 es
2642e5c31af7Sopenharmony_ci			values {}
2643e5c31af7Sopenharmony_ci
2644e5c31af7Sopenharmony_ci			both ""
2645e5c31af7Sopenharmony_ci				#version 300 es
2646e5c31af7Sopenharmony_ci				precision mediump float;
2647e5c31af7Sopenharmony_ci				${DECLARATIONS}
2648e5c31af7Sopenharmony_ci
2649e5c31af7Sopenharmony_ci				float foo0 (lowp const float x)
2650e5c31af7Sopenharmony_ci				{
2651e5c31af7Sopenharmony_ci					return x + 1.0;
2652e5c31af7Sopenharmony_ci				}
2653e5c31af7Sopenharmony_ci
2654e5c31af7Sopenharmony_ci				void foo1 (mediump float x)
2655e5c31af7Sopenharmony_ci				{
2656e5c31af7Sopenharmony_ci					x = 1.0;
2657e5c31af7Sopenharmony_ci				}
2658e5c31af7Sopenharmony_ci
2659e5c31af7Sopenharmony_ci				float foo2 (highp float x)
2660e5c31af7Sopenharmony_ci				{
2661e5c31af7Sopenharmony_ci					return x + 1.0;
2662e5c31af7Sopenharmony_ci				}
2663e5c31af7Sopenharmony_ci
2664e5c31af7Sopenharmony_ci				void main()
2665e5c31af7Sopenharmony_ci				{
2666e5c31af7Sopenharmony_ci					${SETUP}
2667e5c31af7Sopenharmony_ci					float result;
2668e5c31af7Sopenharmony_ci					foo1(result);
2669e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2670e5c31af7Sopenharmony_ci					foo2(result);
2671e5c31af7Sopenharmony_ci					${OUTPUT}
2672e5c31af7Sopenharmony_ci				}
2673e5c31af7Sopenharmony_ci			""
2674e5c31af7Sopenharmony_ci		end
2675e5c31af7Sopenharmony_ci		case precision_parameter
2676e5c31af7Sopenharmony_ci			expect compile_fail
2677e5c31af7Sopenharmony_ci			version 300 es
2678e5c31af7Sopenharmony_ci			values {}
2679e5c31af7Sopenharmony_ci
2680e5c31af7Sopenharmony_ci			both ""
2681e5c31af7Sopenharmony_ci				#version 300 es
2682e5c31af7Sopenharmony_ci				precision mediump float;
2683e5c31af7Sopenharmony_ci				${DECLARATIONS}
2684e5c31af7Sopenharmony_ci
2685e5c31af7Sopenharmony_ci				float foo0 (lowp in float x)
2686e5c31af7Sopenharmony_ci				{
2687e5c31af7Sopenharmony_ci					return x + 1.0;
2688e5c31af7Sopenharmony_ci				}
2689e5c31af7Sopenharmony_ci
2690e5c31af7Sopenharmony_ci				void foo1 (mediump out float x)
2691e5c31af7Sopenharmony_ci				{
2692e5c31af7Sopenharmony_ci					x = 1.0;
2693e5c31af7Sopenharmony_ci				}
2694e5c31af7Sopenharmony_ci
2695e5c31af7Sopenharmony_ci				float foo2 (highp inout float x)
2696e5c31af7Sopenharmony_ci				{
2697e5c31af7Sopenharmony_ci					return x + 1.0;
2698e5c31af7Sopenharmony_ci				}
2699e5c31af7Sopenharmony_ci
2700e5c31af7Sopenharmony_ci				void main()
2701e5c31af7Sopenharmony_ci				{
2702e5c31af7Sopenharmony_ci					${SETUP}
2703e5c31af7Sopenharmony_ci					float result;
2704e5c31af7Sopenharmony_ci					foo1(result);
2705e5c31af7Sopenharmony_ci					float x0 = foo0(1.0);
2706e5c31af7Sopenharmony_ci					foo2(result);
2707e5c31af7Sopenharmony_ci					${OUTPUT}
2708e5c31af7Sopenharmony_ci				}
2709e5c31af7Sopenharmony_ci			""
2710e5c31af7Sopenharmony_ci		end
2711e5c31af7Sopenharmony_ci
2712e5c31af7Sopenharmony_ci	end # invalid
2713e5c31af7Sopenharmony_ci
2714e5c31af7Sopenharmony_ciend # parameters
2715