preprocessor.test revision 3c827367444ee418f129b2c238299f49d3264554
13c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup basic "Basic Tests"
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case correct_phases
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define e +1
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				mediump int n = 1e;
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_identifier
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define e +1
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				mediump int 1xyz = 1;
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case null_directive
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 0.0; }
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# // comment
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/*sfd*/		# /* */
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_directive
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#defin AAA
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_identifier
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_object
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = -1.0; }
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE - 1.0;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_function
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = -1.0; }
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE(a)
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE(2.0) - 1.0;
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_directive
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # basic
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup definitions "Symbol Definition Tests"
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case define_value_and_function
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS:single-line}
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define		VALUE			(1.5 + 2.5)
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define		FUNCTION(__LINE__, b)	__LINE__+b
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(VALUE, ((0.2) + 1.8) );
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_object_invalid_syntax
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		VAL			2.0
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef		VAL	sdflkjfds
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		VAL			1.0
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VAL);
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_1
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __LINE__
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__);
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_2
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __FILE__
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__FILE__);
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_3
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef __VERSION__
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__VERSION__);
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_invalid_object_4
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef GL_ES
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(GL_ES);
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefine_function
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define		FUNCTION(a,b) a+b
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef		FUNCTION
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 	FUNCTION(a,b) a-b
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(3.0, 2.0);
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # definitions
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_definitions "Invalid Definition Tests"
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case define_non_identifier
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 123 321
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undef_non_identifier_1
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef 123
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undef_non_identifier_2
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef foo.bar
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_definitions
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup object_redefinitions "Object Redefinition Tests"
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_ident
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2.0
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAAA 		2.1
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAAA - 1.0)
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_whitespace
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2.0
2893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
2903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA- 1.0)
2913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
2953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_op
3003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2.0
3043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA + 1.0)
3063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_floatval_1
3153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2.0
3193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.1)
3213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_floatval_2
3303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2.0
3343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0)
3353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1.0e-1)
3363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_intval_1
3453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2
3493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1)
3503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 2)
3513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_object_intval_2
3603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
3613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA 		2
3643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 1)
3653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define VALUE (AAA - 0x1)
3663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(VALUE);
3703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_1
3753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
3763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
3783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
3793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
3803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
3813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 	VAL2 2.0
3823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 (RES1 * VAL2)
3843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
3853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	(RES1 * VAL2)
3863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
3873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
3893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
3903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
3913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
3923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
3933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
3943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
3953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_ifdef
3973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
3983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
3993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifdef ADEFINE
4063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_undef_ifdef
4203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef ADEFINE
4283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifdef ADEFINE
4303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_ifndef
4443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#ifndef ADEFINE
4533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_defined_1
4673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#if defined(ADEFINE)
4763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
4773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
4783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
4793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
4803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
4823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
4833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
4843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
4853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
4863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
4873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
4883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_defined_2
4903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
4913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
4933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
4943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
4953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define ADEFINE 1
4973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
4983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#if defined ADEFINE
4993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
5003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#else
5013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 0.0
5023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#endif
5033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_comment
5133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
5143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
5193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 	VAL2 2.0
5203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 /* fdsjklfdsjkl dsfjkhfdsjkh fdsjklhfdsjkh */ (RES1 * VAL2)
5223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
5233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
5243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
5253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case redefine_object_multiline_comment
5353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 6.0; }
5363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#	define  VAL1 1.0
5413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define 	VAL2 2.0
5423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2 /* fdsjklfdsjkl
5443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							dsfjkhfdsjkh
5453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry							fdsjklhfdsjkh */ (RES1 * VAL2)
5463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES1	(VAL2 / VAL1)
5473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define RES2	/* ewrlkjhsadf */ (RES1 * VAL2)
5483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE	(RES2 + RES1)
5493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
5533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
5543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5583c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # object_redefinitions
5593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5603c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_redefinitions "Invalid Redefinitions Tests"
5613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_identifier_1
5633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
5643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define __VALUE__	1
5673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__VALUE__);
5713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_identifier_2
5763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
5773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define GL_VALUE	1.0
5803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
5823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
5833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(GL_VALUE);
5843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
5853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
5863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
5873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5883c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_redefinitions
5893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5903c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup comments "Comment Tests"
5913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
5923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case multiline_comment_define
5933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 4.2; }
5943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
5953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
5963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
5973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE /* current
5983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						value */ 4.2
5993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VALUE;
6033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_comment
6093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/* /* */
6173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				// */
6193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case comment_trick_1
6253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case comment_trick_2
6423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
6463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
6503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*/
6513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
6523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/**/
6533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
6543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_comment
6593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/* /* */ */
6653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = 1.0;
6663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment_1
6713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				/*
6773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment_2
6823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
6833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
6843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			/*
6853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
6863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
6873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
6883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
6893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
6903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
6913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6923c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # comments
6933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6943c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup function_definitions "Function Definitions Tests"
6953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case same_object_and_function_param
6973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
6983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
6993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
7023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define VALUE 1.0
7033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FUNCTION(VALUE, B)	(VALUE-B)
7043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNCTION(3.0, 2.0);
7083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case complex_func
7143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 518.5; }
7153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
7183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(a,b)	a*(BBB(a,b))
7193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB(a,b)	a-b
7203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = BBB(AAA(8.0/4.0, 2.0)*BBB(2.0*2.0,0.75*2.0), AAA(40.0,10.0*BBB(5.0,3.0)));
7243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_definition_with_comments
7303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
7313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
7343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			/* sdfljk */  	#/* sdfljk */define /* sdfljk */ FUNC( /* jklsfd*/a /*sfdjklh*/, /*sdfklj */b /*sdfklj*/)		a+b
7353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
7393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
7403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7443c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # function_definitions
7453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7463c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup recursion "Recursions Tests"
7473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_1
7493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	AAA
7533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_2
7623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	BBB
7663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB 	AAA
7673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_3
7763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA	(1.0+BBB)
7803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB 	(2.0+AAA)
7813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA);
7853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
7873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
7883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_4
7903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
7913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
7923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
7933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA(a)	AAA(a)
7943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
7953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
7963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
7973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA(1.0));
7983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
7993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case recursion_5
8033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define AAA(a, b)	AAA(b, a)
8073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(AAA(1.0, 2.0));
8113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8153c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # recursion
8163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8173c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup function_redefinitions "Function Redefinition Tests"
8183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_1
8203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC( a, b)		a+b
8253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_2
8363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		(a  +b)
8403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC( a, b )(a			+b)
8413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case function_redefinition_3
8523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.0; }
8533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		(a  +b)
8563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)(a	/* comment
8573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry									 */ +b)
8583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
8603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(1.0, 2.0);
8633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
8643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_1
8693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A,b)		A+b
8743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
8783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_2
8833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
8863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
8873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b,c)	a+b+c
8883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
8903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
8913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
8923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
8933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
8943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
8953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
8963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_function_redefinition_param_3
8973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
8983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
8993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		b+a
9023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0));
9063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9103c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # functions_redefinitions
9113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9123c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_function_definitions "Invalid Function Definition Tests"
9133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_1
9153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC);
9233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_2
9283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC());
9363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_3
9413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC((();
9493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_4
9543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC));
9623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_5
9673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0));
9753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_6
9803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
9873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
9883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
9893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
9903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
9913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_7
9933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
9943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
9953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
9963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
9973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
9983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
9993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,));
10013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case arguments_8
10063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,b)		a+b
10103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0, 2.0, 3.0));
10143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unique_param_name
10193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a,a)		a+a
10233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_1
10323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a b)		a+b
10363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_2
10453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(a + b)		a+b
10493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case argument_list_3
10583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(,a,b)		a+b
10623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_1
10713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(
10753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_2
10843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
10873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A  a+b
10883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
10903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
10913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
10923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
10933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
10943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
10953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
10963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_3
10973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
10983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
10993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(A,B,C  a+b
11013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0));
11053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case no_closing_parenthesis_4
11103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
11113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			# define FUNC(
11143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_function_definitions
11183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11193c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup semantic "Semantic Tests"
11203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ops_as_arguments
11223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 20.0; }
11233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FOO(a, b)		(1 a 9) b 2
11273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(FOO(+, *));
11313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case correct_order
11373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FUNC(A) A
11423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define A 2.0
11433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = FUNC(A - 1.0);
11473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11523c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # semantic
11533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11543c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup predefined_macros "Predefined Macros Tests"
11553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version
11573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 100.0; }
11583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define AAA __VERSION__
11643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(AAA);
11653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case gl_es_1
11713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(GL_ES);
11793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case gl_es_2
11853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
11863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
11873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
11883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
11893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(A) A
11903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
11923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
11933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(AAA(GL_ES));
11943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
11953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
11963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
11973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
11983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
11993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_1
12003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			const mediump int line = __LINE__;
12033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(line);
12083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_2
12143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Note: Arguments are macro replaced in the first stage.
12153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		# Macro replacement list is expanded in the last stage.
12163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(11.0, 11.0, 9.0, 10.0); }
12173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS:single-line}
12213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define BBB		__LINE__, /*
12223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				*/ __LINE__
12233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA(a,b) BBB, a, b
12243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(AAA(__LINE__,
12283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						__LINE__
12293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry						));
12303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case file
12363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 0.0; }
12373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__FILE__);
12433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_gl_es
12493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if GL_ES
12563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
12583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
12593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
12603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_version
12663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if __VERSION__ == 100
12733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
12753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
12763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
12773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
12783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
12793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
12803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
12813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12823c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # predefined_macros
12833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12843c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup conditional_inclusion "Conditional Inclusion Tests"
12853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_1
12873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
12883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
12893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
12903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
12913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
12923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
12933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA asdf
12943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
12953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined AAA && !defined(BBB)
12963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
12973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
12983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
12993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_2
13063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA defined(BBB)
13133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !AAA
13153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
13183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_3
13253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
13323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
13363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -3.0;
13393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_4
13463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
13533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic_5
13653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
13723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
13743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -2.0;
13753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
13833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unary_ops_1
13843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
13853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
13863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
13873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
13883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
13893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
13903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~2 >> 1) & 1)
13913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
13923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
13933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
13943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
13953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
13963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
13973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
13983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
13993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unary_ops_2
14013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
14023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
14053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(- - - - - 1 + + + + + +1) >> 1) & 1)
14083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
14093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
14113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
14133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14173c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # conditional_inclusion
14183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14193c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_ops "Invalid Operations Tests"
14203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_op_1
14223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(+ ++1 - - - -1) >> 1) & 1)
14283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
14293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_op_2
14373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !((~(+ + +1 - -- -1) >> 1) & 1)
14433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
14443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
14453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_1
14523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined
14603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_2
14673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined()
14753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_3
14823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
14853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
14863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
14883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
14893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined(
14903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
14913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
14923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
14933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
14943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
14953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
14963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_4
14973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
14983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
14993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined)
15053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
15063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_identifier_5
15123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined((AAA))
15203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(FUNC(1.0,2.0);
15213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_defined_expected_rparen
15273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define AAA 1
15313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined(AAA
15353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
15363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_define
15423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define define 1
15473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA 1.0
15483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = AAA;
15523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15573c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_ops
15583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15593c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup undefined_identifiers "Undefined Identifiers Tests"
15603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case valid_undefined_identifier_1
15623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 || AAA
15693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
15703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
15713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
15723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case valid_undefined_identifier_2
15793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
15803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
15833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
15843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
15853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0 && AAA
15863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
15873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
15883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
15893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
15903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
15913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
15923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
15933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
15943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
15953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_1
15963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
15973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
15983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
15993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 - CCC + (-AAA || BBB)
16023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_2
16113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !A
16173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_3
16263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if -A
16323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_4
16413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ~A
16473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_5
16563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_6
16713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 1
16773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
16843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
16853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
16863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_7
16873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
16883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
16893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
16903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
16913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
16923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
16933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
16943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
16953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
16963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
16973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
16983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
16993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_8
17033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
17093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 2
17103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#undef A
17113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A && B
17123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_9
17213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_10
17363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 0
17423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_11
17523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define A 0
17583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define B 2
17593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#undef B
17603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case undefined_identifier_12
17703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry    #define B 1
17763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if A || B
17773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
17793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
17803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
17813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
17843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17853c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # undefined_identifiers
17863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17873c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_conditionals "Invalid Conditionals Tests"
17883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
17893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_if
17903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
17913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
17923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
17933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
17943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
17953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if
17963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
17973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
17983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
17993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_ifdef
18023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef
18083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_ifndef
18143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef
18203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_if_defined
18263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined
18323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_if_1
18383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
18443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_if_2
18503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
18563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_ifdef
18623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef FOOBAR
18683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_ifndef
18743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef GL_ES
18803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_else_1
18863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
18873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
18883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
18893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
18903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
18913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
18923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
18933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
18943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
18953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
18963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
18973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
18983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_else_2
18993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_1
19123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_2
19253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
19313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
19323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_elif_3
19383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 0
19453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(2.0);
19463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case elif_after_else
19513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
19573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(-1.0);
19603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(0.0);
19623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case else_without_if
19683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
19743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case elif_without_if
19813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
19873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
19883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
19893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
19903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
19913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
19923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
19933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case endif_without_if
19943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
19953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
19963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
19973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
19983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
19993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case else_after_else
20063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !GL_ES
20123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
20143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(-1.0);
20153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
20163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(-1.0);
20173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_elif_without_if
20233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
20293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	elif
20313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(0.0);
20323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
20333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case if_float
20393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1.231
20453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(1.0);
20463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	elif
20473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${POSITION_FRAG_COLOR} = vec4(0.0);
20483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
20493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_if
20553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1 foobar
20613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_elif
20683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
20743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif foobar
20753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_else
20823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
20863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
20873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
20883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else foobar 1.231
20893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
20903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
20913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
20923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
20933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
20943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
20953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_endif
20963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
20973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
20983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
20993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
21023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif foobar
21043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_ifdef
21103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef FOOBAR foobar
21163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case tokens_after_ifndef
21243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef FOOBAR ,, +- << barbar
21303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21373c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_conditionals
21383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21393c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup conditionals "Conditionals Tests"
21403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_nested_blocks
21423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
21433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
21483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 1
21493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
21503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_1
21553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
21583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef AAA
21633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
21643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
21663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
21683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_2
21733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
21763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if defined  ( AAA)
21813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
21823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
21833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
21843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
21853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
21863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
21873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
21883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
21893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
21903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifdef_3
21913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
21923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
21933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
21943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
21953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
21963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
21973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef AAA
21983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
21993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_ifdef
22083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
22093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifdef 1
22143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
22153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifndef_1
22213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case ifndef_2
22383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA
22433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
22483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_ifndef
22563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
22573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef 1
22623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
22633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mixed_conditional_inclusion
22693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#ifndef AAA
22763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#elif 1
22783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
22813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
22823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
22833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
22843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
22853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_1
22863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
22873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
22883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
22893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
22903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
22913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
22923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if GL_ES
22933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if __VERSION__ != 100
22943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
22953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	else
22963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
22973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
22983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
22993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_2
23053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 1
23123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 0
23133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	else
23153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		if 0
23163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		elif 1
23183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		else
23203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#		endif
23223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
23233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
23243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_if_3
23303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 0
23373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	if 1
23383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = -1.0;
23393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#	endif
23403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
23413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
23433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23483c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # conditionals
23493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23503c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup directive "Directive Tests"
23513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version
23533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
23543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/* asdf */
23563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100
23573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
23593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
23623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
23633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_is_less
23683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 99
23713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
23753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_is_more
23803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 101
23833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
23873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
23883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
23893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
23903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
23913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_missing
23923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
23933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
23943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version
23953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
23963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
23973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
23983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
23993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_not_first_statement_1
24043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#version 100
24083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_not_first_statement_2
24163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define FOO BAR
24193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#version 100
24203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_invalid_token_1
24293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100.0
24323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case version_invalid_token_2
24413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version foobar
24443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_version
24533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version AAA
24563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case additional_tokens
24653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#version 100 foobar
24683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case error_with_no_tokens
24773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#error
24803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
24873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
24883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case error
24893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
24903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
24913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define AAA asdf
24923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#error 1 * AAA /* comment */
24933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
24943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
24953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
24963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
24973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
24983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
24993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25013c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # directive
25023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25033c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup builtin "Built-in Symbol Tests"
25043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line
25063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
25073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 1
25133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_and_file
25203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(234.0, 234.0, 10.0, 10.0); }
25213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 234 10
25273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_expression
25343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 20.0; }
25353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#line +20
25413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_and_file_expression
25483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(243.0, 243.0, 10.0, 10.0); }
25493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#line (233 +10) (+10)
25553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_defined_1
25623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 4.0; }
25633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 4
25693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line A
25703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(__LINE__);
25713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case line_defined_2
25773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output vec4 out0 = vec4(234.0, 234.0, 10.0, 10.0); }
25783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
25813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define A 10
25843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 234 A
25853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
25863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
25873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
25883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
25893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
25903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
25913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case empty_line
25923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
25933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
25943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
25953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
25963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
25973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line
25983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
25993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_1
26043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 22 1.234
26103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_3
26163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line 233 10 2
26223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_line_file_4
26283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#line foobar
26343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(__LINE__, __LINE__, __FILE__, __FILE__);
26353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26393c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # builtin
26403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26413c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup pragmas "Pragma Tests"
26423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case pragma
26443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
26453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma
26473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma STDGL invariant(all)
26483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma debug(off)
26493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma optimize(off)
26503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
26533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
26563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
26573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case pragma_macro_exp
26623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
26633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define off	INVALID
26653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	/* pragma line not macro expanded */
26663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#pragma debug(off)
26673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
26703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
26733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
26743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_pragma_invalid_debug
26793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#pragma debug(1.23)
26823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
26873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
26883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
26893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
26903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_pragma_invalid_token
26923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
26933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
26943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#pragma ¤¤½
26953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
26963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
26973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
26983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
26993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27043c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # pragmas
27053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27063c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup extensions "Extension Tests"
27073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case basic
27093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
27103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
27123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
27153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
27183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
27193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case macro_exp
27243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
27253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define warn enable
27273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
27293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
27323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 1.0;
27353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
27363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_extension_name
27413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension
27443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_extension_name
27533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension 2 : all
27563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_colon
27653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all
27683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case expected_colon
27773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all ;
27803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
27883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_behavior
27893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
27903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
27913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all :
27923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
27933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
27943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
27953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
27963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
27973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
27983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
27993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_behavior_1
28013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : WARN
28043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_behavior_2
28133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : require
28163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_char_in_name
28253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all¤ : warn
28283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_char_in_behavior
28373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : war¤n
28403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unterminated_comment
28493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn /*asd
28523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case after_non_preprocessing_tokens
28613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
28623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : warn
28643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
28673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#extension all : disable
28703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
28713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28743c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # extensions
28753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28763c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup expressions "Expression Tests"
28773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case shift_left
28793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
28803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
28833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
28843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
28853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
28863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
28873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL << 2) == 16
28883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
28893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
28903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
28913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
28923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
28933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
28943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
28953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case shift_right
28963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
28973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
28983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
28993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 5
29033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >> 1) == 2
29053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case cmp_less_than
29133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 5
29203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL < 6) && (-VAL < -4)
29223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal
29303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
29373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL <= 6) && (-VAL <= -6)
29393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case or
29473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
29543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL | 5) == 7
29563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case and
29643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
29713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL & 5) == 4
29733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case xor
29813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
29833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
29843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
29853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
29863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
29873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 6
29883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
29893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL ^ 5) == 3
29903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
29913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
29923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
29933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
29943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
29953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
29963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
29973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mod
29983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
29993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 12
30053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL % 5) == 2
30073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_value
30153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL ((  (4   ) )  )
30223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL >= 4
30243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_tricky
30323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL ((  (4   ) )
30393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL) >= 4
30413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_if_no
30493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
30563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if VAL >= 4
30583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_if
30663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
30733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
30753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_multi_if
30833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
30843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
30853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
30863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
30873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
30883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
30893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL (4)
30903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
30913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (((VAL)) >= (4))
30923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
30933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
30943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
30953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
30963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
30973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
30983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
30993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_single_if
31003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = 0.0;
31083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
31093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_ifelse_true
31173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL >= 4)
31253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case parenthesis_ifelse_false
31353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#define VAL 4
31423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (VAL > 4)
31433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_basic_0
31533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if -4 + 5 == 1
31603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_basic_1
31703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if (2 * 2) - 3 >= 0
31773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
31833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
31843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
31853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
31863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_simple_precedence_0
31873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
31883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
31893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
31903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
31913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
31923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
31933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if 2 * 3 - 3 == 3
31943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
31953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
31963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
31973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
31983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
31993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case eval_simple_precedence_1
32043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if 2 - 2 / 2 == 1
32113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_1
32213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X)
32293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_2
32393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
32453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) == Y
32483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_3
32583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
32643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && defined(Y)
32673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_4
32773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
32803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
32813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
32823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
32833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef X
32843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
32853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
32863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && defined(Y)
32873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
32883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
32893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
32903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
32913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
32923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
32933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
32943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
32953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
32963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_5
32973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
32983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
32993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef X
33043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) || defined(Y)
33073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case defined_6
33173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
33183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
33213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define X 0
33223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#define Y 1
33233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			#undef Y
33243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#if defined(X) && (defined(Y) || (X == 0))
33273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 1.0;
33283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#else
33293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry					out0 = 0.0;
33303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				#endif
33313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
33323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # expressions
33373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33383c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup invalid_expressions "Invalid Expression Tests"
33393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_unary_expr
33413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if !
33473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_binary_expr
33533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 3+4+
33593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case missing_expr
33653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if
33713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_1
33773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4 4
33833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_2
33893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
33903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
33913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
33923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
33933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
33943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4 * * 4
33953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
33963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
33973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
33983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
33993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case invalid_expr_3
34013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if (4)(4)
34073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unopened_parenthesis
34133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if 4)
34193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case unclosed_parenthesis
34253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		expect compile_fail
34263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ((4 + 7)
34313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${POSITION_FRAG_COLOR} = vec4(1.0);
34323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34363c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # invalid_expressions
34373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34383c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup operator_precedence "Operator precedence"
34393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_not
34423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
34433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % ! 0 ) == 0
34463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
34473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
34483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
34493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
34503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
34523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
34553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
34563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_not
34613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
34623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / ! 0 ) == 8
34653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
34663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
34673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
34683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
34693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
34713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
34743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
34753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_not
34803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
34813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
34823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * ! 0 ) == 8
34843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
34853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
34863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
34873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
34883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
34893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
34903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
34913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
34923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
34933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
34943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
34953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
34963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
34973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
34983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_bit_invert
34993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % ~ 4 ) == 3
35033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_minus
35183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % - 2 ) == 0
35223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case modulo_vs_plus
35373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 % + 2 ) == 0
35413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_bit_invert
35563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / ~ 2 ) == -2
35603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_minus
35753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / - 2 ) == -4
35793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
35813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
35823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
35833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
35843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
35853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
35863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
35873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
35883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
35893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
35903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
35913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
35923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case div_vs_plus
35943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
35953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
35963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
35973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 / + 2 ) == 4
35983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
35993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_bit_invert
36133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * ~ 2 ) == -24
36173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_minus
36323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * - 2 ) == -16
36363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case mul_vs_plus
36513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 * + 2 ) == 16
36553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_modulo
36703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 % 2 ) == 7
36743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
36813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
36823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
36833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
36843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
36853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
36863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
36873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_div
36893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
36903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
36913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
36923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 / 2 ) == 7
36933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
36943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
36953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
36963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
36973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
36983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
36993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case sub_vs_mul
37083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 - 3 * 2 ) == 2
37123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_modulo
37273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 % 2 ) == 9
37313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_div
37463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 / 2 ) == 9
37503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case add_vs_mul
37653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 + 3 * 2 ) == 14
37693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
37813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
37823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case rshift_vs_sub
37843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
37853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
37863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
37873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >> 3 - 2 ) == 4
37883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
37893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
37903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
37913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
37923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
37933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
37943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
37953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
37963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
37973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
37983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
37993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case rshift_vs_add
38033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >> 3 + 2 ) == 0
38073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case lshift_vs_sub
38223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 << 3 - 2 ) == 16
38263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case lshift_vs_add
38413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 << 3 + 2 ) == 256
38453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_or_equal_vs_rshift
38603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >= 3 >> 2 ) == 1
38643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_or_equal_vs_lshift
38793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
38813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 >= 3 << 2 ) == 0
38833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
38843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
38853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
38863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
38873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
38883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
38893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
38903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
38913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
38923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
38933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
38943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
38953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
38963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
38973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal_vs_rshift
38983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
38993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 <= 3 >> 2 ) == 0
39023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_or_equal_vs_lshift
39173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 <= 3 << 2 ) == 1
39213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_vs_rshift
39363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 > 3 >> 2 ) == 1
39403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case greater_vs_lshift
39553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 > 3 << 2 ) == 0
39593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_vs_rshift
39743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 < 3 >> 2 ) == 0
39783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
39813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
39823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
39833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
39843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
39853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
39863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
39873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
39883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
39893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
39903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
39913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case less_vs_lshift
39933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
39943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
39953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
39963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 < 3 << 2 ) == 1
39973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
39983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
39993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_greater_or_equal
40123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 >= 2 ) == 1
40163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_less_or_equal
40313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 <= 2 ) == 1
40353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_greater
40503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 > 2 ) == 1
40543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case not_equal_vs_less
40693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 != 3 < 2 ) == 1
40733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
40813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
40823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
40833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
40843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
40853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
40863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_greater_or_equal
40883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
40893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
40903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
40913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 >= 2 ) == 0
40923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
40933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
40943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
40953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
40963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
40973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
40983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
40993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_less_or_equal
41073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 <= 2 ) == 0
41113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_greater
41263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 > 2 ) == 0
41303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case equal_vs_less
41453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 == 3 < 2 ) == 0
41493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_and_vs_not_equal
41643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 & 3 != 2 ) == 0
41683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
41813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_and_vs_equal
41833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
41843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
41853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
41863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 & 3 == 2 ) == 0
41873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
41883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
41893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
41903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
41913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
41923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
41933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
41943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
41953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
41963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
41973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
41983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
41993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case xor_vs_bitwise_and
42023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 ^ 3 & 2 ) == 10
42063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bitwise_or_vs_xor
42213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 8 | 3 ^ 2 ) == 9
42253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_and_vs_bitwise_or
42403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 && 3 | 2 )
42443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_and_vs_bitwise_and
42593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 && 4 & 2 )
42633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical_or_vs_logical_and
42783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
42793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
42803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#if ( 0 || 4 && 0 )
42823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 0.0
42833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#else
42843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#define VAL 1.0
42853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	#endif
42863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision mediump float;
42873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
42883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
42893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
42903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = VAL;
42913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
42923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
42933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
42943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
42953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
42963c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # operator_precedence
4297