ARB prog parser: regenerated parser files
authorBrian Paul <brianp@vmware.com>
Tue, 5 Jan 2010 17:03:16 +0000 (10:03 -0700)
committerBrian Paul <brianp@vmware.com>
Tue, 5 Jan 2010 18:44:19 +0000 (11:44 -0700)
src/mesa/shader/program_parse.tab.c
src/mesa/shader/program_parse.tab.h

index a1e69b845097938c452faf11d6d79757a968602d..cc490bea6d228949056ec485d7d4aebfaf3e8804 100644 (file)
@@ -123,7 +123,8 @@ static int initialize_symbol_from_param(struct gl_program *prog,
     struct asm_symbol *param_var, const gl_state_index tokens[STATE_LENGTH]);
 
 static int initialize_symbol_from_const(struct gl_program *prog,
-    struct asm_symbol *param_var, const struct asm_vector *vec);
+    struct asm_symbol *param_var, const struct asm_vector *vec,
+    GLboolean allowSwizzle);
 
 static int yyparse(struct asm_parser_state *state);
 
@@ -188,7 +189,7 @@ static struct asm_instruction *asm_instruction_copy_ctor(
 
 
 /* Line 189 of yacc.c  */
-#line 192 "program_parse.tab.c"
+#line 193 "program_parse.tab.c"
 
 /* Enabling traces.  */
 #ifndef YYDEBUG
@@ -330,7 +331,7 @@ typedef union YYSTYPE
 {
 
 /* Line 214 of yacc.c  */
-#line 125 "program_parse.y"
+#line 126 "program_parse.y"
 
    struct asm_instruction *inst;
    struct asm_symbol *sym;
@@ -359,7 +360,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 363 "program_parse.tab.c"
+#line 364 "program_parse.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -383,14 +384,14 @@ typedef struct YYLTYPE
 /* Copy the second part of user declarations.  */
 
 /* Line 264 of yacc.c  */
-#line 270 "program_parse.y"
+#line 271 "program_parse.y"
 
 extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,
     void *yyscanner);
 
 
 /* Line 264 of yacc.c  */
-#line 394 "program_parse.tab.c"
+#line 395 "program_parse.tab.c"
 
 #ifdef short
 # undef short
@@ -791,35 +792,35 @@ static const yytype_int16 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   277,   277,   280,   288,   300,   301,   304,   328,   329,
-     332,   347,   350,   355,   362,   363,   364,   365,   366,   367,
-     368,   371,   372,   373,   376,   382,   388,   394,   401,   407,
-     414,   458,   463,   473,   517,   523,   524,   525,   526,   527,
-     528,   529,   530,   531,   532,   533,   534,   537,   549,   557,
-     574,   581,   600,   611,   631,   656,   663,   696,   703,   718,
-     773,   816,   825,   846,   856,   860,   889,   908,   908,   910,
-     917,   929,   930,   931,   934,   948,   962,   982,   993,  1005,
-    1007,  1008,  1009,  1010,  1013,  1013,  1013,  1013,  1014,  1017,
-    1021,  1026,  1033,  1040,  1047,  1070,  1093,  1094,  1095,  1096,
-    1097,  1098,  1101,  1120,  1124,  1130,  1134,  1138,  1142,  1151,
-    1160,  1164,  1169,  1175,  1186,  1186,  1187,  1189,  1193,  1197,
-    1201,  1207,  1207,  1209,  1227,  1253,  1256,  1267,  1273,  1279,
-    1280,  1287,  1293,  1299,  1307,  1313,  1319,  1327,  1333,  1339,
-    1347,  1348,  1351,  1352,  1353,  1354,  1355,  1356,  1357,  1358,
-    1359,  1360,  1361,  1364,  1373,  1377,  1381,  1387,  1396,  1400,
-    1404,  1413,  1417,  1423,  1429,  1436,  1441,  1449,  1459,  1461,
-    1469,  1475,  1479,  1483,  1489,  1500,  1509,  1513,  1518,  1522,
-    1526,  1530,  1536,  1543,  1547,  1553,  1561,  1572,  1579,  1583,
-    1589,  1599,  1610,  1614,  1632,  1641,  1644,  1650,  1654,  1658,
-    1664,  1675,  1680,  1685,  1690,  1695,  1700,  1708,  1711,  1716,
-    1729,  1737,  1748,  1756,  1756,  1758,  1758,  1760,  1770,  1775,
-    1782,  1792,  1801,  1806,  1813,  1823,  1833,  1845,  1845,  1846,
-    1846,  1848,  1858,  1866,  1876,  1884,  1892,  1901,  1912,  1916,
-    1922,  1923,  1924,  1927,  1927,  1930,  1965,  1969,  1969,  1972,
-    1979,  1988,  2002,  2011,  2020,  2024,  2033,  2042,  2053,  2060,
-    2065,  2074,  2086,  2089,  2098,  2109,  2110,  2111,  2114,  2115,
-    2116,  2119,  2120,  2123,  2124,  2127,  2128,  2131,  2142,  2153,
-    2164,  2190,  2191
+       0,   278,   278,   281,   289,   301,   302,   305,   329,   330,
+     333,   348,   351,   356,   363,   364,   365,   366,   367,   368,
+     369,   372,   373,   374,   377,   383,   389,   395,   402,   408,
+     415,   459,   464,   474,   518,   524,   525,   526,   527,   528,
+     529,   530,   531,   532,   533,   534,   535,   538,   550,   558,
+     575,   582,   601,   612,   632,   657,   664,   697,   704,   719,
+     774,   817,   826,   847,   857,   861,   890,   909,   909,   911,
+     918,   930,   931,   932,   935,   949,   963,   983,   994,  1006,
+    1008,  1009,  1010,  1011,  1014,  1014,  1014,  1014,  1015,  1018,
+    1022,  1027,  1034,  1041,  1048,  1071,  1094,  1095,  1096,  1097,
+    1098,  1099,  1102,  1121,  1125,  1131,  1135,  1139,  1143,  1152,
+    1161,  1165,  1170,  1176,  1187,  1187,  1188,  1190,  1194,  1198,
+    1202,  1208,  1208,  1210,  1228,  1254,  1257,  1268,  1274,  1280,
+    1281,  1288,  1294,  1300,  1308,  1314,  1320,  1328,  1334,  1340,
+    1348,  1349,  1352,  1353,  1354,  1355,  1356,  1357,  1358,  1359,
+    1360,  1361,  1362,  1365,  1374,  1378,  1382,  1388,  1397,  1401,
+    1405,  1414,  1418,  1424,  1430,  1437,  1442,  1450,  1460,  1462,
+    1470,  1476,  1480,  1484,  1490,  1501,  1510,  1514,  1519,  1523,
+    1527,  1531,  1537,  1544,  1548,  1554,  1562,  1573,  1580,  1584,
+    1590,  1600,  1611,  1615,  1633,  1642,  1645,  1651,  1655,  1659,
+    1665,  1676,  1681,  1686,  1691,  1696,  1701,  1709,  1712,  1717,
+    1730,  1738,  1749,  1757,  1757,  1759,  1759,  1761,  1771,  1776,
+    1783,  1793,  1802,  1807,  1814,  1824,  1834,  1846,  1846,  1847,
+    1847,  1849,  1859,  1867,  1877,  1885,  1893,  1902,  1913,  1917,
+    1923,  1924,  1925,  1928,  1928,  1931,  1966,  1970,  1970,  1973,
+    1980,  1989,  2003,  2012,  2021,  2025,  2034,  2043,  2054,  2061,
+    2066,  2075,  2087,  2090,  2099,  2110,  2111,  2112,  2115,  2116,
+    2117,  2120,  2121,  2124,  2125,  2128,  2129,  2132,  2143,  2154,
+    2165,  2191,  2192
 };
 #endif
 
@@ -2128,7 +2129,7 @@ yyreduce:
         case 3:
 
 /* Line 1455 of yacc.c  */
