From: Ian Romanick Date: Fri, 25 Sep 2009 23:57:38 +0000 (-0700) Subject: Merge branch 'asm-shader-rework-2' X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8130375e775bd5ba6a47412b0ea8ec9f23dc5972;p=mesa.git Merge branch 'asm-shader-rework-2' Conflicts: src/mesa/shader/program_parse.tab.c --- 8130375e775bd5ba6a47412b0ea8ec9f23dc5972 diff --cc src/mesa/shader/program_parse.tab.c index 2de950b73b6,c51b4d2f282..c0f50147bd9 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@@ -763,33 -782,35 +782,35 @@@ static const yytype_int16 yyrhs[] /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 256, 256, 259, 267, 279, 280, 283, 305, 306, - 309, 324, 327, 332, 339, 340, 341, 342, 343, 344, - 345, 348, 349, 352, 358, 365, 372, 380, 387, 395, - 440, 447, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 467, 480, 493, 506, 528, 537, - 570, 577, 592, 642, 684, 695, 716, 726, 732, 763, - 780, 780, 782, 789, 801, 802, 803, 806, 820, 834, - 852, 863, 875, 877, 878, 879, 880, 883, 883, 883, - 883, 884, 887, 888, 889, 890, 891, 892, 895, 913, - 917, 923, 927, 931, 935, 944, 953, 957, 962, 968, - 979, 979, 980, 982, 986, 990, 994, 1000, 1000, 1002, - 1018, 1041, 1044, 1055, 1061, 1067, 1068, 1075, 1081, 1087, - 1095, 1101, 1107, 1115, 1121, 1127, 1135, 1136, 1139, 1140, - 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1152, - 1161, 1165, 1169, 1175, 1184, 1188, 1192, 1201, 1205, 1211, - 1217, 1224, 1229, 1237, 1247, 1249, 1257, 1263, 1267, 1271, - 1277, 1288, 1297, 1301, 1306, 1310, 1314, 1318, 1324, 1331, - 1335, 1341, 1349, 1360, 1367, 1371, 1377, 1387, 1398, 1402, - 1420, 1429, 1432, 1438, 1442, 1446, 1452, 1463, 1468, 1473, - 1478, 1483, 1488, 1496, 1499, 1504, 1517, 1525, 1536, 1544, - 1544, 1546, 1546, 1548, 1558, 1563, 1570, 1580, 1589, 1594, - 1601, 1611, 1621, 1633, 1633, 1634, 1634, 1636, 1646, 1654, - 1664, 1672, 1680, 1689, 1700, 1704, 1710, 1711, 1712, 1715, - 1715, 1718, 1718, 1721, 1727, 1735, 1748, 1757, 1766, 1770, - 1779, 1788, 1799, 1806, 1811, 1820, 1832, 1835, 1844, 1855, - 1856, 1857, 1860, 1861, 1862, 1865, 1866, 1869, 1870, 1873, - 1874, 1877, 1888, 1899, 1910 + 0, 268, 268, 271, 279, 291, 292, 295, 317, 318, + 321, 336, 339, 344, 351, 352, 353, 354, 355, 356, + 357, 360, 361, 362, 365, 371, 377, 383, 390, 396, + 403, 447, 452, 462, 506, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 526, 538, 546, + 563, 570, 589, 600, 620, 645, 654, 687, 694, 709, + 759, 801, 812, 833, 843, 849, 880, 897, 897, 899, - 906, 918, 919, 920, 923, 935, 947, 965, 976, 988, - 990, 991, 992, 993, 996, 996, 996, 996, 997, 1000, - 1004, 1009, 1016, 1023, 1030, 1053, 1076, 1077, 1078, 1079, - 1080, 1081, 1084, 1102, 1106, 1112, 1116, 1120, 1124, 1133, - 1142, 1146, 1151, 1157, 1168, 1168, 1169, 1171, 1175, 1179, - 1183, 1189, 1189, 1191, 1207, 1230, 1233, 1244, 1250, 1256, - 1257, 1264, 1270, 1276, 1284, 1290, 1296, 1304, 1310, 1316, - 1324, 1325, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, - 1336, 1337, 1338, 1341, 1350, 1354, 1358, 1364, 1373, 1377, - 1381, 1390, 1394, 1400, 1406, 1413, 1418, 1426, 1436, 1438, - 1446, 1452, 1456, 1460, 1466, 1477, 1486, 1490, 1495, 1499, - 1503, 1507, 1513, 1520, 1524, 1530, 1538, 1549, 1556, 1560, - 1566, 1576, 1587, 1591, 1609, 1618, 1621, 1627, 1631, 1635, - 1641, 1652, 1657, 1662, 1667, 1672, 1677, 1685, 1688, 1693, - 1706, 1714, 1725, 1733, 1733, 1735, 1735, 1737, 1747, 1752, - 1759, 1769, 1778, 1783, 1790, 1800, 1810, 1822, 1822, 1823, - 1823, 1825, 1835, 1843, 1853, 1861, 1869, 1878, 1889, 1893, - 1899, 1900, 1901, 1904, 1904, 1907, 1942, 1946, 1946, 1949, - 1955, 1963, 1976, 1985, 1994, 1998, 2007, 2016, 2027, 2034, - 2039, 2048, 2060, 2063, 2072, 2083, 2084, 2085, 2088, 2089, - 2090, 2093, 2094, 2097, 2098, 2101, 2102, 2105, 2116, 2127, - 2138, 2159, 2160 ++ 906, 918, 919, 920, 923, 937, 951, 969, 980, 992, ++ 994, 995, 996, 997, 1000, 1000, 1000, 1000, 1001, 1004, ++ 1008, 1013, 1020, 1027, 1034, 1057, 1080, 1081, 1082, 1083, ++ 1084, 1085, 1088, 1106, 1110, 1116, 1120, 1124, 1128, 1137, ++ 1146, 1150, 1155, 1161, 1172, 1172, 1173, 1175, 1179, 1183, ++ 1187, 1193, 1193, 1195, 1211, 1234, 1237, 1248, 1254, 1260, ++ 1261, 1268, 1274, 1280, 1288, 1294, 1300, 1308, 1314, 1320, ++ 1328, 1329, 1332, 1333, 1334, 1335, 1336, 1337, 1338, 1339, ++ 1340, 1341, 1342, 1345, 1354, 1358, 1362, 1368, 1377, 1381, ++ 1385, 1394, 1398, 1404, 1410, 1417, 1422, 1430, 1440, 1442, ++ 1450, 1456, 1460, 1464, 1470, 1481, 1490, 1494, 1499, 1503, ++ 1507, 1511, 1517, 1524, 1528, 1534, 1542, 1553, 1560, 1564, ++ 1570, 1580, 1591, 1595, 1613, 1622, 1625, 1631, 1635, 1639, ++ 1645, 1656, 1661, 1666, 1671, 1676, 1681, 1689, 1692, 1697, ++ 1710, 1718, 1729, 1737, 1737, 1739, 1739, 1741, 1751, 1756, ++ 1763, 1773, 1782, 1787, 1794, 1804, 1814, 1826, 1826, 1827, ++ 1827, 1829, 1839, 1847, 1857, 1865, 1873, 1882, 1893, 1897, ++ 1903, 1904, 1905, 1908, 1908, 1911, 1946, 1950, 1950, 1953, ++ 1959, 1967, 1980, 1989, 1998, 2002, 2011, 2020, 2031, 2038, ++ 2043, 2052, 2064, 2067, 2076, 2087, 2088, 2089, 2092, 2093, ++ 2094, 2097, 2098, 2101, 2102, 2105, 2106, 2109, 2120, 2131, ++ 2142, 2163, 2164 }; #endif @@@ -2785,16 -2965,14 +2965,16 @@@ yyreduce { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; - case 67: + case 74: /* Line 1455 of yacc.c */ - #line 807 "program_parse.y" + #line 924 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { - yyerror(& (yylsp[(1) - (1)]), state, - "relative address offset too large (positive)"); + char s[100]; + _mesa_snprintf(s, sizeof(s), + "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); + yyerror(& (yylsp[(1) - (1)]), state, s); YYERROR; } else { (yyval.integer) = (yyvsp[(1) - (1)].integer); @@@ -2802,16 -2980,14 +2982,16 @@@ ;} break; - case 68: + case 75: /* Line 1455 of yacc.c */ - #line 821 "program_parse.y" -#line 936 "program_parse.y" ++#line 938 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { - yyerror(& (yylsp[(1) - (1)]), state, - "relative address offset too large (negative)"); + char s[100]; + _mesa_snprintf(s, sizeof(s), + "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); + yyerror(& (yylsp[(1) - (1)]), state, s); YYERROR; } else { (yyval.integer) = (yyvsp[(1) - (1)].integer); @@@ -2819,10 -2995,10 +2999,10 @@@ ;} break; - case 69: + case 76: /* Line 1455 of yacc.c */ - #line 835 "program_parse.y" -#line 948 "program_parse.y" ++#line 952 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@@ -2840,10 -3016,10 +3020,10 @@@ ;} break; - case 70: + case 77: /* Line 1455 of yacc.c */ - #line 853 "program_parse.y" -#line 966 "program_parse.y" ++#line 970 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@@ -2854,10 -3030,10 +3034,10 @@@ ;} break; - case 71: + case 78: /* Line 1455 of yacc.c */ - #line 864 "program_parse.y" -#line 977 "program_parse.y" ++#line 981 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@@ -2869,93 -3045,86 +3049,86 @@@ ;} break; - case 76: - - /* Line 1455 of yacc.c */ - #line 880 "program_parse.y" - { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} - break; - - case 81: + case 83: /* Line 1455 of yacc.c */ - #line 884 "program_parse.y" -#line 993 "program_parse.y" ++#line 997 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 88: /* Line 1455 of yacc.c */ - #line 896 "program_parse.y" - { - struct asm_symbol *const s = - declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); - - if (s == NULL) { - YYERROR; - } else { - s->attrib_binding = (yyvsp[(4) - (4)].attrib); - state->InputsBound |= (1U << s->attrib_binding); - - if (!validate_inputs(& (yylsp[(4) - (4)]), state)) { - YYERROR; - } - } - ;} -#line 997 "program_parse.y" ++#line 1001 "program_parse.y" + { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 89: /* Line 1455 of yacc.c */ - #line 914 "program_parse.y" -#line 1001 "program_parse.y" ++#line 1005 "program_parse.y" { - (yyval.attrib) = (yyvsp[(2) - (2)].attrib); + (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); ;} break; case 90: /* Line 1455 of yacc.c */ - #line 918 "program_parse.y" -#line 1005 "program_parse.y" ++#line 1009 "program_parse.y" { - (yyval.attrib) = (yyvsp[(2) - (2)].attrib); + (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); ;} break; case 91: /* Line 1455 of yacc.c */ - #line 924 "program_parse.y" -#line 1009 "program_parse.y" ++#line 1013 "program_parse.y" { - (yyval.attrib) = VERT_ATTRIB_POS; + (yyval.dst_reg).CondMask = COND_TR; + (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; + (yyval.dst_reg).CondSrc = 0; ;} break; case 92: /* Line 1455 of yacc.c */ - #line 928 "program_parse.y" -#line 1017 "program_parse.y" ++#line 1021 "program_parse.y" { - (yyval.attrib) = VERT_ATTRIB_WEIGHT; + (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); + (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; ;} break; case 93: /* Line 1455 of yacc.c */ - #line 932 "program_parse.y" -#line 1024 "program_parse.y" ++#line 1028 "program_parse.y" { - (yyval.attrib) = VERT_ATTRIB_NORMAL; + (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); + (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; ;} break; case 94: /* Line 1455 of yacc.c */ - #line 936 "program_parse.y" -#line 1031 "program_parse.y" ++#line 1035 "program_parse.y" { - if (!state->ctx->Extensions.EXT_secondary_color) { - yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); + const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); + if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + YYERROR; } @@@ -2966,10 -3137,20 +3141,20 @@@ case 95: /* Line 1455 of yacc.c */ - #line 945 "program_parse.y" -#line 1054 "program_parse.y" ++#line 1058 "program_parse.y" { - if (!state->ctx->Extensions.EXT_fog_coord) { - yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); + const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); + if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + YYERROR; } @@@ -2977,38 -3160,132 +3164,132 @@@ ;} break; - case 96: + case 102: /* Line 1455 of yacc.c */ - #line 954 "program_parse.y" -#line 1085 "program_parse.y" ++#line 1089 "program_parse.y" { - (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); - ;} - break; - - case 97: + struct asm_symbol *const s = + declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); - /* Line 1455 of yacc.c */ - #line 958 "program_parse.y" - { + if (s == NULL) { + YYERROR; + } else { + s->attrib_binding = (yyvsp[(4) - (4)].attrib); + state->InputsBound |= (1U << s->attrib_binding); + + if (!validate_inputs(& (yylsp[(4) - (4)]), state)) { + YYERROR; + } + } + ;} + break; + + case 103: + + /* Line 1455 of yacc.c */ -#line 1103 "program_parse.y" ++#line 1107 "program_parse.y" + { + (yyval.attrib) = (yyvsp[(2) - (2)].attrib); + ;} + break; + + case 104: + + /* Line 1455 of yacc.c */ -#line 1107 "program_parse.y" ++#line 1111 "program_parse.y" + { + (yyval.attrib) = (yyvsp[(2) - (2)].attrib); + ;} + break; + + case 105: + + /* Line 1455 of yacc.c */ -#line 1113 "program_parse.y" ++#line 1117 "program_parse.y" + { + (yyval.attrib) = VERT_ATTRIB_POS; + ;} + break; + + case 106: + + /* Line 1455 of yacc.c */ -#line 1117 "program_parse.y" ++#line 1121 "program_parse.y" + { + (yyval.attrib) = VERT_ATTRIB_WEIGHT; + ;} + break; + + case 107: + + /* Line 1455 of yacc.c */ -#line 1121 "program_parse.y" ++#line 1125 "program_parse.y" + { + (yyval.attrib) = VERT_ATTRIB_NORMAL; + ;} + break; + + case 108: + + /* Line 1455 of yacc.c */ -#line 1125 "program_parse.y" ++#line 1129 "program_parse.y" + { + if (!state->ctx->Extensions.EXT_secondary_color) { + yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); + YYERROR; + } + + (yyval.attrib) = VERT_ATTRIB_COLOR0 + (yyvsp[(2) - (2)].integer); + ;} + break; + + case 109: + + /* Line 1455 of yacc.c */ -#line 1134 "program_parse.y" ++#line 1138 "program_parse.y" + { + if (!state->ctx->Extensions.EXT_fog_coord) { + yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); + YYERROR; + } + + (yyval.attrib) = VERT_ATTRIB_FOG; + ;} + break; + + case 110: + + /* Line 1455 of yacc.c */ -#line 1143 "program_parse.y" ++#line 1147 "program_parse.y" + { + (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); + ;} + break; + + case 111: + + /* Line 1455 of yacc.c */ -#line 1147 "program_parse.y" ++#line 1151 "program_parse.y" + { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 98: + case 112: /* Line 1455 of yacc.c */ - #line 963 "program_parse.y" -#line 1152 "program_parse.y" ++#line 1156 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} break; - case 99: + case 113: /* Line 1455 of yacc.c */ - #line 969 "program_parse.y" -#line 1158 "program_parse.y" ++#line 1162 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@@ -3019,46 -3296,46 +3300,46 @@@ ;} break; - case 103: + case 117: /* Line 1455 of yacc.c */ - #line 983 "program_parse.y" -#line 1172 "program_parse.y" ++#line 1176 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} break; - case 104: + case 118: /* Line 1455 of yacc.c */ - #line 987 "program_parse.y" -#line 1176 "program_parse.y" ++#line 1180 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} break; - case 105: + case 119: /* Line 1455 of yacc.c */ - #line 991 "program_parse.y" -#line 1180 "program_parse.y" ++#line 1184 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} break; - case 106: + case 120: /* Line 1455 of yacc.c */ - #line 995 "program_parse.y" -#line 1184 "program_parse.y" ++#line 1188 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 109: + case 123: /* Line 1455 of yacc.c */ - #line 1003 "program_parse.y" -#line 1192 "program_parse.y" ++#line 1196 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@@ -3074,10 -3351,10 +3355,10 @@@ ;} break; - case 110: + case 124: /* Line 1455 of yacc.c */ - #line 1019 "program_parse.y" -#line 1208 "program_parse.y" ++#line 1212 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@@ -3099,19 -3376,19 +3380,19 @@@ ;} break; - case 111: + case 125: /* Line 1455 of yacc.c */ - #line 1041 "program_parse.y" -#line 1230 "program_parse.y" ++#line 1234 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 112: + case 126: /* Line 1455 of yacc.c */ - #line 1045 "program_parse.y" -#line 1234 "program_parse.y" ++#line 1238 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxParameters)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid parameter array size"); @@@ -3122,38 -3399,38 +3403,38 @@@ ;} break; - case 113: + case 127: /* Line 1455 of yacc.c */ - #line 1056 "program_parse.y" -#line 1245 "program_parse.y" ++#line 1249 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} break; - case 114: + case 128: /* Line 1455 of yacc.c */ - #line 1062 "program_parse.y" -#line 1251 "program_parse.y" ++#line 1255 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} break; - case 116: + case 130: /* Line 1455 of yacc.c */ - #line 1069 "program_parse.y" -#line 1258 "program_parse.y" ++#line 1262 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); ;} break; - case 117: + case 131: /* Line 1455 of yacc.c */ - #line 1076 "program_parse.y" -#line 1265 "program_parse.y" ++#line 1269 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3161,10 -3438,10 +3442,10 @@@ ;} break; - case 118: + case 132: /* Line 1455 of yacc.c */ - #line 1082 "program_parse.y" -#line 1271 "program_parse.y" ++#line 1275 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3172,10 -3449,10 +3453,10 @@@ ;} break; - case 119: + case 133: /* Line 1455 of yacc.c */ - #line 1088 "program_parse.y" -#line 1277 "program_parse.y" ++#line 1281 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3183,10 -3460,10 +3464,10 @@@ ;} break; - case 120: + case 134: /* Line 1455 of yacc.c */ - #line 1096 "program_parse.y" -#line 1285 "program_parse.y" ++#line 1289 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3194,10 -3471,10 +3475,10 @@@ ;} break; - case 121: + case 135: /* Line 1455 of yacc.c */ - #line 1102 "program_parse.y" -#line 1291 "program_parse.y" ++#line 1295 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3205,10 -3482,10 +3486,10 @@@ ;} break; - case 122: + case 136: /* Line 1455 of yacc.c */ - #line 1108 "program_parse.y" -#line 1297 "program_parse.y" ++#line 1301 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3216,10 -3493,10 +3497,10 @@@ ;} break; - case 123: + case 137: /* Line 1455 of yacc.c */ - #line 1116 "program_parse.y" -#line 1305 "program_parse.y" ++#line 1309 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3227,10 -3504,10 +3508,10 @@@ ;} break; - case 124: + case 138: /* Line 1455 of yacc.c */ - #line 1122 "program_parse.y" -#line 1311 "program_parse.y" ++#line 1315 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3238,10 -3515,10 +3519,10 @@@ ;} break; - case 125: + case 139: /* Line 1455 of yacc.c */ - #line 1128 "program_parse.y" -#line 1317 "program_parse.y" ++#line 1321 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@@ -3249,101 -3526,101 +3530,101 @@@ ;} break; - case 126: + case 140: /* Line 1455 of yacc.c */ - #line 1135 "program_parse.y" -#line 1324 "program_parse.y" ++#line 1328 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; - case 127: + case 141: /* Line 1455 of yacc.c */ - #line 1136 "program_parse.y" -#line 1325 "program_parse.y" ++#line 1329 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 128: + case 142: /* Line 1455 of yacc.c */ - #line 1139 "program_parse.y" -#line 1328 "program_parse.y" ++#line 1332 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 129: + case 143: /* Line 1455 of yacc.c */ - #line 1140 "program_parse.y" -#line 1329 "program_parse.y" ++#line 1333 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 130: + case 144: /* Line 1455 of yacc.c */ - #line 1141 "program_parse.y" -#line 1330 "program_parse.y" ++#line 1334 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 131: + case 145: /* Line 1455 of yacc.c */ - #line 1142 "program_parse.y" -#line 1331 "program_parse.y" ++#line 1335 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 132: + case 146: /* Line 1455 of yacc.c */ - #line 1143 "program_parse.y" -#line 1332 "program_parse.y" ++#line 1336 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 133: + case 147: /* Line 1455 of yacc.c */ - #line 1144 "program_parse.y" -#line 1333 "program_parse.y" ++#line 1337 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 134: + case 148: /* Line 1455 of yacc.c */ - #line 1145 "program_parse.y" -#line 1334 "program_parse.y" ++#line 1338 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 135: + case 149: /* Line 1455 of yacc.c */ - #line 1146 "program_parse.y" -#line 1335 "program_parse.y" ++#line 1339 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 136: + case 150: /* Line 1455 of yacc.c */ - #line 1147 "program_parse.y" -#line 1336 "program_parse.y" ++#line 1340 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 137: + case 151: /* Line 1455 of yacc.c */ - #line 1148 "program_parse.y" -#line 1337 "program_parse.y" ++#line 1341 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 138: + case 152: /* Line 1455 of yacc.c */ - #line 1149 "program_parse.y" -#line 1338 "program_parse.y" ++#line 1342 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 139: + case 153: /* Line 1455 of yacc.c */ - #line 1153 "program_parse.y" -#line 1342 "program_parse.y" ++#line 1346 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@@ -3352,37 -3629,37 +3633,37 @@@ ;} break; - case 140: + case 154: /* Line 1455 of yacc.c */ - #line 1162 "program_parse.y" -#line 1351 "program_parse.y" ++#line 1355 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 141: + case 155: /* Line 1455 of yacc.c */ - #line 1166 "program_parse.y" -#line 1355 "program_parse.y" ++#line 1359 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} break; - case 142: + case 156: /* Line 1455 of yacc.c */ - #line 1170 "program_parse.y" -#line 1359 "program_parse.y" ++#line 1363 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} break; - case 143: + case 157: /* Line 1455 of yacc.c */ - #line 1176 "program_parse.y" -#line 1365 "program_parse.y" ++#line 1369 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@@ -3391,28 -3668,28 +3672,28 @@@ ;} break; - case 144: + case 158: /* Line 1455 of yacc.c */ - #line 1185 "program_parse.y" -#line 1374 "program_parse.y" ++#line 1378 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 145: + case 159: /* Line 1455 of yacc.c */ - #line 1189 "program_parse.y" -#line 1378 "program_parse.y" ++#line 1382 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} break; - case 146: + case 160: /* Line 1455 of yacc.c */ - #line 1193 "program_parse.y" -#line 1382 "program_parse.y" ++#line 1386 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@@ -3423,57 -3700,57 +3704,57 @@@ ;} break; - case 147: + case 161: /* Line 1455 of yacc.c */ - #line 1202 "program_parse.y" -#line 1391 "program_parse.y" ++#line 1395 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 148: + case 162: /* Line 1455 of yacc.c */ - #line 1206 "program_parse.y" -#line 1395 "program_parse.y" ++#line 1399 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} break; - case 149: + case 163: /* Line 1455 of yacc.c */ - #line 1212 "program_parse.y" -#line 1401 "program_parse.y" ++#line 1405 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} break; - case 150: + case 164: /* Line 1455 of yacc.c */ - #line 1218 "program_parse.y" -#line 1407 "program_parse.y" ++#line 1411 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; ;} break; - case 151: + case 165: /* Line 1455 of yacc.c */ - #line 1225 "program_parse.y" -#line 1414 "program_parse.y" ++#line 1418 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; ;} break; - case 152: + case 166: /* Line 1455 of yacc.c */ - #line 1230 "program_parse.y" -#line 1419 "program_parse.y" ++#line 1423 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@@ -3481,10 -3758,10 +3762,10 @@@ ;} break; - case 153: + case 167: /* Line 1455 of yacc.c */ - #line 1238 "program_parse.y" -#line 1427 "program_parse.y" ++#line 1431 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@@ -3494,10 -3771,10 +3775,10 @@@ ;} break; - case 155: + case 169: /* Line 1455 of yacc.c */ - #line 1250 "program_parse.y" -#line 1439 "program_parse.y" ++#line 1443 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@@ -3505,46 -3782,46 +3786,46 @@@ ;} break; - case 156: + case 170: /* Line 1455 of yacc.c */ - #line 1258 "program_parse.y" -#line 1447 "program_parse.y" ++#line 1451 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} break; - case 157: + case 171: /* Line 1455 of yacc.c */ - #line 1264 "program_parse.y" -#line 1453 "program_parse.y" ++#line 1457 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} break; - case 158: + case 172: /* Line 1455 of yacc.c */ - #line 1268 "program_parse.y" -#line 1457 "program_parse.y" ++#line 1461 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} break; - case 159: + case 173: /* Line 1455 of yacc.c */ - #line 1272 "program_parse.y" -#line 1461 "program_parse.y" ++#line 1465 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} break; - case 160: + case 174: /* Line 1455 of yacc.c */ - #line 1278 "program_parse.y" -#line 1467 "program_parse.y" ++#line 1471 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@@ -3555,10 -3832,10 +3836,10 @@@ ;} break; - case 161: + case 175: /* Line 1455 of yacc.c */ - #line 1289 "program_parse.y" -#line 1478 "program_parse.y" ++#line 1482 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@@ -3567,92 -3844,92 +3848,92 @@@ ;} break; - case 162: + case 176: /* Line 1455 of yacc.c */ - #line 1298 "program_parse.y" -#line 1487 "program_parse.y" ++#line 1491 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} break; - case 163: + case 177: /* Line 1455 of yacc.c */ - #line 1302 "program_parse.y" -#line 1491 "program_parse.y" ++#line 1495 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} break; - case 164: + case 178: /* Line 1455 of yacc.c */ - #line 1307 "program_parse.y" -#line 1496 "program_parse.y" ++#line 1500 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} break; - case 165: + case 179: /* Line 1455 of yacc.c */ - #line 1311 "program_parse.y" -#line 1500 "program_parse.y" ++#line 1504 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} break; - case 166: + case 180: /* Line 1455 of yacc.c */ - #line 1315 "program_parse.y" -#line 1504 "program_parse.y" ++#line 1508 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} break; - case 167: + case 181: /* Line 1455 of yacc.c */ - #line 1319 "program_parse.y" -#line 1508 "program_parse.y" ++#line 1512 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} break; - case 168: + case 182: /* Line 1455 of yacc.c */ - #line 1325 "program_parse.y" -#line 1514 "program_parse.y" ++#line 1518 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 169: + case 183: /* Line 1455 of yacc.c */ - #line 1332 "program_parse.y" -#line 1521 "program_parse.y" ++#line 1525 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} break; - case 170: + case 184: /* Line 1455 of yacc.c */ - #line 1336 "program_parse.y" -#line 1525 "program_parse.y" ++#line 1529 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} break; - case 171: + case 185: /* Line 1455 of yacc.c */ - #line 1342 "program_parse.y" -#line 1531 "program_parse.y" ++#line 1535 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@@ -3660,10 -3937,10 +3941,10 @@@ ;} break; - case 172: + case 186: /* Line 1455 of yacc.c */ - #line 1350 "program_parse.y" -#line 1539 "program_parse.y" ++#line 1543 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@@ -3674,38 -3951,38 +3955,38 @@@ ;} break; - case 173: + case 187: /* Line 1455 of yacc.c */ - #line 1361 "program_parse.y" -#line 1550 "program_parse.y" ++#line 1554 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 174: + case 188: /* Line 1455 of yacc.c */ - #line 1368 "program_parse.y" -#line 1557 "program_parse.y" ++#line 1561 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} break; - case 175: + case 189: /* Line 1455 of yacc.c */ - #line 1372 "program_parse.y" -#line 1561 "program_parse.y" ++#line 1565 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} break; - case 176: + case 190: /* Line 1455 of yacc.c */ - #line 1378 "program_parse.y" -#line 1567 "program_parse.y" ++#line 1571 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@@ -3715,10 -3992,10 +3996,10 @@@ ;} break; - case 177: + case 191: /* Line 1455 of yacc.c */ - #line 1388 "program_parse.y" -#line 1577 "program_parse.y" ++#line 1581 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@@ -3728,20 -4005,20 +4009,20 @@@ ;} break; - case 178: + case 192: /* Line 1455 of yacc.c */ - #line 1398 "program_parse.y" -#line 1587 "program_parse.y" ++#line 1591 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; ;} break; - case 179: + case 193: /* Line 1455 of yacc.c */ - #line 1403 "program_parse.y" -#line 1592 "program_parse.y" ++#line 1596 "program_parse.y" { /* It seems logical that the matrix row range specifier would have * to specify a range or more than one row (i.e., $5 > $3). @@@ -3759,10 -4036,10 +4040,10 @@@ ;} break; - case 180: + case 194: /* Line 1455 of yacc.c */ - #line 1421 "program_parse.y" -#line 1610 "program_parse.y" ++#line 1614 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@@ -3770,55 -4047,55 +4051,55 @@@ ;} break; - case 181: + case 195: /* Line 1455 of yacc.c */ - #line 1429 "program_parse.y" -#line 1618 "program_parse.y" ++#line 1622 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 182: + case 196: /* Line 1455 of yacc.c */ - #line 1433 "program_parse.y" -#line 1622 "program_parse.y" ++#line 1626 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 183: + case 197: /* Line 1455 of yacc.c */ - #line 1439 "program_parse.y" -#line 1628 "program_parse.y" ++#line 1632 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} break; - case 184: + case 198: /* Line 1455 of yacc.c */ - #line 1443 "program_parse.y" -#line 1632 "program_parse.y" ++#line 1636 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} break; - case 185: + case 199: /* Line 1455 of yacc.c */ - #line 1447 "program_parse.y" -#line 1636 "program_parse.y" ++#line 1640 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} break; - case 186: + case 200: /* Line 1455 of yacc.c */ - #line 1453 "program_parse.y" -#line 1642 "program_parse.y" ++#line 1646 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@@ -3829,88 -4106,88 +4110,88 @@@ ;} break; - case 187: + case 201: /* Line 1455 of yacc.c */ - #line 1464 "program_parse.y" -#line 1653 "program_parse.y" ++#line 1657 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 188: + case 202: /* Line 1455 of yacc.c */ - #line 1469 "program_parse.y" -#line 1658 "program_parse.y" ++#line 1662 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; ;} break; - case 189: + case 203: /* Line 1455 of yacc.c */ - #line 1474 "program_parse.y" -#line 1663 "program_parse.y" ++#line 1667 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; ;} break; - case 190: + case 204: /* Line 1455 of yacc.c */ - #line 1479 "program_parse.y" -#line 1668 "program_parse.y" ++#line 1672 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 191: + case 205: /* Line 1455 of yacc.c */ - #line 1484 "program_parse.y" -#line 1673 "program_parse.y" ++#line 1677 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 192: + case 206: /* Line 1455 of yacc.c */ - #line 1489 "program_parse.y" -#line 1678 "program_parse.y" ++#line 1682 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); ;} break; - case 193: + case 207: /* Line 1455 of yacc.c */ - #line 1496 "program_parse.y" -#line 1685 "program_parse.y" ++#line 1689 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 194: + case 208: /* Line 1455 of yacc.c */ - #line 1500 "program_parse.y" -#line 1689 "program_parse.y" ++#line 1693 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 195: + case 209: /* Line 1455 of yacc.c */ - #line 1505 "program_parse.y" -#line 1694 "program_parse.y" ++#line 1698 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@@ -3924,10 -4201,10 +4205,10 @@@ ;} break; - case 196: + case 210: /* Line 1455 of yacc.c */ - #line 1518 "program_parse.y" -#line 1707 "program_parse.y" ++#line 1711 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@@ -3936,10 -4213,10 +4217,10 @@@ ;} break; - case 197: + case 211: /* Line 1455 of yacc.c */ - #line 1526 "program_parse.y" -#line 1715 "program_parse.y" ++#line 1719 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@@ -3950,20 -4227,20 +4231,20 @@@ ;} break; - case 198: + case 212: /* Line 1455 of yacc.c */ - #line 1537 "program_parse.y" -#line 1726 "program_parse.y" ++#line 1730 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; ;} break; - case 203: + case 217: /* Line 1455 of yacc.c */ - #line 1549 "program_parse.y" -#line 1738 "program_parse.y" ++#line 1742 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@@ -3973,30 -4250,30 +4254,30 @@@ ;} break; - case 204: + case 218: /* Line 1455 of yacc.c */ - #line 1559 "program_parse.y" -#line 1748 "program_parse.y" ++#line 1752 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 205: + case 219: /* Line 1455 of yacc.c */ - #line 1564 "program_parse.y" -#line 1753 "program_parse.y" ++#line 1757 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 206: + case 220: /* Line 1455 of yacc.c */ - #line 1571 "program_parse.y" -#line 1760 "program_parse.y" ++#line 1764 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@@ -4006,10 -4283,10 +4287,10 @@@ ;} break; - case 207: + case 221: /* Line 1455 of yacc.c */ - #line 1581 "program_parse.y" -#line 1770 "program_parse.y" ++#line 1774 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@@ -4019,30 -4296,30 +4300,30 @@@ ;} break; - case 208: + case 222: /* Line 1455 of yacc.c */ - #line 1590 "program_parse.y" -#line 1779 "program_parse.y" ++#line 1783 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 209: + case 223: /* Line 1455 of yacc.c */ - #line 1595 "program_parse.y" -#line 1784 "program_parse.y" ++#line 1788 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 210: + case 224: /* Line 1455 of yacc.c */ - #line 1602 "program_parse.y" -#line 1791 "program_parse.y" ++#line 1795 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@@ -4052,10 -4329,10 +4333,10 @@@ ;} break; - case 211: + case 225: /* Line 1455 of yacc.c */ - #line 1612 "program_parse.y" -#line 1801 "program_parse.y" ++#line 1805 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@@ -4065,10 -4342,10 +4346,10 @@@ ;} break; - case 212: + case 226: /* Line 1455 of yacc.c */ - #line 1622 "program_parse.y" -#line 1811 "program_parse.y" ++#line 1815 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@@ -4078,10 -4355,10 +4359,10 @@@ ;} break; - case 217: + case 231: /* Line 1455 of yacc.c */ - #line 1637 "program_parse.y" -#line 1826 "program_parse.y" ++#line 1830 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@@ -4091,10 -4368,10 +4372,10 @@@ ;} break; - case 218: + case 232: /* Line 1455 of yacc.c */ - #line 1647 "program_parse.y" -#line 1836 "program_parse.y" ++#line 1840 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@@ -4104,10 -4381,10 +4385,10 @@@ ;} break; - case 219: + case 233: /* Line 1455 of yacc.c */ - #line 1655 "program_parse.y" -#line 1844 "program_parse.y" ++#line 1848 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@@ -4117,10 -4394,10 +4398,10 @@@ ;} break; - case 220: + case 234: /* Line 1455 of yacc.c */ - #line 1665 "program_parse.y" -#line 1854 "program_parse.y" ++#line 1858 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@@ -4130,10 -4407,10 +4411,10 @@@ ;} break; - case 221: + case 235: /* Line 1455 of yacc.c */ - #line 1673 "program_parse.y" -#line 1862 "program_parse.y" ++#line 1866 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@@ -4143,10 -4420,10 +4424,10 @@@ ;} break; - case 222: + case 236: /* Line 1455 of yacc.c */ - #line 1682 "program_parse.y" -#line 1871 "program_parse.y" ++#line 1875 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@@ -4156,10 -4433,10 +4437,10 @@@ ;} break; - case 223: + case 237: /* Line 1455 of yacc.c */ - #line 1691 "program_parse.y" -#line 1880 "program_parse.y" ++#line 1884 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@@ -4169,63 -4446,110 +4450,110 @@@ ;} break; - case 224: + case 238: /* Line 1455 of yacc.c */ - #line 1701 "program_parse.y" -#line 1890 "program_parse.y" ++#line 1894 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} break; - case 225: + case 239: /* Line 1455 of yacc.c */ - #line 1705 "program_parse.y" -#line 1894 "program_parse.y" ++#line 1898 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} break; - case 226: + case 240: /* Line 1455 of yacc.c */ - #line 1710 "program_parse.y" -#line 1899 "program_parse.y" ++#line 1903 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 227: + case 241: /* Line 1455 of yacc.c */ - #line 1711 "program_parse.y" -#line 1900 "program_parse.y" ++#line 1904 "program_parse.y" { (yyval.negate) = TRUE; ;} break; - case 228: + case 242: /* Line 1455 of yacc.c */ - #line 1712 "program_parse.y" -#line 1901 "program_parse.y" ++#line 1905 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 229: + case 243: /* Line 1455 of yacc.c */ - #line 1715 "program_parse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} -#line 1904 "program_parse.y" ++#line 1908 "program_parse.y" + { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 231: + case 245: + + /* Line 1455 of yacc.c */ -#line 1908 "program_parse.y" ++#line 1912 "program_parse.y" + { + /* NV_fragment_program_option defines the size qualifiers in a + * fairly broken way. "SHORT" or "LONG" can optionally be used + * before TEMP or OUTPUT. However, neither is a reserved word! + * This means that we have to parse it as an identifier, then check + * to make sure it's one of the valid values. *sigh* + * + * In addition, the grammar in the extension spec does *not* allow + * the size specifier to be optional, but all known implementations + * do. + */ + if (!state->option.NV_fragment) { + yyerror(& (yylsp[(1) - (1)]), state, "unexpected IDENTIFIER"); + YYERROR; + } + + if (strcmp("SHORT", (yyvsp[(1) - (1)].string)) == 0) { + } else if (strcmp("LONG", (yyvsp[(1) - (1)].string)) == 0) { + } else { + char *const err_str = + make_error_string("invalid storage size specifier \"%s\"", + (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid storage size specifier"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + ;} + break; + + case 246: + + /* Line 1455 of yacc.c */ -#line 1942 "program_parse.y" ++#line 1946 "program_parse.y" + { + ;} + break; + + case 247: /* Line 1455 of yacc.c */ - #line 1718 "program_parse.y" -#line 1946 "program_parse.y" ++#line 1950 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 233: + case 249: /* Line 1455 of yacc.c */ - #line 1722 "program_parse.y" -#line 1950 "program_parse.y" ++#line 1954 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@@ -4233,10 -4557,10 +4561,10 @@@ ;} break; - case 234: + case 250: /* Line 1455 of yacc.c */ - #line 1728 "program_parse.y" -#line 1956 "program_parse.y" ++#line 1960 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@@ -4244,13 -4568,13 +4572,13 @@@ ;} break; - case 235: + case 251: /* Line 1455 of yacc.c */ - #line 1736 "program_parse.y" -#line 1964 "program_parse.y" ++#line 1968 "program_parse.y" { struct asm_symbol *const s = - declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); + declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); if (s == NULL) { YYERROR; @@@ -4260,10 -4584,10 +4588,10 @@@ ;} break; - case 236: + case 252: /* Line 1455 of yacc.c */ - #line 1749 "program_parse.y" -#line 1977 "program_parse.y" ++#line 1981 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@@ -4274,10 -4598,10 +4602,10 @@@ ;} break; - case 237: + case 253: /* Line 1455 of yacc.c */ - #line 1758 "program_parse.y" -#line 1986 "program_parse.y" ++#line 1990 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@@ -4288,19 -4612,19 +4616,19 @@@ ;} break; - case 238: + case 254: /* Line 1455 of yacc.c */ - #line 1767 "program_parse.y" -#line 1995 "program_parse.y" ++#line 1999 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 239: + case 255: /* Line 1455 of yacc.c */ - #line 1771 "program_parse.y" -#line 1999 "program_parse.y" ++#line 2003 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@@ -4311,10 -4635,10 +4639,10 @@@ ;} break; - case 240: + case 256: /* Line 1455 of yacc.c */ - #line 1780 "program_parse.y" -#line 2008 "program_parse.y" ++#line 2012 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@@ -4325,10 -4649,10 +4653,10 @@@ ;} break; - case 241: + case 257: /* Line 1455 of yacc.c */ - #line 1789 "program_parse.y" -#line 2017 "program_parse.y" ++#line 2021 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@@ -4339,19 -4663,19 +4667,19 @@@ ;} break; - case 242: + case 258: /* Line 1455 of yacc.c */ - #line 1800 "program_parse.y" -#line 2028 "program_parse.y" ++#line 2032 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 243: + case 259: /* Line 1455 of yacc.c */ - #line 1806 "program_parse.y" -#line 2034 "program_parse.y" ++#line 2038 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@@ -4359,10 -4683,10 +4687,10 @@@ ;} break; - case 244: + case 260: /* Line 1455 of yacc.c */ - #line 1812 "program_parse.y" -#line 2040 "program_parse.y" ++#line 2044 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@@ -4373,10 -4697,10 +4701,10 @@@ ;} break; - case 245: + case 261: /* Line 1455 of yacc.c */ - #line 1821 "program_parse.y" -#line 2049 "program_parse.y" ++#line 2053 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@@ -4387,19 -4711,19 +4715,19 @@@ ;} break; - case 246: + case 262: /* Line 1455 of yacc.c */ - #line 1832 "program_parse.y" -#line 2060 "program_parse.y" ++#line 2064 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 247: + case 263: /* Line 1455 of yacc.c */ - #line 1836 "program_parse.y" -#line 2064 "program_parse.y" ++#line 2068 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@@ -4410,10 -4734,10 +4738,10 @@@ ;} break; - case 248: + case 264: /* Line 1455 of yacc.c */ - #line 1845 "program_parse.y" -#line 2073 "program_parse.y" ++#line 2077 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@@ -4424,94 -4748,94 +4752,94 @@@ ;} break; - case 249: + case 265: /* Line 1455 of yacc.c */ - #line 1855 "program_parse.y" -#line 2083 "program_parse.y" ++#line 2087 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 250: + case 266: /* Line 1455 of yacc.c */ - #line 1856 "program_parse.y" -#line 2084 "program_parse.y" ++#line 2088 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 251: + case 267: /* Line 1455 of yacc.c */ - #line 1857 "program_parse.y" -#line 2085 "program_parse.y" ++#line 2089 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 252: + case 268: /* Line 1455 of yacc.c */ - #line 1860 "program_parse.y" -#line 2088 "program_parse.y" ++#line 2092 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 253: + case 269: /* Line 1455 of yacc.c */ - #line 1861 "program_parse.y" -#line 2089 "program_parse.y" ++#line 2093 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 254: + case 270: /* Line 1455 of yacc.c */ - #line 1862 "program_parse.y" -#line 2090 "program_parse.y" ++#line 2094 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 255: + case 271: /* Line 1455 of yacc.c */ - #line 1865 "program_parse.y" -#line 2093 "program_parse.y" ++#line 2097 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 256: + case 272: /* Line 1455 of yacc.c */ - #line 1866 "program_parse.y" -#line 2094 "program_parse.y" ++#line 2098 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 257: + case 273: /* Line 1455 of yacc.c */ - #line 1869 "program_parse.y" -#line 2097 "program_parse.y" ++#line 2101 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 258: + case 274: /* Line 1455 of yacc.c */ - #line 1870 "program_parse.y" -#line 2098 "program_parse.y" ++#line 2102 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 259: + case 275: /* Line 1455 of yacc.c */ - #line 1873 "program_parse.y" -#line 2101 "program_parse.y" ++#line 2105 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 260: + case 276: /* Line 1455 of yacc.c */ - #line 1874 "program_parse.y" -#line 2102 "program_parse.y" ++#line 2106 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 261: + case 277: /* Line 1455 of yacc.c */ - #line 1878 "program_parse.y" -#line 2106 "program_parse.y" ++#line 2110 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@@ -4522,10 -4846,10 +4850,10 @@@ ;} break; - case 262: + case 278: /* Line 1455 of yacc.c */ - #line 1889 "program_parse.y" -#line 2117 "program_parse.y" ++#line 2121 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@@ -4536,10 -4860,10 +4864,10 @@@ ;} break; - case 263: + case 279: /* Line 1455 of yacc.c */ - #line 1900 "program_parse.y" -#line 2128 "program_parse.y" ++#line 2132 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@@ -4550,10 -4874,10 +4878,10 @@@ ;} break; - case 264: + case 280: /* Line 1455 of yacc.c */ - #line 1911 "program_parse.y" -#line 2139 "program_parse.y" ++#line 2143 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@@ -4577,7 -4901,7 +4905,7 @@@ /* Line 1455 of yacc.c */ - #line 4581 "program_parse.tab.c" -#line 4905 "program_parse.tab.c" ++#line 4909 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@@ -4796,7 -5120,49 +5124,49 @@@ yyreturn /* Line 1675 of yacc.c */ - #line 1931 "program_parse.y" -#line 2163 "program_parse.y" ++#line 2167 "program_parse.y" + + + void + asm_instruction_set_operands(struct asm_instruction *inst, + const struct prog_dst_register *dst, + const struct asm_src_register *src0, + const struct asm_src_register *src1, + const struct asm_src_register *src2) + { + /* In the core ARB extensions only the KIL instruction doesn't have a + * destination register. + */ + if (dst == NULL) { + init_dst_reg(& inst->Base.DstReg); + } else { + inst->Base.DstReg = *dst; + } + + /* The only instruction that doesn't have any source registers is the + * condition-code based KIL instruction added by NV_fragment_program_option. + */ + if (src0 != NULL) { + inst->Base.SrcReg[0] = src0->Base; + inst->SrcReg[0] = *src0; + } else { + init_src_reg(& inst->SrcReg[0]); + } + + if (src1 != NULL) { + inst->Base.SrcReg[1] = src1->Base; + inst->SrcReg[1] = *src1; + } else { + init_src_reg(& inst->SrcReg[1]); + } + + if (src2 != NULL) { + inst->Base.SrcReg[2] = src2->Base; + inst->SrcReg[2] = *src2; + } else { + init_src_reg(& inst->SrcReg[2]); + } + } struct asm_instruction *