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