# 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_float
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_int
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_bool
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_uint
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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


end # vector_to_scalar
group vector_illegal "Illegal Vector Conversions"

	case vec2_to_vec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_ivec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_uvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_bvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_vec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_ivec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_uvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_bvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_vec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_ivec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_uvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_bvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_vec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_ivec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_uvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_bvec3
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				vec3 in0 = vec3(0.0, 0.5, 0.75);
				vec4 out0 = vec4(in0);
				${OUTPUT}
			}
		""
	end

	case vec3_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				vec3 in0 = vec3(0.0, 0.5, 0.75);
				ivec4 out0 = ivec4(in0);
				${OUTPUT}
			}
		""
	end

	case vec3_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				vec3 in0 = vec3(0.0, 0.5, 0.75);
				uvec4 out0 = uvec4(in0);
				${OUTPUT}
			}
		""
	end

	case vec3_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				vec3 in0 = vec3(0.0, 0.5, 0.75);
				bvec4 out0 = bvec4(in0);
				${OUTPUT}
			}
		""
	end

	case ivec3_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_vec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_ivec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_uvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_bvec4
		version 300 es
		expect compile_fail
		values {}

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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


end # vector_illegal
group vector_to_vector "Vector to Vector Conversions"

	case vec4_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec4_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec3_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec2_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uvec2_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x3_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat4x2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x4_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat3x2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x4_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2x3_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case mat2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_vec2_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_vec2_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_bvec2_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_bvec2_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_bvec2_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_int_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_int_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_int_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_uint_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_uint_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_uint_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_bool_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_bool_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_bool_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_bool_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_bool_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_bool_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec2_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec2_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec2_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_ivec2_int_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_ivec2_int_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_ivec2_int_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_ivec2_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_ivec2_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_ivec2_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec3_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec3_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec3_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uvec2_bool_to_vec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uvec2_bool_to_ivec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uvec2_bool_to_bvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_vec2_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_bvec2_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_int_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_uint_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_bool_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_bool_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec2_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_ivec2_int_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_ivec2_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec3_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uvec2_bool_to_uvec4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bool_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bool_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bool_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_float_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_float_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_float_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_int_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_int_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_int_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_ivec2_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_ivec2_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_ivec2_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec2_to_vec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec2_to_ivec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec2_to_bvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bool_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_float_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_int_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_ivec2_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec2_to_uvec3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_int_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_int_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_int_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bool_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bool_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bool_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_bool_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_bool_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_bool_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uint_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uint_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uint_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_float_to_vec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_float_to_ivec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_float_to_bvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

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

		both ""
			#version 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_int_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bool_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_bool_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uint_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_float_to_uvec2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec2_bvec2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_int_int_int_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case uint_uint_uint_uint_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_bool_bool_bool_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_int_bool_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_ivec2_int_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bool_float_ivec2_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_uvec3_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case int_uvec2_bool_to_mat2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_vec3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_bvec3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_float_float_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_ivec3_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec4_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_ivec2_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_bvec2_to_mat2x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_vec3_vec2_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_ivec3_ivec2_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_float_float_int_bool_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat2x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bvec2_int_vec4_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bvec4_ivec2_bool_to_mat2x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_vec3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_bvec3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_float_float_float_float_float_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_ivec3_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_bvec4_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec3_float_ivec2_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_float_bvec2_to_mat3x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec3_vec3_vec3_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_ivec3_ivec3_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_float_float_int_bool_bool_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4);
				${OUTPUT}
			}
		""
	end

	case float_bvec4_ivec2_bool_bool_to_mat3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3(in0, in1, in2, in3, in4);
				${OUTPUT}
			}
		""
	end

	case vec4_vec4_vec4_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_ivec4_ivec4_to_mat3x4
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat3x4(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec3_vec3_vec2_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec3_ivec3_ivec2_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec2_ivec2_float_float_int_bool_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x2(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case bool_bvec2_int_vec4_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_bvec4_ivec2_bool_to_mat4x2
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case vec4_vec4_vec4_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_ivec4_ivec4_to_mat4x3
		version 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump 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 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4x3(in0, in1, in2, in3, in4, in5);
				${OUTPUT}
			}
		""
	end

	case vec4_vec4_vec4_vec4_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case ivec4_ivec4_ivec4_ivec4_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case bvec4_bvec4_bvec4_bvec4_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

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

	case float_ivec3_bvec3_vec4_ivec2_float_vec2_to_mat4
		version 300 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 300 es
			precision mediump float;
			precision mediump int;

			${DECLARATIONS}

			void main()
			{
				${SETUP}
				out0 = mat4(in0, in1, in2, in3, in4, in5, in6);
				${OUTPUT}
			}
		""
	end


end # matrix_combine