diff options
Diffstat (limited to 'src/mesa/shader/program_parse.tab.c')
-rw-r--r-- | src/mesa/shader/program_parse.tab.c | 650 |
1 files changed, 352 insertions, 298 deletions
diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index c0f50147bd..d4f8429488 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -137,8 +137,14 @@ static int validate_inputs(struct YYLTYPE *locp, static void init_dst_reg(struct prog_dst_register *r); +static void set_dst_reg(struct prog_dst_register *r, + gl_register_file file, GLint index); + static void init_src_reg(struct asm_src_register *r); +static void set_src_reg(struct asm_src_register *r, + gl_register_file file, GLint index); + static 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); @@ -179,7 +185,7 @@ static struct asm_instruction *asm_instruction_copy_ctor( /* Line 189 of yacc.c */ -#line 183 "program_parse.tab.c" +#line 189 "program_parse.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -321,7 +327,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 116 "program_parse.y" +#line 122 "program_parse.y" struct asm_instruction *inst; struct asm_symbol *sym; @@ -350,7 +356,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 354 "program_parse.tab.c" +#line 360 "program_parse.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -374,14 +380,14 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 261 "program_parse.y" +#line 267 "program_parse.y" extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner); /* Line 264 of yacc.c */ -#line 385 "program_parse.tab.c" +#line 391 "program_parse.tab.c" #ifdef short # undef short @@ -782,35 +788,35 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 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, 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 + 0, 274, 274, 277, 285, 297, 298, 301, 325, 326, + 329, 344, 347, 352, 359, 360, 361, 362, 363, 364, + 365, 368, 369, 370, 373, 379, 385, 391, 398, 404, + 411, 455, 460, 470, 514, 520, 521, 522, 523, 524, + 525, 526, 527, 528, 529, 530, 531, 534, 546, 554, + 571, 578, 595, 606, 626, 651, 658, 691, 698, 713, + 768, 809, 818, 839, 848, 852, 881, 900, 900, 902, + 909, 921, 922, 923, 926, 940, 954, 974, 985, 997, + 999, 1000, 1001, 1002, 1005, 1005, 1005, 1005, 1006, 1009, + 1013, 1018, 1025, 1032, 1039, 1062, 1085, 1086, 1087, 1088, + 1089, 1090, 1093, 1112, 1116, 1122, 1126, 1130, 1134, 1143, + 1152, 1156, 1161, 1167, 1178, 1178, 1179, 1181, 1185, 1189, + 1193, 1199, 1199, 1201, 1218, 1243, 1246, 1257, 1263, 1269, + 1270, 1277, 1283, 1289, 1297, 1303, 1309, 1317, 1323, 1329, + 1337, 1338, 1341, 1342, 1343, 1344, 1345, 1346, 1347, 1348, + 1349, 1350, 1351, 1354, 1363, 1367, 1371, 1377, 1386, 1390, + 1394, 1403, 1407, 1413, 1419, 1426, 1431, 1439, 1449, 1451, + 1459, 1465, 1469, 1473, 1479, 1490, 1499, 1503, 1508, 1512, + 1516, 1520, 1526, 1533, 1537, 1543, 1551, 1562, 1569, 1573, + 1579, 1589, 1600, 1604, 1622, 1631, 1634, 1640, 1644, 1648, + 1654, 1665, 1670, 1675, 1680, 1685, 1690, 1698, 1701, 1706, + 1719, 1727, 1738, 1746, 1746, 1748, 1748, 1750, 1760, 1765, + 1772, 1782, 1791, 1796, 1803, 1813, 1823, 1835, 1835, 1836, + 1836, 1838, 1848, 1856, 1866, 1874, 1882, 1891, 1902, 1906, + 1912, 1913, 1914, 1917, 1917, 1920, 1955, 1959, 1959, 1962, + 1969, 1978, 1992, 2001, 2010, 2014, 2023, 2032, 2043, 2050, + 2055, 2064, 2076, 2079, 2088, 2099, 2100, 2101, 2104, 2105, + 2106, 2109, 2110, 2113, 2114, 2117, 2118, 2121, 2132, 2143, + 2154, 2180, 2181 }; #endif @@ -2119,7 +2125,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 272 "program_parse.y" +#line 278 "program_parse.y" { if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header"); @@ -2132,7 +2138,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 280 "program_parse.y" +#line 286 "program_parse.y" { if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header"); @@ -2147,7 +2153,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 296 "program_parse.y" +#line 302 "program_parse.y" { int valid = 0; @@ -2158,6 +2164,8 @@ yyreduce: } + free((yyvsp[(2) - (3)].string)); + if (!valid) { const char *const err_str = (state->mode == ARB_vertex) ? "invalid ARB vertex program option" @@ -2172,7 +2180,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 322 "program_parse.y" +#line 330 "program_parse.y" { if ((yyvsp[(1) - (2)].inst) != NULL) { if (state->inst_tail == NULL) { @@ -2192,7 +2200,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 340 "program_parse.y" +#line 348 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumAluInstructions++; @@ -2202,7 +2210,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 345 "program_parse.y" +#line 353 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumTexInstructions++; @@ -2212,7 +2220,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 366 "program_parse.y" +#line 374 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2221,7 +2229,7 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 372 "program_parse.y" +#line 380 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2230,7 +2238,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 378 "program_parse.y" +#line 386 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2239,7 +2247,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 384 "program_parse.y" +#line 392 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); ;} @@ -2248,7 +2256,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 391 "program_parse.y" +#line 399 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); ;} @@ -2257,7 +2265,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 398 "program_parse.y" +#line 406 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (8)].temp_inst), & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg)); ;} @@ -2266,7 +2274,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 404 "program_parse.y" +#line 412 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (8)].temp_inst), & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL); if ((yyval.inst) != NULL) { @@ -2313,7 +2321,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 448 "program_parse.y" +#line 456 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); state->fragment.UsesKill = 1; @@ -2323,7 +2331,7 @@ yyreduce: case 32: /* Line 1455 of yacc.c */ -#line 453 "program_parse.y" +#line 461 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL_NV, NULL, NULL, NULL, NULL); (yyval.inst)->Base.DstReg.CondMask = (yyvsp[(2) - (2)].dst_reg).CondMask; @@ -2336,7 +2344,7 @@ yyreduce: case 33: /* Line 1455 of yacc.c */ -#line 463 "program_parse.y" +#line 471 "program_parse.y" { (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (12)].temp_inst), & (yyvsp[(2) - (12)].dst_reg), & (yyvsp[(4) - (12)].src_reg), & (yyvsp[(6) - (12)].src_reg), & (yyvsp[(8) - (12)].src_reg)); if ((yyval.inst) != NULL) { @@ -2383,7 +2391,7 @@ yyreduce: case 34: /* Line 1455 of yacc.c */ -#line 507 "program_parse.y" +#line 515 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -2392,91 +2400,91 @@ yyreduce: case 35: /* Line 1455 of yacc.c */ -#line 512 "program_parse.y" +#line 520 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; case 36: /* Line 1455 of yacc.c */ -#line 513 "program_parse.y" +#line 521 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; case 37: /* Line 1455 of yacc.c */ -#line 514 "program_parse.y" +#line 522 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; case 38: /* Line 1455 of yacc.c */ -#line 515 "program_parse.y" +#line 523 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; case 39: /* Line 1455 of yacc.c */ -#line 516 "program_parse.y" +#line 524 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; case 40: /* Line 1455 of yacc.c */ -#line 517 "program_parse.y" +#line 525 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; case 41: /* Line 1455 of yacc.c */ -#line 518 "program_parse.y" +#line 526 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; case 42: /* Line 1455 of yacc.c */ -#line 519 "program_parse.y" +#line 527 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; case 43: /* Line 1455 of yacc.c */ -#line 520 "program_parse.y" +#line 528 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; case 44: /* Line 1455 of yacc.c */ -#line 521 "program_parse.y" +#line 529 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; case 45: /* Line 1455 of yacc.c */ -#line 522 "program_parse.y" +#line 530 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; case 46: /* Line 1455 of yacc.c */ -#line 523 "program_parse.y" +#line 531 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; case 47: /* Line 1455 of yacc.c */ -#line 527 "program_parse.y" +#line 535 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied * FIXME: to the existing swizzle? @@ -2491,7 +2499,7 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 539 "program_parse.y" +#line 547 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); @@ -2504,7 +2512,7 @@ yyreduce: case 49: /* Line 1455 of yacc.c */ -#line 547 "program_parse.y" +#line 555 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); @@ -2524,7 +2532,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 564 "program_parse.y" +#line 572 "program_parse.y" { (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); @@ -2536,7 +2544,7 @@ yyreduce: case 51: /* Line 1455 of yacc.c */ -#line 571 "program_parse.y" +#line 579 "program_parse.y" { struct asm_symbol temp_sym; @@ -2549,16 +2557,14 @@ yyreduce: temp_sym.param_binding_begin = ~0; initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(1) - (1)].vector)); - init_src_reg(& (yyval.src_reg)); - (yyval.src_reg).Base.File = PROGRAM_CONSTANT; - (yyval.src_reg).Base.Index = temp_sym.param_binding_begin; + set_src_reg(& (yyval.src_reg), PROGRAM_CONSTANT, temp_sym.param_binding_begin); ;} break; case 52: /* Line 1455 of yacc.c */ -#line 590 "program_parse.y" +#line 596 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2574,7 +2580,7 @@ yyreduce: case 53: /* Line 1455 of yacc.c */ -#line 601 "program_parse.y" +#line 607 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); @@ -2596,7 +2602,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 621 "program_parse.y" +#line 627 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (3)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (3)].swiz_mask).mask; @@ -2616,7 +2622,7 @@ yyreduce: YYERROR; } - state->prog->OutputsWritten |= (1U << (yyval.dst_reg).Index); + state->prog->OutputsWritten |= BITFIELD64_BIT((yyval.dst_reg).Index); } ;} break; @@ -2624,11 +2630,9 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 646 "program_parse.y" +#line 652 "program_parse.y" { - init_dst_reg(& (yyval.dst_reg)); - (yyval.dst_reg).File = PROGRAM_ADDRESS; - (yyval.dst_reg).Index = 0; + set_dst_reg(& (yyval.dst_reg), PROGRAM_ADDRESS, 0); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; ;} break; @@ -2636,7 +2640,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 655 "program_parse.y" +#line 659 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2672,7 +2676,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 688 "program_parse.y" +#line 692 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; @@ -2682,7 +2686,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 695 "program_parse.y" +#line 699 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2702,14 +2706,19 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 710 "program_parse.y" +#line 714 "program_parse.y" { + char s; + if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); YYERROR; } - switch ((yyvsp[(1) - (1)].string)[0]) { + s = (yyvsp[(1) - (1)].string)[0]; + free((yyvsp[(1) - (1)].string)); + + switch (s) { case 'x': (yyval.ext_swizzle).swz = SWIZZLE_X; (yyval.ext_swizzle).xyzw_valid = 1; @@ -2755,11 +2764,13 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 760 "program_parse.y" +#line 769 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); + free((yyvsp[(1) - (1)].string)); + if (s == NULL) { yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); YYERROR; @@ -2775,16 +2786,13 @@ yyreduce: init_src_reg(& (yyval.src_reg)); switch (s->type) { case at_temp: - (yyval.src_reg).Base.File = PROGRAM_TEMPORARY; - (yyval.src_reg).Base.Index = s->temp_binding; + set_src_reg(& (yyval.src_reg), PROGRAM_TEMPORARY, s->temp_binding); break; case at_param: - (yyval.src_reg).Base.File = s->param_binding_type; - (yyval.src_reg).Base.Index = s->param_binding_begin; + set_src_reg(& (yyval.src_reg), s->param_binding_type, s->param_binding_begin); break; case at_attrib: - (yyval.src_reg).Base.File = PROGRAM_INPUT; - (yyval.src_reg).Base.Index = s->attrib_binding; + set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, s->attrib_binding); state->prog->InputsRead |= (1U << (yyval.src_reg).Base.Index); if (!validate_inputs(& (yylsp[(1) - (1)]), state)) { @@ -2802,11 +2810,9 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 802 "program_parse.y" +#line 810 "program_parse.y" { - init_src_reg(& (yyval.src_reg)); - (yyval.src_reg).Base.File = PROGRAM_INPUT; - (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].attrib); + set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, (yyvsp[(1) - (1)].attrib)); state->prog->InputsRead |= (1U << (yyval.src_reg).Base.Index); if (!validate_inputs(& (yylsp[(1) - (1)]), state)) { @@ -2818,7 +2824,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 813 "program_parse.y" +#line 819 "program_parse.y" { if (! (yyvsp[(3) - (4)].src_reg).Base.RelAddr && ((unsigned) (yyvsp[(3) - (4)].src_reg).Base.Index >= (yyvsp[(1) - (4)].sym)->param_binding_length)) { @@ -2844,35 +2850,34 @@ yyreduce: case 63: /* Line 1455 of yacc.c */ -#line 834 "program_parse.y" +#line 840 "program_parse.y" { - init_src_reg(& (yyval.src_reg)); - (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) + gl_register_file file = ((yyvsp[(1) - (1)].temp_sym).name != NULL) ? (yyvsp[(1) - (1)].temp_sym).param_binding_type : PROGRAM_CONSTANT; - (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].temp_sym).param_binding_begin; + set_src_reg(& (yyval.src_reg), file, (yyvsp[(1) - (1)].temp_sym).param_binding_begin); ;} break; case 64: /* Line 1455 of yacc.c */ -#line 844 "program_parse.y" +#line 849 "program_parse.y" { - init_dst_reg(& (yyval.dst_reg)); - (yyval.dst_reg).File = PROGRAM_OUTPUT; - (yyval.dst_reg).Index = (yyvsp[(1) - (1)].result); + set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, (yyvsp[(1) - (1)].result)); ;} break; case 65: /* Line 1455 of yacc.c */ -#line 850 "program_parse.y" +#line 853 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); + free((yyvsp[(1) - (1)].string)); + if (s == NULL) { yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); YYERROR; @@ -2881,19 +2886,15 @@ yyreduce: YYERROR; } - init_dst_reg(& (yyval.dst_reg)); switch (s->type) { case at_temp: - (yyval.dst_reg).File = PROGRAM_TEMPORARY; - (yyval.dst_reg).Index = s->temp_binding; + set_dst_reg(& (yyval.dst_reg), PROGRAM_TEMPORARY, s->temp_binding); break; case at_output: - (yyval.dst_reg).File = PROGRAM_OUTPUT; - (yyval.dst_reg).Index = s->output_binding; + set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, s->output_binding); break; default: - (yyval.dst_reg).File = s->param_binding_type; - (yyval.dst_reg).Index = s->param_binding_begin; + set_dst_reg(& (yyval.dst_reg), s->param_binding_type, s->param_binding_begin); break; } ;} @@ -2902,11 +2903,13 @@ yyreduce: case 66: /* Line 1455 of yacc.c */ -#line 881 "program_parse.y" +#line 882 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); + free((yyvsp[(1) - (1)].string)); + if (s == NULL) { yyerror(& (yylsp[(1) - (1)]), state, "invalid operand variable"); YYERROR; @@ -2922,7 +2925,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 900 "program_parse.y" +#line 903 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); @@ -2932,7 +2935,7 @@ yyreduce: case 70: /* Line 1455 of yacc.c */ -#line 907 "program_parse.y" +#line 910 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2947,28 +2950,28 @@ yyreduce: case 71: /* Line 1455 of yacc.c */ -#line 918 "program_parse.y" +#line 921 "program_parse.y" { (yyval.integer) = 0; ;} break; case 72: /* Line 1455 of yacc.c */ -#line 919 "program_parse.y" +#line 922 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 73: /* Line 1455 of yacc.c */ -#line 920 "program_parse.y" +#line 923 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; case 74: /* Line 1455 of yacc.c */ -#line 924 "program_parse.y" +#line 927 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { char s[100]; @@ -2985,7 +2988,7 @@ yyreduce: case 75: /* Line 1455 of yacc.c */ -#line 938 "program_parse.y" +#line 941 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { char s[100]; @@ -3002,11 +3005,13 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 952 "program_parse.y" +#line 955 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); + free((yyvsp[(1) - (1)].string)); + if (s == NULL) { yyerror(& (yylsp[(1) - (1)]), state, "invalid array member"); YYERROR; @@ -3023,7 +3028,7 @@ yyreduce: case 77: /* Line 1455 of yacc.c */ -#line 970 "program_parse.y" +#line 975 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -3037,7 +3042,7 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 981 "program_parse.y" +#line 986 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -3052,21 +3057,21 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 997 "program_parse.y" +#line 1002 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 88: /* Line 1455 of yacc.c */ -#line 1001 "program_parse.y" +#line 1006 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 89: /* Line 1455 of yacc.c */ -#line 1005 "program_parse.y" +#line 1010 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); ;} @@ -3075,7 +3080,7 @@ yyreduce: case 90: /* Line 1455 of yacc.c */ -#line 1009 "program_parse.y" +#line 1014 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); ;} @@ -3084,7 +3089,7 @@ yyreduce: case 91: /* Line 1455 of yacc.c */ -#line 1013 "program_parse.y" +#line 1018 "program_parse.y" { (yyval.dst_reg).CondMask = COND_TR; (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; @@ -3095,7 +3100,7 @@ yyreduce: case 92: /* Line 1455 of yacc.c */ -#line 1021 "program_parse.y" +#line 1026 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; @@ -3105,7 +3110,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 1028 "program_parse.y" +#line 1033 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; @@ -3115,7 +3120,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 1035 "program_parse.y" +#line 1040 "program_parse.y" { const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { @@ -3141,7 +3146,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 1058 "program_parse.y" +#line 1063 "program_parse.y" { const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { @@ -3167,12 +3172,13 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 1089 "program_parse.y" +#line 1094 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); if (s == NULL) { + free((yyvsp[(2) - (4)].string)); YYERROR; } else { s->attrib_binding = (yyvsp[(4) - (4)].attrib); @@ -3188,7 +3194,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 1107 "program_parse.y" +#line 1113 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3197,7 +3203,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 1111 "program_parse.y" +#line 1117 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3206,7 +3212,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 1117 "program_parse.y" +#line 1123 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} @@ -3215,7 +3221,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 1121 "program_parse.y" +#line 1127 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} @@ -3224,7 +3230,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 1125 "program_parse.y" +#line 1131 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} @@ -3233,7 +3239,7 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 1129 "program_parse.y" +#line 1135 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3247,7 +3253,7 @@ yyreduce: case 109: /* Line 1455 of yacc.c */ -#line 1138 "program_parse.y" +#line 1144 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3261,7 +3267,7 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 1147 "program_parse.y" +#line 1153 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3270,7 +3276,7 @@ yyreduce: case 111: /* Line 1455 of yacc.c */ -#line 1151 "program_parse.y" +#line 1157 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -3280,7 +3286,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 1156 "program_parse.y" +#line 1162 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} @@ -3289,7 +3295,7 @@ yyreduce: case 113: /* Line 1455 of yacc.c */ -#line 1162 "program_parse.y" +#line 1168 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3303,7 +3309,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 1176 "program_parse.y" +#line 1182 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} @@ -3312,7 +3318,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 1180 "program_parse.y" +#line 1186 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} @@ -3321,7 +3327,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 1184 "program_parse.y" +#line 1190 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} @@ -3330,7 +3336,7 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 1188 "program_parse.y" +#line 1194 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3339,12 +3345,13 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 1196 "program_parse.y" +#line 1202 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); if (s == NULL) { + free((yyvsp[(2) - (3)].string)); YYERROR; } else { s->param_binding_type = (yyvsp[(3) - (3)].temp_sym).param_binding_type; @@ -3358,9 +3365,10 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 1212 "program_parse.y" +#line 1219 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { + free((yyvsp[(2) - (6)].string)); yyerror(& (yylsp[(4) - (6)]), state, "parameter array size and number of bindings must match"); YYERROR; @@ -3369,6 +3377,7 @@ yyreduce: declare_variable(state, (yyvsp[(2) - (6)].string), (yyvsp[(6) - (6)].temp_sym).type, & (yylsp[(2) - (6)])); if (s == NULL) { + free((yyvsp[(2) - (6)].string)); YYERROR; } else { s->param_binding_type = (yyvsp[(6) - (6)].temp_sym).param_binding_type; @@ -3383,7 +3392,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 1234 "program_parse.y" +#line 1243 "program_parse.y" { (yyval.integer) = 0; ;} @@ -3392,9 +3401,9 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 1238 "program_parse.y" +#line 1247 "program_parse.y" { - if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxParameters)) { + if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) > state->limits->MaxParameters)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid parameter array size"); YYERROR; } else { @@ -3406,7 +3415,7 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 1249 "program_parse.y" +#line 1258 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} @@ -3415,7 +3424,7 @@ yyreduce: case 128: /* Line 1455 of yacc.c */ -#line 1255 "program_parse.y" +#line 1264 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} @@ -3424,7 +3433,7 @@ yyreduce: case 130: /* Line 1455 of yacc.c */ -#line 1262 "program_parse.y" +#line 1271 "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); @@ -3434,7 +3443,7 @@ yyreduce: case 131: /* Line 1455 of yacc.c */ -#line 1269 "program_parse.y" +#line 1278 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3445,7 +3454,7 @@ yyreduce: case 132: /* Line 1455 of yacc.c */ -#line 1275 "program_parse.y" +#line 1284 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3456,7 +3465,7 @@ yyreduce: case 133: /* Line 1455 of yacc.c */ -#line 1281 "program_parse.y" +#line 1290 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3467,7 +3476,7 @@ yyreduce: case 134: /* Line 1455 of yacc.c */ -#line 1289 "program_parse.y" +#line 1298 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3478,7 +3487,7 @@ yyreduce: case 135: /* Line 1455 of yacc.c */ -#line 1295 "program_parse.y" +#line 1304 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3489,7 +3498,7 @@ yyreduce: case 136: /* Line 1455 of yacc.c */ -#line 1301 "program_parse.y" +#line 1310 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3500,7 +3509,7 @@ yyreduce: case 137: /* Line 1455 of yacc.c */ -#line 1309 "program_parse.y" +#line 1318 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3511,7 +3520,7 @@ yyreduce: case 138: /* Line 1455 of yacc.c */ -#line 1315 "program_parse.y" +#line 1324 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3522,7 +3531,7 @@ yyreduce: case 139: /* Line 1455 of yacc.c */ -#line 1321 "program_parse.y" +#line 1330 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3533,98 +3542,98 @@ yyreduce: case 140: /* Line 1455 of yacc.c */ -#line 1328 "program_parse.y" +#line 1337 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 141: /* Line 1455 of yacc.c */ -#line 1329 "program_parse.y" +#line 1338 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 142: /* Line 1455 of yacc.c */ -#line 1332 "program_parse.y" +#line 1341 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 143: /* Line 1455 of yacc.c */ -#line 1333 "program_parse.y" +#line 1342 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 144: /* Line 1455 of yacc.c */ -#line 1334 "program_parse.y" +#line 1343 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 145: /* Line 1455 of yacc.c */ -#line 1335 "program_parse.y" +#line 1344 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 146: /* Line 1455 of yacc.c */ -#line 1336 "program_parse.y" +#line 1345 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 147: /* Line 1455 of yacc.c */ -#line 1337 "program_parse.y" +#line 1346 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 148: /* Line 1455 of yacc.c */ -#line 1338 "program_parse.y" +#line 1347 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 149: /* Line 1455 of yacc.c */ -#line 1339 "program_parse.y" +#line 1348 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 150: /* Line 1455 of yacc.c */ -#line 1340 "program_parse.y" +#line 1349 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 151: /* Line 1455 of yacc.c */ -#line 1341 "program_parse.y" +#line 1350 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 152: /* Line 1455 of yacc.c */ -#line 1342 "program_parse.y" +#line 1351 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 153: /* Line 1455 of yacc.c */ -#line 1346 "program_parse.y" +#line 1355 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3636,7 +3645,7 @@ yyreduce: case 154: /* Line 1455 of yacc.c */ -#line 1355 "program_parse.y" +#line 1364 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3645,7 +3654,7 @@ yyreduce: case 155: /* Line 1455 of yacc.c */ -#line 1359 "program_parse.y" +#line 1368 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} @@ -3654,7 +3663,7 @@ yyreduce: case 156: /* Line 1455 of yacc.c */ -#line 1363 "program_parse.y" +#line 1372 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} @@ -3663,7 +3672,7 @@ yyreduce: case 157: /* Line 1455 of yacc.c */ -#line 1369 "program_parse.y" +#line 1378 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3675,7 +3684,7 @@ yyreduce: case 158: /* Line 1455 of yacc.c */ -#line 1378 "program_parse.y" +#line 1387 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3684,7 +3693,7 @@ yyreduce: case 159: /* Line 1455 of yacc.c */ -#line 1382 "program_parse.y" +#line 1391 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} @@ -3693,7 +3702,7 @@ yyreduce: case 160: /* Line 1455 of yacc.c */ -#line 1386 "program_parse.y" +#line 1395 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3707,7 +3716,7 @@ yyreduce: case 161: /* Line 1455 of yacc.c */ -#line 1395 "program_parse.y" +#line 1404 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -3716,7 +3725,7 @@ yyreduce: case 162: /* Line 1455 of yacc.c */ -#line 1399 "program_parse.y" +#line 1408 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} @@ -3725,7 +3734,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 1405 "program_parse.y" +#line 1414 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} @@ -3734,7 +3743,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1411 "program_parse.y" +#line 1420 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; @@ -3744,7 +3753,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1418 "program_parse.y" +#line 1427 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; @@ -3754,7 +3763,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1423 "program_parse.y" +#line 1432 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3765,7 +3774,7 @@ yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 1431 "program_parse.y" +#line 1440 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3778,7 +3787,7 @@ yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 1443 "program_parse.y" +#line 1452 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3789,7 +3798,7 @@ yyreduce: case 170: /* Line 1455 of yacc.c */ -#line 1451 "program_parse.y" +#line 1460 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} @@ -3798,7 +3807,7 @@ yyreduce: case 171: /* Line 1455 of yacc.c */ -#line 1457 "program_parse.y" +#line 1466 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} @@ -3807,7 +3816,7 @@ yyreduce: case 172: /* Line 1455 of yacc.c */ -#line 1461 "program_parse.y" +#line 1470 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} @@ -3816,7 +3825,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1465 "program_parse.y" +#line 1474 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} @@ -3825,7 +3834,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1471 "program_parse.y" +#line 1480 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3839,7 +3848,7 @@ yyreduce: case 175: /* Line 1455 of yacc.c */ -#line 1482 "program_parse.y" +#line 1491 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3851,7 +3860,7 @@ yyreduce: case 176: /* Line 1455 of yacc.c */ -#line 1491 "program_parse.y" +#line 1500 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} @@ -3860,7 +3869,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1495 "program_parse.y" +#line 1504 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} @@ -3869,7 +3878,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1500 "program_parse.y" +#line 1509 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} @@ -3878,7 +3887,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1504 "program_parse.y" +#line 1513 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} @@ -3887,7 +3896,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1508 "program_parse.y" +#line 1517 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} @@ -3896,7 +3905,7 @@ yyreduce: case 181: /* Line 1455 of yacc.c */ -#line 1512 "program_parse.y" +#line 1521 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} @@ -3905,7 +3914,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 1518 "program_parse.y" +#line 1527 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3915,7 +3924,7 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 1525 "program_parse.y" +#line 1534 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} @@ -3924,7 +3933,7 @@ yyreduce: case 184: /* Line 1455 of yacc.c */ -#line 1529 "program_parse.y" +#line 1538 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} @@ -3933,7 +3942,7 @@ yyreduce: case 185: /* Line 1455 of yacc.c */ -#line 1535 "program_parse.y" +#line 1544 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3944,7 +3953,7 @@ yyreduce: case 186: /* Line 1455 of yacc.c */ -#line 1543 "program_parse.y" +#line 1552 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3958,7 +3967,7 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1554 "program_parse.y" +#line 1563 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3968,7 +3977,7 @@ yyreduce: case 188: /* Line 1455 of yacc.c */ -#line 1561 "program_parse.y" +#line 1570 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} @@ -3977,7 +3986,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1565 "program_parse.y" +#line 1574 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} @@ -3986,7 +3995,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1571 "program_parse.y" +#line 1580 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3999,7 +4008,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1581 "program_parse.y" +#line 1590 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -4012,7 +4021,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1591 "program_parse.y" +#line 1600 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; @@ -4022,7 +4031,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1596 "program_parse.y" +#line 1605 "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). @@ -4043,7 +4052,7 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1614 "program_parse.y" +#line 1623 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -4054,7 +4063,7 @@ yyreduce: case 195: /* Line 1455 of yacc.c */ -#line 1622 "program_parse.y" +#line 1631 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4063,7 +4072,7 @@ yyreduce: case 196: /* Line 1455 of yacc.c */ -#line 1626 "program_parse.y" +#line 1635 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -4072,7 +4081,7 @@ yyreduce: case 197: /* Line 1455 of yacc.c */ -#line 1632 "program_parse.y" +#line 1641 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} @@ -4081,7 +4090,7 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1636 "program_parse.y" +#line 1645 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} @@ -4090,7 +4099,7 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1640 "program_parse.y" +#line 1649 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} @@ -4099,7 +4108,7 @@ yyreduce: case 200: /* Line 1455 of yacc.c */ -#line 1646 "program_parse.y" +#line 1655 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -4113,7 +4122,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1657 "program_parse.y" +#line 1666 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -4123,7 +4132,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1662 "program_parse.y" +#line 1671 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; @@ -4133,7 +4142,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1667 "program_parse.y" +#line 1676 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; @@ -4143,7 +4152,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1672 "program_parse.y" +#line 1681 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -4153,7 +4162,7 @@ yyreduce: case 205: /* Line 1455 of yacc.c */ -#line 1677 "program_parse.y" +#line 1686 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -4163,7 +4172,7 @@ yyreduce: case 206: /* Line 1455 of yacc.c */ -#line 1682 "program_parse.y" +#line 1691 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); @@ -4173,7 +4182,7 @@ yyreduce: case 207: /* Line 1455 of yacc.c */ -#line 1689 "program_parse.y" +#line 1698 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4182,7 +4191,7 @@ yyreduce: case 208: /* Line 1455 of yacc.c */ -#line 1693 "program_parse.y" +#line 1702 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} @@ -4191,7 +4200,7 @@ yyreduce: case 209: /* Line 1455 of yacc.c */ -#line 1698 "program_parse.y" +#line 1707 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -4208,7 +4217,7 @@ yyreduce: case 210: /* Line 1455 of yacc.c */ -#line 1711 "program_parse.y" +#line 1720 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -4220,7 +4229,7 @@ yyreduce: case 211: /* Line 1455 of yacc.c */ -#line 1719 "program_parse.y" +#line 1728 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4234,7 +4243,7 @@ yyreduce: case 212: /* Line 1455 of yacc.c */ -#line 1730 "program_parse.y" +#line 1739 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; @@ -4244,7 +4253,7 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1742 "program_parse.y" +#line 1751 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4257,7 +4266,7 @@ yyreduce: case 218: /* Line 1455 of yacc.c */ -#line 1752 "program_parse.y" +#line 1761 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4267,7 +4276,7 @@ yyreduce: case 219: /* Line 1455 of yacc.c */ -#line 1757 "program_parse.y" +#line 1766 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4277,7 +4286,7 @@ yyreduce: case 220: /* Line 1455 of yacc.c */ -#line 1764 "program_parse.y" +#line 1773 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4290,7 +4299,7 @@ yyreduce: case 221: /* Line 1455 of yacc.c */ -#line 1774 "program_parse.y" +#line 1783 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4303,7 +4312,7 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 1783 "program_parse.y" +#line 1792 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4313,7 +4322,7 @@ yyreduce: case 223: /* Line 1455 of yacc.c */ -#line 1788 "program_parse.y" +#line 1797 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4323,7 +4332,7 @@ yyreduce: case 224: /* Line 1455 of yacc.c */ -#line 1795 "program_parse.y" +#line 1804 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4336,7 +4345,7 @@ yyreduce: case 225: /* Line 1455 of yacc.c */ -#line 1805 "program_parse.y" +#line 1814 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4349,7 +4358,7 @@ yyreduce: case 226: /* Line 1455 of yacc.c */ -#line 1815 "program_parse.y" +#line 1824 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4362,7 +4371,7 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 1830 "program_parse.y" +#line 1839 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4375,7 +4384,7 @@ yyreduce: case 232: /* Line 1455 of yacc.c */ -#line 1840 "program_parse.y" +#line 1849 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4388,7 +4397,7 @@ yyreduce: case 233: /* Line 1455 of yacc.c */ -#line 1848 "program_parse.y" +#line 1857 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4401,7 +4410,7 @@ yyreduce: case 234: /* Line 1455 of yacc.c */ -#line 1858 "program_parse.y" +#line 1867 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4414,7 +4423,7 @@ yyreduce: case 235: /* Line 1455 of yacc.c */ -#line 1866 "program_parse.y" +#line 1875 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4427,7 +4436,7 @@ yyreduce: case 236: /* Line 1455 of yacc.c */ -#line 1875 "program_parse.y" +#line 1884 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4440,7 +4449,7 @@ yyreduce: case 237: /* Line 1455 of yacc.c */ -#line 1884 "program_parse.y" +#line 1893 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4453,7 +4462,7 @@ yyreduce: case 238: /* Line 1455 of yacc.c */ -#line 1894 "program_parse.y" +#line 1903 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} @@ -4462,7 +4471,7 @@ yyreduce: case 239: /* Line 1455 of yacc.c */ -#line 1898 "program_parse.y" +#line 1907 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} @@ -4471,35 +4480,35 @@ yyreduce: case 240: /* Line 1455 of yacc.c */ -#line 1903 "program_parse.y" +#line 1912 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 241: /* Line 1455 of yacc.c */ -#line 1904 "program_parse.y" +#line 1913 "program_parse.y" { (yyval.negate) = TRUE; ;} break; case 242: /* Line 1455 of yacc.c */ -#line 1905 "program_parse.y" +#line 1914 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 243: /* Line 1455 of yacc.c */ -#line 1908 "program_parse.y" +#line 1917 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 245: /* Line 1455 of yacc.c */ -#line 1912 "program_parse.y" +#line 1921 "program_parse.y" { /* NV_fragment_program_option defines the size qualifiers in a * fairly broken way. "SHORT" or "LONG" can optionally be used @@ -4538,7 +4547,7 @@ yyreduce: case 246: /* Line 1455 of yacc.c */ -#line 1946 "program_parse.y" +#line 1955 "program_parse.y" { ;} break; @@ -4546,16 +4555,17 @@ yyreduce: case 247: /* Line 1455 of yacc.c */ -#line 1950 "program_parse.y" +#line 1959 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 249: /* Line 1455 of yacc.c */ -#line 1954 "program_parse.y" +#line 1963 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { + free((yyvsp[(3) - (3)].string)); YYERROR; } ;} @@ -4564,9 +4574,10 @@ yyreduce: case 250: /* Line 1455 of yacc.c */ -#line 1960 "program_parse.y" +#line 1970 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { + free((yyvsp[(1) - (1)].string)); YYERROR; } ;} @@ -4575,12 +4586,13 @@ yyreduce: case 251: /* Line 1455 of yacc.c */ -#line 1968 "program_parse.y" +#line 1979 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); if (s == NULL) { + free((yyvsp[(3) - (5)].string)); YYERROR; } else { s->output_binding = (yyvsp[(5) - (5)].result); @@ -4591,7 +4603,7 @@ yyreduce: case 252: /* Line 1455 of yacc.c */ -#line 1981 "program_parse.y" +#line 1993 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4605,7 +4617,7 @@ yyreduce: case 253: /* Line 1455 of yacc.c */ -#line 1990 "program_parse.y" +#line 2002 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4619,7 +4631,7 @@ yyreduce: case 254: /* Line 1455 of yacc.c */ -#line 1999 "program_parse.y" +#line 2011 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} @@ -4628,7 +4640,7 @@ yyreduce: case 255: /* Line 1455 of yacc.c */ -#line 2003 "program_parse.y" +#line 2015 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4642,7 +4654,7 @@ yyreduce: case 256: /* Line 1455 of yacc.c */ -#line 2012 "program_parse.y" +#line 2024 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4656,7 +4668,7 @@ yyreduce: case 257: /* Line 1455 of yacc.c */ -#line 2021 "program_parse.y" +#line 2033 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4670,7 +4682,7 @@ yyreduce: case 258: /* Line 1455 of yacc.c */ -#line 2032 "program_parse.y" +#line 2044 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} @@ -4679,7 +4691,7 @@ yyreduce: case 259: /* Line 1455 of yacc.c */ -#line 2038 "program_parse.y" +#line 2050 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4690,7 +4702,7 @@ yyreduce: case 260: /* Line 1455 of yacc.c */ -#line 2044 "program_parse.y" +#line 2056 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4704,7 +4716,7 @@ yyreduce: case 261: /* Line 1455 of yacc.c */ -#line 2053 "program_parse.y" +#line 2065 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4718,7 +4730,7 @@ yyreduce: case 262: /* Line 1455 of yacc.c */ -#line 2064 "program_parse.y" +#line 2076 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4727,7 +4739,7 @@ yyreduce: case 263: /* Line 1455 of yacc.c */ -#line 2068 "program_parse.y" +#line 2080 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4741,7 +4753,7 @@ yyreduce: case 264: /* Line 1455 of yacc.c */ -#line 2077 "program_parse.y" +#line 2089 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4755,91 +4767,91 @@ yyreduce: case 265: /* Line 1455 of yacc.c */ -#line 2087 "program_parse.y" +#line 2099 "program_parse.y" { (yyval.integer) = 0; ;} break; case 266: /* Line 1455 of yacc.c */ -#line 2088 "program_parse.y" +#line 2100 "program_parse.y" { (yyval.integer) = 0; ;} break; case 267: /* Line 1455 of yacc.c */ -#line 2089 "program_parse.y" +#line 2101 "program_parse.y" { (yyval.integer) = 1; ;} break; case 268: /* Line 1455 of yacc.c */ -#line 2092 "program_parse.y" +#line 2104 "program_parse.y" { (yyval.integer) = 0; ;} break; case 269: /* Line 1455 of yacc.c */ -#line 2093 "program_parse.y" +#line 2105 "program_parse.y" { (yyval.integer) = 0; ;} break; case 270: /* Line 1455 of yacc.c */ -#line 2094 "program_parse.y" +#line 2106 "program_parse.y" { (yyval.integer) = 1; ;} break; case 271: /* Line 1455 of yacc.c */ -#line 2097 "program_parse.y" +#line 2109 "program_parse.y" { (yyval.integer) = 0; ;} break; case 272: /* Line 1455 of yacc.c */ -#line 2098 "program_parse.y" +#line 2110 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 273: /* Line 1455 of yacc.c */ -#line 2101 "program_parse.y" +#line 2113 "program_parse.y" { (yyval.integer) = 0; ;} break; case 274: /* Line 1455 of yacc.c */ -#line 2102 "program_parse.y" +#line 2114 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 275: /* Line 1455 of yacc.c */ -#line 2105 "program_parse.y" +#line 2117 "program_parse.y" { (yyval.integer) = 0; ;} break; case 276: /* Line 1455 of yacc.c */ -#line 2106 "program_parse.y" +#line 2118 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 277: /* Line 1455 of yacc.c */ -#line 2110 "program_parse.y" +#line 2122 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4853,7 +4865,7 @@ yyreduce: case 278: /* Line 1455 of yacc.c */ -#line 2121 "program_parse.y" +#line 2133 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4867,7 +4879,7 @@ yyreduce: case 279: /* Line 1455 of yacc.c */ -#line 2132 "program_parse.y" +#line 2144 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4881,18 +4893,23 @@ yyreduce: case 280: /* Line 1455 of yacc.c */ -#line 2143 "program_parse.y" +#line 2155 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); struct asm_symbol *target = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(4) - (4)].string)); + free((yyvsp[(4) - (4)].string)); if (exist != NULL) { - yyerror(& (yylsp[(2) - (4)]), state, "redeclared identifier"); + char m[1000]; + _mesa_snprintf(m, sizeof(m), "redeclared identifier: %s", (yyvsp[(2) - (4)].string)); + free((yyvsp[(2) - (4)].string)); + yyerror(& (yylsp[(2) - (4)]), state, m); YYERROR; } else if (target == NULL) { + free((yyvsp[(2) - (4)].string)); yyerror(& (yylsp[(4) - (4)]), state, "undefined variable binding in ALIAS statement"); YYERROR; @@ -4905,7 +4922,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4909 "program_parse.tab.c" +#line 4926 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -5124,7 +5141,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2167 "program_parse.y" +#line 2184 "program_parse.y" void @@ -5224,6 +5241,26 @@ init_dst_reg(struct prog_dst_register *r) } +/** Like init_dst_reg() but set the File and Index fields. */ +void +set_dst_reg(struct prog_dst_register *r, gl_register_file file, GLint index) +{ + const GLint maxIndex = 1 << INST_INDEX_BITS; + const GLint minIndex = 0; + ASSERT(index >= minIndex); + ASSERT(index <= maxIndex); + ASSERT(file == PROGRAM_TEMPORARY || + file == PROGRAM_ADDRESS || + file == PROGRAM_OUTPUT); + memset(r, 0, sizeof(*r)); + r->File = file; + r->Index = index; + r->WriteMask = WRITEMASK_XYZW; + r->CondMask = COND_TR; + r->CondSwizzle = SWIZZLE_NOOP; +} + + void init_src_reg(struct asm_src_register *r) { @@ -5234,6 +5271,23 @@ init_src_reg(struct asm_src_register *r) } +/** Like init_src_reg() but set the File and Index fields. */ +void +set_src_reg(struct asm_src_register *r, gl_register_file file, GLint index) +{ + const GLint maxIndex = (1 << INST_INDEX_BITS) - 1; + const GLint minIndex = -(1 << INST_INDEX_BITS); + ASSERT(index >= minIndex); + ASSERT(index <= maxIndex); + ASSERT(file < PROGRAM_FILE_MAX); + memset(r, 0, sizeof(*r)); + r->Base.File = file; + r->Base.Index = index; + r->Base.Swizzle = SWIZZLE_NOOP; + r->Symbol = NULL; +} + + /** * Validate the set of inputs used by a program * |