diff options
| author | Keith Whitwell <keithw@vmware.com> | 2009-12-21 19:18:41 +0000 | 
|---|---|---|
| committer | Keith Whitwell <keithw@vmware.com> | 2009-12-21 19:18:41 +0000 | 
| commit | a5585cb533af3d4e5d5324d5f526447b98597402 (patch) | |
| tree | 6706dbb8b4f994b919e247647c3e8853d067b45c /src/mesa/shader/program_parse.tab.c | |
| parent | d288a30610767f87e3e7c069730d4bc255246568 (diff) | |
| parent | 574715d8368f99c0a5720a9676385d58d6cfdf30 (diff) | |
Merge commit 'origin/master' into i965g-restart
Conflicts:
	SConstruct
	configs/default
	configs/linux-dri
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   *  | 
