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

group scalar_to_scalar "Scalar to Scalar Conversions"

	case float_to_float
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output float out0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_int
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output int out0 = [ 0 | 1 | 2 | 3 | 0 | -8 | -20 | 36 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_bool
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output bool out0 = [ false | true | true | true | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_float
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output float out0 = [ 0.0 | 1.0 | 2.0 | 5.0 | 8.0 | 11.0 | -12.0 | -66.0 | -192.0 | 255.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_int
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output int out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_bool
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output bool out0 = [ false | true | true | true | true | true | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_float
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output float out0 = [ 0.0 | 2.0 | 3.0 | 8.0 | 9.0 | 12.0 | 10.0 | 45.0 | 193.0 | 255.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_int
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output int out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_bool
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output bool out0 = [ false | true | true | true | true | true | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_float
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output float out0 = [ 1.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_int
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output int out0 = [ 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_bool
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output bool out0 = [ true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_uint
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ];
			output uint out0 = [ 0 | 1 | 2 | 3 | 0 | 8 | 20 | 36 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_uint
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ];
			output uint out0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_uint
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output uint out0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_uint
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output uint out0 = [ 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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


end # scalar_to_scalar
group scalar_to_vector "Scalar to Vector Conversions"

	case float_to_vec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(3.5, 3.5) | vec2(-0.5, -0.5) | vec2(-8.25, -8.25) | vec2(-20.125, -20.125) | vec2(36.8125, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_vec3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(3.5, 3.5, 3.5) | vec3(-0.5, -0.5, -0.5) | vec3(-8.25, -8.25, -8.25) | vec3(-20.125, -20.125, -20.125) | vec3(36.8125, 36.8125, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_vec4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.5, 3.5, 3.5, 3.5) | vec4(-0.5, -0.5, -0.5, -0.5) | vec4(-8.25, -8.25, -8.25, -8.25) | vec4(-20.125, -20.125, -20.125, -20.125) | vec4(36.8125, 36.8125, 36.8125, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_ivec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(3, 3) | ivec2(0, 0) | ivec2(-8, -8) | ivec2(-20, -20) | ivec2(36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_ivec3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(0, 0, 0) | ivec3(-8, -8, -8) | ivec3(-20, -20, -20) | ivec3(36, 36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_ivec4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(0, 0, 0, 0) | ivec4(-8, -8, -8, -8) | ivec4(-20, -20, -20, -20) | ivec4(36, 36, 36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_bvec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_bvec3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_bvec4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_vec2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(2.0, 2.0) | vec2(5.0, 5.0) | vec2(8.0, 8.0) | vec2(11.0, 11.0) | vec2(-12.0, -12.0) | vec2(-66.0, -66.0) | vec2(-192.0, -192.0) | vec2(255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_vec3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(2.0, 2.0, 2.0) | vec3(5.0, 5.0, 5.0) | vec3(8.0, 8.0, 8.0) | vec3(11.0, 11.0, 11.0) | vec3(-12.0, -12.0, -12.0) | vec3(-66.0, -66.0, -66.0) | vec3(-192.0, -192.0, -192.0) | vec3(255.0, 255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_vec4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(5.0, 5.0, 5.0, 5.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(11.0, 11.0, 11.0, 11.0) | vec4(-12.0, -12.0, -12.0, -12.0) | vec4(-66.0, -66.0, -66.0, -66.0) | vec4(-192.0, -192.0, -192.0, -192.0) | vec4(255.0, 255.0, 255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_ivec2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(2, 2) | ivec2(5, 5) | ivec2(8, 8) | ivec2(11, 11) | ivec2(-12, -12) | ivec2(-66, -66) | ivec2(-192, -192) | ivec2(255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_ivec3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(2, 2, 2) | ivec3(5, 5, 5) | ivec3(8, 8, 8) | ivec3(11, 11, 11) | ivec3(-12, -12, -12) | ivec3(-66, -66, -66) | ivec3(-192, -192, -192) | ivec3(255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_ivec4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(2, 2, 2, 2) | ivec4(5, 5, 5, 5) | ivec4(8, 8, 8, 8) | ivec4(11, 11, 11, 11) | ivec4(-12, -12, -12, -12) | ivec4(-66, -66, -66, -66) | ivec4(-192, -192, -192, -192) | ivec4(255, 255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_bvec2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_bvec3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_bvec4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_vec2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(2.0, 2.0) | vec2(3.0, 3.0) | vec2(8.0, 8.0) | vec2(9.0, 9.0) | vec2(12.0, 12.0) | vec2(10.0, 10.0) | vec2(45.0, 45.0) | vec2(193.0, 193.0) | vec2(255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_vec3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(2.0, 2.0, 2.0) | vec3(3.0, 3.0, 3.0) | vec3(8.0, 8.0, 8.0) | vec3(9.0, 9.0, 9.0) | vec3(12.0, 12.0, 12.0) | vec3(10.0, 10.0, 10.0) | vec3(45.0, 45.0, 45.0) | vec3(193.0, 193.0, 193.0) | vec3(255.0, 255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_vec4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 2.0, 2.0, 2.0) | vec4(3.0, 3.0, 3.0, 3.0) | vec4(8.0, 8.0, 8.0, 8.0) | vec4(9.0, 9.0, 9.0, 9.0) | vec4(12.0, 12.0, 12.0, 12.0) | vec4(10.0, 10.0, 10.0, 10.0) | vec4(45.0, 45.0, 45.0, 45.0) | vec4(193.0, 193.0, 193.0, 193.0) | vec4(255.0, 255.0, 255.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_ivec2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(2, 2) | ivec2(3, 3) | ivec2(8, 8) | ivec2(9, 9) | ivec2(12, 12) | ivec2(10, 10) | ivec2(45, 45) | ivec2(193, 193) | ivec2(255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_ivec3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(2, 2, 2) | ivec3(3, 3, 3) | ivec3(8, 8, 8) | ivec3(9, 9, 9) | ivec3(12, 12, 12) | ivec3(10, 10, 10) | ivec3(45, 45, 45) | ivec3(193, 193, 193) | ivec3(255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_ivec4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(2, 2, 2, 2) | ivec4(3, 3, 3, 3) | ivec4(8, 8, 8, 8) | ivec4(9, 9, 9, 9) | ivec4(12, 12, 12, 12) | ivec4(10, 10, 10, 10) | ivec4(45, 45, 45, 45) | ivec4(193, 193, 193, 193) | ivec4(255, 255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_bvec2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_bvec3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_bvec4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_vec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_vec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_vec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_ivec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_ivec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_ivec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_bvec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_bvec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_bvec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_uvec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(3, 3) | uvec2(0, 0) | uvec2(8, 8) | uvec2(20, 20) | uvec2(36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_uvec3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(0, 0, 0) | uvec3(8, 8, 8) | uvec3(20, 20, 20) | uvec3(36, 36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_uvec4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | 0.5 | 8.25 | 20.125 | 36.8125 ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(0, 0, 0, 0) | uvec4(8, 8, 8, 8) | uvec4(20, 20, 20, 20) | uvec4(36, 36, 36, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_uvec2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(2, 2) | uvec2(5, 5) | uvec2(8, 8) | uvec2(11, 11) | uvec2(12, 12) | uvec2(66, 66) | uvec2(192, 192) | uvec2(255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_uvec3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(2, 2, 2) | uvec3(5, 5, 5) | uvec3(8, 8, 8) | uvec3(11, 11, 11) | uvec3(12, 12, 12) | uvec3(66, 66, 66) | uvec3(192, 192, 192) | uvec3(255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_uvec4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | 12 | 66 | 192 | 255 ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(2, 2, 2, 2) | uvec4(5, 5, 5, 5) | uvec4(8, 8, 8, 8) | uvec4(11, 11, 11, 11) | uvec4(12, 12, 12, 12) | uvec4(66, 66, 66, 66) | uvec4(192, 192, 192, 192) | uvec4(255, 255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_uvec2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(2, 2) | uvec2(3, 3) | uvec2(8, 8) | uvec2(9, 9) | uvec2(12, 12) | uvec2(10, 10) | uvec2(45, 45) | uvec2(193, 193) | uvec2(255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_uvec3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(2, 2, 2) | uvec3(3, 3, 3) | uvec3(8, 8, 8) | uvec3(9, 9, 9) | uvec3(12, 12, 12) | uvec3(10, 10, 10) | uvec3(45, 45, 45) | uvec3(193, 193, 193) | uvec3(255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_uvec4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(2, 2, 2, 2) | uvec4(3, 3, 3, 3) | uvec4(8, 8, 8, 8) | uvec4(9, 9, 9, 9) | uvec4(12, 12, 12, 12) | uvec4(10, 10, 10, 10) | uvec4(45, 45, 45, 45) | uvec4(193, 193, 193, 193) | uvec4(255, 255, 255, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_uvec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_uvec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output uvec3 out0 = [ uvec3(1, 1, 1) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_uvec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output uvec4 out0 = [ uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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


end # scalar_to_vector
group vector_to_scalar "Vector to Scalar Conversions"

	case vec2_to_float
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_int
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_bool
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output bool out0 = [ false | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_float
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_int
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_bool
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output bool out0 = [ false | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_float
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output float out0 = [ 0.0 | 1.0 | -0.5 | -32.0 | -0.75 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_int
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_bool
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output bool out0 = [ false | true | true | true | true ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_float
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_int
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_bool
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_float
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_int
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_bool
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_float
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | -32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_int
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output int out0 = [ 0 | 1 | 0 | -32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_bool
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_float
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_int
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output int out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_bool
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_float
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_int
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output int out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_bool
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_float
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output float out0 = [ 0.0 | 1.0 | 0.0 | 32.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_int
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output int out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_bool
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output bool out0 = [ false | true | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_float
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_int
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_bool
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output bool out0 = [ true | false | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_float
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_int
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_bool
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output bool out0 = [ true | false | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_float
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output float out0 = [ 1.0 | 0.0 | 0.0 | 1.0 | 0.0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_int
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output int out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_bool
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output bool out0 = [ true | false | false | true | false ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_uint
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_uint
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_uint
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_uint
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_uint
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_uint
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_uint
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_uint
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_uint
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output uint out0 = [ 0 | 1 | 0 | 32 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_uint
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output uint out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_uint
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output uint out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_uint
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output uint out0 = [ 1 | 0 | 0 | 1 | 0 ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

end # vector_to_scalar

group vector_to_vector "Vector to Vector Conversions"

	case vec4_to_vec4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output vec4 out0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_vec3
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_vec2
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_ivec4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_ivec3
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_ivec2
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_bvec4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output bvec4 out0 = [ bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_bvec3
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_bvec2
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_vec4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, -2.0, -4.0, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_vec3
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_vec2
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_ivec4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_ivec3
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_ivec2
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_bvec4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_bvec3
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_bvec2
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_vec4
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output vec4 out0 = [ vec4(0.0, 0.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 2.0, 4.0, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_vec3
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_vec2
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_ivec4
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_ivec3
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_ivec2
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_bvec4
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output bvec4 out0 = [ bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_bvec3
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_bvec2
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_vec4
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 1.0) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(0.0, 1.0, 0.0, 0.0) | vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_vec3
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_vec2
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_ivec4
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output ivec4 out0 = [ ivec4(1, 0, 0, 1) | ivec4(0, 0, 0, 1) | ivec4(0, 1, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_ivec3
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_ivec2
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_bvec4
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_bvec3
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_bvec2
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_uvec4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_uvec3
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec4_to_uvec2
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.5, 2.25, 4.875, 9.0) | vec4(32.0, 64.0, 51.0, 24.0) | vec4(0.75, 0.0322580645161, 0.0526315789474, 0.25) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_uvec4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_uvec3
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec4_to_uvec2
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 2, 4, 9) | ivec4(32, 64, 51, 24) | ivec4(0, 0, 0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_uvec4
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output uvec4 out0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_uvec3
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec4_to_uvec2
		version 310 es
		values
		{
			input uvec4 in0 = [ uvec4(0, 0, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 2, 4, 9) | uvec4(32, 64, 51, 24) | uvec4(0, 0, 0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_uvec4
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output uvec4 out0 = [ uvec4(1, 0, 0, 1) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_uvec3
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec4_to_uvec2
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_vec3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output vec3 out0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_vec2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_ivec3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_ivec2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_bvec3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output bvec3 out0 = [ bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_bvec2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_vec3
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, -2.0, -4.0) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_vec2
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_ivec3
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_ivec2
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_bvec3
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_bvec2
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_vec3
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output vec3 out0 = [ vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 2.0, 4.0) | vec3(32.0, 64.0, 51.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_vec2
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_ivec3
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output ivec3 out0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_ivec2
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_bvec3
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output bvec3 out0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_bvec2
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_vec3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output vec3 out0 = [ vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 0.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_vec2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_ivec3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output ivec3 out0 = [ ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_ivec2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_bvec3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output bvec3 out0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_bvec2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_uvec3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec3_to_uvec2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(0.75, 0.0322580645161, 0.0526315789474) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_uvec3
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec3_to_uvec2
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 2, 4) | ivec3(32, 64, 51) | ivec3(0, 0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_uvec3
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec3_to_uvec2
		version 310 es
		values
		{
			input uvec3 in0 = [ uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_uvec3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 1, 0) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec3_to_uvec2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_vec2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output vec2 out0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_ivec2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_bvec2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_vec2
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, -2.0) | vec2(-32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_ivec2
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_bvec2
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_vec2
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output vec2 out0 = [ vec2(0.0, 0.0) | vec2(1.0, 1.0) | vec2(0.0, 2.0) | vec2(32.0, 64.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_ivec2
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output ivec2 out0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_bvec2
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output bvec2 out0 = [ bvec2(false, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_vec2
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output vec2 out0 = [ vec2(1.0, 0.0) | vec2(0.0, 0.0) | vec2(0.0, 1.0) | vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_ivec2
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output ivec2 out0 = [ ivec2(1, 0) | ivec2(0, 0) | ivec2(0, 1) | ivec2(1, 1) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_bvec2
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output bvec2 out0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case vec2_to_uvec2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.5, 2.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case ivec2_to_uvec2
		version 310 es
		values
		{
			input ivec2 in0 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uvec2_to_uvec2
		version 310 es
		values
		{
			input uvec2 in0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
			output uvec2 out0 = [ uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bvec2_to_uvec2
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output uvec2 out0 = [ uvec2(1, 0) | uvec2(0, 0) | uvec2(0, 1) | uvec2(1, 1) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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


end # vector_to_vector
group scalar_to_matrix "Scalar to Matrix Conversions"

	case float_to_mat4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5) | mat4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25) | mat4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125) | mat4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat4x3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0) | mat4x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0) | mat4x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0) | mat4x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat4x2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0) | mat4x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0) | mat4x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0) | mat4x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat3x4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat3x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat3x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0) | mat3x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0, 0.0, 3.5) | mat3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0, 0.0, -0.5) | mat3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, -8.25) | mat3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0, 0.0, -20.125) | mat3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0, 0.0, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat3x2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.5, 0.0, 0.0, 3.5, 0.0, 0.0) | mat3x2(-0.5, 0.0, 0.0, -0.5, 0.0, 0.0) | mat3x2(-8.25, 0.0, 0.0, -8.25, 0.0, 0.0) | mat3x2(-20.125, 0.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(36.8125, 0.0, 0.0, 36.8125, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat2x4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.5, 0.0, 0.0, 0.0, 0.0, 3.5, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0, 0.0) | mat2x4(-8.25, 0.0, 0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x4(-20.125, 0.0, 0.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x4(36.8125, 0.0, 0.0, 0.0, 0.0, 36.8125, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat2x3
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.5, 0.0, 0.0, 0.0, 3.5, 0.0) | mat2x3(-0.5, 0.0, 0.0, 0.0, -0.5, 0.0) | mat2x3(-8.25, 0.0, 0.0, 0.0, -8.25, 0.0) | mat2x3(-20.125, 0.0, 0.0, 0.0, -20.125, 0.0) | mat2x3(36.8125, 0.0, 0.0, 0.0, 36.8125, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case float_to_mat2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -8.25 | -20.125 | 36.8125 ];
			output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.5, 0.0, 0.0, 3.5) | mat2(-0.5, 0.0, 0.0, -0.5) | mat2(-8.25, 0.0, 0.0, -8.25) | mat2(-20.125, 0.0, 0.0, -20.125) | mat2(36.8125, 0.0, 0.0, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0) | mat4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0) | mat4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0) | mat4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat4x3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0) | mat4x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0) | mat4x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0) | mat4x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat4x2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat3x4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat3x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat3x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat3x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 5.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0, 0.0, 11.0) | mat3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0, 0.0, -12.0) | mat3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0, 0.0, -66.0) | mat3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0, 0.0, -192.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat3x2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(5.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(11.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat3x2(-12.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat3x2(-66.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat3x2(-192.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat2x4
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(5.0, 0.0, 0.0, 0.0, 0.0, 5.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(11.0, 0.0, 0.0, 0.0, 0.0, 11.0, 0.0, 0.0) | mat2x4(-12.0, 0.0, 0.0, 0.0, 0.0, -12.0, 0.0, 0.0) | mat2x4(-66.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.0) | mat2x4(-192.0, 0.0, 0.0, 0.0, 0.0, -192.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat2x3
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(5.0, 0.0, 0.0, 0.0, 5.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(11.0, 0.0, 0.0, 0.0, 11.0, 0.0) | mat2x3(-12.0, 0.0, 0.0, 0.0, -12.0, 0.0) | mat2x3(-66.0, 0.0, 0.0, 0.0, -66.0, 0.0) | mat2x3(-192.0, 0.0, 0.0, 0.0, -192.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case int_to_mat2
		version 310 es
		values
		{
			input int in0 = [ 0 | 1 | 2 | 5 | 8 | 11 | -12 | -66 | -192 | 255 ];
			output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(1.0, 0.0, 0.0, 1.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(5.0, 0.0, 0.0, 5.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(11.0, 0.0, 0.0, 11.0) | mat2(-12.0, 0.0, 0.0, -12.0) | mat2(-66.0, 0.0, 0.0, -66.0) | mat2(-192.0, 0.0, 0.0, -192.0) | mat2(255.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0) | mat4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0) | mat4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0) | mat4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0) | mat4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0) | mat4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0) | mat4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0) | mat4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0) | mat4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat4x3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat4x3 out0 = [ mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0) | mat4x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0) | mat4x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0) | mat4x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0) | mat4x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0) | mat4x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0) | mat4x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0) | mat4x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0) | mat4x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat4x2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat3x4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat3x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat3x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat3x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat3x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat3x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat3x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat3x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat3x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat3 out0 = [ mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0, 0.0, 2.0) | mat3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0, 0.0, 3.0) | mat3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0, 0.0, 8.0) | mat3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0, 0.0, 9.0) | mat3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 12.0) | mat3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0, 0.0, 10.0) | mat3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0, 0.0, 45.0) | mat3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0, 0.0, 193.0) | mat3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat3x2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(2.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(3.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat3x2(8.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat3x2(9.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat3x2(12.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat3x2(10.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat3x2(45.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat3x2(193.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat3x2(255.0, 0.0, 0.0, 255.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat2x4
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat2x4 out0 = [ mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat2x4(3.0, 0.0, 0.0, 0.0, 0.0, 3.0, 0.0, 0.0) | mat2x4(8.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.0) | mat2x4(9.0, 0.0, 0.0, 0.0, 0.0, 9.0, 0.0, 0.0) | mat2x4(12.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0) | mat2x4(10.0, 0.0, 0.0, 0.0, 0.0, 10.0, 0.0, 0.0) | mat2x4(45.0, 0.0, 0.0, 0.0, 0.0, 45.0, 0.0, 0.0) | mat2x4(193.0, 0.0, 0.0, 0.0, 0.0, 193.0, 0.0, 0.0) | mat2x4(255.0, 0.0, 0.0, 0.0, 0.0, 255.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat2x3
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(2.0, 0.0, 0.0, 0.0, 2.0, 0.0) | mat2x3(3.0, 0.0, 0.0, 0.0, 3.0, 0.0) | mat2x3(8.0, 0.0, 0.0, 0.0, 8.0, 0.0) | mat2x3(9.0, 0.0, 0.0, 0.0, 9.0, 0.0) | mat2x3(12.0, 0.0, 0.0, 0.0, 12.0, 0.0) | mat2x3(10.0, 0.0, 0.0, 0.0, 10.0, 0.0) | mat2x3(45.0, 0.0, 0.0, 0.0, 45.0, 0.0) | mat2x3(193.0, 0.0, 0.0, 0.0, 193.0, 0.0) | mat2x3(255.0, 0.0, 0.0, 0.0, 255.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case uint_to_mat2
		version 310 es
		values
		{
			input uint in0 = [ 0 | 2 | 3 | 8 | 9 | 12 | 10 | 45 | 193 | 255 ];
			output mat2 out0 = [ mat2(0.0, 0.0, 0.0, 0.0) | mat2(2.0, 0.0, 0.0, 2.0) | mat2(3.0, 0.0, 0.0, 3.0) | mat2(8.0, 0.0, 0.0, 8.0) | mat2(9.0, 0.0, 0.0, 9.0) | mat2(12.0, 0.0, 0.0, 12.0) | mat2(10.0, 0.0, 0.0, 10.0) | mat2(45.0, 0.0, 0.0, 45.0) | mat2(193.0, 0.0, 0.0, 193.0) | mat2(255.0, 0.0, 0.0, 255.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat4x3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat4x2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat3x4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat3x2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat2x4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat2x3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case bool_to_mat2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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


end # scalar_to_matrix
group matrix_to_matrix "Matrix to Matrix Conversions"

	case mat4_to_mat4
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat4x3
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat4x2
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat3x4
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat3
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat3x2
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat2x4
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat2x3
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4_to_mat2
		version 310 es
		values
		{
			input mat4 in0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 9.975, -6.542, 0.015625, 9.975) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 9.975, -6.542, 0.015625, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4x3
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4x2
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3x4
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3x2
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2x4
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2x3
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2
		version 310 es
		values
		{
			input mat4x3 in0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 9.975, -6.542, 0.015625) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 9.975, -6.542, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4x3
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 9.975, -6.542, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4x2
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3x4
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3x2
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2x4
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2x3
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2
		version 310 es
		values
		{
			input mat4x2 in0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 9.975, -6.542) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4x3
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4x2
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3x4
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3x2
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2x4
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2x3
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2
		version 310 es
		values
		{
			input mat3x4 in0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, -0.75, -8.425, 0.03125, -0.0125) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat4
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat4x3
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat4x2
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat3x4
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, -0.75, -8.425, 0.03125, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat3
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat3x2
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat2x4
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat2x3
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3_to_mat2
		version 310 es
		values
		{
			input mat3 in0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, -0.75, -8.425, 0.03125) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4x3
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4x2
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3x4
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0, -0.75, -8.425, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0, -0.75, -8.425, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3x2
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2x4
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.0, 0.0, 12.5, 0.0208333333333, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2x3
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.0, 12.5, 0.0208333333333, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2
		version 310 es
		values
		{
			input mat3x2 in0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, -0.75, -8.425) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4x3
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4x2
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3x4
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5, 0.0, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3x2
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2x4
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2x3
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2
		version 310 es
		values
		{
			input mat2x4 in0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, -6.725, 12.5, 0.0208333333333, 0.0625, -0.5) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4x3
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4x2
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3x4
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3x2
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, 32.0, 12.5, 0.0208333333333, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2x4
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, 32.0, 0.125, 0.0, 12.5, 0.0208333333333, 0.0625, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2x3
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2
		version 310 es
		values
		{
			input mat2x3 in0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, 32.0, 0.125, 12.5, 0.0208333333333, 0.0625) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, 32.0, 12.5, 0.0208333333333) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat4
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat4 out0 = [ mat4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat4x3
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat4x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat4x2
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0) | mat4x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0) | mat4x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat3x4
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat3x4 out0 = [ mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat3
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0, 0.0, 0.0, 1.0) | mat3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0, 0.0, 0.0, 1.0) | mat3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0, 0.0, 0.0, 1.0) | mat3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat3x2
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(6.5, -0.75, 12.5, 9.975, 0.0, 0.0) | mat3x2(8.0, -24.0, 16.0, -16.0, 0.0, 0.0) | mat3x2(0.125, 0.03125, 0.0625, 0.015625, 0.0, 0.0) | mat3x2(-18.725, -0.0125, -0.5, 19.975, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat2x4
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat2x4 out0 = [ mat2x4(1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(6.5, -0.75, 0.0, 0.0, 12.5, 9.975, 0.0, 0.0) | mat2x4(8.0, -24.0, 0.0, 0.0, 16.0, -16.0, 0.0, 0.0) | mat2x4(0.125, 0.03125, 0.0, 0.0, 0.0625, 0.015625, 0.0, 0.0) | mat2x4(-18.725, -0.0125, 0.0, 0.0, -0.5, 19.975, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat2x3
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(6.5, -0.75, 0.0, 12.5, 9.975, 0.0) | mat2x3(8.0, -24.0, 0.0, 16.0, -16.0, 0.0) | mat2x3(0.125, 0.03125, 0.0, 0.0625, 0.015625, 0.0) | mat2x3(-18.725, -0.0125, 0.0, -0.5, 19.975, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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

	case mat2_to_mat2
		version 310 es
		values
		{
			input mat2 in0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 1.0) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(6.5, -0.75, 12.5, 9.975) | mat2(8.0, -24.0, 16.0, -16.0) | mat2(0.125, 0.03125, 0.0625, 0.015625) | mat2(-18.725, -0.0125, -0.5, 19.975) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

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


end # matrix_to_matrix
group vector_combine "Vector Combine Constructors"

	case vec2_vec2_to_vec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
			input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
			output vec4 out0 = [ vec4(-0.5, -2.25, -32.0, 64.0) | vec4(-32.0, 64.0, 1.0, 1.25) | vec4(1.0, 1.25, 0.0, 0.5) | vec4(0.0, 0.5, -0.5, -2.25) | vec4(-0.75, -0.0322580645161, -0.75, -0.0322580645161) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_vec2_to_ivec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
			input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
			output ivec4 out0 = [ ivec4(0, -2, -32, 64) | ivec4(-32, 64, 1, 1) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_vec2_to_bvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
			input vec2 in1 = [ vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_bvec2_to_vec4
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output vec4 out0 = [ vec4(0.0, 0.0, 1.0, 0.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(0.0, 1.0, 0.0, 1.0) | vec4(0.0, 0.0, 1.0, 1.0) | vec4(1.0, 1.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_bvec2_to_ivec4
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output ivec4 out0 = [ ivec4(0, 0, 1, 0) | ivec4(1, 0, 0, 0) | ivec4(0, 1, 0, 1) | ivec4(0, 0, 1, 1) | ivec4(1, 1, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_bvec2_to_bvec4
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) ];
			output bvec4 out0 = [ bvec4(false, false, true, false) | bvec4(true, false, false, false) | bvec4(false, true, false, true) | bvec4(false, false, true, true) | bvec4(true, true, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_to_vec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
			input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
			input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
			input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
			output vec4 out0 = [ vec4(1.0, 0.0, 3.5, 3.5) | vec4(0.0, 36.8125, 36.8125, 36.8125) | vec4(-0.5, -8.25, -8.25, 1.0) | vec4(-8.25, 2.0, 1.0, -8.25) | vec4(3.5, 3.5, 2.0, 2.0) | vec4(-20.125, 1.0, 0.0, 0.0) | vec4(36.8125, -20.125, -20.125, -0.5) | vec4(2.0, -0.5, -0.5, -20.125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_to_ivec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
			input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
			input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
			input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
			output ivec4 out0 = [ ivec4(1, 0, 3, 3) | ivec4(0, 36, 36, 36) | ivec4(0, -8, -8, 1) | ivec4(-8, 2, 1, -8) | ivec4(3, 3, 2, 2) | ivec4(-20, 1, 0, 0) | ivec4(36, -20, -20, 0) | ivec4(2, 0, 0, -20) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_to_bvec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | 0.0 | -0.5 | -8.25 | 3.5 | -20.125 | 36.8125 | 2.0 ];
			input float in1 = [ 0.0 | 36.8125 | -8.25 | 2.0 | 3.5 | 1.0 | -20.125 | -0.5 ];
			input float in2 = [ 3.5 | 36.8125 | -8.25 | 1.0 | 2.0 | 0.0 | -20.125 | -0.5 ];
			input float in3 = [ 3.5 | 36.8125 | 1.0 | -8.25 | 2.0 | 0.0 | -0.5 | -20.125 ];
			output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_to_vec4
		version 310 es
		values
		{
			input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
			input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
			input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
			input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
			output vec4 out0 = [ vec4(-12.0, 2.0, 11.0, -192.0) | vec4(-66.0, 5.0, 255.0, -66.0) | vec4(2.0, -66.0, 5.0, 8.0) | vec4(5.0, 11.0, 8.0, -12.0) | vec4(8.0, -192.0, 2.0, 1.0) | vec4(-192.0, 8.0, -192.0, 2.0) | vec4(255.0, -12.0, -12.0, 0.0) | vec4(1.0, 1.0, -66.0, 255.0) | vec4(0.0, 255.0, 1.0, 5.0) | vec4(11.0, 0.0, 0.0, 11.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_to_ivec4
		version 310 es
		values
		{
			input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
			input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
			input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
			input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
			output ivec4 out0 = [ ivec4(-12, 2, 11, -192) | ivec4(-66, 5, 255, -66) | ivec4(2, -66, 5, 8) | ivec4(5, 11, 8, -12) | ivec4(8, -192, 2, 1) | ivec4(-192, 8, -192, 2) | ivec4(255, -12, -12, 0) | ivec4(1, 1, -66, 255) | ivec4(0, 255, 1, 5) | ivec4(11, 0, 0, 11) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_to_bvec4
		version 310 es
		values
		{
			input int in0 = [ -12 | -66 | 2 | 5 | 8 | -192 | 255 | 1 | 0 | 11 ];
			input int in1 = [ 2 | 5 | -66 | 11 | -192 | 8 | -12 | 1 | 255 | 0 ];
			input int in2 = [ 11 | 255 | 5 | 8 | 2 | -192 | -12 | -66 | 1 | 0 ];
			input int in3 = [ -192 | -66 | 8 | -12 | 1 | 2 | 0 | 255 | 5 | 11 ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_uint_to_vec4
		version 310 es
		values
		{
			input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ];
			input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ];
			input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ];
			input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ];
			output vec4 out0 = [ vec4(193.0, 12.0, 9.0, 3.0) | vec4(3.0, 45.0, 8.0, 9.0) | vec4(255.0, 193.0, 12.0, 12.0) | vec4(8.0, 2.0, 2.0, 2.0) | vec4(10.0, 8.0, 255.0, 255.0) | vec4(9.0, 255.0, 45.0, 193.0) | vec4(2.0, 0.0, 3.0, 0.0) | vec4(12.0, 3.0, 0.0, 10.0) | vec4(0.0, 9.0, 193.0, 45.0) | vec4(45.0, 10.0, 10.0, 8.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_uint_to_ivec4
		version 310 es
		values
		{
			input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ];
			input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ];
			input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ];
			input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ];
			output ivec4 out0 = [ ivec4(193, 12, 9, 3) | ivec4(3, 45, 8, 9) | ivec4(255, 193, 12, 12) | ivec4(8, 2, 2, 2) | ivec4(10, 8, 255, 255) | ivec4(9, 255, 45, 193) | ivec4(2, 0, 3, 0) | ivec4(12, 3, 0, 10) | ivec4(0, 9, 193, 45) | ivec4(45, 10, 10, 8) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_uint_to_bvec4
		version 310 es
		values
		{
			input uint in0 = [ 193 | 3 | 255 | 8 | 10 | 9 | 2 | 12 | 0 | 45 ];
			input uint in1 = [ 12 | 45 | 193 | 2 | 8 | 255 | 0 | 3 | 9 | 10 ];
			input uint in2 = [ 9 | 8 | 12 | 2 | 255 | 45 | 3 | 0 | 193 | 10 ];
			input uint in3 = [ 3 | 9 | 12 | 2 | 255 | 193 | 0 | 10 | 45 | 8 ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, true, false) | bvec4(true, true, false, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_to_vec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ false | true ];
			input bool in3 = [ false | true ];
			output vec4 out0 = [ vec4(1.0, 1.0, 0.0, 0.0) | vec4(0.0, 0.0, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_to_ivec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ false | true ];
			input bool in3 = [ false | true ];
			output ivec4 out0 = [ ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_to_bvec4
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ false | true ];
			input bool in3 = [ false | true ];
			output bvec4 out0 = [ bvec4(true, true, false, false) | bvec4(false, false, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_to_vec4
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | false | true | false | false | true | true ];
			input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ];
			input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ];
			input bool in3 = [ true | true | false | false | true | true | false | true | false | false ];
			output vec4 out0 = [ vec4(1.0, 36.8125, -66.0, 1.0) | vec4(1.0, 0.0, 2.0, 1.0) | vec4(0.0, -8.25, 255.0, 0.0) | vec4(0.0, 1.0, 11.0, 0.0) | vec4(0.0, -0.5, 1.0, 1.0) | vec4(1.0, 0.0, 8.0, 1.0) | vec4(0.0, 2.0, -192.0, 0.0) | vec4(0.0, -20.125, -12.0, 1.0) | vec4(1.0, 3.5, 0.0, 0.0) | vec4(1.0, 1.0, 5.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_to_ivec4
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | false | true | false | false | true | true ];
			input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ];
			input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ];
			input bool in3 = [ true | true | false | false | true | true | false | true | false | false ];
			output ivec4 out0 = [ ivec4(1, 36, -66, 1) | ivec4(1, 0, 2, 1) | ivec4(0, -8, 255, 0) | ivec4(0, 1, 11, 0) | ivec4(0, 0, 1, 1) | ivec4(1, 0, 8, 1) | ivec4(0, 2, -192, 0) | ivec4(0, -20, -12, 1) | ivec4(1, 3, 0, 0) | ivec4(1, 1, 5, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_to_bvec4
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | false | true | false | false | true | true ];
			input float in1 = [ 36.8125 | 0.0 | -8.25 | 1.0 | -0.5 | 0.0 | 2.0 | -20.125 | 3.5 | 1.0 ];
			input int in2 = [ -66 | 2 | 255 | 11 | 1 | 8 | -192 | -12 | 0 | 5 ];
			input bool in3 = [ true | true | false | false | true | true | false | true | false | false ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, false, true, true) | bvec4(false, true, true, false) | bvec4(false, true, true, true) | bvec4(true, true, false, false) | bvec4(true, true, true, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_to_vec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
			output vec4 out0 = [ vec4(0.0, 0.5, 0.0, 0.0) | vec4(-0.75, -0.0322580645161, 0.0, -2.0) | vec4(-0.5, -2.25, 0.0, 0.0) | vec4(-32.0, 64.0, -32.0, 64.0) | vec4(1.0, 1.25, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_to_ivec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, -2) | ivec4(0, -2, 0, 0) | ivec4(-32, 64, -32, 64) | ivec4(1, 1, 1, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_to_bvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
			output bvec4 out0 = [ bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec2_to_vec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
			input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ];
			output vec4 out0 = [ vec4(-0.75, -0.0322580645161, 0.0, 1.0) | vec4(-32.0, 64.0, 0.0, 0.0) | vec4(1.0, 1.25, 0.0, 0.0) | vec4(0.0, 0.5, 1.0, 1.0) | vec4(-0.5, -2.25, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec2_to_ivec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
			input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ];
			output ivec4 out0 = [ ivec4(0, 0, 0, 1) | ivec4(-32, 64, 0, 0) | ivec4(1, 1, 0, 0) | ivec4(0, 0, 1, 1) | ivec4(0, -2, 1, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec2_to_bvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
			input bvec2 in1 = [ bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) ];
			output bvec4 out0 = [ bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(true, true, false, false) | bvec4(false, true, true, true) | bvec4(true, true, true, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_to_vec4
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ];
			input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ];
			output vec4 out0 = [ vec4(1.0, 0.0, 0.0, -0.5) | vec4(0.0, 0.0, 0.0, 3.5) | vec4(0.0, 1.0, 0.0, 2.0) | vec4(1.0, 1.0, 1.0, 0.0) | vec4(0.0, 0.0, 0.0, -8.25) | vec4(0.0, 0.0, 0.0, 1.0) | vec4(1.0, 0.0, 0.0, 36.8125) | vec4(0.0, 1.0, 0.0, -20.125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_to_ivec4
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ];
			input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ];
			output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(0, 0, 0, 3) | ivec4(0, 1, 0, 2) | ivec4(1, 1, 1, 0) | ivec4(0, 0, 0, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 0, 0, 36) | ivec4(0, 1, 0, -20) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_to_bvec4
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, true, false) ];
			input float in1 = [ -0.5 | 3.5 | 2.0 | 0.0 | -8.25 | 1.0 | 36.8125 | -20.125 ];
			output bvec4 out0 = [ bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, true, false, true) | bvec4(true, true, true, false) | bvec4(false, false, false, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec3_float_to_vec4
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ];
			input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ];
			output vec4 out0 = [ vec4(-32.0, 64.0, -51.0, -0.5) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.0) | vec4(1.0, 1.25, 1.125, 3.5) | vec4(-0.5, -2.25, -4.875, -20.125) | vec4(0.0, 0.5, 0.75, 2.0) | vec4(-0.5, -2.25, -4.875, -8.25) | vec4(0.0, 0.5, 0.75, 1.0) | vec4(1.0, 1.25, 1.125, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec3_float_to_ivec4
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ];
			input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ];
			output ivec4 out0 = [ ivec4(-32, 64, -51, 0) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 3) | ivec4(0, -2, -4, -20) | ivec4(0, 0, 0, 2) | ivec4(0, -2, -4, -8) | ivec4(0, 0, 0, 1) | ivec4(1, 1, 1, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec3_float_to_bvec4
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ];
			input float in1 = [ -0.5 | 0.0 | 3.5 | -20.125 | 2.0 | -8.25 | 1.0 | 36.8125 ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(true, true, true, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_ivec2_int_to_vec4
		version 310 es
		values
		{
			input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ];
			input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ];
			output vec4 out0 = [ vec4(-12.0, 0.0, -2.0, 1.0) | vec4(11.0, -32.0, 64.0, 11.0) | vec4(8.0, 0.0, 0.0, 2.0) | vec4(255.0, 0.0, -2.0, -66.0) | vec4(0.0, 1.0, 1.0, -192.0) | vec4(1.0, 0.0, 0.0, 0.0) | vec4(-66.0, -32.0, 64.0, -12.0) | vec4(2.0, 1.0, 1.0, 255.0) | vec4(-192.0, 0.0, 0.0, 5.0) | vec4(5.0, 0.0, 0.0, 8.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_ivec2_int_to_ivec4
		version 310 es
		values
		{
			input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ];
			input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ];
			output ivec4 out0 = [ ivec4(-12, 0, -2, 1) | ivec4(11, -32, 64, 11) | ivec4(8, 0, 0, 2) | ivec4(255, 0, -2, -66) | ivec4(0, 1, 1, -192) | ivec4(1, 0, 0, 0) | ivec4(-66, -32, 64, -12) | ivec4(2, 1, 1, 255) | ivec4(-192, 0, 0, 5) | ivec4(5, 0, 0, 8) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_ivec2_int_to_bvec4
		version 310 es
		values
		{
			input int in0 = [ -12 | 11 | 8 | 255 | 0 | 1 | -66 | 2 | -192 | 5 ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) ];
			input int in2 = [ 1 | 11 | 2 | -66 | -192 | 0 | -12 | 255 | 5 | 8 ];
			output bvec4 out0 = [ bvec4(true, false, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_ivec2_to_vec4
		version 310 es
		values
		{
			input bool in0 = [ true | false | false | false | true | true | true | false ];
			input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
			output vec4 out0 = [ vec4(1.0, 1.0, 1.0, 1.0) | vec4(0.0, 0.0, -32.0, 64.0) | vec4(0.0, 2.0, 0.0, 0.0) | vec4(0.0, 3.5, 0.0, 0.0) | vec4(1.0, -20.125, 0.0, -2.0) | vec4(1.0, -0.5, 0.0, -2.0) | vec4(1.0, 36.8125, 0.0, 0.0) | vec4(0.0, -8.25, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_ivec2_to_ivec4
		version 310 es
		values
		{
			input bool in0 = [ true | false | false | false | true | true | true | false ];
			input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
			output ivec4 out0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, -32, 64) | ivec4(0, 2, 0, 0) | ivec4(0, 3, 0, 0) | ivec4(1, -20, 0, -2) | ivec4(1, 0, 0, -2) | ivec4(1, 36, 0, 0) | ivec4(0, -8, 1, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_ivec2_to_bvec4
		version 310 es
		values
		{
			input bool in0 = [ true | false | false | false | true | true | true | false ];
			input float in1 = [ 1.0 | 0.0 | 2.0 | 3.5 | -20.125 | -0.5 | 36.8125 | -8.25 ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
			output bvec4 out0 = [ bvec4(true, true, true, true) | bvec4(false, false, true, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, false, true) | bvec4(true, true, false, true) | bvec4(true, true, false, false) | bvec4(false, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_uvec3_to_vec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ];
			input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ];
			output vec4 out0 = [ vec4(1.0, 0.0, 0.0, 0.0) | vec4(-20.125, 0.0, 0.0, 0.0) | vec4(-8.25, 1.0, 1.0, 1.0) | vec4(-0.5, 0.0, 2.0, 4.0) | vec4(0.0, 0.0, 0.0, 0.0) | vec4(2.0, 1.0, 1.0, 1.0) | vec4(3.5, 0.0, 2.0, 4.0) | vec4(36.8125, 32.0, 64.0, 51.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec3_to_ivec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ];
			input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ];
			output ivec4 out0 = [ ivec4(1, 0, 0, 0) | ivec4(-20, 0, 0, 0) | ivec4(-8, 1, 1, 1) | ivec4(0, 0, 2, 4) | ivec4(0, 0, 0, 0) | ivec4(2, 1, 1, 1) | ivec4(3, 0, 2, 4) | ivec4(36, 32, 64, 51) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec3_to_bvec4
		version 310 es
		values
		{
			input float in0 = [ 1.0 | -20.125 | -8.25 | -0.5 | 0.0 | 2.0 | 3.5 | 36.8125 ];
			input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(32, 64, 51) ];
			output bvec4 out0 = [ bvec4(true, false, false, false) | bvec4(true, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(true, false, true, true) | bvec4(true, true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uvec2_bool_to_vec4
		version 310 es
		values
		{
			input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ];
			input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ];
			input bool in2 = [ false | false | true | true | true | true | true | false | false | false ];
			output vec4 out0 = [ vec4(1.0, 0.0, 2.0, 0.0) | vec4(-192.0, 1.0, 1.0, 0.0) | vec4(-66.0, 0.0, 0.0, 1.0) | vec4(-12.0, 0.0, 2.0, 1.0) | vec4(0.0, 32.0, 64.0, 1.0) | vec4(2.0, 0.0, 0.0, 1.0) | vec4(11.0, 32.0, 64.0, 1.0) | vec4(8.0, 0.0, 0.0, 0.0) | vec4(255.0, 1.0, 1.0, 0.0) | vec4(5.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_uvec2_bool_to_ivec4
		version 310 es
		values
		{
			input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ];
			input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ];
			input bool in2 = [ false | false | true | true | true | true | true | false | false | false ];
			output ivec4 out0 = [ ivec4(1, 0, 2, 0) | ivec4(-192, 1, 1, 0) | ivec4(-66, 0, 0, 1) | ivec4(-12, 0, 2, 1) | ivec4(0, 32, 64, 1) | ivec4(2, 0, 0, 1) | ivec4(11, 32, 64, 1) | ivec4(8, 0, 0, 0) | ivec4(255, 1, 1, 0) | ivec4(5, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_uvec2_bool_to_bvec4
		version 310 es
		values
		{
			input int in0 = [ 1 | -192 | -66 | -12 | 0 | 2 | 11 | 8 | 255 | 5 ];
			input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(32, 64) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ];
			input bool in2 = [ false | false | true | true | true | true | true | false | false | false ];
			output bvec4 out0 = [ bvec4(true, false, true, false) | bvec4(true, true, true, false) | bvec4(true, false, false, true) | bvec4(true, false, true, true) | bvec4(false, true, true, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, false) | bvec4(true, true, true, false) | bvec4(true, false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_vec2_to_uvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) | vec2(0.5, 2.25) | vec2(1.0, 1.25) ];
			input vec2 in1 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.0, 0.5) | vec2(0.75, 0.0322580645161) ];
			output uvec4 out0 = [ uvec4(32, 64, 0, 2) | uvec4(0, 0, 1, 1) | uvec4(0, 0, 32, 64) | uvec4(0, 2, 0, 0) | uvec4(1, 1, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_bvec2_to_uvec4
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, false) ];
			input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) ];
			output uvec4 out0 = [ uvec4(1, 0, 1, 1) | uvec4(0, 1, 0, 0) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_to_uvec4
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 36.8125 | 0.0 | 20.125 | 1.0 | 0.5 | 8.25 | 3.5 ];
			input float in1 = [ 1.0 | 8.25 | 2.0 | 20.125 | 36.8125 | 0.0 | 0.5 | 3.5 ];
			input float in2 = [ 0.0 | 8.25 | 2.0 | 1.0 | 36.8125 | 20.125 | 0.5 | 3.5 ];
			input float in3 = [ 1.0 | 8.25 | 0.0 | 2.0 | 20.125 | 3.5 | 0.5 | 36.8125 ];
			output uvec4 out0 = [ uvec4(2, 1, 0, 1) | uvec4(36, 8, 8, 8) | uvec4(0, 2, 2, 0) | uvec4(20, 20, 1, 2) | uvec4(1, 36, 36, 20) | uvec4(0, 0, 20, 3) | uvec4(8, 0, 0, 0) | uvec4(3, 3, 3, 36) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_to_uvec4
		version 310 es
		values
		{
			input int in0 = [ 192 | 2 | 12 | 11 | 0 | 8 | 5 | 66 | 1 | 255 ];
			input int in1 = [ 66 | 12 | 5 | 1 | 0 | 192 | 8 | 255 | 11 | 2 ];
			input int in2 = [ 192 | 5 | 1 | 66 | 255 | 11 | 8 | 12 | 2 | 0 ];
			input int in3 = [ 255 | 5 | 11 | 12 | 2 | 1 | 66 | 0 | 8 | 192 ];
			output uvec4 out0 = [ uvec4(192, 66, 192, 255) | uvec4(2, 12, 5, 5) | uvec4(12, 5, 1, 11) | uvec4(11, 1, 66, 12) | uvec4(0, 0, 255, 2) | uvec4(8, 192, 11, 1) | uvec4(5, 8, 8, 66) | uvec4(66, 255, 12, 0) | uvec4(1, 11, 2, 8) | uvec4(255, 2, 0, 192) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_uint_to_uvec4
		version 310 es
		values
		{
			input uint in0 = [ 255 | 8 | 3 | 193 | 45 | 2 | 0 | 12 | 9 | 10 ];
			input uint in1 = [ 255 | 45 | 0 | 12 | 2 | 10 | 8 | 9 | 193 | 3 ];
			input uint in2 = [ 3 | 0 | 2 | 9 | 12 | 10 | 255 | 45 | 193 | 8 ];
			input uint in3 = [ 2 | 255 | 10 | 193 | 8 | 12 | 3 | 9 | 0 | 45 ];
			output uvec4 out0 = [ uvec4(255, 255, 3, 2) | uvec4(8, 45, 0, 255) | uvec4(3, 0, 2, 10) | uvec4(193, 12, 9, 193) | uvec4(45, 2, 12, 8) | uvec4(2, 10, 10, 12) | uvec4(0, 8, 255, 3) | uvec4(12, 9, 45, 9) | uvec4(9, 193, 193, 0) | uvec4(10, 3, 8, 45) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_to_uvec4
		version 310 es
		values
		{
			input bool in0 = [ false | true ];
			input bool in1 = [ false | true ];
			input bool in2 = [ true | false ];
			input bool in3 = [ true | false ];
			output uvec4 out0 = [ uvec4(0, 0, 1, 1) | uvec4(1, 1, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_to_uvec4
		version 310 es
		values
		{
			input bool in0 = [ true | false | false | true | false | true | true | true | false | false ];
			input float in1 = [ 20.125 | 0.0 | 1.0 | 3.5 | 1.0 | 0.0 | 0.5 | 8.25 | 2.0 | 36.8125 ];
			input int in2 = [ 66 | 192 | 1 | 2 | 5 | 11 | 8 | 12 | 255 | 0 ];
			input bool in3 = [ true | true | true | true | false | true | false | false | false | false ];
			output uvec4 out0 = [ uvec4(1, 20, 66, 1) | uvec4(0, 0, 192, 1) | uvec4(0, 1, 1, 1) | uvec4(1, 3, 2, 1) | uvec4(0, 1, 5, 0) | uvec4(1, 0, 11, 1) | uvec4(1, 0, 8, 0) | uvec4(1, 8, 12, 0) | uvec4(0, 2, 255, 0) | uvec4(0, 36, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_to_uvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.0, 0.5) ];
			input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 2) | ivec2(32, 64) | ivec2(0, 0) | ivec2(0, 0) ];
			output uvec4 out0 = [ uvec4(0, 2, 1, 1) | uvec4(1, 1, 0, 2) | uvec4(32, 64, 32, 64) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec2_to_uvec4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(32.0, 64.0) | vec2(0.75, 0.0322580645161) | vec2(0.5, 2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) ];
			input bvec2 in1 = [ bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, true) ];
			output uvec4 out0 = [ uvec4(32, 64, 0, 0) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 1, 0) | uvec4(0, 0, 0, 1) | uvec4(1, 1, 1, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_to_uvec4
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, false, false) ];
			input float in1 = [ 2.0 | 0.0 | 36.8125 | 0.5 | 1.0 | 8.25 | 3.5 | 20.125 ];
			output uvec4 out0 = [ uvec4(1, 0, 0, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 1, 0, 36) | uvec4(0, 0, 0, 0) | uvec4(0, 0, 0, 1) | uvec4(0, 1, 0, 8) | uvec4(1, 0, 0, 3) | uvec4(0, 0, 0, 20) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec3_float_to_uvec4
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.5, 2.25, 4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(0.5, 2.25, 4.875) | vec3(32.0, 64.0, 51.0) | vec3(1.0, 1.25, 1.125) | vec3(0.75, 0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) ];
			input float in1 = [ 8.25 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.5 | 20.125 | 3.5 ];
			output uvec4 out0 = [ uvec4(0, 2, 4, 8) | uvec4(1, 1, 1, 1) | uvec4(0, 0, 0, 0) | uvec4(0, 2, 4, 36) | uvec4(32, 64, 51, 2) | uvec4(1, 1, 1, 0) | uvec4(0, 0, 0, 20) | uvec4(0, 0, 0, 3) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_ivec2_int_to_uvec4
		version 310 es
		values
		{
			input int in0 = [ 8 | 1 | 11 | 192 | 255 | 12 | 66 | 2 | 0 | 5 ];
			input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(32, 64) | ivec2(0, 2) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(32, 64) | ivec2(0, 0) ];
			input int in2 = [ 2 | 192 | 12 | 0 | 8 | 1 | 66 | 255 | 11 | 5 ];
			output uvec4 out0 = [ uvec4(8, 1, 1, 2) | uvec4(1, 0, 0, 192) | uvec4(11, 1, 1, 12) | uvec4(192, 32, 64, 0) | uvec4(255, 0, 2, 8) | uvec4(12, 0, 2, 1) | uvec4(66, 0, 0, 66) | uvec4(2, 0, 0, 255) | uvec4(0, 32, 64, 11) | uvec4(5, 0, 0, 5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_ivec2_to_uvec4
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true | false | false | true ];
			input float in1 = [ 8.25 | 0.5 | 2.0 | 20.125 | 0.0 | 36.8125 | 3.5 | 1.0 ];
			input ivec2 in2 = [ ivec2(32, 64) | ivec2(1, 1) | ivec2(0, 2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) ];
			output uvec4 out0 = [ uvec4(1, 8, 32, 64) | uvec4(1, 0, 1, 1) | uvec4(0, 2, 0, 2) | uvec4(0, 20, 0, 0) | uvec4(1, 0, 0, 0) | uvec4(0, 36, 0, 2) | uvec4(0, 3, 1, 1) | uvec4(1, 1, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_uvec3_to_uvec4
		version 310 es
		values
		{
			input float in0 = [ 8.25 | 20.125 | 1.0 | 0.5 | 3.5 | 2.0 | 36.8125 | 0.0 ];
			input uvec3 in1 = [ uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(0, 2, 4) | uvec3(32, 64, 51) | uvec3(0, 2, 4) | uvec3(1, 1, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 0) ];
			output uvec4 out0 = [ uvec4(8, 0, 0, 0) | uvec4(20, 0, 0, 0) | uvec4(1, 0, 2, 4) | uvec4(0, 32, 64, 51) | uvec4(3, 0, 2, 4) | uvec4(2, 1, 1, 1) | uvec4(36, 1, 1, 1) | uvec4(0, 0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uvec2_bool_to_uvec4
		version 310 es
		values
		{
			input int in0 = [ 2 | 1 | 11 | 66 | 192 | 12 | 8 | 255 | 0 | 5 ];
			input uvec2 in1 = [ uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) ];
			input bool in2 = [ true | false | false | false | false | true | true | true | false | true ];
			output uvec4 out0 = [ uvec4(2, 1, 1, 1) | uvec4(1, 0, 0, 0) | uvec4(11, 0, 0, 0) | uvec4(66, 0, 2, 0) | uvec4(192, 0, 0, 0) | uvec4(12, 0, 2, 1) | uvec4(8, 32, 64, 1) | uvec4(255, 1, 1, 1) | uvec4(0, 32, 64, 0) | uvec4(5, 0, 0, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_float_float_to_vec3
		version 310 es
		values
		{
			input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ];
			input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ];
			input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ];
			output vec3 out0 = [ vec3(-0.5, 2.0, 1.0) | vec3(1.0, -20.125, 3.5) | vec3(3.5, 3.5, 2.0) | vec3(-8.25, 36.8125, -8.25) | vec3(36.8125, -8.25, -20.125) | vec3(0.0, 1.0, -0.5) | vec3(2.0, -0.5, 36.8125) | vec3(-20.125, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_float_float_to_ivec3
		version 310 es
		values
		{
			input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ];
			input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ];
			input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ];
			output ivec3 out0 = [ ivec3(0, 2, 1) | ivec3(1, -20, 3) | ivec3(3, 3, 2) | ivec3(-8, 36, -8) | ivec3(36, -8, -20) | ivec3(0, 1, 0) | ivec3(2, 0, 36) | ivec3(-20, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_float_float_to_bvec3
		version 310 es
		values
		{
			input float in0 = [ -0.5 | 1.0 | 3.5 | -8.25 | 36.8125 | 0.0 | 2.0 | -20.125 ];
			input float in1 = [ 2.0 | -20.125 | 3.5 | 36.8125 | -8.25 | 1.0 | -0.5 | 0.0 ];
			input float in2 = [ 1.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 | 0.0 ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(true, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_int_int_to_vec3
		version 310 es
		values
		{
			input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ];
			input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ];
			input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ];
			output vec3 out0 = [ vec3(-192.0, 5.0, -192.0) | vec3(5.0, 1.0, 1.0) | vec3(-12.0, 8.0, 2.0) | vec3(0.0, 0.0, 5.0) | vec3(11.0, 2.0, -12.0) | vec3(8.0, -192.0, 8.0) | vec3(1.0, -12.0, 11.0) | vec3(-66.0, 255.0, 0.0) | vec3(255.0, -66.0, 255.0) | vec3(2.0, 11.0, -66.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_int_int_to_ivec3
		version 310 es
		values
		{
			input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ];
			input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ];
			input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ];
			output ivec3 out0 = [ ivec3(-192, 5, -192) | ivec3(5, 1, 1) | ivec3(-12, 8, 2) | ivec3(0, 0, 5) | ivec3(11, 2, -12) | ivec3(8, -192, 8) | ivec3(1, -12, 11) | ivec3(-66, 255, 0) | ivec3(255, -66, 255) | ivec3(2, 11, -66) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_int_int_to_bvec3
		version 310 es
		values
		{
			input int in0 = [ -192 | 5 | -12 | 0 | 11 | 8 | 1 | -66 | 255 | 2 ];
			input int in1 = [ 5 | 1 | 8 | 0 | 2 | -192 | -12 | 255 | -66 | 11 ];
			input int in2 = [ -192 | 1 | 2 | 5 | -12 | 8 | 11 | 0 | 255 | -66 ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_to_vec3
		version 310 es
		values
		{
			input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ];
			input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ];
			input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ];
			output vec3 out0 = [ vec3(8.0, 193.0, 12.0) | vec3(45.0, 2.0, 2.0) | vec3(2.0, 9.0, 193.0) | vec3(3.0, 8.0, 255.0) | vec3(255.0, 0.0, 8.0) | vec3(193.0, 255.0, 10.0) | vec3(12.0, 45.0, 45.0) | vec3(0.0, 3.0, 0.0) | vec3(9.0, 10.0, 3.0) | vec3(10.0, 12.0, 9.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_to_ivec3
		version 310 es
		values
		{
			input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ];
			input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ];
			input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ];
			output ivec3 out0 = [ ivec3(8, 193, 12) | ivec3(45, 2, 2) | ivec3(2, 9, 193) | ivec3(3, 8, 255) | ivec3(255, 0, 8) | ivec3(193, 255, 10) | ivec3(12, 45, 45) | ivec3(0, 3, 0) | ivec3(9, 10, 3) | ivec3(10, 12, 9) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_to_bvec3
		version 310 es
		values
		{
			input uint in0 = [ 8 | 45 | 2 | 3 | 255 | 193 | 12 | 0 | 9 | 10 ];
			input uint in1 = [ 193 | 2 | 9 | 8 | 0 | 255 | 45 | 3 | 10 | 12 ];
			input uint in2 = [ 12 | 2 | 193 | 255 | 8 | 10 | 45 | 0 | 3 | 9 ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_to_vec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ true | false ];
			output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_to_ivec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ true | false ];
			output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_to_bvec3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ true | false ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_to_vec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true | false | true | false | false | true ];
			input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ];
			input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ];
			output vec3 out0 = [ vec3(1.0, 0.0, 8.0) | vec3(1.0, 36.8125, -192.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, -8.25, 2.0) | vec3(1.0, 1.0, 1.0) | vec3(0.0, 3.5, -12.0) | vec3(1.0, 1.0, 11.0) | vec3(0.0, -0.5, 255.0) | vec3(0.0, -20.125, 5.0) | vec3(1.0, 2.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_to_ivec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true | false | true | false | false | true ];
			input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ];
			input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ];
			output ivec3 out0 = [ ivec3(1, 0, 8) | ivec3(1, 36, -192) | ivec3(0, 0, -66) | ivec3(0, -8, 2) | ivec3(1, 1, 1) | ivec3(0, 3, -12) | ivec3(1, 1, 11) | ivec3(0, 0, 255) | ivec3(0, -20, 5) | ivec3(1, 2, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_to_bvec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true | false | true | false | false | true ];
			input float in1 = [ 0.0 | 36.8125 | 0.0 | -8.25 | 1.0 | 3.5 | 1.0 | -0.5 | -20.125 | 2.0 ];
			input int in2 = [ 8 | -192 | -66 | 2 | 1 | -12 | 11 | 255 | 5 | 0 ];
			output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(true, true, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, true, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_bool_to_vec3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ];
			input bool in1 = [ false | true | true | true | false ];
			output vec3 out0 = [ vec3(1.0, 1.25, 0.0) | vec3(-0.75, -0.0322580645161, 1.0) | vec3(-32.0, 64.0, 1.0) | vec3(-0.5, -2.25, 1.0) | vec3(0.0, 0.5, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bool_to_ivec3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ];
			input bool in1 = [ false | true | true | true | false ];
			output ivec3 out0 = [ ivec3(1, 1, 0) | ivec3(0, 0, 1) | ivec3(-32, 64, 1) | ivec3(0, -2, 1) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bool_to_bvec3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) ];
			input bool in1 = [ false | true | true | true | false ];
			output bvec3 out0 = [ bvec3(true, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, true, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_float_to_vec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ];
			input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ];
			output vec3 out0 = [ vec3(1.0, 0.0, -20.125) | vec3(0.0, 1.0, 2.0) | vec3(0.0, 1.0, 36.8125) | vec3(1.0, 0.0, 1.0) | vec3(0.0, 0.0, 3.5) | vec3(0.0, 0.0, 0.0) | vec3(1.0, 1.0, -8.25) | vec3(0.0, 0.0, -0.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_float_to_ivec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ];
			input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ];
			output ivec3 out0 = [ ivec3(1, 0, -20) | ivec3(0, 1, 2) | ivec3(0, 1, 36) | ivec3(1, 0, 1) | ivec3(0, 0, 3) | ivec3(0, 0, 0) | ivec3(1, 1, -8) | ivec3(0, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_float_to_bvec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) ];
			input float in1 = [ -20.125 | 2.0 | 36.8125 | 1.0 | 3.5 | 0.0 | -8.25 | -0.5 ];
			output bvec3 out0 = [ bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_int_to_vec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ];
			output vec3 out0 = [ vec3(1.0, 1.0, 1.0) | vec3(0.0, 0.0, -66.0) | vec3(0.0, 0.0, 255.0) | vec3(1.0, 0.0, 8.0) | vec3(0.0, 0.0, -192.0) | vec3(0.0, 1.0, 2.0) | vec3(1.0, 0.0, 5.0) | vec3(0.0, 1.0, 11.0) | vec3(0.0, 0.0, -12.0) | vec3(1.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_int_to_ivec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ];
			output ivec3 out0 = [ ivec3(1, 1, 1) | ivec3(0, 0, -66) | ivec3(0, 0, 255) | ivec3(1, 0, 8) | ivec3(0, 0, -192) | ivec3(0, 1, 2) | ivec3(1, 0, 5) | ivec3(0, 1, 11) | ivec3(0, 0, -12) | ivec3(1, 1, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_int_to_bvec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) ];
			input int in1 = [ 1 | -66 | 255 | 8 | -192 | 2 | 5 | 11 | -12 | 0 ];
			output bvec3 out0 = [ bvec3(true, true, true) | bvec3(false, false, true) | bvec3(false, false, true) | bvec3(true, false, true) | bvec3(false, false, true) | bvec3(false, true, true) | bvec3(true, false, true) | bvec3(false, true, true) | bvec3(false, false, true) | bvec3(true, true, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_ivec2_to_vec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ];
			output vec3 out0 = [ vec3(1.0, 0.0, -2.0) | vec3(1.0, 0.0, 0.0) | vec3(0.0, 0.0, 0.0) | vec3(0.0, 1.0, 1.0) | vec3(1.0, -32.0, 64.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_ivec2_to_ivec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ];
			output ivec3 out0 = [ ivec3(1, 0, -2) | ivec3(1, 0, 0) | ivec3(0, 0, 0) | ivec3(0, 1, 1) | ivec3(1, -32, 64) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_ivec2_to_bvec3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) ];
			output bvec3 out0 = [ bvec3(true, false, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec2_to_vec3
		version 310 es
		values
		{
			input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ];
			input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ];
			output vec3 out0 = [ vec3(-20.125, 0.0, 0.0) | vec3(36.8125, 0.0, 2.0) | vec3(-8.25, 32.0, 64.0) | vec3(2.0, 0.0, 0.0) | vec3(-0.5, 0.0, 2.0) | vec3(0.0, 0.0, 0.0) | vec3(3.5, 1.0, 1.0) | vec3(1.0, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec2_to_ivec3
		version 310 es
		values
		{
			input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ];
			input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ];
			output ivec3 out0 = [ ivec3(-20, 0, 0) | ivec3(36, 0, 2) | ivec3(-8, 32, 64) | ivec3(2, 0, 0) | ivec3(0, 0, 2) | ivec3(0, 0, 0) | ivec3(3, 1, 1) | ivec3(1, 1, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec2_to_bvec3
		version 310 es
		values
		{
			input float in0 = [ -20.125 | 36.8125 | -8.25 | 2.0 | -0.5 | 0.0 | 3.5 | 1.0 ];
			input uvec2 in1 = [ uvec2(0, 0) | uvec2(0, 2) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(1, 1) ];
			output bvec3 out0 = [ bvec3(true, false, false) | bvec3(true, false, true) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(true, false, true) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_to_uvec3
		version 310 es
		values
		{
			input float in0 = [ 8.25 | 20.125 | 2.0 | 3.5 | 0.5 | 36.8125 | 1.0 | 0.0 ];
			input float in1 = [ 1.0 | 0.0 | 3.5 | 36.8125 | 8.25 | 2.0 | 0.5 | 20.125 ];
			input float in2 = [ 20.125 | 0.5 | 8.25 | 36.8125 | 1.0 | 0.0 | 3.5 | 2.0 ];
			output uvec3 out0 = [ uvec3(8, 1, 20) | uvec3(20, 0, 0) | uvec3(2, 3, 8) | uvec3(3, 36, 36) | uvec3(0, 8, 1) | uvec3(36, 2, 0) | uvec3(1, 0, 3) | uvec3(0, 20, 2) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case int_int_int_to_uvec3
		version 310 es
		values
		{
			input int in0 = [ 1 | 255 | 192 | 2 | 5 | 12 | 0 | 11 | 8 | 66 ];
			input int in1 = [ 192 | 66 | 5 | 8 | 11 | 1 | 0 | 255 | 12 | 2 ];
			input int in2 = [ 192 | 5 | 1 | 11 | 66 | 8 | 12 | 0 | 2 | 255 ];
			output uvec3 out0 = [ uvec3(1, 192, 192) | uvec3(255, 66, 5) | uvec3(192, 5, 1) | uvec3(2, 8, 11) | uvec3(5, 11, 66) | uvec3(12, 1, 8) | uvec3(0, 0, 12) | uvec3(11, 255, 0) | uvec3(8, 12, 2) | uvec3(66, 2, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_to_uvec3
		version 310 es
		values
		{
			input uint in0 = [ 193 | 9 | 45 | 255 | 2 | 0 | 10 | 8 | 12 | 3 ];
			input uint in1 = [ 3 | 45 | 2 | 9 | 10 | 0 | 8 | 12 | 255 | 193 ];
			input uint in2 = [ 2 | 3 | 9 | 10 | 255 | 8 | 12 | 0 | 193 | 45 ];
			output uvec3 out0 = [ uvec3(193, 3, 2) | uvec3(9, 45, 3) | uvec3(45, 2, 9) | uvec3(255, 9, 10) | uvec3(2, 10, 255) | uvec3(0, 0, 8) | uvec3(10, 8, 12) | uvec3(8, 12, 0) | uvec3(12, 255, 193) | uvec3(3, 193, 45) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_to_uvec3
		version 310 es
		values
		{
			input bool in0 = [ false | true ];
			input bool in1 = [ false | true ];
			input bool in2 = [ true | false ];
			output uvec3 out0 = [ uvec3(0, 0, 1) | uvec3(1, 1, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_to_uvec3
		version 310 es
		values
		{
			input bool in0 = [ true | false | true | false | false | true | false | true | true | false ];
			input float in1 = [ 36.8125 | 20.125 | 1.0 | 0.0 | 3.5 | 1.0 | 2.0 | 0.5 | 0.0 | 8.25 ];
			input int in2 = [ 1 | 0 | 8 | 66 | 2 | 11 | 192 | 5 | 12 | 255 ];
			output uvec3 out0 = [ uvec3(1, 36, 1) | uvec3(0, 20, 0) | uvec3(1, 1, 8) | uvec3(0, 0, 66) | uvec3(0, 3, 2) | uvec3(1, 1, 11) | uvec3(0, 2, 192) | uvec3(1, 0, 5) | uvec3(1, 0, 12) | uvec3(0, 8, 255) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_bool_to_uvec3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(32.0, 64.0) | vec2(0.5, 2.25) | vec2(1.0, 1.25) | vec2(0.75, 0.0322580645161) ];
			input bool in1 = [ false | false | true | true | true ];
			output uvec3 out0 = [ uvec3(0, 0, 0) | uvec3(32, 64, 0) | uvec3(0, 2, 1) | uvec3(1, 1, 1) | uvec3(0, 0, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_float_to_uvec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) ];
			input float in1 = [ 8.25 | 36.8125 | 20.125 | 2.0 | 0.0 | 1.0 | 0.5 | 3.5 ];
			output uvec3 out0 = [ uvec3(1, 1, 8) | uvec3(1, 0, 36) | uvec3(0, 1, 20) | uvec3(0, 0, 2) | uvec3(1, 0, 0) | uvec3(0, 1, 1) | uvec3(0, 0, 0) | uvec3(0, 0, 3) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_int_to_uvec3
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(true, true) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) ];
			input int in1 = [ 255 | 1 | 2 | 5 | 0 | 11 | 192 | 12 | 8 | 66 ];
			output uvec3 out0 = [ uvec3(1, 1, 255) | uvec3(0, 1, 1) | uvec3(0, 0, 2) | uvec3(1, 1, 5) | uvec3(0, 0, 0) | uvec3(1, 0, 11) | uvec3(0, 0, 192) | uvec3(0, 0, 12) | uvec3(0, 1, 8) | uvec3(1, 0, 66) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_ivec2_to_uvec3
		version 310 es
		values
		{
			input bool in0 = [ true | false | true | true | false ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(32, 64) ];
			output uvec3 out0 = [ uvec3(1, 0, 0) | uvec3(0, 0, 2) | uvec3(1, 1, 1) | uvec3(1, 0, 0) | uvec3(0, 32, 64) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_uvec2_to_uvec3
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 8.25 | 20.125 | 3.5 | 0.0 | 0.5 | 36.8125 | 1.0 ];
			input uvec2 in1 = [ uvec2(0, 2) | uvec2(1, 1) | uvec2(32, 64) | uvec2(0, 0) | uvec2(0, 2) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 0) ];
			output uvec3 out0 = [ uvec3(2, 0, 2) | uvec3(8, 1, 1) | uvec3(20, 32, 64) | uvec3(3, 0, 0) | uvec3(0, 0, 2) | uvec3(0, 0, 0) | uvec3(36, 1, 1) | uvec3(1, 0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_to_vec2
		version 310 es
		values
		{
			input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ];
			input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ];
			output vec2 out0 = [ vec2(-0.5, 1.0) | vec2(-20.125, -20.125) | vec2(1.0, 0.0) | vec2(2.0, 3.5) | vec2(3.5, -8.25) | vec2(36.8125, 36.8125) | vec2(-8.25, -0.5) | vec2(0.0, 2.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_to_ivec2
		version 310 es
		values
		{
			input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ];
			input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ];
			output ivec2 out0 = [ ivec2(0, 1) | ivec2(-20, -20) | ivec2(1, 0) | ivec2(2, 3) | ivec2(3, -8) | ivec2(36, 36) | ivec2(-8, 0) | ivec2(0, 2) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_to_bvec2
		version 310 es
		values
		{
			input float in0 = [ -0.5 | -20.125 | 1.0 | 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 ];
			input float in1 = [ 1.0 | -20.125 | 0.0 | 3.5 | -8.25 | 36.8125 | -0.5 | 2.0 ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_int_to_vec2
		version 310 es
		values
		{
			input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ];
			input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ];
			output vec2 out0 = [ vec2(2.0, -192.0) | vec2(-66.0, 8.0) | vec2(0.0, 1.0) | vec2(5.0, 0.0) | vec2(-12.0, 5.0) | vec2(8.0, -66.0) | vec2(-192.0, 2.0) | vec2(1.0, 255.0) | vec2(11.0, 11.0) | vec2(255.0, -12.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_int_to_ivec2
		version 310 es
		values
		{
			input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ];
			input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ];
			output ivec2 out0 = [ ivec2(2, -192) | ivec2(-66, 8) | ivec2(0, 1) | ivec2(5, 0) | ivec2(-12, 5) | ivec2(8, -66) | ivec2(-192, 2) | ivec2(1, 255) | ivec2(11, 11) | ivec2(255, -12) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_int_to_bvec2
		version 310 es
		values
		{
			input int in0 = [ 2 | -66 | 0 | 5 | -12 | 8 | -192 | 1 | 11 | 255 ];
			input int in1 = [ -192 | 8 | 1 | 0 | 5 | -66 | 2 | 255 | 11 | -12 ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_uint_to_vec2
		version 310 es
		values
		{
			input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ];
			input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ];
			output vec2 out0 = [ vec2(9.0, 8.0) | vec2(12.0, 9.0) | vec2(0.0, 45.0) | vec2(255.0, 2.0) | vec2(8.0, 12.0) | vec2(45.0, 193.0) | vec2(3.0, 255.0) | vec2(2.0, 0.0) | vec2(10.0, 3.0) | vec2(193.0, 10.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_uint_to_ivec2
		version 310 es
		values
		{
			input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ];
			input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ];
			output ivec2 out0 = [ ivec2(9, 8) | ivec2(12, 9) | ivec2(0, 45) | ivec2(255, 2) | ivec2(8, 12) | ivec2(45, 193) | ivec2(3, 255) | ivec2(2, 0) | ivec2(10, 3) | ivec2(193, 10) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_uint_to_bvec2
		version 310 es
		values
		{
			input uint in0 = [ 9 | 12 | 0 | 255 | 8 | 45 | 3 | 2 | 10 | 193 ];
			input uint in1 = [ 8 | 9 | 45 | 2 | 12 | 193 | 255 | 0 | 3 | 10 ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_bool_to_vec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			output vec2 out0 = [ vec2(1.0, 1.0) | vec2(0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_bool_to_ivec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			output ivec2 out0 = [ ivec2(1, 1) | ivec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_bool_to_bvec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_int_to_vec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ];
			input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ];
			output vec2 out0 = [ vec2(0.0, -66.0) | vec2(3.5, 1.0) | vec2(0.0, 255.0) | vec2(2.0, -192.0) | vec2(-8.25, 8.0) | vec2(36.8125, 2.0) | vec2(-20.125, 0.0) | vec2(1.0, 5.0) | vec2(1.0, -12.0) | vec2(-0.5, 11.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_int_to_ivec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ];
			input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ];
			output ivec2 out0 = [ ivec2(0, -66) | ivec2(3, 1) | ivec2(0, 255) | ivec2(2, -192) | ivec2(-8, 8) | ivec2(36, 2) | ivec2(-20, 0) | ivec2(1, 5) | ivec2(1, -12) | ivec2(0, 11) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_int_to_bvec2
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 3.5 | 0.0 | 2.0 | -8.25 | 36.8125 | -20.125 | 1.0 | 1.0 | -0.5 ];
			input int in1 = [ -66 | 1 | 255 | -192 | 8 | 2 | 0 | 5 | -12 | 11 ];
			output bvec2 out0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_bool_to_vec2
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ];
			input bool in1 = [ false | true | true | false | false | true | false | true ];
			output vec2 out0 = [ vec2(2.0, 0.0) | vec2(3.5, 1.0) | vec2(1.0, 1.0) | vec2(-20.125, 0.0) | vec2(-8.25, 0.0) | vec2(0.0, 1.0) | vec2(-0.5, 0.0) | vec2(36.8125, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_bool_to_ivec2
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ];
			input bool in1 = [ false | true | true | false | false | true | false | true ];
			output ivec2 out0 = [ ivec2(2, 0) | ivec2(3, 1) | ivec2(1, 1) | ivec2(-20, 0) | ivec2(-8, 0) | ivec2(0, 1) | ivec2(0, 0) | ivec2(36, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_bool_to_bvec2
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 3.5 | 1.0 | -20.125 | -8.25 | 0.0 | -0.5 | 36.8125 ];
			input bool in1 = [ false | true | true | false | false | true | false | true ];
			output bvec2 out0 = [ bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_bool_to_vec2
		version 310 es
		values
		{
			input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ];
			input bool in1 = [ true | false | false | false | true | false | true | false | true | true ];
			output vec2 out0 = [ vec2(255.0, 1.0) | vec2(2.0, 0.0) | vec2(-12.0, 0.0) | vec2(1.0, 0.0) | vec2(-192.0, 1.0) | vec2(5.0, 0.0) | vec2(8.0, 1.0) | vec2(0.0, 0.0) | vec2(-66.0, 1.0) | vec2(11.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_bool_to_ivec2
		version 310 es
		values
		{
			input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ];
			input bool in1 = [ true | false | false | false | true | false | true | false | true | true ];
			output ivec2 out0 = [ ivec2(255, 1) | ivec2(2, 0) | ivec2(-12, 0) | ivec2(1, 0) | ivec2(-192, 1) | ivec2(5, 0) | ivec2(8, 1) | ivec2(0, 0) | ivec2(-66, 1) | ivec2(11, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_bool_to_bvec2
		version 310 es
		values
		{
			input int in0 = [ 255 | 2 | -12 | 1 | -192 | 5 | 8 | 0 | -66 | 11 ];
			input bool in1 = [ true | false | false | false | true | false | true | false | true | true ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, false) | bvec2(true, false) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uint_to_vec2
		version 310 es
		values
		{
			input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ];
			input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ];
			output vec2 out0 = [ vec2(-66.0, 193.0) | vec2(1.0, 0.0) | vec2(-192.0, 2.0) | vec2(-12.0, 10.0) | vec2(5.0, 255.0) | vec2(255.0, 12.0) | vec2(11.0, 45.0) | vec2(0.0, 8.0) | vec2(2.0, 9.0) | vec2(8.0, 3.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uint_to_ivec2
		version 310 es
		values
		{
			input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ];
			input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ];
			output ivec2 out0 = [ ivec2(-66, 193) | ivec2(1, 0) | ivec2(-192, 2) | ivec2(-12, 10) | ivec2(5, 255) | ivec2(255, 12) | ivec2(11, 45) | ivec2(0, 8) | ivec2(2, 9) | ivec2(8, 3) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uint_to_bvec2
		version 310 es
		values
		{
			input int in0 = [ -66 | 1 | -192 | -12 | 5 | 255 | 11 | 0 | 2 | 8 ];
			input uint in1 = [ 193 | 0 | 2 | 10 | 255 | 12 | 45 | 8 | 9 | 3 ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_float_to_vec2
		version 310 es
		values
		{
			input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ];
			input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ];
			output vec2 out0 = [ vec2(12.0, -20.125) | vec2(0.0, 0.0) | vec2(8.0, 3.5) | vec2(193.0, -8.25) | vec2(3.0, 0.0) | vec2(10.0, 1.0) | vec2(9.0, 2.0) | vec2(2.0, 36.8125) | vec2(45.0, -0.5) | vec2(255.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = vec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_float_to_ivec2
		version 310 es
		values
		{
			input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ];
			input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ];
			output ivec2 out0 = [ ivec2(12, -20) | ivec2(0, 0) | ivec2(8, 3) | ivec2(193, -8) | ivec2(3, 0) | ivec2(10, 1) | ivec2(9, 2) | ivec2(2, 36) | ivec2(45, 0) | ivec2(255, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = ivec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_float_to_bvec2
		version 310 es
		values
		{
			input uint in0 = [ 12 | 0 | 8 | 193 | 3 | 10 | 9 | 2 | 45 | 255 ];
			input float in1 = [ -20.125 | 0.0 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 | -0.5 | 1.0 ];
			output bvec2 out0 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, false) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) | bvec2(true, true) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = bvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_to_uvec2
		version 310 es
		values
		{
			input float in0 = [ 8.25 | 36.8125 | 1.0 | 0.5 | 20.125 | 0.0 | 2.0 | 3.5 ];
			input float in1 = [ 0.5 | 36.8125 | 0.0 | 2.0 | 8.25 | 20.125 | 1.0 | 3.5 ];
			output uvec2 out0 = [ uvec2(8, 0) | uvec2(36, 36) | uvec2(1, 0) | uvec2(0, 2) | uvec2(20, 8) | uvec2(0, 20) | uvec2(2, 1) | uvec2(3, 3) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_int_to_uvec2
		version 310 es
		values
		{
			input int in0 = [ 0 | 12 | 8 | 11 | 255 | 66 | 192 | 2 | 5 | 1 ];
			input int in1 = [ 11 | 12 | 2 | 5 | 66 | 192 | 255 | 0 | 1 | 8 ];
			output uvec2 out0 = [ uvec2(0, 11) | uvec2(12, 12) | uvec2(8, 2) | uvec2(11, 5) | uvec2(255, 66) | uvec2(66, 192) | uvec2(192, 255) | uvec2(2, 0) | uvec2(5, 1) | uvec2(1, 8) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_uint_to_uvec2
		version 310 es
		values
		{
			input uint in0 = [ 3 | 9 | 10 | 193 | 8 | 0 | 255 | 45 | 2 | 12 ];
			input uint in1 = [ 0 | 2 | 12 | 3 | 10 | 9 | 45 | 193 | 255 | 8 ];
			output uvec2 out0 = [ uvec2(3, 0) | uvec2(9, 2) | uvec2(10, 12) | uvec2(193, 3) | uvec2(8, 10) | uvec2(0, 9) | uvec2(255, 45) | uvec2(45, 193) | uvec2(2, 255) | uvec2(12, 8) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bool_bool_to_uvec2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			output uvec2 out0 = [ uvec2(1, 1) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_int_to_uvec2
		version 310 es
		values
		{
			input float in0 = [ 8.25 | 1.0 | 0.5 | 3.5 | 2.0 | 0.0 | 36.8125 | 1.0 | 0.0 | 20.125 ];
			input int in1 = [ 0 | 255 | 12 | 5 | 192 | 2 | 66 | 11 | 1 | 8 ];
			output uvec2 out0 = [ uvec2(8, 0) | uvec2(1, 255) | uvec2(0, 12) | uvec2(3, 5) | uvec2(2, 192) | uvec2(0, 2) | uvec2(36, 66) | uvec2(1, 11) | uvec2(0, 1) | uvec2(20, 8) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_bool_to_uvec2
		version 310 es
		values
		{
			input float in0 = [ 3.5 | 1.0 | 8.25 | 0.5 | 2.0 | 36.8125 | 0.0 | 20.125 ];
			input bool in1 = [ true | false | true | false | true | false | false | true ];
			output uvec2 out0 = [ uvec2(3, 1) | uvec2(1, 0) | uvec2(8, 1) | uvec2(0, 0) | uvec2(2, 1) | uvec2(36, 0) | uvec2(0, 0) | uvec2(20, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_bool_to_uvec2
		version 310 es
		values
		{
			input int in0 = [ 12 | 11 | 0 | 5 | 8 | 255 | 2 | 1 | 66 | 192 ];
			input bool in1 = [ true | true | false | false | false | true | false | false | true | true ];
			output uvec2 out0 = [ uvec2(12, 1) | uvec2(11, 1) | uvec2(0, 0) | uvec2(5, 0) | uvec2(8, 0) | uvec2(255, 1) | uvec2(2, 0) | uvec2(1, 0) | uvec2(66, 1) | uvec2(192, 1) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uint_to_uvec2
		version 310 es
		values
		{
			input int in0 = [ 8 | 5 | 1 | 0 | 11 | 12 | 192 | 66 | 255 | 2 ];
			input uint in1 = [ 8 | 10 | 45 | 255 | 9 | 193 | 2 | 3 | 0 | 12 ];
			output uvec2 out0 = [ uvec2(8, 8) | uvec2(5, 10) | uvec2(1, 45) | uvec2(0, 255) | uvec2(11, 9) | uvec2(12, 193) | uvec2(192, 2) | uvec2(66, 3) | uvec2(255, 0) | uvec2(2, 12) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case uint_float_to_uvec2
		version 310 es
		values
		{
			input uint in0 = [ 9 | 45 | 8 | 3 | 10 | 2 | 193 | 12 | 255 | 0 ];
			input float in1 = [ 3.5 | 20.125 | 2.0 | 0.0 | 1.0 | 36.8125 | 8.25 | 1.0 | 0.0 | 0.5 ];
			output uvec2 out0 = [ uvec2(9, 3) | uvec2(45, 20) | uvec2(8, 2) | uvec2(3, 0) | uvec2(10, 1) | uvec2(2, 36) | uvec2(193, 8) | uvec2(12, 1) | uvec2(255, 0) | uvec2(0, 0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = uvec2(in0, in1);
				${OUTPUT}
			}
		""
	end


end # vector_combine
group matrix_combine "Matrix Combine Constructors"

	case vec2_vec2_to_mat2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
			input vec2 in1 = [ vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) ];
			output mat2 out0 = [ mat2(1.0, 1.25, 0.0, 0.5) | mat2(-32.0, 64.0, 1.0, 1.25) | mat2(-0.5, -2.25, -0.75, -0.0322580645161) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, -0.5, -2.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec2_bvec2_to_mat2
		version 310 es
		values
		{
			input bvec2 in0 = [ bvec2(false, true) | bvec2(true, true) | bvec2(true, false) | bvec2(false, false) | bvec2(false, false) ];
			input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, true) ];
			output mat2 out0 = [ mat2(0.0, 1.0, 0.0, 0.0) | mat2(1.0, 1.0, 1.0, 0.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 1.0, 1.0) | mat2(0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_to_mat2
		version 310 es
		values
		{
			input float in0 = [ -8.25 | 3.5 | 36.8125 | 2.0 | -20.125 | 1.0 | -0.5 | 0.0 ];
			input float in1 = [ 3.5 | -20.125 | 1.0 | 0.0 | -8.25 | 2.0 | 36.8125 | -0.5 ];
			input float in2 = [ 36.8125 | 3.5 | 0.0 | -20.125 | -0.5 | -8.25 | 1.0 | 2.0 ];
			input float in3 = [ -0.5 | 0.0 | -8.25 | -20.125 | 2.0 | 3.5 | 1.0 | 36.8125 ];
			output mat2 out0 = [ mat2(-8.25, 3.5, 36.8125, -0.5) | mat2(3.5, -20.125, 3.5, 0.0) | mat2(36.8125, 1.0, 0.0, -8.25) | mat2(2.0, 0.0, -20.125, -20.125) | mat2(-20.125, -8.25, -0.5, 2.0) | mat2(1.0, 2.0, -8.25, 3.5) | mat2(-0.5, 36.8125, 1.0, 1.0) | mat2(0.0, -0.5, 2.0, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_to_mat2
		version 310 es
		values
		{
			input int in0 = [ 2 | 1 | -192 | 11 | -66 | 255 | 0 | 8 | -12 | 5 ];
			input int in1 = [ 11 | 255 | 5 | -66 | 8 | 2 | 0 | -12 | 1 | -192 ];
			input int in2 = [ 11 | 1 | -12 | 255 | 5 | 0 | 8 | -192 | 2 | -66 ];
			input int in3 = [ 2 | 1 | 0 | 8 | 255 | -66 | -192 | 11 | 5 | -12 ];
			output mat2 out0 = [ mat2(2.0, 11.0, 11.0, 2.0) | mat2(1.0, 255.0, 1.0, 1.0) | mat2(-192.0, 5.0, -12.0, 0.0) | mat2(11.0, -66.0, 255.0, 8.0) | mat2(-66.0, 8.0, 5.0, 255.0) | mat2(255.0, 2.0, 0.0, -66.0) | mat2(0.0, 0.0, 8.0, -192.0) | mat2(8.0, -12.0, -192.0, 11.0) | mat2(-12.0, 1.0, 2.0, 5.0) | mat2(5.0, -192.0, -66.0, -12.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case uint_uint_uint_uint_to_mat2
		version 310 es
		values
		{
			input uint in0 = [ 193 | 9 | 12 | 45 | 10 | 2 | 8 | 3 | 255 | 0 ];
			input uint in1 = [ 0 | 255 | 12 | 193 | 3 | 2 | 45 | 9 | 8 | 10 ];
			input uint in2 = [ 3 | 9 | 10 | 2 | 12 | 193 | 255 | 0 | 8 | 45 ];
			input uint in3 = [ 45 | 12 | 9 | 3 | 2 | 255 | 10 | 8 | 193 | 0 ];
			output mat2 out0 = [ mat2(193.0, 0.0, 3.0, 45.0) | mat2(9.0, 255.0, 9.0, 12.0) | mat2(12.0, 12.0, 10.0, 9.0) | mat2(45.0, 193.0, 2.0, 3.0) | mat2(10.0, 3.0, 12.0, 2.0) | mat2(2.0, 2.0, 193.0, 255.0) | mat2(8.0, 45.0, 255.0, 10.0) | mat2(3.0, 9.0, 0.0, 8.0) | mat2(255.0, 8.0, 8.0, 193.0) | mat2(0.0, 10.0, 45.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_to_mat2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ true | false ];
			input bool in2 = [ true | false ];
			input bool in3 = [ false | true ];
			output mat2 out0 = [ mat2(1.0, 1.0, 1.0, 0.0) | mat2(0.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_to_mat2
		version 310 es
		values
		{
			input bool in0 = [ false | true | false | true | true | false | true | true | false | false ];
			input float in1 = [ 2.0 | -0.5 | 0.0 | 1.0 | 1.0 | 36.8125 | 3.5 | 0.0 | -8.25 | -20.125 ];
			input int in2 = [ 0 | -12 | 8 | -192 | 1 | -66 | 5 | 11 | 2 | 255 ];
			input bool in3 = [ true | false | true | false | true | false | false | true | true | false ];
			output mat2 out0 = [ mat2(0.0, 2.0, 0.0, 1.0) | mat2(1.0, -0.5, -12.0, 0.0) | mat2(0.0, 0.0, 8.0, 1.0) | mat2(1.0, 1.0, -192.0, 0.0) | mat2(1.0, 1.0, 1.0, 1.0) | mat2(0.0, 36.8125, -66.0, 0.0) | mat2(1.0, 3.5, 5.0, 0.0) | mat2(1.0, 0.0, 11.0, 1.0) | mat2(0.0, -8.25, 2.0, 1.0) | mat2(0.0, -20.125, 255.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_to_mat2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) ];
			output mat2 out0 = [ mat2(1.0, 1.25, 0.0, -2.0) | mat2(-32.0, 64.0, 0.0, 0.0) | mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, -32.0, 64.0) | mat2(0.0, 0.5, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec2_to_mat2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) ];
			input bvec2 in1 = [ bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ];
			output mat2 out0 = [ mat2(-0.5, -2.25, 0.0, 0.0) | mat2(-32.0, 64.0, 1.0, 0.0) | mat2(1.0, 1.25, 0.0, 0.0) | mat2(-0.75, -0.0322580645161, 0.0, 1.0) | mat2(0.0, 0.5, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_to_mat2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, false, false) ];
			input float in1 = [ 36.8125 | -8.25 | 1.0 | -0.5 | 2.0 | -20.125 | 0.0 | 3.5 ];
			output mat2 out0 = [ mat2(1.0, 0.0, 0.0, 36.8125) | mat2(0.0, 1.0, 0.0, -8.25) | mat2(0.0, 0.0, 0.0, 1.0) | mat2(1.0, 1.0, 1.0, -0.5) | mat2(1.0, 0.0, 0.0, 2.0) | mat2(0.0, 1.0, 0.0, -20.125) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(0.0, 0.0, 0.0, 3.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec3_float_to_mat2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input float in1 = [ -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 | -8.25 | 2.0 | 1.0 ];
			output mat2 out0 = [ mat2(1.0, 1.25, 1.125, -0.5) | mat2(-0.5, -2.25, -4.875, -20.125) | mat2(-0.5, -2.25, -4.875, 0.0) | mat2(1.0, 1.25, 1.125, 36.8125) | mat2(0.0, 0.5, 0.75, 3.5) | mat2(-32.0, 64.0, -51.0, -8.25) | mat2(0.0, 0.5, 0.75, 2.0) | mat2(-0.75, -0.0322580645161, 0.0526315789474, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_ivec2_int_to_mat2
		version 310 es
		values
		{
			input int in0 = [ 8 | -192 | 2 | 0 | -66 | 255 | 5 | 1 | -12 | 11 ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(1, 1) ];
			input int in2 = [ 2 | 1 | -12 | 0 | 11 | 8 | 255 | -192 | 5 | -66 ];
			output mat2 out0 = [ mat2(8.0, 0.0, -2.0, 2.0) | mat2(-192.0, 0.0, 0.0, 1.0) | mat2(2.0, -32.0, 64.0, -12.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-66.0, 0.0, 0.0, 11.0) | mat2(255.0, -32.0, 64.0, 8.0) | mat2(5.0, 0.0, 0.0, 255.0) | mat2(1.0, 0.0, -2.0, -192.0) | mat2(-12.0, 1.0, 1.0, 5.0) | mat2(11.0, 1.0, 1.0, -66.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case bool_float_ivec2_to_mat2
		version 310 es
		values
		{
			input bool in0 = [ true | true | true | false | false | true | false | false ];
			input float in1 = [ 1.0 | -0.5 | -20.125 | 36.8125 | 2.0 | 0.0 | -8.25 | 3.5 ];
			input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) ];
			output mat2 out0 = [ mat2(1.0, 1.0, 0.0, 0.0) | mat2(1.0, -0.5, 0.0, 0.0) | mat2(1.0, -20.125, 1.0, 1.0) | mat2(0.0, 36.8125, 0.0, 0.0) | mat2(0.0, 2.0, 1.0, 1.0) | mat2(1.0, 0.0, 0.0, -2.0) | mat2(0.0, -8.25, -32.0, 64.0) | mat2(0.0, 3.5, 0.0, -2.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case float_uvec3_to_mat2
		version 310 es
		values
		{
			input float in0 = [ 36.8125 | 2.0 | -0.5 | 0.0 | -20.125 | 1.0 | 3.5 | -8.25 ];
			input uvec3 in1 = [ uvec3(1, 1, 1) | uvec3(0, 2, 4) | uvec3(0, 2, 4) | uvec3(0, 0, 0) | uvec3(32, 64, 51) | uvec3(0, 0, 0) | uvec3(0, 0, 0) | uvec3(1, 1, 1) ];
			output mat2 out0 = [ mat2(36.8125, 1.0, 1.0, 1.0) | mat2(2.0, 0.0, 2.0, 4.0) | mat2(-0.5, 0.0, 2.0, 4.0) | mat2(0.0, 0.0, 0.0, 0.0) | mat2(-20.125, 32.0, 64.0, 51.0) | mat2(1.0, 0.0, 0.0, 0.0) | mat2(3.5, 0.0, 0.0, 0.0) | mat2(-8.25, 1.0, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case int_uvec2_bool_to_mat2
		version 310 es
		values
		{
			input int in0 = [ 1 | -66 | 5 | -192 | 11 | 0 | 8 | 2 | -12 | 255 ];
			input uvec2 in1 = [ uvec2(0, 2) | uvec2(32, 64) | uvec2(1, 1) | uvec2(0, 0) | uvec2(0, 0) | uvec2(1, 1) | uvec2(0, 2) | uvec2(0, 0) | uvec2(0, 0) | uvec2(32, 64) ];
			input bool in2 = [ true | false | true | false | false | false | true | true | true | false ];
			output mat2 out0 = [ mat2(1.0, 0.0, 2.0, 1.0) | mat2(-66.0, 32.0, 64.0, 0.0) | mat2(5.0, 1.0, 1.0, 1.0) | mat2(-192.0, 0.0, 0.0, 0.0) | mat2(11.0, 0.0, 0.0, 0.0) | mat2(0.0, 1.0, 1.0, 0.0) | mat2(8.0, 0.0, 2.0, 1.0) | mat2(2.0, 0.0, 0.0, 1.0) | mat2(-12.0, 0.0, 0.0, 1.0) | mat2(255.0, 32.0, 64.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_to_mat2x3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) ];
			input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875) | mat2x3(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125) | mat2x3(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_bvec3_to_mat2x3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ];
			input bvec3 in1 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_float_float_to_mat2x3
		version 310 es
		values
		{
			input float in0 = [ 1.0 | -8.25 | -20.125 | 36.8125 | -0.5 | 2.0 | 3.5 | 0.0 ];
			input float in1 = [ -0.5 | -20.125 | 36.8125 | -8.25 | 2.0 | 1.0 | 3.5 | 0.0 ];
			input float in2 = [ 3.5 | 1.0 | 36.8125 | -20.125 | -8.25 | -0.5 | 2.0 | 0.0 ];
			input float in3 = [ 1.0 | -8.25 | 0.0 | -20.125 | 2.0 | 3.5 | -0.5 | 36.8125 ];
			input float in4 = [ 1.0 | 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | -0.5 | 36.8125 ];
			input float in5 = [ 2.0 | -20.125 | -8.25 | -0.5 | 3.5 | 1.0 | 36.8125 | 0.0 ];
			output mat2x3 out0 = [ mat2x3(1.0, -0.5, 3.5, 1.0, 1.0, 2.0) | mat2x3(-8.25, -20.125, 1.0, -8.25, 0.0, -20.125) | mat2x3(-20.125, 36.8125, 36.8125, 0.0, 3.5, -8.25) | mat2x3(36.8125, -8.25, -20.125, -20.125, 2.0, -0.5) | mat2x3(-0.5, 2.0, -8.25, 2.0, -8.25, 3.5) | mat2x3(2.0, 1.0, -0.5, 3.5, -20.125, 1.0) | mat2x3(3.5, 3.5, 2.0, -0.5, -0.5, 36.8125) | mat2x3(0.0, 0.0, 0.0, 36.8125, 36.8125, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_int_int_to_mat2x3
		version 310 es
		values
		{
			input int in0 = [ 2 | 8 | -192 | 0 | 5 | -12 | 1 | 255 | -66 | 11 ];
			input int in1 = [ 1 | -192 | 8 | 0 | -12 | 2 | 11 | 255 | -66 | 5 ];
			input int in2 = [ -192 | 2 | -66 | 8 | 11 | 255 | 0 | 5 | -12 | 1 ];
			input int in3 = [ 2 | 11 | 255 | 0 | -66 | -12 | 5 | -192 | 8 | 1 ];
			input int in4 = [ 8 | 0 | -12 | -192 | 2 | -66 | 1 | 255 | 5 | 11 ];
			input int in5 = [ 0 | 11 | 5 | 8 | -12 | 255 | -192 | 2 | 1 | -66 ];
			output mat2x3 out0 = [ mat2x3(2.0, 1.0, -192.0, 2.0, 8.0, 0.0) | mat2x3(8.0, -192.0, 2.0, 11.0, 0.0, 11.0) | mat2x3(-192.0, 8.0, -66.0, 255.0, -12.0, 5.0) | mat2x3(0.0, 0.0, 8.0, 0.0, -192.0, 8.0) | mat2x3(5.0, -12.0, 11.0, -66.0, 2.0, -12.0) | mat2x3(-12.0, 2.0, 255.0, -12.0, -66.0, 255.0) | mat2x3(1.0, 11.0, 0.0, 5.0, 1.0, -192.0) | mat2x3(255.0, 255.0, 5.0, -192.0, 255.0, 2.0) | mat2x3(-66.0, -66.0, -12.0, 8.0, 5.0, 1.0) | mat2x3(11.0, 5.0, 1.0, 1.0, 11.0, -66.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_bool_bool_to_mat2x3
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ false | true ];
			input bool in2 = [ false | true ];
			input bool in3 = [ true | false ];
			input bool in4 = [ true | false ];
			input bool in5 = [ true | false ];
			output mat2x3 out0 = [ mat2x3(1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 1.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_float_int_to_mat2x3
		version 310 es
		values
		{
			input bool in0 = [ false | true | false | true | false | true | false | true | true | false ];
			input float in1 = [ 0.0 | -8.25 | 2.0 | -20.125 | 3.5 | 0.0 | -0.5 | 36.8125 | 1.0 | 1.0 ];
			input int in2 = [ -66 | -12 | 2 | 8 | 255 | 11 | -192 | 1 | 5 | 0 ];
			input bool in3 = [ true | false | true | false | false | true | true | false | true | false ];
			input float in4 = [ 1.0 | 0.0 | -8.25 | 1.0 | 3.5 | -20.125 | -0.5 | 0.0 | 2.0 | 36.8125 ];
			input int in5 = [ 255 | -192 | 1 | 2 | -12 | -66 | 8 | 0 | 11 | 5 ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, -66.0, 1.0, 1.0, 255.0) | mat2x3(1.0, -8.25, -12.0, 0.0, 0.0, -192.0) | mat2x3(0.0, 2.0, 2.0, 1.0, -8.25, 1.0) | mat2x3(1.0, -20.125, 8.0, 0.0, 1.0, 2.0) | mat2x3(0.0, 3.5, 255.0, 0.0, 3.5, -12.0) | mat2x3(1.0, 0.0, 11.0, 1.0, -20.125, -66.0) | mat2x3(0.0, -0.5, -192.0, 1.0, -0.5, 8.0) | mat2x3(1.0, 36.8125, 1.0, 0.0, 0.0, 0.0) | mat2x3(1.0, 1.0, 5.0, 1.0, 2.0, 11.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 36.8125, 5.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_ivec3_to_mat2x3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, 0, 0) ];
			output mat2x3 out0 = [ mat2x3(1.0, 1.25, 1.125, 1.0, 1.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -32.0, 64.0, -51.0) | mat2x3(-32.0, 64.0, -51.0, 0.0, -2.0, -4.0) | mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec4_to_mat2x3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ];
			input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			output mat2x3 out0 = [ mat2x3(-32.0, 64.0, 1.0, 0.0, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.0, 1.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, 0.0, 0.0, 0.0, 1.0) | mat2x3(1.0, 1.25, 1.0, 1.0, 1.0, 1.0) | mat2x3(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_ivec2_to_mat2x3
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) ];
			input float in1 = [ 1.0 | -8.25 | 36.8125 | 2.0 | 3.5 | -0.5 | -20.125 | 0.0 ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x3(0.0, 0.0, 0.0, -8.25, 0.0, 0.0) | mat2x3(1.0, 1.0, 1.0, 36.8125, -32.0, 64.0) | mat2x3(1.0, 0.0, 0.0, 2.0, 0.0, -2.0) | mat2x3(0.0, 0.0, 0.0, 3.5, 1.0, 1.0) | mat2x3(0.0, 1.0, 0.0, -0.5, 0.0, -2.0) | mat2x3(1.0, 0.0, 0.0, -20.125, 0.0, 0.0) | mat2x3(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec3_float_bvec2_to_mat2x3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
			input float in1 = [ 0.0 | 36.8125 | 3.5 | -0.5 | -8.25 | 2.0 | 1.0 | -20.125 ];
			input bvec2 in2 = [ bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(true, true) | bvec2(false, false) ];
			output mat2x3 out0 = [ mat2x3(0.0, 0.5, 0.75, 0.0, 0.0, 0.0) | mat2x3(-0.5, -2.25, -4.875, 36.8125, 0.0, 1.0) | mat2x3(0.0, 0.5, 0.75, 3.5, 1.0, 0.0) | mat2x3(1.0, 1.25, 1.125, -0.5, 0.0, 1.0) | mat2x3(-0.5, -2.25, -4.875, -8.25, 0.0, 0.0) | mat2x3(-0.75, -0.0322580645161, 0.0526315789474, 2.0, 1.0, 0.0) | mat2x3(-32.0, 64.0, -51.0, 1.0, 1.0, 1.0) | mat2x3(1.0, 1.25, 1.125, -20.125, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_vec2_to_mat2x4
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) ];
			input vec3 in1 = [ vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
			input vec2 in2 = [ vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
			output mat2x4 out0 = [ mat2x4(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -0.75, -0.0322580645161) | mat2x4(-0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25, -4.875, -32.0, 64.0) | mat2x4(0.0, 0.5, 0.75, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25) | mat2x4(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 0.0, 0.5) | mat2x4(-32.0, 64.0, -51.0, 1.0, 1.25, 1.125, -0.5, -2.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case ivec3_ivec3_ivec2_to_mat2x4
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ];
			input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			input ivec2 in2 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) ];
			output mat2x4 out0 = [ mat2x4(0.0, -2.0, -4.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, -2.0) | mat2x4(1.0, 1.0, 1.0, 0.0, -2.0, -4.0, 1.0, 1.0) | mat2x4(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 0.0, 0.0) | mat2x4(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, -32.0, 64.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_float_float_int_bool_to_mat2x4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) ];
			input ivec2 in1 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) ];
			input float in2 = [ -8.25 | -0.5 | 3.5 | 36.8125 | 0.0 | 0.0 | 2.0 | -20.125 | 1.0 | 1.0 ];
			input float in3 = [ 1.0 | 2.0 | -0.5 | 3.5 | 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | -20.125 ];
			input int in4 = [ 255 | 8 | 11 | -12 | -192 | 0 | 2 | 1 | -66 | 5 ];
			input bool in5 = [ true | false | false | true | false | true | true | false | true | false ];
			output mat2x4 out0 = [ mat2x4(0.0, 0.5, 1.0, 1.0, -8.25, 1.0, 255.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, -2.0, -0.5, 2.0, 8.0, 0.0) | mat2x4(-0.5, -2.25, -32.0, 64.0, 3.5, -0.5, 11.0, 0.0) | mat2x4(0.0, 0.5, 0.0, -2.0, 36.8125, 3.5, -12.0, 1.0) | mat2x4(-32.0, 64.0, 0.0, 0.0, 0.0, 36.8125, -192.0, 0.0) | mat2x4(1.0, 1.25, 0.0, 0.0, 0.0, -8.25, 0.0, 1.0) | mat2x4(-0.75, -0.0322580645161, -32.0, 64.0, 2.0, 1.0, 2.0, 1.0) | mat2x4(1.0, 1.25, 0.0, 0.0, -20.125, 0.0, 1.0, 0.0) | mat2x4(-0.5, -2.25, 0.0, 0.0, 1.0, 0.0, -66.0, 1.0) | mat2x4(-0.75, -0.0322580645161, 1.0, 1.0, 1.0, -20.125, 5.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_vec2_bool_bvec2_to_mat2x4
		version 310 es
		values
		{
			input bool in0 = [ false | true | false | true | true | true | false | false | false | true ];
			input float in1 = [ 0.0 | -0.5 | -20.125 | -8.25 | 0.0 | 2.0 | 3.5 | 1.0 | 1.0 | 36.8125 ];
			input int in2 = [ 2 | 1 | 255 | 8 | -66 | 0 | -12 | 5 | -192 | 11 ];
			input vec2 in3 = [ vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) ];
			input bool in4 = [ true | false | false | true | false | false | true | true | true | false ];
			input bvec2 in5 = [ bvec2(true, false) | bvec2(true, true) | bvec2(false, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) ];
			output mat2x4 out0 = [ mat2x4(0.0, 0.0, 2.0, -32.0, 64.0, 1.0, 1.0, 0.0) | mat2x4(1.0, -0.5, 1.0, -0.5, -2.25, 0.0, 1.0, 1.0) | mat2x4(0.0, -20.125, 255.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(1.0, -8.25, 8.0, -0.75, -0.0322580645161, 1.0, 1.0, 1.0) | mat2x4(1.0, 0.0, -66.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat2x4(1.0, 2.0, 0.0, 1.0, 1.25, 0.0, 0.0, 1.0) | mat2x4(0.0, 3.5, -12.0, -32.0, 64.0, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, 5.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat2x4(0.0, 1.0, -192.0, 0.0, 0.5, 1.0, 0.0, 0.0) | mat2x4(1.0, 36.8125, 11.0, -0.75, -0.0322580645161, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bvec2_int_vec4_to_mat2x4
		version 310 es
		values
		{
			input bool in0 = [ true | true | true | false | false | false | false | false | true | true ];
			input bvec2 in1 = [ bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, false) ];
			input int in2 = [ 8 | 1 | 5 | -66 | -192 | 11 | 255 | 0 | -12 | 2 ];
			input vec4 in3 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) ];
			output mat2x4 out0 = [ mat2x4(1.0, 1.0, 1.0, 8.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 0.0, 0.0, 1.0, 0.0, 0.5, 0.75, 0.825) | mat2x4(1.0, 1.0, 0.0, 5.0, -32.0, 64.0, -51.0, 24.0) | mat2x4(0.0, 0.0, 0.0, -66.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(0.0, 1.0, 0.0, 11.0, 1.0, 1.25, 1.125, 1.75) | mat2x4(0.0, 0.0, 1.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(0.0, 0.0, 0.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat2x4(1.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0) | mat2x4(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec2_bool_to_mat2x4
		version 310 es
		values
		{
			input float in0 = [ 0.0 | 3.5 | 2.0 | -8.25 | -20.125 | 36.8125 | 1.0 | -0.5 ];
			input bvec4 in1 = [ bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ];
			input ivec2 in2 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ];
			input bool in3 = [ true | true | false | true | false | false | false | true ];
			output mat2x4 out0 = [ mat2x4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat2x4(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0) | mat2x4(2.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0) | mat2x4(-8.25, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat2x4(-20.125, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat2x4(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) | mat2x4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_to_mat3x2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) ];
			input vec3 in1 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ];
			output mat3x2 out0 = [ mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125) | mat3x2(-0.5, -2.25, -4.875, -0.75, -0.0322580645161, 0.0526315789474) | mat3x2(0.0, 0.5, 0.75, -32.0, 64.0, -51.0) | mat3x2(-32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.5, 0.75) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_bvec3_to_mat3x2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) ];
			input bvec3 in1 = [ bvec3(false, false, false) | bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, true, false) | bvec3(true, false, false) ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 0.0, 1.0, 0.0) | mat3x2(0.0, 0.0, 0.0, 1.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case float_float_float_float_float_float_to_mat3x2
		version 310 es
		values
		{
			input float in0 = [ -8.25 | 36.8125 | -20.125 | -0.5 | 3.5 | 1.0 | 2.0 | 0.0 ];
			input float in1 = [ 2.0 | 3.5 | -20.125 | 36.8125 | 1.0 | 0.0 | -8.25 | -0.5 ];
			input float in2 = [ -0.5 | 2.0 | 1.0 | 0.0 | -8.25 | 36.8125 | -20.125 | 3.5 ];
			input float in3 = [ 36.8125 | 0.0 | 1.0 | -0.5 | 2.0 | 3.5 | -20.125 | -8.25 ];
			input float in4 = [ 36.8125 | 2.0 | 0.0 | -0.5 | 3.5 | -20.125 | -8.25 | 1.0 ];
			input float in5 = [ 0.0 | 36.8125 | -20.125 | -0.5 | 3.5 | 2.0 | 1.0 | -8.25 ];
			output mat3x2 out0 = [ mat3x2(-8.25, 2.0, -0.5, 36.8125, 36.8125, 0.0) | mat3x2(36.8125, 3.5, 2.0, 0.0, 2.0, 36.8125) | mat3x2(-20.125, -20.125, 1.0, 1.0, 0.0, -20.125) | mat3x2(-0.5, 36.8125, 0.0, -0.5, -0.5, -0.5) | mat3x2(3.5, 1.0, -8.25, 2.0, 3.5, 3.5) | mat3x2(1.0, 0.0, 36.8125, 3.5, -20.125, 2.0) | mat3x2(2.0, -8.25, -20.125, -20.125, -8.25, 1.0) | mat3x2(0.0, -0.5, 3.5, -8.25, 1.0, -8.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case int_int_int_int_int_int_to_mat3x2
		version 310 es
		values
		{
			input int in0 = [ 8 | -192 | 2 | 11 | 255 | -66 | 5 | -12 | 1 | 0 ];
			input int in1 = [ 1 | 2 | -12 | 5 | 0 | 255 | 8 | 11 | -192 | -66 ];
			input int in2 = [ -12 | 11 | 2 | 1 | 8 | -66 | -192 | 5 | 255 | 0 ];
			input int in3 = [ -192 | 0 | -12 | 11 | 1 | -66 | 8 | 255 | 2 | 5 ];
			input int in4 = [ -12 | 5 | 0 | -66 | 255 | 8 | -192 | 11 | 2 | 1 ];
			input int in5 = [ -66 | -12 | 8 | 2 | 255 | 0 | -192 | 11 | 1 | 5 ];
			output mat3x2 out0 = [ mat3x2(8.0, 1.0, -12.0, -192.0, -12.0, -66.0) | mat3x2(-192.0, 2.0, 11.0, 0.0, 5.0, -12.0) | mat3x2(2.0, -12.0, 2.0, -12.0, 0.0, 8.0) | mat3x2(11.0, 5.0, 1.0, 11.0, -66.0, 2.0) | mat3x2(255.0, 0.0, 8.0, 1.0, 255.0, 255.0) | mat3x2(-66.0, 255.0, -66.0, -66.0, 8.0, 0.0) | mat3x2(5.0, 8.0, -192.0, 8.0, -192.0, -192.0) | mat3x2(-12.0, 11.0, 5.0, 255.0, 11.0, 11.0) | mat3x2(1.0, -192.0, 255.0, 2.0, 2.0, 1.0) | mat3x2(0.0, -66.0, 0.0, 5.0, 1.0, 5.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bool_bool_bool_bool_bool_to_mat3x2
		version 310 es
		values
		{
			input bool in0 = [ true | false ];
			input bool in1 = [ false | true ];
			input bool in2 = [ false | true ];
			input bool in3 = [ false | true ];
			input bool in4 = [ false | true ];
			input bool in5 = [ false | true ];
			output mat3x2 out0 = [ mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 1.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_bool_float_int_to_mat3x2
		version 310 es
		values
		{
			input bool in0 = [ true | false | true | true | false | true | false | true | false | false ];
			input float in1 = [ -20.125 | 0.0 | 3.5 | 0.0 | 1.0 | -8.25 | 1.0 | 2.0 | 36.8125 | -0.5 ];
			input int in2 = [ 255 | -66 | 8 | -192 | 5 | 11 | 1 | 2 | 0 | -12 ];
			input bool in3 = [ true | false | false | true | false | true | true | false | false | true ];
			input float in4 = [ 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | -0.5 | 2.0 | 3.5 | 1.0 | 36.8125 ];
			input int in5 = [ -192 | 8 | 2 | 255 | -66 | -12 | 11 | 0 | 5 | 1 ];
			output mat3x2 out0 = [ mat3x2(1.0, -20.125, 255.0, 1.0, 0.0, -192.0) | mat3x2(0.0, 0.0, -66.0, 0.0, -20.125, 8.0) | mat3x2(1.0, 3.5, 8.0, 0.0, 1.0, 2.0) | mat3x2(1.0, 0.0, -192.0, 1.0, -8.25, 255.0) | mat3x2(0.0, 1.0, 5.0, 0.0, 0.0, -66.0) | mat3x2(1.0, -8.25, 11.0, 1.0, -0.5, -12.0) | mat3x2(0.0, 1.0, 1.0, 1.0, 2.0, 11.0) | mat3x2(1.0, 2.0, 2.0, 0.0, 3.5, 0.0) | mat3x2(0.0, 36.8125, 0.0, 0.0, 1.0, 5.0) | mat3x2(0.0, -0.5, -12.0, 1.0, 36.8125, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_ivec3_to_mat3x2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) ];
			input ivec3 in1 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.5, 0.75, 1.0, 1.0, 1.0) | mat3x2(1.0, 1.25, 1.125, 0.0, 0.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 0.0, -2.0, -4.0) | mat3x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3x2(-0.5, -2.25, -4.875, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case vec2_bvec4_to_mat3x2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ];
			input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.5, 1.0, 1.0, 1.0, 1.0) | mat3x2(-0.75, -0.0322580645161, 0.0, 0.0, 0.0, 1.0) | mat3x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(-0.5, -2.25, 1.0, 0.0, 0.0, 1.0) | mat3x2(1.0, 1.25, 0.0, 1.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1);
				${OUTPUT}
			}
		""
	end

	case bvec3_float_ivec2_to_mat3x2
		version 310 es
		values
		{
			input bvec3 in0 = [ bvec3(false, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(true, false, false) ];
			input float in1 = [ -8.25 | 1.0 | 2.0 | -0.5 | -20.125 | 0.0 | 36.8125 | 3.5 ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(-32, 64) ];
			output mat3x2 out0 = [ mat3x2(0.0, 0.0, 0.0, -8.25, 1.0, 1.0) | mat3x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.0) | mat3x2(0.0, 0.0, 0.0, 2.0, 0.0, 0.0) | mat3x2(0.0, 0.0, 0.0, -0.5, 0.0, -2.0) | mat3x2(0.0, 1.0, 0.0, -20.125, 0.0, 0.0) | mat3x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x2(0.0, 1.0, 0.0, 36.8125, 0.0, -2.0) | mat3x2(1.0, 0.0, 0.0, 3.5, -32.0, 64.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec3_float_bvec2_to_mat3x2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input float in1 = [ -8.25 | 36.8125 | -0.5 | 3.5 | 2.0 | -20.125 | 0.0 | 1.0 ];
			input bvec2 in2 = [ bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(false, true) | bvec2(true, false) | bvec2(false, false) ];
			output mat3x2 out0 = [ mat3x2(1.0, 1.25, 1.125, -8.25, 1.0, 0.0) | mat3x2(1.0, 1.25, 1.125, 36.8125, 0.0, 0.0) | mat3x2(-0.5, -2.25, -4.875, -0.5, 1.0, 1.0) | mat3x2(-0.5, -2.25, -4.875, 3.5, 0.0, 0.0) | mat3x2(-32.0, 64.0, -51.0, 2.0, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, -20.125, 0.0, 1.0) | mat3x2(0.0, 0.5, 0.75, 0.0, 1.0, 0.0) | mat3x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_vec3_to_mat3
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input vec3 in1 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) ];
			input vec3 in2 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(0.0, 0.5, 0.75) ];
			output mat3 out0 = [ mat3(1.0, 1.25, 1.125, -0.75, -0.0322580645161, 0.0526315789474, -0.75, -0.0322580645161, 0.0526315789474) | mat3(-0.5, -2.25, -4.875, 1.0, 1.25, 1.125, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, -0.5, -2.25, -4.875) | mat3(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, 1.0, 1.25, 1.125) | mat3(-0.75, -0.0322580645161, 0.0526315789474, 0.0, 0.5, 0.75, 0.0, 0.5, 0.75) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case ivec3_ivec3_ivec3_to_mat3
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) ];
			input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(0, -2, -4) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) ];
			input ivec3 in2 = [ ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, -2, -4) | ivec3(0, 0, 0) ];
			output mat3 out0 = [ mat3(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3(0.0, -2.0, -4.0, 0.0, -2.0, -4.0, 0.0, 0.0, 0.0) | mat3(0.0, 0.0, 0.0, -32.0, 64.0, -51.0, -32.0, 64.0, -51.0) | mat3(-32.0, 64.0, -51.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0) | mat3(0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_float_float_int_bool_bool_to_mat3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(-32, 64) ];
			input float in2 = [ -0.5 | 3.5 | 0.0 | -20.125 | 1.0 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ];
			input float in3 = [ 3.5 | 0.0 | -20.125 | 36.8125 | 2.0 | -8.25 | -0.5 | 1.0 | 0.0 | 1.0 ];
			input int in4 = [ 0 | 11 | 5 | -192 | 8 | -66 | 1 | 2 | 255 | -12 ];
			input bool in5 = [ true | true | true | false | true | false | false | false | true | false ];
			input bool in6 = [ false | false | true | false | false | false | true | true | true | true ];
			output mat3 out0 = [ mat3(1.0, 1.25, 0.0, 0.0, -0.5, 3.5, 0.0, 1.0, 0.0) | mat3(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, 11.0, 1.0, 0.0) | mat3(0.0, 0.5, 1.0, 1.0, 0.0, -20.125, 5.0, 1.0, 1.0) | mat3(-0.75, -0.0322580645161, 0.0, -2.0, -20.125, 36.8125, -192.0, 0.0, 0.0) | mat3(-32.0, 64.0, 0.0, 0.0, 1.0, 2.0, 8.0, 1.0, 0.0) | mat3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, -8.25, -66.0, 0.0, 0.0) | mat3(-0.5, -2.25, 1.0, 1.0, 0.0, -0.5, 1.0, 0.0, 1.0) | mat3(1.0, 1.25, -32.0, 64.0, 1.0, 1.0, 2.0, 0.0, 1.0) | mat3(0.0, 0.5, 0.0, 0.0, 2.0, 0.0, 255.0, 1.0, 1.0) | mat3(-32.0, 64.0, -32.0, 64.0, 36.8125, 1.0, -12.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4, in5, in6);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_vec2_bool_bvec2_float_to_mat3
		version 310 es
		values
		{
			input bool in0 = [ false | true | true | true | true | true | false | false | false | false ];
			input float in1 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 3.5 | -20.125 | 1.0 | 0.0 | 2.0 ];
			input int in2 = [ 8 | -66 | 5 | 1 | 0 | 2 | -12 | -192 | 11 | 255 ];
			input vec2 in3 = [ vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) ];
			input bool in4 = [ true | false | true | false | false | true | true | false | true | false ];
			input bvec2 in5 = [ bvec2(false, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) ];
			input float in6 = [ -0.5 | 1.0 | 1.0 | 0.0 | 36.8125 | 2.0 | 0.0 | 3.5 | -20.125 | -8.25 ];
			output mat3 out0 = [ mat3(0.0, -8.25, 8.0, 0.0, 0.5, 1.0, 0.0, 1.0, -0.5) | mat3(1.0, 1.0, -66.0, -32.0, 64.0, 0.0, 0.0, 0.0, 1.0) | mat3(1.0, -0.5, 5.0, 1.0, 1.25, 1.0, 1.0, 0.0, 1.0) | mat3(1.0, 36.8125, 1.0, -32.0, 64.0, 0.0, 0.0, 0.0, 0.0) | mat3(1.0, 0.0, 0.0, -0.5, -2.25, 0.0, 1.0, 1.0, 36.8125) | mat3(1.0, 3.5, 2.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0, 2.0) | mat3(0.0, -20.125, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0, 0.0) | mat3(0.0, 1.0, -192.0, 0.0, 0.5, 0.0, 0.0, 0.0, 3.5) | mat3(0.0, 0.0, 11.0, 1.0, 1.25, 1.0, 0.0, 1.0, -20.125) | mat3(0.0, 2.0, 255.0, -0.75, -0.0322580645161, 0.0, 1.0, 1.0, -8.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4, in5, in6);
				${OUTPUT}
			}
		""
	end

	case bool_bvec2_int_vec4_bool_to_mat3
		version 310 es
		values
		{
			input bool in0 = [ true | false | true | true | false | false | true | false | false | true ];
			input bvec2 in1 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, false) | bvec2(true, false) | bvec2(false, false) ];
			input int in2 = [ -192 | 2 | 0 | 5 | 1 | -66 | 11 | -12 | 8 | 255 ];
			input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			input bool in4 = [ false | true | false | true | false | false | false | true | true | true ];
			output mat3 out0 = [ mat3(1.0, 0.0, 0.0, -192.0, -32.0, 64.0, -51.0, 24.0, 0.0) | mat3(0.0, 0.0, 1.0, 2.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 1.0, 1.0, 5.0, -32.0, 64.0, -51.0, 24.0, 1.0) | mat3(0.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 0.0) | mat3(1.0, 0.0, 1.0, 11.0, 1.0, 1.25, 1.125, 1.75, 0.0) | mat3(0.0, 1.0, 0.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(0.0, 1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 9.0, 1.0) | mat3(1.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec2_bool_bool_to_mat3
		version 310 es
		values
		{
			input float in0 = [ -8.25 | 2.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -20.125 | 0.0 ];
			input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) | bvec4(false, false, false, true) ];
			input ivec2 in2 = [ ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(1, 1) ];
			input bool in3 = [ false | true | false | true | true | false | true | false ];
			input bool in4 = [ true | false | false | false | true | true | false | true ];
			output mat3 out0 = [ mat3(-8.25, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, 1.0, 0.0) | mat3(36.8125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3(3.5, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, 1.0, 0.0) | mat3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3(-0.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0, 0.0) | mat3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4);
				${OUTPUT}
			}
		""
	end

	case vec4_vec4_vec4_to_mat3x4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) ];
			input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) ];
			output mat3x4 out0 = [ mat3x4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0) | mat3x4(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat3x4(-32.0, 64.0, -51.0, 24.0, 0.0, 0.5, 0.75, 0.825, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat3x4(-0.5, -2.25, -4.875, 9.0, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat3x4(0.0, 0.5, 0.75, 0.825, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case ivec4_ivec4_ivec4_to_mat3x4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ];
			input ivec4 in1 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
			input ivec4 in2 = [ ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ];
			output mat3x4 out0 = [ mat3x4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat3x4
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-0.5, -2.25) ];
			input ivec2 in1 = [ ivec2(0, 0) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, -2) ];
			input float in2 = [ 1.0 | -8.25 | 2.0 | 3.5 | -20.125 | 36.8125 | 0.0 | 1.0 | -0.5 | 0.0 ];
			input float in3 = [ -0.5 | 36.8125 | 1.0 | 1.0 | 0.0 | 3.5 | 2.0 | 0.0 | -8.25 | -20.125 ];
			input float in4 = [ -8.25 | 1.0 | 1.0 | 0.0 | 2.0 | 36.8125 | 0.0 | -20.125 | 3.5 | -0.5 ];
			input int in5 = [ 11 | 2 | 8 | 5 | 0 | -192 | 1 | -12 | 255 | -66 ];
			input int in6 = [ -12 | 5 | 8 | 1 | 0 | 255 | 11 | -192 | -66 | 2 ];
			input bool in7 = [ true | true | true | false | false | false | true | false | true | false ];
			input bool in8 = [ true | true | true | false | true | false | true | false | false | false ];
			input bool in9 = [ true | false | true | false | true | true | false | false | false | true ];
			output mat3x4 out0 = [ mat3x4(1.0, 1.25, 0.0, 0.0, 1.0, -0.5, -8.25, 11.0, -12.0, 1.0, 1.0, 1.0) | mat3x4(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, 1.0, 2.0, 5.0, 1.0, 1.0, 0.0) | mat3x4(0.0, 0.5, -32.0, 64.0, 2.0, 1.0, 1.0, 8.0, 8.0, 1.0, 1.0, 1.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, 3.5, 1.0, 0.0, 5.0, 1.0, 0.0, 0.0, 0.0) | mat3x4(-32.0, 64.0, 1.0, 1.0, -20.125, 0.0, 2.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat3x4(-0.75, -0.0322580645161, -32.0, 64.0, 36.8125, 3.5, 36.8125, -192.0, 255.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.25, 0.0, 0.0, 0.0, 2.0, 0.0, 1.0, 11.0, 1.0, 1.0, 0.0) | mat3x4(-0.75, -0.0322580645161, 0.0, -2.0, 1.0, 0.0, -20.125, -12.0, -192.0, 0.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, 0.0, -0.5, -8.25, 3.5, 255.0, -66.0, 1.0, 0.0, 0.0) | mat3x4(-0.5, -2.25, 0.0, -2.0, 0.0, -20.125, -0.5, -66.0, 2.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_vec3_bool_bvec3_float_bool_to_mat3x4
		version 310 es
		values
		{
			input bool in0 = [ false | false | true | true | true | true | false | false | false | true ];
			input float in1 = [ 36.8125 | -8.25 | 1.0 | 0.0 | 0.0 | 1.0 | 2.0 | 3.5 | -0.5 | -20.125 ];
			input int in2 = [ -66 | -192 | 255 | 8 | 0 | -12 | 5 | 2 | 11 | 1 ];
			input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.5, -2.25, -4.875) ];
			input bool in4 = [ false | true | true | true | false | false | true | true | false | false ];
			input bvec3 in5 = [ bvec3(true, false, false) | bvec3(true, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) | bvec3(false, false, false) ];
			input float in6 = [ -8.25 | 1.0 | -0.5 | 36.8125 | 0.0 | 2.0 | -20.125 | 1.0 | 0.0 | 3.5 ];
			input bool in7 = [ true | false | false | true | true | false | true | false | false | true ];
			output mat3x4 out0 = [ mat3x4(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 0.0526315789474, 0.0, 1.0, 0.0, 0.0, -8.25, 1.0) | mat3x4(0.0, -8.25, -192.0, -32.0, 64.0, -51.0, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(1.0, 1.0, 255.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, -0.5, 0.0) | mat3x4(1.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 36.8125, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat3x4(1.0, 1.0, -12.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 0.0) | mat3x4(0.0, 2.0, 5.0, 1.0, 1.25, 1.125, 1.0, 1.0, 1.0, 1.0, -20.125, 1.0) | mat3x4(0.0, 3.5, 2.0, 1.0, 1.25, 1.125, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0) | mat3x4(0.0, -0.5, 11.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat3x4(1.0, -20.125, 1.0, -0.5, -2.25, -4.875, 0.0, 0.0, 0.0, 0.0, 3.5, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2, in3, in4, in5, in6, in7);
				${OUTPUT}
			}
		""
	end

	case bool_bvec4_int_vec4_bool_float_to_mat3x4
		version 310 es
		values
		{
			input bool in0 = [ false | true | true | true | false | false | false | true | false | true ];
			input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ];
			input int in2 = [ 255 | 2 | -192 | -12 | 11 | 1 | 0 | -66 | 8 | 5 ];
			input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) ];
			input bool in4 = [ true | true | true | false | false | false | true | true | false | false ];
			input float in5 = [ 36.8125 | 2.0 | -8.25 | 0.0 | 1.0 | 1.0 | -0.5 | 3.5 | 0.0 | -20.125 ];
			output mat3x4 out0 = [ mat3x4(0.0, 0.0, 0.0, 0.0, 0.0, 255.0, -0.5, -2.25, -4.875, 9.0, 1.0, 36.8125) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 2.0, 1.0, 1.25, 1.125, 1.75, 1.0, 2.0) | mat3x4(1.0, 0.0, 1.0, 0.0, 0.0, -192.0, 1.0, 1.25, 1.125, 1.75, 1.0, -8.25) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, 0.0, 0.5, 0.75, 0.825, 0.0, 0.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 11.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 1.0) | mat3x4(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 1.0) | mat3x4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, -0.5) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, -66.0, 0.0, 0.5, 0.75, 0.825, 1.0, 3.5) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, 0.0) | mat3x4(1.0, 1.0, 0.0, 0.0, 1.0, 5.0, -0.5, -2.25, -4.875, 9.0, 0.0, -20.125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec4_bool_bool_int_to_mat3x4
		version 310 es
		values
		{
			input float in0 = [ 36.8125 | 1.0 | 0.0 | 3.5 | -8.25 | -20.125 | 2.0 | 0.0 | 1.0 | -0.5 ];
			input bvec4 in1 = [ bvec4(true, true, true, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(false, false, false, false) ];
			input ivec4 in2 = [ ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(1, 1, 1, 1) ];
			input bool in3 = [ true | false | true | true | false | true | true | false | false | false ];
			input bool in4 = [ true | false | false | true | true | false | false | false | true | true ];
			input int in5 = [ 1 | 5 | -12 | 8 | -192 | 2 | -66 | 255 | 11 | 0 ];
			output mat3x4 out0 = [ mat3x4(36.8125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 5.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0, -12.0) | mat3x4(3.5, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, 8.0) | mat3x4(-8.25, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, -192.0) | mat3x4(-20.125, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 2.0) | mat3x4(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, -66.0) | mat3x4(0.0, 0.0, 1.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 255.0) | mat3x4(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 11.0) | mat3x4(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_vec2_to_mat4x2
		version 310 es
		values
		{
			input vec3 in0 = [ vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(0.0, 0.5, 0.75) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input vec3 in1 = [ vec3(-32.0, 64.0, -51.0) | vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(-0.5, -2.25, -4.875) | vec3(0.0, 0.5, 0.75) | vec3(1.0, 1.25, 1.125) ];
			input vec2 in2 = [ vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) ];
			output mat4x2 out0 = [ mat4x2(1.0, 1.25, 1.125, -32.0, 64.0, -51.0, 1.0, 1.25) | mat4x2(-32.0, 64.0, -51.0, -0.75, -0.0322580645161, 0.0526315789474, -0.5, -2.25) | mat4x2(0.0, 0.5, 0.75, -0.5, -2.25, -4.875, -0.75, -0.0322580645161) | mat4x2(-0.5, -2.25, -4.875, 0.0, 0.5, 0.75, -32.0, 64.0) | mat4x2(-0.75, -0.0322580645161, 0.0526315789474, 1.0, 1.25, 1.125, 0.0, 0.5) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case ivec3_ivec3_ivec2_to_mat4x2
		version 310 es
		values
		{
			input ivec3 in0 = [ ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ];
			input ivec3 in1 = [ ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(0, 0, 0) | ivec3(-32, 64, -51) ];
			input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) ];
			output mat4x2 out0 = [ mat4x2(0.0, 0.0, 0.0, 0.0, -2.0, -4.0, -32.0, 64.0) | mat4x2(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0) | mat4x2(0.0, -2.0, -4.0, 1.0, 1.0, 1.0, 0.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x2(-32.0, 64.0, -51.0, -32.0, 64.0, -51.0, 0.0, -2.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_float_float_int_bool_to_mat4x2
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(0.0, 0.5) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(1, 1) | ivec2(0, 0) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) ];
			input float in2 = [ 3.5 | -8.25 | 2.0 | 36.8125 | -0.5 | 1.0 | 1.0 | 0.0 | -20.125 | 0.0 ];
			input float in3 = [ 0.0 | 36.8125 | 3.5 | 1.0 | -0.5 | -8.25 | 2.0 | 0.0 | -20.125 | 1.0 ];
			input int in4 = [ -12 | -66 | 11 | 5 | 8 | 255 | -192 | 2 | 1 | 0 ];
			input bool in5 = [ true | true | false | true | false | true | false | true | false | false ];
			output mat4x2 out0 = [ mat4x2(-0.5, -2.25, 0.0, -2.0, 3.5, 0.0, -12.0, 1.0) | mat4x2(0.0, 0.5, 0.0, 0.0, -8.25, 36.8125, -66.0, 1.0) | mat4x2(1.0, 1.25, -32.0, 64.0, 2.0, 3.5, 11.0, 0.0) | mat4x2(0.0, 0.5, 1.0, 1.0, 36.8125, 1.0, 5.0, 1.0) | mat4x2(-32.0, 64.0, 1.0, 1.0, -0.5, -0.5, 8.0, 0.0) | mat4x2(-0.75, -0.0322580645161, 0.0, 0.0, 1.0, -8.25, 255.0, 1.0) | mat4x2(-0.75, -0.0322580645161, -32.0, 64.0, 1.0, 2.0, -192.0, 0.0) | mat4x2(-32.0, 64.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.0) | mat4x2(-0.5, -2.25, 0.0, 0.0, -20.125, -20.125, 1.0, 0.0) | mat4x2(1.0, 1.25, 0.0, -2.0, 0.0, 1.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_vec2_bool_bvec2_to_mat4x2
		version 310 es
		values
		{
			input bool in0 = [ false | false | true | true | true | false | false | true | false | true ];
			input float in1 = [ 36.8125 | -8.25 | 3.5 | 1.0 | 2.0 | -0.5 | 0.0 | 1.0 | -20.125 | 0.0 ];
			input int in2 = [ -66 | 1 | -192 | 2 | 11 | 0 | 255 | 8 | 5 | -12 ];
			input vec2 in3 = [ vec2(-0.75, -0.0322580645161) | vec2(-0.75, -0.0322580645161) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(1.0, 1.25) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.5, -2.25) ];
			input bool in4 = [ true | false | false | false | false | true | true | true | false | true ];
			input bvec2 in5 = [ bvec2(false, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(true, true) | bvec2(false, false) | bvec2(true, false) ];
			output mat4x2 out0 = [ mat4x2(0.0, 36.8125, -66.0, -0.75, -0.0322580645161, 1.0, 0.0, 0.0) | mat4x2(0.0, -8.25, 1.0, -0.75, -0.0322580645161, 0.0, 0.0, 1.0) | mat4x2(1.0, 3.5, -192.0, -32.0, 64.0, 0.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 2.0, 0.0, 0.5, 0.0, 1.0, 1.0) | mat4x2(1.0, 2.0, 11.0, 1.0, 1.25, 0.0, 1.0, 0.0) | mat4x2(0.0, -0.5, 0.0, 1.0, 1.25, 1.0, 0.0, 1.0) | mat4x2(0.0, 0.0, 255.0, -0.5, -2.25, 1.0, 0.0, 0.0) | mat4x2(1.0, 1.0, 8.0, -32.0, 64.0, 1.0, 1.0, 1.0) | mat4x2(0.0, -20.125, 5.0, 0.0, 0.5, 0.0, 0.0, 0.0) | mat4x2(1.0, 0.0, -12.0, -0.5, -2.25, 1.0, 1.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bvec2_int_vec4_to_mat4x2
		version 310 es
		values
		{
			input bool in0 = [ false | false | true | false | true | false | true | true | true | false ];
			input bvec2 in1 = [ bvec2(true, false) | bvec2(false, false) | bvec2(false, false) | bvec2(false, false) | bvec2(true, false) | bvec2(false, true) | bvec2(false, false) | bvec2(false, true) | bvec2(true, true) | bvec2(true, true) ];
			input int in2 = [ -12 | 8 | 2 | 255 | 5 | -192 | 0 | 11 | 1 | -66 ];
			input vec4 in3 = [ vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ];
			output mat4x2 out0 = [ mat4x2(0.0, 1.0, 0.0, -12.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 0.0, 0.0, 8.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 0.0, 0.0, 2.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(0.0, 0.0, 0.0, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4x2(1.0, 1.0, 0.0, 5.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(0.0, 0.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0) | mat4x2(1.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825) | mat4x2(1.0, 0.0, 1.0, 11.0, -32.0, 64.0, -51.0, 24.0) | mat4x2(1.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75) | mat4x2(0.0, 1.0, 1.0, -66.0, 0.0, 0.5, 0.75, 0.825) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec2_bool_to_mat4x2
		version 310 es
		values
		{
			input float in0 = [ 1.0 | -8.25 | -20.125 | 3.5 | -0.5 | 2.0 | 36.8125 | 0.0 ];
			input bvec4 in1 = [ bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ];
			input ivec2 in2 = [ ivec2(-32, 64) | ivec2(0, -2) | ivec2(0, 0) | ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(1, 1) | ivec2(0, 0) ];
			input bool in3 = [ true | true | false | true | true | false | false | false ];
			output mat4x2 out0 = [ mat4x2(1.0, 0.0, 0.0, 0.0, 1.0, -32.0, 64.0, 1.0) | mat4x2(-8.25, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 1.0) | mat4x2(-20.125, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0) | mat4x2(3.5, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4x2(-0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x2(2.0, 1.0, 0.0, 0.0, 1.0, 0.0, -2.0, 0.0) | mat4x2(36.8125, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0) | mat4x2(0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case vec4_vec4_vec4_to_mat4x3
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) ];
			input vec4 in1 = [ vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
			output mat4x3 out0 = [ mat4x3(-0.5, -2.25, -4.875, 9.0, 0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0) | mat4x3(1.0, 1.25, 1.125, 1.75, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4x3(0.0, 0.5, 0.75, 0.825, -32.0, 64.0, -51.0, 24.0, -0.5, -2.25, -4.875, 9.0) | mat4x3(-0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4x3(-32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case ivec4_ivec4_ivec4_to_mat4x3
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			input ivec4 in1 = [ ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) ];
			input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ];
			output mat4x3 out0 = [ mat4x3(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) | mat4x3(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0) | mat4x3(0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, -51.0, 24.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2);
				${OUTPUT}
			}
		""
	end

	case vec2_ivec2_float_float_float_int_int_bool_bool_bool_to_mat4x3
		version 310 es
		values
		{
			input vec2 in0 = [ vec2(-0.5, -2.25) | vec2(0.0, 0.5) | vec2(0.0, 0.5) | vec2(1.0, 1.25) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(1.0, 1.25) | vec2(-32.0, 64.0) | vec2(-0.75, -0.0322580645161) ];
			input ivec2 in1 = [ ivec2(0, -2) | ivec2(-32, 64) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, 0) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) ];
			input float in2 = [ -20.125 | 3.5 | 2.0 | -0.5 | -8.25 | 0.0 | 1.0 | 0.0 | 1.0 | 36.8125 ];
			input float in3 = [ 0.0 | -8.25 | 36.8125 | 1.0 | 0.0 | -20.125 | 3.5 | 2.0 | -0.5 | 1.0 ];
			input float in4 = [ 0.0 | 1.0 | 3.5 | -20.125 | 0.0 | 36.8125 | 1.0 | -8.25 | 2.0 | -0.5 ];
			input int in5 = [ 2 | 8 | 1 | -192 | 0 | -12 | 11 | 255 | 5 | -66 ];
			input int in6 = [ 2 | -12 | 5 | 8 | 11 | 255 | 0 | -66 | 1 | -192 ];
			input bool in7 = [ true | true | false | true | false | false | false | true | false | true ];
			input bool in8 = [ true | false | false | true | true | false | true | true | false | false ];
			input bool in9 = [ false | true | false | false | false | false | true | true | true | true ];
			output mat4x3 out0 = [ mat4x3(-0.5, -2.25, 0.0, -2.0, -20.125, 0.0, 0.0, 2.0, 2.0, 1.0, 1.0, 0.0) | mat4x3(0.0, 0.5, -32.0, 64.0, 3.5, -8.25, 1.0, 8.0, -12.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 0.5, 1.0, 1.0, 2.0, 36.8125, 3.5, 1.0, 5.0, 0.0, 0.0, 0.0) | mat4x3(1.0, 1.25, -32.0, 64.0, -0.5, 1.0, -20.125, -192.0, 8.0, 1.0, 1.0, 0.0) | mat4x3(-0.75, -0.0322580645161, 0.0, 0.0, -8.25, 0.0, 0.0, 0.0, 11.0, 0.0, 1.0, 0.0) | mat4x3(-0.5, -2.25, 0.0, 0.0, 0.0, -20.125, 36.8125, -12.0, 255.0, 0.0, 0.0, 0.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, 3.5, 1.0, 11.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 1.25, 0.0, -2.0, 0.0, 2.0, -8.25, 255.0, -66.0, 1.0, 1.0, 1.0) | mat4x3(-32.0, 64.0, 0.0, 0.0, 1.0, -0.5, 2.0, 5.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(-0.75, -0.0322580645161, 1.0, 1.0, 36.8125, 1.0, -0.5, -66.0, -192.0, 1.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7, in8, in9);
				${OUTPUT}
			}
		""
	end

	case bool_float_int_vec3_bool_bvec3_float_bool_to_mat4x3
		version 310 es
		values
		{
			input bool in0 = [ true | true | false | false | true | true | true | false | false | false ];
			input float in1 = [ -8.25 | 2.0 | 1.0 | -0.5 | 0.0 | 0.0 | 36.8125 | -20.125 | 3.5 | 1.0 ];
			input int in2 = [ 255 | 2 | 11 | 1 | 8 | -192 | 0 | -66 | -12 | 5 ];
			input vec3 in3 = [ vec3(-0.75, -0.0322580645161, 0.0526315789474) | vec3(0.0, 0.5, 0.75) | vec3(0.0, 0.5, 0.75) | vec3(-32.0, 64.0, -51.0) | vec3(-0.5, -2.25, -4.875) | vec3(1.0, 1.25, 1.125) | vec3(-32.0, 64.0, -51.0) | vec3(1.0, 1.25, 1.125) | vec3(-0.5, -2.25, -4.875) | vec3(-0.75, -0.0322580645161, 0.0526315789474) ];
			input bool in4 = [ true | true | false | false | true | false | false | false | true | true ];
			input bvec3 in5 = [ bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(true, false, false) | bvec3(true, false, false) | bvec3(true, true, true) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(false, false, false) ];
			input float in6 = [ 1.0 | 0.0 | -0.5 | 36.8125 | 1.0 | -20.125 | 2.0 | 0.0 | -8.25 | 3.5 ];
			input bool in7 = [ true | true | false | false | false | false | true | true | false | true ];
			output mat4x3 out0 = [ mat4x3(1.0, -8.25, 255.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0) | mat4x3(1.0, 2.0, 2.0, 0.0, 0.5, 0.75, 1.0, 0.0, 1.0, 0.0, 0.0, 1.0) | mat4x3(0.0, 1.0, 11.0, 0.0, 0.5, 0.75, 0.0, 0.0, 0.0, 0.0, -0.5, 0.0) | mat4x3(0.0, -0.5, 1.0, -32.0, 64.0, -51.0, 0.0, 0.0, 1.0, 0.0, 36.8125, 0.0) | mat4x3(1.0, 0.0, 8.0, -0.5, -2.25, -4.875, 1.0, 1.0, 0.0, 0.0, 1.0, 0.0) | mat4x3(1.0, 0.0, -192.0, 1.0, 1.25, 1.125, 0.0, 1.0, 0.0, 0.0, -20.125, 0.0) | mat4x3(1.0, 36.8125, 0.0, -32.0, 64.0, -51.0, 0.0, 1.0, 1.0, 1.0, 2.0, 1.0) | mat4x3(0.0, -20.125, -66.0, 1.0, 1.25, 1.125, 0.0, 1.0, 1.0, 1.0, 0.0, 1.0) | mat4x3(0.0, 3.5, -12.0, -0.5, -2.25, -4.875, 1.0, 0.0, 0.0, 0.0, -8.25, 0.0) | mat4x3(0.0, 1.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 1.0, 0.0, 0.0, 0.0, 3.5, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2, in3, in4, in5, in6, in7);
				${OUTPUT}
			}
		""
	end

	case bool_bvec4_int_vec4_bool_float_to_mat4x3
		version 310 es
		values
		{
			input bool in0 = [ true | true | true | false | true | false | false | true | false | false ];
			input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(true, false, false, true) | bvec4(true, false, false, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, false, false, true) ];
			input int in2 = [ 5 | 11 | 0 | -192 | -66 | 255 | 1 | -12 | 8 | 2 ];
			input vec4 in3 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input bool in4 = [ false | true | true | false | true | false | true | true | false | false ];
			input float in5 = [ -20.125 | 0.0 | 1.0 | -0.5 | 3.5 | -8.25 | 0.0 | 1.0 | 2.0 | 36.8125 ];
			output mat4x3 out0 = [ mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 5.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 0.0, -20.125) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 11.0, -32.0, 64.0, -51.0, 24.0, 1.0, 0.0) | mat4x3(1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -192.0, -0.5, -2.25, -4.875, 9.0, 0.0, -0.5) | mat4x3(1.0, 1.0, 1.0, 1.0, 1.0, -66.0, 1.0, 1.25, 1.125, 1.75, 1.0, 3.5) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 255.0, -32.0, 64.0, -51.0, 24.0, 0.0, -8.25) | mat4x3(0.0, 1.0, 0.0, 0.0, 1.0, 1.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, 1.0, 0.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, -12.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 0.0, 8.0, 0.0, 0.5, 0.75, 0.825, 0.0, 2.0) | mat4x3(0.0, 0.0, 0.0, 0.0, 1.0, 2.0, 0.0, 0.5, 0.75, 0.825, 0.0, 36.8125) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec4_bool_bool_int_to_mat4x3
		version 310 es
		values
		{
			input float in0 = [ 36.8125 | -0.5 | 3.5 | 2.0 | 1.0 | -20.125 | 0.0 | 0.0 | -8.25 | 1.0 ];
			input bvec4 in1 = [ bvec4(false, false, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(true, true, true, true) | bvec4(false, true, false, false) | bvec4(false, false, false, true) ];
			input ivec4 in2 = [ ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, -2, -4, 9) ];
			input bool in3 = [ false | true | false | true | false | false | false | true | true | true ];
			input bool in4 = [ false | true | false | true | false | true | false | false | true | true ];
			input int in5 = [ 2 | 1 | 8 | 11 | 255 | 5 | 0 | -66 | -192 | -12 ];
			output mat4x3 out0 = [ mat4x3(36.8125, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 2.0) | mat4x3(-0.5, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 1.0) | mat4x3(3.5, 1.0, 0.0, 0.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 8.0) | mat4x3(2.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 1.0, 11.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 255.0) | mat4x3(-20.125, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 5.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 0.0) | mat4x3(0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, -66.0) | mat4x3(-8.25, 0.0, 1.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -192.0) | mat4x3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, -2.0, -4.0, 9.0, 1.0, 1.0, -12.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec4_vec4_vec4_vec4_to_mat4
		version 310 es
		values
		{
			input vec4 in0 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input vec4 in1 = [ vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input vec4 in2 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input vec4 in3 = [ vec4(-32.0, 64.0, -51.0, 24.0) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) ];
			output mat4 out0 = [ mat4(-0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0) | mat4(-32.0, 64.0, -51.0, 24.0, -32.0, 64.0, -51.0, 24.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -0.75, -0.0322580645161, 0.0526315789474, 0.25) | mat4(-0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, -0.5, -2.25, -4.875, 9.0, 1.0, 1.25, 1.125, 1.75) | mat4(1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 1.0, 1.25, 1.125, 1.75, 0.0, 0.5, 0.75, 0.825) | mat4(0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, 0.0, 0.5, 0.75, 0.825, -0.5, -2.25, -4.875, 9.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case ivec4_ivec4_ivec4_ivec4_to_mat4
		version 310 es
		values
		{
			input ivec4 in0 = [ ivec4(-32, 64, -51, 24) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) ];
			input ivec4 in1 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) ];
			input ivec4 in2 = [ ivec4(-32, 64, -51, 24) | ivec4(0, 0, 0, 0) | ivec4(0, -2, -4, 9) | ivec4(1, 1, 1, 1) | ivec4(0, 0, 0, 0) ];
			input ivec4 in3 = [ ivec4(1, 1, 1, 1) | ivec4(0, -2, -4, 9) | ivec4(0, 0, 0, 0) | ivec4(0, 0, 0, 0) | ivec4(-32, 64, -51, 24) ];
			output mat4 out0 = [ mat4(-32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, -2.0, -4.0, 9.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0) | mat4(1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, -2.0, -4.0, 9.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case bvec4_bvec4_bvec4_bvec4_to_mat4
		version 310 es
		values
		{
			input bvec4 in0 = [ bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, true, true, true) | bvec4(true, false, false, true) ];
			input bvec4 in1 = [ bvec4(false, true, false, false) | bvec4(false, false, false, true) | bvec4(true, false, false, true) | bvec4(true, true, true, true) | bvec4(false, false, false, false) ];
			input bvec4 in2 = [ bvec4(false, true, false, false) | bvec4(false, false, false, false) | bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(true, false, false, true) ];
			input bvec4 in3 = [ bvec4(true, true, true, true) | bvec4(false, false, false, true) | bvec4(false, false, false, false) | bvec4(false, true, false, false) | bvec4(true, false, false, true) ];
			output mat4 out0 = [ mat4(0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0) | mat4(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0) | mat4(0.0, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.0) | mat4(1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 1.0, 0.0, 0.0) | mat4(1.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 1.0) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4(in0, in1, in2, in3);
				${OUTPUT}
			}
		""
	end

	case float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4
		version 310 es
		values
		{
			input float in0 = [ 2.0 | 1.0 | 3.5 | 0.0 | -20.125 | 36.8125 | -0.5 | -8.25 ];
			input ivec3 in1 = [ ivec3(0, 0, 0) | ivec3(-32, 64, -51) | ivec3(0, 0, 0) | ivec3(1, 1, 1) | ivec3(1, 1, 1) | ivec3(0, -2, -4) | ivec3(0, 0, 0) | ivec3(0, -2, -4) ];
			input bvec3 in2 = [ bvec3(true, false, false) | bvec3(true, true, true) | bvec3(false, false, false) | bvec3(true, false, false) | bvec3(false, false, false) | bvec3(false, true, false) | bvec3(false, false, false) | bvec3(false, true, false) ];
			input vec4 in3 = [ vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(0.0, 0.5, 0.75, 0.825) | vec4(-0.5, -2.25, -4.875, 9.0) | vec4(1.0, 1.25, 1.125, 1.75) | vec4(-0.75, -0.0322580645161, 0.0526315789474, 0.25) | vec4(-32.0, 64.0, -51.0, 24.0) | vec4(0.0, 0.5, 0.75, 0.825) ];
			input ivec2 in4 = [ ivec2(0, 0) | ivec2(1, 1) | ivec2(0, -2) | ivec2(0, 0) | ivec2(1, 1) | ivec2(-32, 64) | ivec2(0, 0) | ivec2(0, -2) ];
			input float in5 = [ 2.0 | 3.5 | 36.8125 | -8.25 | 0.0 | -20.125 | 1.0 | -0.5 ];
			input vec2 in6 = [ vec2(0.0, 0.5) | vec2(-0.5, -2.25) | vec2(-32.0, 64.0) | vec2(0.0, 0.5) | vec2(-0.75, -0.0322580645161) | vec2(-0.5, -2.25) | vec2(1.0, 1.25) | vec2(1.0, 1.25) ];
			output mat4 out0 = [ mat4(2.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, 2.0, 0.0, 0.5) | mat4(1.0, -32.0, 64.0, -51.0, 1.0, 1.0, 1.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 3.5, -0.5, -2.25) | mat4(3.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, 36.8125, -32.0, 64.0) | mat4(0.0, 1.0, 1.0, 1.0, 1.0, 0.0, 0.0, -0.5, -2.25, -4.875, 9.0, 0.0, 0.0, -8.25, 0.0, 0.5) | mat4(-20.125, 1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 1.25, 1.125, 1.75, 1.0, 1.0, 0.0, -0.75, -0.0322580645161) | mat4(36.8125, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, -0.75, -0.0322580645161, 0.0526315789474, 0.25, -32.0, 64.0, -20.125, -0.5, -2.25) | mat4(-0.5, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -32.0, 64.0, -51.0, 24.0, 0.0, 0.0, 1.0, 1.0, 1.25) | mat4(-8.25, 0.0, -2.0, -4.0, 0.0, 1.0, 0.0, 0.0, 0.5, 0.75, 0.825, 0.0, -2.0, -0.5, 1.0, 1.25) ];
		}

		both ""
			#version 310 es
			precision highp float;
			precision highp int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4(in0, in1, in2, in3, in4, in5, in6);
				${OUTPUT}
			}
		""
	end


end # matrix_combine
