
# Varying tests
group varying "Varying linkage"
    group component "Component qualifier"
        group vert_in "Vertex shader input"
            group vec2 "vec2"
                case as_float_float
                    version 440 core
                    desc "Read vertex input (vec2) as float float."
                    output_color vec2
                    values
                    {
                        input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ];
                        output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 0) out vec2 var0;

                        void main()
                        {
                            vec2 in0 = vec2(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec2 var0;
                        layout(location = 0) out vec2 dEQP_FragColor;

                        void main()
                        {
                            vec2 out0 = var0;
                            out0 /= vec2(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_float_unused
                    version 440 core
                    desc "Read vertex input (vec2) as float float. Read unused fourth component."
                    output_color vec2
                    values
                    {
                        input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ];
                        output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 1, component = 3) in float in0_3;
                        layout(location = 0) out vec2 var0;

                        void main()
                        {
                            vec2 in0 = vec2(in0_0, in0_1);
                            var0 = in0_3 * in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec2 var0;
                        layout(location = 0) out vec2 dEQP_FragColor;

                        void main()
                        {
                            vec2 out0 = var0;
                            out0 /= vec2(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group vec3 "vec3"
                case as_float_float_float
                    version 440 core
                    desc "Read vertex input (vec3) as float float float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 1, component = 2) in float in0_2;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_float_float_unused
                    version 440 core
                    desc "Read vertex input (vec3) as float float float. Read unused fourth component."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 1, component = 2) in float in0_2;
                        layout(location = 1, component = 3) in float in0_3;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1, in0_2);
                            var0 = in0_3 * in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec2
                    version 440 core
                    desc "Read vertex input (vec3) as float vec2."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in vec2 in0_1;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec2_unused
                    version 440 core
                    desc "Read vertex input (vec3) as float vec2. Read unused fourth component."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in vec2 in0_1;
                        layout(location = 1, component = 3) in float in0_3;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1);
                            var0 = in0_3 * in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_float
                    version 440 core
                    desc "Read vertex input (vec3) as vec2 float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in vec2 in0_0;
                        layout(location = 1, component = 2) in float in0_1;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_float_unused
                    version 440 core
                    desc "Read vertex input (vec3) as vec2 float. Read unused fourth component."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in vec2 in0_0;
                        layout(location = 1, component = 2) in float in0_1;
                        layout(location = 1, component = 3) in float in0_3;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            vec3 in0 = vec3(in0_0, in0_1);
                            var0 = in0_3 * in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group vec4 "vec4"
                case as_float_float_float_float
                    version 440 core
                    desc "Read vertex input (vec4) as float float float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 1, component = 2) in float in0_2;
                        layout(location = 1, component = 3) in float in0_3;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1, in0_2, in0_3);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_float_vec2
                    version 440 core
                    desc "Read vertex input (vec4) as float float vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in float in0_1;
                        layout(location = 1, component = 2) in vec2 in0_2;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec2_float
                    version 440 core
                    desc "Read vertex input (vec4) as float vec2 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in vec2 in0_1;
                        layout(location = 1, component = 3) in float in0_2;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec3
                    version 440 core
                    desc "Read vertex input (vec4) as float vec3."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in float in0_0;
                        layout(location = 1, component = 1) in vec3 in0_1;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_float_float
                    version 440 core
                    desc "Read vertex input (vec4) as vec2 float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in vec2 in0_0;
                        layout(location = 1, component = 2) in float in0_1;
                        layout(location = 1, component = 3) in float in0_2;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_vec2
                    version 440 core
                    desc "Read vertex input (vec4) as vec2 vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in vec2 in0_0;
                        layout(location = 1, component = 2) in vec2 in0_1;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec3_float
                    version 440 core
                    desc "Read vertex input (vec4) as vec3 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in vec3 in0_0;
                        layout(location = 1, component = 3) in float in0_1;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            vec4 in0 = vec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group ivec2 "ivec2"
                case as_int_int
                    version 440 core
                    desc "Read vertex input (ivec2) as int int."
                    output_color ivec2
                    values
                    {
                        input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ];
                        output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in int in0_1;
                        layout(location = 0) out ivec2 var0;

                        void main()
                        {
                            ivec2 in0 = ivec2(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec2 var0;
                        layout(location = 0) out ivec2 dEQP_FragColor;

                        void main()
                        {
                            ivec2 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_int_unused
                    version 440 core
                    desc "Read vertex input (ivec2) as int int. Read unused fourth component."
                    output_color ivec2
                    values
                    {
                        input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ];
                        output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in int in0_1;
                        layout(location = 1, component = 3) in int in0_3;
                        layout(location = 0) out ivec2 var0;

                        void main()
                        {
                            ivec2 in0 = ivec2(in0_0, in0_1);
                            var0 = in0_3 * in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec2 var0;
                        layout(location = 0) out ivec2 dEQP_FragColor;

                        void main()
                        {
                            ivec2 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group ivec4 "ivec4"
                case as_int_int_int_int
                    version 440 core
                    desc "Read vertex input (ivec4) as int int int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in int in0_1;
                        layout(location = 1, component = 2) in int in0_2;
                        layout(location = 1, component = 3) in int in0_3;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1, in0_2, in0_3);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_int_ivec2
                    version 440 core
                    desc "Read vertex input (ivec4) as int int ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in int in0_1;
                        layout(location = 1, component = 2) in ivec2 in0_2;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_ivec2_int
                    version 440 core
                    desc "Read vertex input (ivec4) as int ivec2 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in ivec2 in0_1;
                        layout(location = 1, component = 3) in int in0_2;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_ivec3
                    version 440 core
                    desc "Read vertex input (ivec4) as int ivec3."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in int in0_0;
                        layout(location = 1, component = 1) in ivec3 in0_1;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec2_int_int
                    version 440 core
                    desc "Read vertex input (ivec4) as ivec2 int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in ivec2 in0_0;
                        layout(location = 1, component = 2) in int in0_1;
                        layout(location = 1, component = 3) in int in0_2;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1, in0_2);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec2_ivec2
                    version 440 core
                    desc "Read vertex input (ivec4) as ivec2 ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in ivec2 in0_0;
                        layout(location = 1, component = 2) in ivec2 in0_1;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec3_int
                    version 440 core
                    desc "Read vertex input (ivec4) as ivec3 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1, component = 0) in ivec3 in0_0;
                        layout(location = 1, component = 3) in int in0_1;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            ivec4 in0 = ivec4(in0_0, in0_1);
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
        end
        group vert_out_frag_in "Vertex shader output and fragment shader input"
            group vec2 "vec2"
                case as_float_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec2) as float float."
                    output_color vec2
                    values
                    {
                        input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ];
                        output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec2 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out float var0_1;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in float var0_1;
                        layout(location = 0) out vec2 dEQP_FragColor;

                        void main()
                        {
                            vec2 var0 = vec2(var0_0, var0_1);
                            vec2 out0 = var0;
                            out0 /= vec2(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group vec3 "vec3"
                case as_float_float_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec3) as float float float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out float var0_1;
                        layout(location = 0, component = 2) out float var0_2;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            var0_2 = in0.z + in0.z;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in float var0_1;
                        layout(location = 0, component = 2) in float var0_2;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 var0 = vec3(var0_0, var0_1, var0_2);
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec2
                    version 440 core
                    desc "Write vertex output and read fragment input (vec3) as float vec2."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out vec2 var0_1;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.yz + in0.yz;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in vec2 var0_1;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 var0 = vec3(var0_0, var0_1);
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec3) as vec2 float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0, component = 0) out vec2 var0_0;
                        layout(location = 0, component = 2) out float var0_1;

                        void main()
                        {
                            var0_0 = in0.xy + in0.xy;
                            var0_1 = in0.z + in0.z;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in vec2 var0_0;
                        layout(location = 0, component = 2) in float var0_1;
                        layout(location = 0) out vec3 dEQP_FragColor;

                        void main()
                        {
                            vec3 var0 = vec3(var0_0, var0_1);
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group vec4 "vec4"
                case as_float_float_float_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as float float float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out float var0_1;
                        layout(location = 0, component = 2) out float var0_2;
                        layout(location = 0, component = 3) out float var0_3;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            var0_2 = in0.z + in0.z;
                            var0_3 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in float var0_1;
                        layout(location = 0, component = 2) in float var0_2;
                        layout(location = 0, component = 3) in float var0_3;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1, var0_2, var0_3);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_float_vec2
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as float float vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out float var0_1;
                        layout(location = 0, component = 2) out vec2 var0_2;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            var0_2 = in0.zw + in0.zw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in float var0_1;
                        layout(location = 0, component = 2) in vec2 var0_2;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1, var0_2);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec2_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as float vec2 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out vec2 var0_1;
                        layout(location = 0, component = 3) out float var0_2;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.yz + in0.yz;
                            var0_2 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in vec2 var0_1;
                        layout(location = 0, component = 3) in float var0_2;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1, var0_2);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_float_vec3
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as float vec3."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out float var0_0;
                        layout(location = 0, component = 1) out vec3 var0_1;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.yzw + in0.yzw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in float var0_0;
                        layout(location = 0, component = 1) in vec3 var0_1;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_float_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as vec2 float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out vec2 var0_0;
                        layout(location = 0, component = 2) out float var0_1;
                        layout(location = 0, component = 3) out float var0_2;

                        void main()
                        {
                            var0_0 = in0.xy + in0.xy;
                            var0_1 = in0.z + in0.z;
                            var0_2 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in vec2 var0_0;
                        layout(location = 0, component = 2) in float var0_1;
                        layout(location = 0, component = 3) in float var0_2;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1, var0_2);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec2_vec2
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as vec2 vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out vec2 var0_0;
                        layout(location = 0, component = 2) out vec2 var0_1;

                        void main()
                        {
                            var0_0 = in0.xy + in0.xy;
                            var0_1 = in0.zw + in0.zw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in vec2 var0_0;
                        layout(location = 0, component = 2) in vec2 var0_1;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_vec3_float
                    version 440 core
                    desc "Write vertex output and read fragment input (vec4) as vec3 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0, component = 0) out vec3 var0_0;
                        layout(location = 0, component = 3) out float var0_1;

                        void main()
                        {
                            var0_0 = in0.xyz + in0.xyz;
                            var0_1 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) in vec3 var0_0;
                        layout(location = 0, component = 3) in float var0_1;
                        layout(location = 0) out vec4 dEQP_FragColor;

                        void main()
                        {
                            vec4 var0 = vec4(var0_0, var0_1);
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group ivec2 "ivec2"
                case as_int_int
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec2) as int int."
                    output_color ivec2
                    values
                    {
                        input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ];
                        output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec2 in0;
                        layout(location = 0, component = 0) out int var0_0;
                        layout(location = 0, component = 1) out int var0_1;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in int var0_0;
                        layout(location = 0, component = 1) flat in int var0_1;
                        layout(location = 0) out ivec2 dEQP_FragColor;

                        void main()
                        {
                            ivec2 var0 = ivec2(var0_0, var0_1);
                            ivec2 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
            group ivec4 "ivec4"
                case as_int_int_int_int
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as int int int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out int var0_0;
                        layout(location = 0, component = 1) out int var0_1;
                        layout(location = 0, component = 2) out int var0_2;
                        layout(location = 0, component = 3) out int var0_3;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            var0_2 = in0.z + in0.z;
                            var0_3 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in int var0_0;
                        layout(location = 0, component = 1) flat in int var0_1;
                        layout(location = 0, component = 2) flat in int var0_2;
                        layout(location = 0, component = 3) flat in int var0_3;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1, var0_2, var0_3);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_int_ivec2
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as int int ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out int var0_0;
                        layout(location = 0, component = 1) out int var0_1;
                        layout(location = 0, component = 2) out ivec2 var0_2;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.y + in0.y;
                            var0_2 = in0.zw + in0.zw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in int var0_0;
                        layout(location = 0, component = 1) flat in int var0_1;
                        layout(location = 0, component = 2) flat in ivec2 var0_2;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1, var0_2);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_ivec2_int
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as int ivec2 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out int var0_0;
                        layout(location = 0, component = 1) out ivec2 var0_1;
                        layout(location = 0, component = 3) out int var0_2;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.yz + in0.yz;
                            var0_2 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in int var0_0;
                        layout(location = 0, component = 1) flat in ivec2 var0_1;
                        layout(location = 0, component = 3) flat in int var0_2;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1, var0_2);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_int_ivec3
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as int ivec3."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out int var0_0;
                        layout(location = 0, component = 1) out ivec3 var0_1;

                        void main()
                        {
                            var0_0 = in0.x + in0.x;
                            var0_1 = in0.yzw + in0.yzw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in int var0_0;
                        layout(location = 0, component = 1) flat in ivec3 var0_1;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec2_int_int
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as ivec2 int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out ivec2 var0_0;
                        layout(location = 0, component = 2) out int var0_1;
                        layout(location = 0, component = 3) out int var0_2;

                        void main()
                        {
                            var0_0 = in0.xy + in0.xy;
                            var0_1 = in0.z + in0.z;
                            var0_2 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in ivec2 var0_0;
                        layout(location = 0, component = 2) flat in int var0_1;
                        layout(location = 0, component = 3) flat in int var0_2;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1, var0_2);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec2_ivec2
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as ivec2 ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out ivec2 var0_0;
                        layout(location = 0, component = 2) out ivec2 var0_1;

                        void main()
                        {
                            var0_0 = in0.xy + in0.xy;
                            var0_1 = in0.zw + in0.zw;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in ivec2 var0_0;
                        layout(location = 0, component = 2) flat in ivec2 var0_1;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
                case as_ivec3_int
                    version 440 core
                    desc "Write vertex output and read fragment input (ivec4) as ivec3 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0, component = 0) out ivec3 var0_0;
                        layout(location = 0, component = 3) out int var0_1;

                        void main()
                        {
                            var0_0 = in0.xyz + in0.xyz;
                            var0_1 = in0.w + in0.w;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0, component = 0) flat in ivec3 var0_0;
                        layout(location = 0, component = 3) flat in int var0_1;
                        layout(location = 0) out ivec4 dEQP_FragColor;

                        void main()
                        {
                            ivec4 var0 = ivec4(var0_0, var0_1);
                            ivec4 out0 = var0;
                            dEQP_FragColor = out0;
                        }
                    ""
                end
            end
        end
        group frag_out "Fragment shader output"
            group vec2 "vec2"
                case as_float_float
                    version 440 core
                    desc "Write fragment output (vec2) as float float."
                    output_color vec2
                    values
                    {
                        input vec2 in0 = [ vec2(1.0, 11.0) | vec2(1.0, 9.0) | vec2(13.0, 7.0) | vec2(8.0, 3.0) ];
                        output vec2 out0 = [ vec2(2.0, 22.0) | vec2(2.0, 18.0) | vec2(26.0, 14.0) | vec2(16.0, 6.0) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec2 in0;
                        layout(location = 0) out vec2 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec2 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out float dEQP_FragColor_1;

                        void main()
                        {
                            vec2 out0 = var0;
                            out0 /= vec2(255.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                        }
                    ""
                end
            end
            group vec3 "vec3"
                case as_float_float_float
                    version 440 core
                    desc "Write fragment output (vec3) as float float float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out float dEQP_FragColor_1;
                        layout(location = 0, component = 2) out float dEQP_FragColor_2;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                            dEQP_FragColor_2 = out0.z;
                        }
                    ""
                end
                case as_float_vec2
                    version 440 core
                    desc "Write fragment output (vec3) as float vec2."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out vec2 dEQP_FragColor_1;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.yz;
                        }
                    ""
                end
                case as_vec2_float
                    version 440 core
                    desc "Write fragment output (vec3) as vec2 float."
                    output_color vec3
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec3 in0;
                        layout(location = 0) out vec3 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec3 var0;
                        layout(location = 0, component = 0) out vec2 dEQP_FragColor_0;
                        layout(location = 0, component = 2) out float dEQP_FragColor_1;

                        void main()
                        {
                            vec3 out0 = var0;
                            out0 /= vec3(31.0, 63.0, 31.0);
                            dEQP_FragColor_0 = out0.xy;
                            dEQP_FragColor_1 = out0.z;
                        }
                    ""
                end
            end
            group vec4 "vec4"
                case as_float_float_float_float
                    version 440 core
                    desc "Write fragment output (vec4) as float float float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out float dEQP_FragColor_1;
                        layout(location = 0, component = 2) out float dEQP_FragColor_2;
                        layout(location = 0, component = 3) out float dEQP_FragColor_3;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                            dEQP_FragColor_2 = out0.z;
                            dEQP_FragColor_3 = out0.w;
                        }
                    ""
                end
                case as_float_float_vec2
                    version 440 core
                    desc "Write fragment output (vec4) as float float vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out float dEQP_FragColor_1;
                        layout(location = 0, component = 2) out vec2 dEQP_FragColor_2;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                            dEQP_FragColor_2 = out0.zw;
                        }
                    ""
                end
                case as_float_vec2_float
                    version 440 core
                    desc "Write fragment output (vec4) as float vec2 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out vec2 dEQP_FragColor_1;
                        layout(location = 0, component = 3) out float dEQP_FragColor_2;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.yz;
                            dEQP_FragColor_2 = out0.w;
                        }
                    ""
                end
                case as_float_vec3
                    version 440 core
                    desc "Write fragment output (vec4) as float vec3."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out float dEQP_FragColor_0;
                        layout(location = 0, component = 1) out vec3 dEQP_FragColor_1;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.yzw;
                        }
                    ""
                end
                case as_vec2_float_float
                    version 440 core
                    desc "Write fragment output (vec4) as vec2 float float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out vec2 dEQP_FragColor_0;
                        layout(location = 0, component = 2) out float dEQP_FragColor_1;
                        layout(location = 0, component = 3) out float dEQP_FragColor_2;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.xy;
                            dEQP_FragColor_1 = out0.z;
                            dEQP_FragColor_2 = out0.w;
                        }
                    ""
                end
                case as_vec2_vec2
                    version 440 core
                    desc "Write fragment output (vec4) as vec2 vec2."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out vec2 dEQP_FragColor_0;
                        layout(location = 0, component = 2) out vec2 dEQP_FragColor_1;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.xy;
                            dEQP_FragColor_1 = out0.zw;
                        }
                    ""
                end
                case as_vec3_float
                    version 440 core
                    desc "Write fragment output (vec4) as vec3 float."
                    output_color vec4
                    values
                    {
                        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) ];
                        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) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in vec4 in0;
                        layout(location = 0) out vec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 var0;
                        layout(location = 0, component = 0) out vec3 dEQP_FragColor_0;
                        layout(location = 0, component = 3) out float dEQP_FragColor_1;

                        void main()
                        {
                            vec4 out0 = var0;
                            out0 /= vec4(255.0);
                            dEQP_FragColor_0 = out0.xyz;
                            dEQP_FragColor_1 = out0.w;
                        }
                    ""
                end
            end
            group ivec2 "ivec2"
                case as_int_int
                    version 440 core
                    desc "Write fragment output (ivec2) as int int."
                    output_color ivec2
                    values
                    {
                        input ivec2 in0 = [ ivec2(7, 13) | ivec2(9, 7) | ivec2(13, 1) | ivec2(15, 11) ];
                        output ivec2 out0 = [ ivec2(14, 26) | ivec2(18, 14) | ivec2(26, 2) | ivec2(30, 22) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec2 in0;
                        layout(location = 0) out ivec2 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec2 var0;
                        layout(location = 0, component = 0) out int dEQP_FragColor_0;
                        layout(location = 0, component = 1) out int dEQP_FragColor_1;

                        void main()
                        {
                            ivec2 out0 = var0;
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                        }
                    ""
                end
            end
            group ivec4 "ivec4"
                case as_int_int_int_int
                    version 440 core
                    desc "Write fragment output (ivec4) as int int int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out int dEQP_FragColor_0;
                        layout(location = 0, component = 1) out int dEQP_FragColor_1;
                        layout(location = 0, component = 2) out int dEQP_FragColor_2;
                        layout(location = 0, component = 3) out int dEQP_FragColor_3;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                            dEQP_FragColor_2 = out0.z;
                            dEQP_FragColor_3 = out0.w;
                        }
                    ""
                end
                case as_int_int_ivec2
                    version 440 core
                    desc "Write fragment output (ivec4) as int int ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out int dEQP_FragColor_0;
                        layout(location = 0, component = 1) out int dEQP_FragColor_1;
                        layout(location = 0, component = 2) out ivec2 dEQP_FragColor_2;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.y;
                            dEQP_FragColor_2 = out0.zw;
                        }
                    ""
                end
                case as_int_ivec2_int
                    version 440 core
                    desc "Write fragment output (ivec4) as int ivec2 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out int dEQP_FragColor_0;
                        layout(location = 0, component = 1) out ivec2 dEQP_FragColor_1;
                        layout(location = 0, component = 3) out int dEQP_FragColor_2;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.yz;
                            dEQP_FragColor_2 = out0.w;
                        }
                    ""
                end
                case as_int_ivec3
                    version 440 core
                    desc "Write fragment output (ivec4) as int ivec3."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out int dEQP_FragColor_0;
                        layout(location = 0, component = 1) out ivec3 dEQP_FragColor_1;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.x;
                            dEQP_FragColor_1 = out0.yzw;
                        }
                    ""
                end
                case as_ivec2_int_int
                    version 440 core
                    desc "Write fragment output (ivec4) as ivec2 int int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0;
                        layout(location = 0, component = 2) out int dEQP_FragColor_1;
                        layout(location = 0, component = 3) out int dEQP_FragColor_2;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.xy;
                            dEQP_FragColor_1 = out0.z;
                            dEQP_FragColor_2 = out0.w;
                        }
                    ""
                end
                case as_ivec2_ivec2
                    version 440 core
                    desc "Write fragment output (ivec4) as ivec2 ivec2."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out ivec2 dEQP_FragColor_0;
                        layout(location = 0, component = 2) out ivec2 dEQP_FragColor_1;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.xy;
                            dEQP_FragColor_1 = out0.zw;
                        }
                    ""
                end
                case as_ivec3_int
                    version 440 core
                    desc "Write fragment output (ivec4) as ivec3 int."
                    output_color ivec4
                    values
                    {
                        input ivec4 in0 = [ ivec4(2, 4, 13, 12) | ivec4(7, 3, 2, 11) | ivec4(6, 2, 9, 5) | ivec4(10, 15, 1, 9) ];
                        output ivec4 out0 = [ ivec4(4, 8, 26, 24) | ivec4(14, 6, 4, 22) | ivec4(12, 4, 18, 10) | ivec4(20, 30, 2, 18) ];
                    }
                    vertex ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) in vec4 dEQP_Position;
                        layout(location = 1) in ivec4 in0;
                        layout(location = 0) out ivec4 var0;

                        void main()
                        {
                            var0 = in0 + in0;
                            ${VERTEX_OUTPUT}
                        }
                    ""
                    fragment ""
                        #version 440 core
                        precision highp float;
                        precision highp int;
                        layout(location = 0) flat in ivec4 var0;
                        layout(location = 0, component = 0) out ivec3 dEQP_FragColor_0;
                        layout(location = 0, component = 3) out int dEQP_FragColor_1;

                        void main()
                        {
                            ivec4 out0 = var0;
                            dEQP_FragColor_0 = out0.xyz;
                            dEQP_FragColor_1 = out0.w;
                        }
                    ""
                end
            end
        end
    end
end
