# WARNING: This file is auto-generated. Do NOT modify it manually, but rather
# modify the generating script file. Otherwise changes will be lost!

group arithmetic "Arithmetic operations"

	group input_before_literal "Input before literal"

		group add "Addition"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 4 | 3 | 3 | 5 | 7 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + 2;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(3, 4) | uvec2(2, 3) | uvec2(2, 3) | uvec2(4, 5) | uvec2(6, 7) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(3, 4, 5) | uvec3(2, 3, 4) | uvec3(2, 3, 4) | uvec3(4, 5, 6) | uvec3(6, 7, 8) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(3, 4, 5, 6) | uvec4(2, 3, 4, 5) | uvec4(2, 3, 4, 5) | uvec4(4, 5, 6, 7) | uvec4(6, 7, 8, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + 2.0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(2, 4) | uvec2(3, 3) | uvec2(4, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(3, 3, 5) | uvec3(4, 9, 5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(3, 3, 5, 10) | uvec4(4, 9, 5, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # add
		group sub "Subtraction"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 0.0 | -1.0 | -1.0 | 1.0 | 3.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, -1.0) | vec2(0.0, -1.0) | vec2(2.0, 1.0) | vec2(4.0, 3.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(1.0, 0.0, -1.0) | vec3(0.0, -1.0, -2.0) | vec3(0.0, -1.0, -2.0) | vec3(2.0, 1.0, 0.0) | vec3(4.0, 3.0, 2.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(1.0, 0.0, -1.0, -2.0) | vec4(0.0, -1.0, -2.0, -3.0) | vec4(0.0, -1.0, -2.0, -3.0) | vec4(2.0, 1.0, 0.0, -1.0) | vec4(4.0, 3.0, 2.0, 1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ -1.0 | 1.0 | 2.0 | 5.0 | 9.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - 2.0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(0.0, -1.0) | vec2(2.0, 1.0) | vec2(3.0, 2.0) | vec2(6.0, 5.0) | vec2(10.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(0.0, -1.0, -2.0) | vec3(2.0, 1.0, 0.0) | vec3(3.0, 2.0, 1.0) | vec3(6.0, 5.0, 4.0) | vec3(10.0, 9.0, 8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(0.0, -1.0, -2.0, -3.0) | vec4(2.0, 1.0, 0.0, -1.0) | vec4(3.0, 2.0, 1.0, 0.0) | vec4(6.0, 5.0, 4.0, 3.0) | vec4(10.0, 9.0, 8.0, 7.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, -1.0) | vec2(2.0, 5.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(3.0, 4.0) | vec2(0.0, 11.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, -1.0, -1.0) | vec3(2.0, 5.0, -1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(1.0, 1.0, 2.0) | vec3(3.0, 4.0, -1.0) | vec3(0.0, 11.0, 4.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, -1.0, -1.0, 2.0) | vec4(2.0, 5.0, -1.0, 1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(1.0, 1.0, 2.0, 4.0) | vec4(3.0, 4.0, -1.0, 5.0) | vec4(0.0, 11.0, 4.0, 0.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 - vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # sub
		group mul "Multiplication"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * 2;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(5.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(5.0, 10.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(5.0, 10.0, 15.0, 20.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(2, 4) | uvec2(1, 2) | uvec2(1, 2) | uvec2(3, 6) | uvec2(5, 10) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(3, 6, 9) | uvec3(5, 10, 15) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(3, 6, 9, 12) | uvec4(5, 10, 15, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * 2.0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(4.0, 8.0) | vec2(7.0, 14.0) | vec2(11.0, 22.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(4.0, 8.0, 12.0) | vec3(7.0, 14.0, 21.0) | vec3(11.0, 22.0, 33.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(4.0, 8.0, 12.0, 16.0) | vec4(7.0, 14.0, 21.0, 28.0) | vec4(11.0, 22.0, 33.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(1, 4) | uvec2(2, 2) | uvec2(3, 14) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(1.0, 4.0) | vec2(2.0, 2.0) | vec2(3.0, 14.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(2.0, 6.0) | vec2(4.0, 12.0) | vec2(1.0, 26.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(1, 4, 9) | uvec3(2, 2, 6) | uvec3(3, 14, 6) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(1.0, 4.0, 9.0) | vec3(2.0, 2.0, 6.0) | vec3(3.0, 14.0, 6.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(2.0, 6.0, 15.0) | vec3(4.0, 12.0, 6.0) | vec3(1.0, 26.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(1, 4, 9, 16) | uvec4(2, 2, 6, 24) | uvec4(3, 14, 6, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(1.0, 4.0, 9.0, 16.0) | vec4(2.0, 2.0, 6.0, 24.0) | vec4(3.0, 14.0, 6.0, 20.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(2.0, 6.0, 15.0, 32.0) | vec4(4.0, 12.0, 6.0, 36.0) | vec4(1.0, 26.0, 21.0, 16.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # mul
		group div "Division"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 1.0 | 0.5 | 0.5 | 1.5 | 2.5 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 1 | 0 | 0 | 1 | 2 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / 2;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(2.0, 1.0) | vec2(1.0, 0.5) | vec2(1.0, 0.5) | vec2(3.0, 1.5) | vec2(5.0, 2.5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(2.0, 1.0, 0.666666666667) | vec3(1.0, 0.5, 0.333333333333) | vec3(1.0, 0.5, 0.333333333333) | vec3(3.0, 1.5, 1.0) | vec3(5.0, 2.5, 1.66666666667) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(2.0, 1.0, 0.666666666667, 0.5) | vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(3.0, 1.5, 1.0, 0.75) | vec4(5.0, 2.5, 1.66666666667, 1.25) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(2, 1) | uvec2(1, 0) | uvec2(1, 0) | uvec2(3, 1) | uvec2(5, 2) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(2, 1, 0) | uvec3(1, 0, 0) | uvec3(1, 0, 0) | uvec3(3, 1, 1) | uvec3(5, 2, 1) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(2, 1, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(3, 1, 1, 0) | uvec4(5, 2, 1, 1) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 0.5 | 1.5 | 2.0 | 3.5 | 5.5 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / 2.0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(1.0, 0.5) | vec2(3.0, 1.5) | vec2(4.0, 2.0) | vec2(7.0, 3.5) | vec2(11.0, 5.5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(1.0, 0.5, 0.333333333333) | vec3(3.0, 1.5, 1.0) | vec3(4.0, 2.0, 1.33333333333) | vec3(7.0, 3.5, 2.33333333333) | vec3(11.0, 5.5, 3.66666666667) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(1.0, 0.5, 0.333333333333, 0.25) | vec4(3.0, 1.5, 1.0, 0.75) | vec4(4.0, 2.0, 1.33333333333, 1.0) | vec4(7.0, 3.5, 2.33333333333, 1.75) | vec4(11.0, 5.5, 3.66666666667, 2.75) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(1, 1) | uvec2(2, 0) | uvec2(3, 3) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(2.0, 0.5) | vec2(3.0, 3.5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(2.0, 1.5) | vec2(4.0, 3.0) | vec2(1.0, 6.5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(2, 0, 0) | uvec3(3, 3, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(2.0, 0.5, 0.666666666667) | vec3(3.0, 3.5, 0.666666666667) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(2.0, 1.5, 1.66666666667) | vec3(4.0, 3.0, 0.666666666667) | vec3(1.0, 6.5, 2.33333333333) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(2, 0, 0, 1) | uvec4(3, 3, 0, 1) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 0.5, 0.666666666667, 1.5) | vec4(3.0, 3.5, 0.666666666667, 1.25) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(2.0, 1.5, 1.66666666667, 2.0) | vec4(4.0, 3.0, 0.666666666667, 2.25) | vec4(1.0, 6.5, 2.33333333333, 1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 / vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # div

	end # input_before_literal
	group literal_before_input "Literal before input"

		group add "Addition"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 4 | 3 | 3 | 5 | 7 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(3, 4) | uvec2(2, 3) | uvec2(2, 3) | uvec2(4, 5) | uvec2(6, 7) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(3, 4, 5) | uvec3(2, 3, 4) | uvec3(2, 3, 4) | uvec3(4, 5, 6) | uvec3(6, 7, 8) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) + in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(3, 4, 5, 6) | uvec4(2, 3, 4, 5) | uvec4(2, 3, 4, 5) | uvec4(4, 5, 6, 7) | uvec4(6, 7, 8, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) + in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 + in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) + in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) + in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(2, 4) | uvec2(3, 3) | uvec2(4, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) + in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(3, 3, 5) | uvec3(4, 9, 5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) + in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(3, 3, 5, 10) | uvec4(4, 9, 5, 9) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) + in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) + in0;
						${OUTPUT}
					}
				""
			end

		end # add
		group sub "Subtraction"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 0.0 | 1.0 | 1.0 | -1.0 | -3.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 - in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(-1.0, 0.0) | vec2(0.0, 1.0) | vec2(0.0, 1.0) | vec2(-2.0, -1.0) | vec2(-4.0, -3.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) - in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(-1.0, 0.0, 1.0) | vec3(0.0, 1.0, 2.0) | vec3(0.0, 1.0, 2.0) | vec3(-2.0, -1.0, 0.0) | vec3(-4.0, -3.0, -2.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) - in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(-1.0, 0.0, 1.0, 2.0) | vec4(0.0, 1.0, 2.0, 3.0) | vec4(0.0, 1.0, 2.0, 3.0) | vec4(-2.0, -1.0, 0.0, 1.0) | vec4(-4.0, -3.0, -2.0, -1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 1.0 | -1.0 | -2.0 | -5.0 | -9.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 - in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(0.0, 1.0) | vec2(-2.0, -1.0) | vec2(-3.0, -2.0) | vec2(-6.0, -5.0) | vec2(-10.0, -9.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(0.0, 1.0, 2.0) | vec3(-2.0, -1.0, 0.0) | vec3(-3.0, -2.0, -1.0) | vec3(-6.0, -5.0, -4.0) | vec3(-10.0, -9.0, -8.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(0.0, 1.0, 2.0, 3.0) | vec4(-2.0, -1.0, 0.0, 1.0) | vec4(-3.0, -2.0, -1.0, 0.0) | vec4(-6.0, -5.0, -4.0, -3.0) | vec4(-10.0, -9.0, -8.0, -7.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(0.0, 0.0) | vec2(-1.0, 1.0) | vec2(-2.0, -5.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(-1.0, -1.0) | vec2(-3.0, -4.0) | vec2(0.0, -11.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) - in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(-1.0, 1.0, 1.0) | vec3(-2.0, -5.0, 1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(-1.0, -1.0, -2.0) | vec3(-3.0, -4.0, 1.0) | vec3(0.0, -11.0, -4.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) - in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(-1.0, 1.0, 1.0, -2.0) | vec4(-2.0, -5.0, 1.0, -1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(-1.0, -1.0, -2.0, -4.0) | vec4(-3.0, -4.0, 1.0, -5.0) | vec4(0.0, -11.0, -4.0, 0.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) - in0;
						${OUTPUT}
					}
				""
			end

		end # sub
		group mul "Multiplication"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(2.0, 4.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(5.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(5.0, 10.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(5.0, 10.0, 15.0, 20.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(2, 4) | uvec2(1, 2) | uvec2(1, 2) | uvec2(3, 6) | uvec2(5, 10) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(3, 6, 9) | uvec3(5, 10, 15) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(3, 6, 9, 12) | uvec4(5, 10, 15, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(3.0, 6.0) | vec2(4.0, 8.0) | vec2(7.0, 14.0) | vec2(11.0, 22.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(3.0, 6.0, 9.0) | vec3(4.0, 8.0, 12.0) | vec3(7.0, 14.0, 21.0) | vec3(11.0, 22.0, 33.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(3.0, 6.0, 9.0, 12.0) | vec4(4.0, 8.0, 12.0, 16.0) | vec4(7.0, 14.0, 21.0, 28.0) | vec4(11.0, 22.0, 33.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(1, 4) | uvec2(2, 2) | uvec2(3, 14) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(1.0, 4.0) | vec2(2.0, 2.0) | vec2(3.0, 14.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(2.0, 6.0) | vec2(4.0, 12.0) | vec2(1.0, 26.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(1, 4, 9) | uvec3(2, 2, 6) | uvec3(3, 14, 6) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(1.0, 4.0, 9.0) | vec3(2.0, 2.0, 6.0) | vec3(3.0, 14.0, 6.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(2.0, 6.0, 15.0) | vec3(4.0, 12.0, 6.0) | vec3(1.0, 26.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(1, 4, 9, 16) | uvec4(2, 2, 6, 24) | uvec4(3, 14, 6, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(1.0, 4.0, 9.0, 16.0) | vec4(2.0, 2.0, 6.0, 24.0) | vec4(3.0, 14.0, 6.0, 20.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(2.0, 6.0, 15.0, 32.0) | vec4(4.0, 12.0, 6.0, 36.0) | vec4(1.0, 26.0, 21.0, 16.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * in0;
						${OUTPUT}
					}
				""
			end

		end # mul
		group div "Division"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 1.0 | 2.0 | 2.0 | 0.666666666667 | 0.4 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 1 | 2 | 2 | 0 | 0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(0.5, 1.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(0.333333333333, 0.666666666667) | vec2(0.2, 0.4) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(0.5, 1.0, 1.5) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(0.333333333333, 0.666666666667, 1.0) | vec3(0.2, 0.4, 0.6) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(0.5, 1.0, 1.5, 2.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(0.333333333333, 0.666666666667, 1.0, 1.33333333333) | vec4(0.2, 0.4, 0.6, 0.8) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(0, 1) | uvec2(1, 2) | uvec2(1, 2) | uvec2(0, 0) | uvec2(0, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(0, 1, 1) | uvec3(1, 2, 3) | uvec3(1, 2, 3) | uvec3(0, 0, 1) | uvec3(0, 0, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) / in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(0, 1, 1, 2) | uvec4(1, 2, 3, 4) | uvec4(1, 2, 3, 4) | uvec4(0, 0, 1, 1) | uvec4(0, 0, 0, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) / in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 2.0 | 0.666666666667 | 0.5 | 0.285714285714 | 0.181818181818 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 / in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(1.0, 2.0) | vec2(0.333333333333, 0.666666666667) | vec2(0.25, 0.5) | vec2(0.142857142857, 0.285714285714) | vec2(0.0909090909091, 0.181818181818) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) / in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(0.333333333333, 0.666666666667, 1.0) | vec3(0.25, 0.5, 0.75) | vec3(0.142857142857, 0.285714285714, 0.428571428571) | vec3(0.0909090909091, 0.181818181818, 0.272727272727) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) / in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(0.333333333333, 0.666666666667, 1.0, 1.33333333333) | vec4(0.25, 0.5, 0.75, 1.0) | vec4(0.142857142857, 0.285714285714, 0.428571428571, 0.571428571429) | vec4(0.0909090909091, 0.181818181818, 0.272727272727, 0.363636363636) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 2) | uvec2(0, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.5, 2.0) | vec2(0.333333333333, 0.285714285714) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) / in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(0.5, 0.666666666667) | vec2(0.25, 0.333333333333) | vec2(1.0, 0.153846153846) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(0, 2, 1) | uvec3(0, 0, 1) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.5, 2.0, 1.5) | vec3(0.333333333333, 0.285714285714, 1.5) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) / in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(0.5, 0.666666666667, 0.6) | vec3(0.25, 0.333333333333, 1.5) | vec3(1.0, 0.153846153846, 0.428571428571) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(0, 2, 1, 0) | uvec4(0, 0, 1, 0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) / in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.5, 2.0, 1.5, 0.666666666667) | vec4(0.333333333333, 0.285714285714, 1.5, 0.8) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(0.5, 0.666666666667, 0.6, 0.5) | vec4(0.25, 0.333333333333, 1.5, 0.444444444444) | vec4(1.0, 0.153846153846, 0.428571428571, 1.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) / in0;
						${OUTPUT}
					}
				""
			end

		end # div

	end # literal_before_input

end # arithmetic
group comparisons "Comparisons"

	group input_before_literal "Input before literal"

		group equal "Equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == 2.0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 == vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # equal
		group not_equal "Not equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != 2.0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != uvec2(1, 2);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != uvec3(1, 2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != uvec4(1, 2, 3, 4);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 != vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # not_equal
		group less "Less than"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 < 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 < 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 < 2.0;
						${OUTPUT}
					}
				""
			end

		end # less
		group greater "Greater than"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 > 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 > 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 > 2.0;
						${OUTPUT}
					}
				""
			end

		end # greater
		group less_or_equal "Less than or equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 <= 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 <= 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 <= 2.0;
						${OUTPUT}
					}
				""
			end

		end # less_or_equal
		group greater_or_equal "Greater than or equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 >= 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 >= 2;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 >= 2.0;
						${OUTPUT}
					}
				""
			end

		end # greater_or_equal

	end # input_before_literal
	group literal_before_input "Literal before input"

		group equal "Equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 == in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 == in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 == in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) == in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) == in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) == in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) == in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) == in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) == in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) == in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) == in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output bool out0 = [ false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) == in0;
						${OUTPUT}
					}
				""
			end

		end # equal
		group not_equal "Not equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 != in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 != in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 != in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec2(1, 2) != in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) != in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) != in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec3(1, 2, 3) != in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) != in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) != in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = uvec4(1, 2, 3, 4) != in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output bool out0 = [ false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) != in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output bool out0 = [ true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) != in0;
						${OUTPUT}
					}
				""
			end

		end # not_equal
		group less "Less than"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 < in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 < in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 < in0;
						${OUTPUT}
					}
				""
			end

		end # less
		group greater "Greater than"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 > in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ false | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 > in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 > in0;
						${OUTPUT}
					}
				""
			end

		end # greater
		group less_or_equal "Less than or equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 <= in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | false | false | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 <= in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ false | true | true | true | true ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 <= in0;
						${OUTPUT}
					}
				""
			end

		end # less_or_equal
		group greater_or_equal "Greater than or equal"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 >= in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output bool out0 = [ true | true | true | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2 >= in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output bool out0 = [ true | false | false | false | false ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 >= in0;
						${OUTPUT}
					}
				""
			end

		end # greater_or_equal

	end # literal_before_input

end # comparisons
group array_subscripts "Array subscripts"

	group input_before_subscript "Input before subscript"

		case int_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output float out0 = [ 3.0 | 2.0 | 2.0 | 4.0 | 6.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uint[] x = uint[] (1, 3, 4, 7, 11);
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec2 out0 = [ vec2(4.0, 3.0) | vec2(3.0, 2.0) | vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(7.0, 6.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec3 out0 = [ vec3(4.0, 3.0, 4.0) | vec3(3.0, 2.0, 3.0) | vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(7.0, 6.0, 7.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec4 out0 = [ vec4(4.0, 3.0, 4.0, 8.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(7.0, 6.0, 7.0, 11.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec2 out0 = [ uvec2(6, 8) | uvec2(5, 7) | uvec2(5, 7) | uvec2(7, 9) | uvec2(9, 11) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec3 out0 = [ uvec3(6, 8, 4) | uvec3(5, 7, 3) | uvec3(5, 7, 3) | uvec3(7, 9, 5) | uvec3(9, 11, 7) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case int_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec4 out0 = [ uvec4(6, 8, 4, 11) | uvec4(5, 7, 3, 10) | uvec4(5, 7, 3, 10) | uvec4(7, 9, 5, 12) | uvec4(9, 11, 7, 14) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output float out0 = [ 2.0 | 4.0 | 5.0 | 8.0 | 12.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uint_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec2 out0 = [ vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(6.0, 5.0) | vec2(9.0, 8.0) | vec2(13.0, 12.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uint_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec3 out0 = [ vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(6.0, 5.0, 6.0) | vec3(9.0, 8.0, 9.0) | vec3(13.0, 12.0, 13.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uint_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec4 out0 = [ vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(6.0, 5.0, 6.0, 10.0) | vec4(9.0, 8.0, 9.0, 13.0) | vec4(13.0, 12.0, 13.0, 17.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec2 out0 = [ uvec2(5, 8) | uvec2(6, 7) | uvec2(7, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec2 out0 = [ vec2(3.0, 3.0) | vec2(4.0, 2.0) | vec2(5.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec2 out0 = [ vec2(4.0, 4.0) | vec2(6.0, 7.0) | vec2(3.0, 14.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec3 out0 = [ uvec3(5, 8, 5) | uvec3(6, 7, 4) | uvec3(7, 13, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(4.0, 2.0, 4.0) | vec3(5.0, 8.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec3 out0 = [ vec3(4.0, 4.0, 7.0) | vec3(6.0, 7.0, 4.0) | vec3(3.0, 14.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec4 out0 = [ uvec4(5, 8, 5, 13) | uvec4(6, 7, 4, 15) | uvec4(7, 13, 4, 14) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(5.0, 8.0, 4.0, 11.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec4 out0 = [ vec4(4.0, 4.0, 7.0, 14.0) | vec4(6.0, 7.0, 4.0, 15.0) | vec4(3.0, 14.0, 9.0, 10.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = in0 + x[1];
					${OUTPUT}
				}
			""
		end

	end # input_before_subscript
	group subscript_before_input "Subscript before input"

		case int_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output float out0 = [ 3.0 | 2.0 | 2.0 | 4.0 | 6.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uint[] x = uint[] (1, 3, 4, 7, 11);
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec2 out0 = [ vec2(4.0, 3.0) | vec2(3.0, 2.0) | vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(7.0, 6.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec3 out0 = [ vec3(4.0, 3.0, 4.0) | vec3(3.0, 2.0, 3.0) | vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(7.0, 6.0, 7.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec4 out0 = [ vec4(4.0, 3.0, 4.0, 8.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(7.0, 6.0, 7.0, 11.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec2 out0 = [ uvec2(6, 8) | uvec2(5, 7) | uvec2(5, 7) | uvec2(7, 9) | uvec2(9, 11) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec3 out0 = [ uvec3(6, 8, 4) | uvec3(5, 7, 3) | uvec3(5, 7, 3) | uvec3(7, 9, 5) | uvec3(9, 11, 7) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec4 out0 = [ uvec4(6, 8, 4, 11) | uvec4(5, 7, 3, 10) | uvec4(5, 7, 3, 10) | uvec4(7, 9, 5, 12) | uvec4(9, 11, 7, 14) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output float out0 = [ 2.0 | 4.0 | 5.0 | 8.0 | 12.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float[] x = float[] (2.0, 1.0, 1.0, 3.0, 5.0);
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec2 out0 = [ vec2(3.0, 2.0) | vec2(5.0, 4.0) | vec2(6.0, 5.0) | vec2(9.0, 8.0) | vec2(13.0, 12.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec3 out0 = [ vec3(3.0, 2.0, 3.0) | vec3(5.0, 4.0, 5.0) | vec3(6.0, 5.0, 6.0) | vec3(9.0, 8.0, 9.0) | vec3(13.0, 12.0, 13.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec4 out0 = [ vec4(3.0, 2.0, 3.0, 7.0) | vec4(5.0, 4.0, 5.0, 9.0) | vec4(6.0, 5.0, 6.0, 10.0) | vec4(9.0, 8.0, 9.0, 13.0) | vec4(13.0, 12.0, 13.0, 17.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec2 out0 = [ uvec2(5, 8) | uvec2(6, 7) | uvec2(7, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec2[] x = uvec2[] (uvec2(2, 3), uvec2(4, 6), uvec2(1, 13));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec2 out0 = [ vec2(3.0, 3.0) | vec2(4.0, 2.0) | vec2(5.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec2 out0 = [ vec2(4.0, 4.0) | vec2(6.0, 7.0) | vec2(3.0, 14.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2[] x = vec2[] (vec2(1.0, 2.0), vec2(2.0, 1.0), vec2(3.0, 7.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec3 out0 = [ uvec3(5, 8, 5) | uvec3(6, 7, 4) | uvec3(7, 13, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec3[] x = uvec3[] (uvec3(2, 3, 5), uvec3(4, 6, 2), uvec3(1, 13, 7));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(4.0, 2.0, 4.0) | vec3(5.0, 8.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec3 out0 = [ vec3(4.0, 4.0, 7.0) | vec3(6.0, 7.0, 4.0) | vec3(3.0, 14.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3[] x = vec3[] (vec3(1.0, 2.0, 3.0), vec3(2.0, 1.0, 2.0), vec3(3.0, 7.0, 2.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec4 out0 = [ uvec4(5, 8, 5, 13) | uvec4(6, 7, 4, 15) | uvec4(7, 13, 4, 14) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec4[] x = uvec4[] (uvec4(2, 3, 5, 8), uvec4(4, 6, 2, 9), uvec4(1, 13, 7, 4));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(5.0, 8.0, 4.0, 11.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec4 out0 = [ vec4(4.0, 4.0, 7.0, 14.0) | vec4(6.0, 7.0, 4.0, 15.0) | vec4(3.0, 14.0, 9.0, 10.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4[] x = vec4[] (vec4(1.0, 2.0, 3.0, 4.0), vec4(2.0, 1.0, 2.0, 6.0), vec4(3.0, 7.0, 2.0, 5.0));
					out0 = x[1] + in0;
					${OUTPUT}
				}
			""
		end

	end # subscript_before_input

end # array_subscripts
group functions "Function calls"

	case int_to_float
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
			output float out0 = [ 4.0 | 2.0 | 2.0 | 6.0 | 10.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			float func (float a)
			{
				return a * float(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case int_to_uint
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
			output uint out0 = [ 4 | 2 | 2 | 6 | 10 ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			uint func (uint a)
			{
				return a * uint(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case uint_to_float
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
			output float out0 = [ 2.0 | 6.0 | 8.0 | 14.0 | 22.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			float func (float a)
			{
				return a * float(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec2_to_uvec2
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
			output uvec2 out0 = [ uvec2(2, 4) | uvec2(4, 2) | uvec2(6, 14) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			uvec2 func (uvec2 a)
			{
				return a * uvec2(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec2_to_vec2
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
			output vec2 out0 = [ vec2(2.0, 4.0) | vec2(4.0, 2.0) | vec2(6.0, 14.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec2 func (vec2 a)
			{
				return a * vec2(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case uvec2_to_vec2
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
			output vec2 out0 = [ vec2(4.0, 6.0) | vec2(8.0, 12.0) | vec2(2.0, 26.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec2 func (vec2 a)
			{
				return a * vec2(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec3_to_uvec3
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
			output uvec3 out0 = [ uvec3(2, 4, 6) | uvec3(4, 2, 4) | uvec3(6, 14, 4) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			uvec3 func (uvec3 a)
			{
				return a * uvec3(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec3_to_vec3
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
			output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(4.0, 2.0, 4.0) | vec3(6.0, 14.0, 4.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec3 func (vec3 a)
			{
				return a * vec3(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case uvec3_to_vec3
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
			output vec3 out0 = [ vec3(4.0, 6.0, 10.0) | vec3(8.0, 12.0, 4.0) | vec3(2.0, 26.0, 14.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec3 func (vec3 a)
			{
				return a * vec3(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec4_to_uvec4
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
			output uvec4 out0 = [ uvec4(2, 4, 6, 8) | uvec4(4, 2, 4, 12) | uvec4(6, 14, 4, 10) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			uvec4 func (uvec4 a)
			{
				return a * uvec4(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case ivec4_to_vec4
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
			output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(4.0, 2.0, 4.0, 12.0) | vec4(6.0, 14.0, 4.0, 10.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec4 func (vec4 a)
			{
				return a * vec4(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end
	case uvec4_to_vec4
		version 310 es
		require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
		values
		{
			input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
			output vec4 out0 = [ vec4(4.0, 6.0, 10.0, 16.0) | vec4(8.0, 12.0, 4.0, 18.0) | vec4(2.0, 26.0, 14.0, 8.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			${DECLARATIONS}

			vec4 func (vec4 a)
			{
				return a * vec4(2);
			}

			void main()
			{
				${SETUP}
				out0 = func(in0);
				${OUTPUT}
			}
		""
	end

end # functions
group struct_fields "Struct field selectors"

	group input_before_field "Input before field"

		case int_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						float val;
					} x;

					x.val = 2.0;

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uint out0 = [ 3 | 2 | 2 | 4 | 6 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uint val;
					} x;

					x.val = 1;

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec2 out0 = [ uvec2(4, 5) | uvec2(3, 4) | uvec2(3, 4) | uvec2(5, 6) | uvec2(7, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec2 val;
					} x;

					x.val = uvec2(2, 3);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec3 out0 = [ uvec3(4, 5, 7) | uvec3(3, 4, 6) | uvec3(3, 4, 6) | uvec3(5, 6, 8) | uvec3(7, 8, 10) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec3 val;
					} x;

					x.val = uvec3(2, 3, 5);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec4 out0 = [ uvec4(4, 5, 7, 10) | uvec4(3, 4, 6, 9) | uvec4(3, 4, 6, 9) | uvec4(5, 6, 8, 11) | uvec4(7, 8, 10, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec4 val;
					} x;

					x.val = uvec4(2, 3, 5, 8);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						float val;
					} x;

					x.val = 2.0;

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec2 out0 = [ uvec2(3, 5) | uvec2(4, 4) | uvec2(5, 10) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec2 val;
					} x;

					x.val = uvec2(2, 3);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec3 out0 = [ uvec3(3, 5, 8) | uvec3(4, 4, 7) | uvec3(5, 10, 7) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec3 val;
					} x;

					x.val = uvec3(2, 3, 5);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec4 out0 = [ uvec4(3, 5, 8, 12) | uvec4(4, 4, 7, 14) | uvec4(5, 10, 7, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec4 val;
					} x;

					x.val = uvec4(2, 3, 5, 8);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = in0 + x.val;
					${OUTPUT}
				}
			""
		end

	end # input_before_field
	group field_before_input "Field before input"

		case int_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output float out0 = [ 4.0 | 3.0 | 3.0 | 5.0 | 7.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						float val;
					} x;

					x.val = 2.0;

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uint out0 = [ 3 | 2 | 2 | 4 | 6 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uint val;
					} x;

					x.val = 1;

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec2 out0 = [ vec2(3.0, 4.0) | vec2(2.0, 3.0) | vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(6.0, 7.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec3 out0 = [ vec3(3.0, 4.0, 5.0) | vec3(2.0, 3.0, 4.0) | vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(6.0, 7.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output vec4 out0 = [ vec4(3.0, 4.0, 5.0, 6.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(6.0, 7.0, 8.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec2 out0 = [ uvec2(4, 5) | uvec2(3, 4) | uvec2(3, 4) | uvec2(5, 6) | uvec2(7, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec2 val;
					} x;

					x.val = uvec2(2, 3);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec3 out0 = [ uvec3(4, 5, 7) | uvec3(3, 4, 6) | uvec3(3, 4, 6) | uvec3(5, 6, 8) | uvec3(7, 8, 10) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec3 val;
					} x;

					x.val = uvec3(2, 3, 5);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case int_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
				output uvec4 out0 = [ uvec4(4, 5, 7, 10) | uvec4(3, 4, 6, 9) | uvec4(3, 4, 6, 9) | uvec4(5, 6, 8, 11) | uvec4(7, 8, 10, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec4 val;
					} x;

					x.val = uvec4(2, 3, 5, 8);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output float out0 = [ 3.0 | 5.0 | 6.0 | 9.0 | 13.0 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						float val;
					} x;

					x.val = 2.0;

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec2 out0 = [ vec2(2.0, 3.0) | vec2(4.0, 5.0) | vec2(5.0, 6.0) | vec2(8.0, 9.0) | vec2(12.0, 13.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec3 out0 = [ vec3(2.0, 3.0, 4.0) | vec3(4.0, 5.0, 6.0) | vec3(5.0, 6.0, 7.0) | vec3(8.0, 9.0, 10.0) | vec3(12.0, 13.0, 14.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uint_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output vec4 out0 = [ vec4(2.0, 3.0, 4.0, 5.0) | vec4(4.0, 5.0, 6.0, 7.0) | vec4(5.0, 6.0, 7.0, 8.0) | vec4(8.0, 9.0, 10.0, 11.0) | vec4(12.0, 13.0, 14.0, 15.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec2 out0 = [ uvec2(3, 5) | uvec2(4, 4) | uvec2(5, 10) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec2 val;
					} x;

					x.val = uvec2(2, 3);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec2 out0 = [ vec2(2.0, 4.0) | vec2(3.0, 3.0) | vec2(4.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec2 out0 = [ vec2(3.0, 5.0) | vec2(5.0, 8.0) | vec2(2.0, 15.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec2 val;
					} x;

					x.val = vec2(1.0, 2.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec3 out0 = [ uvec3(3, 5, 8) | uvec3(4, 4, 7) | uvec3(5, 10, 7) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec3 val;
					} x;

					x.val = uvec3(2, 3, 5);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec3 out0 = [ vec3(2.0, 4.0, 6.0) | vec3(3.0, 3.0, 5.0) | vec3(4.0, 9.0, 5.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec3 out0 = [ vec3(3.0, 5.0, 8.0) | vec3(5.0, 8.0, 5.0) | vec3(2.0, 15.0, 10.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec3 val;
					} x;

					x.val = vec3(1.0, 2.0, 3.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec4 out0 = [ uvec4(3, 5, 8, 12) | uvec4(4, 4, 7, 14) | uvec4(5, 10, 7, 13) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						uvec4 val;
					} x;

					x.val = uvec4(2, 3, 5, 8);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec4 out0 = [ vec4(2.0, 4.0, 6.0, 8.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(4.0, 9.0, 5.0, 9.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec4 out0 = [ vec4(3.0, 5.0, 8.0, 12.0) | vec4(5.0, 8.0, 5.0, 13.0) | vec4(2.0, 15.0, 10.0, 8.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct {
						vec4 val;
					} x;

					x.val = vec4(1.0, 2.0, 3.0, 4.0);

					out0 = x.val + in0;
					${OUTPUT}
				}
			""
		end

	end # field_before_input

end # struct_fields
group parenthesized_expressions "Parenthesized expressions"

	group paren_expr_before_literal "Parenthesized expression before literal"

		group input_in_parens "Input variable in parenthesized expression"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 6.0 | 4.0 | 4.0 | 8.0 | 12.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + 1.0) * 2.0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + 3) * 1;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(4.0, 6.0) | vec2(3.0, 4.0) | vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(7.0, 12.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(4.0, 6.0, 12.0) | vec3(3.0, 4.0, 9.0) | vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(7.0, 12.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(4.0, 6.0, 12.0, 32.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(7.0, 12.0, 21.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(12, 24) | uvec2(10, 21) | uvec2(10, 21) | uvec2(14, 27) | uvec2(18, 33) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec2(4, 6)) * ivec2(2, 3);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(12, 24, 20) | uvec3(10, 21, 15) | uvec3(10, 21, 15) | uvec3(14, 27, 25) | uvec3(18, 33, 35) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec3(4, 6, 2)) * ivec3(2, 3, 5);
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(12, 24, 20, 88) | uvec4(10, 21, 15, 80) | uvec4(10, 21, 15, 80) | uvec4(14, 27, 25, 96) | uvec4(18, 33, 35, 112) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec4(4, 6, 2, 9)) * ivec4(2, 3, 5, 8);
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 4.0 | 8.0 | 10.0 | 16.0 | 24.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + 1.0) * 2.0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(6.0, 10.0) | vec2(9.0, 16.0) | vec2(13.0, 24.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(6.0, 10.0, 18.0) | vec3(9.0, 16.0, 27.0) | vec3(13.0, 24.0, 39.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(6.0, 10.0, 18.0, 40.0) | vec4(9.0, 16.0, 27.0, 52.0) | vec4(13.0, 24.0, 39.0, 68.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(10, 24) | uvec2(12, 21) | uvec2(14, 39) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec2(4, 6)) * ivec2(2, 3);
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(4.0, 4.0) | vec2(5.0, 16.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(4.0, 8.0) | vec2(6.0, 14.0) | vec2(3.0, 28.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec2(2.0, 1.0)) * vec2(1.0, 2.0);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(10, 24, 25) | uvec3(12, 21, 20) | uvec3(14, 39, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec3(4, 6, 2)) * ivec3(2, 3, 5);
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(4.0, 4.0, 12.0) | vec3(5.0, 16.0, 12.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(4.0, 8.0, 21.0) | vec3(6.0, 14.0, 12.0) | vec3(3.0, 28.0, 27.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec3(2.0, 1.0, 2.0)) * vec3(1.0, 2.0, 3.0);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(10, 24, 25, 104) | uvec4(12, 21, 20, 120) | uvec4(14, 39, 20, 112) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + ivec4(4, 6, 2, 9)) * ivec4(2, 3, 5, 8);
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(4.0, 4.0, 12.0, 48.0) | vec4(5.0, 16.0, 12.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(4.0, 8.0, 21.0, 56.0) | vec4(6.0, 14.0, 12.0, 60.0) | vec4(3.0, 28.0, 27.0, 40.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (in0 + vec4(2.0, 1.0, 2.0, 6.0)) * vec4(1.0, 2.0, 3.0, 4.0);
						${OUTPUT}
					}
				""
			end

		end # input_in_parens
		group input_outside_parens "Input variable outside parenthesized expression"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 6.0 | 3.0 | 3.0 | 9.0 | 15.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (2.0 + 1.0) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 8 | 4 | 4 | 12 | 20 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (1 + 3) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(6.0, 6.0) | vec2(3.0, 3.0) | vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(15.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(6.0, 6.0, 10.0) | vec3(3.0, 3.0, 5.0) | vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(15.0, 15.0, 25.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(6.0, 6.0, 10.0, 20.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(15.0, 15.0, 25.0, 50.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(12, 18) | uvec2(6, 9) | uvec2(6, 9) | uvec2(18, 27) | uvec2(30, 45) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec2(2, 3) + ivec2(4, 6)) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(12, 18, 14) | uvec3(6, 9, 7) | uvec3(6, 9, 7) | uvec3(18, 27, 21) | uvec3(30, 45, 35) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec3(2, 3, 5) + ivec3(4, 6, 2)) * in0;
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(12, 18, 14, 34) | uvec4(6, 9, 7, 17) | uvec4(6, 9, 7, 17) | uvec4(18, 27, 21, 51) | uvec4(30, 45, 35, 85) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9)) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 3.0 | 9.0 | 12.0 | 21.0 | 33.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (2.0 + 1.0) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(21.0, 21.0) | vec2(33.0, 33.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(12.0, 12.0, 20.0) | vec3(21.0, 21.0, 35.0) | vec3(33.0, 33.0, 55.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(12.0, 12.0, 20.0, 40.0) | vec4(21.0, 21.0, 35.0, 70.0) | vec4(33.0, 33.0, 55.0, 110.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(6, 18) | uvec2(12, 9) | uvec2(18, 63) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec2(2, 3) + ivec2(4, 6)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(6.0, 3.0) | vec2(9.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(6.0, 9.0) | vec2(12.0, 18.0) | vec2(3.0, 39.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec2(1.0, 2.0) + vec2(2.0, 1.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(6, 18, 21) | uvec3(12, 9, 14) | uvec3(18, 63, 14) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec3(2, 3, 5) + ivec3(4, 6, 2)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(6.0, 3.0, 10.0) | vec3(9.0, 21.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(6.0, 9.0, 25.0) | vec3(12.0, 18.0, 10.0) | vec3(3.0, 39.0, 35.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(6, 18, 21, 68) | uvec4(12, 9, 14, 102) | uvec4(18, 63, 14, 85) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9)) * in0;
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(6.0, 3.0, 10.0, 60.0) | vec4(9.0, 21.0, 10.0, 50.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(6.0, 9.0, 25.0, 80.0) | vec4(12.0, 18.0, 10.0, 90.0) | vec4(3.0, 39.0, 35.0, 40.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0)) * in0;
						${OUTPUT}
					}
				""
			end

		end # input_outside_parens

	end # paren_expr_before_literal
	group literal_before_paren_expr "Literal before parenthesized expression"

		group input_in_parens "Input variable in parenthesized expression"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 6.0 | 4.0 | 4.0 | 8.0 | 12.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 * (in0 + 1.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 5 | 4 | 4 | 6 | 8 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 1 * (in0 + 3);
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(4.0, 6.0) | vec2(3.0, 4.0) | vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(7.0, 12.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(4.0, 6.0, 12.0) | vec3(3.0, 4.0, 9.0) | vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(7.0, 12.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(4.0, 6.0, 12.0, 32.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(7.0, 12.0, 21.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(12, 24) | uvec2(10, 21) | uvec2(10, 21) | uvec2(14, 27) | uvec2(18, 33) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec2(2, 3) * (in0 + ivec2(4, 6));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(12, 24, 20) | uvec3(10, 21, 15) | uvec3(10, 21, 15) | uvec3(14, 27, 25) | uvec3(18, 33, 35) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec3(2, 3, 5) * (in0 + ivec3(4, 6, 2));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(12, 24, 20, 88) | uvec4(10, 21, 15, 80) | uvec4(10, 21, 15, 80) | uvec4(14, 27, 25, 96) | uvec4(18, 33, 35, 112) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec4(2, 3, 5, 8) * (in0 + ivec4(4, 6, 2, 9));
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 4.0 | 8.0 | 10.0 | 16.0 | 24.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = 2.0 * (in0 + 1.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(3.0, 4.0) | vec2(5.0, 8.0) | vec2(6.0, 10.0) | vec2(9.0, 16.0) | vec2(13.0, 24.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(3.0, 4.0, 9.0) | vec3(5.0, 8.0, 15.0) | vec3(6.0, 10.0, 18.0) | vec3(9.0, 16.0, 27.0) | vec3(13.0, 24.0, 39.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(3.0, 4.0, 9.0, 28.0) | vec4(5.0, 8.0, 15.0, 36.0) | vec4(6.0, 10.0, 18.0, 40.0) | vec4(9.0, 16.0, 27.0, 52.0) | vec4(13.0, 24.0, 39.0, 68.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(10, 24) | uvec2(12, 21) | uvec2(14, 39) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec2(2, 3) * (in0 + ivec2(4, 6));
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(4.0, 4.0) | vec2(5.0, 16.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(4.0, 8.0) | vec2(6.0, 14.0) | vec2(3.0, 28.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec2(1.0, 2.0) * (in0 + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(10, 24, 25) | uvec3(12, 21, 20) | uvec3(14, 39, 20) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec3(2, 3, 5) * (in0 + ivec3(4, 6, 2));
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(4.0, 4.0, 12.0) | vec3(5.0, 16.0, 12.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(4.0, 8.0, 21.0) | vec3(6.0, 14.0, 12.0) | vec3(3.0, 28.0, 27.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec3(1.0, 2.0, 3.0) * (in0 + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(10, 24, 25, 104) | uvec4(12, 21, 20, 120) | uvec4(14, 39, 20, 112) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = ivec4(2, 3, 5, 8) * (in0 + ivec4(4, 6, 2, 9));
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(4.0, 4.0, 12.0, 48.0) | vec4(5.0, 16.0, 12.0, 44.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(4.0, 8.0, 21.0, 56.0) | vec4(6.0, 14.0, 12.0, 60.0) | vec4(3.0, 28.0, 27.0, 40.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = vec4(1.0, 2.0, 3.0, 4.0) * (in0 + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end

		end # input_in_parens
		group input_outside_parens "Input variable outside parenthesized expression"

			case int_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output float out0 = [ 6.0 | 3.0 | 3.0 | 9.0 | 15.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (2.0 + 1.0);
						${OUTPUT}
					}
				""
			end
			case int_to_uint
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uint out0 = [ 8 | 4 | 4 | 12 | 20 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (1 + 3);
						${OUTPUT}
					}
				""
			end
			case int_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec2 out0 = [ vec2(6.0, 6.0) | vec2(3.0, 3.0) | vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(15.0, 15.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case int_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec3 out0 = [ vec3(6.0, 6.0, 10.0) | vec3(3.0, 3.0, 5.0) | vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(15.0, 15.0, 25.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case int_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output vec4 out0 = [ vec4(6.0, 6.0, 10.0, 20.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(15.0, 15.0, 25.0, 50.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec2 out0 = [ uvec2(12, 18) | uvec2(6, 9) | uvec2(6, 9) | uvec2(18, 27) | uvec2(30, 45) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec2(2, 3) + ivec2(4, 6));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec3 out0 = [ uvec3(12, 18, 14) | uvec3(6, 9, 7) | uvec3(6, 9, 7) | uvec3(18, 27, 21) | uvec3(30, 45, 35) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec3(2, 3, 5) + ivec3(4, 6, 2));
						${OUTPUT}
					}
				""
			end
			case int_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input int in0 = [ 2 | 1 | 1 | 3 | 5 ];
					output uvec4 out0 = [ uvec4(12, 18, 14, 34) | uvec4(6, 9, 7, 17) | uvec4(6, 9, 7, 17) | uvec4(18, 27, 21, 51) | uvec4(30, 45, 35, 85) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9));
						${OUTPUT}
					}
				""
			end
			case uint_to_float
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output float out0 = [ 3.0 | 9.0 | 12.0 | 21.0 | 33.0 ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (2.0 + 1.0);
						${OUTPUT}
					}
				""
			end
			case uint_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec2 out0 = [ vec2(3.0, 3.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(21.0, 21.0) | vec2(33.0, 33.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case uint_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec3 out0 = [ vec3(3.0, 3.0, 5.0) | vec3(9.0, 9.0, 15.0) | vec3(12.0, 12.0, 20.0) | vec3(21.0, 21.0, 35.0) | vec3(33.0, 33.0, 55.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case uint_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
					output vec4 out0 = [ vec4(3.0, 3.0, 5.0, 10.0) | vec4(9.0, 9.0, 15.0, 30.0) | vec4(12.0, 12.0, 20.0, 40.0) | vec4(21.0, 21.0, 35.0, 70.0) | vec4(33.0, 33.0, 55.0, 110.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case ivec2_to_uvec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output uvec2 out0 = [ uvec2(6, 18) | uvec2(12, 9) | uvec2(18, 63) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec2(2, 3) + ivec2(4, 6));
						${OUTPUT}
					}
				""
			end
			case ivec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
					output vec2 out0 = [ vec2(3.0, 6.0) | vec2(6.0, 3.0) | vec2(9.0, 21.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case uvec2_to_vec2
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
					output vec2 out0 = [ vec2(6.0, 9.0) | vec2(12.0, 18.0) | vec2(3.0, 39.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec2(1.0, 2.0) + vec2(2.0, 1.0));
						${OUTPUT}
					}
				""
			end
			case ivec3_to_uvec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output uvec3 out0 = [ uvec3(6, 18, 21) | uvec3(12, 9, 14) | uvec3(18, 63, 14) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec3(2, 3, 5) + ivec3(4, 6, 2));
						${OUTPUT}
					}
				""
			end
			case ivec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
					output vec3 out0 = [ vec3(3.0, 6.0, 15.0) | vec3(6.0, 3.0, 10.0) | vec3(9.0, 21.0, 10.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case uvec3_to_vec3
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
					output vec3 out0 = [ vec3(6.0, 9.0, 25.0) | vec3(12.0, 18.0, 10.0) | vec3(3.0, 39.0, 35.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec3(1.0, 2.0, 3.0) + vec3(2.0, 1.0, 2.0));
						${OUTPUT}
					}
				""
			end
			case ivec4_to_uvec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output uvec4 out0 = [ uvec4(6, 18, 21, 68) | uvec4(12, 9, 14, 102) | uvec4(18, 63, 14, 85) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (ivec4(2, 3, 5, 8) + ivec4(4, 6, 2, 9));
						${OUTPUT}
					}
				""
			end
			case ivec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
					output vec4 out0 = [ vec4(3.0, 6.0, 15.0, 40.0) | vec4(6.0, 3.0, 10.0, 60.0) | vec4(9.0, 21.0, 10.0, 50.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end
			case uvec4_to_vec4
				version 310 es
				require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
				values
				{
					input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
					output vec4 out0 = [ vec4(6.0, 9.0, 25.0, 80.0) | vec4(12.0, 18.0, 10.0, 90.0) | vec4(3.0, 39.0, 35.0, 40.0) ];
				}

				both ""
					#version 310 es
					precision highp float;
					${DECLARATIONS}

					void main()
					{
						${SETUP}
						out0 = in0 * (vec4(1.0, 2.0, 3.0, 4.0) + vec4(2.0, 1.0, 2.0, 6.0));
						${OUTPUT}
					}
				""
			end

		end # input_outside_parens

	end # literal_before_paren_expr

end # parenthesized_expressions
group invalid "Invalid conversions"

	group variables "Single variables"

		case uint_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output int out0 = [ 2 | 2 | 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case uint_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case uint_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case uint_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uint in0 = [ 1 | 3 | 4 | 7 | 11 ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec2 in0 = [ ivec2(1, 2) | ivec2(2, 1) | ivec2(3, 7) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case uvec2_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec2 in0 = [ uvec2(2, 3) | uvec2(4, 6) | uvec2(1, 13) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec3 in0 = [ ivec3(1, 2, 3) | ivec3(2, 1, 2) | ivec3(3, 7, 2) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case uvec3_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec3 in0 = [ uvec3(2, 3, 5) | uvec3(4, 6, 2) | uvec3(1, 13, 7) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input ivec4 in0 = [ ivec4(1, 2, 3, 4) | ivec4(2, 1, 2, 6) | ivec4(3, 7, 2, 5) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case uvec4_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input uvec4 in0 = [ uvec4(2, 3, 5, 8) | uvec4(4, 6, 2, 9) | uvec4(1, 13, 7, 4) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end
		case float_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output int out0 = [ 2 | 2 | 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case float_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output uint out0 = [ 1 | 1 | 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case float_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case float_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case float_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case float_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case float_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case float_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input float in0 = [ 2.0 | 1.0 | 1.0 | 3.0 | 5.0 ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case vec2_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case vec2_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case vec2_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case vec2_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case vec2_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case vec2_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case vec2_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case vec2_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case vec2_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end
		case vec2_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec2 in0 = [ vec2(1.0, 2.0) | vec2(2.0, 1.0) | vec2(3.0, 7.0) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case vec3_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case vec3_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case vec3_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case vec3_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case vec3_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case vec3_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case vec3_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case vec3_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case vec3_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case vec3_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec3 in0 = [ vec3(1.0, 2.0, 3.0) | vec3(2.0, 1.0, 2.0) | vec3(3.0, 7.0, 2.0) ];
				output vec4 out0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) | vec4(1.0, 2.0, 3.0, 4.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec4(1.0, 2.0, 3.0, 4.0);
					${OUTPUT}
				}
			""
		end
		case vec4_to_int
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output int out0 = [ 2 | 2 | 2 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 2;
					${OUTPUT}
				}
			""
		end
		case vec4_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output uint out0 = [ 1 | 1 | 1 ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + 1;
					${OUTPUT}
				}
			""
		end
		case vec4_to_ivec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output ivec2 out0 = [ ivec2(1, 2) | ivec2(1, 2) | ivec2(1, 2) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(1, 2);
					${OUTPUT}
				}
			""
		end
		case vec4_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output uvec2 out0 = [ uvec2(2, 3) | uvec2(2, 3) | uvec2(2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec2(2, 3);
					${OUTPUT}
				}
			""
		end
		case vec4_to_ivec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output ivec3 out0 = [ ivec3(1, 2, 3) | ivec3(1, 2, 3) | ivec3(1, 2, 3) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(1, 2, 3);
					${OUTPUT}
				}
			""
		end
		case vec4_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output uvec3 out0 = [ uvec3(2, 3, 5) | uvec3(2, 3, 5) | uvec3(2, 3, 5) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec3(2, 3, 5);
					${OUTPUT}
				}
			""
		end
		case vec4_to_ivec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output ivec4 out0 = [ ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) | ivec4(1, 2, 3, 4) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(1, 2, 3, 4);
					${OUTPUT}
				}
			""
		end
		case vec4_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output uvec4 out0 = [ uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) | uvec4(2, 3, 5, 8) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + ivec4(2, 3, 5, 8);
					${OUTPUT}
				}
			""
		end
		case vec4_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output vec2 out0 = [ vec2(1.0, 2.0) | vec2(1.0, 2.0) | vec2(1.0, 2.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec2(1.0, 2.0);
					${OUTPUT}
				}
			""
		end
		case vec4_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values
			{
				input vec4 in0 = [ vec4(1.0, 2.0, 3.0, 4.0) | vec4(2.0, 1.0, 2.0, 6.0) | vec4(3.0, 7.0, 2.0, 5.0) ];
				output vec3 out0 = [ vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) | vec3(1.0, 2.0, 3.0) ];
			}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					out0 = in0 + vec3(1.0, 2.0, 3.0);
					${OUTPUT}
				}
			""
		end

	end # variables
	group arrays "Arrays"

		case int_to_float
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float a[] = int[] (2, 1, 1, 3, 5);
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uint a[] = int[] (2, 1, 1, 3, 5);
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					float a[] = uint[] (1, 3, 4, 7, 11);
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec2 a[] = ivec2[] (uvec2(1, 2), uvec2(2, 1), uvec2(3, 7));
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2 a[] = ivec2[] (vec2(1, 2), vec2(2, 1), vec2(3, 7));
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec2 a[] = uvec2[] (vec2(2, 3), vec2(4, 6), vec2(1, 13));
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec3 a[] = ivec3[] (uvec3(1, 2, 3), uvec3(2, 1, 2), uvec3(3, 7, 2));
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3 a[] = ivec3[] (vec3(1, 2, 3), vec3(2, 1, 2), vec3(3, 7, 2));
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec3 a[] = uvec3[] (vec3(2, 3, 5), vec3(4, 6, 2), vec3(1, 13, 7));
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					uvec4 a[] = ivec4[] (uvec4(1, 2, 3, 4), uvec4(2, 1, 2, 6), uvec4(3, 7, 2, 5));
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4 a[] = ivec4[] (vec4(1, 2, 3, 4), vec4(2, 1, 2, 6), vec4(3, 7, 2, 5));
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					vec4 a[] = uvec4[] (vec4(2, 3, 5, 8), vec4(4, 6, 2, 9), vec4(1, 13, 7, 4));
					${OUTPUT}
				}
			""
		end

	end # arrays
	group structs "Structs"

		case int_to_float
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { int value; } a;
					struct { float value; } b;
					a = 2;
					b = a;
					${OUTPUT}
				}
			""
		end
		case int_to_uint
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { int value; } a;
					struct { uint value; } b;
					a = 2;
					b = a;
					${OUTPUT}
				}
			""
		end
		case uint_to_float
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { uint value; } a;
					struct { float value; } b;
					a = 1;
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_uvec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec2 value; } a;
					struct { uvec2 value; } b;
					a = ivec2(1, 2);
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec2_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec2 value; } a;
					struct { vec2 value; } b;
					a = ivec2(1, 2);
					b = a;
					${OUTPUT}
				}
			""
		end
		case uvec2_to_vec2
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { uvec2 value; } a;
					struct { vec2 value; } b;
					a = uvec2(2, 3);
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_uvec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec3 value; } a;
					struct { uvec3 value; } b;
					a = ivec3(1, 2, 3);
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec3_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec3 value; } a;
					struct { vec3 value; } b;
					a = ivec3(1, 2, 3);
					b = a;
					${OUTPUT}
				}
			""
		end
		case uvec3_to_vec3
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { uvec3 value; } a;
					struct { vec3 value; } b;
					a = uvec3(2, 3, 5);
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_uvec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec4 value; } a;
					struct { uvec4 value; } b;
					a = ivec4(1, 2, 3, 4);
					b = a;
					${OUTPUT}
				}
			""
		end
		case ivec4_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { ivec4 value; } a;
					struct { vec4 value; } b;
					a = ivec4(1, 2, 3, 4);
					b = a;
					${OUTPUT}
				}
			""
		end
		case uvec4_to_vec4
			expect compile_fail
			version 310 es
			require extension { "GL_EXT_shader_implicit_conversions" } in { vertex, fragment }
			values {}

			both ""
				#version 310 es
				precision highp float;
				${DECLARATIONS}

				void main()
				{
					${SETUP}
					struct { uvec4 value; } a;
					struct { vec4 value; } b;
					a = uvec4(2, 3, 5, 8);
					b = a;
					${OUTPUT}
				}
			""
		end

	end # structs

end # invalid