-#line 281 "program_parse.y"
+#line 282 "program_parse.y"
     {
           if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header");
@@ -2141,7 +2142,7 @@ yyreduce:
   case 4:
 
 /* Line 1455 of yacc.c  */
-#line 289 "program_parse.y"
+#line 290 "program_parse.y"
     {
           if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header");
@@ -2156,7 +2157,7 @@ yyreduce:
   case 7:
 
 /* Line 1455 of yacc.c  */
-#line 305 "program_parse.y"
+#line 306 "program_parse.y"
     {
           int valid = 0;
 
@@ -2183,7 +2184,7 @@ yyreduce:
   case 10:
 
 /* Line 1455 of yacc.c  */
-#line 333 "program_parse.y"
+#line 334 "program_parse.y"
     {
           if ((yyvsp[(1) - (2)].inst) != NULL) {
              if (state->inst_tail == NULL) {
@@ -2203,7 +2204,7 @@ yyreduce:
   case 12:
 
 /* Line 1455 of yacc.c  */
-#line 351 "program_parse.y"
+#line 352 "program_parse.y"
     {
           (yyval.inst) = (yyvsp[(1) - (1)].inst);
           state->prog->NumAluInstructions++;
@@ -2213,7 +2214,7 @@ yyreduce:
   case 13:
 
 /* Line 1455 of yacc.c  */
-#line 356 "program_parse.y"
+#line 357 "program_parse.y"
     {
           (yyval.inst) = (yyvsp[(1) - (1)].inst);
           state->prog->NumTexInstructions++;
@@ -2223,7 +2224,7 @@ yyreduce:
   case 24:
 
 /* Line 1455 of yacc.c  */
-#line 377 "program_parse.y"
+#line 378 "program_parse.y"
     {
           (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);
        ;}
@@ -2232,7 +2233,7 @@ yyreduce:
   case 25:
 
 /* Line 1455 of yacc.c  */
-#line 383 "program_parse.y"
+#line 384 "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);
        ;}
@@ -2241,7 +2242,7 @@ yyreduce:
   case 26:
 
 /* Line 1455 of yacc.c  */
-#line 389 "program_parse.y"
+#line 390 "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);
        ;}
@@ -2250,7 +2251,7 @@ yyreduce:
   case 27:
 
 /* Line 1455 of yacc.c  */
-#line 395 "program_parse.y"
+#line 396 "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);
        ;}
@@ -2259,7 +2260,7 @@ yyreduce:
   case 28:
 
 /* Line 1455 of yacc.c  */
-#line 402 "program_parse.y"
+#line 403 "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);
        ;}
@@ -2268,7 +2269,7 @@ yyreduce:
   case 29:
 
 /* Line 1455 of yacc.c  */
-#line 409 "program_parse.y"
+#line 410 "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));
        ;}
@@ -2277,7 +2278,7 @@ yyreduce:
   case 30:
 
 /* Line 1455 of yacc.c  */
-#line 415 "program_parse.y"
+#line 416 "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) {
@@ -2324,7 +2325,7 @@ yyreduce:
   case 31:
 
 /* Line 1455 of yacc.c  */
-#line 459 "program_parse.y"
+#line 460 "program_parse.y"
     {
           (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL);
           state->fragment.UsesKill = 1;
@@ -2334,7 +2335,7 @@ yyreduce:
   case 32:
 
 /* Line 1455 of yacc.c  */
-#line 464 "program_parse.y"
+#line 465 "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;
@@ -2347,7 +2348,7 @@ yyreduce:
   case 33:
 
 /* Line 1455 of yacc.c  */
-#line 474 "program_parse.y"
+#line 475 "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) {
@@ -2394,7 +2395,7 @@ yyreduce:
   case 34:
 
 /* Line 1455 of yacc.c  */
-#line 518 "program_parse.y"
+#line 519 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(2) - (2)].integer);
        ;}
@@ -2403,91 +2404,91 @@ yyreduce:
   case 35:
 
 /* Line 1455 of yacc.c  */
-#line 523 "program_parse.y"
+#line 524 "program_parse.y"
     { (yyval.integer) = TEXTURE_1D_INDEX; ;}
     break;
 
   case 36:
 
 /* Line 1455 of yacc.c  */
-#line 524 "program_parse.y"
+#line 525 "program_parse.y"
     { (yyval.integer) = TEXTURE_2D_INDEX; ;}
     break;
 
   case 37:
 
 /* Line 1455 of yacc.c  */
-#line 525 "program_parse.y"
+#line 526 "program_parse.y"
     { (yyval.integer) = TEXTURE_3D_INDEX; ;}
     break;
 
   case 38:
 
 /* Line 1455 of yacc.c  */
-#line 526 "program_parse.y"
+#line 527 "program_parse.y"
     { (yyval.integer) = TEXTURE_CUBE_INDEX; ;}
     break;
 
   case 39:
 
 /* Line 1455 of yacc.c  */
-#line 527 "program_parse.y"
+#line 528 "program_parse.y"
     { (yyval.integer) = TEXTURE_RECT_INDEX; ;}
     break;
 
   case 40:
 
 /* Line 1455 of yacc.c  */
-#line 528 "program_parse.y"
+#line 529 "program_parse.y"
     { (yyval.integer) = -TEXTURE_1D_INDEX; ;}
     break;
 
   case 41:
 
 /* Line 1455 of yacc.c  */
-#line 529 "program_parse.y"
+#line 530 "program_parse.y"
     { (yyval.integer) = -TEXTURE_2D_INDEX; ;}
     break;
 
   case 42:
 
 /* Line 1455 of yacc.c  */
-#line 530 "program_parse.y"
+#line 531 "program_parse.y"
     { (yyval.integer) = -TEXTURE_RECT_INDEX; ;}
     break;
 
   case 43:
 
 /* Line 1455 of yacc.c  */
-#line 531 "program_parse.y"
+#line 532 "program_parse.y"
     { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;}
     break;
 
   case 44:
 
 /* Line 1455 of yacc.c  */
-#line 532 "program_parse.y"
+#line 533 "program_parse.y"
     { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;}
     break;
 
   case 45:
 
 /* Line 1455 of yacc.c  */
-#line 533 "program_parse.y"
+#line 534 "program_parse.y"
     { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;}
     break;
 
   case 46:
 
 /* Line 1455 of yacc.c  */
-#line 534 "program_parse.y"
+#line 535 "program_parse.y"
     { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;}
     break;
 
   case 47:
 
 /* Line 1455 of yacc.c  */
-#line 538 "program_parse.y"
+#line 539 "program_parse.y"
     {
           /* FIXME: Is this correct?  Should the extenedSwizzle be applied
            * FIXME: to the existing swizzle?
@@ -2502,7 +2503,7 @@ yyreduce:
   case 48:
 
 /* Line 1455 of yacc.c  */
-#line 550 "program_parse.y"
+#line 551 "program_parse.y"
     {
           (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg);
 
@@ -2515,7 +2516,7 @@ yyreduce:
   case 49:
 
 /* Line 1455 of yacc.c  */
-#line 558 "program_parse.y"
+#line 559 "program_parse.y"
     {
           (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg);
 
@@ -2535,7 +2536,7 @@ yyreduce:
   case 50:
 
 /* Line 1455 of yacc.c  */
-#line 575 "program_parse.y"
+#line 576 "program_parse.y"
     {
           (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg);
 
@@ -2547,7 +2548,7 @@ yyreduce:
   case 51:
 
 /* Line 1455 of yacc.c  */
-#line 582 "program_parse.y"
+#line 583 "program_parse.y"
     {
           struct asm_symbol temp_sym;
 
@@ -2558,7 +2559,7 @@ yyreduce:
 
           memset(& temp_sym, 0, sizeof(temp_sym));
           temp_sym.param_binding_begin = ~0;
-          initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(1) - (1)].vector));
+          initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(1) - (1)].vector), GL_TRUE);
 
           set_src_reg_swz(& (yyval.src_reg), PROGRAM_CONSTANT,
                            temp_sym.param_binding_begin,
@@ -2569,7 +2570,7 @@ yyreduce:
   case 52:
 
 /* Line 1455 of yacc.c  */
-#line 601 "program_parse.y"
+#line 602 "program_parse.y"
     {
           (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg);
 
@@ -2585,7 +2586,7 @@ yyreduce:
   case 53:
 
 /* Line 1455 of yacc.c  */
-#line 612 "program_parse.y"
+#line 613 "program_parse.y"
     {
           (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg);
 
@@ -2607,7 +2608,7 @@ yyreduce:
   case 54:
 
 /* Line 1455 of yacc.c  */
-#line 632 "program_parse.y"
+#line 633 "program_parse.y"
     {
           (yyval.dst_reg) = (yyvsp[(1) - (3)].dst_reg);
           (yyval.dst_reg).WriteMask = (yyvsp[(2) - (3)].swiz_mask).mask;
@@ -2635,7 +2636,7 @@ yyreduce:
   case 55:
 
 /* Line 1455 of yacc.c  */
-#line 657 "program_parse.y"
+#line 658 "program_parse.y"
     {
           set_dst_reg(& (yyval.dst_reg), PROGRAM_ADDRESS, 0);
           (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask;
@@ -2645,7 +2646,7 @@ yyreduce:
   case 56:
 
 /* Line 1455 of yacc.c  */
-#line 664 "program_parse.y"
+#line 665 "program_parse.y"
     {
           const unsigned xyzw_valid =
              ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0)
@@ -2681,7 +2682,7 @@ yyreduce:
   case 57:
 
 /* Line 1455 of yacc.c  */
-#line 697 "program_parse.y"
+#line 698 "program_parse.y"
     {
           (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle);
           (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0;
@@ -2691,7 +2692,7 @@ yyreduce:
   case 58:
 
 /* Line 1455 of yacc.c  */
-#line 704 "program_parse.y"
+#line 705 "program_parse.y"
     {
           if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector");
@@ -2711,7 +2712,7 @@ yyreduce:
   case 59:
 
 /* Line 1455 of yacc.c  */
-#line 719 "program_parse.y"
+#line 720 "program_parse.y"
     {
           char s;
 
@@ -2769,7 +2770,7 @@ yyreduce:
   case 60:
 
 /* Line 1455 of yacc.c  */
-#line 774 "program_parse.y"
+#line 775 "program_parse.y"
     {
           struct asm_symbol *const s = (struct asm_symbol *)
              _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2817,7 +2818,7 @@ yyreduce:
   case 61:
 
 /* Line 1455 of yacc.c  */
-#line 817 "program_parse.y"
+#line 818 "program_parse.y"
     {
           set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, (yyvsp[(1) - (1)].attrib));
           state->prog->InputsRead |= (1U << (yyval.src_reg).Base.Index);
@@ -2831,7 +2832,7 @@ yyreduce:
   case 62:
 
 /* Line 1455 of yacc.c  */
-#line 826 "program_parse.y"
+#line 827 "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)) {
@@ -2857,7 +2858,7 @@ yyreduce:
   case 63:
 
 /* Line 1455 of yacc.c  */
-#line 847 "program_parse.y"
+#line 848 "program_parse.y"
     {
            gl_register_file file = ((yyvsp[(1) - (1)].temp_sym).name != NULL) 
              ? (yyvsp[(1) - (1)].temp_sym).param_binding_type
@@ -2870,7 +2871,7 @@ yyreduce:
   case 64:
 
 /* Line 1455 of yacc.c  */
-#line 857 "program_parse.y"
+#line 858 "program_parse.y"
     {
           set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, (yyvsp[(1) - (1)].result));
        ;}
@@ -2879,7 +2880,7 @@ yyreduce:
   case 65:
 
 /* Line 1455 of yacc.c  */
-#line 861 "program_parse.y"
+#line 862 "program_parse.y"
     {
           struct asm_symbol *const s = (struct asm_symbol *)
              _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2911,7 +2912,7 @@ yyreduce:
   case 66:
 
 /* Line 1455 of yacc.c  */
-#line 890 "program_parse.y"
+#line 891 "program_parse.y"
     {
           struct asm_symbol *const s = (struct asm_symbol *)
              _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -2933,7 +2934,7 @@ yyreduce:
   case 69:
 
 /* Line 1455 of yacc.c  */
-#line 911 "program_parse.y"
+#line 912 "program_parse.y"
     {
           init_src_reg(& (yyval.src_reg));
           (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer);
@@ -2943,7 +2944,7 @@ yyreduce:
   case 70:
 
 /* Line 1455 of yacc.c  */
-#line 918 "program_parse.y"
+#line 919 "program_parse.y"
     {
           /* FINISHME: Add support for multiple address registers.
            */
@@ -2958,28 +2959,28 @@ yyreduce:
   case 71:
 
 /* Line 1455 of yacc.c  */
-#line 929 "program_parse.y"
+#line 930 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 72:
 
 /* Line 1455 of yacc.c  */
-#line 930 "program_parse.y"
+#line 931 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;}
     break;
 
   case 73:
 
 /* Line 1455 of yacc.c  */
-#line 931 "program_parse.y"
+#line 932 "program_parse.y"
     { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;}
     break;
 
   case 74:
 
 /* Line 1455 of yacc.c  */
-#line 935 "program_parse.y"
+#line 936 "program_parse.y"
     {
           if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) {
               char s[100];
@@ -2996,7 +2997,7 @@ yyreduce:
   case 75:
 
 /* Line 1455 of yacc.c  */
-#line 949 "program_parse.y"
+#line 950 "program_parse.y"
     {
           if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) {
               char s[100];
@@ -3013,7 +3014,7 @@ yyreduce:
   case 76:
 
 /* Line 1455 of yacc.c  */
-#line 963 "program_parse.y"
+#line 964 "program_parse.y"
     {
           struct asm_symbol *const s = (struct asm_symbol *)
              _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string));
@@ -3036,7 +3037,7 @@ yyreduce:
   case 77:
 
 /* Line 1455 of yacc.c  */
-#line 983 "program_parse.y"
+#line 984 "program_parse.y"
     {
           if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector");
@@ -3050,7 +3051,7 @@ yyreduce:
   case 78:
 
 /* Line 1455 of yacc.c  */
-#line 994 "program_parse.y"
+#line 995 "program_parse.y"
     {
           if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {
              yyerror(& (yylsp[(1) - (1)]), state,
@@ -3065,21 +3066,21 @@ yyreduce:
   case 83:
 
 /* Line 1455 of yacc.c  */
-#line 1010 "program_parse.y"
+#line 1011 "program_parse.y"
     { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
     break;
 
   case 88:
 
 /* Line 1455 of yacc.c  */
-#line 1014 "program_parse.y"
+#line 1015 "program_parse.y"
     { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}
     break;
 
   case 89:
 
 /* Line 1455 of yacc.c  */
-#line 1018 "program_parse.y"
+#line 1019 "program_parse.y"
     {
           (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg);
        ;}
@@ -3088,7 +3089,7 @@ yyreduce:
   case 90:
 
 /* Line 1455 of yacc.c  */
-#line 1022 "program_parse.y"
+#line 1023 "program_parse.y"
     {
           (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg);
        ;}
@@ -3097,7 +3098,7 @@ yyreduce:
   case 91:
 
 /* Line 1455 of yacc.c  */
-#line 1026 "program_parse.y"
+#line 1027 "program_parse.y"
     {
           (yyval.dst_reg).CondMask = COND_TR;
           (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP;
@@ -3108,7 +3109,7 @@ yyreduce:
   case 92:
 
 /* Line 1455 of yacc.c  */
-#line 1034 "program_parse.y"
+#line 1035 "program_parse.y"
     {
           (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg);
           (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle;
@@ -3118,7 +3119,7 @@ yyreduce:
   case 93:
 
 /* Line 1455 of yacc.c  */
-#line 1041 "program_parse.y"
+#line 1042 "program_parse.y"
     {
           (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg);
           (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle;
@@ -3128,7 +3129,7 @@ yyreduce:
   case 94:
 
 /* Line 1455 of yacc.c  */
-#line 1048 "program_parse.y"
+#line 1049 "program_parse.y"
     {
           const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string));
           if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) {
@@ -3154,7 +3155,7 @@ yyreduce:
   case 95:
 
 /* Line 1455 of yacc.c  */
-#line 1071 "program_parse.y"
+#line 1072 "program_parse.y"
     {
           const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string));
           if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) {
@@ -3180,7 +3181,7 @@ yyreduce:
   case 102:
 
 /* Line 1455 of yacc.c  */
-#line 1102 "program_parse.y"
+#line 1103 "program_parse.y"
     {
           struct asm_symbol *const s =
              declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)]));
@@ -3202,7 +3203,7 @@ yyreduce:
   case 103:
 
 /* Line 1455 of yacc.c  */
-#line 1121 "program_parse.y"
+#line 1122 "program_parse.y"
     {
           (yyval.attrib) = (yyvsp[(2) - (2)].attrib);
        ;}
@@ -3211,7 +3212,7 @@ yyreduce:
   case 104:
 
 /* Line 1455 of yacc.c  */
-#line 1125 "program_parse.y"
+#line 1126 "program_parse.y"
     {
           (yyval.attrib) = (yyvsp[(2) - (2)].attrib);
        ;}
@@ -3220,7 +3221,7 @@ yyreduce:
   case 105:
 
 /* Line 1455 of yacc.c  */
-#line 1131 "program_parse.y"
+#line 1132 "program_parse.y"
     {
           (yyval.attrib) = VERT_ATTRIB_POS;
        ;}
@@ -3229,7 +3230,7 @@ yyreduce:
   case 106:
 
 /* Line 1455 of yacc.c  */
-#line 1135 "program_parse.y"
+#line 1136 "program_parse.y"
     {
           (yyval.attrib) = VERT_ATTRIB_WEIGHT;
        ;}
@@ -3238,7 +3239,7 @@ yyreduce:
   case 107:
 
 /* Line 1455 of yacc.c  */
-#line 1139 "program_parse.y"
+#line 1140 "program_parse.y"
     {
           (yyval.attrib) = VERT_ATTRIB_NORMAL;
        ;}
@@ -3247,7 +3248,7 @@ yyreduce:
   case 108:
 
 /* Line 1455 of yacc.c  */
-#line 1143 "program_parse.y"
+#line 1144 "program_parse.y"
     {
           if (!state->ctx->Extensions.EXT_secondary_color) {
              yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported");
@@ -3261,7 +3262,7 @@ yyreduce:
   case 109:
 
 /* Line 1455 of yacc.c  */
-#line 1152 "program_parse.y"
+#line 1153 "program_parse.y"
     {
           if (!state->ctx->Extensions.EXT_fog_coord) {
              yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported");
@@ -3275,7 +3276,7 @@ yyreduce:
   case 110:
 
 /* Line 1455 of yacc.c  */
-#line 1161 "program_parse.y"
+#line 1162 "program_parse.y"
     {
           (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
        ;}
@@ -3284,7 +3285,7 @@ yyreduce:
   case 111:
 
 /* Line 1455 of yacc.c  */
-#line 1165 "program_parse.y"
+#line 1166 "program_parse.y"
     {
           yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");
           YYERROR;
@@ -3294,7 +3295,7 @@ yyreduce:
   case 112:
 
 /* Line 1455 of yacc.c  */
-#line 1170 "program_parse.y"
+#line 1171 "program_parse.y"
     {
           (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer);
        ;}
@@ -3303,7 +3304,7 @@ yyreduce:
   case 113:
 
 /* Line 1455 of yacc.c  */
-#line 1176 "program_parse.y"
+#line 1177 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference");
@@ -3317,7 +3318,7 @@ yyreduce:
   case 117:
 
 /* Line 1455 of yacc.c  */
-#line 1190 "program_parse.y"
+#line 1191 "program_parse.y"
     {
           (yyval.attrib) = FRAG_ATTRIB_WPOS;
        ;}
@@ -3326,7 +3327,7 @@ yyreduce:
   case 118:
 
 /* Line 1455 of yacc.c  */
-#line 1194 "program_parse.y"
+#line 1195 "program_parse.y"
     {
           (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer);
        ;}
@@ -3335,7 +3336,7 @@ yyreduce:
   case 119:
 
 /* Line 1455 of yacc.c  */
-#line 1198 "program_parse.y"
+#line 1199 "program_parse.y"
     {
           (yyval.attrib) = FRAG_ATTRIB_FOGC;
        ;}
@@ -3344,7 +3345,7 @@ yyreduce:
   case 120:
 
 /* Line 1455 of yacc.c  */
-#line 1202 "program_parse.y"
+#line 1203 "program_parse.y"
     {
           (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);
        ;}
@@ -3353,7 +3354,7 @@ yyreduce:
   case 123:
 
 /* Line 1455 of yacc.c  */
-#line 1210 "program_parse.y"
+#line 1211 "program_parse.y"
     {
           struct asm_symbol *const s =
              declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)]));
@@ -3374,7 +3375,7 @@ yyreduce:
   case 124:
 
 /* Line 1455 of yacc.c  */
-#line 1228 "program_parse.y"
+#line 1229 "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));
@@ -3402,7 +3403,7 @@ yyreduce:
   case 125:
 
 /* Line 1455 of yacc.c  */
-#line 1253 "program_parse.y"
+#line 1254 "program_parse.y"
     {
           (yyval.integer) = 0;
        ;}
@@ -3411,7 +3412,7 @@ yyreduce:
   case 126:
 
 /* Line 1455 of yacc.c  */
-#line 1257 "program_parse.y"
+#line 1258 "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");
@@ -3425,7 +3426,7 @@ yyreduce:
   case 127:
 
 /* Line 1455 of yacc.c  */
-#line 1268 "program_parse.y"
+#line 1269 "program_parse.y"
     {
           (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym);
        ;}
@@ -3434,7 +3435,7 @@ yyreduce:
   case 128:
 
 /* Line 1455 of yacc.c  */
-#line 1274 "program_parse.y"
+#line 1275 "program_parse.y"
     {
           (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym);
        ;}
@@ -3443,7 +3444,7 @@ yyreduce:
   case 130:
 
 /* Line 1455 of yacc.c  */
-#line 1281 "program_parse.y"
+#line 1282 "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);
@@ -3453,7 +3454,7 @@ yyreduce:
   case 131:
 
 /* Line 1455 of yacc.c  */
-#line 1288 "program_parse.y"
+#line 1289 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3464,7 +3465,7 @@ yyreduce:
   case 132:
 
 /* Line 1455 of yacc.c  */
-#line 1294 "program_parse.y"
+#line 1295 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3475,18 +3476,18 @@ yyreduce:
   case 133:
 
 /* Line 1455 of yacc.c  */
-#line 1300 "program_parse.y"
+#line 1301 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
-          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector));
+          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_TRUE);
        ;}
     break;
 
   case 134:
 
 /* Line 1455 of yacc.c  */
-#line 1308 "program_parse.y"
+#line 1309 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3497,7 +3498,7 @@ yyreduce:
   case 135:
 
 /* Line 1455 of yacc.c  */
-#line 1314 "program_parse.y"
+#line 1315 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3508,18 +3509,18 @@ yyreduce:
   case 136:
 
 /* Line 1455 of yacc.c  */
-#line 1320 "program_parse.y"
+#line 1321 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
-          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector));
+          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_TRUE);
        ;}
     break;
 
   case 137:
 
 /* Line 1455 of yacc.c  */
-#line 1328 "program_parse.y"
+#line 1329 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3530,7 +3531,7 @@ yyreduce:
   case 138:
 
 /* Line 1455 of yacc.c  */
-#line 1334 "program_parse.y"
+#line 1335 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
@@ -3541,109 +3542,109 @@ yyreduce:
   case 139:
 
 /* Line 1455 of yacc.c  */
-#line 1340 "program_parse.y"
+#line 1341 "program_parse.y"
     {
           memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));
           (yyval.temp_sym).param_binding_begin = ~0;
-          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector));
+          initialize_symbol_from_const(state->prog, & (yyval.temp_sym), & (yyvsp[(1) - (1)].vector), GL_FALSE);
        ;}
     break;
 
   case 140:
 
 /* Line 1455 of yacc.c  */
-#line 1347 "program_parse.y"
+#line 1348 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;}
     break;
 
   case 141:
 
 /* Line 1455 of yacc.c  */
-#line 1348 "program_parse.y"
+#line 1349 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 142:
 
 /* Line 1455 of yacc.c  */
-#line 1351 "program_parse.y"
+#line 1352 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 143:
 
 /* Line 1455 of yacc.c  */
-#line 1352 "program_parse.y"
+#line 1353 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 144:
 
 /* Line 1455 of yacc.c  */
-#line 1353 "program_parse.y"
+#line 1354 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 145:
 
 /* Line 1455 of yacc.c  */
-#line 1354 "program_parse.y"
+#line 1355 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 146:
 
 /* Line 1455 of yacc.c  */
-#line 1355 "program_parse.y"
+#line 1356 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 147:
 
 /* Line 1455 of yacc.c  */
-#line 1356 "program_parse.y"
+#line 1357 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 148:
 
 /* Line 1455 of yacc.c  */
-#line 1357 "program_parse.y"
+#line 1358 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 149:
 
 /* Line 1455 of yacc.c  */
-#line 1358 "program_parse.y"
+#line 1359 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 150:
 
 /* Line 1455 of yacc.c  */
-#line 1359 "program_parse.y"
+#line 1360 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 151:
 
 /* Line 1455 of yacc.c  */
-#line 1360 "program_parse.y"
+#line 1361 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 152:
 
 /* Line 1455 of yacc.c  */
-#line 1361 "program_parse.y"
+#line 1362 "program_parse.y"
     { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}
     break;
 
   case 153:
 
 /* Line 1455 of yacc.c  */
-#line 1365 "program_parse.y"
+#line 1366 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_MATERIAL;
@@ -3655,7 +3656,7 @@ yyreduce:
   case 154:
 
 /* Line 1455 of yacc.c  */
-#line 1374 "program_parse.y"
+#line 1375 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(1) - (1)].integer);
        ;}
@@ -3664,7 +3665,7 @@ yyreduce:
   case 155:
 
 /* Line 1455 of yacc.c  */
-#line 1378 "program_parse.y"
+#line 1379 "program_parse.y"
     {
           (yyval.integer) = STATE_EMISSION;
        ;}
@@ -3673,7 +3674,7 @@ yyreduce:
   case 156:
 
 /* Line 1455 of yacc.c  */
-#line 1382 "program_parse.y"
+#line 1383 "program_parse.y"
     {
           (yyval.integer) = STATE_SHININESS;
        ;}
@@ -3682,7 +3683,7 @@ yyreduce:
   case 157:
 
 /* Line 1455 of yacc.c  */
-#line 1388 "program_parse.y"
+#line 1389 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_LIGHT;
@@ -3694,7 +3695,7 @@ yyreduce:
   case 158:
 
 /* Line 1455 of yacc.c  */
-#line 1397 "program_parse.y"
+#line 1398 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(1) - (1)].integer);
        ;}
@@ -3703,7 +3704,7 @@ yyreduce:
   case 159:
 
 /* Line 1455 of yacc.c  */
-#line 1401 "program_parse.y"
+#line 1402 "program_parse.y"
     {
           (yyval.integer) = STATE_POSITION;
        ;}
@@ -3712,7 +3713,7 @@ yyreduce:
   case 160:
 
 /* Line 1455 of yacc.c  */
-#line 1405 "program_parse.y"
+#line 1406 "program_parse.y"
     {
           if (!state->ctx->Extensions.EXT_point_parameters) {
              yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported");
@@ -3726,7 +3727,7 @@ yyreduce:
   case 161:
 
 /* Line 1455 of yacc.c  */
-#line 1414 "program_parse.y"
+#line 1415 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(2) - (2)].integer);
        ;}
@@ -3735,7 +3736,7 @@ yyreduce:
   case 162:
 
 /* Line 1455 of yacc.c  */
-#line 1418 "program_parse.y"
+#line 1419 "program_parse.y"
     {
           (yyval.integer) = STATE_HALF_VECTOR;
        ;}
@@ -3744,7 +3745,7 @@ yyreduce:
   case 163:
 
 /* Line 1455 of yacc.c  */
-#line 1424 "program_parse.y"
+#line 1425 "program_parse.y"
     {
           (yyval.integer) = STATE_SPOT_DIRECTION;
        ;}
@@ -3753,7 +3754,7 @@ yyreduce:
   case 164:
 
 /* Line 1455 of yacc.c  */
-#line 1430 "program_parse.y"
+#line 1431 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0];
           (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1];
@@ -3763,7 +3764,7 @@ yyreduce:
   case 165:
 
 /* Line 1455 of yacc.c  */
-#line 1437 "program_parse.y"
+#line 1438 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT;
@@ -3773,7 +3774,7 @@ yyreduce:
   case 166:
 
 /* Line 1455 of yacc.c  */
-#line 1442 "program_parse.y"
+#line 1443 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR;
@@ -3784,7 +3785,7 @@ yyreduce:
   case 167:
 
 /* Line 1455 of yacc.c  */
-#line 1450 "program_parse.y"
+#line 1451 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_LIGHTPROD;
@@ -3797,7 +3798,7 @@ yyreduce:
   case 169:
 
 /* Line 1455 of yacc.c  */
-#line 1462 "program_parse.y"
+#line 1463 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = (yyvsp[(3) - (3)].integer);
@@ -3808,7 +3809,7 @@ yyreduce:
   case 170:
 
 /* Line 1455 of yacc.c  */
-#line 1470 "program_parse.y"
+#line 1471 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXENV_COLOR;
        ;}
@@ -3817,7 +3818,7 @@ yyreduce:
   case 171:
 
 /* Line 1455 of yacc.c  */
-#line 1476 "program_parse.y"
+#line 1477 "program_parse.y"
     {
           (yyval.integer) = STATE_AMBIENT;
        ;}
@@ -3826,7 +3827,7 @@ yyreduce:
   case 172:
 
 /* Line 1455 of yacc.c  */
-#line 1480 "program_parse.y"
+#line 1481 "program_parse.y"
     {
           (yyval.integer) = STATE_DIFFUSE;
        ;}
@@ -3835,7 +3836,7 @@ yyreduce:
   case 173:
 
 /* Line 1455 of yacc.c  */
-#line 1484 "program_parse.y"
+#line 1485 "program_parse.y"
     {
           (yyval.integer) = STATE_SPECULAR;
        ;}
@@ -3844,7 +3845,7 @@ yyreduce:
   case 174:
 
 /* Line 1455 of yacc.c  */
-#line 1490 "program_parse.y"
+#line 1491 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector");
@@ -3858,7 +3859,7 @@ yyreduce:
   case 175:
 
 /* Line 1455 of yacc.c  */
-#line 1501 "program_parse.y"
+#line 1502 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_TEXGEN;
@@ -3870,7 +3871,7 @@ yyreduce:
   case 176:
 
 /* Line 1455 of yacc.c  */
-#line 1510 "program_parse.y"
+#line 1511 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_EYE_S;
        ;}
@@ -3879,7 +3880,7 @@ yyreduce:
   case 177:
 
 /* Line 1455 of yacc.c  */
-#line 1514 "program_parse.y"
+#line 1515 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_OBJECT_S;
        ;}
@@ -3888,7 +3889,7 @@ yyreduce:
   case 178:
 
 /* Line 1455 of yacc.c  */
-#line 1519 "program_parse.y"
+#line 1520 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S;
        ;}
@@ -3897,7 +3898,7 @@ yyreduce:
   case 179:
 
 /* Line 1455 of yacc.c  */
-#line 1523 "program_parse.y"
+#line 1524 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S;
        ;}
@@ -3906,7 +3907,7 @@ yyreduce:
   case 180:
 
 /* Line 1455 of yacc.c  */
-#line 1527 "program_parse.y"
+#line 1528 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S;
        ;}
@@ -3915,7 +3916,7 @@ yyreduce:
   case 181:
 
 /* Line 1455 of yacc.c  */
-#line 1531 "program_parse.y"
+#line 1532 "program_parse.y"
     {
           (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S;
        ;}
@@ -3924,7 +3925,7 @@ yyreduce:
   case 182:
 
 /* Line 1455 of yacc.c  */
-#line 1537 "program_parse.y"
+#line 1538 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3934,7 +3935,7 @@ yyreduce:
   case 183:
 
 /* Line 1455 of yacc.c  */
-#line 1544 "program_parse.y"
+#line 1545 "program_parse.y"
     {
           (yyval.integer) = STATE_FOG_COLOR;
        ;}
@@ -3943,7 +3944,7 @@ yyreduce:
   case 184:
 
 /* Line 1455 of yacc.c  */
-#line 1548 "program_parse.y"
+#line 1549 "program_parse.y"
     {
           (yyval.integer) = STATE_FOG_PARAMS;
        ;}
@@ -3952,7 +3953,7 @@ yyreduce:
   case 185:
 
 /* Line 1455 of yacc.c  */
-#line 1554 "program_parse.y"
+#line 1555 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_CLIPPLANE;
@@ -3963,7 +3964,7 @@ yyreduce:
   case 186:
 
 /* Line 1455 of yacc.c  */
-#line 1562 "program_parse.y"
+#line 1563 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector");
@@ -3977,7 +3978,7 @@ yyreduce:
   case 187:
 
 /* Line 1455 of yacc.c  */
-#line 1573 "program_parse.y"
+#line 1574 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = (yyvsp[(2) - (2)].integer);
@@ -3987,7 +3988,7 @@ yyreduce:
   case 188:
 
 /* Line 1455 of yacc.c  */
-#line 1580 "program_parse.y"
+#line 1581 "program_parse.y"
     {
           (yyval.integer) = STATE_POINT_SIZE;
        ;}
@@ -3996,7 +3997,7 @@ yyreduce:
   case 189:
 
 /* Line 1455 of yacc.c  */
-#line 1584 "program_parse.y"
+#line 1585 "program_parse.y"
     {
           (yyval.integer) = STATE_POINT_ATTENUATION;
        ;}
@@ -4005,7 +4006,7 @@ yyreduce:
   case 190:
 
 /* Line 1455 of yacc.c  */
-#line 1590 "program_parse.y"
+#line 1591 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0];
           (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1];
@@ -4018,7 +4019,7 @@ yyreduce:
   case 191:
 
 /* Line 1455 of yacc.c  */
-#line 1600 "program_parse.y"
+#line 1601 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0];
           (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1];
@@ -4031,7 +4032,7 @@ yyreduce:
   case 192:
 
 /* Line 1455 of yacc.c  */
-#line 1610 "program_parse.y"
+#line 1611 "program_parse.y"
     {
           (yyval.state)[2] = 0;
           (yyval.state)[3] = 3;
@@ -4041,7 +4042,7 @@ yyreduce:
   case 193:
 
 /* Line 1455 of yacc.c  */
-#line 1615 "program_parse.y"
+#line 1616 "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).
@@ -4062,7 +4063,7 @@ yyreduce:
   case 194:
 
 /* Line 1455 of yacc.c  */
-#line 1633 "program_parse.y"
+#line 1634 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0];
           (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1];
@@ -4073,7 +4074,7 @@ yyreduce:
   case 195:
 
 /* Line 1455 of yacc.c  */
-#line 1641 "program_parse.y"
+#line 1642 "program_parse.y"
     {
           (yyval.integer) = 0;
        ;}
@@ -4082,7 +4083,7 @@ yyreduce:
   case 196:
 
 /* Line 1455 of yacc.c  */
-#line 1645 "program_parse.y"
+#line 1646 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(1) - (1)].integer);
        ;}
@@ -4091,7 +4092,7 @@ yyreduce:
   case 197:
 
 /* Line 1455 of yacc.c  */
-#line 1651 "program_parse.y"
+#line 1652 "program_parse.y"
     {
           (yyval.integer) = STATE_MATRIX_INVERSE;
        ;}
@@ -4100,7 +4101,7 @@ yyreduce:
   case 198:
 
 /* Line 1455 of yacc.c  */
-#line 1655 "program_parse.y"
+#line 1656 "program_parse.y"
     {
           (yyval.integer) = STATE_MATRIX_TRANSPOSE;
        ;}
@@ -4109,7 +4110,7 @@ yyreduce:
   case 199:
 
 /* Line 1455 of yacc.c  */
-#line 1659 "program_parse.y"
+#line 1660 "program_parse.y"
     {
           (yyval.integer) = STATE_MATRIX_INVTRANS;
        ;}
@@ -4118,7 +4119,7 @@ yyreduce:
   case 200:
 
 /* Line 1455 of yacc.c  */
-#line 1665 "program_parse.y"
+#line 1666 "program_parse.y"
     {
           if ((yyvsp[(1) - (1)].integer) > 3) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference");
@@ -4132,7 +4133,7 @@ yyreduce:
   case 201:
 
 /* Line 1455 of yacc.c  */
-#line 1676 "program_parse.y"
+#line 1677 "program_parse.y"
     {
           (yyval.state)[0] = STATE_MODELVIEW_MATRIX;
           (yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -4142,7 +4143,7 @@ yyreduce:
   case 202:
 
 /* Line 1455 of yacc.c  */
-#line 1681 "program_parse.y"
+#line 1682 "program_parse.y"
     {
           (yyval.state)[0] = STATE_PROJECTION_MATRIX;
           (yyval.state)[1] = 0;
@@ -4152,7 +4153,7 @@ yyreduce:
   case 203:
 
 /* Line 1455 of yacc.c  */
-#line 1686 "program_parse.y"
+#line 1687 "program_parse.y"
     {
           (yyval.state)[0] = STATE_MVP_MATRIX;
           (yyval.state)[1] = 0;
@@ -4162,7 +4163,7 @@ yyreduce:
   case 204:
 
 /* Line 1455 of yacc.c  */
-#line 1691 "program_parse.y"
+#line 1692 "program_parse.y"
     {
           (yyval.state)[0] = STATE_TEXTURE_MATRIX;
           (yyval.state)[1] = (yyvsp[(2) - (2)].integer);
@@ -4172,7 +4173,7 @@ yyreduce:
   case 205:
 
 /* Line 1455 of yacc.c  */
-#line 1696 "program_parse.y"
+#line 1697 "program_parse.y"
     {
           yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");
           YYERROR;
@@ -4182,7 +4183,7 @@ yyreduce:
   case 206:
 
 /* Line 1455 of yacc.c  */
-#line 1701 "program_parse.y"
+#line 1702 "program_parse.y"
     {
           (yyval.state)[0] = STATE_PROGRAM_MATRIX;
           (yyval.state)[1] = (yyvsp[(3) - (4)].integer);
@@ -4192,7 +4193,7 @@ yyreduce:
   case 207:
 
 /* Line 1455 of yacc.c  */
-#line 1708 "program_parse.y"
+#line 1709 "program_parse.y"
     {
           (yyval.integer) = 0;
        ;}
@@ -4201,7 +4202,7 @@ yyreduce:
   case 208:
 
 /* Line 1455 of yacc.c  */
-#line 1712 "program_parse.y"
+#line 1713 "program_parse.y"
     {
           (yyval.integer) = (yyvsp[(2) - (3)].integer);
        ;}
@@ -4210,7 +4211,7 @@ yyreduce:
   case 209:
 
 /* Line 1455 of yacc.c  */
-#line 1717 "program_parse.y"
+#line 1718 "program_parse.y"
     {
           /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix
            * zero is valid.
@@ -4227,7 +4228,7 @@ yyreduce:
   case 210:
 
 /* Line 1455 of yacc.c  */
-#line 1730 "program_parse.y"
+#line 1731 "program_parse.y"
     {
           /* Since GL_ARB_matrix_palette isn't supported, just let any value
            * through here.  The error will be generated later.
@@ -4239,7 +4240,7 @@ yyreduce:
   case 211:
 
 /* Line 1455 of yacc.c  */
-#line 1738 "program_parse.y"
+#line 1739 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector");
@@ -4253,7 +4254,7 @@ yyreduce:
   case 212:
 
 /* Line 1455 of yacc.c  */
-#line 1749 "program_parse.y"
+#line 1750 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = STATE_DEPTH_RANGE;
@@ -4263,7 +4264,7 @@ yyreduce:
   case 217:
 
 /* Line 1455 of yacc.c  */
-#line 1761 "program_parse.y"
+#line 1762 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = state->state_param_enum;
@@ -4276,7 +4277,7 @@ yyreduce:
   case 218:
 
 /* Line 1455 of yacc.c  */
-#line 1771 "program_parse.y"
+#line 1772 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (1)].integer);
           (yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -4286,7 +4287,7 @@ yyreduce:
   case 219:
 
 /* Line 1455 of yacc.c  */
-#line 1776 "program_parse.y"
+#line 1777 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (3)].integer);
           (yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -4296,7 +4297,7 @@ yyreduce:
   case 220:
 
 /* Line 1455 of yacc.c  */
-#line 1783 "program_parse.y"
+#line 1784 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = state->state_param_enum;
@@ -4309,7 +4310,7 @@ yyreduce:
   case 221:
 
 /* Line 1455 of yacc.c  */
-#line 1793 "program_parse.y"
+#line 1794 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = state->state_param_enum;
@@ -4322,7 +4323,7 @@ yyreduce:
   case 222:
 
 /* Line 1455 of yacc.c  */
-#line 1802 "program_parse.y"
+#line 1803 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (1)].integer);
           (yyval.state)[1] = (yyvsp[(1) - (1)].integer);
@@ -4332,7 +4333,7 @@ yyreduce:
   case 223:
 
 /* Line 1455 of yacc.c  */
-#line 1807 "program_parse.y"
+#line 1808 "program_parse.y"
     {
           (yyval.state)[0] = (yyvsp[(1) - (3)].integer);
           (yyval.state)[1] = (yyvsp[(3) - (3)].integer);
@@ -4342,7 +4343,7 @@ yyreduce:
   case 224:
 
 /* Line 1455 of yacc.c  */
-#line 1814 "program_parse.y"
+#line 1815 "program_parse.y"
     {
           memset((yyval.state), 0, sizeof((yyval.state)));
           (yyval.state)[0] = state->state_param_enum;
@@ -4355,7 +4356,7 @@ yyreduce:
   case 225:
 
 /* Line 1455 of yacc.c  */
-#line 1824 "program_parse.y"
+#line 1825 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference");
@@ -4368,7 +4369,7 @@ yyreduce:
   case 226:
 
 /* Line 1455 of yacc.c  */
-#line 1834 "program_parse.y"
+#line 1835 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference");
@@ -4381,7 +4382,7 @@ yyreduce:
   case 231:
 
 /* Line 1455 of yacc.c  */
-#line 1849 "program_parse.y"
+#line 1850 "program_parse.y"
     {
           (yyval.vector).count = 4;
           (yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -4394,7 +4395,7 @@ yyreduce:
   case 232:
 
 /* Line 1455 of yacc.c  */
-#line 1859 "program_parse.y"
+#line 1860 "program_parse.y"
     {
           (yyval.vector).count = 1;
           (yyval.vector).data[0] = (yyvsp[(1) - (1)].real);
@@ -4407,7 +4408,7 @@ yyreduce:
   case 233:
 
 /* Line 1455 of yacc.c  */
-#line 1867 "program_parse.y"
+#line 1868 "program_parse.y"
     {
           (yyval.vector).count = 1;
           (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer);
@@ -4420,7 +4421,7 @@ yyreduce:
   case 234:
 
 /* Line 1455 of yacc.c  */
-#line 1877 "program_parse.y"
+#line 1878 "program_parse.y"
     {
           (yyval.vector).count = 4;
           (yyval.vector).data[0] = (yyvsp[(2) - (3)].real);
@@ -4433,7 +4434,7 @@ yyreduce:
   case 235:
 
 /* Line 1455 of yacc.c  */
-#line 1885 "program_parse.y"
+#line 1886 "program_parse.y"
     {
           (yyval.vector).count = 4;
           (yyval.vector).data[0] = (yyvsp[(2) - (5)].real);
@@ -4446,7 +4447,7 @@ yyreduce:
   case 236:
 
 /* Line 1455 of yacc.c  */
-#line 1894 "program_parse.y"
+#line 1895 "program_parse.y"
     {
           (yyval.vector).count = 4;
           (yyval.vector).data[0] = (yyvsp[(2) - (7)].real);
@@ -4459,7 +4460,7 @@ yyreduce:
   case 237:
 
 /* Line 1455 of yacc.c  */
-#line 1903 "program_parse.y"
+#line 1904 "program_parse.y"
     {
           (yyval.vector).count = 4;
           (yyval.vector).data[0] = (yyvsp[(2) - (9)].real);
@@ -4472,7 +4473,7 @@ yyreduce:
   case 238:
 
 /* Line 1455 of yacc.c  */
-#line 1913 "program_parse.y"
+#line 1914 "program_parse.y"
     {
           (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real);
        ;}
@@ -4481,7 +4482,7 @@ yyreduce:
   case 239:
 
 /* Line 1455 of yacc.c  */
-#line 1917 "program_parse.y"
+#line 1918 "program_parse.y"
     {
           (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer));
        ;}
@@ -4490,35 +4491,35 @@ yyreduce:
   case 240:
 
 /* Line 1455 of yacc.c  */
-#line 1922 "program_parse.y"
+#line 1923 "program_parse.y"
     { (yyval.negate) = FALSE; ;}
     break;
 
   case 241:
 
 /* Line 1455 of yacc.c  */
-#line 1923 "program_parse.y"
+#line 1924 "program_parse.y"
     { (yyval.negate) = TRUE;  ;}
     break;
 
   case 242:
 
 /* Line 1455 of yacc.c  */
-#line 1924 "program_parse.y"
+#line 1925 "program_parse.y"
     { (yyval.negate) = FALSE; ;}
     break;
 
   case 243:
 
 /* Line 1455 of yacc.c  */
-#line 1927 "program_parse.y"
+#line 1928 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;}
     break;
 
   case 245:
 
 /* Line 1455 of yacc.c  */
-#line 1931 "program_parse.y"
+#line 1932 "program_parse.y"
     {
           /* NV_fragment_program_option defines the size qualifiers in a
            * fairly broken way.  "SHORT" or "LONG" can optionally be used
@@ -4557,7 +4558,7 @@ yyreduce:
   case 246:
 
 /* Line 1455 of yacc.c  */
-#line 1965 "program_parse.y"
+#line 1966 "program_parse.y"
     {
        ;}
     break;
@@ -4565,14 +4566,14 @@ yyreduce:
   case 247:
 
 /* Line 1455 of yacc.c  */
-#line 1969 "program_parse.y"
+#line 1970 "program_parse.y"
     { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}
     break;
 
   case 249:
 
 /* Line 1455 of yacc.c  */
-#line 1973 "program_parse.y"
+#line 1974 "program_parse.y"
     {
           if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) {
              free((yyvsp[(3) - (3)].string));
@@ -4584,7 +4585,7 @@ yyreduce:
   case 250:
 
 /* Line 1455 of yacc.c  */
-#line 1980 "program_parse.y"
+#line 1981 "program_parse.y"
     {
           if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) {
              free((yyvsp[(1) - (1)].string));
@@ -4596,7 +4597,7 @@ yyreduce:
   case 251:
 
 /* Line 1455 of yacc.c  */
-#line 1989 "program_parse.y"
+#line 1990 "program_parse.y"
     {
           struct asm_symbol *const s =
              declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)]));
@@ -4613,7 +4614,7 @@ yyreduce:
   case 252:
 
 /* Line 1455 of yacc.c  */
-#line 2003 "program_parse.y"
+#line 2004 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.result) = VERT_RESULT_HPOS;
@@ -4627,7 +4628,7 @@ yyreduce:
   case 253:
 
 /* Line 1455 of yacc.c  */
-#line 2012 "program_parse.y"
+#line 2013 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.result) = VERT_RESULT_FOGC;
@@ -4641,7 +4642,7 @@ yyreduce:
   case 254:
 
 /* Line 1455 of yacc.c  */
-#line 2021 "program_parse.y"
+#line 2022 "program_parse.y"
     {
           (yyval.result) = (yyvsp[(2) - (2)].result);
        ;}
@@ -4650,7 +4651,7 @@ yyreduce:
   case 255:
 
 /* Line 1455 of yacc.c  */
-#line 2025 "program_parse.y"
+#line 2026 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.result) = VERT_RESULT_PSIZ;
@@ -4664,7 +4665,7 @@ yyreduce:
   case 256:
 
 /* Line 1455 of yacc.c  */
-#line 2034 "program_parse.y"
+#line 2035 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer);
@@ -4678,7 +4679,7 @@ yyreduce:
   case 257:
 
 /* Line 1455 of yacc.c  */
-#line 2043 "program_parse.y"
+#line 2044 "program_parse.y"
     {
           if (state->mode == ARB_fragment) {
              (yyval.result) = FRAG_RESULT_DEPTH;
@@ -4692,7 +4693,7 @@ yyreduce:
   case 258:
 
 /* Line 1455 of yacc.c  */
-#line 2054 "program_parse.y"
+#line 2055 "program_parse.y"
     {
           (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer);
        ;}
@@ -4701,7 +4702,7 @@ yyreduce:
   case 259:
 
 /* Line 1455 of yacc.c  */
-#line 2060 "program_parse.y"
+#line 2061 "program_parse.y"
     {
           (yyval.integer) = (state->mode == ARB_vertex)
              ? VERT_RESULT_COL0
@@ -4712,7 +4713,7 @@ yyreduce:
   case 260:
 
 /* Line 1455 of yacc.c  */
-#line 2066 "program_parse.y"
+#line 2067 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.integer) = VERT_RESULT_COL0;
@@ -4726,7 +4727,7 @@ yyreduce:
   case 261:
 
 /* Line 1455 of yacc.c  */
-#line 2075 "program_parse.y"
+#line 2076 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.integer) = VERT_RESULT_BFC0;
@@ -4740,7 +4741,7 @@ yyreduce:
   case 262:
 
 /* Line 1455 of yacc.c  */
-#line 2086 "program_parse.y"
+#line 2087 "program_parse.y"
     {
           (yyval.integer) = 0; 
        ;}
@@ -4749,7 +4750,7 @@ yyreduce:
   case 263:
 
 /* Line 1455 of yacc.c  */
-#line 2090 "program_parse.y"
+#line 2091 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.integer) = 0;
@@ -4763,7 +4764,7 @@ yyreduce:
   case 264:
 
 /* Line 1455 of yacc.c  */
-#line 2099 "program_parse.y"
+#line 2100 "program_parse.y"
     {
           if (state->mode == ARB_vertex) {
              (yyval.integer) = 1;
@@ -4777,91 +4778,91 @@ yyreduce:
   case 265:
 
 /* Line 1455 of yacc.c  */
-#line 2109 "program_parse.y"
+#line 2110 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 266:
 
 /* Line 1455 of yacc.c  */
-#line 2110 "program_parse.y"
+#line 2111 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 267:
 
 /* Line 1455 of yacc.c  */
-#line 2111 "program_parse.y"
+#line 2112 "program_parse.y"
     { (yyval.integer) = 1; ;}
     break;
 
   case 268:
 
 /* Line 1455 of yacc.c  */
-#line 2114 "program_parse.y"
+#line 2115 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 269:
 
 /* Line 1455 of yacc.c  */
-#line 2115 "program_parse.y"
+#line 2116 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 270:
 
 /* Line 1455 of yacc.c  */
-#line 2116 "program_parse.y"
+#line 2117 "program_parse.y"
     { (yyval.integer) = 1; ;}
     break;
 
   case 271:
 
 /* Line 1455 of yacc.c  */
-#line 2119 "program_parse.y"
+#line 2120 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 272:
 
 /* Line 1455 of yacc.c  */
-#line 2120 "program_parse.y"
+#line 2121 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 273:
 
 /* Line 1455 of yacc.c  */
-#line 2123 "program_parse.y"
+#line 2124 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 274:
 
 /* Line 1455 of yacc.c  */
-#line 2124 "program_parse.y"
+#line 2125 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 275:
 
 /* Line 1455 of yacc.c  */
-#line 2127 "program_parse.y"
+#line 2128 "program_parse.y"
     { (yyval.integer) = 0; ;}
     break;
 
   case 276:
 
 /* Line 1455 of yacc.c  */
-#line 2128 "program_parse.y"
+#line 2129 "program_parse.y"
     { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}
     break;
 
   case 277:
 
 /* Line 1455 of yacc.c  */
-#line 2132 "program_parse.y"
+#line 2133 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector");
@@ -4875,7 +4876,7 @@ yyreduce:
   case 278:
 
 /* Line 1455 of yacc.c  */
-#line 2143 "program_parse.y"
+#line 2144 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector");
@@ -4889,7 +4890,7 @@ yyreduce:
   case 279:
 
 /* Line 1455 of yacc.c  */
-#line 2154 "program_parse.y"
+#line 2155 "program_parse.y"
     {
           if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) {
              yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector");
@@ -4903,7 +4904,7 @@ yyreduce:
   case 280:
 
 /* Line 1455 of yacc.c  */
-#line 2165 "program_parse.y"
+#line 2166 "program_parse.y"
     {
           struct asm_symbol *exist = (struct asm_symbol *)
              _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string));
@@ -4932,7 +4933,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 4936 "program_parse.tab.c"
+#line 4937 "program_parse.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5151,7 +5152,7 @@ yyreturn:
 
 
 /* Line 1675 of yacc.c  */
-#line 2194 "program_parse.y"
+#line 2195 "program_parse.y"
 
 
 void
@@ -5258,7 +5259,9 @@ 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);
+   (void) minIndex;
    ASSERT(index <= maxIndex);
+   (void) maxIndex;
    ASSERT(file == PROGRAM_TEMPORARY ||
          file == PROGRAM_ADDRESS ||
          file == PROGRAM_OUTPUT);
@@ -5299,7 +5302,9 @@ set_src_reg_swz(struct asm_src_register *r, gl_register_file file, GLint index,
    const GLint minIndex = -(1 << INST_INDEX_BITS);
    ASSERT(file < PROGRAM_FILE_MAX);
    ASSERT(index >= minIndex);
+   (void) minIndex;
    ASSERT(index <= maxIndex);
+   (void) maxIndex;
    memset(r, 0, sizeof(*r));
    r->Base.File = file;
    r->Base.Index = index;
@@ -5513,23 +5518,28 @@ initialize_symbol_from_param(struct gl_program *prog,
  * \param param_var  returns info about the parameter/constant's location,
  *                   binding, type, etc.
  * \param vec  the vector/constant to add
+ * \param allowSwizzle  if true, try to consolidate constants which only differ
+ *                      by a swizzle.  We don't want to do this when building
+ *                      arrays of constants that may be indexed indirectly.
  * \return index of the constant in the parameter list.
  */
 int
 initialize_symbol_from_const(struct gl_program *prog,
                             struct asm_symbol *param_var, 
-                            const struct asm_vector *vec)
+                            const struct asm_vector *vec,
+                             GLboolean allowSwizzle)
 {
    unsigned swizzle;
    const int idx = _mesa_add_unnamed_constant(prog->Parameters,
-                                              vec->data, vec->count, &swizzle);
+                                              vec->data, vec->count,
+                                              allowSwizzle ? &swizzle : NULL);
 
    param_var->type = at_param;
    param_var->param_binding_type = PROGRAM_CONSTANT;
 
    if (param_var->param_binding_begin == ~0U) {
       param_var->param_binding_begin = idx;
-      param_var->param_binding_swizzle = swizzle;
+      param_var->param_binding_swizzle = allowSwizzle ? swizzle : SWIZZLE_XYZW;
    }
    param_var->param_binding_length++;
 
index d8712b72684e352f160a861f1f65fa63818e956c..045241d9e77d551d053516e6c22a0727963c6d8f 100644 (file)
@@ -154,7 +154,7 @@ typedef union YYSTYPE
 {
 
 /* Line 1676 of yacc.c  */
-#line 125 "program_parse.y"
+#line 126 "program_parse.y"
 
    struct asm_instruction *inst;
    struct asm_symbol *sym;