13c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup trivial "Trivial expressions"
23c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
33c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case float
43c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 5.0; }
53c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
63c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
73c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
83c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
93c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const float a = 5.0;
133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case int
203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output int out0 = 5; }
213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const int a = 5;
283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case bool
353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output bool out0 = true; }
363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const bool a = true;
433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case cast
503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 1.0; }
513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const float a = float(int(bool(true)));
583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
643c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # trivial
653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
663c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup operators "Operators"
673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case math_float
693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 2.19; }
703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const float a = 6.0/3.5 + 1.8*2.6 - 4.2;
773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case math_vec
843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 15.0; }
853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
903c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const vec3 a = (vec4(1.0, 2.0, 3.0, 4.0).zyx * vec3(1.0, 1.5, 3.0).xyz).xzy + (vec2(5.0)/vec2(2.5)).xxy;
923c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a.x + a.y + a.z;
933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case math_int
993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output int out0 = 7; }
1003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp int;
1023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const int a = 5-1 + 2*3 - 9/3;
1073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
1083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case math_ivec
1143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output int out0 = 21; }
1153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp int;
1173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const ivec3 a = ivec2(5-1, 4).xxy + ivec4(1*3, 9/3, 1+2, 8/4).xyz;
1223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a.x + a.y + a.z;
1233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case math_mat
1293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 8.0; }
1303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
1323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const mat3 a = mat3(3.0) * mat3(4.0);
1373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const mat4 b = mat4(a[1][1])*2.0;
1383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const mat2 c = mat2(b[0][0]) / 3.0;
1393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = c[0][0]+c[1][0];
1403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case logical
1463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output bool out0 = true; }
1473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp int;
1493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const bool a = (!false || false) && (true ^^ false);
1543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
1553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case compare
1613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output bool out0 = true; }
1623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp int;
1643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const bool a = (false == false) && (true != false) && (1 < 2) && (3 <= 3) && ((1 > 1) != (1 >= 1));
1693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
1703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case selection
1763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 5.3; }
1773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
1793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
1823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
1833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const float a = false ? 0.0 : (true ? 5.3 : 1.0);
1843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
1853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
1863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
1873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
1883c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
1893c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1903c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # operators
1913c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1923c827367444ee418f129b2c238299f49d3264554Jarkko Poyrygroup complex_types "Arrays, structs & nested calls"
1933c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
1943c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case struct
1953c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 260.922; }
1963c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
1973c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
1983c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
1993c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2003c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			struct S
2013c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2023c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				vec4 a;
2033c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				int  b;
2043c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			};
2053c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2063c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2073c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2083c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const S s = S(vec4(1.5), 123);
2093c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = length(s.a.xy)*float(s.b);
2103c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2113c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2123c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2133c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2143c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2153c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_struct
2163c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 965.9; }
2173c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2183c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
2193c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
2203c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2213c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			struct S
2223c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2233c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				vec4 v;
2243c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				int  i;
2253c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			};
2263c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2273c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			struct T
2283c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2293c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				S s;
2303c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				bool b;
2313c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				int i;
2323c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			};
2333c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2343c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			struct U
2353c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2363c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				S s;
2373c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				T t;
2383c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			};
2393c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2403c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2413c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2423c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const S s = S(vec4(1.5), 123);
2433c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const T t = T(s, false, 3);
2443c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const U u = U(s, t);
2453c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const U v = U(S(vec4(1.3), 4), T(S(vec4(2.0), 5), true, 6));
2463c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = float(u.s.i*v.t.i + v.t.s.i)*v.s.v.x; // float(123*6 + 5)*1.3
2473c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2483c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2493c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2503c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2513c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2523c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case array
2533c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values
2543c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		{
2553c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			input float in0 = [ 0.0 | 1.0];
2563c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			output float out0 = [0.0 | 1.0];
2573c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		}
2583c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2593c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
2603c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
2613c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2623c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2633c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2643c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				float a[int(max(-1.0, 2.0))];
2653c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				a[0] = -1.0;
2663c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				a[1] = in0;
2673c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a[int(min(1.0, 2.0))];
2683c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2693c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2703c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2713c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2723c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2733c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	case nested_builtin_funcs
2743c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		values { output float out0 = 3.05; }
2753c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		both ""
2763c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			precision highp float;
2773c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			${DECLARATIONS}
2783c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2793c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			void main()
2803c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			{
2813c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				const float a = sqrt( atan(sin(1.5)/cos(1.5)) /*1.5*/ * log2(exp2(log(exp(6.2) + 0.1)) + 0.1) /*~6.2*/);
2823c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				out0 = a;
2833c827367444ee418f129b2c238299f49d3264554Jarkko Poyry				${OUTPUT}
2843c827367444ee418f129b2c238299f49d3264554Jarkko Poyry			}
2853c827367444ee418f129b2c238299f49d3264554Jarkko Poyry		""
2863c827367444ee418f129b2c238299f49d3264554Jarkko Poyry	end
2873c827367444ee418f129b2c238299f49d3264554Jarkko Poyry
2883c827367444ee418f129b2c238299f49d3264554Jarkko Poyryend # complex_types
289