From ede0cd4d8c8eb8c6c443c84905138091944d69af Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Mon, 31 Aug 2009 17:00:31 -0700 Subject: NV fp lexer: Add new opcodes --- src/mesa/shader/program_parse.y | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index e2e83e484f..9dab00c385 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -142,7 +142,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, /* Tokens for instructions */ %token BIN_OP BINSC_OP SAMPLE_OP SCALAR_OP TRI_OP VECTOR_OP -%token ARL KIL SWZ +%token ARL KIL SWZ TXD_OP %token INTEGER %token REAL -- cgit v1.2.3 From 8ca6fd8a83412e3a76746f0ee61027b796516f95 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 1 Sep 2009 14:16:03 -0700 Subject: NV fp parser: Parse TXD instruction --- src/mesa/shader/program_parse.tab.c | 1735 ++++++++++++++++++----------------- src/mesa/shader/program_parse.y | 48 +- 2 files changed, 941 insertions(+), 842 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 4108374652..06aefd073f 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -588,16 +588,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 340 +#define YYLAST 349 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 116 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 134 +#define YYNNTS 135 /* YYNRULES -- Number of rules. */ -#define YYNRULES 264 +#define YYNRULES 266 /* YYNRULES -- Number of states. */ -#define YYNSTATES 434 +#define YYNSTATES 447 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -655,31 +655,31 @@ static const yytype_uint16 yyprhs[] = { 0, 0, 3, 8, 10, 12, 15, 16, 20, 23, 24, 27, 30, 32, 34, 36, 38, 40, 42, 44, - 46, 48, 50, 52, 57, 62, 67, 74, 81, 90, - 99, 102, 105, 107, 109, 111, 113, 115, 117, 119, - 121, 123, 125, 127, 129, 136, 140, 144, 147, 150, - 158, 161, 163, 165, 167, 169, 174, 176, 178, 180, - 182, 184, 186, 188, 192, 193, 196, 199, 201, 203, - 205, 207, 209, 211, 213, 215, 217, 218, 220, 222, - 224, 226, 227, 229, 231, 233, 235, 237, 239, 244, - 247, 250, 252, 255, 257, 260, 262, 265, 270, 275, - 277, 278, 282, 284, 286, 289, 291, 294, 296, 298, - 302, 309, 310, 312, 315, 320, 322, 326, 328, 330, - 332, 334, 336, 338, 340, 342, 344, 346, 349, 352, - 355, 358, 361, 364, 367, 370, 373, 376, 379, 382, - 386, 388, 390, 392, 398, 400, 402, 404, 407, 409, - 411, 414, 416, 419, 426, 428, 432, 434, 436, 438, - 440, 442, 447, 449, 451, 453, 455, 457, 459, 462, - 464, 466, 472, 474, 477, 479, 481, 487, 490, 491, - 498, 502, 503, 505, 507, 509, 511, 513, 516, 518, - 520, 523, 528, 533, 534, 536, 538, 540, 542, 545, - 547, 549, 551, 553, 559, 561, 565, 571, 577, 579, - 583, 589, 591, 593, 595, 597, 599, 601, 603, 605, - 607, 611, 617, 625, 635, 638, 641, 643, 645, 646, - 647, 651, 652, 656, 660, 662, 667, 670, 673, 676, - 679, 683, 686, 690, 691, 693, 695, 696, 698, 700, - 701, 703, 705, 706, 708, 710, 711, 715, 716, 720, - 721, 725, 727, 729, 731 + 46, 48, 50, 52, 54, 59, 64, 69, 76, 83, + 92, 101, 104, 117, 120, 122, 124, 126, 128, 130, + 132, 134, 136, 138, 140, 142, 144, 151, 155, 159, + 162, 165, 173, 176, 178, 180, 182, 184, 189, 191, + 193, 195, 197, 199, 201, 203, 207, 208, 211, 214, + 216, 218, 220, 222, 224, 226, 228, 230, 232, 233, + 235, 237, 239, 241, 242, 244, 246, 248, 250, 252, + 254, 259, 262, 265, 267, 270, 272, 275, 277, 280, + 285, 290, 292, 293, 297, 299, 301, 304, 306, 309, + 311, 313, 317, 324, 325, 327, 330, 335, 337, 341, + 343, 345, 347, 349, 351, 353, 355, 357, 359, 361, + 364, 367, 370, 373, 376, 379, 382, 385, 388, 391, + 394, 397, 401, 403, 405, 407, 413, 415, 417, 419, + 422, 424, 426, 429, 431, 434, 441, 443, 447, 449, + 451, 453, 455, 457, 462, 464, 466, 468, 470, 472, + 474, 477, 479, 481, 487, 489, 492, 494, 496, 502, + 505, 506, 513, 517, 518, 520, 522, 524, 526, 528, + 531, 533, 535, 538, 543, 548, 549, 551, 553, 555, + 557, 560, 562, 564, 566, 568, 574, 576, 580, 586, + 592, 594, 598, 604, 606, 608, 610, 612, 614, 616, + 618, 620, 622, 626, 632, 640, 650, 653, 656, 658, + 660, 661, 662, 666, 667, 671, 675, 677, 682, 685, + 688, 691, 694, 698, 701, 705, 706, 708, 710, 711, + 713, 715, 716, 718, 720, 721, 723, 725, 726, 730, + 731, 735, 736, 740, 742, 744, 746 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -687,78 +687,80 @@ static const yytype_int16 yyrhs[] = { 117, 0, -1, 118, 119, 121, 12, -1, 3, -1, 4, -1, 119, 120, -1, -1, 8, 99, 107, -1, - 121, 122, -1, -1, 123, 107, -1, 159, 107, -1, + 121, 122, -1, -1, 123, 107, -1, 160, 107, -1, 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, - 129, -1, 130, -1, 131, -1, 136, -1, 132, -1, - 133, -1, 19, 140, 108, 137, -1, 18, 139, 108, - 138, -1, 16, 139, 108, 137, -1, 14, 139, 108, - 137, 108, 137, -1, 13, 139, 108, 138, 108, 138, - -1, 17, 139, 108, 138, 108, 138, 108, 138, -1, - 15, 139, 108, 138, 108, 134, 108, 135, -1, 20, - 138, -1, 83, 244, -1, 84, -1, 85, -1, 86, - -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, - -1, 92, -1, 93, -1, 94, -1, 95, -1, 21, - 139, 108, 144, 108, 141, -1, 230, 144, 156, -1, - 230, 144, 157, -1, 145, 158, -1, 153, 155, -1, - 142, 108, 142, 108, 142, 108, 142, -1, 230, 143, - -1, 23, -1, 99, -1, 99, -1, 161, -1, 146, - 109, 147, 110, -1, 175, -1, 237, -1, 99, -1, - 99, -1, 148, -1, 149, -1, 23, -1, 153, 154, - 150, -1, -1, 111, 151, -1, 112, 152, -1, 23, - -1, 23, -1, 99, -1, 103, -1, 103, -1, 103, - -1, 103, -1, 100, -1, 104, -1, -1, 100, -1, - 101, -1, 102, -1, 103, -1, -1, 160, -1, 167, - -1, 231, -1, 233, -1, 236, -1, 249, -1, 7, - 99, 113, 161, -1, 96, 162, -1, 38, 166, -1, - 60, -1, 98, 164, -1, 53, -1, 29, 242, -1, - 37, -1, 74, 243, -1, 50, 109, 165, 110, -1, - 97, 109, 163, 110, -1, 23, -1, -1, 109, 165, - 110, -1, 23, -1, 60, -1, 29, 242, -1, 37, - -1, 74, 243, -1, 168, -1, 169, -1, 10, 99, - 171, -1, 10, 99, 109, 170, 110, 172, -1, -1, - 23, -1, 113, 174, -1, 113, 114, 173, 115, -1, - 176, -1, 173, 108, 176, -1, 178, -1, 214, -1, - 224, -1, 178, -1, 214, -1, 225, -1, 177, -1, - 215, -1, 224, -1, 178, -1, 73, 202, -1, 73, - 179, -1, 73, 181, -1, 73, 184, -1, 73, 186, - -1, 73, 192, -1, 73, 188, -1, 73, 195, -1, - 73, 197, -1, 73, 199, -1, 73, 201, -1, 73, - 213, -1, 47, 241, 180, -1, 190, -1, 33, -1, - 69, -1, 43, 109, 191, 110, 182, -1, 190, -1, - 60, -1, 26, -1, 72, 183, -1, 40, -1, 32, - -1, 44, 185, -1, 25, -1, 241, 67, -1, 45, - 109, 191, 110, 241, 187, -1, 190, -1, 75, 245, - 189, -1, 29, -1, 25, -1, 31, -1, 71, -1, - 23, -1, 76, 243, 193, 194, -1, 35, -1, 54, - -1, 79, -1, 80, -1, 78, -1, 77, -1, 36, - 196, -1, 29, -1, 56, -1, 28, 109, 198, 110, - 57, -1, 23, -1, 58, 200, -1, 70, -1, 26, - -1, 204, 66, 109, 207, 110, -1, 204, 203, -1, - -1, 66, 109, 207, 105, 207, 110, -1, 49, 208, - 205, -1, -1, 206, -1, 41, -1, 82, -1, 42, - -1, 23, -1, 51, 209, -1, 63, -1, 52, -1, - 81, 243, -1, 55, 109, 211, 110, -1, 48, 109, - 212, 110, -1, -1, 210, -1, 23, -1, 23, -1, - 23, -1, 30, 64, -1, 218, -1, 221, -1, 216, - -1, 219, -1, 62, 34, 109, 217, 110, -1, 222, - -1, 222, 105, 222, -1, 62, 34, 109, 222, 110, - -1, 62, 46, 109, 220, 110, -1, 223, -1, 223, - 105, 223, -1, 62, 46, 109, 223, 110, -1, 23, - -1, 23, -1, 226, -1, 228, -1, 227, -1, 228, - -1, 229, -1, 24, -1, 23, -1, 114, 229, 115, - -1, 114, 229, 108, 229, 115, -1, 114, 229, 108, - 229, 108, 229, 115, -1, 114, 229, 108, 229, 108, - 229, 108, 229, 115, -1, 230, 24, -1, 230, 23, - -1, 111, -1, 112, -1, -1, -1, 11, 232, 235, - -1, -1, 5, 234, 235, -1, 235, 108, 99, -1, - 99, -1, 9, 99, 113, 237, -1, 65, 60, -1, - 65, 37, -1, 65, 238, -1, 65, 59, -1, 65, - 74, 243, -1, 65, 30, -1, 29, 239, 240, -1, - -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, - -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, - -1, 109, 246, 110, -1, -1, 109, 247, 110, -1, - -1, 109, 248, 110, -1, 23, -1, 23, -1, 23, - -1, 6, 99, 113, 99, -1 + 129, -1, 130, -1, 131, -1, 137, -1, 132, -1, + 133, -1, 134, -1, 19, 141, 108, 138, -1, 18, + 140, 108, 139, -1, 16, 140, 108, 138, -1, 14, + 140, 108, 138, 108, 138, -1, 13, 140, 108, 139, + 108, 139, -1, 17, 140, 108, 139, 108, 139, 108, + 139, -1, 15, 140, 108, 139, 108, 135, 108, 136, + -1, 20, 139, -1, 22, 140, 108, 139, 108, 139, + 108, 139, 108, 135, 108, 136, -1, 83, 245, -1, + 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, + 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, + 94, -1, 95, -1, 21, 140, 108, 145, 108, 142, + -1, 231, 145, 157, -1, 231, 145, 158, -1, 146, + 159, -1, 154, 156, -1, 143, 108, 143, 108, 143, + 108, 143, -1, 231, 144, -1, 23, -1, 99, -1, + 99, -1, 162, -1, 147, 109, 148, 110, -1, 176, + -1, 238, -1, 99, -1, 99, -1, 149, -1, 150, + -1, 23, -1, 154, 155, 151, -1, -1, 111, 152, + -1, 112, 153, -1, 23, -1, 23, -1, 99, -1, + 103, -1, 103, -1, 103, -1, 103, -1, 100, -1, + 104, -1, -1, 100, -1, 101, -1, 102, -1, 103, + -1, -1, 161, -1, 168, -1, 232, -1, 234, -1, + 237, -1, 250, -1, 7, 99, 113, 162, -1, 96, + 163, -1, 38, 167, -1, 60, -1, 98, 165, -1, + 53, -1, 29, 243, -1, 37, -1, 74, 244, -1, + 50, 109, 166, 110, -1, 97, 109, 164, 110, -1, + 23, -1, -1, 109, 166, 110, -1, 23, -1, 60, + -1, 29, 243, -1, 37, -1, 74, 244, -1, 169, + -1, 170, -1, 10, 99, 172, -1, 10, 99, 109, + 171, 110, 173, -1, -1, 23, -1, 113, 175, -1, + 113, 114, 174, 115, -1, 177, -1, 174, 108, 177, + -1, 179, -1, 215, -1, 225, -1, 179, -1, 215, + -1, 226, -1, 178, -1, 216, -1, 225, -1, 179, + -1, 73, 203, -1, 73, 180, -1, 73, 182, -1, + 73, 185, -1, 73, 187, -1, 73, 193, -1, 73, + 189, -1, 73, 196, -1, 73, 198, -1, 73, 200, + -1, 73, 202, -1, 73, 214, -1, 47, 242, 181, + -1, 191, -1, 33, -1, 69, -1, 43, 109, 192, + 110, 183, -1, 191, -1, 60, -1, 26, -1, 72, + 184, -1, 40, -1, 32, -1, 44, 186, -1, 25, + -1, 242, 67, -1, 45, 109, 192, 110, 242, 188, + -1, 191, -1, 75, 246, 190, -1, 29, -1, 25, + -1, 31, -1, 71, -1, 23, -1, 76, 244, 194, + 195, -1, 35, -1, 54, -1, 79, -1, 80, -1, + 78, -1, 77, -1, 36, 197, -1, 29, -1, 56, + -1, 28, 109, 199, 110, 57, -1, 23, -1, 58, + 201, -1, 70, -1, 26, -1, 205, 66, 109, 208, + 110, -1, 205, 204, -1, -1, 66, 109, 208, 105, + 208, 110, -1, 49, 209, 206, -1, -1, 207, -1, + 41, -1, 82, -1, 42, -1, 23, -1, 51, 210, + -1, 63, -1, 52, -1, 81, 244, -1, 55, 109, + 212, 110, -1, 48, 109, 213, 110, -1, -1, 211, + -1, 23, -1, 23, -1, 23, -1, 30, 64, -1, + 219, -1, 222, -1, 217, -1, 220, -1, 62, 34, + 109, 218, 110, -1, 223, -1, 223, 105, 223, -1, + 62, 34, 109, 223, 110, -1, 62, 46, 109, 221, + 110, -1, 224, -1, 224, 105, 224, -1, 62, 46, + 109, 224, 110, -1, 23, -1, 23, -1, 227, -1, + 229, -1, 228, -1, 229, -1, 230, -1, 24, -1, + 23, -1, 114, 230, 115, -1, 114, 230, 108, 230, + 115, -1, 114, 230, 108, 230, 108, 230, 115, -1, + 114, 230, 108, 230, 108, 230, 108, 230, 115, -1, + 231, 24, -1, 231, 23, -1, 111, -1, 112, -1, + -1, -1, 11, 233, 236, -1, -1, 5, 235, 236, + -1, 236, 108, 99, -1, 99, -1, 9, 99, 113, + 238, -1, 65, 60, -1, 65, 37, -1, 65, 239, + -1, 65, 59, -1, 65, 74, 244, -1, 65, 30, + -1, 29, 240, 241, -1, -1, 39, -1, 27, -1, + -1, 61, -1, 68, -1, -1, 39, -1, 27, -1, + -1, 61, -1, 68, -1, -1, 109, 247, 110, -1, + -1, 109, 248, 110, -1, -1, 109, 249, 110, -1, + 23, -1, 23, -1, 23, -1, 6, 99, 113, 99, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -766,31 +768,31 @@ static const yytype_uint16 yyrline[] = { 0, 256, 256, 259, 267, 279, 280, 283, 305, 306, 309, 324, 327, 332, 339, 340, 341, 342, 343, 344, - 345, 348, 349, 352, 358, 365, 372, 380, 387, 395, - 440, 447, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 464, 467, 480, 493, 506, 528, 537, - 570, 577, 592, 642, 684, 695, 716, 726, 732, 763, - 780, 780, 782, 789, 801, 802, 803, 806, 818, 830, - 848, 859, 871, 873, 874, 875, 876, 879, 879, 879, - 879, 880, 883, 884, 885, 886, 887, 888, 891, 909, - 913, 919, 923, 927, 931, 940, 949, 953, 958, 964, - 975, 975, 976, 978, 982, 986, 990, 996, 996, 998, - 1014, 1037, 1040, 1051, 1057, 1063, 1064, 1071, 1077, 1083, - 1091, 1097, 1103, 1111, 1117, 1123, 1131, 1132, 1135, 1136, - 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1148, - 1157, 1161, 1165, 1171, 1180, 1184, 1188, 1197, 1201, 1207, - 1213, 1220, 1225, 1233, 1243, 1245, 1253, 1259, 1263, 1267, - 1273, 1284, 1293, 1297, 1302, 1306, 1310, 1314, 1320, 1327, - 1331, 1337, 1345, 1356, 1363, 1367, 1373, 1383, 1394, 1398, - 1416, 1425, 1428, 1434, 1438, 1442, 1448, 1459, 1464, 1469, - 1474, 1479, 1484, 1492, 1495, 1500, 1513, 1521, 1532, 1540, - 1540, 1542, 1542, 1544, 1554, 1559, 1566, 1576, 1585, 1590, - 1597, 1607, 1617, 1629, 1629, 1630, 1630, 1632, 1642, 1650, - 1660, 1668, 1676, 1685, 1696, 1700, 1706, 1707, 1708, 1711, - 1711, 1714, 1714, 1717, 1723, 1731, 1744, 1753, 1762, 1766, - 1775, 1784, 1795, 1802, 1807, 1816, 1828, 1831, 1840, 1851, - 1852, 1853, 1856, 1857, 1858, 1861, 1862, 1865, 1866, 1869, - 1870, 1873, 1884, 1895, 1906 + 345, 348, 349, 350, 353, 359, 366, 373, 381, 388, + 396, 441, 448, 493, 499, 500, 501, 502, 503, 504, + 505, 506, 507, 508, 509, 510, 513, 526, 539, 552, + 574, 583, 616, 623, 638, 688, 730, 741, 762, 772, + 778, 809, 826, 826, 828, 835, 847, 848, 849, 852, + 864, 876, 894, 905, 917, 919, 920, 921, 922, 925, + 925, 925, 925, 926, 929, 930, 931, 932, 933, 934, + 937, 955, 959, 965, 969, 973, 977, 986, 995, 999, + 1004, 1010, 1021, 1021, 1022, 1024, 1028, 1032, 1036, 1042, + 1042, 1044, 1060, 1083, 1086, 1097, 1103, 1109, 1110, 1117, + 1123, 1129, 1137, 1143, 1149, 1157, 1163, 1169, 1177, 1178, + 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, + 1191, 1194, 1203, 1207, 1211, 1217, 1226, 1230, 1234, 1243, + 1247, 1253, 1259, 1266, 1271, 1279, 1289, 1291, 1299, 1305, + 1309, 1313, 1319, 1330, 1339, 1343, 1348, 1352, 1356, 1360, + 1366, 1373, 1377, 1383, 1391, 1402, 1409, 1413, 1419, 1429, + 1440, 1444, 1462, 1471, 1474, 1480, 1484, 1488, 1494, 1505, + 1510, 1515, 1520, 1525, 1530, 1538, 1541, 1546, 1559, 1567, + 1578, 1586, 1586, 1588, 1588, 1590, 1600, 1605, 1612, 1622, + 1631, 1636, 1643, 1653, 1663, 1675, 1675, 1676, 1676, 1678, + 1688, 1696, 1706, 1714, 1722, 1731, 1742, 1746, 1752, 1753, + 1754, 1757, 1757, 1760, 1760, 1763, 1769, 1777, 1790, 1799, + 1808, 1812, 1821, 1830, 1841, 1848, 1853, 1862, 1874, 1877, + 1886, 1897, 1898, 1899, 1902, 1903, 1904, 1907, 1908, 1911, + 1912, 1915, 1916, 1919, 1930, 1941, 1952 }; #endif @@ -822,24 +824,24 @@ static const char *const yytname[] = "TexInstruction", "ARL_instruction", "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", "KIL_instruction", - "texImageUnit", "texTarget", "SWZ_instruction", "scalarSrcReg", - "swizzleSrcReg", "maskedDstReg", "maskedAddrReg", "extendedSwizzle", - "extSwizComp", "extSwizSel", "srcReg", "dstReg", "progParamArray", - "progParamArrayMem", "progParamArrayAbs", "progParamArrayRel", - "addrRegRelOffset", "addrRegPosOffset", "addrRegNegOffset", "addrReg", - "addrComponent", "addrWriteMask", "scalarSuffix", "swizzleSuffix", - "optionalMask", "namingStatement", "ATTRIB_statement", "attribBinding", - "vtxAttribItem", "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", - "fragAttribItem", "PARAM_statement", "PARAM_singleStmt", - "PARAM_multipleStmt", "optArraySize", "paramSingleInit", - "paramMultipleInit", "paramMultInitList", "paramSingleItemDecl", - "paramSingleItemUse", "paramMultipleItem", "stateMultipleItem", - "stateSingleItem", "stateMaterialItem", "stateMatProperty", - "stateLightItem", "stateLightProperty", "stateSpotProperty", - "stateLightModelItem", "stateLModProperty", "stateLightProdItem", - "stateLProdProperty", "stateTexEnvItem", "stateTexEnvProperty", - "ambDiffSpecProperty", "stateLightNumber", "stateTexGenItem", - "stateTexGenType", "stateTexGenCoord", "stateFogItem", + "TXD_instruction", "texImageUnit", "texTarget", "SWZ_instruction", + "scalarSrcReg", "swizzleSrcReg", "maskedDstReg", "maskedAddrReg", + "extendedSwizzle", "extSwizComp", "extSwizSel", "srcReg", "dstReg", + "progParamArray", "progParamArrayMem", "progParamArrayAbs", + "progParamArrayRel", "addrRegRelOffset", "addrRegPosOffset", + "addrRegNegOffset", "addrReg", "addrComponent", "addrWriteMask", + "scalarSuffix", "swizzleSuffix", "optionalMask", "namingStatement", + "ATTRIB_statement", "attribBinding", "vtxAttribItem", "vtxAttribNum", + "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", "PARAM_statement", + "PARAM_singleStmt", "PARAM_multipleStmt", "optArraySize", + "paramSingleInit", "paramMultipleInit", "paramMultInitList", + "paramSingleItemDecl", "paramSingleItemUse", "paramMultipleItem", + "stateMultipleItem", "stateSingleItem", "stateMaterialItem", + "stateMatProperty", "stateLightItem", "stateLightProperty", + "stateSpotProperty", "stateLightModelItem", "stateLModProperty", + "stateLightProdItem", "stateLProdProperty", "stateTexEnvItem", + "stateTexEnvProperty", "ambDiffSpecProperty", "stateLightNumber", + "stateTexGenItem", "stateTexGenType", "stateTexGenCoord", "stateFogItem", "stateFogProperty", "stateClipPlaneItem", "stateClipPlaneNum", "statePointItem", "statePointProperty", "stateMatrixRow", "stateMatrixRows", "optMatrixRows", "stateMatrixItem", @@ -886,31 +888,31 @@ static const yytype_uint8 yyr1[] = { 0, 116, 117, 118, 118, 119, 119, 120, 121, 121, 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, - 124, 125, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 135, 135, 135, 135, 135, 135, 135, - 135, 135, 135, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 143, 144, 144, 144, 144, 145, 145, 146, - 147, 147, 148, 149, 150, 150, 150, 151, 152, 153, - 154, 155, 156, 157, 157, 157, 157, 158, 158, 158, - 158, 158, 159, 159, 159, 159, 159, 159, 160, 161, - 161, 162, 162, 162, 162, 162, 162, 162, 162, 163, - 164, 164, 165, 166, 166, 166, 166, 167, 167, 168, - 169, 170, 170, 171, 172, 173, 173, 174, 174, 174, - 175, 175, 175, 176, 176, 176, 177, 177, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 179, - 180, 180, 180, 181, 182, 182, 182, 182, 182, 183, - 184, 185, 185, 186, 187, 188, 189, 190, 190, 190, - 191, 192, 193, 193, 194, 194, 194, 194, 195, 196, - 196, 197, 198, 199, 200, 200, 201, 202, 203, 203, - 204, 205, 205, 206, 206, 206, 207, 208, 208, 208, - 208, 208, 208, 209, 209, 210, 211, 212, 213, 214, - 214, 215, 215, 216, 217, 217, 218, 219, 220, 220, - 221, 222, 223, 224, 224, 225, 225, 226, 227, 227, - 228, 228, 228, 228, 229, 229, 230, 230, 230, 232, - 231, 234, 233, 235, 235, 236, 237, 237, 237, 237, - 237, 237, 238, 239, 239, 239, 240, 240, 240, 241, - 241, 241, 242, 242, 242, 243, 243, 244, 244, 245, - 245, 246, 247, 248, 249 + 124, 125, 125, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 136, 136, 136, 136, 136, + 136, 136, 136, 136, 136, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 144, 145, 145, 145, 145, 146, + 146, 147, 148, 148, 149, 150, 151, 151, 151, 152, + 153, 154, 155, 156, 157, 158, 158, 158, 158, 159, + 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, + 161, 162, 162, 163, 163, 163, 163, 163, 163, 163, + 163, 164, 165, 165, 166, 167, 167, 167, 167, 168, + 168, 169, 170, 171, 171, 172, 173, 174, 174, 175, + 175, 175, 176, 176, 176, 177, 177, 177, 178, 178, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 180, 181, 181, 181, 182, 183, 183, 183, 183, + 183, 184, 185, 186, 186, 187, 188, 189, 190, 191, + 191, 191, 192, 193, 194, 194, 195, 195, 195, 195, + 196, 197, 197, 198, 199, 200, 201, 201, 202, 203, + 204, 204, 205, 206, 206, 207, 207, 207, 208, 209, + 209, 209, 209, 209, 209, 210, 210, 211, 212, 213, + 214, 215, 215, 216, 216, 217, 218, 218, 219, 220, + 221, 221, 222, 223, 224, 225, 225, 226, 226, 227, + 228, 228, 229, 229, 229, 229, 230, 230, 231, 231, + 231, 233, 232, 235, 234, 236, 236, 237, 238, 238, + 238, 238, 238, 238, 239, 240, 240, 240, 241, 241, + 241, 242, 242, 242, 243, 243, 243, 244, 244, 245, + 245, 246, 246, 247, 248, 249, 250 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -918,31 +920,31 @@ static const yytype_uint8 yyr2[] = { 0, 2, 4, 1, 1, 2, 0, 3, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 4, 4, 6, 6, 8, 8, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 6, 3, 3, 2, 2, 7, - 2, 1, 1, 1, 1, 4, 1, 1, 1, 1, - 1, 1, 1, 3, 0, 2, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, - 1, 0, 1, 1, 1, 1, 1, 1, 4, 2, - 2, 1, 2, 1, 2, 1, 2, 4, 4, 1, - 0, 3, 1, 1, 2, 1, 2, 1, 1, 3, - 6, 0, 1, 2, 4, 1, 3, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, - 1, 1, 1, 5, 1, 1, 1, 2, 1, 1, - 2, 1, 2, 6, 1, 3, 1, 1, 1, 1, - 1, 4, 1, 1, 1, 1, 1, 1, 2, 1, - 1, 5, 1, 2, 1, 1, 5, 2, 0, 6, - 3, 0, 1, 1, 1, 1, 1, 2, 1, 1, - 2, 4, 4, 0, 1, 1, 1, 1, 2, 1, - 1, 1, 1, 5, 1, 3, 5, 5, 1, 3, - 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 5, 7, 9, 2, 2, 1, 1, 0, 0, - 3, 0, 3, 3, 1, 4, 2, 2, 2, 2, - 3, 2, 3, 0, 1, 1, 0, 1, 1, 0, - 1, 1, 0, 1, 1, 0, 3, 0, 3, 0, - 3, 1, 1, 1, 4 + 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, + 8, 2, 12, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 6, 3, 3, 2, + 2, 7, 2, 1, 1, 1, 1, 4, 1, 1, + 1, 1, 1, 1, 1, 3, 0, 2, 2, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, + 4, 2, 2, 1, 2, 1, 2, 1, 2, 4, + 4, 1, 0, 3, 1, 1, 2, 1, 2, 1, + 1, 3, 6, 0, 1, 2, 4, 1, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 1, 1, 1, 5, 1, 1, 1, 2, + 1, 1, 2, 1, 2, 6, 1, 3, 1, 1, + 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, + 2, 1, 1, 5, 1, 2, 1, 1, 5, 2, + 0, 6, 3, 0, 1, 1, 1, 1, 1, 2, + 1, 1, 2, 4, 4, 0, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 5, 1, 3, 5, 5, + 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 3, 5, 7, 9, 2, 2, 1, 1, + 0, 0, 3, 0, 3, 3, 1, 4, 2, 2, + 2, 2, 3, 2, 3, 0, 1, 1, 0, 1, + 1, 0, 1, 1, 0, 1, 1, 0, 3, 0, + 3, 0, 3, 1, 1, 1, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -951,221 +953,223 @@ static const yytype_uint8 yyr2[] = static const yytype_uint16 yydefact[] = { 0, 3, 4, 0, 6, 1, 9, 0, 5, 0, - 0, 231, 0, 0, 0, 0, 229, 2, 0, 0, - 0, 0, 0, 0, 0, 228, 0, 8, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 21, 22, 20, - 0, 82, 83, 107, 108, 84, 85, 86, 87, 7, - 0, 0, 0, 0, 0, 0, 0, 58, 0, 81, - 57, 0, 0, 0, 0, 0, 69, 0, 0, 226, - 227, 30, 0, 0, 10, 11, 234, 232, 0, 0, - 0, 111, 228, 109, 230, 243, 241, 237, 239, 236, - 255, 238, 228, 77, 78, 79, 80, 47, 228, 228, - 228, 228, 228, 228, 71, 48, 219, 218, 0, 0, - 0, 0, 53, 228, 76, 0, 54, 56, 120, 121, - 199, 200, 122, 215, 216, 0, 0, 264, 88, 235, - 112, 0, 113, 117, 118, 119, 213, 214, 217, 0, - 245, 244, 246, 0, 240, 0, 0, 0, 0, 25, - 0, 24, 23, 252, 105, 103, 255, 90, 0, 0, - 0, 0, 0, 0, 249, 0, 249, 0, 0, 259, - 255, 128, 129, 130, 131, 133, 132, 134, 135, 136, - 137, 0, 138, 252, 95, 0, 93, 91, 255, 0, - 100, 89, 0, 74, 73, 75, 46, 0, 0, 233, - 0, 225, 224, 247, 248, 242, 261, 0, 228, 228, - 0, 0, 228, 253, 254, 104, 106, 0, 0, 0, - 198, 169, 170, 168, 0, 151, 251, 250, 150, 0, - 0, 0, 0, 193, 189, 0, 188, 255, 181, 175, - 174, 173, 0, 0, 0, 0, 94, 0, 96, 0, - 0, 92, 228, 220, 62, 0, 60, 61, 0, 228, - 0, 110, 256, 27, 26, 72, 45, 257, 0, 0, - 211, 0, 212, 0, 172, 0, 160, 0, 152, 0, - 157, 158, 141, 142, 159, 139, 140, 0, 195, 187, - 194, 0, 190, 183, 185, 184, 180, 182, 263, 0, - 156, 155, 162, 163, 0, 0, 102, 0, 99, 0, - 0, 0, 55, 70, 64, 44, 0, 0, 228, 0, - 31, 0, 228, 206, 210, 0, 0, 249, 197, 0, - 196, 0, 260, 167, 166, 164, 165, 161, 186, 0, - 97, 98, 101, 228, 221, 0, 0, 63, 228, 51, - 52, 50, 0, 0, 0, 115, 123, 126, 124, 201, - 202, 125, 262, 0, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 29, 28, 171, 146, - 148, 145, 0, 143, 144, 0, 192, 191, 176, 0, - 67, 65, 68, 66, 0, 0, 0, 127, 178, 228, - 114, 258, 149, 147, 153, 154, 228, 222, 228, 0, - 0, 0, 177, 116, 0, 0, 0, 204, 0, 208, - 0, 223, 228, 203, 0, 207, 0, 0, 49, 205, - 209, 0, 0, 179 + 0, 233, 0, 0, 0, 0, 231, 2, 0, 0, + 0, 0, 0, 0, 0, 230, 0, 0, 8, 0, + 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, + 23, 20, 0, 84, 85, 109, 110, 86, 87, 88, + 89, 7, 0, 0, 0, 0, 0, 0, 0, 60, + 0, 83, 59, 0, 0, 0, 0, 0, 71, 0, + 0, 228, 229, 31, 0, 0, 0, 10, 11, 236, + 234, 0, 0, 0, 113, 230, 111, 232, 245, 243, + 239, 241, 238, 257, 240, 230, 79, 80, 81, 82, + 49, 230, 230, 230, 230, 230, 230, 73, 50, 221, + 220, 0, 0, 0, 0, 55, 230, 78, 0, 56, + 58, 122, 123, 201, 202, 124, 217, 218, 0, 230, + 0, 266, 90, 237, 114, 0, 115, 119, 120, 121, + 215, 216, 219, 0, 247, 246, 248, 0, 242, 0, + 0, 0, 0, 26, 0, 25, 24, 254, 107, 105, + 257, 92, 0, 0, 0, 0, 0, 0, 251, 0, + 251, 0, 0, 261, 257, 130, 131, 132, 133, 135, + 134, 136, 137, 138, 139, 0, 140, 254, 97, 0, + 95, 93, 257, 0, 102, 91, 0, 76, 75, 77, + 48, 0, 0, 0, 235, 0, 227, 226, 249, 250, + 244, 263, 0, 230, 230, 0, 0, 230, 255, 256, + 106, 108, 0, 0, 0, 200, 171, 172, 170, 0, + 153, 253, 252, 152, 0, 0, 0, 0, 195, 191, + 0, 190, 257, 183, 177, 176, 175, 0, 0, 0, + 0, 96, 0, 98, 0, 0, 94, 230, 222, 64, + 0, 62, 63, 0, 230, 230, 0, 112, 258, 28, + 27, 74, 47, 259, 0, 0, 213, 0, 214, 0, + 174, 0, 162, 0, 154, 0, 159, 160, 143, 144, + 161, 141, 142, 0, 197, 189, 196, 0, 192, 185, + 187, 186, 182, 184, 265, 0, 158, 157, 164, 165, + 0, 0, 104, 0, 101, 0, 0, 0, 57, 72, + 66, 46, 0, 0, 0, 230, 0, 33, 0, 230, + 208, 212, 0, 0, 251, 199, 0, 198, 0, 262, + 169, 168, 166, 167, 163, 188, 0, 99, 100, 103, + 230, 223, 0, 0, 65, 230, 53, 54, 52, 230, + 0, 0, 0, 117, 125, 128, 126, 203, 204, 127, + 264, 0, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 30, 29, 173, 148, 150, 147, + 0, 145, 146, 0, 194, 193, 178, 0, 69, 67, + 70, 68, 0, 0, 0, 0, 129, 180, 230, 116, + 260, 151, 149, 155, 156, 230, 224, 230, 0, 0, + 0, 0, 179, 118, 0, 0, 0, 0, 206, 0, + 210, 0, 225, 230, 0, 205, 0, 209, 0, 0, + 51, 32, 207, 211, 0, 0, 181 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 3, 4, 6, 8, 9, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 268, 376, - 39, 146, 71, 58, 67, 315, 316, 351, 114, 59, - 115, 255, 256, 257, 347, 391, 393, 68, 314, 105, - 266, 196, 97, 40, 41, 116, 191, 309, 251, 307, - 157, 42, 43, 44, 131, 83, 261, 354, 132, 117, - 355, 356, 118, 171, 285, 172, 383, 403, 173, 228, - 174, 404, 175, 301, 286, 277, 176, 304, 337, 177, - 223, 178, 275, 179, 241, 180, 397, 412, 181, 296, - 297, 339, 238, 289, 290, 331, 329, 182, 119, 358, - 359, 416, 120, 360, 418, 121, 271, 273, 361, 122, - 136, 123, 124, 138, 72, 45, 55, 46, 50, 77, - 47, 60, 91, 142, 205, 229, 215, 144, 320, 243, - 207, 363, 299, 48 + -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 274, + 384, 41, 150, 73, 60, 69, 321, 322, 358, 117, + 61, 118, 260, 261, 262, 354, 399, 401, 70, 320, + 108, 272, 200, 100, 42, 43, 119, 195, 315, 256, + 313, 161, 44, 45, 46, 135, 86, 267, 362, 136, + 120, 363, 364, 121, 175, 291, 176, 391, 412, 177, + 233, 178, 413, 179, 307, 292, 283, 180, 310, 344, + 181, 228, 182, 281, 183, 246, 184, 406, 422, 185, + 302, 303, 346, 243, 295, 296, 338, 336, 186, 122, + 366, 367, 427, 123, 368, 429, 124, 277, 279, 369, + 125, 140, 126, 127, 142, 74, 47, 57, 48, 52, + 80, 49, 62, 94, 146, 210, 234, 220, 148, 327, + 248, 212, 371, 305, 50 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -334 +#define YYPACT_NINF -384 static const yytype_int16 yypact[] = { - 134, -334, -334, 41, -334, -334, 47, -50, -334, 169, - 19, -334, 33, 60, 74, 114, -334, -334, -20, -20, - -20, -20, -20, -20, 115, 43, -20, -334, 108, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - 109, -334, -334, -334, -334, -334, -334, -334, -334, -334, - 118, 105, 106, 110, -23, 118, 3, -334, 4, 103, - -334, 112, 113, 116, 117, 119, -334, 120, 123, -334, - -334, -334, -16, 121, -334, -334, -334, 122, 132, -15, - 157, 209, -12, -334, 122, 20, -334, -334, -334, -334, - 131, -334, 43, -334, -334, -334, -334, -334, 43, 43, - 43, 43, 43, 43, -334, -334, -334, -334, 0, 67, - 86, -2, 133, 43, 64, 135, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -16, 136, -334, -334, -334, - -334, 129, -334, -334, -334, -334, -334, -334, -334, 148, - -334, -334, 57, 218, -334, 137, 138, -16, 139, -334, - 140, -334, -334, 73, -334, -334, 131, -334, 141, 142, - 143, 179, 14, 144, 80, 145, 82, 88, -1, 146, - 131, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -334, 183, -334, 73, -334, 147, -334, -334, 131, 149, - 150, -334, 42, -334, -334, -334, -334, -11, 152, -334, - 151, -334, -334, -334, -334, -334, -334, 153, 43, 43, - 154, 182, 43, -334, -334, -334, -334, 239, 244, 245, - -334, -334, -334, -334, 246, -334, -334, -334, -334, 203, - 246, -5, 162, 249, -334, 164, -334, 131, 26, -334, - -334, -334, 251, 247, 17, 166, -334, 254, -334, 255, - 254, -334, 43, -334, -334, 170, -334, -334, 176, 43, - 167, -334, -334, -334, -334, -334, -334, 173, 175, 177, - -334, 174, -334, 178, -334, 180, -334, 181, -334, 184, - -334, -334, -334, -334, -334, -334, -334, 263, -334, -334, - -334, 264, -334, -334, -334, -334, -334, -334, -334, 185, - -334, -334, -334, -334, 130, 266, -334, 187, -334, 188, - 189, 45, -334, -334, 100, -334, 192, -6, -8, 269, - -334, 107, 43, -334, -334, 236, 13, 82, -334, 191, - -334, 193, -334, -334, -334, -334, -334, -334, -334, 194, - -334, -334, -334, 43, -334, 279, 282, -334, 43, -334, - -334, -334, 77, 86, 48, -334, -334, -334, -334, -334, - -334, -334, -334, 196, -334, -334, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -334, -334, 275, -334, -334, 5, -334, -334, -334, 50, - -334, -334, -334, -334, 200, 201, 202, -334, 243, -8, - -334, -334, -334, -334, -334, -334, 43, -334, 43, 239, - 244, 204, -334, -334, 197, 206, 205, 211, 210, 216, - 266, -334, 43, -334, 239, -334, 244, -18, -334, -334, - -334, 266, 212, -334 + 167, -384, -384, 37, -384, -384, 60, -70, -384, 171, + -23, -384, -13, 9, 12, 63, -384, -384, -33, -33, + -33, -33, -33, -33, 67, 104, -33, -33, -384, 66, + -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, + -384, -384, 68, -384, -384, -384, -384, -384, -384, -384, + -384, -384, 115, 109, 111, 112, -4, 115, 22, -384, + 113, 106, -384, 118, 120, 121, 122, 123, -384, 124, + 130, -384, -384, -384, -16, 126, 127, -384, -384, -384, + 128, 140, -18, 158, 204, -39, -384, 128, 26, -384, + -384, -384, -384, 134, -384, 104, -384, -384, -384, -384, + -384, 104, 104, 104, 104, 104, 104, -384, -384, -384, + -384, 73, 84, 76, -10, 135, 104, 64, 136, -384, + -384, -384, -384, -384, -384, -384, -384, -384, -16, 104, + 147, -384, -384, -384, -384, 137, -384, -384, -384, -384, + -384, -384, -384, 194, -384, -384, 46, 225, -384, 141, + 142, -16, 143, -384, 144, -384, -384, 87, -384, -384, + 134, -384, 145, 146, 148, 189, 15, 149, 88, 150, + 97, 80, 0, 151, 134, -384, -384, -384, -384, -384, + -384, -384, -384, -384, -384, 190, -384, 87, -384, 152, + -384, -384, 134, 153, 154, -384, 42, -384, -384, -384, + -384, -8, 156, 159, -384, 160, -384, -384, -384, -384, + -384, -384, 161, 104, 104, 163, 186, 104, -384, -384, + -384, -384, 249, 251, 252, -384, -384, -384, -384, 253, + -384, -384, -384, -384, 210, 253, 8, 169, 256, -384, + 172, -384, 134, 21, -384, -384, -384, 257, 254, -7, + 173, -384, 261, -384, 262, 261, -384, 104, -384, -384, + 176, -384, -384, 184, 104, 104, 174, -384, -384, -384, + -384, -384, -384, 180, 182, 183, -384, 185, -384, 187, + -384, 188, -384, 191, -384, 193, -384, -384, -384, -384, + -384, -384, -384, 269, -384, -384, -384, 270, -384, -384, + -384, -384, -384, -384, -384, 195, -384, -384, -384, -384, + 133, 271, -384, 196, -384, 197, 198, 45, -384, -384, + 108, -384, 192, -6, 201, -17, 273, -384, 110, 104, + -384, -384, 242, 29, 97, -384, 200, -384, 202, -384, + -384, -384, -384, -384, -384, -384, 203, -384, -384, -384, + 104, -384, 281, 288, -384, 104, -384, -384, -384, 104, + 103, 76, 48, -384, -384, -384, -384, -384, -384, -384, + -384, 205, -384, -384, -384, -384, -384, -384, -384, -384, + -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, + 282, -384, -384, 5, -384, -384, -384, 50, -384, -384, + -384, -384, 208, 209, 211, 212, -384, 260, -17, -384, + -384, -384, -384, -384, -384, 104, -384, 104, 186, 249, + 251, 213, -384, -384, 214, 219, 220, 221, 228, 224, + 230, 271, -384, 104, 110, -384, 249, -384, 251, 49, + -384, -384, -384, -384, 271, 226, -384 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -334, -94, -88, 126, -334, -334, -333, -334, -91, -334, - -334, -334, -334, -334, -334, -334, -334, 128, -334, -334, - -334, -334, -334, -334, -334, 248, -334, -334, -334, 78, - -334, -334, -334, -334, -334, -334, -334, -334, -334, -334, - -76, -334, -81, -334, -334, -334, -334, -334, -334, -334, - -334, -334, -334, -334, -307, 99, -334, -334, -334, -334, - -334, -334, -334, -334, -334, -334, -334, -334, -22, -334, - -334, -303, -334, -334, -334, -334, -334, -334, 250, -334, - -334, -334, -334, -334, -334, -334, -327, -316, 252, -334, - -334, -334, -80, -110, -82, -334, -334, -334, -334, 278, - -334, 256, -334, -334, -334, -161, 155, -146, -334, -334, - -334, -334, -334, -334 + -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, + -384, -384, -384, -384, -384, -384, -384, -384, -384, -100, + -115, -384, -97, -91, 119, -384, -384, -343, -384, -93, + -384, -384, -384, -384, -384, -384, -384, -384, 138, -384, + -384, -384, -384, -384, -384, -384, 255, -384, -384, -384, + 83, -384, -384, -384, -384, -384, -384, -384, -384, -384, + -384, -68, -384, -84, -384, -384, -384, -384, -384, -384, + -384, -384, -384, -384, -384, -308, 107, -384, -384, -384, + -384, -384, -384, -384, -384, -384, -384, -384, -384, -20, + -384, -384, -383, -384, -384, -384, -384, -384, -384, 258, + -384, -384, -384, -384, -384, -384, -384, -320, -371, 259, + -384, -384, -384, -83, -113, -85, -384, -384, -384, -384, + 289, -384, 264, -384, -384, -384, -165, 162, -150, -384, + -384, -384, -384, -384, -384 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -60 +#define YYTABLE_NINF -62 static const yytype_int16 yytable[] = { - 139, 133, 137, 192, 145, 231, 149, 106, 107, 152, - 216, 148, 254, 150, 151, 394, 147, 349, 147, 384, - 280, 147, 108, 108, 244, 239, 281, 183, 282, 153, - 280, 139, 85, 86, 198, 184, 281, 154, 280, 379, - 87, 5, 248, 221, 281, 56, 109, 140, 185, 10, - 109, 186, 302, 380, 352, 7, 210, 110, 187, 141, - 155, 110, 88, 89, 283, 353, 284, 293, 294, 240, - 222, 303, 188, 381, 156, 415, 284, 90, 405, 57, - 111, 111, 417, 112, 284, 382, 81, 431, 66, 428, - 82, 292, 388, 350, 419, 189, 190, 429, 113, 69, - 70, 158, 113, 69, 70, 225, 113, 226, 295, 226, - 430, 395, 92, 159, 160, 264, 161, 427, 203, 227, - 263, 227, 162, 396, 269, 204, 49, 147, 432, 163, - 164, 165, 51, 166, 213, 167, 232, 1, 2, 233, - 234, 214, 311, 235, 168, 61, 62, 63, 64, 65, - 252, 236, 73, 343, 69, 70, 399, 253, 406, 52, - 344, 169, 170, 400, 193, 407, 385, 194, 195, 237, - 139, 201, 202, 53, 11, 12, 13, 317, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 93, 94, 95, 96, 333, 334, 335, - 336, 345, 346, 54, 66, 74, 75, 76, 78, 79, - 98, 99, 56, 80, 100, 101, 104, 102, 103, 125, - 126, 127, 130, 389, 377, 199, 139, 357, 137, 200, - 143, 206, -59, 220, 197, 208, 209, 211, 212, 245, - 217, 218, 219, 224, 230, 242, 247, 265, 249, 250, - 259, 139, 270, 262, 260, 267, 317, 272, 274, 276, - 278, 287, 288, 291, 298, 305, 300, 306, 308, 313, - 312, 318, 319, 321, 323, 322, 328, 330, 324, 338, - 325, 326, 362, 378, 327, 332, 414, 340, 341, 342, - 348, 386, 390, 387, 388, 392, 401, 402, 408, 411, - 409, 410, 421, 420, 422, 423, 424, 139, 357, 137, - 425, 426, 433, 413, 139, 258, 317, 128, 310, 279, - 0, 398, 134, 84, 135, 0, 129, 0, 246, 0, - 317 + 143, 137, 141, 196, 149, 236, 153, 109, 110, 156, + 221, 152, 402, 154, 155, 259, 151, 356, 151, 187, + 111, 151, 111, 112, 249, 392, 244, 188, 308, 10, + 286, 143, 58, 286, 113, 202, 287, 5, 203, 287, + 189, 288, 253, 190, 226, 360, 112, 309, 439, 430, + 191, 88, 89, 144, 286, 387, 361, 113, 215, 90, + 287, 445, 299, 300, 192, 145, 59, 443, 7, 388, + 245, 227, 71, 72, 425, 116, 290, 289, 114, 290, + 114, 91, 92, 115, 51, 414, 53, 193, 194, 389, + 440, 68, 298, 357, 71, 72, 93, 116, 116, 428, + 290, 390, 157, 301, 164, 84, 165, 208, 54, 85, + 158, 55, 166, 230, 209, 231, 442, 270, 162, 167, + 168, 169, 269, 170, 231, 171, 275, 232, 237, 151, + 163, 238, 239, 159, 172, 240, 232, 404, 63, 64, + 65, 66, 67, 241, 317, 75, 76, 160, 218, 405, + 257, 173, 174, 350, 444, 219, 408, 258, 415, 396, + 351, 242, 56, 409, 197, 416, 68, 198, 199, 393, + 1, 2, 143, 77, 324, 78, 11, 12, 13, 323, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 96, 97, 98, 99, + 340, 341, 342, 343, 79, 71, 72, 206, 207, 352, + 353, 95, 81, 58, 82, 83, 101, 134, 102, 103, + 104, 105, 106, 107, 128, 129, 130, 397, 385, 131, + 143, 365, 141, 147, -61, 201, 204, 205, 211, 213, + 214, 216, 217, 225, 222, 223, 250, 224, 229, 235, + 247, 252, 254, 255, 264, 143, 271, 265, 403, 273, + 323, 268, 276, 266, 278, 280, 282, 284, 293, 294, + 304, 297, 311, 306, 312, 314, 318, 319, 325, 326, + 328, 329, 335, 337, 345, 330, 370, 331, 332, 386, + 355, 333, 424, 334, 398, 339, 347, 348, 349, 359, + 394, 400, 395, 396, 411, 410, 417, 418, 426, 441, + 419, 420, 431, 143, 365, 141, 421, 433, 434, 432, + 143, 435, 323, 436, 437, 438, 446, 132, 316, 263, + 423, 407, 285, 138, 139, 0, 87, 133, 323, 251 }; static const yytype_int16 yycheck[] = { - 82, 82, 82, 113, 92, 166, 100, 23, 24, 103, - 156, 99, 23, 101, 102, 348, 98, 23, 100, 326, - 25, 103, 38, 38, 170, 26, 31, 29, 33, 29, - 25, 113, 29, 30, 125, 37, 31, 37, 25, 26, - 37, 0, 188, 29, 31, 65, 62, 27, 50, 99, - 62, 53, 35, 40, 62, 8, 147, 73, 60, 39, - 60, 73, 59, 60, 69, 73, 71, 41, 42, 70, - 56, 54, 74, 60, 74, 408, 71, 74, 385, 99, - 96, 96, 409, 99, 71, 72, 109, 105, 99, 422, - 113, 237, 110, 99, 410, 97, 98, 424, 114, 111, - 112, 34, 114, 111, 112, 25, 114, 27, 82, 27, - 426, 34, 108, 46, 28, 209, 30, 420, 61, 39, - 208, 39, 36, 46, 212, 68, 107, 209, 431, 43, - 44, 45, 99, 47, 61, 49, 48, 3, 4, 51, - 52, 68, 252, 55, 58, 19, 20, 21, 22, 23, - 108, 63, 26, 108, 111, 112, 108, 115, 108, 99, - 115, 75, 76, 115, 100, 115, 327, 103, 104, 81, - 252, 23, 24, 99, 5, 6, 7, 259, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 100, 101, 102, 103, 77, 78, 79, - 80, 111, 112, 99, 99, 107, 107, 99, 113, 113, - 108, 108, 65, 113, 108, 108, 103, 108, 108, 108, - 108, 99, 23, 343, 322, 99, 318, 318, 318, 110, - 109, 23, 109, 64, 109, 108, 108, 108, 108, 66, - 109, 109, 109, 109, 109, 109, 109, 103, 109, 109, - 108, 343, 23, 110, 113, 83, 348, 23, 23, 23, - 67, 109, 23, 109, 23, 109, 29, 23, 23, 103, - 110, 114, 109, 108, 110, 108, 23, 23, 110, 23, - 110, 110, 23, 57, 110, 110, 406, 110, 110, 110, - 108, 110, 23, 110, 110, 23, 110, 32, 108, 66, - 109, 109, 115, 109, 108, 110, 105, 399, 399, 399, - 110, 105, 110, 399, 406, 197, 408, 79, 250, 230, - -1, 353, 82, 55, 82, -1, 80, -1, 183, -1, - 422 + 85, 85, 85, 116, 95, 170, 103, 23, 24, 106, + 160, 102, 355, 104, 105, 23, 101, 23, 103, 29, + 38, 106, 38, 62, 174, 333, 26, 37, 35, 99, + 25, 116, 65, 25, 73, 128, 31, 0, 129, 31, + 50, 33, 192, 53, 29, 62, 62, 54, 431, 420, + 60, 29, 30, 27, 25, 26, 73, 73, 151, 37, + 31, 444, 41, 42, 74, 39, 99, 438, 8, 40, + 70, 56, 111, 112, 417, 114, 71, 69, 96, 71, + 96, 59, 60, 99, 107, 393, 99, 97, 98, 60, + 433, 99, 242, 99, 111, 112, 74, 114, 114, 419, + 71, 72, 29, 82, 28, 109, 30, 61, 99, 113, + 37, 99, 36, 25, 68, 27, 436, 214, 34, 43, + 44, 45, 213, 47, 27, 49, 217, 39, 48, 214, + 46, 51, 52, 60, 58, 55, 39, 34, 19, 20, + 21, 22, 23, 63, 257, 26, 27, 74, 61, 46, + 108, 75, 76, 108, 105, 68, 108, 115, 108, 110, + 115, 81, 99, 115, 100, 115, 99, 103, 104, 334, + 3, 4, 257, 107, 265, 107, 5, 6, 7, 264, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 100, 101, 102, 103, + 77, 78, 79, 80, 99, 111, 112, 23, 24, 111, + 112, 108, 113, 65, 113, 113, 108, 23, 108, 108, + 108, 108, 108, 103, 108, 108, 108, 350, 329, 99, + 325, 325, 325, 109, 109, 109, 99, 110, 23, 108, + 108, 108, 108, 64, 109, 109, 66, 109, 109, 109, + 109, 109, 109, 109, 108, 350, 103, 108, 359, 83, + 355, 110, 23, 113, 23, 23, 23, 67, 109, 23, + 23, 109, 109, 29, 23, 23, 110, 103, 114, 109, + 108, 108, 23, 23, 23, 110, 23, 110, 110, 57, + 108, 110, 415, 110, 23, 110, 110, 110, 110, 108, + 110, 23, 110, 110, 32, 110, 108, 108, 418, 434, + 109, 109, 109, 408, 408, 408, 66, 108, 108, 115, + 415, 110, 417, 105, 110, 105, 110, 82, 255, 201, + 408, 361, 235, 85, 85, -1, 57, 83, 433, 187 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1174,48 +1178,49 @@ static const yytype_uint8 yystos[] = { 0, 3, 4, 117, 118, 0, 119, 8, 120, 121, 99, 5, 6, 7, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 136, - 159, 160, 167, 168, 169, 231, 233, 236, 249, 107, - 234, 99, 99, 99, 99, 232, 65, 99, 139, 145, - 237, 139, 139, 139, 139, 139, 99, 140, 153, 111, - 112, 138, 230, 139, 107, 107, 99, 235, 113, 113, - 113, 109, 113, 171, 235, 29, 30, 37, 59, 60, - 74, 238, 108, 100, 101, 102, 103, 158, 108, 108, - 108, 108, 108, 108, 103, 155, 23, 24, 38, 62, - 73, 96, 99, 114, 144, 146, 161, 175, 178, 214, - 218, 221, 225, 227, 228, 108, 108, 99, 161, 237, - 23, 170, 174, 178, 214, 224, 226, 228, 229, 230, - 27, 39, 239, 109, 243, 138, 137, 230, 138, 137, - 138, 138, 137, 29, 37, 60, 74, 166, 34, 46, - 28, 30, 36, 43, 44, 45, 47, 49, 58, 75, - 76, 179, 181, 184, 186, 188, 192, 195, 197, 199, - 201, 204, 213, 29, 37, 50, 53, 60, 74, 97, - 98, 162, 229, 100, 103, 104, 157, 109, 144, 99, - 110, 23, 24, 61, 68, 240, 23, 246, 108, 108, - 144, 108, 108, 61, 68, 242, 243, 109, 109, 109, - 64, 29, 56, 196, 109, 25, 27, 39, 185, 241, - 109, 241, 48, 51, 52, 55, 63, 81, 208, 26, - 70, 200, 109, 245, 243, 66, 242, 109, 243, 109, - 109, 164, 108, 115, 23, 147, 148, 149, 153, 108, - 113, 172, 110, 138, 137, 103, 156, 83, 134, 138, - 23, 222, 23, 223, 23, 198, 23, 191, 67, 191, - 25, 31, 33, 69, 71, 180, 190, 109, 23, 209, - 210, 109, 243, 41, 42, 82, 205, 206, 23, 248, - 29, 189, 35, 54, 193, 109, 23, 165, 23, 163, - 165, 229, 110, 103, 154, 141, 142, 230, 114, 109, - 244, 108, 108, 110, 110, 110, 110, 110, 23, 212, - 23, 211, 110, 77, 78, 79, 80, 194, 23, 207, - 110, 110, 110, 108, 115, 111, 112, 150, 108, 23, - 99, 143, 62, 73, 173, 176, 177, 178, 215, 216, - 219, 224, 23, 247, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 135, 138, 57, 26, - 40, 60, 72, 182, 190, 241, 110, 110, 110, 229, - 23, 151, 23, 152, 142, 34, 46, 202, 204, 108, - 115, 110, 32, 183, 187, 190, 108, 115, 108, 109, - 109, 66, 203, 176, 229, 142, 217, 222, 220, 223, - 109, 115, 108, 110, 105, 110, 105, 207, 142, 222, - 223, 105, 207, 110 + 15, 16, 17, 18, 19, 20, 21, 22, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 137, 160, 161, 168, 169, 170, 232, 234, 237, + 250, 107, 235, 99, 99, 99, 99, 233, 65, 99, + 140, 146, 238, 140, 140, 140, 140, 140, 99, 141, + 154, 111, 112, 139, 231, 140, 140, 107, 107, 99, + 236, 113, 113, 113, 109, 113, 172, 236, 29, 30, + 37, 59, 60, 74, 239, 108, 100, 101, 102, 103, + 159, 108, 108, 108, 108, 108, 108, 103, 156, 23, + 24, 38, 62, 73, 96, 99, 114, 145, 147, 162, + 176, 179, 215, 219, 222, 226, 228, 229, 108, 108, + 108, 99, 162, 238, 23, 171, 175, 179, 215, 225, + 227, 229, 230, 231, 27, 39, 240, 109, 244, 139, + 138, 231, 139, 138, 139, 139, 138, 29, 37, 60, + 74, 167, 34, 46, 28, 30, 36, 43, 44, 45, + 47, 49, 58, 75, 76, 180, 182, 185, 187, 189, + 193, 196, 198, 200, 202, 205, 214, 29, 37, 50, + 53, 60, 74, 97, 98, 163, 230, 100, 103, 104, + 158, 109, 145, 139, 99, 110, 23, 24, 61, 68, + 241, 23, 247, 108, 108, 145, 108, 108, 61, 68, + 243, 244, 109, 109, 109, 64, 29, 56, 197, 109, + 25, 27, 39, 186, 242, 109, 242, 48, 51, 52, + 55, 63, 81, 209, 26, 70, 201, 109, 246, 244, + 66, 243, 109, 244, 109, 109, 165, 108, 115, 23, + 148, 149, 150, 154, 108, 108, 113, 173, 110, 139, + 138, 103, 157, 83, 135, 139, 23, 223, 23, 224, + 23, 199, 23, 192, 67, 192, 25, 31, 33, 69, + 71, 181, 191, 109, 23, 210, 211, 109, 244, 41, + 42, 82, 206, 207, 23, 249, 29, 190, 35, 54, + 194, 109, 23, 166, 23, 164, 166, 230, 110, 103, + 155, 142, 143, 231, 139, 114, 109, 245, 108, 108, + 110, 110, 110, 110, 110, 23, 213, 23, 212, 110, + 77, 78, 79, 80, 195, 23, 208, 110, 110, 110, + 108, 115, 111, 112, 151, 108, 23, 99, 144, 108, + 62, 73, 174, 177, 178, 179, 216, 217, 220, 225, + 23, 248, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 136, 139, 57, 26, 40, 60, + 72, 183, 191, 242, 110, 110, 110, 230, 23, 152, + 23, 153, 143, 139, 34, 46, 203, 205, 108, 115, + 110, 32, 184, 188, 191, 108, 115, 108, 108, 109, + 109, 66, 204, 177, 230, 143, 135, 218, 223, 221, + 224, 109, 115, 108, 108, 110, 105, 110, 105, 208, + 143, 136, 223, 224, 105, 208, 110 }; #define yyerrok (yyerrstatus = 0) @@ -2159,69 +2164,69 @@ yyreduce: ;} break; - case 23: + case 24: /* Line 1455 of yacc.c */ -#line 353 "program_parse.y" +#line 354 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} break; - case 24: + case 25: /* Line 1455 of yacc.c */ -#line 359 "program_parse.y" +#line 360 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; ;} break; - case 25: + case 26: /* Line 1455 of yacc.c */ -#line 366 "program_parse.y" +#line 367 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; ;} break; - case 26: + case 27: /* Line 1455 of yacc.c */ -#line 373 "program_parse.y" +#line 374 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; ;} break; - case 27: + case 28: /* Line 1455 of yacc.c */ -#line 381 "program_parse.y" +#line 382 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; ;} break; - case 28: + case 29: /* Line 1455 of yacc.c */ -#line 389 "program_parse.y" +#line 390 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg)); (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode; ;} break; - case 29: + case 30: /* Line 1455 of yacc.c */ -#line 396 "program_parse.y" +#line 397 "program_parse.y" { (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL); if ((yyval.inst) != NULL) { @@ -2266,113 +2271,161 @@ yyreduce: ;} break; - case 30: + case 31: /* Line 1455 of yacc.c */ -#line 441 "program_parse.y" +#line 442 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); state->fragment.UsesKill = 1; ;} break; - case 31: + case 32: + +/* Line 1455 of yacc.c */ +#line 449 "program_parse.y" + { + (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (12)].temp_inst).Opcode, & (yyvsp[(2) - (12)].dst_reg), & (yyvsp[(4) - (12)].src_reg), & (yyvsp[(6) - (12)].src_reg), & (yyvsp[(8) - (12)].src_reg)); + if ((yyval.inst) != NULL) { + const GLbitfield tex_mask = (1U << (yyvsp[(10) - (12)].integer)); + GLbitfield shadow_tex = 0; + GLbitfield target_mask = 0; + + + (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (12)].temp_inst).SaturateMode; + (yyval.inst)->Base.TexSrcUnit = (yyvsp[(10) - (12)].integer); + + if ((yyvsp[(12) - (12)].integer) < 0) { + shadow_tex = tex_mask; + + (yyval.inst)->Base.TexSrcTarget = -(yyvsp[(12) - (12)].integer); + (yyval.inst)->Base.TexShadow = 1; + } else { + (yyval.inst)->Base.TexSrcTarget = (yyvsp[(12) - (12)].integer); + } + + target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); + + /* If this texture unit was previously accessed and that access + * had a different texture target, generate an error. + * + * If this texture unit was previously accessed and that access + * had a different shadow mode, generate an error. + */ + if ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != 0) + && ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != target_mask) + || ((state->prog->ShadowSamplers & tex_mask) + != shadow_tex))) { + yyerror(& (yylsp[(12) - (12)]), state, + "multiple targets used on one texture image unit"); + YYERROR; + } + + + state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] |= target_mask; + state->prog->ShadowSamplers |= shadow_tex; + } + ;} + break; + + case 33: /* Line 1455 of yacc.c */ -#line 448 "program_parse.y" +#line 494 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 32: + case 34: /* Line 1455 of yacc.c */ -#line 453 "program_parse.y" +#line 499 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; - case 33: + case 35: /* Line 1455 of yacc.c */ -#line 454 "program_parse.y" +#line 500 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; - case 34: + case 36: /* Line 1455 of yacc.c */ -#line 455 "program_parse.y" +#line 501 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; - case 35: + case 37: /* Line 1455 of yacc.c */ -#line 456 "program_parse.y" +#line 502 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; - case 36: + case 38: /* Line 1455 of yacc.c */ -#line 457 "program_parse.y" +#line 503 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; - case 37: + case 39: /* Line 1455 of yacc.c */ -#line 458 "program_parse.y" +#line 504 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; - case 38: + case 40: /* Line 1455 of yacc.c */ -#line 459 "program_parse.y" +#line 505 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; - case 39: + case 41: /* Line 1455 of yacc.c */ -#line 460 "program_parse.y" +#line 506 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; - case 40: + case 42: /* Line 1455 of yacc.c */ -#line 461 "program_parse.y" +#line 507 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; - case 41: + case 43: /* Line 1455 of yacc.c */ -#line 462 "program_parse.y" +#line 508 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; - case 42: + case 44: /* Line 1455 of yacc.c */ -#line 463 "program_parse.y" +#line 509 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; - case 43: + case 45: /* Line 1455 of yacc.c */ -#line 464 "program_parse.y" +#line 510 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; - case 44: + case 46: /* Line 1455 of yacc.c */ -#line 468 "program_parse.y" +#line 514 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied * FIXME: to the existing swizzle? @@ -2385,10 +2438,10 @@ yyreduce: ;} break; - case 45: + case 47: /* Line 1455 of yacc.c */ -#line 481 "program_parse.y" +#line 527 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2401,10 +2454,10 @@ yyreduce: ;} break; - case 46: + case 48: /* Line 1455 of yacc.c */ -#line 494 "program_parse.y" +#line 540 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2417,10 +2470,10 @@ yyreduce: ;} break; - case 47: + case 49: /* Line 1455 of yacc.c */ -#line 507 "program_parse.y" +#line 553 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; @@ -2442,10 +2495,10 @@ yyreduce: ;} break; - case 48: + case 50: /* Line 1455 of yacc.c */ -#line 529 "program_parse.y" +#line 575 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2454,10 +2507,10 @@ yyreduce: ;} break; - case 49: + case 51: /* Line 1455 of yacc.c */ -#line 538 "program_parse.y" +#line 584 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2490,20 +2543,20 @@ yyreduce: ;} break; - case 50: + case 52: /* Line 1455 of yacc.c */ -#line 571 "program_parse.y" +#line 617 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; ;} break; - case 51: + case 53: /* Line 1455 of yacc.c */ -#line 578 "program_parse.y" +#line 624 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2520,10 +2573,10 @@ yyreduce: ;} break; - case 52: + case 54: /* Line 1455 of yacc.c */ -#line 593 "program_parse.y" +#line 639 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2573,10 +2626,10 @@ yyreduce: ;} break; - case 53: + case 55: /* Line 1455 of yacc.c */ -#line 643 "program_parse.y" +#line 689 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2620,10 +2673,10 @@ yyreduce: ;} break; - case 54: + case 56: /* Line 1455 of yacc.c */ -#line 685 "program_parse.y" +#line 731 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2636,10 +2689,10 @@ yyreduce: ;} break; - case 55: + case 57: /* Line 1455 of yacc.c */ -#line 696 "program_parse.y" +#line 742 "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)) { @@ -2662,10 +2715,10 @@ yyreduce: ;} break; - case 56: + case 58: /* Line 1455 of yacc.c */ -#line 717 "program_parse.y" +#line 763 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2675,10 +2728,10 @@ yyreduce: ;} break; - case 57: + case 59: /* Line 1455 of yacc.c */ -#line 727 "program_parse.y" +#line 773 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2686,10 +2739,10 @@ yyreduce: ;} break; - case 58: + case 60: /* Line 1455 of yacc.c */ -#line 733 "program_parse.y" +#line 779 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2720,10 +2773,10 @@ yyreduce: ;} break; - case 59: + case 61: /* Line 1455 of yacc.c */ -#line 764 "program_parse.y" +#line 810 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2740,20 +2793,20 @@ yyreduce: ;} break; - case 62: + case 64: /* Line 1455 of yacc.c */ -#line 783 "program_parse.y" +#line 829 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); ;} break; - case 63: + case 65: /* Line 1455 of yacc.c */ -#line 790 "program_parse.y" +#line 836 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2765,31 +2818,31 @@ yyreduce: ;} break; - case 64: + case 66: /* Line 1455 of yacc.c */ -#line 801 "program_parse.y" +#line 847 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 65: + case 67: /* Line 1455 of yacc.c */ -#line 802 "program_parse.y" +#line 848 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 66: + case 68: /* Line 1455 of yacc.c */ -#line 803 "program_parse.y" +#line 849 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; - case 67: + case 69: /* Line 1455 of yacc.c */ -#line 807 "program_parse.y" +#line 853 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2801,10 +2854,10 @@ yyreduce: ;} break; - case 68: + case 70: /* Line 1455 of yacc.c */ -#line 819 "program_parse.y" +#line 865 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2816,10 +2869,10 @@ yyreduce: ;} break; - case 69: + case 71: /* Line 1455 of yacc.c */ -#line 831 "program_parse.y" +#line 877 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2837,10 +2890,10 @@ yyreduce: ;} break; - case 70: + case 72: /* Line 1455 of yacc.c */ -#line 849 "program_parse.y" +#line 895 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2851,10 +2904,10 @@ yyreduce: ;} break; - case 71: + case 73: /* Line 1455 of yacc.c */ -#line 860 "program_parse.y" +#line 906 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2866,24 +2919,24 @@ yyreduce: ;} break; - case 76: + case 78: /* Line 1455 of yacc.c */ -#line 876 "program_parse.y" +#line 922 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 81: + case 83: /* Line 1455 of yacc.c */ -#line 880 "program_parse.y" +#line 926 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 88: + case 90: /* Line 1455 of yacc.c */ -#line 892 "program_parse.y" +#line 938 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -2901,55 +2954,55 @@ yyreduce: ;} break; - case 89: + case 91: /* Line 1455 of yacc.c */ -#line 910 "program_parse.y" +#line 956 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 90: + case 92: /* Line 1455 of yacc.c */ -#line 914 "program_parse.y" +#line 960 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 91: + case 93: /* Line 1455 of yacc.c */ -#line 920 "program_parse.y" +#line 966 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} break; - case 92: + case 94: /* Line 1455 of yacc.c */ -#line 924 "program_parse.y" +#line 970 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} break; - case 93: + case 95: /* Line 1455 of yacc.c */ -#line 928 "program_parse.y" +#line 974 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} break; - case 94: + case 96: /* Line 1455 of yacc.c */ -#line 932 "program_parse.y" +#line 978 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -2960,10 +3013,10 @@ yyreduce: ;} break; - case 95: + case 97: /* Line 1455 of yacc.c */ -#line 941 "program_parse.y" +#line 987 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -2974,38 +3027,38 @@ yyreduce: ;} break; - case 96: + case 98: /* Line 1455 of yacc.c */ -#line 950 "program_parse.y" +#line 996 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 97: + case 99: /* Line 1455 of yacc.c */ -#line 954 "program_parse.y" +#line 1000 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 98: + case 100: /* Line 1455 of yacc.c */ -#line 959 "program_parse.y" +#line 1005 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} break; - case 99: + case 101: /* Line 1455 of yacc.c */ -#line 965 "program_parse.y" +#line 1011 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3016,46 +3069,46 @@ yyreduce: ;} break; - case 103: + case 105: /* Line 1455 of yacc.c */ -#line 979 "program_parse.y" +#line 1025 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} break; - case 104: + case 106: /* Line 1455 of yacc.c */ -#line 983 "program_parse.y" +#line 1029 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} break; - case 105: + case 107: /* Line 1455 of yacc.c */ -#line 987 "program_parse.y" +#line 1033 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} break; - case 106: + case 108: /* Line 1455 of yacc.c */ -#line 991 "program_parse.y" +#line 1037 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 109: + case 111: /* Line 1455 of yacc.c */ -#line 999 "program_parse.y" +#line 1045 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3071,10 +3124,10 @@ yyreduce: ;} break; - case 110: + case 112: /* Line 1455 of yacc.c */ -#line 1015 "program_parse.y" +#line 1061 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3096,19 +3149,19 @@ yyreduce: ;} break; - case 111: + case 113: /* Line 1455 of yacc.c */ -#line 1037 "program_parse.y" +#line 1083 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 112: + case 114: /* Line 1455 of yacc.c */ -#line 1041 "program_parse.y" +#line 1087 "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"); @@ -3119,38 +3172,38 @@ yyreduce: ;} break; - case 113: + case 115: /* Line 1455 of yacc.c */ -#line 1052 "program_parse.y" +#line 1098 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} break; - case 114: + case 116: /* Line 1455 of yacc.c */ -#line 1058 "program_parse.y" +#line 1104 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} break; - case 116: + case 118: /* Line 1455 of yacc.c */ -#line 1065 "program_parse.y" +#line 1111 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); ;} break; - case 117: + case 119: /* Line 1455 of yacc.c */ -#line 1072 "program_parse.y" +#line 1118 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3158,10 +3211,10 @@ yyreduce: ;} break; - case 118: + case 120: /* Line 1455 of yacc.c */ -#line 1078 "program_parse.y" +#line 1124 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3169,10 +3222,10 @@ yyreduce: ;} break; - case 119: + case 121: /* Line 1455 of yacc.c */ -#line 1084 "program_parse.y" +#line 1130 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3180,10 +3233,10 @@ yyreduce: ;} break; - case 120: + case 122: /* Line 1455 of yacc.c */ -#line 1092 "program_parse.y" +#line 1138 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3191,10 +3244,10 @@ yyreduce: ;} break; - case 121: + case 123: /* Line 1455 of yacc.c */ -#line 1098 "program_parse.y" +#line 1144 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3202,10 +3255,10 @@ yyreduce: ;} break; - case 122: + case 124: /* Line 1455 of yacc.c */ -#line 1104 "program_parse.y" +#line 1150 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3213,10 +3266,10 @@ yyreduce: ;} break; - case 123: + case 125: /* Line 1455 of yacc.c */ -#line 1112 "program_parse.y" +#line 1158 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3224,10 +3277,10 @@ yyreduce: ;} break; - case 124: + case 126: /* Line 1455 of yacc.c */ -#line 1118 "program_parse.y" +#line 1164 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3235,10 +3288,10 @@ yyreduce: ;} break; - case 125: + case 127: /* Line 1455 of yacc.c */ -#line 1124 "program_parse.y" +#line 1170 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3246,101 +3299,101 @@ yyreduce: ;} break; - case 126: - -/* Line 1455 of yacc.c */ -#line 1131 "program_parse.y" - { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} - break; - - case 127: - -/* Line 1455 of yacc.c */ -#line 1132 "program_parse.y" - { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} - break; - case 128: /* Line 1455 of yacc.c */ -#line 1135 "program_parse.y" - { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} +#line 1177 "program_parse.y" + { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 129: /* Line 1455 of yacc.c */ -#line 1136 "program_parse.y" +#line 1178 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 130: /* Line 1455 of yacc.c */ -#line 1137 "program_parse.y" +#line 1181 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 131: /* Line 1455 of yacc.c */ -#line 1138 "program_parse.y" +#line 1182 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 132: /* Line 1455 of yacc.c */ -#line 1139 "program_parse.y" +#line 1183 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 133: /* Line 1455 of yacc.c */ -#line 1140 "program_parse.y" +#line 1184 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 134: /* Line 1455 of yacc.c */ -#line 1141 "program_parse.y" +#line 1185 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 135: /* Line 1455 of yacc.c */ -#line 1142 "program_parse.y" +#line 1186 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 136: /* Line 1455 of yacc.c */ -#line 1143 "program_parse.y" +#line 1187 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 137: /* Line 1455 of yacc.c */ -#line 1144 "program_parse.y" +#line 1188 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 138: /* Line 1455 of yacc.c */ -#line 1145 "program_parse.y" +#line 1189 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 139: /* Line 1455 of yacc.c */ -#line 1149 "program_parse.y" +#line 1190 "program_parse.y" + { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} + break; + + case 140: + +/* Line 1455 of yacc.c */ +#line 1191 "program_parse.y" + { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} + break; + + case 141: + +/* Line 1455 of yacc.c */ +#line 1195 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3349,37 +3402,37 @@ yyreduce: ;} break; - case 140: + case 142: /* Line 1455 of yacc.c */ -#line 1158 "program_parse.y" +#line 1204 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 141: + case 143: /* Line 1455 of yacc.c */ -#line 1162 "program_parse.y" +#line 1208 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} break; - case 142: + case 144: /* Line 1455 of yacc.c */ -#line 1166 "program_parse.y" +#line 1212 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} break; - case 143: + case 145: /* Line 1455 of yacc.c */ -#line 1172 "program_parse.y" +#line 1218 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3388,28 +3441,28 @@ yyreduce: ;} break; - case 144: + case 146: /* Line 1455 of yacc.c */ -#line 1181 "program_parse.y" +#line 1227 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 145: + case 147: /* Line 1455 of yacc.c */ -#line 1185 "program_parse.y" +#line 1231 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} break; - case 146: + case 148: /* Line 1455 of yacc.c */ -#line 1189 "program_parse.y" +#line 1235 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3420,57 +3473,57 @@ yyreduce: ;} break; - case 147: + case 149: /* Line 1455 of yacc.c */ -#line 1198 "program_parse.y" +#line 1244 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 148: + case 150: /* Line 1455 of yacc.c */ -#line 1202 "program_parse.y" +#line 1248 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} break; - case 149: + case 151: /* Line 1455 of yacc.c */ -#line 1208 "program_parse.y" +#line 1254 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} break; - case 150: + case 152: /* Line 1455 of yacc.c */ -#line 1214 "program_parse.y" +#line 1260 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; ;} break; - case 151: + case 153: /* Line 1455 of yacc.c */ -#line 1221 "program_parse.y" +#line 1267 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; ;} break; - case 152: + case 154: /* Line 1455 of yacc.c */ -#line 1226 "program_parse.y" +#line 1272 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3478,10 +3531,10 @@ yyreduce: ;} break; - case 153: + case 155: /* Line 1455 of yacc.c */ -#line 1234 "program_parse.y" +#line 1280 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3491,10 +3544,10 @@ yyreduce: ;} break; - case 155: + case 157: /* Line 1455 of yacc.c */ -#line 1246 "program_parse.y" +#line 1292 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3502,46 +3555,46 @@ yyreduce: ;} break; - case 156: + case 158: /* Line 1455 of yacc.c */ -#line 1254 "program_parse.y" +#line 1300 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} break; - case 157: + case 159: /* Line 1455 of yacc.c */ -#line 1260 "program_parse.y" +#line 1306 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} break; - case 158: + case 160: /* Line 1455 of yacc.c */ -#line 1264 "program_parse.y" +#line 1310 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} break; - case 159: + case 161: /* Line 1455 of yacc.c */ -#line 1268 "program_parse.y" +#line 1314 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} break; - case 160: + case 162: /* Line 1455 of yacc.c */ -#line 1274 "program_parse.y" +#line 1320 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3552,10 +3605,10 @@ yyreduce: ;} break; - case 161: + case 163: /* Line 1455 of yacc.c */ -#line 1285 "program_parse.y" +#line 1331 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3564,92 +3617,92 @@ yyreduce: ;} break; - case 162: + case 164: /* Line 1455 of yacc.c */ -#line 1294 "program_parse.y" +#line 1340 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} break; - case 163: + case 165: /* Line 1455 of yacc.c */ -#line 1298 "program_parse.y" +#line 1344 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} break; - case 164: + case 166: /* Line 1455 of yacc.c */ -#line 1303 "program_parse.y" +#line 1349 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} break; - case 165: + case 167: /* Line 1455 of yacc.c */ -#line 1307 "program_parse.y" +#line 1353 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} break; - case 166: + case 168: /* Line 1455 of yacc.c */ -#line 1311 "program_parse.y" +#line 1357 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} break; - case 167: + case 169: /* Line 1455 of yacc.c */ -#line 1315 "program_parse.y" +#line 1361 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} break; - case 168: + case 170: /* Line 1455 of yacc.c */ -#line 1321 "program_parse.y" +#line 1367 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 169: + case 171: /* Line 1455 of yacc.c */ -#line 1328 "program_parse.y" +#line 1374 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} break; - case 170: + case 172: /* Line 1455 of yacc.c */ -#line 1332 "program_parse.y" +#line 1378 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} break; - case 171: + case 173: /* Line 1455 of yacc.c */ -#line 1338 "program_parse.y" +#line 1384 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3657,10 +3710,10 @@ yyreduce: ;} break; - case 172: + case 174: /* Line 1455 of yacc.c */ -#line 1346 "program_parse.y" +#line 1392 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3671,38 +3724,38 @@ yyreduce: ;} break; - case 173: + case 175: /* Line 1455 of yacc.c */ -#line 1357 "program_parse.y" +#line 1403 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 174: + case 176: /* Line 1455 of yacc.c */ -#line 1364 "program_parse.y" +#line 1410 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} break; - case 175: + case 177: /* Line 1455 of yacc.c */ -#line 1368 "program_parse.y" +#line 1414 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} break; - case 176: + case 178: /* Line 1455 of yacc.c */ -#line 1374 "program_parse.y" +#line 1420 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3712,10 +3765,10 @@ yyreduce: ;} break; - case 177: + case 179: /* Line 1455 of yacc.c */ -#line 1384 "program_parse.y" +#line 1430 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3725,20 +3778,20 @@ yyreduce: ;} break; - case 178: + case 180: /* Line 1455 of yacc.c */ -#line 1394 "program_parse.y" +#line 1440 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; ;} break; - case 179: + case 181: /* Line 1455 of yacc.c */ -#line 1399 "program_parse.y" +#line 1445 "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). @@ -3756,10 +3809,10 @@ yyreduce: ;} break; - case 180: + case 182: /* Line 1455 of yacc.c */ -#line 1417 "program_parse.y" +#line 1463 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3767,55 +3820,55 @@ yyreduce: ;} break; - case 181: + case 183: /* Line 1455 of yacc.c */ -#line 1425 "program_parse.y" +#line 1471 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 182: + case 184: /* Line 1455 of yacc.c */ -#line 1429 "program_parse.y" +#line 1475 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 183: + case 185: /* Line 1455 of yacc.c */ -#line 1435 "program_parse.y" +#line 1481 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} break; - case 184: + case 186: /* Line 1455 of yacc.c */ -#line 1439 "program_parse.y" +#line 1485 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} break; - case 185: + case 187: /* Line 1455 of yacc.c */ -#line 1443 "program_parse.y" +#line 1489 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} break; - case 186: + case 188: /* Line 1455 of yacc.c */ -#line 1449 "program_parse.y" +#line 1495 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3826,88 +3879,88 @@ yyreduce: ;} break; - case 187: + case 189: /* Line 1455 of yacc.c */ -#line 1460 "program_parse.y" +#line 1506 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 188: + case 190: /* Line 1455 of yacc.c */ -#line 1465 "program_parse.y" +#line 1511 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; ;} break; - case 189: + case 191: /* Line 1455 of yacc.c */ -#line 1470 "program_parse.y" +#line 1516 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; ;} break; - case 190: + case 192: /* Line 1455 of yacc.c */ -#line 1475 "program_parse.y" +#line 1521 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 191: + case 193: /* Line 1455 of yacc.c */ -#line 1480 "program_parse.y" +#line 1526 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 192: + case 194: /* Line 1455 of yacc.c */ -#line 1485 "program_parse.y" +#line 1531 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); ;} break; - case 193: + case 195: /* Line 1455 of yacc.c */ -#line 1492 "program_parse.y" +#line 1538 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 194: + case 196: /* Line 1455 of yacc.c */ -#line 1496 "program_parse.y" +#line 1542 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 195: + case 197: /* Line 1455 of yacc.c */ -#line 1501 "program_parse.y" +#line 1547 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -3921,10 +3974,10 @@ yyreduce: ;} break; - case 196: + case 198: /* Line 1455 of yacc.c */ -#line 1514 "program_parse.y" +#line 1560 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -3933,10 +3986,10 @@ yyreduce: ;} break; - case 197: + case 199: /* Line 1455 of yacc.c */ -#line 1522 "program_parse.y" +#line 1568 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -3947,20 +4000,20 @@ yyreduce: ;} break; - case 198: + case 200: /* Line 1455 of yacc.c */ -#line 1533 "program_parse.y" +#line 1579 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; ;} break; - case 203: + case 205: /* Line 1455 of yacc.c */ -#line 1545 "program_parse.y" +#line 1591 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -3970,30 +4023,30 @@ yyreduce: ;} break; - case 204: + case 206: /* Line 1455 of yacc.c */ -#line 1555 "program_parse.y" +#line 1601 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 205: + case 207: /* Line 1455 of yacc.c */ -#line 1560 "program_parse.y" +#line 1606 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 206: + case 208: /* Line 1455 of yacc.c */ -#line 1567 "program_parse.y" +#line 1613 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4003,10 +4056,10 @@ yyreduce: ;} break; - case 207: + case 209: /* Line 1455 of yacc.c */ -#line 1577 "program_parse.y" +#line 1623 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4016,30 +4069,30 @@ yyreduce: ;} break; - case 208: + case 210: /* Line 1455 of yacc.c */ -#line 1586 "program_parse.y" +#line 1632 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 209: + case 211: /* Line 1455 of yacc.c */ -#line 1591 "program_parse.y" +#line 1637 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 210: + case 212: /* Line 1455 of yacc.c */ -#line 1598 "program_parse.y" +#line 1644 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4049,10 +4102,10 @@ yyreduce: ;} break; - case 211: + case 213: /* Line 1455 of yacc.c */ -#line 1608 "program_parse.y" +#line 1654 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4062,10 +4115,10 @@ yyreduce: ;} break; - case 212: + case 214: /* Line 1455 of yacc.c */ -#line 1618 "program_parse.y" +#line 1664 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4075,10 +4128,10 @@ yyreduce: ;} break; - case 217: + case 219: /* Line 1455 of yacc.c */ -#line 1633 "program_parse.y" +#line 1679 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4088,10 +4141,10 @@ yyreduce: ;} break; - case 218: + case 220: /* Line 1455 of yacc.c */ -#line 1643 "program_parse.y" +#line 1689 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4101,10 +4154,10 @@ yyreduce: ;} break; - case 219: + case 221: /* Line 1455 of yacc.c */ -#line 1651 "program_parse.y" +#line 1697 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4114,10 +4167,10 @@ yyreduce: ;} break; - case 220: + case 222: /* Line 1455 of yacc.c */ -#line 1661 "program_parse.y" +#line 1707 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4127,10 +4180,10 @@ yyreduce: ;} break; - case 221: + case 223: /* Line 1455 of yacc.c */ -#line 1669 "program_parse.y" +#line 1715 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4140,10 +4193,10 @@ yyreduce: ;} break; - case 222: + case 224: /* Line 1455 of yacc.c */ -#line 1678 "program_parse.y" +#line 1724 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4153,10 +4206,10 @@ yyreduce: ;} break; - case 223: + case 225: /* Line 1455 of yacc.c */ -#line 1687 "program_parse.y" +#line 1733 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4166,63 +4219,63 @@ yyreduce: ;} break; - case 224: + case 226: /* Line 1455 of yacc.c */ -#line 1697 "program_parse.y" +#line 1743 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} break; - case 225: + case 227: /* Line 1455 of yacc.c */ -#line 1701 "program_parse.y" +#line 1747 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} break; - case 226: + case 228: /* Line 1455 of yacc.c */ -#line 1706 "program_parse.y" +#line 1752 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 227: + case 229: /* Line 1455 of yacc.c */ -#line 1707 "program_parse.y" +#line 1753 "program_parse.y" { (yyval.negate) = TRUE; ;} break; - case 228: + case 230: /* Line 1455 of yacc.c */ -#line 1708 "program_parse.y" +#line 1754 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 229: + case 231: /* Line 1455 of yacc.c */ -#line 1711 "program_parse.y" +#line 1757 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 231: + case 233: /* Line 1455 of yacc.c */ -#line 1714 "program_parse.y" +#line 1760 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 233: + case 235: /* Line 1455 of yacc.c */ -#line 1718 "program_parse.y" +#line 1764 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4230,10 +4283,10 @@ yyreduce: ;} break; - case 234: + case 236: /* Line 1455 of yacc.c */ -#line 1724 "program_parse.y" +#line 1770 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4241,10 +4294,10 @@ yyreduce: ;} break; - case 235: + case 237: /* Line 1455 of yacc.c */ -#line 1732 "program_parse.y" +#line 1778 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); @@ -4257,10 +4310,10 @@ yyreduce: ;} break; - case 236: + case 238: /* Line 1455 of yacc.c */ -#line 1745 "program_parse.y" +#line 1791 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4271,10 +4324,10 @@ yyreduce: ;} break; - case 237: + case 239: /* Line 1455 of yacc.c */ -#line 1754 "program_parse.y" +#line 1800 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4285,19 +4338,19 @@ yyreduce: ;} break; - case 238: + case 240: /* Line 1455 of yacc.c */ -#line 1763 "program_parse.y" +#line 1809 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 239: + case 241: /* Line 1455 of yacc.c */ -#line 1767 "program_parse.y" +#line 1813 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4308,10 +4361,10 @@ yyreduce: ;} break; - case 240: + case 242: /* Line 1455 of yacc.c */ -#line 1776 "program_parse.y" +#line 1822 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4322,10 +4375,10 @@ yyreduce: ;} break; - case 241: + case 243: /* Line 1455 of yacc.c */ -#line 1785 "program_parse.y" +#line 1831 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4336,19 +4389,19 @@ yyreduce: ;} break; - case 242: + case 244: /* Line 1455 of yacc.c */ -#line 1796 "program_parse.y" +#line 1842 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 243: + case 245: /* Line 1455 of yacc.c */ -#line 1802 "program_parse.y" +#line 1848 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4356,10 +4409,10 @@ yyreduce: ;} break; - case 244: + case 246: /* Line 1455 of yacc.c */ -#line 1808 "program_parse.y" +#line 1854 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4370,10 +4423,10 @@ yyreduce: ;} break; - case 245: + case 247: /* Line 1455 of yacc.c */ -#line 1817 "program_parse.y" +#line 1863 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4384,19 +4437,19 @@ yyreduce: ;} break; - case 246: + case 248: /* Line 1455 of yacc.c */ -#line 1828 "program_parse.y" +#line 1874 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 247: + case 249: /* Line 1455 of yacc.c */ -#line 1832 "program_parse.y" +#line 1878 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4407,10 +4460,10 @@ yyreduce: ;} break; - case 248: + case 250: /* Line 1455 of yacc.c */ -#line 1841 "program_parse.y" +#line 1887 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4421,94 +4474,94 @@ yyreduce: ;} break; - case 249: + case 251: /* Line 1455 of yacc.c */ -#line 1851 "program_parse.y" +#line 1897 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 250: + case 252: /* Line 1455 of yacc.c */ -#line 1852 "program_parse.y" +#line 1898 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 251: + case 253: /* Line 1455 of yacc.c */ -#line 1853 "program_parse.y" +#line 1899 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 252: + case 254: /* Line 1455 of yacc.c */ -#line 1856 "program_parse.y" +#line 1902 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 253: + case 255: /* Line 1455 of yacc.c */ -#line 1857 "program_parse.y" +#line 1903 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 254: + case 256: /* Line 1455 of yacc.c */ -#line 1858 "program_parse.y" +#line 1904 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 255: + case 257: /* Line 1455 of yacc.c */ -#line 1861 "program_parse.y" +#line 1907 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 256: + case 258: /* Line 1455 of yacc.c */ -#line 1862 "program_parse.y" +#line 1908 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 257: + case 259: /* Line 1455 of yacc.c */ -#line 1865 "program_parse.y" +#line 1911 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 258: + case 260: /* Line 1455 of yacc.c */ -#line 1866 "program_parse.y" +#line 1912 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 259: + case 261: /* Line 1455 of yacc.c */ -#line 1869 "program_parse.y" +#line 1915 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 260: + case 262: /* Line 1455 of yacc.c */ -#line 1870 "program_parse.y" +#line 1916 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 261: + case 263: /* Line 1455 of yacc.c */ -#line 1874 "program_parse.y" +#line 1920 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4519,10 +4572,10 @@ yyreduce: ;} break; - case 262: + case 264: /* Line 1455 of yacc.c */ -#line 1885 "program_parse.y" +#line 1931 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4533,10 +4586,10 @@ yyreduce: ;} break; - case 263: + case 265: /* Line 1455 of yacc.c */ -#line 1896 "program_parse.y" +#line 1942 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4547,10 +4600,10 @@ yyreduce: ;} break; - case 264: + case 266: /* Line 1455 of yacc.c */ -#line 1907 "program_parse.y" +#line 1953 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4574,7 +4627,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4578 "program_parse.tab.c" +#line 4631 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4793,7 +4846,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1927 "program_parse.y" +#line 1973 "program_parse.y" struct asm_instruction * diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 9dab00c385..4cd459a096 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -177,7 +177,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, %type instruction ALU_instruction TexInstruction %type ARL_instruction VECTORop_instruction %type SCALARop_instruction BINSCop_instruction BINop_instruction -%type TRIop_instruction SWZ_instruction SAMPLE_instruction +%type TRIop_instruction TXD_instruction SWZ_instruction SAMPLE_instruction %type KIL_instruction %type dstReg maskedDstReg maskedAddrReg @@ -347,6 +347,7 @@ ALU_instruction: ARL_instruction TexInstruction: SAMPLE_instruction | KIL_instruction + | TXD_instruction ; ARL_instruction: ARL maskedAddrReg ',' scalarSrcReg @@ -444,6 +445,51 @@ KIL_instruction: KIL swizzleSrcReg } ; +TXD_instruction: TXD_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg ',' swizzleSrcReg ',' texImageUnit ',' texTarget + { + $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, & $8); + if ($$ != NULL) { + const GLbitfield tex_mask = (1U << $10); + GLbitfield shadow_tex = 0; + GLbitfield target_mask = 0; + + + $$->Base.SaturateMode = $1.SaturateMode; + $$->Base.TexSrcUnit = $10; + + if ($12 < 0) { + shadow_tex = tex_mask; + + $$->Base.TexSrcTarget = -$12; + $$->Base.TexShadow = 1; + } else { + $$->Base.TexSrcTarget = $12; + } + + target_mask = (1U << $$->Base.TexSrcTarget); + + /* If this texture unit was previously accessed and that access + * had a different texture target, generate an error. + * + * If this texture unit was previously accessed and that access + * had a different shadow mode, generate an error. + */ + if ((state->prog->TexturesUsed[$10] != 0) + && ((state->prog->TexturesUsed[$10] != target_mask) + || ((state->prog->ShadowSamplers & tex_mask) + != shadow_tex))) { + yyerror(& @12, state, + "multiple targets used on one texture image unit"); + YYERROR; + } + + + state->prog->TexturesUsed[$10] |= target_mask; + state->prog->ShadowSamplers |= shadow_tex; + } + } + ; + texImageUnit: TEXTURE_UNIT optTexImageUnitNum { $$ = $2; -- cgit v1.2.3 From b8e389bb0315287b72087b93a089ab944d77ab80 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 3 Sep 2009 14:05:18 -0700 Subject: NV fp parser: Support new scalar constant behavior ARBfp requires scalar constants have a '.x' suffix, but NVfp_option does not. This shows up with instructions that require a scalar parameter (e.g., COS). --- src/mesa/shader/program_parse.tab.c | 1482 ++++++++++++++++++----------------- src/mesa/shader/program_parse.y | 17 + 2 files changed, 770 insertions(+), 729 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 06aefd073f..508ac617e4 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -588,16 +588,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 349 +#define YYLAST 351 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 116 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 135 /* YYNRULES -- Number of rules. */ -#define YYNRULES 266 +#define YYNRULES 267 /* YYNRULES -- Number of states. */ -#define YYNSTATES 447 +#define YYNSTATES 448 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -657,29 +657,29 @@ static const yytype_uint16 yyprhs[] = 24, 27, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 59, 64, 69, 76, 83, 92, 101, 104, 117, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 144, 151, 155, 159, - 162, 165, 173, 176, 178, 180, 182, 184, 189, 191, - 193, 195, 197, 199, 201, 203, 207, 208, 211, 214, - 216, 218, 220, 222, 224, 226, 228, 230, 232, 233, - 235, 237, 239, 241, 242, 244, 246, 248, 250, 252, - 254, 259, 262, 265, 267, 270, 272, 275, 277, 280, - 285, 290, 292, 293, 297, 299, 301, 304, 306, 309, - 311, 313, 317, 324, 325, 327, 330, 335, 337, 341, - 343, 345, 347, 349, 351, 353, 355, 357, 359, 361, + 132, 134, 136, 138, 140, 142, 144, 151, 155, 158, + 162, 165, 168, 176, 179, 181, 183, 185, 187, 192, + 194, 196, 198, 200, 202, 204, 206, 210, 211, 214, + 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, + 236, 238, 240, 242, 244, 245, 247, 249, 251, 253, + 255, 257, 262, 265, 268, 270, 273, 275, 278, 280, + 283, 288, 293, 295, 296, 300, 302, 304, 307, 309, + 312, 314, 316, 320, 327, 328, 330, 333, 338, 340, + 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, 364, 367, 370, 373, 376, 379, 382, 385, 388, 391, - 394, 397, 401, 403, 405, 407, 413, 415, 417, 419, - 422, 424, 426, 429, 431, 434, 441, 443, 447, 449, - 451, 453, 455, 457, 462, 464, 466, 468, 470, 472, - 474, 477, 479, 481, 487, 489, 492, 494, 496, 502, - 505, 506, 513, 517, 518, 520, 522, 524, 526, 528, - 531, 533, 535, 538, 543, 548, 549, 551, 553, 555, - 557, 560, 562, 564, 566, 568, 574, 576, 580, 586, - 592, 594, 598, 604, 606, 608, 610, 612, 614, 616, - 618, 620, 622, 626, 632, 640, 650, 653, 656, 658, - 660, 661, 662, 666, 667, 671, 675, 677, 682, 685, - 688, 691, 694, 698, 701, 705, 706, 708, 710, 711, - 713, 715, 716, 718, 720, 721, 723, 725, 726, 730, - 731, 735, 736, 740, 742, 744, 746 + 394, 397, 400, 404, 406, 408, 410, 416, 418, 420, + 422, 425, 427, 429, 432, 434, 437, 444, 446, 450, + 452, 454, 456, 458, 460, 465, 467, 469, 471, 473, + 475, 477, 480, 482, 484, 490, 492, 495, 497, 499, + 505, 508, 509, 516, 520, 521, 523, 525, 527, 529, + 531, 534, 536, 538, 541, 546, 551, 552, 554, 556, + 558, 560, 563, 565, 567, 569, 571, 577, 579, 583, + 589, 595, 597, 601, 607, 609, 611, 613, 615, 617, + 619, 621, 623, 625, 629, 635, 643, 653, 656, 659, + 661, 663, 664, 665, 669, 670, 674, 678, 680, 685, + 688, 691, 694, 697, 701, 704, 708, 709, 711, 713, + 714, 716, 718, 719, 721, 723, 724, 726, 728, 729, + 733, 734, 738, 739, 743, 745, 747, 749 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -700,67 +700,67 @@ static const yytype_int16 yyrhs[] = 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 21, 140, 108, 145, 108, 142, - -1, 231, 145, 157, -1, 231, 145, 158, -1, 146, - 159, -1, 154, 156, -1, 143, 108, 143, 108, 143, - 108, 143, -1, 231, 144, -1, 23, -1, 99, -1, - 99, -1, 162, -1, 147, 109, 148, 110, -1, 176, - -1, 238, -1, 99, -1, 99, -1, 149, -1, 150, - -1, 23, -1, 154, 155, 151, -1, -1, 111, 152, - -1, 112, 153, -1, 23, -1, 23, -1, 99, -1, - 103, -1, 103, -1, 103, -1, 103, -1, 100, -1, - 104, -1, -1, 100, -1, 101, -1, 102, -1, 103, - -1, -1, 161, -1, 168, -1, 232, -1, 234, -1, - 237, -1, 250, -1, 7, 99, 113, 162, -1, 96, - 163, -1, 38, 167, -1, 60, -1, 98, 165, -1, - 53, -1, 29, 243, -1, 37, -1, 74, 244, -1, - 50, 109, 166, 110, -1, 97, 109, 164, 110, -1, - 23, -1, -1, 109, 166, 110, -1, 23, -1, 60, - -1, 29, 243, -1, 37, -1, 74, 244, -1, 169, - -1, 170, -1, 10, 99, 172, -1, 10, 99, 109, - 171, 110, 173, -1, -1, 23, -1, 113, 175, -1, - 113, 114, 174, 115, -1, 177, -1, 174, 108, 177, - -1, 179, -1, 215, -1, 225, -1, 179, -1, 215, - -1, 226, -1, 178, -1, 216, -1, 225, -1, 179, - -1, 73, 203, -1, 73, 180, -1, 73, 182, -1, - 73, 185, -1, 73, 187, -1, 73, 193, -1, 73, - 189, -1, 73, 196, -1, 73, 198, -1, 73, 200, - -1, 73, 202, -1, 73, 214, -1, 47, 242, 181, - -1, 191, -1, 33, -1, 69, -1, 43, 109, 192, - 110, 183, -1, 191, -1, 60, -1, 26, -1, 72, - 184, -1, 40, -1, 32, -1, 44, 186, -1, 25, - -1, 242, 67, -1, 45, 109, 192, 110, 242, 188, - -1, 191, -1, 75, 246, 190, -1, 29, -1, 25, - -1, 31, -1, 71, -1, 23, -1, 76, 244, 194, - 195, -1, 35, -1, 54, -1, 79, -1, 80, -1, - 78, -1, 77, -1, 36, 197, -1, 29, -1, 56, - -1, 28, 109, 199, 110, 57, -1, 23, -1, 58, - 201, -1, 70, -1, 26, -1, 205, 66, 109, 208, - 110, -1, 205, 204, -1, -1, 66, 109, 208, 105, - 208, 110, -1, 49, 209, 206, -1, -1, 207, -1, - 41, -1, 82, -1, 42, -1, 23, -1, 51, 210, - -1, 63, -1, 52, -1, 81, 244, -1, 55, 109, - 212, 110, -1, 48, 109, 213, 110, -1, -1, 211, - -1, 23, -1, 23, -1, 23, -1, 30, 64, -1, - 219, -1, 222, -1, 217, -1, 220, -1, 62, 34, - 109, 218, 110, -1, 223, -1, 223, 105, 223, -1, - 62, 34, 109, 223, 110, -1, 62, 46, 109, 221, - 110, -1, 224, -1, 224, 105, 224, -1, 62, 46, - 109, 224, 110, -1, 23, -1, 23, -1, 227, -1, - 229, -1, 228, -1, 229, -1, 230, -1, 24, -1, - 23, -1, 114, 230, 115, -1, 114, 230, 108, 230, - 115, -1, 114, 230, 108, 230, 108, 230, 115, -1, - 114, 230, 108, 230, 108, 230, 108, 230, 115, -1, - 231, 24, -1, 231, 23, -1, 111, -1, 112, -1, - -1, -1, 11, 233, 236, -1, -1, 5, 235, 236, - -1, 236, 108, 99, -1, 99, -1, 9, 99, 113, - 238, -1, 65, 60, -1, 65, 37, -1, 65, 239, - -1, 65, 59, -1, 65, 74, 244, -1, 65, 30, - -1, 29, 240, 241, -1, -1, 39, -1, 27, -1, - -1, 61, -1, 68, -1, -1, 39, -1, 27, -1, - -1, 61, -1, 68, -1, -1, 109, 247, 110, -1, - -1, 109, 248, 110, -1, -1, 109, 249, 110, -1, - 23, -1, 23, -1, 23, -1, 6, 99, 113, 99, - -1 + -1, 231, 145, 157, -1, 231, 228, -1, 231, 145, + 158, -1, 146, 159, -1, 154, 156, -1, 143, 108, + 143, 108, 143, 108, 143, -1, 231, 144, -1, 23, + -1, 99, -1, 99, -1, 162, -1, 147, 109, 148, + 110, -1, 176, -1, 238, -1, 99, -1, 99, -1, + 149, -1, 150, -1, 23, -1, 154, 155, 151, -1, + -1, 111, 152, -1, 112, 153, -1, 23, -1, 23, + -1, 99, -1, 103, -1, 103, -1, 103, -1, 103, + -1, 100, -1, 104, -1, -1, 100, -1, 101, -1, + 102, -1, 103, -1, -1, 161, -1, 168, -1, 232, + -1, 234, -1, 237, -1, 250, -1, 7, 99, 113, + 162, -1, 96, 163, -1, 38, 167, -1, 60, -1, + 98, 165, -1, 53, -1, 29, 243, -1, 37, -1, + 74, 244, -1, 50, 109, 166, 110, -1, 97, 109, + 164, 110, -1, 23, -1, -1, 109, 166, 110, -1, + 23, -1, 60, -1, 29, 243, -1, 37, -1, 74, + 244, -1, 169, -1, 170, -1, 10, 99, 172, -1, + 10, 99, 109, 171, 110, 173, -1, -1, 23, -1, + 113, 175, -1, 113, 114, 174, 115, -1, 177, -1, + 174, 108, 177, -1, 179, -1, 215, -1, 225, -1, + 179, -1, 215, -1, 226, -1, 178, -1, 216, -1, + 225, -1, 179, -1, 73, 203, -1, 73, 180, -1, + 73, 182, -1, 73, 185, -1, 73, 187, -1, 73, + 193, -1, 73, 189, -1, 73, 196, -1, 73, 198, + -1, 73, 200, -1, 73, 202, -1, 73, 214, -1, + 47, 242, 181, -1, 191, -1, 33, -1, 69, -1, + 43, 109, 192, 110, 183, -1, 191, -1, 60, -1, + 26, -1, 72, 184, -1, 40, -1, 32, -1, 44, + 186, -1, 25, -1, 242, 67, -1, 45, 109, 192, + 110, 242, 188, -1, 191, -1, 75, 246, 190, -1, + 29, -1, 25, -1, 31, -1, 71, -1, 23, -1, + 76, 244, 194, 195, -1, 35, -1, 54, -1, 79, + -1, 80, -1, 78, -1, 77, -1, 36, 197, -1, + 29, -1, 56, -1, 28, 109, 199, 110, 57, -1, + 23, -1, 58, 201, -1, 70, -1, 26, -1, 205, + 66, 109, 208, 110, -1, 205, 204, -1, -1, 66, + 109, 208, 105, 208, 110, -1, 49, 209, 206, -1, + -1, 207, -1, 41, -1, 82, -1, 42, -1, 23, + -1, 51, 210, -1, 63, -1, 52, -1, 81, 244, + -1, 55, 109, 212, 110, -1, 48, 109, 213, 110, + -1, -1, 211, -1, 23, -1, 23, -1, 23, -1, + 30, 64, -1, 219, -1, 222, -1, 217, -1, 220, + -1, 62, 34, 109, 218, 110, -1, 223, -1, 223, + 105, 223, -1, 62, 34, 109, 223, 110, -1, 62, + 46, 109, 221, 110, -1, 224, -1, 224, 105, 224, + -1, 62, 46, 109, 224, 110, -1, 23, -1, 23, + -1, 227, -1, 229, -1, 228, -1, 229, -1, 230, + -1, 24, -1, 23, -1, 114, 230, 115, -1, 114, + 230, 108, 230, 115, -1, 114, 230, 108, 230, 108, + 230, 115, -1, 114, 230, 108, 230, 108, 230, 108, + 230, 115, -1, 231, 24, -1, 231, 23, -1, 111, + -1, 112, -1, -1, -1, 11, 233, 236, -1, -1, + 5, 235, 236, -1, 236, 108, 99, -1, 99, -1, + 9, 99, 113, 238, -1, 65, 60, -1, 65, 37, + -1, 65, 239, -1, 65, 59, -1, 65, 74, 244, + -1, 65, 30, -1, 29, 240, 241, -1, -1, 39, + -1, 27, -1, -1, 61, -1, 68, -1, -1, 39, + -1, 27, -1, -1, 61, -1, 68, -1, -1, 109, + 247, 110, -1, -1, 109, 248, 110, -1, -1, 109, + 249, 110, -1, 23, -1, 23, -1, 23, -1, 6, + 99, 113, 99, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -770,29 +770,29 @@ static const yytype_uint16 yyrline[] = 309, 324, 327, 332, 339, 340, 341, 342, 343, 344, 345, 348, 349, 350, 353, 359, 366, 373, 381, 388, 396, 441, 448, 493, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 513, 526, 539, 552, - 574, 583, 616, 623, 638, 688, 730, 741, 762, 772, - 778, 809, 826, 826, 828, 835, 847, 848, 849, 852, - 864, 876, 894, 905, 917, 919, 920, 921, 922, 925, - 925, 925, 925, 926, 929, 930, 931, 932, 933, 934, - 937, 955, 959, 965, 969, 973, 977, 986, 995, 999, - 1004, 1010, 1021, 1021, 1022, 1024, 1028, 1032, 1036, 1042, - 1042, 1044, 1060, 1083, 1086, 1097, 1103, 1109, 1110, 1117, - 1123, 1129, 1137, 1143, 1149, 1157, 1163, 1169, 1177, 1178, - 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, - 1191, 1194, 1203, 1207, 1211, 1217, 1226, 1230, 1234, 1243, - 1247, 1253, 1259, 1266, 1271, 1279, 1289, 1291, 1299, 1305, - 1309, 1313, 1319, 1330, 1339, 1343, 1348, 1352, 1356, 1360, - 1366, 1373, 1377, 1383, 1391, 1402, 1409, 1413, 1419, 1429, - 1440, 1444, 1462, 1471, 1474, 1480, 1484, 1488, 1494, 1505, - 1510, 1515, 1520, 1525, 1530, 1538, 1541, 1546, 1559, 1567, - 1578, 1586, 1586, 1588, 1588, 1590, 1600, 1605, 1612, 1622, - 1631, 1636, 1643, 1653, 1663, 1675, 1675, 1676, 1676, 1678, - 1688, 1696, 1706, 1714, 1722, 1731, 1742, 1746, 1752, 1753, - 1754, 1757, 1757, 1760, 1760, 1763, 1769, 1777, 1790, 1799, - 1808, 1812, 1821, 1830, 1841, 1848, 1853, 1862, 1874, 1877, - 1886, 1897, 1898, 1899, 1902, 1903, 1904, 1907, 1908, 1911, - 1912, 1915, 1916, 1919, 1930, 1941, 1952 + 505, 506, 507, 508, 509, 510, 513, 526, 537, 556, + 569, 591, 600, 633, 640, 655, 705, 747, 758, 779, + 789, 795, 826, 843, 843, 845, 852, 864, 865, 866, + 869, 881, 893, 911, 922, 934, 936, 937, 938, 939, + 942, 942, 942, 942, 943, 946, 947, 948, 949, 950, + 951, 954, 972, 976, 982, 986, 990, 994, 1003, 1012, + 1016, 1021, 1027, 1038, 1038, 1039, 1041, 1045, 1049, 1053, + 1059, 1059, 1061, 1077, 1100, 1103, 1114, 1120, 1126, 1127, + 1134, 1140, 1146, 1154, 1160, 1166, 1174, 1180, 1186, 1194, + 1195, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1211, 1220, 1224, 1228, 1234, 1243, 1247, 1251, + 1260, 1264, 1270, 1276, 1283, 1288, 1296, 1306, 1308, 1316, + 1322, 1326, 1330, 1336, 1347, 1356, 1360, 1365, 1369, 1373, + 1377, 1383, 1390, 1394, 1400, 1408, 1419, 1426, 1430, 1436, + 1446, 1457, 1461, 1479, 1488, 1491, 1497, 1501, 1505, 1511, + 1522, 1527, 1532, 1537, 1542, 1547, 1555, 1558, 1563, 1576, + 1584, 1595, 1603, 1603, 1605, 1605, 1607, 1617, 1622, 1629, + 1639, 1648, 1653, 1660, 1670, 1680, 1692, 1692, 1693, 1693, + 1695, 1705, 1713, 1723, 1731, 1739, 1748, 1759, 1763, 1769, + 1770, 1771, 1774, 1774, 1777, 1777, 1780, 1786, 1794, 1807, + 1816, 1825, 1829, 1838, 1847, 1858, 1865, 1870, 1879, 1891, + 1894, 1903, 1914, 1915, 1916, 1919, 1920, 1921, 1924, 1925, + 1928, 1929, 1932, 1933, 1936, 1947, 1958, 1969 }; #endif @@ -890,29 +890,29 @@ static const yytype_uint8 yyr1[] = 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, 124, 125, 125, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 144, 145, 145, 145, 145, 146, - 146, 147, 148, 148, 149, 150, 151, 151, 151, 152, - 153, 154, 155, 156, 157, 158, 158, 158, 158, 159, - 159, 159, 159, 159, 160, 160, 160, 160, 160, 160, - 161, 162, 162, 163, 163, 163, 163, 163, 163, 163, - 163, 164, 165, 165, 166, 167, 167, 167, 167, 168, - 168, 169, 170, 171, 171, 172, 173, 174, 174, 175, - 175, 175, 176, 176, 176, 177, 177, 177, 178, 178, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 180, 181, 181, 181, 182, 183, 183, 183, 183, - 183, 184, 185, 186, 186, 187, 188, 189, 190, 191, - 191, 191, 192, 193, 194, 194, 195, 195, 195, 195, - 196, 197, 197, 198, 199, 200, 201, 201, 202, 203, - 204, 204, 205, 206, 206, 207, 207, 207, 208, 209, - 209, 209, 209, 209, 209, 210, 210, 211, 212, 213, - 214, 215, 215, 216, 216, 217, 218, 218, 219, 220, - 221, 221, 222, 223, 224, 225, 225, 226, 226, 227, - 228, 228, 229, 229, 229, 229, 230, 230, 231, 231, - 231, 233, 232, 235, 234, 236, 236, 237, 238, 238, - 238, 238, 238, 238, 239, 240, 240, 240, 241, 241, - 241, 242, 242, 242, 243, 243, 243, 244, 244, 245, - 245, 246, 246, 247, 248, 249, 250 + 136, 136, 136, 136, 136, 136, 137, 138, 138, 139, + 140, 141, 142, 143, 144, 144, 145, 145, 145, 145, + 146, 146, 147, 148, 148, 149, 150, 151, 151, 151, + 152, 153, 154, 155, 156, 157, 158, 158, 158, 158, + 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, + 160, 161, 162, 162, 163, 163, 163, 163, 163, 163, + 163, 163, 164, 165, 165, 166, 167, 167, 167, 167, + 168, 168, 169, 170, 171, 171, 172, 173, 174, 174, + 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, + 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 180, 181, 181, 181, 182, 183, 183, 183, + 183, 183, 184, 185, 186, 186, 187, 188, 189, 190, + 191, 191, 191, 192, 193, 194, 194, 195, 195, 195, + 195, 196, 197, 197, 198, 199, 200, 201, 201, 202, + 203, 204, 204, 205, 206, 206, 207, 207, 207, 208, + 209, 209, 209, 209, 209, 209, 210, 210, 211, 212, + 213, 214, 215, 215, 216, 216, 217, 218, 218, 219, + 220, 221, 221, 222, 223, 224, 225, 225, 226, 226, + 227, 228, 228, 229, 229, 229, 229, 230, 230, 231, + 231, 231, 233, 232, 235, 234, 236, 236, 237, 238, + 238, 238, 238, 238, 238, 239, 240, 240, 240, 241, + 241, 241, 242, 242, 242, 243, 243, 243, 244, 244, + 245, 245, 246, 246, 247, 248, 249, 250 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -922,29 +922,29 @@ static const yytype_uint8 yyr2[] = 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, 8, 2, 12, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 6, 3, 3, 2, - 2, 7, 2, 1, 1, 1, 1, 4, 1, 1, - 1, 1, 1, 1, 1, 3, 0, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, - 4, 2, 2, 1, 2, 1, 2, 1, 2, 4, - 4, 1, 0, 3, 1, 1, 2, 1, 2, 1, - 1, 3, 6, 0, 1, 2, 4, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 6, 3, 2, 3, + 2, 2, 7, 2, 1, 1, 1, 1, 4, 1, + 1, 1, 1, 1, 1, 1, 3, 0, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, + 1, 4, 2, 2, 1, 2, 1, 2, 1, 2, + 4, 4, 1, 0, 3, 1, 1, 2, 1, 2, + 1, 1, 3, 6, 0, 1, 2, 4, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 3, 1, 1, 1, 5, 1, 1, 1, 2, - 1, 1, 2, 1, 2, 6, 1, 3, 1, 1, - 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, - 2, 1, 1, 5, 1, 2, 1, 1, 5, 2, - 0, 6, 3, 0, 1, 1, 1, 1, 1, 2, - 1, 1, 2, 4, 4, 0, 1, 1, 1, 1, - 2, 1, 1, 1, 1, 5, 1, 3, 5, 5, - 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 5, 7, 9, 2, 2, 1, 1, - 0, 0, 3, 0, 3, 3, 1, 4, 2, 2, - 2, 2, 3, 2, 3, 0, 1, 1, 0, 1, - 1, 0, 1, 1, 0, 1, 1, 0, 3, 0, - 3, 0, 3, 1, 1, 1, 4 + 2, 2, 3, 1, 1, 1, 5, 1, 1, 1, + 2, 1, 1, 2, 1, 2, 6, 1, 3, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 5, 1, 2, 1, 1, 5, + 2, 0, 6, 3, 0, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 4, 4, 0, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 5, 1, 3, 5, + 5, 1, 3, 5, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 5, 7, 9, 2, 2, 1, + 1, 0, 0, 3, 0, 3, 3, 1, 4, 2, + 2, 2, 2, 3, 2, 3, 0, 1, 1, 0, + 1, 1, 0, 1, 1, 0, 1, 1, 0, 3, + 0, 3, 0, 3, 1, 1, 1, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -953,223 +953,225 @@ static const yytype_uint8 yyr2[] = static const yytype_uint16 yydefact[] = { 0, 3, 4, 0, 6, 1, 9, 0, 5, 0, - 0, 233, 0, 0, 0, 0, 231, 2, 0, 0, - 0, 0, 0, 0, 0, 230, 0, 0, 8, 0, + 0, 234, 0, 0, 0, 0, 232, 2, 0, 0, + 0, 0, 0, 0, 0, 231, 0, 0, 8, 0, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, - 23, 20, 0, 84, 85, 109, 110, 86, 87, 88, - 89, 7, 0, 0, 0, 0, 0, 0, 0, 60, - 0, 83, 59, 0, 0, 0, 0, 0, 71, 0, - 0, 228, 229, 31, 0, 0, 0, 10, 11, 236, - 234, 0, 0, 0, 113, 230, 111, 232, 245, 243, - 239, 241, 238, 257, 240, 230, 79, 80, 81, 82, - 49, 230, 230, 230, 230, 230, 230, 73, 50, 221, - 220, 0, 0, 0, 0, 55, 230, 78, 0, 56, - 58, 122, 123, 201, 202, 124, 217, 218, 0, 230, - 0, 266, 90, 237, 114, 0, 115, 119, 120, 121, - 215, 216, 219, 0, 247, 246, 248, 0, 242, 0, - 0, 0, 0, 26, 0, 25, 24, 254, 107, 105, - 257, 92, 0, 0, 0, 0, 0, 0, 251, 0, - 251, 0, 0, 261, 257, 130, 131, 132, 133, 135, - 134, 136, 137, 138, 139, 0, 140, 254, 97, 0, - 95, 93, 257, 0, 102, 91, 0, 76, 75, 77, - 48, 0, 0, 0, 235, 0, 227, 226, 249, 250, - 244, 263, 0, 230, 230, 0, 0, 230, 255, 256, - 106, 108, 0, 0, 0, 200, 171, 172, 170, 0, - 153, 253, 252, 152, 0, 0, 0, 0, 195, 191, - 0, 190, 257, 183, 177, 176, 175, 0, 0, 0, - 0, 96, 0, 98, 0, 0, 94, 230, 222, 64, - 0, 62, 63, 0, 230, 230, 0, 112, 258, 28, - 27, 74, 47, 259, 0, 0, 213, 0, 214, 0, - 174, 0, 162, 0, 154, 0, 159, 160, 143, 144, - 161, 141, 142, 0, 197, 189, 196, 0, 192, 185, - 187, 186, 182, 184, 265, 0, 158, 157, 164, 165, - 0, 0, 104, 0, 101, 0, 0, 0, 57, 72, - 66, 46, 0, 0, 0, 230, 0, 33, 0, 230, - 208, 212, 0, 0, 251, 199, 0, 198, 0, 262, - 169, 168, 166, 167, 163, 188, 0, 99, 100, 103, - 230, 223, 0, 0, 65, 230, 53, 54, 52, 230, - 0, 0, 0, 117, 125, 128, 126, 203, 204, 127, - 264, 0, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 30, 29, 173, 148, 150, 147, - 0, 145, 146, 0, 194, 193, 178, 0, 69, 67, - 70, 68, 0, 0, 0, 0, 129, 180, 230, 116, - 260, 151, 149, 155, 156, 230, 224, 230, 0, 0, - 0, 0, 179, 118, 0, 0, 0, 0, 206, 0, - 210, 0, 225, 230, 0, 205, 0, 209, 0, 0, - 51, 32, 207, 211, 0, 0, 181 + 23, 20, 0, 85, 86, 110, 111, 87, 88, 89, + 90, 7, 0, 0, 0, 0, 0, 0, 0, 61, + 0, 84, 60, 0, 0, 0, 0, 0, 72, 0, + 0, 229, 230, 31, 0, 0, 0, 10, 11, 237, + 235, 0, 0, 0, 114, 231, 112, 233, 246, 244, + 240, 242, 239, 258, 241, 231, 80, 81, 82, 83, + 50, 231, 231, 231, 231, 231, 231, 74, 51, 222, + 221, 0, 0, 0, 0, 56, 231, 79, 0, 57, + 59, 123, 124, 202, 203, 125, 218, 219, 0, 231, + 0, 267, 91, 238, 115, 0, 116, 120, 121, 122, + 216, 217, 220, 0, 248, 247, 249, 0, 243, 0, + 0, 0, 0, 26, 0, 25, 24, 255, 108, 106, + 258, 93, 0, 0, 0, 0, 0, 0, 252, 0, + 252, 0, 0, 262, 258, 131, 132, 133, 134, 136, + 135, 137, 138, 139, 140, 0, 141, 255, 98, 0, + 96, 94, 258, 0, 103, 92, 0, 77, 76, 78, + 49, 0, 0, 0, 236, 0, 228, 227, 250, 251, + 245, 264, 0, 231, 231, 0, 48, 0, 231, 256, + 257, 107, 109, 0, 0, 0, 201, 172, 173, 171, + 0, 154, 254, 253, 153, 0, 0, 0, 0, 196, + 192, 0, 191, 258, 184, 178, 177, 176, 0, 0, + 0, 0, 97, 0, 99, 0, 0, 95, 231, 223, + 65, 0, 63, 64, 0, 231, 231, 0, 113, 259, + 28, 27, 75, 47, 260, 0, 0, 214, 0, 215, + 0, 175, 0, 163, 0, 155, 0, 160, 161, 144, + 145, 162, 142, 143, 0, 198, 190, 197, 0, 193, + 186, 188, 187, 183, 185, 266, 0, 159, 158, 165, + 166, 0, 0, 105, 0, 102, 0, 0, 0, 58, + 73, 67, 46, 0, 0, 0, 231, 0, 33, 0, + 231, 209, 213, 0, 0, 252, 200, 0, 199, 0, + 263, 170, 169, 167, 168, 164, 189, 0, 100, 101, + 104, 231, 224, 0, 0, 66, 231, 54, 55, 53, + 231, 0, 0, 0, 118, 126, 129, 127, 204, 205, + 128, 265, 0, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 30, 29, 174, 149, 151, + 148, 0, 146, 147, 0, 195, 194, 179, 0, 70, + 68, 71, 69, 0, 0, 0, 0, 130, 181, 231, + 117, 261, 152, 150, 156, 157, 231, 225, 231, 0, + 0, 0, 0, 180, 119, 0, 0, 0, 0, 207, + 0, 211, 0, 226, 231, 0, 206, 0, 210, 0, + 0, 52, 32, 208, 212, 0, 0, 182 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 274, - 384, 41, 150, 73, 60, 69, 321, 322, 358, 117, - 61, 118, 260, 261, 262, 354, 399, 401, 70, 320, - 108, 272, 200, 100, 42, 43, 119, 195, 315, 256, - 313, 161, 44, 45, 46, 135, 86, 267, 362, 136, - 120, 363, 364, 121, 175, 291, 176, 391, 412, 177, - 233, 178, 413, 179, 307, 292, 283, 180, 310, 344, - 181, 228, 182, 281, 183, 246, 184, 406, 422, 185, - 302, 303, 346, 243, 295, 296, 338, 336, 186, 122, - 366, 367, 427, 123, 368, 429, 124, 277, 279, 369, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 275, + 385, 41, 150, 73, 60, 69, 322, 323, 359, 117, + 61, 118, 261, 262, 263, 355, 400, 402, 70, 321, + 108, 273, 200, 100, 42, 43, 119, 195, 316, 257, + 314, 161, 44, 45, 46, 135, 86, 268, 363, 136, + 120, 364, 365, 121, 175, 292, 176, 392, 413, 177, + 234, 178, 414, 179, 308, 293, 284, 180, 311, 345, + 181, 229, 182, 282, 183, 247, 184, 407, 423, 185, + 303, 304, 347, 244, 296, 297, 339, 337, 186, 122, + 367, 368, 428, 123, 369, 430, 124, 278, 280, 370, 125, 140, 126, 127, 142, 74, 47, 57, 48, 52, - 80, 49, 62, 94, 146, 210, 234, 220, 148, 327, - 248, 212, 371, 305, 50 + 80, 49, 62, 94, 146, 210, 235, 221, 148, 328, + 249, 212, 372, 306, 50 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -384 +#define YYPACT_NINF -399 static const yytype_int16 yypact[] = { - 167, -384, -384, 37, -384, -384, 60, -70, -384, 171, - -23, -384, -13, 9, 12, 63, -384, -384, -33, -33, - -33, -33, -33, -33, 67, 104, -33, -33, -384, 66, - -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, - -384, -384, 68, -384, -384, -384, -384, -384, -384, -384, - -384, -384, 115, 109, 111, 112, -4, 115, 22, -384, - 113, 106, -384, 118, 120, 121, 122, 123, -384, 124, - 130, -384, -384, -384, -16, 126, 127, -384, -384, -384, - 128, 140, -18, 158, 204, -39, -384, 128, 26, -384, - -384, -384, -384, 134, -384, 104, -384, -384, -384, -384, - -384, 104, 104, 104, 104, 104, 104, -384, -384, -384, - -384, 73, 84, 76, -10, 135, 104, 64, 136, -384, - -384, -384, -384, -384, -384, -384, -384, -384, -16, 104, - 147, -384, -384, -384, -384, 137, -384, -384, -384, -384, - -384, -384, -384, 194, -384, -384, 46, 225, -384, 141, - 142, -16, 143, -384, 144, -384, -384, 87, -384, -384, - 134, -384, 145, 146, 148, 189, 15, 149, 88, 150, - 97, 80, 0, 151, 134, -384, -384, -384, -384, -384, - -384, -384, -384, -384, -384, 190, -384, 87, -384, 152, - -384, -384, 134, 153, 154, -384, 42, -384, -384, -384, - -384, -8, 156, 159, -384, 160, -384, -384, -384, -384, - -384, -384, 161, 104, 104, 163, 186, 104, -384, -384, - -384, -384, 249, 251, 252, -384, -384, -384, -384, 253, - -384, -384, -384, -384, 210, 253, 8, 169, 256, -384, - 172, -384, 134, 21, -384, -384, -384, 257, 254, -7, - 173, -384, 261, -384, 262, 261, -384, 104, -384, -384, - 176, -384, -384, 184, 104, 104, 174, -384, -384, -384, - -384, -384, -384, 180, 182, 183, -384, 185, -384, 187, - -384, 188, -384, 191, -384, 193, -384, -384, -384, -384, - -384, -384, -384, 269, -384, -384, -384, 270, -384, -384, - -384, -384, -384, -384, -384, 195, -384, -384, -384, -384, - 133, 271, -384, 196, -384, 197, 198, 45, -384, -384, - 108, -384, 192, -6, 201, -17, 273, -384, 110, 104, - -384, -384, 242, 29, 97, -384, 200, -384, 202, -384, - -384, -384, -384, -384, -384, -384, 203, -384, -384, -384, - 104, -384, 281, 288, -384, 104, -384, -384, -384, 104, - 103, 76, 48, -384, -384, -384, -384, -384, -384, -384, - -384, 205, -384, -384, -384, -384, -384, -384, -384, -384, - -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, - 282, -384, -384, 5, -384, -384, -384, 50, -384, -384, - -384, -384, 208, 209, 211, 212, -384, 260, -17, -384, - -384, -384, -384, -384, -384, 104, -384, 104, 186, 249, - 251, 213, -384, -384, 214, 219, 220, 221, 228, 224, - 230, 271, -384, 104, 110, -384, 249, -384, 251, 49, - -384, -384, -384, -384, 271, 226, -384 + 154, -399, -399, 48, -399, -399, 51, -37, -399, 172, + -2, -399, 17, 31, 42, 47, -399, -399, -33, -33, + -33, -33, -33, -33, 54, 56, -33, -33, -399, 6, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -399, 52, -399, -399, -399, -399, -399, -399, -399, + -399, -399, 66, 25, 61, 112, -6, 66, 102, -399, + 118, 116, -399, 119, 120, 121, 122, 123, -399, 124, + 130, -399, -399, -399, -16, 126, 127, -399, -399, -399, + 128, 70, -15, 159, 214, -36, -399, 128, 28, -399, + -399, -399, -399, 131, -399, 56, -399, -399, -399, -399, + -399, 56, 56, 56, 56, 56, 56, -399, -399, -399, + -399, 27, 38, 76, -9, 135, 56, 60, 136, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -16, 56, + 147, -399, -399, -399, -399, 137, -399, -399, -399, -399, + -399, -399, -399, 148, -399, -399, 18, 225, -399, 141, + 142, -16, 144, -399, 145, -399, -399, 50, -399, -399, + 131, -399, 146, 149, 150, 187, 7, 151, 43, 152, + 69, 85, -1, 153, 131, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, 190, -399, 50, -399, 155, + -399, -399, 131, 156, 158, -399, 20, -399, -399, -399, + -399, -8, 160, 162, -399, 161, -399, -399, -399, -399, + -399, -399, 163, 56, 56, 169, 173, 171, 56, -399, + -399, -399, -399, 234, 240, 252, -399, -399, -399, -399, + 254, -399, -399, -399, -399, 211, 254, 2, 170, 257, + -399, 174, -399, 131, 12, -399, -399, -399, 258, 253, + -5, 175, -399, 262, -399, 263, 262, -399, 56, -399, + -399, 177, -399, -399, 185, 56, 56, 176, -399, -399, + -399, -399, -399, -399, 180, 183, 184, -399, 186, -399, + 189, -399, 191, -399, 192, -399, 194, -399, -399, -399, + -399, -399, -399, -399, 270, -399, -399, -399, 271, -399, + -399, -399, -399, -399, -399, -399, 195, -399, -399, -399, + -399, 143, 272, -399, 196, -399, 197, 198, 34, -399, + -399, 101, -399, 201, -4, 202, -12, 274, -399, 111, + 56, -399, -399, 241, 84, 69, -399, 203, -399, 204, + -399, -399, -399, -399, -399, -399, -399, 205, -399, -399, + -399, 56, -399, 277, 288, -399, 56, -399, -399, -399, + 56, 80, 76, 35, -399, -399, -399, -399, -399, -399, + -399, -399, 206, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + -399, 280, -399, -399, 14, -399, -399, -399, 39, -399, + -399, -399, -399, 209, 210, 212, 213, -399, 261, -12, + -399, -399, -399, -399, -399, -399, 56, -399, 56, 171, + 234, 240, 219, -399, -399, 208, 221, 222, 224, 215, + 226, 227, 272, -399, 56, 111, -399, 234, -399, 240, + -13, -399, -399, -399, -399, 272, 228, -399 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -384, -384, -384, -384, -384, -384, -384, -384, -384, -384, - -384, -384, -384, -384, -384, -384, -384, -384, -384, -100, - -115, -384, -97, -91, 119, -384, -384, -343, -384, -93, - -384, -384, -384, -384, -384, -384, -384, -384, 138, -384, - -384, -384, -384, -384, -384, -384, 255, -384, -384, -384, - 83, -384, -384, -384, -384, -384, -384, -384, -384, -384, - -384, -68, -384, -84, -384, -384, -384, -384, -384, -384, - -384, -384, -384, -384, -384, -308, 107, -384, -384, -384, - -384, -384, -384, -384, -384, -384, -384, -384, -384, -20, - -384, -384, -383, -384, -384, -384, -384, -384, -384, 258, - -384, -384, -384, -384, -384, -384, -384, -320, -371, 259, - -384, -384, -384, -83, -113, -85, -384, -384, -384, -384, - 289, -384, 264, -384, -384, -384, -165, 162, -150, -384, - -384, -384, -384, -384, -384 + -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -100, + -98, -399, -97, -91, 188, -399, -399, -344, -399, -99, + -399, -399, -399, -399, -399, -399, -399, -399, 134, -399, + -399, -399, -399, -399, -399, -399, 259, -399, -399, -399, + 83, -399, -399, -399, -399, -399, -399, -399, -399, -399, + -399, -69, -399, -84, -399, -399, -399, -399, -399, -399, + -399, -399, -399, -399, -399, -317, 106, -399, -399, -399, + -399, -399, -399, -399, -399, -399, -399, -399, -399, -19, + -399, -399, -398, -399, -399, -399, -399, -399, -399, 260, + -399, -399, -399, -399, -399, -399, -399, -377, -381, 265, + -399, -399, 193, -83, -113, -85, -399, -399, -399, -399, + 289, -399, 264, -399, -399, -399, -165, 164, -150, -399, + -399, -399, -399, -399, -399 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -62 +#define YYTABLE_NINF -219 static const yytype_int16 yytable[] = { - 143, 137, 141, 196, 149, 236, 153, 109, 110, 156, - 221, 152, 402, 154, 155, 259, 151, 356, 151, 187, - 111, 151, 111, 112, 249, 392, 244, 188, 308, 10, - 286, 143, 58, 286, 113, 202, 287, 5, 203, 287, - 189, 288, 253, 190, 226, 360, 112, 309, 439, 430, - 191, 88, 89, 144, 286, 387, 361, 113, 215, 90, - 287, 445, 299, 300, 192, 145, 59, 443, 7, 388, - 245, 227, 71, 72, 425, 116, 290, 289, 114, 290, - 114, 91, 92, 115, 51, 414, 53, 193, 194, 389, - 440, 68, 298, 357, 71, 72, 93, 116, 116, 428, - 290, 390, 157, 301, 164, 84, 165, 208, 54, 85, - 158, 55, 166, 230, 209, 231, 442, 270, 162, 167, - 168, 169, 269, 170, 231, 171, 275, 232, 237, 151, - 163, 238, 239, 159, 172, 240, 232, 404, 63, 64, - 65, 66, 67, 241, 317, 75, 76, 160, 218, 405, - 257, 173, 174, 350, 444, 219, 408, 258, 415, 396, - 351, 242, 56, 409, 197, 416, 68, 198, 199, 393, - 1, 2, 143, 77, 324, 78, 11, 12, 13, 323, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 96, 97, 98, 99, - 340, 341, 342, 343, 79, 71, 72, 206, 207, 352, - 353, 95, 81, 58, 82, 83, 101, 134, 102, 103, - 104, 105, 106, 107, 128, 129, 130, 397, 385, 131, - 143, 365, 141, 147, -61, 201, 204, 205, 211, 213, - 214, 216, 217, 225, 222, 223, 250, 224, 229, 235, - 247, 252, 254, 255, 264, 143, 271, 265, 403, 273, - 323, 268, 276, 266, 278, 280, 282, 284, 293, 294, - 304, 297, 311, 306, 312, 314, 318, 319, 325, 326, - 328, 329, 335, 337, 345, 330, 370, 331, 332, 386, - 355, 333, 424, 334, 398, 339, 347, 348, 349, 359, - 394, 400, 395, 396, 411, 410, 417, 418, 426, 441, - 419, 420, 431, 143, 365, 141, 421, 433, 434, 432, - 143, 435, 323, 436, 437, 438, 446, 132, 316, 263, - 423, 407, 285, 138, 139, 0, 87, 133, 323, 251 + 143, 137, 141, 196, 149, 237, 153, 109, 110, 156, + 222, 152, 403, 154, 155, 260, 151, 393, 151, 357, + 187, 151, 111, 111, 250, 245, 112, 287, 188, 202, + 309, 143, 58, 288, 440, 289, 227, 113, 203, 287, + 431, 189, 254, 429, 190, 288, 112, 446, 5, 310, + 361, 191, 215, 300, 301, 144, 157, 113, 444, 7, + 443, 362, 10, 228, 158, 192, 59, 145, 231, 246, + 232, 290, 162, 291, 426, 71, 72, 415, 116, 208, + 114, 114, 233, 115, 163, 291, 209, 159, 193, 194, + 441, 68, 445, 299, 302, 358, 232, 397, 116, 71, + 72, 160, 116, 84, 164, 51, 165, 85, 233, 287, + 388, 219, 166, 77, 405, 288, 53, 271, 220, 167, + 168, 169, 270, 170, 389, 171, 406, 276, 258, 151, + 54, 88, 89, 238, 172, 259, 239, 240, 81, 90, + 241, 55, 351, 409, 390, 318, 56, 416, 242, 352, + 410, 173, 174, 68, 417, 291, 391, 1, 2, 78, + 197, 91, 92, 198, 199, 79, 243, 71, 72, 131, + 394, 206, 207, 143, 82, 325, 93, 11, 12, 13, + 324, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 63, 64, 65, + 66, 67, 353, 354, 75, 76, 96, 97, 98, 99, + 341, 342, 343, 344, 58, 83, 95, 101, 102, 103, + 104, 105, 106, 107, 128, 129, 130, 134, 398, 386, + 147, 143, 366, 141, -62, 201, 204, 205, 211, 213, + 214, 226, 217, 218, 274, 223, 251, 277, 224, 225, + 230, 236, 248, 279, 253, 255, 143, 256, 265, 404, + 266, 324, 272, 269, 267, 281, -218, 283, 285, 294, + 295, 305, 307, 298, 312, 313, 315, 319, 320, 327, + 326, 329, 330, 336, 338, 346, 331, 371, 387, 332, + 399, 333, 334, 425, 335, 340, 348, 349, 350, 356, + 360, 401, 412, 395, 396, 397, 411, 418, 419, 427, + 437, 420, 421, 433, 143, 366, 141, 422, 432, 434, + 435, 143, 439, 324, 436, 264, 438, 442, 447, 317, + 424, 132, 286, 408, 216, 138, 87, 133, 0, 324, + 139, 252 }; static const yytype_int16 yycheck[] = { 85, 85, 85, 116, 95, 170, 103, 23, 24, 106, - 160, 102, 355, 104, 105, 23, 101, 23, 103, 29, - 38, 106, 38, 62, 174, 333, 26, 37, 35, 99, - 25, 116, 65, 25, 73, 128, 31, 0, 129, 31, - 50, 33, 192, 53, 29, 62, 62, 54, 431, 420, - 60, 29, 30, 27, 25, 26, 73, 73, 151, 37, - 31, 444, 41, 42, 74, 39, 99, 438, 8, 40, - 70, 56, 111, 112, 417, 114, 71, 69, 96, 71, - 96, 59, 60, 99, 107, 393, 99, 97, 98, 60, - 433, 99, 242, 99, 111, 112, 74, 114, 114, 419, - 71, 72, 29, 82, 28, 109, 30, 61, 99, 113, - 37, 99, 36, 25, 68, 27, 436, 214, 34, 43, - 44, 45, 213, 47, 27, 49, 217, 39, 48, 214, - 46, 51, 52, 60, 58, 55, 39, 34, 19, 20, - 21, 22, 23, 63, 257, 26, 27, 74, 61, 46, - 108, 75, 76, 108, 105, 68, 108, 115, 108, 110, - 115, 81, 99, 115, 100, 115, 99, 103, 104, 334, - 3, 4, 257, 107, 265, 107, 5, 6, 7, 264, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 100, 101, 102, 103, - 77, 78, 79, 80, 99, 111, 112, 23, 24, 111, - 112, 108, 113, 65, 113, 113, 108, 23, 108, 108, - 108, 108, 108, 103, 108, 108, 108, 350, 329, 99, - 325, 325, 325, 109, 109, 109, 99, 110, 23, 108, - 108, 108, 108, 64, 109, 109, 66, 109, 109, 109, - 109, 109, 109, 109, 108, 350, 103, 108, 359, 83, - 355, 110, 23, 113, 23, 23, 23, 67, 109, 23, - 23, 109, 109, 29, 23, 23, 110, 103, 114, 109, - 108, 108, 23, 23, 23, 110, 23, 110, 110, 57, - 108, 110, 415, 110, 23, 110, 110, 110, 110, 108, - 110, 23, 110, 110, 32, 110, 108, 108, 418, 434, - 109, 109, 109, 408, 408, 408, 66, 108, 108, 115, - 415, 110, 417, 105, 110, 105, 110, 82, 255, 201, - 408, 361, 235, 85, 85, -1, 57, 83, 433, 187 + 160, 102, 356, 104, 105, 23, 101, 334, 103, 23, + 29, 106, 38, 38, 174, 26, 62, 25, 37, 128, + 35, 116, 65, 31, 432, 33, 29, 73, 129, 25, + 421, 50, 192, 420, 53, 31, 62, 445, 0, 54, + 62, 60, 151, 41, 42, 27, 29, 73, 439, 8, + 437, 73, 99, 56, 37, 74, 99, 39, 25, 70, + 27, 69, 34, 71, 418, 111, 112, 394, 114, 61, + 96, 96, 39, 99, 46, 71, 68, 60, 97, 98, + 434, 99, 105, 243, 82, 99, 27, 110, 114, 111, + 112, 74, 114, 109, 28, 107, 30, 113, 39, 25, + 26, 61, 36, 107, 34, 31, 99, 214, 68, 43, + 44, 45, 213, 47, 40, 49, 46, 218, 108, 214, + 99, 29, 30, 48, 58, 115, 51, 52, 113, 37, + 55, 99, 108, 108, 60, 258, 99, 108, 63, 115, + 115, 75, 76, 99, 115, 71, 72, 3, 4, 107, + 100, 59, 60, 103, 104, 99, 81, 111, 112, 99, + 335, 23, 24, 258, 113, 266, 74, 5, 6, 7, + 265, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 19, 20, 21, + 22, 23, 111, 112, 26, 27, 100, 101, 102, 103, + 77, 78, 79, 80, 65, 113, 108, 108, 108, 108, + 108, 108, 108, 103, 108, 108, 108, 23, 351, 330, + 109, 326, 326, 326, 109, 109, 99, 110, 23, 108, + 108, 64, 108, 108, 83, 109, 66, 23, 109, 109, + 109, 109, 109, 23, 109, 109, 351, 109, 108, 360, + 108, 356, 103, 110, 113, 23, 103, 23, 67, 109, + 23, 23, 29, 109, 109, 23, 23, 110, 103, 109, + 114, 108, 108, 23, 23, 23, 110, 23, 57, 110, + 23, 110, 110, 416, 110, 110, 110, 110, 110, 108, + 108, 23, 32, 110, 110, 110, 110, 108, 108, 419, + 105, 109, 109, 115, 409, 409, 409, 66, 109, 108, + 108, 416, 105, 418, 110, 201, 110, 435, 110, 256, + 409, 82, 236, 362, 151, 85, 57, 83, -1, 434, + 85, 187 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1197,30 +1199,30 @@ static const yytype_uint8 yystos[] = 193, 196, 198, 200, 202, 205, 214, 29, 37, 50, 53, 60, 74, 97, 98, 163, 230, 100, 103, 104, 158, 109, 145, 139, 99, 110, 23, 24, 61, 68, - 241, 23, 247, 108, 108, 145, 108, 108, 61, 68, - 243, 244, 109, 109, 109, 64, 29, 56, 197, 109, - 25, 27, 39, 186, 242, 109, 242, 48, 51, 52, - 55, 63, 81, 209, 26, 70, 201, 109, 246, 244, - 66, 243, 109, 244, 109, 109, 165, 108, 115, 23, - 148, 149, 150, 154, 108, 108, 113, 173, 110, 139, - 138, 103, 157, 83, 135, 139, 23, 223, 23, 224, - 23, 199, 23, 192, 67, 192, 25, 31, 33, 69, - 71, 181, 191, 109, 23, 210, 211, 109, 244, 41, - 42, 82, 206, 207, 23, 249, 29, 190, 35, 54, - 194, 109, 23, 166, 23, 164, 166, 230, 110, 103, - 155, 142, 143, 231, 139, 114, 109, 245, 108, 108, - 110, 110, 110, 110, 110, 23, 213, 23, 212, 110, - 77, 78, 79, 80, 195, 23, 208, 110, 110, 110, - 108, 115, 111, 112, 151, 108, 23, 99, 144, 108, - 62, 73, 174, 177, 178, 179, 216, 217, 220, 225, - 23, 248, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 136, 139, 57, 26, 40, 60, - 72, 183, 191, 242, 110, 110, 110, 230, 23, 152, - 23, 153, 143, 139, 34, 46, 203, 205, 108, 115, - 110, 32, 184, 188, 191, 108, 115, 108, 108, 109, - 109, 66, 204, 177, 230, 143, 135, 218, 223, 221, - 224, 109, 115, 108, 108, 110, 105, 110, 105, 208, - 143, 136, 223, 224, 105, 208, 110 + 241, 23, 247, 108, 108, 145, 228, 108, 108, 61, + 68, 243, 244, 109, 109, 109, 64, 29, 56, 197, + 109, 25, 27, 39, 186, 242, 109, 242, 48, 51, + 52, 55, 63, 81, 209, 26, 70, 201, 109, 246, + 244, 66, 243, 109, 244, 109, 109, 165, 108, 115, + 23, 148, 149, 150, 154, 108, 108, 113, 173, 110, + 139, 138, 103, 157, 83, 135, 139, 23, 223, 23, + 224, 23, 199, 23, 192, 67, 192, 25, 31, 33, + 69, 71, 181, 191, 109, 23, 210, 211, 109, 244, + 41, 42, 82, 206, 207, 23, 249, 29, 190, 35, + 54, 194, 109, 23, 166, 23, 164, 166, 230, 110, + 103, 155, 142, 143, 231, 139, 114, 109, 245, 108, + 108, 110, 110, 110, 110, 110, 23, 213, 23, 212, + 110, 77, 78, 79, 80, 195, 23, 208, 110, 110, + 110, 108, 115, 111, 112, 151, 108, 23, 99, 144, + 108, 62, 73, 174, 177, 178, 179, 216, 217, 220, + 225, 23, 248, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 136, 139, 57, 26, 40, + 60, 72, 183, 191, 242, 110, 110, 110, 230, 23, + 152, 23, 153, 143, 139, 34, 46, 203, 205, 108, + 115, 110, 32, 184, 188, 191, 108, 115, 108, 108, + 109, 109, 66, 204, 177, 230, 143, 135, 218, 223, + 221, 224, 109, 115, 108, 108, 110, 105, 110, 105, + 208, 143, 136, 223, 224, 105, 208, 110 }; #define yyerrok (yyerrstatus = 0) @@ -2457,7 +2459,29 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 540 "program_parse.y" +#line 538 "program_parse.y" + { + struct asm_symbol temp_sym; + + if (!state->option.NV_fragment) { + yyerror(& (yylsp[(2) - (2)]), state, "expected scalar suffix"); + YYERROR; + } + + memset(& temp_sym, 0, sizeof(temp_sym)); + temp_sym.param_binding_begin = ~0; + initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(2) - (2)].vector)); + + init_src_reg(& (yyval.src_reg)); + (yyval.src_reg).Base.File = PROGRAM_CONSTANT; + (yyval.src_reg).Base.Index = temp_sym.param_binding_begin; + ;} + break; + + case 49: + +/* Line 1455 of yacc.c */ +#line 557 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2470,10 +2494,10 @@ yyreduce: ;} break; - case 49: + case 50: /* Line 1455 of yacc.c */ -#line 553 "program_parse.y" +#line 570 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; @@ -2495,10 +2519,10 @@ yyreduce: ;} break; - case 50: + case 51: /* Line 1455 of yacc.c */ -#line 575 "program_parse.y" +#line 592 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2507,10 +2531,10 @@ yyreduce: ;} break; - case 51: + case 52: /* Line 1455 of yacc.c */ -#line 584 "program_parse.y" +#line 601 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2543,20 +2567,20 @@ yyreduce: ;} break; - case 52: + case 53: /* Line 1455 of yacc.c */ -#line 617 "program_parse.y" +#line 634 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; ;} break; - case 53: + case 54: /* Line 1455 of yacc.c */ -#line 624 "program_parse.y" +#line 641 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2573,10 +2597,10 @@ yyreduce: ;} break; - case 54: + case 55: /* Line 1455 of yacc.c */ -#line 639 "program_parse.y" +#line 656 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2626,10 +2650,10 @@ yyreduce: ;} break; - case 55: + case 56: /* Line 1455 of yacc.c */ -#line 689 "program_parse.y" +#line 706 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2673,10 +2697,10 @@ yyreduce: ;} break; - case 56: + case 57: /* Line 1455 of yacc.c */ -#line 731 "program_parse.y" +#line 748 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2689,10 +2713,10 @@ yyreduce: ;} break; - case 57: + case 58: /* Line 1455 of yacc.c */ -#line 742 "program_parse.y" +#line 759 "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)) { @@ -2715,10 +2739,10 @@ yyreduce: ;} break; - case 58: + case 59: /* Line 1455 of yacc.c */ -#line 763 "program_parse.y" +#line 780 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2728,10 +2752,10 @@ yyreduce: ;} break; - case 59: + case 60: /* Line 1455 of yacc.c */ -#line 773 "program_parse.y" +#line 790 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2739,10 +2763,10 @@ yyreduce: ;} break; - case 60: + case 61: /* Line 1455 of yacc.c */ -#line 779 "program_parse.y" +#line 796 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2773,10 +2797,10 @@ yyreduce: ;} break; - case 61: + case 62: /* Line 1455 of yacc.c */ -#line 810 "program_parse.y" +#line 827 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2793,20 +2817,20 @@ yyreduce: ;} break; - case 64: + case 65: /* Line 1455 of yacc.c */ -#line 829 "program_parse.y" +#line 846 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); ;} break; - case 65: + case 66: /* Line 1455 of yacc.c */ -#line 836 "program_parse.y" +#line 853 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2818,31 +2842,31 @@ yyreduce: ;} break; - case 66: + case 67: /* Line 1455 of yacc.c */ -#line 847 "program_parse.y" +#line 864 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 67: + case 68: /* Line 1455 of yacc.c */ -#line 848 "program_parse.y" +#line 865 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 68: + case 69: /* Line 1455 of yacc.c */ -#line 849 "program_parse.y" +#line 866 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; - case 69: + case 70: /* Line 1455 of yacc.c */ -#line 853 "program_parse.y" +#line 870 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2854,10 +2878,10 @@ yyreduce: ;} break; - case 70: + case 71: /* Line 1455 of yacc.c */ -#line 865 "program_parse.y" +#line 882 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2869,10 +2893,10 @@ yyreduce: ;} break; - case 71: + case 72: /* Line 1455 of yacc.c */ -#line 877 "program_parse.y" +#line 894 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2890,10 +2914,10 @@ yyreduce: ;} break; - case 72: + case 73: /* Line 1455 of yacc.c */ -#line 895 "program_parse.y" +#line 912 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2904,10 +2928,10 @@ yyreduce: ;} break; - case 73: + case 74: /* Line 1455 of yacc.c */ -#line 906 "program_parse.y" +#line 923 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2919,24 +2943,24 @@ yyreduce: ;} break; - case 78: + case 79: /* Line 1455 of yacc.c */ -#line 922 "program_parse.y" +#line 939 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 83: + case 84: /* Line 1455 of yacc.c */ -#line 926 "program_parse.y" +#line 943 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 90: + case 91: /* Line 1455 of yacc.c */ -#line 938 "program_parse.y" +#line 955 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -2954,55 +2978,55 @@ yyreduce: ;} break; - case 91: + case 92: /* Line 1455 of yacc.c */ -#line 956 "program_parse.y" +#line 973 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 92: + case 93: /* Line 1455 of yacc.c */ -#line 960 "program_parse.y" +#line 977 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 93: + case 94: /* Line 1455 of yacc.c */ -#line 966 "program_parse.y" +#line 983 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} break; - case 94: + case 95: /* Line 1455 of yacc.c */ -#line 970 "program_parse.y" +#line 987 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} break; - case 95: + case 96: /* Line 1455 of yacc.c */ -#line 974 "program_parse.y" +#line 991 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} break; - case 96: + case 97: /* Line 1455 of yacc.c */ -#line 978 "program_parse.y" +#line 995 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3013,10 +3037,10 @@ yyreduce: ;} break; - case 97: + case 98: /* Line 1455 of yacc.c */ -#line 987 "program_parse.y" +#line 1004 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3027,38 +3051,38 @@ yyreduce: ;} break; - case 98: + case 99: /* Line 1455 of yacc.c */ -#line 996 "program_parse.y" +#line 1013 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 99: + case 100: /* Line 1455 of yacc.c */ -#line 1000 "program_parse.y" +#line 1017 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 100: + case 101: /* Line 1455 of yacc.c */ -#line 1005 "program_parse.y" +#line 1022 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} break; - case 101: + case 102: /* Line 1455 of yacc.c */ -#line 1011 "program_parse.y" +#line 1028 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3069,46 +3093,46 @@ yyreduce: ;} break; - case 105: + case 106: /* Line 1455 of yacc.c */ -#line 1025 "program_parse.y" +#line 1042 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} break; - case 106: + case 107: /* Line 1455 of yacc.c */ -#line 1029 "program_parse.y" +#line 1046 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} break; - case 107: + case 108: /* Line 1455 of yacc.c */ -#line 1033 "program_parse.y" +#line 1050 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} break; - case 108: + case 109: /* Line 1455 of yacc.c */ -#line 1037 "program_parse.y" +#line 1054 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 111: + case 112: /* Line 1455 of yacc.c */ -#line 1045 "program_parse.y" +#line 1062 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3124,10 +3148,10 @@ yyreduce: ;} break; - case 112: + case 113: /* Line 1455 of yacc.c */ -#line 1061 "program_parse.y" +#line 1078 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3149,19 +3173,19 @@ yyreduce: ;} break; - case 113: + case 114: /* Line 1455 of yacc.c */ -#line 1083 "program_parse.y" +#line 1100 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 114: + case 115: /* Line 1455 of yacc.c */ -#line 1087 "program_parse.y" +#line 1104 "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"); @@ -3172,38 +3196,38 @@ yyreduce: ;} break; - case 115: + case 116: /* Line 1455 of yacc.c */ -#line 1098 "program_parse.y" +#line 1115 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} break; - case 116: + case 117: /* Line 1455 of yacc.c */ -#line 1104 "program_parse.y" +#line 1121 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} break; - case 118: + case 119: /* Line 1455 of yacc.c */ -#line 1111 "program_parse.y" +#line 1128 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); ;} break; - case 119: + case 120: /* Line 1455 of yacc.c */ -#line 1118 "program_parse.y" +#line 1135 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3211,10 +3235,10 @@ yyreduce: ;} break; - case 120: + case 121: /* Line 1455 of yacc.c */ -#line 1124 "program_parse.y" +#line 1141 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3222,10 +3246,10 @@ yyreduce: ;} break; - case 121: + case 122: /* Line 1455 of yacc.c */ -#line 1130 "program_parse.y" +#line 1147 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3233,10 +3257,10 @@ yyreduce: ;} break; - case 122: + case 123: /* Line 1455 of yacc.c */ -#line 1138 "program_parse.y" +#line 1155 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3244,10 +3268,10 @@ yyreduce: ;} break; - case 123: + case 124: /* Line 1455 of yacc.c */ -#line 1144 "program_parse.y" +#line 1161 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3255,10 +3279,10 @@ yyreduce: ;} break; - case 124: + case 125: /* Line 1455 of yacc.c */ -#line 1150 "program_parse.y" +#line 1167 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3266,10 +3290,10 @@ yyreduce: ;} break; - case 125: + case 126: /* Line 1455 of yacc.c */ -#line 1158 "program_parse.y" +#line 1175 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3277,10 +3301,10 @@ yyreduce: ;} break; - case 126: + case 127: /* Line 1455 of yacc.c */ -#line 1164 "program_parse.y" +#line 1181 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3288,10 +3312,10 @@ yyreduce: ;} break; - case 127: + case 128: /* Line 1455 of yacc.c */ -#line 1170 "program_parse.y" +#line 1187 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3299,101 +3323,101 @@ yyreduce: ;} break; - case 128: - -/* Line 1455 of yacc.c */ -#line 1177 "program_parse.y" - { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} - break; - case 129: /* Line 1455 of yacc.c */ -#line 1178 "program_parse.y" - { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} +#line 1194 "program_parse.y" + { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 130: /* Line 1455 of yacc.c */ -#line 1181 "program_parse.y" +#line 1195 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 131: /* Line 1455 of yacc.c */ -#line 1182 "program_parse.y" +#line 1198 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 132: /* Line 1455 of yacc.c */ -#line 1183 "program_parse.y" +#line 1199 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 133: /* Line 1455 of yacc.c */ -#line 1184 "program_parse.y" +#line 1200 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 134: /* Line 1455 of yacc.c */ -#line 1185 "program_parse.y" +#line 1201 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 135: /* Line 1455 of yacc.c */ -#line 1186 "program_parse.y" +#line 1202 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 136: /* Line 1455 of yacc.c */ -#line 1187 "program_parse.y" +#line 1203 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 137: /* Line 1455 of yacc.c */ -#line 1188 "program_parse.y" +#line 1204 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 138: /* Line 1455 of yacc.c */ -#line 1189 "program_parse.y" +#line 1205 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 139: /* Line 1455 of yacc.c */ -#line 1190 "program_parse.y" +#line 1206 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 140: /* Line 1455 of yacc.c */ -#line 1191 "program_parse.y" +#line 1207 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 141: /* Line 1455 of yacc.c */ -#line 1195 "program_parse.y" +#line 1208 "program_parse.y" + { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} + break; + + case 142: + +/* Line 1455 of yacc.c */ +#line 1212 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3402,37 +3426,37 @@ yyreduce: ;} break; - case 142: + case 143: /* Line 1455 of yacc.c */ -#line 1204 "program_parse.y" +#line 1221 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 143: + case 144: /* Line 1455 of yacc.c */ -#line 1208 "program_parse.y" +#line 1225 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} break; - case 144: + case 145: /* Line 1455 of yacc.c */ -#line 1212 "program_parse.y" +#line 1229 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} break; - case 145: + case 146: /* Line 1455 of yacc.c */ -#line 1218 "program_parse.y" +#line 1235 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3441,28 +3465,28 @@ yyreduce: ;} break; - case 146: + case 147: /* Line 1455 of yacc.c */ -#line 1227 "program_parse.y" +#line 1244 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 147: + case 148: /* Line 1455 of yacc.c */ -#line 1231 "program_parse.y" +#line 1248 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} break; - case 148: + case 149: /* Line 1455 of yacc.c */ -#line 1235 "program_parse.y" +#line 1252 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3473,57 +3497,57 @@ yyreduce: ;} break; - case 149: + case 150: /* Line 1455 of yacc.c */ -#line 1244 "program_parse.y" +#line 1261 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 150: + case 151: /* Line 1455 of yacc.c */ -#line 1248 "program_parse.y" +#line 1265 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} break; - case 151: + case 152: /* Line 1455 of yacc.c */ -#line 1254 "program_parse.y" +#line 1271 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} break; - case 152: + case 153: /* Line 1455 of yacc.c */ -#line 1260 "program_parse.y" +#line 1277 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; ;} break; - case 153: + case 154: /* Line 1455 of yacc.c */ -#line 1267 "program_parse.y" +#line 1284 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; ;} break; - case 154: + case 155: /* Line 1455 of yacc.c */ -#line 1272 "program_parse.y" +#line 1289 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3531,10 +3555,10 @@ yyreduce: ;} break; - case 155: + case 156: /* Line 1455 of yacc.c */ -#line 1280 "program_parse.y" +#line 1297 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3544,10 +3568,10 @@ yyreduce: ;} break; - case 157: + case 158: /* Line 1455 of yacc.c */ -#line 1292 "program_parse.y" +#line 1309 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3555,46 +3579,46 @@ yyreduce: ;} break; - case 158: + case 159: /* Line 1455 of yacc.c */ -#line 1300 "program_parse.y" +#line 1317 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} break; - case 159: + case 160: /* Line 1455 of yacc.c */ -#line 1306 "program_parse.y" +#line 1323 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} break; - case 160: + case 161: /* Line 1455 of yacc.c */ -#line 1310 "program_parse.y" +#line 1327 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} break; - case 161: + case 162: /* Line 1455 of yacc.c */ -#line 1314 "program_parse.y" +#line 1331 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} break; - case 162: + case 163: /* Line 1455 of yacc.c */ -#line 1320 "program_parse.y" +#line 1337 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3605,10 +3629,10 @@ yyreduce: ;} break; - case 163: + case 164: /* Line 1455 of yacc.c */ -#line 1331 "program_parse.y" +#line 1348 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3617,92 +3641,92 @@ yyreduce: ;} break; - case 164: + case 165: /* Line 1455 of yacc.c */ -#line 1340 "program_parse.y" +#line 1357 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} break; - case 165: + case 166: /* Line 1455 of yacc.c */ -#line 1344 "program_parse.y" +#line 1361 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} break; - case 166: + case 167: /* Line 1455 of yacc.c */ -#line 1349 "program_parse.y" +#line 1366 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} break; - case 167: + case 168: /* Line 1455 of yacc.c */ -#line 1353 "program_parse.y" +#line 1370 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} break; - case 168: + case 169: /* Line 1455 of yacc.c */ -#line 1357 "program_parse.y" +#line 1374 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} break; - case 169: + case 170: /* Line 1455 of yacc.c */ -#line 1361 "program_parse.y" +#line 1378 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} break; - case 170: + case 171: /* Line 1455 of yacc.c */ -#line 1367 "program_parse.y" +#line 1384 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 171: + case 172: /* Line 1455 of yacc.c */ -#line 1374 "program_parse.y" +#line 1391 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} break; - case 172: + case 173: /* Line 1455 of yacc.c */ -#line 1378 "program_parse.y" +#line 1395 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} break; - case 173: + case 174: /* Line 1455 of yacc.c */ -#line 1384 "program_parse.y" +#line 1401 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3710,10 +3734,10 @@ yyreduce: ;} break; - case 174: + case 175: /* Line 1455 of yacc.c */ -#line 1392 "program_parse.y" +#line 1409 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3724,38 +3748,38 @@ yyreduce: ;} break; - case 175: + case 176: /* Line 1455 of yacc.c */ -#line 1403 "program_parse.y" +#line 1420 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 176: + case 177: /* Line 1455 of yacc.c */ -#line 1410 "program_parse.y" +#line 1427 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} break; - case 177: + case 178: /* Line 1455 of yacc.c */ -#line 1414 "program_parse.y" +#line 1431 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} break; - case 178: + case 179: /* Line 1455 of yacc.c */ -#line 1420 "program_parse.y" +#line 1437 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3765,10 +3789,10 @@ yyreduce: ;} break; - case 179: + case 180: /* Line 1455 of yacc.c */ -#line 1430 "program_parse.y" +#line 1447 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3778,20 +3802,20 @@ yyreduce: ;} break; - case 180: + case 181: /* Line 1455 of yacc.c */ -#line 1440 "program_parse.y" +#line 1457 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; ;} break; - case 181: + case 182: /* Line 1455 of yacc.c */ -#line 1445 "program_parse.y" +#line 1462 "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). @@ -3809,10 +3833,10 @@ yyreduce: ;} break; - case 182: + case 183: /* Line 1455 of yacc.c */ -#line 1463 "program_parse.y" +#line 1480 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3820,55 +3844,55 @@ yyreduce: ;} break; - case 183: + case 184: /* Line 1455 of yacc.c */ -#line 1471 "program_parse.y" +#line 1488 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 184: + case 185: /* Line 1455 of yacc.c */ -#line 1475 "program_parse.y" +#line 1492 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 185: + case 186: /* Line 1455 of yacc.c */ -#line 1481 "program_parse.y" +#line 1498 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} break; - case 186: + case 187: /* Line 1455 of yacc.c */ -#line 1485 "program_parse.y" +#line 1502 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} break; - case 187: + case 188: /* Line 1455 of yacc.c */ -#line 1489 "program_parse.y" +#line 1506 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} break; - case 188: + case 189: /* Line 1455 of yacc.c */ -#line 1495 "program_parse.y" +#line 1512 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3879,88 +3903,88 @@ yyreduce: ;} break; - case 189: + case 190: /* Line 1455 of yacc.c */ -#line 1506 "program_parse.y" +#line 1523 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 190: + case 191: /* Line 1455 of yacc.c */ -#line 1511 "program_parse.y" +#line 1528 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; ;} break; - case 191: + case 192: /* Line 1455 of yacc.c */ -#line 1516 "program_parse.y" +#line 1533 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; ;} break; - case 192: + case 193: /* Line 1455 of yacc.c */ -#line 1521 "program_parse.y" +#line 1538 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 193: + case 194: /* Line 1455 of yacc.c */ -#line 1526 "program_parse.y" +#line 1543 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 194: + case 195: /* Line 1455 of yacc.c */ -#line 1531 "program_parse.y" +#line 1548 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); ;} break; - case 195: + case 196: /* Line 1455 of yacc.c */ -#line 1538 "program_parse.y" +#line 1555 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 196: + case 197: /* Line 1455 of yacc.c */ -#line 1542 "program_parse.y" +#line 1559 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 197: + case 198: /* Line 1455 of yacc.c */ -#line 1547 "program_parse.y" +#line 1564 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -3974,10 +3998,10 @@ yyreduce: ;} break; - case 198: + case 199: /* Line 1455 of yacc.c */ -#line 1560 "program_parse.y" +#line 1577 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -3986,10 +4010,10 @@ yyreduce: ;} break; - case 199: + case 200: /* Line 1455 of yacc.c */ -#line 1568 "program_parse.y" +#line 1585 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4000,20 +4024,20 @@ yyreduce: ;} break; - case 200: + case 201: /* Line 1455 of yacc.c */ -#line 1579 "program_parse.y" +#line 1596 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; ;} break; - case 205: + case 206: /* Line 1455 of yacc.c */ -#line 1591 "program_parse.y" +#line 1608 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4023,30 +4047,30 @@ yyreduce: ;} break; - case 206: + case 207: /* Line 1455 of yacc.c */ -#line 1601 "program_parse.y" +#line 1618 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 207: + case 208: /* Line 1455 of yacc.c */ -#line 1606 "program_parse.y" +#line 1623 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 208: + case 209: /* Line 1455 of yacc.c */ -#line 1613 "program_parse.y" +#line 1630 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4056,10 +4080,10 @@ yyreduce: ;} break; - case 209: + case 210: /* Line 1455 of yacc.c */ -#line 1623 "program_parse.y" +#line 1640 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4069,30 +4093,30 @@ yyreduce: ;} break; - case 210: + case 211: /* Line 1455 of yacc.c */ -#line 1632 "program_parse.y" +#line 1649 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 211: + case 212: /* Line 1455 of yacc.c */ -#line 1637 "program_parse.y" +#line 1654 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 212: + case 213: /* Line 1455 of yacc.c */ -#line 1644 "program_parse.y" +#line 1661 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4102,10 +4126,10 @@ yyreduce: ;} break; - case 213: + case 214: /* Line 1455 of yacc.c */ -#line 1654 "program_parse.y" +#line 1671 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4115,10 +4139,10 @@ yyreduce: ;} break; - case 214: + case 215: /* Line 1455 of yacc.c */ -#line 1664 "program_parse.y" +#line 1681 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4128,10 +4152,10 @@ yyreduce: ;} break; - case 219: + case 220: /* Line 1455 of yacc.c */ -#line 1679 "program_parse.y" +#line 1696 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4141,10 +4165,10 @@ yyreduce: ;} break; - case 220: + case 221: /* Line 1455 of yacc.c */ -#line 1689 "program_parse.y" +#line 1706 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4154,10 +4178,10 @@ yyreduce: ;} break; - case 221: + case 222: /* Line 1455 of yacc.c */ -#line 1697 "program_parse.y" +#line 1714 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4167,10 +4191,10 @@ yyreduce: ;} break; - case 222: + case 223: /* Line 1455 of yacc.c */ -#line 1707 "program_parse.y" +#line 1724 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4180,10 +4204,10 @@ yyreduce: ;} break; - case 223: + case 224: /* Line 1455 of yacc.c */ -#line 1715 "program_parse.y" +#line 1732 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4193,10 +4217,10 @@ yyreduce: ;} break; - case 224: + case 225: /* Line 1455 of yacc.c */ -#line 1724 "program_parse.y" +#line 1741 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4206,10 +4230,10 @@ yyreduce: ;} break; - case 225: + case 226: /* Line 1455 of yacc.c */ -#line 1733 "program_parse.y" +#line 1750 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4219,63 +4243,63 @@ yyreduce: ;} break; - case 226: + case 227: /* Line 1455 of yacc.c */ -#line 1743 "program_parse.y" +#line 1760 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} break; - case 227: + case 228: /* Line 1455 of yacc.c */ -#line 1747 "program_parse.y" +#line 1764 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} break; - case 228: + case 229: /* Line 1455 of yacc.c */ -#line 1752 "program_parse.y" +#line 1769 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 229: + case 230: /* Line 1455 of yacc.c */ -#line 1753 "program_parse.y" +#line 1770 "program_parse.y" { (yyval.negate) = TRUE; ;} break; - case 230: + case 231: /* Line 1455 of yacc.c */ -#line 1754 "program_parse.y" +#line 1771 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 231: + case 232: /* Line 1455 of yacc.c */ -#line 1757 "program_parse.y" +#line 1774 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 233: + case 234: /* Line 1455 of yacc.c */ -#line 1760 "program_parse.y" +#line 1777 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 235: + case 236: /* Line 1455 of yacc.c */ -#line 1764 "program_parse.y" +#line 1781 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4283,10 +4307,10 @@ yyreduce: ;} break; - case 236: + case 237: /* Line 1455 of yacc.c */ -#line 1770 "program_parse.y" +#line 1787 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4294,10 +4318,10 @@ yyreduce: ;} break; - case 237: + case 238: /* Line 1455 of yacc.c */ -#line 1778 "program_parse.y" +#line 1795 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); @@ -4310,10 +4334,10 @@ yyreduce: ;} break; - case 238: + case 239: /* Line 1455 of yacc.c */ -#line 1791 "program_parse.y" +#line 1808 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4324,10 +4348,10 @@ yyreduce: ;} break; - case 239: + case 240: /* Line 1455 of yacc.c */ -#line 1800 "program_parse.y" +#line 1817 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4338,19 +4362,19 @@ yyreduce: ;} break; - case 240: + case 241: /* Line 1455 of yacc.c */ -#line 1809 "program_parse.y" +#line 1826 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 241: + case 242: /* Line 1455 of yacc.c */ -#line 1813 "program_parse.y" +#line 1830 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4361,10 +4385,10 @@ yyreduce: ;} break; - case 242: + case 243: /* Line 1455 of yacc.c */ -#line 1822 "program_parse.y" +#line 1839 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4375,10 +4399,10 @@ yyreduce: ;} break; - case 243: + case 244: /* Line 1455 of yacc.c */ -#line 1831 "program_parse.y" +#line 1848 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4389,19 +4413,19 @@ yyreduce: ;} break; - case 244: + case 245: /* Line 1455 of yacc.c */ -#line 1842 "program_parse.y" +#line 1859 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 245: + case 246: /* Line 1455 of yacc.c */ -#line 1848 "program_parse.y" +#line 1865 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4409,10 +4433,10 @@ yyreduce: ;} break; - case 246: + case 247: /* Line 1455 of yacc.c */ -#line 1854 "program_parse.y" +#line 1871 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4423,10 +4447,10 @@ yyreduce: ;} break; - case 247: + case 248: /* Line 1455 of yacc.c */ -#line 1863 "program_parse.y" +#line 1880 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4437,19 +4461,19 @@ yyreduce: ;} break; - case 248: + case 249: /* Line 1455 of yacc.c */ -#line 1874 "program_parse.y" +#line 1891 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 249: + case 250: /* Line 1455 of yacc.c */ -#line 1878 "program_parse.y" +#line 1895 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4460,10 +4484,10 @@ yyreduce: ;} break; - case 250: + case 251: /* Line 1455 of yacc.c */ -#line 1887 "program_parse.y" +#line 1904 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4474,94 +4498,94 @@ yyreduce: ;} break; - case 251: + case 252: /* Line 1455 of yacc.c */ -#line 1897 "program_parse.y" +#line 1914 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 252: + case 253: /* Line 1455 of yacc.c */ -#line 1898 "program_parse.y" +#line 1915 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 253: + case 254: /* Line 1455 of yacc.c */ -#line 1899 "program_parse.y" +#line 1916 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 254: + case 255: /* Line 1455 of yacc.c */ -#line 1902 "program_parse.y" +#line 1919 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 255: + case 256: /* Line 1455 of yacc.c */ -#line 1903 "program_parse.y" +#line 1920 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 256: + case 257: /* Line 1455 of yacc.c */ -#line 1904 "program_parse.y" +#line 1921 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 257: + case 258: /* Line 1455 of yacc.c */ -#line 1907 "program_parse.y" +#line 1924 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 258: + case 259: /* Line 1455 of yacc.c */ -#line 1908 "program_parse.y" +#line 1925 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 259: + case 260: /* Line 1455 of yacc.c */ -#line 1911 "program_parse.y" +#line 1928 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 260: + case 261: /* Line 1455 of yacc.c */ -#line 1912 "program_parse.y" +#line 1929 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 261: + case 262: /* Line 1455 of yacc.c */ -#line 1915 "program_parse.y" +#line 1932 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 262: + case 263: /* Line 1455 of yacc.c */ -#line 1916 "program_parse.y" +#line 1933 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 263: + case 264: /* Line 1455 of yacc.c */ -#line 1920 "program_parse.y" +#line 1937 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4572,10 +4596,10 @@ yyreduce: ;} break; - case 264: + case 265: /* Line 1455 of yacc.c */ -#line 1931 "program_parse.y" +#line 1948 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4586,10 +4610,10 @@ yyreduce: ;} break; - case 265: + case 266: /* Line 1455 of yacc.c */ -#line 1942 "program_parse.y" +#line 1959 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4600,10 +4624,10 @@ yyreduce: ;} break; - case 266: + case 267: /* Line 1455 of yacc.c */ -#line 1953 "program_parse.y" +#line 1970 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4627,7 +4651,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4631 "program_parse.tab.c" +#line 4655 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4846,7 +4870,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1973 "program_parse.y" +#line 1990 "program_parse.y" struct asm_instruction * diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 4cd459a096..fa94f763c4 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -534,6 +534,23 @@ scalarSrcReg: optionalSign srcReg scalarSuffix $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, $3.swizzle); } + | optionalSign paramConstScalarUse + { + struct asm_symbol temp_sym; + + if (!state->option.NV_fragment) { + yyerror(& @2, state, "expected scalar suffix"); + YYERROR; + } + + memset(& temp_sym, 0, sizeof(temp_sym)); + temp_sym.param_binding_begin = ~0; + initialize_symbol_from_const(state->prog, & temp_sym, & $2); + + init_src_reg(& $$); + $$.Base.File = PROGRAM_CONSTANT; + $$.Base.Index = temp_sym.param_binding_begin; + } ; swizzleSrcReg: optionalSign srcReg swizzleSuffix -- cgit v1.2.3 From eeb1402c0514248773e66f2077b0fb52f7245d56 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 3 Sep 2009 14:32:48 -0700 Subject: NV fp parser: Add support for absolute value operator on instruction operands --- src/mesa/shader/program_parse.tab.c | 1731 ++++++++++++++++++----------------- src/mesa/shader/program_parse.y | 51 +- 2 files changed, 942 insertions(+), 840 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 508ac617e4..505a1eb94f 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -588,16 +588,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 351 +#define YYLAST 375 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 116 +#define YYNTOKENS 117 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 135 +#define YYNNTS 136 /* YYNRULES -- Number of rules. */ -#define YYNRULES 267 +#define YYNRULES 270 /* YYNRULES -- Number of states. */ -#define YYNSTATES 448 +#define YYNSTATES 456 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -613,15 +613,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 111, 108, 112, 2, 2, 2, 2, + 2, 2, 2, 112, 108, 113, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, - 2, 113, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 114, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 109, 2, 110, 2, 2, 2, 2, 2, 2, + 2, 110, 2, 111, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 114, 2, 115, 2, 2, 2, 2, + 2, 2, 2, 115, 109, 116, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -657,110 +657,112 @@ static const yytype_uint16 yyprhs[] = 24, 27, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 59, 64, 69, 76, 83, 92, 101, 104, 117, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 144, 151, 155, 158, - 162, 165, 168, 176, 179, 181, 183, 185, 187, 192, - 194, 196, 198, 200, 202, 204, 206, 210, 211, 214, - 217, 219, 221, 223, 225, 227, 229, 231, 233, 235, - 236, 238, 240, 242, 244, 245, 247, 249, 251, 253, - 255, 257, 262, 265, 268, 270, 273, 275, 278, 280, - 283, 288, 293, 295, 296, 300, 302, 304, 307, 309, - 312, 314, 316, 320, 327, 328, 330, 333, 338, 340, - 344, 346, 348, 350, 352, 354, 356, 358, 360, 362, - 364, 367, 370, 373, 376, 379, 382, 385, 388, 391, - 394, 397, 400, 404, 406, 408, 410, 416, 418, 420, - 422, 425, 427, 429, 432, 434, 437, 444, 446, 450, - 452, 454, 456, 458, 460, 465, 467, 469, 471, 473, - 475, 477, 480, 482, 484, 490, 492, 495, 497, 499, - 505, 508, 509, 516, 520, 521, 523, 525, 527, 529, - 531, 534, 536, 538, 541, 546, 551, 552, 554, 556, - 558, 560, 563, 565, 567, 569, 571, 577, 579, 583, - 589, 595, 597, 601, 607, 609, 611, 613, 615, 617, - 619, 621, 623, 625, 629, 635, 643, 653, 656, 659, - 661, 663, 664, 665, 669, 670, 674, 678, 680, 685, - 688, 691, 694, 697, 701, 704, 708, 709, 711, 713, - 714, 716, 718, 719, 721, 723, 724, 726, 728, 729, - 733, 734, 738, 739, 743, 745, 747, 749 + 132, 134, 136, 138, 140, 142, 144, 151, 154, 159, + 162, 164, 168, 174, 177, 180, 188, 191, 193, 195, + 197, 199, 204, 206, 208, 210, 212, 214, 216, 218, + 222, 223, 226, 229, 231, 233, 235, 237, 239, 241, + 243, 245, 247, 248, 250, 252, 254, 256, 257, 259, + 261, 263, 265, 267, 269, 274, 277, 280, 282, 285, + 287, 290, 292, 295, 300, 305, 307, 308, 312, 314, + 316, 319, 321, 324, 326, 328, 332, 339, 340, 342, + 345, 350, 352, 356, 358, 360, 362, 364, 366, 368, + 370, 372, 374, 376, 379, 382, 385, 388, 391, 394, + 397, 400, 403, 406, 409, 412, 416, 418, 420, 422, + 428, 430, 432, 434, 437, 439, 441, 444, 446, 449, + 456, 458, 462, 464, 466, 468, 470, 472, 477, 479, + 481, 483, 485, 487, 489, 492, 494, 496, 502, 504, + 507, 509, 511, 517, 520, 521, 528, 532, 533, 535, + 537, 539, 541, 543, 546, 548, 550, 553, 558, 563, + 564, 566, 568, 570, 572, 575, 577, 579, 581, 583, + 589, 591, 595, 601, 607, 609, 613, 619, 621, 623, + 625, 627, 629, 631, 633, 635, 637, 641, 647, 655, + 665, 668, 671, 673, 675, 676, 677, 681, 682, 686, + 690, 692, 697, 700, 703, 706, 709, 713, 716, 720, + 721, 723, 725, 726, 728, 730, 731, 733, 735, 736, + 738, 740, 741, 745, 746, 750, 751, 755, 757, 759, + 761 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 117, 0, -1, 118, 119, 121, 12, -1, 3, -1, - 4, -1, 119, 120, -1, -1, 8, 99, 107, -1, - 121, 122, -1, -1, 123, 107, -1, 160, 107, -1, - 124, -1, 125, -1, 126, -1, 127, -1, 128, -1, - 129, -1, 130, -1, 131, -1, 137, -1, 132, -1, - 133, -1, 134, -1, 19, 141, 108, 138, -1, 18, - 140, 108, 139, -1, 16, 140, 108, 138, -1, 14, - 140, 108, 138, 108, 138, -1, 13, 140, 108, 139, - 108, 139, -1, 17, 140, 108, 139, 108, 139, 108, - 139, -1, 15, 140, 108, 139, 108, 135, 108, 136, - -1, 20, 139, -1, 22, 140, 108, 139, 108, 139, - 108, 139, 108, 135, 108, 136, -1, 83, 245, -1, + 118, 0, -1, 119, 120, 122, 12, -1, 3, -1, + 4, -1, 120, 121, -1, -1, 8, 99, 107, -1, + 122, 123, -1, -1, 124, 107, -1, 162, 107, -1, + 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, + 130, -1, 131, -1, 132, -1, 138, -1, 133, -1, + 134, -1, 135, -1, 19, 143, 108, 139, -1, 18, + 142, 108, 141, -1, 16, 142, 108, 139, -1, 14, + 142, 108, 139, 108, 139, -1, 13, 142, 108, 141, + 108, 141, -1, 17, 142, 108, 141, 108, 141, 108, + 141, -1, 15, 142, 108, 141, 108, 136, 108, 137, + -1, 20, 141, -1, 22, 142, 108, 141, 108, 141, + 108, 141, 108, 136, 108, 137, -1, 83, 247, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, - 94, -1, 95, -1, 21, 140, 108, 145, 108, 142, - -1, 231, 145, 157, -1, 231, 228, -1, 231, 145, - 158, -1, 146, 159, -1, 154, 156, -1, 143, 108, - 143, 108, 143, 108, 143, -1, 231, 144, -1, 23, - -1, 99, -1, 99, -1, 162, -1, 147, 109, 148, - 110, -1, 176, -1, 238, -1, 99, -1, 99, -1, - 149, -1, 150, -1, 23, -1, 154, 155, 151, -1, - -1, 111, 152, -1, 112, 153, -1, 23, -1, 23, - -1, 99, -1, 103, -1, 103, -1, 103, -1, 103, - -1, 100, -1, 104, -1, -1, 100, -1, 101, -1, - 102, -1, 103, -1, -1, 161, -1, 168, -1, 232, - -1, 234, -1, 237, -1, 250, -1, 7, 99, 113, - 162, -1, 96, 163, -1, 38, 167, -1, 60, -1, - 98, 165, -1, 53, -1, 29, 243, -1, 37, -1, - 74, 244, -1, 50, 109, 166, 110, -1, 97, 109, - 164, 110, -1, 23, -1, -1, 109, 166, 110, -1, - 23, -1, 60, -1, 29, 243, -1, 37, -1, 74, - 244, -1, 169, -1, 170, -1, 10, 99, 172, -1, - 10, 99, 109, 171, 110, 173, -1, -1, 23, -1, - 113, 175, -1, 113, 114, 174, 115, -1, 177, -1, - 174, 108, 177, -1, 179, -1, 215, -1, 225, -1, - 179, -1, 215, -1, 226, -1, 178, -1, 216, -1, - 225, -1, 179, -1, 73, 203, -1, 73, 180, -1, - 73, 182, -1, 73, 185, -1, 73, 187, -1, 73, - 193, -1, 73, 189, -1, 73, 196, -1, 73, 198, - -1, 73, 200, -1, 73, 202, -1, 73, 214, -1, - 47, 242, 181, -1, 191, -1, 33, -1, 69, -1, - 43, 109, 192, 110, 183, -1, 191, -1, 60, -1, - 26, -1, 72, 184, -1, 40, -1, 32, -1, 44, - 186, -1, 25, -1, 242, 67, -1, 45, 109, 192, - 110, 242, 188, -1, 191, -1, 75, 246, 190, -1, - 29, -1, 25, -1, 31, -1, 71, -1, 23, -1, - 76, 244, 194, 195, -1, 35, -1, 54, -1, 79, - -1, 80, -1, 78, -1, 77, -1, 36, 197, -1, - 29, -1, 56, -1, 28, 109, 199, 110, 57, -1, - 23, -1, 58, 201, -1, 70, -1, 26, -1, 205, - 66, 109, 208, 110, -1, 205, 204, -1, -1, 66, - 109, 208, 105, 208, 110, -1, 49, 209, 206, -1, - -1, 207, -1, 41, -1, 82, -1, 42, -1, 23, - -1, 51, 210, -1, 63, -1, 52, -1, 81, 244, - -1, 55, 109, 212, 110, -1, 48, 109, 213, 110, - -1, -1, 211, -1, 23, -1, 23, -1, 23, -1, - 30, 64, -1, 219, -1, 222, -1, 217, -1, 220, - -1, 62, 34, 109, 218, 110, -1, 223, -1, 223, - 105, 223, -1, 62, 34, 109, 223, 110, -1, 62, - 46, 109, 221, 110, -1, 224, -1, 224, 105, 224, - -1, 62, 46, 109, 224, 110, -1, 23, -1, 23, - -1, 227, -1, 229, -1, 228, -1, 229, -1, 230, - -1, 24, -1, 23, -1, 114, 230, 115, -1, 114, - 230, 108, 230, 115, -1, 114, 230, 108, 230, 108, - 230, 115, -1, 114, 230, 108, 230, 108, 230, 108, - 230, 115, -1, 231, 24, -1, 231, 23, -1, 111, - -1, 112, -1, -1, -1, 11, 233, 236, -1, -1, - 5, 235, 236, -1, 236, 108, 99, -1, 99, -1, - 9, 99, 113, 238, -1, 65, 60, -1, 65, 37, - -1, 65, 239, -1, 65, 59, -1, 65, 74, 244, - -1, 65, 30, -1, 29, 240, 241, -1, -1, 39, - -1, 27, -1, -1, 61, -1, 68, -1, -1, 39, - -1, 27, -1, -1, 61, -1, 68, -1, -1, 109, - 247, 110, -1, -1, 109, 248, 110, -1, -1, 109, - 249, 110, -1, 23, -1, 23, -1, 23, -1, 6, - 99, 113, 99, -1 + 94, -1, 95, -1, 21, 142, 108, 147, 108, 144, + -1, 233, 140, -1, 233, 109, 140, 109, -1, 147, + 159, -1, 230, -1, 233, 147, 160, -1, 233, 109, + 147, 160, 109, -1, 148, 161, -1, 156, 158, -1, + 145, 108, 145, 108, 145, 108, 145, -1, 233, 146, + -1, 23, -1, 99, -1, 99, -1, 164, -1, 149, + 110, 150, 111, -1, 178, -1, 240, -1, 99, -1, + 99, -1, 151, -1, 152, -1, 23, -1, 156, 157, + 153, -1, -1, 112, 154, -1, 113, 155, -1, 23, + -1, 23, -1, 99, -1, 103, -1, 103, -1, 103, + -1, 103, -1, 100, -1, 104, -1, -1, 100, -1, + 101, -1, 102, -1, 103, -1, -1, 163, -1, 170, + -1, 234, -1, 236, -1, 239, -1, 252, -1, 7, + 99, 114, 164, -1, 96, 165, -1, 38, 169, -1, + 60, -1, 98, 167, -1, 53, -1, 29, 245, -1, + 37, -1, 74, 246, -1, 50, 110, 168, 111, -1, + 97, 110, 166, 111, -1, 23, -1, -1, 110, 168, + 111, -1, 23, -1, 60, -1, 29, 245, -1, 37, + -1, 74, 246, -1, 171, -1, 172, -1, 10, 99, + 174, -1, 10, 99, 110, 173, 111, 175, -1, -1, + 23, -1, 114, 177, -1, 114, 115, 176, 116, -1, + 179, -1, 176, 108, 179, -1, 181, -1, 217, -1, + 227, -1, 181, -1, 217, -1, 228, -1, 180, -1, + 218, -1, 227, -1, 181, -1, 73, 205, -1, 73, + 182, -1, 73, 184, -1, 73, 187, -1, 73, 189, + -1, 73, 195, -1, 73, 191, -1, 73, 198, -1, + 73, 200, -1, 73, 202, -1, 73, 204, -1, 73, + 216, -1, 47, 244, 183, -1, 193, -1, 33, -1, + 69, -1, 43, 110, 194, 111, 185, -1, 193, -1, + 60, -1, 26, -1, 72, 186, -1, 40, -1, 32, + -1, 44, 188, -1, 25, -1, 244, 67, -1, 45, + 110, 194, 111, 244, 190, -1, 193, -1, 75, 248, + 192, -1, 29, -1, 25, -1, 31, -1, 71, -1, + 23, -1, 76, 246, 196, 197, -1, 35, -1, 54, + -1, 79, -1, 80, -1, 78, -1, 77, -1, 36, + 199, -1, 29, -1, 56, -1, 28, 110, 201, 111, + 57, -1, 23, -1, 58, 203, -1, 70, -1, 26, + -1, 207, 66, 110, 210, 111, -1, 207, 206, -1, + -1, 66, 110, 210, 105, 210, 111, -1, 49, 211, + 208, -1, -1, 209, -1, 41, -1, 82, -1, 42, + -1, 23, -1, 51, 212, -1, 63, -1, 52, -1, + 81, 246, -1, 55, 110, 214, 111, -1, 48, 110, + 215, 111, -1, -1, 213, -1, 23, -1, 23, -1, + 23, -1, 30, 64, -1, 221, -1, 224, -1, 219, + -1, 222, -1, 62, 34, 110, 220, 111, -1, 225, + -1, 225, 105, 225, -1, 62, 34, 110, 225, 111, + -1, 62, 46, 110, 223, 111, -1, 226, -1, 226, + 105, 226, -1, 62, 46, 110, 226, 111, -1, 23, + -1, 23, -1, 229, -1, 231, -1, 230, -1, 231, + -1, 232, -1, 24, -1, 23, -1, 115, 232, 116, + -1, 115, 232, 108, 232, 116, -1, 115, 232, 108, + 232, 108, 232, 116, -1, 115, 232, 108, 232, 108, + 232, 108, 232, 116, -1, 233, 24, -1, 233, 23, + -1, 112, -1, 113, -1, -1, -1, 11, 235, 238, + -1, -1, 5, 237, 238, -1, 238, 108, 99, -1, + 99, -1, 9, 99, 114, 240, -1, 65, 60, -1, + 65, 37, -1, 65, 241, -1, 65, 59, -1, 65, + 74, 246, -1, 65, 30, -1, 29, 242, 243, -1, + -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, + -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, + -1, 110, 249, 111, -1, -1, 110, 250, 111, -1, + -1, 110, 251, 111, -1, 23, -1, 23, -1, 23, + -1, 6, 99, 114, 99, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -770,29 +772,30 @@ static const yytype_uint16 yyrline[] = 309, 324, 327, 332, 339, 340, 341, 342, 343, 344, 345, 348, 349, 350, 353, 359, 366, 373, 381, 388, 396, 441, 448, 493, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 513, 526, 537, 556, - 569, 591, 600, 633, 640, 655, 705, 747, 758, 779, - 789, 795, 826, 843, 843, 845, 852, 864, 865, 866, - 869, 881, 893, 911, 922, 934, 936, 937, 938, 939, - 942, 942, 942, 942, 943, 946, 947, 948, 949, 950, - 951, 954, 972, 976, 982, 986, 990, 994, 1003, 1012, - 1016, 1021, 1027, 1038, 1038, 1039, 1041, 1045, 1049, 1053, - 1059, 1059, 1061, 1077, 1100, 1103, 1114, 1120, 1126, 1127, - 1134, 1140, 1146, 1154, 1160, 1166, 1174, 1180, 1186, 1194, - 1195, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206, - 1207, 1208, 1211, 1220, 1224, 1228, 1234, 1243, 1247, 1251, - 1260, 1264, 1270, 1276, 1283, 1288, 1296, 1306, 1308, 1316, - 1322, 1326, 1330, 1336, 1347, 1356, 1360, 1365, 1369, 1373, - 1377, 1383, 1390, 1394, 1400, 1408, 1419, 1426, 1430, 1436, - 1446, 1457, 1461, 1479, 1488, 1491, 1497, 1501, 1505, 1511, - 1522, 1527, 1532, 1537, 1542, 1547, 1555, 1558, 1563, 1576, - 1584, 1595, 1603, 1603, 1605, 1605, 1607, 1617, 1622, 1629, - 1639, 1648, 1653, 1660, 1670, 1680, 1692, 1692, 1693, 1693, - 1695, 1705, 1713, 1723, 1731, 1739, 1748, 1759, 1763, 1769, - 1770, 1771, 1774, 1774, 1777, 1777, 1780, 1786, 1794, 1807, - 1816, 1825, 1829, 1838, 1847, 1858, 1865, 1870, 1879, 1891, - 1894, 1903, 1914, 1915, 1916, 1919, 1920, 1921, 1924, 1925, - 1928, 1929, 1932, 1933, 1936, 1947, 1958, 1969 + 505, 506, 507, 508, 509, 510, 513, 526, 534, 551, + 558, 577, 588, 608, 630, 639, 672, 679, 694, 744, + 786, 797, 818, 828, 834, 865, 882, 882, 884, 891, + 903, 904, 905, 908, 920, 932, 950, 961, 973, 975, + 976, 977, 978, 981, 981, 981, 981, 982, 985, 986, + 987, 988, 989, 990, 993, 1011, 1015, 1021, 1025, 1029, + 1033, 1042, 1051, 1055, 1060, 1066, 1077, 1077, 1078, 1080, + 1084, 1088, 1092, 1098, 1098, 1100, 1116, 1139, 1142, 1153, + 1159, 1165, 1166, 1173, 1179, 1185, 1193, 1199, 1205, 1213, + 1219, 1225, 1233, 1234, 1237, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1250, 1259, 1263, 1267, 1273, + 1282, 1286, 1290, 1299, 1303, 1309, 1315, 1322, 1327, 1335, + 1345, 1347, 1355, 1361, 1365, 1369, 1375, 1386, 1395, 1399, + 1404, 1408, 1412, 1416, 1422, 1429, 1433, 1439, 1447, 1458, + 1465, 1469, 1475, 1485, 1496, 1500, 1518, 1527, 1530, 1536, + 1540, 1544, 1550, 1561, 1566, 1571, 1576, 1581, 1586, 1594, + 1597, 1602, 1615, 1623, 1634, 1642, 1642, 1644, 1644, 1646, + 1656, 1661, 1668, 1678, 1687, 1692, 1699, 1709, 1719, 1731, + 1731, 1732, 1732, 1734, 1744, 1752, 1762, 1770, 1778, 1787, + 1798, 1802, 1808, 1809, 1810, 1813, 1813, 1816, 1816, 1819, + 1825, 1833, 1846, 1855, 1864, 1868, 1877, 1886, 1897, 1904, + 1909, 1918, 1930, 1933, 1942, 1953, 1954, 1955, 1958, 1959, + 1960, 1963, 1964, 1967, 1968, 1971, 1972, 1975, 1986, 1997, + 2008 }; #endif @@ -818,45 +821,45 @@ static const char *const yytname[] = "TEX_SHADOW2D", "TEX_SHADOWRECT", "TEX_ARRAY1D", "TEX_ARRAY2D", "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", "WEIGHT", "IDENTIFIER", "MASK4", "MASK3", "MASK2", "MASK1", "SWIZZLE", - "DOT_DOT", "DOT", "';'", "','", "'['", "']'", "'+'", "'-'", "'='", "'{'", - "'}'", "$accept", "program", "language", "optionSequence", "option", - "statementSequence", "statement", "instruction", "ALU_instruction", - "TexInstruction", "ARL_instruction", "VECTORop_instruction", - "SCALARop_instruction", "BINSCop_instruction", "BINop_instruction", - "TRIop_instruction", "SAMPLE_instruction", "KIL_instruction", - "TXD_instruction", "texImageUnit", "texTarget", "SWZ_instruction", - "scalarSrcReg", "swizzleSrcReg", "maskedDstReg", "maskedAddrReg", - "extendedSwizzle", "extSwizComp", "extSwizSel", "srcReg", "dstReg", - "progParamArray", "progParamArrayMem", "progParamArrayAbs", - "progParamArrayRel", "addrRegRelOffset", "addrRegPosOffset", - "addrRegNegOffset", "addrReg", "addrComponent", "addrWriteMask", - "scalarSuffix", "swizzleSuffix", "optionalMask", "namingStatement", - "ATTRIB_statement", "attribBinding", "vtxAttribItem", "vtxAttribNum", - "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", "PARAM_statement", - "PARAM_singleStmt", "PARAM_multipleStmt", "optArraySize", - "paramSingleInit", "paramMultipleInit", "paramMultInitList", - "paramSingleItemDecl", "paramSingleItemUse", "paramMultipleItem", - "stateMultipleItem", "stateSingleItem", "stateMaterialItem", - "stateMatProperty", "stateLightItem", "stateLightProperty", - "stateSpotProperty", "stateLightModelItem", "stateLModProperty", - "stateLightProdItem", "stateLProdProperty", "stateTexEnvItem", - "stateTexEnvProperty", "ambDiffSpecProperty", "stateLightNumber", - "stateTexGenItem", "stateTexGenType", "stateTexGenCoord", "stateFogItem", - "stateFogProperty", "stateClipPlaneItem", "stateClipPlaneNum", - "statePointItem", "statePointProperty", "stateMatrixRow", - "stateMatrixRows", "optMatrixRows", "stateMatrixItem", - "stateOptMatModifier", "stateMatModifier", "stateMatrixRowNum", - "stateMatrixName", "stateOptModMatNum", "stateModMatNum", - "statePaletteMatNum", "stateProgramMatNum", "stateDepthItem", - "programSingleItem", "programMultipleItem", "progEnvParams", - "progEnvParamNums", "progEnvParam", "progLocalParams", - "progLocalParamNums", "progLocalParam", "progEnvParamNum", - "progLocalParamNum", "paramConstDecl", "paramConstUse", - "paramConstScalarDecl", "paramConstScalarUse", "paramConstVector", - "signedFloatConstant", "optionalSign", "TEMP_statement", "@1", - "ADDRESS_statement", "@2", "varNameList", "OUTPUT_statement", - "resultBinding", "resultColBinding", "optResultFaceType", - "optResultColorType", "optFaceType", "optColorType", + "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", "'+'", "'-'", "'='", + "'{'", "'}'", "$accept", "program", "language", "optionSequence", + "option", "statementSequence", "statement", "instruction", + "ALU_instruction", "TexInstruction", "ARL_instruction", + "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", + "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", + "KIL_instruction", "TXD_instruction", "texImageUnit", "texTarget", + "SWZ_instruction", "scalarSrcReg", "scalarUse", "swizzleSrcReg", + "maskedDstReg", "maskedAddrReg", "extendedSwizzle", "extSwizComp", + "extSwizSel", "srcReg", "dstReg", "progParamArray", "progParamArrayMem", + "progParamArrayAbs", "progParamArrayRel", "addrRegRelOffset", + "addrRegPosOffset", "addrRegNegOffset", "addrReg", "addrComponent", + "addrWriteMask", "scalarSuffix", "swizzleSuffix", "optionalMask", + "namingStatement", "ATTRIB_statement", "attribBinding", "vtxAttribItem", + "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", + "PARAM_statement", "PARAM_singleStmt", "PARAM_multipleStmt", + "optArraySize", "paramSingleInit", "paramMultipleInit", + "paramMultInitList", "paramSingleItemDecl", "paramSingleItemUse", + "paramMultipleItem", "stateMultipleItem", "stateSingleItem", + "stateMaterialItem", "stateMatProperty", "stateLightItem", + "stateLightProperty", "stateSpotProperty", "stateLightModelItem", + "stateLModProperty", "stateLightProdItem", "stateLProdProperty", + "stateTexEnvItem", "stateTexEnvProperty", "ambDiffSpecProperty", + "stateLightNumber", "stateTexGenItem", "stateTexGenType", + "stateTexGenCoord", "stateFogItem", "stateFogProperty", + "stateClipPlaneItem", "stateClipPlaneNum", "statePointItem", + "statePointProperty", "stateMatrixRow", "stateMatrixRows", + "optMatrixRows", "stateMatrixItem", "stateOptMatModifier", + "stateMatModifier", "stateMatrixRowNum", "stateMatrixName", + "stateOptModMatNum", "stateModMatNum", "statePaletteMatNum", + "stateProgramMatNum", "stateDepthItem", "programSingleItem", + "programMultipleItem", "progEnvParams", "progEnvParamNums", + "progEnvParam", "progLocalParams", "progLocalParamNums", + "progLocalParam", "progEnvParamNum", "progLocalParamNum", + "paramConstDecl", "paramConstUse", "paramConstScalarDecl", + "paramConstScalarUse", "paramConstVector", "signedFloatConstant", + "optionalSign", "TEMP_statement", "@1", "ADDRESS_statement", "@2", + "varNameList", "OUTPUT_statement", "resultBinding", "resultColBinding", + "optResultFaceType", "optResultColorType", "optFaceType", "optColorType", "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum", "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", "ALIAS_statement", 0 @@ -878,41 +881,42 @@ static const yytype_uint16 yytoknum[] = 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 59, 44, 91, - 93, 43, 45, 61, 123, 125 + 355, 356, 357, 358, 359, 360, 361, 59, 44, 124, + 91, 93, 43, 45, 61, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 116, 117, 118, 118, 119, 119, 120, 121, 121, - 122, 122, 123, 123, 124, 124, 124, 124, 124, 124, - 124, 125, 125, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 136, 136, 136, 136, 136, - 136, 136, 136, 136, 136, 136, 137, 138, 138, 139, - 140, 141, 142, 143, 144, 144, 145, 145, 145, 145, - 146, 146, 147, 148, 148, 149, 150, 151, 151, 151, - 152, 153, 154, 155, 156, 157, 158, 158, 158, 158, - 159, 159, 159, 159, 159, 160, 160, 160, 160, 160, - 160, 161, 162, 162, 163, 163, 163, 163, 163, 163, - 163, 163, 164, 165, 165, 166, 167, 167, 167, 167, - 168, 168, 169, 170, 171, 171, 172, 173, 174, 174, - 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, - 178, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 180, 181, 181, 181, 182, 183, 183, 183, - 183, 183, 184, 185, 186, 186, 187, 188, 189, 190, - 191, 191, 191, 192, 193, 194, 194, 195, 195, 195, - 195, 196, 197, 197, 198, 199, 200, 201, 201, 202, - 203, 204, 204, 205, 206, 206, 207, 207, 207, 208, - 209, 209, 209, 209, 209, 209, 210, 210, 211, 212, - 213, 214, 215, 215, 216, 216, 217, 218, 218, 219, - 220, 221, 221, 222, 223, 224, 225, 225, 226, 226, - 227, 228, 228, 229, 229, 229, 229, 230, 230, 231, - 231, 231, 233, 232, 235, 234, 236, 236, 237, 238, - 238, 238, 238, 238, 238, 239, 240, 240, 240, 241, - 241, 241, 242, 242, 242, 243, 243, 243, 244, 244, - 245, 245, 246, 246, 247, 248, 249, 250 + 0, 117, 118, 119, 119, 120, 120, 121, 122, 122, + 123, 123, 124, 124, 125, 125, 125, 125, 125, 125, + 125, 126, 126, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 138, 139, 139, 140, + 140, 141, 141, 142, 143, 144, 145, 146, 146, 147, + 147, 147, 147, 148, 148, 149, 150, 150, 151, 152, + 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, + 160, 160, 160, 161, 161, 161, 161, 161, 162, 162, + 162, 162, 162, 162, 163, 164, 164, 165, 165, 165, + 165, 165, 165, 165, 165, 166, 167, 167, 168, 169, + 169, 169, 169, 170, 170, 171, 172, 173, 173, 174, + 175, 176, 176, 177, 177, 177, 178, 178, 178, 179, + 179, 179, 180, 180, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 182, 183, 183, 183, 184, + 185, 185, 185, 185, 185, 186, 187, 188, 188, 189, + 190, 191, 192, 193, 193, 193, 194, 195, 196, 196, + 197, 197, 197, 197, 198, 199, 199, 200, 201, 202, + 203, 203, 204, 205, 206, 206, 207, 208, 208, 209, + 209, 209, 210, 211, 211, 211, 211, 211, 211, 212, + 212, 213, 214, 215, 216, 217, 217, 218, 218, 219, + 220, 220, 221, 222, 223, 223, 224, 225, 226, 227, + 227, 228, 228, 229, 230, 230, 231, 231, 231, 231, + 232, 232, 233, 233, 233, 235, 234, 237, 236, 238, + 238, 239, 240, 240, 240, 240, 240, 240, 241, 242, + 242, 242, 243, 243, 243, 244, 244, 244, 245, 245, + 245, 246, 246, 247, 247, 248, 248, 249, 250, 251, + 252 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -922,29 +926,30 @@ static const yytype_uint8 yyr2[] = 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, 8, 2, 12, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 6, 3, 2, 3, - 2, 2, 7, 2, 1, 1, 1, 1, 4, 1, - 1, 1, 1, 1, 1, 1, 3, 0, 2, 2, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, - 1, 4, 2, 2, 1, 2, 1, 2, 1, 2, - 4, 4, 1, 0, 3, 1, 1, 2, 1, 2, - 1, 1, 3, 6, 0, 1, 2, 4, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 3, 1, 1, 1, 5, 1, 1, 1, - 2, 1, 1, 2, 1, 2, 6, 1, 3, 1, - 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 5, 1, 2, 1, 1, 5, - 2, 0, 6, 3, 0, 1, 1, 1, 1, 1, - 2, 1, 1, 2, 4, 4, 0, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 5, 1, 3, 5, - 5, 1, 3, 5, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 5, 7, 9, 2, 2, 1, - 1, 0, 0, 3, 0, 3, 3, 1, 4, 2, - 2, 2, 2, 3, 2, 3, 0, 1, 1, 0, - 1, 1, 0, 1, 1, 0, 1, 1, 0, 3, - 0, 3, 0, 3, 1, 1, 1, 4 + 1, 1, 1, 1, 1, 1, 6, 2, 4, 2, + 1, 3, 5, 2, 2, 7, 2, 1, 1, 1, + 1, 4, 1, 1, 1, 1, 1, 1, 1, 3, + 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, + 1, 1, 1, 1, 4, 2, 2, 1, 2, 1, + 2, 1, 2, 4, 4, 1, 0, 3, 1, 1, + 2, 1, 2, 1, 1, 3, 6, 0, 1, 2, + 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 3, 1, 1, 1, 5, + 1, 1, 1, 2, 1, 1, 2, 1, 2, 6, + 1, 3, 1, 1, 1, 1, 1, 4, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 5, 1, 2, + 1, 1, 5, 2, 0, 6, 3, 0, 1, 1, + 1, 1, 1, 2, 1, 1, 2, 4, 4, 0, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 5, + 1, 3, 5, 5, 1, 3, 5, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 5, 7, 9, + 2, 2, 1, 1, 0, 0, 3, 0, 3, 3, + 1, 4, 2, 2, 2, 2, 3, 2, 3, 0, + 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, + 1, 0, 3, 0, 3, 0, 3, 1, 1, 1, + 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -953,276 +958,283 @@ static const yytype_uint8 yyr2[] = static const yytype_uint16 yydefact[] = { 0, 3, 4, 0, 6, 1, 9, 0, 5, 0, - 0, 234, 0, 0, 0, 0, 232, 2, 0, 0, - 0, 0, 0, 0, 0, 231, 0, 0, 8, 0, + 0, 237, 0, 0, 0, 0, 235, 2, 0, 0, + 0, 0, 0, 0, 0, 234, 0, 0, 8, 0, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, - 23, 20, 0, 85, 86, 110, 111, 87, 88, 89, - 90, 7, 0, 0, 0, 0, 0, 0, 0, 61, - 0, 84, 60, 0, 0, 0, 0, 0, 72, 0, - 0, 229, 230, 31, 0, 0, 0, 10, 11, 237, - 235, 0, 0, 0, 114, 231, 112, 233, 246, 244, - 240, 242, 239, 258, 241, 231, 80, 81, 82, 83, - 50, 231, 231, 231, 231, 231, 231, 74, 51, 222, - 221, 0, 0, 0, 0, 56, 231, 79, 0, 57, - 59, 123, 124, 202, 203, 125, 218, 219, 0, 231, - 0, 267, 91, 238, 115, 0, 116, 120, 121, 122, - 216, 217, 220, 0, 248, 247, 249, 0, 243, 0, - 0, 0, 0, 26, 0, 25, 24, 255, 108, 106, - 258, 93, 0, 0, 0, 0, 0, 0, 252, 0, - 252, 0, 0, 262, 258, 131, 132, 133, 134, 136, - 135, 137, 138, 139, 140, 0, 141, 255, 98, 0, - 96, 94, 258, 0, 103, 92, 0, 77, 76, 78, - 49, 0, 0, 0, 236, 0, 228, 227, 250, 251, - 245, 264, 0, 231, 231, 0, 48, 0, 231, 256, - 257, 107, 109, 0, 0, 0, 201, 172, 173, 171, - 0, 154, 254, 253, 153, 0, 0, 0, 0, 196, - 192, 0, 191, 258, 184, 178, 177, 176, 0, 0, - 0, 0, 97, 0, 99, 0, 0, 95, 231, 223, - 65, 0, 63, 64, 0, 231, 231, 0, 113, 259, - 28, 27, 75, 47, 260, 0, 0, 214, 0, 215, - 0, 175, 0, 163, 0, 155, 0, 160, 161, 144, - 145, 162, 142, 143, 0, 198, 190, 197, 0, 193, - 186, 188, 187, 183, 185, 266, 0, 159, 158, 165, - 166, 0, 0, 105, 0, 102, 0, 0, 0, 58, - 73, 67, 46, 0, 0, 0, 231, 0, 33, 0, - 231, 209, 213, 0, 0, 252, 200, 0, 199, 0, - 263, 170, 169, 167, 168, 164, 189, 0, 100, 101, - 104, 231, 224, 0, 0, 66, 231, 54, 55, 53, - 231, 0, 0, 0, 118, 126, 129, 127, 204, 205, - 128, 265, 0, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 30, 29, 174, 149, 151, - 148, 0, 146, 147, 0, 195, 194, 179, 0, 70, - 68, 71, 69, 0, 0, 0, 0, 130, 181, 231, - 117, 261, 152, 150, 156, 157, 231, 225, 231, 0, - 0, 0, 0, 180, 119, 0, 0, 0, 0, 207, - 0, 211, 0, 226, 231, 0, 206, 0, 210, 0, - 0, 52, 32, 208, 212, 0, 0, 182 + 23, 20, 0, 88, 89, 113, 114, 90, 91, 92, + 93, 7, 0, 0, 0, 0, 0, 0, 0, 64, + 0, 87, 63, 0, 0, 0, 0, 0, 75, 0, + 0, 232, 233, 31, 0, 0, 0, 10, 11, 240, + 238, 0, 0, 0, 117, 234, 115, 236, 249, 247, + 243, 245, 242, 261, 244, 234, 83, 84, 85, 86, + 53, 234, 234, 234, 234, 234, 234, 77, 54, 225, + 224, 0, 0, 0, 0, 59, 0, 234, 82, 0, + 60, 62, 126, 127, 205, 206, 128, 221, 222, 0, + 234, 0, 270, 94, 241, 118, 0, 119, 123, 124, + 125, 219, 220, 223, 0, 251, 250, 252, 0, 246, + 0, 0, 0, 0, 26, 0, 25, 24, 258, 111, + 109, 261, 96, 0, 0, 0, 0, 0, 0, 255, + 0, 255, 0, 0, 265, 261, 134, 135, 136, 137, + 139, 138, 140, 141, 142, 143, 0, 144, 258, 101, + 0, 99, 97, 261, 0, 106, 95, 82, 0, 80, + 79, 81, 51, 0, 0, 0, 239, 0, 231, 230, + 253, 254, 248, 267, 0, 234, 234, 0, 47, 0, + 50, 0, 234, 259, 260, 110, 112, 0, 0, 0, + 204, 175, 176, 174, 0, 157, 257, 256, 156, 0, + 0, 0, 0, 199, 195, 0, 194, 261, 187, 181, + 180, 179, 0, 0, 0, 0, 100, 0, 102, 0, + 0, 98, 0, 234, 226, 68, 0, 66, 67, 0, + 234, 234, 0, 116, 262, 28, 27, 0, 78, 49, + 263, 0, 0, 217, 0, 218, 0, 178, 0, 166, + 0, 158, 0, 163, 164, 147, 148, 165, 145, 146, + 0, 201, 193, 200, 0, 196, 189, 191, 190, 186, + 188, 269, 0, 162, 161, 168, 169, 0, 0, 108, + 0, 105, 0, 0, 52, 0, 61, 76, 70, 46, + 0, 0, 0, 234, 48, 0, 33, 0, 234, 212, + 216, 0, 0, 255, 203, 0, 202, 0, 266, 173, + 172, 170, 171, 167, 192, 0, 103, 104, 107, 234, + 227, 0, 0, 69, 234, 57, 58, 56, 234, 0, + 0, 0, 121, 129, 132, 130, 207, 208, 131, 268, + 0, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 30, 29, 177, 152, 154, 151, 0, + 149, 150, 0, 198, 197, 182, 0, 73, 71, 74, + 72, 0, 0, 0, 0, 133, 184, 234, 120, 264, + 155, 153, 159, 160, 234, 228, 234, 0, 0, 0, + 0, 183, 122, 0, 0, 0, 0, 210, 0, 214, + 0, 229, 234, 0, 209, 0, 213, 0, 0, 55, + 32, 211, 215, 0, 0, 185 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 275, - 385, 41, 150, 73, 60, 69, 322, 323, 359, 117, - 61, 118, 261, 262, 263, 355, 400, 402, 70, 321, - 108, 273, 200, 100, 42, 43, 119, 195, 316, 257, - 314, 161, 44, 45, 46, 135, 86, 268, 363, 136, - 120, 364, 365, 121, 175, 292, 176, 392, 413, 177, - 234, 178, 414, 179, 308, 293, 284, 180, 311, 345, - 181, 229, 182, 282, 183, 247, 184, 407, 423, 185, - 303, 304, 347, 244, 296, 297, 339, 337, 186, 122, - 367, 368, 428, 123, 369, 430, 124, 278, 280, 370, - 125, 140, 126, 127, 142, 74, 47, 57, 48, 52, - 80, 49, 62, 94, 146, 210, 235, 221, 148, 328, - 249, 212, 372, 306, 50 + 32, 33, 34, 35, 36, 37, 38, 39, 40, 281, + 393, 41, 151, 218, 73, 60, 69, 329, 330, 367, + 219, 61, 119, 266, 267, 268, 363, 408, 410, 70, + 328, 108, 279, 202, 100, 42, 43, 120, 196, 322, + 261, 320, 162, 44, 45, 46, 136, 86, 273, 371, + 137, 121, 372, 373, 122, 176, 298, 177, 400, 421, + 178, 238, 179, 422, 180, 314, 299, 290, 181, 317, + 353, 182, 233, 183, 288, 184, 251, 185, 415, 431, + 186, 309, 310, 355, 248, 302, 303, 347, 345, 187, + 123, 375, 376, 436, 124, 377, 438, 125, 284, 286, + 378, 126, 141, 127, 128, 143, 74, 47, 57, 48, + 52, 80, 49, 62, 94, 147, 212, 239, 225, 149, + 336, 253, 214, 380, 312, 50 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -399 +#define YYPACT_NINF -403 static const yytype_int16 yypact[] = { - 154, -399, -399, 48, -399, -399, 51, -37, -399, 172, - -2, -399, 17, 31, 42, 47, -399, -399, -33, -33, - -33, -33, -33, -33, 54, 56, -33, -33, -399, 6, - -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, - -399, -399, 52, -399, -399, -399, -399, -399, -399, -399, - -399, -399, 66, 25, 61, 112, -6, 66, 102, -399, - 118, 116, -399, 119, 120, 121, 122, 123, -399, 124, - 130, -399, -399, -399, -16, 126, 127, -399, -399, -399, - 128, 70, -15, 159, 214, -36, -399, 128, 28, -399, - -399, -399, -399, 131, -399, 56, -399, -399, -399, -399, - -399, 56, 56, 56, 56, 56, 56, -399, -399, -399, - -399, 27, 38, 76, -9, 135, 56, 60, 136, -399, - -399, -399, -399, -399, -399, -399, -399, -399, -16, 56, - 147, -399, -399, -399, -399, 137, -399, -399, -399, -399, - -399, -399, -399, 148, -399, -399, 18, 225, -399, 141, - 142, -16, 144, -399, 145, -399, -399, 50, -399, -399, - 131, -399, 146, 149, 150, 187, 7, 151, 43, 152, - 69, 85, -1, 153, 131, -399, -399, -399, -399, -399, - -399, -399, -399, -399, -399, 190, -399, 50, -399, 155, - -399, -399, 131, 156, 158, -399, 20, -399, -399, -399, - -399, -8, 160, 162, -399, 161, -399, -399, -399, -399, - -399, -399, 163, 56, 56, 169, 173, 171, 56, -399, - -399, -399, -399, 234, 240, 252, -399, -399, -399, -399, - 254, -399, -399, -399, -399, 211, 254, 2, 170, 257, - -399, 174, -399, 131, 12, -399, -399, -399, 258, 253, - -5, 175, -399, 262, -399, 263, 262, -399, 56, -399, - -399, 177, -399, -399, 185, 56, 56, 176, -399, -399, - -399, -399, -399, -399, 180, 183, 184, -399, 186, -399, - 189, -399, 191, -399, 192, -399, 194, -399, -399, -399, - -399, -399, -399, -399, 270, -399, -399, -399, 271, -399, - -399, -399, -399, -399, -399, -399, 195, -399, -399, -399, - -399, 143, 272, -399, 196, -399, 197, 198, 34, -399, - -399, 101, -399, 201, -4, 202, -12, 274, -399, 111, - 56, -399, -399, 241, 84, 69, -399, 203, -399, 204, - -399, -399, -399, -399, -399, -399, -399, 205, -399, -399, - -399, 56, -399, 277, 288, -399, 56, -399, -399, -399, - 56, 80, 76, 35, -399, -399, -399, -399, -399, -399, - -399, -399, 206, -399, -399, -399, -399, -399, -399, -399, - -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, - -399, 280, -399, -399, 14, -399, -399, -399, 39, -399, - -399, -399, -399, 209, 210, 212, 213, -399, 261, -12, - -399, -399, -399, -399, -399, -399, 56, -399, 56, 171, - 234, 240, 219, -399, -399, 208, 221, 222, 224, 215, - 226, 227, 272, -399, 56, 111, -399, 234, -399, 240, - -13, -399, -399, -399, -399, 272, 228, -399 + 62, -403, -403, 41, -403, -403, 81, -36, -403, 198, + -8, -403, -5, 18, 20, 35, -403, -403, -23, -23, + -23, -23, -23, -23, 45, 131, -23, -23, -403, 58, + -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, + -403, -403, 67, -403, -403, -403, -403, -403, -403, -403, + -403, -403, 63, 86, 92, 128, 84, 63, 99, -403, + 69, 133, -403, 87, 89, 129, 145, 146, -403, 147, + 154, -403, -403, -403, -13, 150, 151, -403, -403, -403, + 152, 162, -14, 197, 240, -34, -403, 152, 98, -403, + -403, -403, -403, 155, -403, 131, -403, -403, -403, -403, + -403, 131, 131, 131, 131, 131, 131, -403, -403, -403, + -403, 72, 105, 77, 17, 156, 12, 131, 68, 157, + -403, -403, -403, -403, -403, -403, -403, -403, -403, 12, + 131, 165, -403, -403, -403, -403, 158, -403, -403, -403, + -403, -403, -403, -403, 223, -403, -403, -16, 245, -403, + 163, 164, -9, 167, -403, 168, -403, -403, 55, -403, + -403, 155, -403, 170, 171, 172, 206, 2, 173, 34, + 174, 127, 112, 1, 175, 155, -403, -403, -403, -403, + -403, -403, -403, -403, -403, -403, 207, -403, 55, -403, + 177, -403, -403, 155, 178, 179, -403, 68, 22, -403, + -403, -403, -403, -6, 169, 182, -403, 180, -403, -403, + -403, -403, -403, -403, 181, 131, 131, 12, -403, 188, + 190, 195, 131, -403, -403, -403, -403, 272, 273, 274, + -403, -403, -403, -403, 275, -403, -403, -403, -403, 232, + 275, 79, 191, 277, -403, 192, -403, 155, 15, -403, + -403, -403, 280, 276, 8, 194, -403, 283, -403, 284, + 283, -403, 199, 131, -403, -403, 200, -403, -403, 209, + 131, 131, 201, -403, -403, -403, -403, 204, -403, -403, + 205, 210, 211, -403, 203, -403, 212, -403, 213, -403, + 214, -403, 215, -403, -403, -403, -403, -403, -403, -403, + 286, -403, -403, -403, 294, -403, -403, -403, -403, -403, + -403, -403, 216, -403, -403, -403, -403, 161, 297, -403, + 217, -403, 218, 219, -403, 76, -403, -403, 139, -403, + 227, -4, 228, 30, -403, 298, -403, 137, 131, -403, + -403, 265, 130, 127, -403, 220, -403, 226, -403, -403, + -403, -403, -403, -403, -403, 229, -403, -403, -403, 131, + -403, 315, 319, -403, 131, -403, -403, -403, 131, 123, + 77, 80, -403, -403, -403, -403, -403, -403, -403, -403, + 233, -403, -403, -403, -403, -403, -403, -403, -403, -403, + -403, -403, -403, -403, -403, -403, -403, -403, -403, 311, + -403, -403, 9, -403, -403, -403, 83, -403, -403, -403, + -403, 237, 238, 239, 241, -403, 281, 30, -403, -403, + -403, -403, -403, -403, 131, -403, 131, 195, 272, 273, + 242, -403, -403, 234, 246, 247, 248, 243, 249, 251, + 297, -403, 131, 137, -403, 272, -403, 273, 36, -403, + -403, -403, -403, 297, 250, -403 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -399, -399, -399, -399, -399, -399, -399, -399, -399, -399, - -399, -399, -399, -399, -399, -399, -399, -399, -399, -100, - -98, -399, -97, -91, 188, -399, -399, -344, -399, -99, - -399, -399, -399, -399, -399, -399, -399, -399, 134, -399, - -399, -399, -399, -399, -399, -399, 259, -399, -399, -399, - 83, -399, -399, -399, -399, -399, -399, -399, -399, -399, - -399, -69, -399, -84, -399, -399, -399, -399, -399, -399, - -399, -399, -399, -399, -399, -317, 106, -399, -399, -399, - -399, -399, -399, -399, -399, -399, -399, -399, -399, -19, - -399, -399, -398, -399, -399, -399, -399, -399, -399, 260, - -399, -399, -399, -399, -399, -399, -399, -377, -381, 265, - -399, -399, 193, -83, -113, -85, -399, -399, -399, -399, - 289, -399, 264, -399, -399, -399, -165, 164, -150, -399, - -399, -399, -399, -399, -399 + -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, + -403, -403, -403, -403, -403, -403, -403, -403, -403, -74, + -81, -403, -98, 141, -82, 160, -403, -403, -358, -403, + -41, -403, -403, -403, -403, -403, -403, -403, -403, 166, + -403, -403, -403, 176, -403, -403, -403, 282, -403, -403, + -403, 103, -403, -403, -403, -403, -403, -403, -403, -403, + -403, -403, -52, -403, -84, -403, -403, -403, -403, -403, + -403, -403, -403, -403, -403, -403, -333, 126, -403, -403, + -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, + -3, -403, -403, -402, -403, -403, -403, -403, -403, -403, + 285, -403, -403, -403, -403, -403, -403, -403, -398, -392, + 287, -403, -403, -145, -83, -114, -85, -403, -403, -403, + -403, 314, -403, 291, -403, -403, -403, -167, 187, -149, + -403, -403, -403, -403, -403, -403 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -219 +#define YYTABLE_NINF -222 static const yytype_int16 yytable[] = { - 143, 137, 141, 196, 149, 237, 153, 109, 110, 156, - 222, 152, 403, 154, 155, 260, 151, 393, 151, 357, - 187, 151, 111, 111, 250, 245, 112, 287, 188, 202, - 309, 143, 58, 288, 440, 289, 227, 113, 203, 287, - 431, 189, 254, 429, 190, 288, 112, 446, 5, 310, - 361, 191, 215, 300, 301, 144, 157, 113, 444, 7, - 443, 362, 10, 228, 158, 192, 59, 145, 231, 246, - 232, 290, 162, 291, 426, 71, 72, 415, 116, 208, - 114, 114, 233, 115, 163, 291, 209, 159, 193, 194, - 441, 68, 445, 299, 302, 358, 232, 397, 116, 71, - 72, 160, 116, 84, 164, 51, 165, 85, 233, 287, - 388, 219, 166, 77, 405, 288, 53, 271, 220, 167, - 168, 169, 270, 170, 389, 171, 406, 276, 258, 151, - 54, 88, 89, 238, 172, 259, 239, 240, 81, 90, - 241, 55, 351, 409, 390, 318, 56, 416, 242, 352, - 410, 173, 174, 68, 417, 291, 391, 1, 2, 78, - 197, 91, 92, 198, 199, 79, 243, 71, 72, 131, - 394, 206, 207, 143, 82, 325, 93, 11, 12, 13, - 324, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 63, 64, 65, - 66, 67, 353, 354, 75, 76, 96, 97, 98, 99, - 341, 342, 343, 344, 58, 83, 95, 101, 102, 103, - 104, 105, 106, 107, 128, 129, 130, 134, 398, 386, - 147, 143, 366, 141, -62, 201, 204, 205, 211, 213, - 214, 226, 217, 218, 274, 223, 251, 277, 224, 225, - 230, 236, 248, 279, 253, 255, 143, 256, 265, 404, - 266, 324, 272, 269, 267, 281, -218, 283, 285, 294, - 295, 305, 307, 298, 312, 313, 315, 319, 320, 327, - 326, 329, 330, 336, 338, 346, 331, 371, 387, 332, - 399, 333, 334, 425, 335, 340, 348, 349, 350, 356, - 360, 401, 412, 395, 396, 397, 411, 418, 419, 427, - 437, 420, 421, 433, 143, 366, 141, 422, 432, 434, - 435, 143, 439, 324, 436, 264, 438, 442, 447, 317, - 424, 132, 286, 408, 216, 138, 87, 133, 0, 324, - 139, 252 + 144, 138, 142, 198, 241, 154, 411, 220, 157, 401, + 109, 110, 226, 150, 109, 110, 152, 265, 152, 365, + 153, 152, 155, 156, 111, 111, 254, 249, 112, 111, + 437, 231, 144, 118, 293, 109, 110, 439, 448, 113, + 294, 5, 58, 315, 258, 210, 188, 451, 205, 112, + 111, 454, 211, 112, 189, 452, 306, 307, 232, 235, + 113, 236, 316, 10, 113, 1, 2, 190, 434, 423, + 191, 250, 220, 237, 112, 197, 59, 192, 71, 72, + 297, 117, 114, 114, 449, 113, 115, 114, 204, 7, + 115, 193, 369, 68, 53, 366, 116, 308, 305, 51, + 217, 158, 117, 370, 293, 165, 117, 166, 114, 159, + 294, 115, 295, 167, 194, 195, 223, 54, 276, 55, + 168, 169, 170, 224, 171, 145, 172, 117, 88, 89, + 263, 152, 160, 275, 56, 173, 90, 146, 264, 163, + 282, 453, 71, 72, 68, 117, 161, 405, 296, 325, + 297, 164, 174, 175, 236, 293, 396, 413, 91, 92, + 242, 294, 79, 243, 244, 77, 237, 245, 199, 414, + 397, 200, 201, 93, 78, 246, 402, 95, 144, 63, + 64, 65, 66, 67, 359, 331, 75, 76, 417, 332, + 398, 424, 360, 247, 84, 101, 418, 102, 85, 425, + 81, 297, 399, 11, 12, 13, 82, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 96, 97, 98, 99, 103, 349, 350, + 351, 352, 83, 71, 72, 406, 208, 209, 144, 374, + 142, 361, 362, 104, 105, 106, 394, 107, 129, 130, + 131, 132, 58, 135, 206, 148, -65, 203, 213, 207, + 230, 215, 216, 255, 144, 221, 222, 270, 280, 331, + 227, 228, 229, 234, 240, 252, 412, 257, 259, 260, + 271, 278, 274, -221, 272, 283, 285, 287, 289, 291, + 301, 300, 304, 311, 318, 313, 319, 321, 324, 344, + 433, 326, 327, 334, 339, 335, 333, 346, 337, 338, + 354, 379, 395, 340, 341, 342, 343, 348, 356, 357, + 358, 403, 144, 374, 142, 364, 368, 404, 407, 144, + 405, 331, 409, 420, 419, 426, 427, 430, 445, 428, + 441, 429, 440, 435, 442, 443, 447, 331, 277, 444, + 446, 455, 450, 323, 133, 432, 292, 416, 0, 269, + 139, 87, 140, 262, 134, 256 }; static const yytype_int16 yycheck[] = { - 85, 85, 85, 116, 95, 170, 103, 23, 24, 106, - 160, 102, 356, 104, 105, 23, 101, 334, 103, 23, - 29, 106, 38, 38, 174, 26, 62, 25, 37, 128, - 35, 116, 65, 31, 432, 33, 29, 73, 129, 25, - 421, 50, 192, 420, 53, 31, 62, 445, 0, 54, - 62, 60, 151, 41, 42, 27, 29, 73, 439, 8, - 437, 73, 99, 56, 37, 74, 99, 39, 25, 70, - 27, 69, 34, 71, 418, 111, 112, 394, 114, 61, - 96, 96, 39, 99, 46, 71, 68, 60, 97, 98, - 434, 99, 105, 243, 82, 99, 27, 110, 114, 111, - 112, 74, 114, 109, 28, 107, 30, 113, 39, 25, - 26, 61, 36, 107, 34, 31, 99, 214, 68, 43, - 44, 45, 213, 47, 40, 49, 46, 218, 108, 214, - 99, 29, 30, 48, 58, 115, 51, 52, 113, 37, - 55, 99, 108, 108, 60, 258, 99, 108, 63, 115, - 115, 75, 76, 99, 115, 71, 72, 3, 4, 107, - 100, 59, 60, 103, 104, 99, 81, 111, 112, 99, - 335, 23, 24, 258, 113, 266, 74, 5, 6, 7, - 265, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 19, 20, 21, - 22, 23, 111, 112, 26, 27, 100, 101, 102, 103, - 77, 78, 79, 80, 65, 113, 108, 108, 108, 108, - 108, 108, 108, 103, 108, 108, 108, 23, 351, 330, - 109, 326, 326, 326, 109, 109, 99, 110, 23, 108, - 108, 64, 108, 108, 83, 109, 66, 23, 109, 109, - 109, 109, 109, 23, 109, 109, 351, 109, 108, 360, - 108, 356, 103, 110, 113, 23, 103, 23, 67, 109, - 23, 23, 29, 109, 109, 23, 23, 110, 103, 109, - 114, 108, 108, 23, 23, 23, 110, 23, 57, 110, - 23, 110, 110, 416, 110, 110, 110, 110, 110, 108, - 108, 23, 32, 110, 110, 110, 110, 108, 108, 419, - 105, 109, 109, 115, 409, 409, 409, 66, 109, 108, - 108, 416, 105, 418, 110, 201, 110, 435, 110, 256, - 409, 82, 236, 362, 151, 85, 57, 83, -1, 434, - 85, 187 + 85, 85, 85, 117, 171, 103, 364, 152, 106, 342, + 23, 24, 161, 95, 23, 24, 101, 23, 103, 23, + 102, 106, 104, 105, 38, 38, 175, 26, 62, 38, + 428, 29, 117, 74, 25, 23, 24, 429, 440, 73, + 31, 0, 65, 35, 193, 61, 29, 445, 130, 62, + 38, 453, 68, 62, 37, 447, 41, 42, 56, 25, + 73, 27, 54, 99, 73, 3, 4, 50, 426, 402, + 53, 70, 217, 39, 62, 116, 99, 60, 112, 113, + 71, 115, 96, 96, 442, 73, 99, 96, 129, 8, + 99, 74, 62, 99, 99, 99, 109, 82, 247, 107, + 109, 29, 115, 73, 25, 28, 115, 30, 96, 37, + 31, 99, 33, 36, 97, 98, 61, 99, 216, 99, + 43, 44, 45, 68, 47, 27, 49, 115, 29, 30, + 108, 216, 60, 215, 99, 58, 37, 39, 116, 34, + 222, 105, 112, 113, 99, 115, 74, 111, 69, 263, + 71, 46, 75, 76, 27, 25, 26, 34, 59, 60, + 48, 31, 99, 51, 52, 107, 39, 55, 100, 46, + 40, 103, 104, 74, 107, 63, 343, 108, 263, 19, + 20, 21, 22, 23, 108, 270, 26, 27, 108, 271, + 60, 108, 116, 81, 110, 108, 116, 108, 114, 116, + 114, 71, 72, 5, 6, 7, 114, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 100, 101, 102, 103, 108, 77, 78, + 79, 80, 114, 112, 113, 359, 23, 24, 333, 333, + 333, 112, 113, 108, 108, 108, 338, 103, 108, 108, + 108, 99, 65, 23, 99, 110, 110, 110, 23, 111, + 64, 108, 108, 66, 359, 108, 108, 108, 83, 364, + 110, 110, 110, 110, 110, 110, 368, 110, 110, 110, + 108, 103, 111, 103, 114, 23, 23, 23, 23, 67, + 23, 110, 110, 23, 110, 29, 23, 23, 109, 23, + 424, 111, 103, 109, 111, 110, 115, 23, 108, 108, + 23, 23, 57, 111, 111, 111, 111, 111, 111, 111, + 111, 111, 417, 417, 417, 108, 108, 111, 23, 424, + 111, 426, 23, 32, 111, 108, 108, 66, 105, 110, + 116, 110, 110, 427, 108, 108, 105, 442, 217, 111, + 111, 111, 443, 260, 82, 417, 240, 370, -1, 203, + 85, 57, 85, 197, 83, 188 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 117, 118, 0, 119, 8, 120, 121, + 0, 3, 4, 118, 119, 0, 120, 8, 121, 122, 99, 5, 6, 7, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 137, 160, 161, 168, 169, 170, 232, 234, 237, - 250, 107, 235, 99, 99, 99, 99, 233, 65, 99, - 140, 146, 238, 140, 140, 140, 140, 140, 99, 141, - 154, 111, 112, 139, 231, 140, 140, 107, 107, 99, - 236, 113, 113, 113, 109, 113, 172, 236, 29, 30, - 37, 59, 60, 74, 239, 108, 100, 101, 102, 103, - 159, 108, 108, 108, 108, 108, 108, 103, 156, 23, - 24, 38, 62, 73, 96, 99, 114, 145, 147, 162, - 176, 179, 215, 219, 222, 226, 228, 229, 108, 108, - 108, 99, 162, 238, 23, 171, 175, 179, 215, 225, - 227, 229, 230, 231, 27, 39, 240, 109, 244, 139, - 138, 231, 139, 138, 139, 139, 138, 29, 37, 60, - 74, 167, 34, 46, 28, 30, 36, 43, 44, 45, - 47, 49, 58, 75, 76, 180, 182, 185, 187, 189, - 193, 196, 198, 200, 202, 205, 214, 29, 37, 50, - 53, 60, 74, 97, 98, 163, 230, 100, 103, 104, - 158, 109, 145, 139, 99, 110, 23, 24, 61, 68, - 241, 23, 247, 108, 108, 145, 228, 108, 108, 61, - 68, 243, 244, 109, 109, 109, 64, 29, 56, 197, - 109, 25, 27, 39, 186, 242, 109, 242, 48, 51, - 52, 55, 63, 81, 209, 26, 70, 201, 109, 246, - 244, 66, 243, 109, 244, 109, 109, 165, 108, 115, - 23, 148, 149, 150, 154, 108, 108, 113, 173, 110, - 139, 138, 103, 157, 83, 135, 139, 23, 223, 23, - 224, 23, 199, 23, 192, 67, 192, 25, 31, 33, - 69, 71, 181, 191, 109, 23, 210, 211, 109, 244, - 41, 42, 82, 206, 207, 23, 249, 29, 190, 35, - 54, 194, 109, 23, 166, 23, 164, 166, 230, 110, - 103, 155, 142, 143, 231, 139, 114, 109, 245, 108, - 108, 110, 110, 110, 110, 110, 23, 213, 23, 212, - 110, 77, 78, 79, 80, 195, 23, 208, 110, 110, - 110, 108, 115, 111, 112, 151, 108, 23, 99, 144, - 108, 62, 73, 174, 177, 178, 179, 216, 217, 220, - 225, 23, 248, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 136, 139, 57, 26, 40, - 60, 72, 183, 191, 242, 110, 110, 110, 230, 23, - 152, 23, 153, 143, 139, 34, 46, 203, 205, 108, - 115, 110, 32, 184, 188, 191, 108, 115, 108, 108, - 109, 109, 66, 204, 177, 230, 143, 135, 218, 223, - 221, 224, 109, 115, 108, 108, 110, 105, 110, 105, - 208, 143, 136, 223, 224, 105, 208, 110 + 15, 16, 17, 18, 19, 20, 21, 22, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 138, 162, 163, 170, 171, 172, 234, 236, 239, + 252, 107, 237, 99, 99, 99, 99, 235, 65, 99, + 142, 148, 240, 142, 142, 142, 142, 142, 99, 143, + 156, 112, 113, 141, 233, 142, 142, 107, 107, 99, + 238, 114, 114, 114, 110, 114, 174, 238, 29, 30, + 37, 59, 60, 74, 241, 108, 100, 101, 102, 103, + 161, 108, 108, 108, 108, 108, 108, 103, 158, 23, + 24, 38, 62, 73, 96, 99, 109, 115, 147, 149, + 164, 178, 181, 217, 221, 224, 228, 230, 231, 108, + 108, 108, 99, 164, 240, 23, 173, 177, 181, 217, + 227, 229, 231, 232, 233, 27, 39, 242, 110, 246, + 141, 139, 233, 141, 139, 141, 141, 139, 29, 37, + 60, 74, 169, 34, 46, 28, 30, 36, 43, 44, + 45, 47, 49, 58, 75, 76, 182, 184, 187, 189, + 191, 195, 198, 200, 202, 204, 207, 216, 29, 37, + 50, 53, 60, 74, 97, 98, 165, 147, 232, 100, + 103, 104, 160, 110, 147, 141, 99, 111, 23, 24, + 61, 68, 243, 23, 249, 108, 108, 109, 140, 147, + 230, 108, 108, 61, 68, 245, 246, 110, 110, 110, + 64, 29, 56, 199, 110, 25, 27, 39, 188, 244, + 110, 244, 48, 51, 52, 55, 63, 81, 211, 26, + 70, 203, 110, 248, 246, 66, 245, 110, 246, 110, + 110, 167, 160, 108, 116, 23, 150, 151, 152, 156, + 108, 108, 114, 175, 111, 141, 139, 140, 103, 159, + 83, 136, 141, 23, 225, 23, 226, 23, 201, 23, + 194, 67, 194, 25, 31, 33, 69, 71, 183, 193, + 110, 23, 212, 213, 110, 246, 41, 42, 82, 208, + 209, 23, 251, 29, 192, 35, 54, 196, 110, 23, + 168, 23, 166, 168, 109, 232, 111, 103, 157, 144, + 145, 233, 141, 115, 109, 110, 247, 108, 108, 111, + 111, 111, 111, 111, 23, 215, 23, 214, 111, 77, + 78, 79, 80, 197, 23, 210, 111, 111, 111, 108, + 116, 112, 113, 153, 108, 23, 99, 146, 108, 62, + 73, 176, 179, 180, 181, 218, 219, 222, 227, 23, + 250, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 137, 141, 57, 26, 40, 60, 72, + 185, 193, 244, 111, 111, 111, 232, 23, 154, 23, + 155, 145, 141, 34, 46, 205, 207, 108, 116, 111, + 32, 186, 190, 193, 108, 116, 108, 108, 110, 110, + 66, 206, 179, 232, 145, 136, 220, 225, 223, 226, + 110, 116, 108, 108, 111, 105, 111, 105, 210, 145, + 137, 225, 226, 105, 210, 111 }; #define yyerrok (yyerrstatus = 0) @@ -2445,32 +2457,61 @@ yyreduce: /* Line 1455 of yacc.c */ #line 527 "program_parse.y" { - (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); + (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); - if ((yyvsp[(1) - (3)].negate)) { + if ((yyvsp[(1) - (2)].negate)) { + (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; + } + ;} + break; + + case 48: + +/* Line 1455 of yacc.c */ +#line 535 "program_parse.y" + { + (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); + + if (!state->option.NV_fragment) { + yyerror(& (yylsp[(2) - (4)]), state, "unexpected character '|'"); + YYERROR; + } + + if ((yyvsp[(1) - (4)].negate)) { (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; } + (yyval.src_reg).Base.Abs = 1; + ;} + break; + + case 49: + +/* Line 1455 of yacc.c */ +#line 552 "program_parse.y" + { + (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); + (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, - (yyvsp[(3) - (3)].swiz_mask).swizzle); + (yyvsp[(2) - (2)].swiz_mask).swizzle); ;} break; - case 48: + case 50: /* Line 1455 of yacc.c */ -#line 538 "program_parse.y" +#line 559 "program_parse.y" { struct asm_symbol temp_sym; if (!state->option.NV_fragment) { - yyerror(& (yylsp[(2) - (2)]), state, "expected scalar suffix"); + yyerror(& (yylsp[(1) - (1)]), state, "expected scalar suffix"); YYERROR; } memset(& temp_sym, 0, sizeof(temp_sym)); temp_sym.param_binding_begin = ~0; - initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(2) - (2)].vector)); + 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; @@ -2478,10 +2519,10 @@ yyreduce: ;} break; - case 49: + case 51: /* Line 1455 of yacc.c */ -#line 557 "program_parse.y" +#line 578 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2494,10 +2535,32 @@ yyreduce: ;} break; - case 50: + case 52: + +/* Line 1455 of yacc.c */ +#line 589 "program_parse.y" + { + (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); + + if (!state->option.NV_fragment) { + yyerror(& (yylsp[(2) - (5)]), state, "unexpected character '|'"); + YYERROR; + } + + if ((yyvsp[(1) - (5)].negate)) { + (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; + } + + (yyval.src_reg).Base.Abs = 1; + (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, + (yyvsp[(4) - (5)].swiz_mask).swizzle); + ;} + break; + + case 53: /* Line 1455 of yacc.c */ -#line 570 "program_parse.y" +#line 609 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; @@ -2519,10 +2582,10 @@ yyreduce: ;} break; - case 51: + case 54: /* Line 1455 of yacc.c */ -#line 592 "program_parse.y" +#line 631 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2531,10 +2594,10 @@ yyreduce: ;} break; - case 52: + case 55: /* Line 1455 of yacc.c */ -#line 601 "program_parse.y" +#line 640 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2567,20 +2630,20 @@ yyreduce: ;} break; - case 53: + case 56: /* Line 1455 of yacc.c */ -#line 634 "program_parse.y" +#line 673 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; ;} break; - case 54: + case 57: /* Line 1455 of yacc.c */ -#line 641 "program_parse.y" +#line 680 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2597,10 +2660,10 @@ yyreduce: ;} break; - case 55: + case 58: /* Line 1455 of yacc.c */ -#line 656 "program_parse.y" +#line 695 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2650,10 +2713,10 @@ yyreduce: ;} break; - case 56: + case 59: /* Line 1455 of yacc.c */ -#line 706 "program_parse.y" +#line 745 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2697,10 +2760,10 @@ yyreduce: ;} break; - case 57: + case 60: /* Line 1455 of yacc.c */ -#line 748 "program_parse.y" +#line 787 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2713,10 +2776,10 @@ yyreduce: ;} break; - case 58: + case 61: /* Line 1455 of yacc.c */ -#line 759 "program_parse.y" +#line 798 "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)) { @@ -2739,10 +2802,10 @@ yyreduce: ;} break; - case 59: + case 62: /* Line 1455 of yacc.c */ -#line 780 "program_parse.y" +#line 819 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2752,10 +2815,10 @@ yyreduce: ;} break; - case 60: + case 63: /* Line 1455 of yacc.c */ -#line 790 "program_parse.y" +#line 829 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2763,10 +2826,10 @@ yyreduce: ;} break; - case 61: + case 64: /* Line 1455 of yacc.c */ -#line 796 "program_parse.y" +#line 835 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2797,10 +2860,10 @@ yyreduce: ;} break; - case 62: + case 65: /* Line 1455 of yacc.c */ -#line 827 "program_parse.y" +#line 866 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2817,20 +2880,20 @@ yyreduce: ;} break; - case 65: + case 68: /* Line 1455 of yacc.c */ -#line 846 "program_parse.y" +#line 885 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); ;} break; - case 66: + case 69: /* Line 1455 of yacc.c */ -#line 853 "program_parse.y" +#line 892 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2842,31 +2905,31 @@ yyreduce: ;} break; - case 67: + case 70: /* Line 1455 of yacc.c */ -#line 864 "program_parse.y" +#line 903 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 68: + case 71: /* Line 1455 of yacc.c */ -#line 865 "program_parse.y" +#line 904 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 69: + case 72: /* Line 1455 of yacc.c */ -#line 866 "program_parse.y" +#line 905 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; - case 70: + case 73: /* Line 1455 of yacc.c */ -#line 870 "program_parse.y" +#line 909 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2878,10 +2941,10 @@ yyreduce: ;} break; - case 71: + case 74: /* Line 1455 of yacc.c */ -#line 882 "program_parse.y" +#line 921 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2893,10 +2956,10 @@ yyreduce: ;} break; - case 72: + case 75: /* Line 1455 of yacc.c */ -#line 894 "program_parse.y" +#line 933 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2914,10 +2977,10 @@ yyreduce: ;} break; - case 73: + case 76: /* Line 1455 of yacc.c */ -#line 912 "program_parse.y" +#line 951 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2928,10 +2991,10 @@ yyreduce: ;} break; - case 74: + case 77: /* Line 1455 of yacc.c */ -#line 923 "program_parse.y" +#line 962 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2943,24 +3006,24 @@ yyreduce: ;} break; - case 79: + case 82: /* Line 1455 of yacc.c */ -#line 939 "program_parse.y" +#line 978 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 84: + case 87: /* Line 1455 of yacc.c */ -#line 943 "program_parse.y" +#line 982 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 91: + case 94: /* Line 1455 of yacc.c */ -#line 955 "program_parse.y" +#line 994 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -2978,55 +3041,55 @@ yyreduce: ;} break; - case 92: + case 95: /* Line 1455 of yacc.c */ -#line 973 "program_parse.y" +#line 1012 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 93: + case 96: /* Line 1455 of yacc.c */ -#line 977 "program_parse.y" +#line 1016 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 94: + case 97: /* Line 1455 of yacc.c */ -#line 983 "program_parse.y" +#line 1022 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} break; - case 95: + case 98: /* Line 1455 of yacc.c */ -#line 987 "program_parse.y" +#line 1026 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} break; - case 96: + case 99: /* Line 1455 of yacc.c */ -#line 991 "program_parse.y" +#line 1030 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} break; - case 97: + case 100: /* Line 1455 of yacc.c */ -#line 995 "program_parse.y" +#line 1034 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3037,10 +3100,10 @@ yyreduce: ;} break; - case 98: + case 101: /* Line 1455 of yacc.c */ -#line 1004 "program_parse.y" +#line 1043 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3051,38 +3114,38 @@ yyreduce: ;} break; - case 99: + case 102: /* Line 1455 of yacc.c */ -#line 1013 "program_parse.y" +#line 1052 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 100: + case 103: /* Line 1455 of yacc.c */ -#line 1017 "program_parse.y" +#line 1056 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 101: + case 104: /* Line 1455 of yacc.c */ -#line 1022 "program_parse.y" +#line 1061 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} break; - case 102: + case 105: /* Line 1455 of yacc.c */ -#line 1028 "program_parse.y" +#line 1067 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3093,46 +3156,46 @@ yyreduce: ;} break; - case 106: + case 109: /* Line 1455 of yacc.c */ -#line 1042 "program_parse.y" +#line 1081 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} break; - case 107: + case 110: /* Line 1455 of yacc.c */ -#line 1046 "program_parse.y" +#line 1085 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} break; - case 108: + case 111: /* Line 1455 of yacc.c */ -#line 1050 "program_parse.y" +#line 1089 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} break; - case 109: + case 112: /* Line 1455 of yacc.c */ -#line 1054 "program_parse.y" +#line 1093 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 112: + case 115: /* Line 1455 of yacc.c */ -#line 1062 "program_parse.y" +#line 1101 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3148,10 +3211,10 @@ yyreduce: ;} break; - case 113: + case 116: /* Line 1455 of yacc.c */ -#line 1078 "program_parse.y" +#line 1117 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3173,19 +3236,19 @@ yyreduce: ;} break; - case 114: + case 117: /* Line 1455 of yacc.c */ -#line 1100 "program_parse.y" +#line 1139 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 115: + case 118: /* Line 1455 of yacc.c */ -#line 1104 "program_parse.y" +#line 1143 "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"); @@ -3196,38 +3259,38 @@ yyreduce: ;} break; - case 116: + case 119: /* Line 1455 of yacc.c */ -#line 1115 "program_parse.y" +#line 1154 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} break; - case 117: + case 120: /* Line 1455 of yacc.c */ -#line 1121 "program_parse.y" +#line 1160 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} break; - case 119: + case 122: /* Line 1455 of yacc.c */ -#line 1128 "program_parse.y" +#line 1167 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); ;} break; - case 120: + case 123: /* Line 1455 of yacc.c */ -#line 1135 "program_parse.y" +#line 1174 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3235,10 +3298,10 @@ yyreduce: ;} break; - case 121: + case 124: /* Line 1455 of yacc.c */ -#line 1141 "program_parse.y" +#line 1180 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3246,10 +3309,10 @@ yyreduce: ;} break; - case 122: + case 125: /* Line 1455 of yacc.c */ -#line 1147 "program_parse.y" +#line 1186 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3257,10 +3320,10 @@ yyreduce: ;} break; - case 123: + case 126: /* Line 1455 of yacc.c */ -#line 1155 "program_parse.y" +#line 1194 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3268,10 +3331,10 @@ yyreduce: ;} break; - case 124: + case 127: /* Line 1455 of yacc.c */ -#line 1161 "program_parse.y" +#line 1200 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3279,10 +3342,10 @@ yyreduce: ;} break; - case 125: + case 128: /* Line 1455 of yacc.c */ -#line 1167 "program_parse.y" +#line 1206 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3290,10 +3353,10 @@ yyreduce: ;} break; - case 126: + case 129: /* Line 1455 of yacc.c */ -#line 1175 "program_parse.y" +#line 1214 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3301,10 +3364,10 @@ yyreduce: ;} break; - case 127: + case 130: /* Line 1455 of yacc.c */ -#line 1181 "program_parse.y" +#line 1220 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3312,10 +3375,10 @@ yyreduce: ;} break; - case 128: + case 131: /* Line 1455 of yacc.c */ -#line 1187 "program_parse.y" +#line 1226 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3323,101 +3386,101 @@ yyreduce: ;} break; - case 129: + case 132: /* Line 1455 of yacc.c */ -#line 1194 "program_parse.y" +#line 1233 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; - case 130: + case 133: /* Line 1455 of yacc.c */ -#line 1195 "program_parse.y" +#line 1234 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 131: + case 134: /* Line 1455 of yacc.c */ -#line 1198 "program_parse.y" +#line 1237 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 132: + case 135: /* Line 1455 of yacc.c */ -#line 1199 "program_parse.y" +#line 1238 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 133: + case 136: /* Line 1455 of yacc.c */ -#line 1200 "program_parse.y" +#line 1239 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 134: + case 137: /* Line 1455 of yacc.c */ -#line 1201 "program_parse.y" +#line 1240 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 135: + case 138: /* Line 1455 of yacc.c */ -#line 1202 "program_parse.y" +#line 1241 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 136: + case 139: /* Line 1455 of yacc.c */ -#line 1203 "program_parse.y" +#line 1242 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 137: + case 140: /* Line 1455 of yacc.c */ -#line 1204 "program_parse.y" +#line 1243 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 138: + case 141: /* Line 1455 of yacc.c */ -#line 1205 "program_parse.y" +#line 1244 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 139: + case 142: /* Line 1455 of yacc.c */ -#line 1206 "program_parse.y" +#line 1245 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 140: + case 143: /* Line 1455 of yacc.c */ -#line 1207 "program_parse.y" +#line 1246 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 141: + case 144: /* Line 1455 of yacc.c */ -#line 1208 "program_parse.y" +#line 1247 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 142: + case 145: /* Line 1455 of yacc.c */ -#line 1212 "program_parse.y" +#line 1251 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3426,37 +3489,37 @@ yyreduce: ;} break; - case 143: + case 146: /* Line 1455 of yacc.c */ -#line 1221 "program_parse.y" +#line 1260 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 144: + case 147: /* Line 1455 of yacc.c */ -#line 1225 "program_parse.y" +#line 1264 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} break; - case 145: + case 148: /* Line 1455 of yacc.c */ -#line 1229 "program_parse.y" +#line 1268 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} break; - case 146: + case 149: /* Line 1455 of yacc.c */ -#line 1235 "program_parse.y" +#line 1274 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3465,28 +3528,28 @@ yyreduce: ;} break; - case 147: + case 150: /* Line 1455 of yacc.c */ -#line 1244 "program_parse.y" +#line 1283 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 148: + case 151: /* Line 1455 of yacc.c */ -#line 1248 "program_parse.y" +#line 1287 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} break; - case 149: + case 152: /* Line 1455 of yacc.c */ -#line 1252 "program_parse.y" +#line 1291 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3497,57 +3560,57 @@ yyreduce: ;} break; - case 150: + case 153: /* Line 1455 of yacc.c */ -#line 1261 "program_parse.y" +#line 1300 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 151: + case 154: /* Line 1455 of yacc.c */ -#line 1265 "program_parse.y" +#line 1304 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} break; - case 152: + case 155: /* Line 1455 of yacc.c */ -#line 1271 "program_parse.y" +#line 1310 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} break; - case 153: + case 156: /* Line 1455 of yacc.c */ -#line 1277 "program_parse.y" +#line 1316 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; ;} break; - case 154: + case 157: /* Line 1455 of yacc.c */ -#line 1284 "program_parse.y" +#line 1323 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; ;} break; - case 155: + case 158: /* Line 1455 of yacc.c */ -#line 1289 "program_parse.y" +#line 1328 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3555,10 +3618,10 @@ yyreduce: ;} break; - case 156: + case 159: /* Line 1455 of yacc.c */ -#line 1297 "program_parse.y" +#line 1336 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3568,10 +3631,10 @@ yyreduce: ;} break; - case 158: + case 161: /* Line 1455 of yacc.c */ -#line 1309 "program_parse.y" +#line 1348 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3579,46 +3642,46 @@ yyreduce: ;} break; - case 159: + case 162: /* Line 1455 of yacc.c */ -#line 1317 "program_parse.y" +#line 1356 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} break; - case 160: + case 163: /* Line 1455 of yacc.c */ -#line 1323 "program_parse.y" +#line 1362 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} break; - case 161: + case 164: /* Line 1455 of yacc.c */ -#line 1327 "program_parse.y" +#line 1366 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} break; - case 162: + case 165: /* Line 1455 of yacc.c */ -#line 1331 "program_parse.y" +#line 1370 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} break; - case 163: + case 166: /* Line 1455 of yacc.c */ -#line 1337 "program_parse.y" +#line 1376 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3629,10 +3692,10 @@ yyreduce: ;} break; - case 164: + case 167: /* Line 1455 of yacc.c */ -#line 1348 "program_parse.y" +#line 1387 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3641,92 +3704,92 @@ yyreduce: ;} break; - case 165: + case 168: /* Line 1455 of yacc.c */ -#line 1357 "program_parse.y" +#line 1396 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} break; - case 166: + case 169: /* Line 1455 of yacc.c */ -#line 1361 "program_parse.y" +#line 1400 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} break; - case 167: + case 170: /* Line 1455 of yacc.c */ -#line 1366 "program_parse.y" +#line 1405 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} break; - case 168: + case 171: /* Line 1455 of yacc.c */ -#line 1370 "program_parse.y" +#line 1409 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} break; - case 169: + case 172: /* Line 1455 of yacc.c */ -#line 1374 "program_parse.y" +#line 1413 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} break; - case 170: + case 173: /* Line 1455 of yacc.c */ -#line 1378 "program_parse.y" +#line 1417 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} break; - case 171: + case 174: /* Line 1455 of yacc.c */ -#line 1384 "program_parse.y" +#line 1423 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 172: + case 175: /* Line 1455 of yacc.c */ -#line 1391 "program_parse.y" +#line 1430 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} break; - case 173: + case 176: /* Line 1455 of yacc.c */ -#line 1395 "program_parse.y" +#line 1434 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} break; - case 174: + case 177: /* Line 1455 of yacc.c */ -#line 1401 "program_parse.y" +#line 1440 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3734,10 +3797,10 @@ yyreduce: ;} break; - case 175: + case 178: /* Line 1455 of yacc.c */ -#line 1409 "program_parse.y" +#line 1448 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3748,38 +3811,38 @@ yyreduce: ;} break; - case 176: + case 179: /* Line 1455 of yacc.c */ -#line 1420 "program_parse.y" +#line 1459 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 177: + case 180: /* Line 1455 of yacc.c */ -#line 1427 "program_parse.y" +#line 1466 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} break; - case 178: + case 181: /* Line 1455 of yacc.c */ -#line 1431 "program_parse.y" +#line 1470 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} break; - case 179: + case 182: /* Line 1455 of yacc.c */ -#line 1437 "program_parse.y" +#line 1476 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3789,10 +3852,10 @@ yyreduce: ;} break; - case 180: + case 183: /* Line 1455 of yacc.c */ -#line 1447 "program_parse.y" +#line 1486 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3802,20 +3865,20 @@ yyreduce: ;} break; - case 181: + case 184: /* Line 1455 of yacc.c */ -#line 1457 "program_parse.y" +#line 1496 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; ;} break; - case 182: + case 185: /* Line 1455 of yacc.c */ -#line 1462 "program_parse.y" +#line 1501 "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). @@ -3833,10 +3896,10 @@ yyreduce: ;} break; - case 183: + case 186: /* Line 1455 of yacc.c */ -#line 1480 "program_parse.y" +#line 1519 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3844,55 +3907,55 @@ yyreduce: ;} break; - case 184: + case 187: /* Line 1455 of yacc.c */ -#line 1488 "program_parse.y" +#line 1527 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 185: + case 188: /* Line 1455 of yacc.c */ -#line 1492 "program_parse.y" +#line 1531 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 186: + case 189: /* Line 1455 of yacc.c */ -#line 1498 "program_parse.y" +#line 1537 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} break; - case 187: + case 190: /* Line 1455 of yacc.c */ -#line 1502 "program_parse.y" +#line 1541 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} break; - case 188: + case 191: /* Line 1455 of yacc.c */ -#line 1506 "program_parse.y" +#line 1545 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} break; - case 189: + case 192: /* Line 1455 of yacc.c */ -#line 1512 "program_parse.y" +#line 1551 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3903,88 +3966,88 @@ yyreduce: ;} break; - case 190: + case 193: /* Line 1455 of yacc.c */ -#line 1523 "program_parse.y" +#line 1562 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 191: + case 194: /* Line 1455 of yacc.c */ -#line 1528 "program_parse.y" +#line 1567 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; ;} break; - case 192: + case 195: /* Line 1455 of yacc.c */ -#line 1533 "program_parse.y" +#line 1572 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; ;} break; - case 193: + case 196: /* Line 1455 of yacc.c */ -#line 1538 "program_parse.y" +#line 1577 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 194: + case 197: /* Line 1455 of yacc.c */ -#line 1543 "program_parse.y" +#line 1582 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 195: + case 198: /* Line 1455 of yacc.c */ -#line 1548 "program_parse.y" +#line 1587 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); ;} break; - case 196: + case 199: /* Line 1455 of yacc.c */ -#line 1555 "program_parse.y" +#line 1594 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 197: + case 200: /* Line 1455 of yacc.c */ -#line 1559 "program_parse.y" +#line 1598 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 198: + case 201: /* Line 1455 of yacc.c */ -#line 1564 "program_parse.y" +#line 1603 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -3998,10 +4061,10 @@ yyreduce: ;} break; - case 199: + case 202: /* Line 1455 of yacc.c */ -#line 1577 "program_parse.y" +#line 1616 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -4010,10 +4073,10 @@ yyreduce: ;} break; - case 200: + case 203: /* Line 1455 of yacc.c */ -#line 1585 "program_parse.y" +#line 1624 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4024,20 +4087,20 @@ yyreduce: ;} break; - case 201: + case 204: /* Line 1455 of yacc.c */ -#line 1596 "program_parse.y" +#line 1635 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; ;} break; - case 206: + case 209: /* Line 1455 of yacc.c */ -#line 1608 "program_parse.y" +#line 1647 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4047,30 +4110,30 @@ yyreduce: ;} break; - case 207: + case 210: /* Line 1455 of yacc.c */ -#line 1618 "program_parse.y" +#line 1657 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 208: + case 211: /* Line 1455 of yacc.c */ -#line 1623 "program_parse.y" +#line 1662 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 209: + case 212: /* Line 1455 of yacc.c */ -#line 1630 "program_parse.y" +#line 1669 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4080,10 +4143,10 @@ yyreduce: ;} break; - case 210: + case 213: /* Line 1455 of yacc.c */ -#line 1640 "program_parse.y" +#line 1679 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4093,30 +4156,30 @@ yyreduce: ;} break; - case 211: + case 214: /* Line 1455 of yacc.c */ -#line 1649 "program_parse.y" +#line 1688 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 212: + case 215: /* Line 1455 of yacc.c */ -#line 1654 "program_parse.y" +#line 1693 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 213: + case 216: /* Line 1455 of yacc.c */ -#line 1661 "program_parse.y" +#line 1700 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4126,10 +4189,10 @@ yyreduce: ;} break; - case 214: + case 217: /* Line 1455 of yacc.c */ -#line 1671 "program_parse.y" +#line 1710 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4139,10 +4202,10 @@ yyreduce: ;} break; - case 215: + case 218: /* Line 1455 of yacc.c */ -#line 1681 "program_parse.y" +#line 1720 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4152,10 +4215,10 @@ yyreduce: ;} break; - case 220: + case 223: /* Line 1455 of yacc.c */ -#line 1696 "program_parse.y" +#line 1735 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4165,10 +4228,10 @@ yyreduce: ;} break; - case 221: + case 224: /* Line 1455 of yacc.c */ -#line 1706 "program_parse.y" +#line 1745 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4178,10 +4241,10 @@ yyreduce: ;} break; - case 222: + case 225: /* Line 1455 of yacc.c */ -#line 1714 "program_parse.y" +#line 1753 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4191,10 +4254,10 @@ yyreduce: ;} break; - case 223: + case 226: /* Line 1455 of yacc.c */ -#line 1724 "program_parse.y" +#line 1763 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4204,10 +4267,10 @@ yyreduce: ;} break; - case 224: + case 227: /* Line 1455 of yacc.c */ -#line 1732 "program_parse.y" +#line 1771 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4217,10 +4280,10 @@ yyreduce: ;} break; - case 225: + case 228: /* Line 1455 of yacc.c */ -#line 1741 "program_parse.y" +#line 1780 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4230,10 +4293,10 @@ yyreduce: ;} break; - case 226: + case 229: /* Line 1455 of yacc.c */ -#line 1750 "program_parse.y" +#line 1789 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4243,63 +4306,63 @@ yyreduce: ;} break; - case 227: + case 230: /* Line 1455 of yacc.c */ -#line 1760 "program_parse.y" +#line 1799 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} break; - case 228: + case 231: /* Line 1455 of yacc.c */ -#line 1764 "program_parse.y" +#line 1803 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} break; - case 229: + case 232: /* Line 1455 of yacc.c */ -#line 1769 "program_parse.y" +#line 1808 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 230: + case 233: /* Line 1455 of yacc.c */ -#line 1770 "program_parse.y" +#line 1809 "program_parse.y" { (yyval.negate) = TRUE; ;} break; - case 231: + case 234: /* Line 1455 of yacc.c */ -#line 1771 "program_parse.y" +#line 1810 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 232: + case 235: /* Line 1455 of yacc.c */ -#line 1774 "program_parse.y" +#line 1813 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 234: + case 237: /* Line 1455 of yacc.c */ -#line 1777 "program_parse.y" +#line 1816 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 236: + case 239: /* Line 1455 of yacc.c */ -#line 1781 "program_parse.y" +#line 1820 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4307,10 +4370,10 @@ yyreduce: ;} break; - case 237: + case 240: /* Line 1455 of yacc.c */ -#line 1787 "program_parse.y" +#line 1826 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4318,10 +4381,10 @@ yyreduce: ;} break; - case 238: + case 241: /* Line 1455 of yacc.c */ -#line 1795 "program_parse.y" +#line 1834 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); @@ -4334,10 +4397,10 @@ yyreduce: ;} break; - case 239: + case 242: /* Line 1455 of yacc.c */ -#line 1808 "program_parse.y" +#line 1847 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4348,10 +4411,10 @@ yyreduce: ;} break; - case 240: + case 243: /* Line 1455 of yacc.c */ -#line 1817 "program_parse.y" +#line 1856 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4362,19 +4425,19 @@ yyreduce: ;} break; - case 241: + case 244: /* Line 1455 of yacc.c */ -#line 1826 "program_parse.y" +#line 1865 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 242: + case 245: /* Line 1455 of yacc.c */ -#line 1830 "program_parse.y" +#line 1869 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4385,10 +4448,10 @@ yyreduce: ;} break; - case 243: + case 246: /* Line 1455 of yacc.c */ -#line 1839 "program_parse.y" +#line 1878 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4399,10 +4462,10 @@ yyreduce: ;} break; - case 244: + case 247: /* Line 1455 of yacc.c */ -#line 1848 "program_parse.y" +#line 1887 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4413,19 +4476,19 @@ yyreduce: ;} break; - case 245: + case 248: /* Line 1455 of yacc.c */ -#line 1859 "program_parse.y" +#line 1898 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 246: + case 249: /* Line 1455 of yacc.c */ -#line 1865 "program_parse.y" +#line 1904 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4433,10 +4496,10 @@ yyreduce: ;} break; - case 247: + case 250: /* Line 1455 of yacc.c */ -#line 1871 "program_parse.y" +#line 1910 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4447,10 +4510,10 @@ yyreduce: ;} break; - case 248: + case 251: /* Line 1455 of yacc.c */ -#line 1880 "program_parse.y" +#line 1919 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4461,19 +4524,19 @@ yyreduce: ;} break; - case 249: + case 252: /* Line 1455 of yacc.c */ -#line 1891 "program_parse.y" +#line 1930 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 250: + case 253: /* Line 1455 of yacc.c */ -#line 1895 "program_parse.y" +#line 1934 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4484,10 +4547,10 @@ yyreduce: ;} break; - case 251: + case 254: /* Line 1455 of yacc.c */ -#line 1904 "program_parse.y" +#line 1943 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4498,94 +4561,94 @@ yyreduce: ;} break; - case 252: + case 255: /* Line 1455 of yacc.c */ -#line 1914 "program_parse.y" +#line 1953 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 253: + case 256: /* Line 1455 of yacc.c */ -#line 1915 "program_parse.y" +#line 1954 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 254: + case 257: /* Line 1455 of yacc.c */ -#line 1916 "program_parse.y" +#line 1955 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 255: + case 258: /* Line 1455 of yacc.c */ -#line 1919 "program_parse.y" +#line 1958 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 256: + case 259: /* Line 1455 of yacc.c */ -#line 1920 "program_parse.y" +#line 1959 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 257: + case 260: /* Line 1455 of yacc.c */ -#line 1921 "program_parse.y" +#line 1960 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 258: + case 261: /* Line 1455 of yacc.c */ -#line 1924 "program_parse.y" +#line 1963 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 259: + case 262: /* Line 1455 of yacc.c */ -#line 1925 "program_parse.y" +#line 1964 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 260: + case 263: /* Line 1455 of yacc.c */ -#line 1928 "program_parse.y" +#line 1967 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 261: + case 264: /* Line 1455 of yacc.c */ -#line 1929 "program_parse.y" +#line 1968 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 262: + case 265: /* Line 1455 of yacc.c */ -#line 1932 "program_parse.y" +#line 1971 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 263: + case 266: /* Line 1455 of yacc.c */ -#line 1933 "program_parse.y" +#line 1972 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 264: + case 267: /* Line 1455 of yacc.c */ -#line 1937 "program_parse.y" +#line 1976 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4596,10 +4659,10 @@ yyreduce: ;} break; - case 265: + case 268: /* Line 1455 of yacc.c */ -#line 1948 "program_parse.y" +#line 1987 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4610,10 +4673,10 @@ yyreduce: ;} break; - case 266: + case 269: /* Line 1455 of yacc.c */ -#line 1959 "program_parse.y" +#line 1998 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4624,10 +4687,10 @@ yyreduce: ;} break; - case 267: + case 270: /* Line 1455 of yacc.c */ -#line 1970 "program_parse.y" +#line 2009 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4651,7 +4714,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4655 "program_parse.tab.c" +#line 4718 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4870,7 +4933,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1990 "program_parse.y" +#line 2029 "program_parse.y" struct asm_instruction * diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index fa94f763c4..32aa9d503f 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -181,7 +181,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, %type KIL_instruction %type dstReg maskedDstReg maskedAddrReg -%type srcReg scalarSrcReg swizzleSrcReg +%type srcReg scalarUse scalarSrcReg swizzleSrcReg %type scalarSuffix swizzleSuffix extendedSwizzle %type extSwizComp extSwizSel %type optionalMask @@ -523,29 +523,50 @@ SWZ_instruction: SWZ maskedDstReg ',' srcReg ',' extendedSwizzle } ; -scalarSrcReg: optionalSign srcReg scalarSuffix +scalarSrcReg: optionalSign scalarUse { $$ = $2; if ($1) { $$.Base.Negate = ~$$.Base.Negate; } + } + | optionalSign '|' scalarUse '|' + { + $$ = $3; + + if (!state->option.NV_fragment) { + yyerror(& @2, state, "unexpected character '|'"); + YYERROR; + } + + if ($1) { + $$.Base.Negate = ~$$.Base.Negate; + } + + $$.Base.Abs = 1; + } + ; + +scalarUse: srcReg scalarSuffix + { + $$ = $1; $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, - $3.swizzle); + $2.swizzle); } - | optionalSign paramConstScalarUse + | paramConstScalarUse { struct asm_symbol temp_sym; if (!state->option.NV_fragment) { - yyerror(& @2, state, "expected scalar suffix"); + yyerror(& @1, state, "expected scalar suffix"); YYERROR; } memset(& temp_sym, 0, sizeof(temp_sym)); temp_sym.param_binding_begin = ~0; - initialize_symbol_from_const(state->prog, & temp_sym, & $2); + initialize_symbol_from_const(state->prog, & temp_sym, & $1); init_src_reg(& $$); $$.Base.File = PROGRAM_CONSTANT; @@ -564,6 +585,24 @@ swizzleSrcReg: optionalSign srcReg swizzleSuffix $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, $3.swizzle); } + | optionalSign '|' srcReg swizzleSuffix '|' + { + $$ = $3; + + if (!state->option.NV_fragment) { + yyerror(& @2, state, "unexpected character '|'"); + YYERROR; + } + + if ($1) { + $$.Base.Negate = ~$$.Base.Negate; + } + + $$.Base.Abs = 1; + $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, + $4.swizzle); + } + ; maskedDstReg: dstReg optionalMask -- cgit v1.2.3 From 9ea4319744fb7474635cb1994e1babe1552d4d4f Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 4 Sep 2009 16:35:50 -0700 Subject: ARB prog parser: Add new constructor for asm_instruction The new constructor copies fields from the prog_instruction that the parser expects the lexer to set. --- src/mesa/shader/program_parse.tab.c | 621 +++++++++++++++++++----------------- src/mesa/shader/program_parse.tab.h | 2 +- src/mesa/shader/program_parse.y | 111 ++++--- 3 files changed, 400 insertions(+), 334 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 505a1eb94f..b9a0e557ad 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -139,10 +139,19 @@ static void init_dst_reg(struct prog_dst_register *r); static void init_src_reg(struct asm_src_register *r); +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); + static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, const struct prog_dst_register *dst, const struct asm_src_register *src0, const struct asm_src_register *src1, const struct asm_src_register *src2); +static struct asm_instruction *asm_instruction_copy_ctor( + const struct prog_instruction *base, const struct prog_dst_register *dst, + const struct asm_src_register *src0, const struct asm_src_register *src1, + const struct asm_src_register *src2); + #ifndef FALSE #define FALSE 0 #define TRUE (!FALSE) @@ -170,7 +179,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, /* Line 189 of yacc.c */ -#line 174 "program_parse.tab.c" +#line 183 "program_parse.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -311,7 +320,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 107 "program_parse.y" +#line 116 "program_parse.y" struct asm_instruction *inst; struct asm_symbol *sym; @@ -340,7 +349,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 344 "program_parse.tab.c" +#line 353 "program_parse.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -364,14 +373,14 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 249 "program_parse.y" +#line 258 "program_parse.y" extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner); /* Line 264 of yacc.c */ -#line 375 "program_parse.tab.c" +#line 384 "program_parse.tab.c" #ifdef short # undef short @@ -768,34 +777,34 @@ static const yytype_int16 yyrhs[] = /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 256, 256, 259, 267, 279, 280, 283, 305, 306, - 309, 324, 327, 332, 339, 340, 341, 342, 343, 344, - 345, 348, 349, 350, 353, 359, 366, 373, 381, 388, - 396, 441, 448, 493, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 513, 526, 534, 551, - 558, 577, 588, 608, 630, 639, 672, 679, 694, 744, - 786, 797, 818, 828, 834, 865, 882, 882, 884, 891, - 903, 904, 905, 908, 920, 932, 950, 961, 973, 975, - 976, 977, 978, 981, 981, 981, 981, 982, 985, 986, - 987, 988, 989, 990, 993, 1011, 1015, 1021, 1025, 1029, - 1033, 1042, 1051, 1055, 1060, 1066, 1077, 1077, 1078, 1080, - 1084, 1088, 1092, 1098, 1098, 1100, 1116, 1139, 1142, 1153, - 1159, 1165, 1166, 1173, 1179, 1185, 1193, 1199, 1205, 1213, - 1219, 1225, 1233, 1234, 1237, 1238, 1239, 1240, 1241, 1242, - 1243, 1244, 1245, 1246, 1247, 1250, 1259, 1263, 1267, 1273, - 1282, 1286, 1290, 1299, 1303, 1309, 1315, 1322, 1327, 1335, - 1345, 1347, 1355, 1361, 1365, 1369, 1375, 1386, 1395, 1399, - 1404, 1408, 1412, 1416, 1422, 1429, 1433, 1439, 1447, 1458, - 1465, 1469, 1475, 1485, 1496, 1500, 1518, 1527, 1530, 1536, - 1540, 1544, 1550, 1561, 1566, 1571, 1576, 1581, 1586, 1594, - 1597, 1602, 1615, 1623, 1634, 1642, 1642, 1644, 1644, 1646, - 1656, 1661, 1668, 1678, 1687, 1692, 1699, 1709, 1719, 1731, - 1731, 1732, 1732, 1734, 1744, 1752, 1762, 1770, 1778, 1787, - 1798, 1802, 1808, 1809, 1810, 1813, 1813, 1816, 1816, 1819, - 1825, 1833, 1846, 1855, 1864, 1868, 1877, 1886, 1897, 1904, - 1909, 1918, 1930, 1933, 1942, 1953, 1954, 1955, 1958, 1959, - 1960, 1963, 1964, 1967, 1968, 1971, 1972, 1975, 1986, 1997, - 2008 + 0, 265, 265, 268, 276, 288, 289, 292, 314, 315, + 318, 333, 336, 341, 348, 349, 350, 351, 352, 353, + 354, 357, 358, 359, 362, 368, 374, 380, 387, 393, + 400, 444, 451, 495, 501, 502, 503, 504, 505, 506, + 507, 508, 509, 510, 511, 512, 515, 527, 535, 552, + 559, 578, 589, 609, 631, 640, 673, 680, 695, 745, + 787, 798, 819, 829, 835, 866, 883, 883, 885, 892, + 904, 905, 906, 909, 921, 933, 951, 962, 974, 976, + 977, 978, 979, 982, 982, 982, 982, 983, 986, 987, + 988, 989, 990, 991, 994, 1012, 1016, 1022, 1026, 1030, + 1034, 1043, 1052, 1056, 1061, 1067, 1078, 1078, 1079, 1081, + 1085, 1089, 1093, 1099, 1099, 1101, 1117, 1140, 1143, 1154, + 1160, 1166, 1167, 1174, 1180, 1186, 1194, 1200, 1206, 1214, + 1220, 1226, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1243, + 1244, 1245, 1246, 1247, 1248, 1251, 1260, 1264, 1268, 1274, + 1283, 1287, 1291, 1300, 1304, 1310, 1316, 1323, 1328, 1336, + 1346, 1348, 1356, 1362, 1366, 1370, 1376, 1387, 1396, 1400, + 1405, 1409, 1413, 1417, 1423, 1430, 1434, 1440, 1448, 1459, + 1466, 1470, 1476, 1486, 1497, 1501, 1519, 1528, 1531, 1537, + 1541, 1545, 1551, 1562, 1567, 1572, 1577, 1582, 1587, 1595, + 1598, 1603, 1616, 1624, 1635, 1643, 1643, 1645, 1645, 1647, + 1657, 1662, 1669, 1679, 1688, 1693, 1700, 1710, 1720, 1732, + 1732, 1733, 1733, 1735, 1745, 1753, 1763, 1771, 1779, 1788, + 1799, 1803, 1809, 1810, 1811, 1814, 1814, 1817, 1817, 1820, + 1826, 1834, 1847, 1856, 1865, 1869, 1878, 1887, 1898, 1905, + 1910, 1919, 1931, 1934, 1943, 1954, 1955, 1956, 1959, 1960, + 1961, 1964, 1965, 1968, 1969, 1972, 1973, 1976, 1987, 1998, + 2009 }; #endif @@ -2088,7 +2097,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 260 "program_parse.y" +#line 269 "program_parse.y" { if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header"); @@ -2101,7 +2110,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 268 "program_parse.y" +#line 277 "program_parse.y" { if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header"); @@ -2116,7 +2125,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 284 "program_parse.y" +#line 293 "program_parse.y" { int valid = 0; @@ -2141,7 +2150,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 310 "program_parse.y" +#line 319 "program_parse.y" { if ((yyvsp[(1) - (2)].inst) != NULL) { if (state->inst_tail == NULL) { @@ -2161,7 +2170,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 328 "program_parse.y" +#line 337 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumAluInstructions++; @@ -2171,7 +2180,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 333 "program_parse.y" +#line 342 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumTexInstructions++; @@ -2181,7 +2190,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 354 "program_parse.y" +#line 363 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2190,66 +2199,60 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 360 "program_parse.y" +#line 369 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; + (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} break; case 26: /* Line 1455 of yacc.c */ -#line 367 "program_parse.y" +#line 375 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; + (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} break; case 27: /* Line 1455 of yacc.c */ -#line 374 "program_parse.y" +#line 381 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; + (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); ;} break; case 28: /* Line 1455 of yacc.c */ -#line 382 "program_parse.y" +#line 388 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; + (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); ;} break; case 29: /* Line 1455 of yacc.c */ -#line 390 "program_parse.y" +#line 395 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg)); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode; + (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)); ;} break; case 30: /* Line 1455 of yacc.c */ -#line 397 "program_parse.y" +#line 401 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL); + (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) { const GLbitfield tex_mask = (1U << (yyvsp[(6) - (8)].integer)); GLbitfield shadow_tex = 0; GLbitfield target_mask = 0; - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode; (yyval.inst)->Base.TexSrcUnit = (yyvsp[(6) - (8)].integer); if ((yyvsp[(8) - (8)].integer) < 0) { @@ -2288,7 +2291,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 442 "program_parse.y" +#line 445 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); state->fragment.UsesKill = 1; @@ -2298,16 +2301,15 @@ yyreduce: case 32: /* Line 1455 of yacc.c */ -#line 449 "program_parse.y" +#line 452 "program_parse.y" { - (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (12)].temp_inst).Opcode, & (yyvsp[(2) - (12)].dst_reg), & (yyvsp[(4) - (12)].src_reg), & (yyvsp[(6) - (12)].src_reg), & (yyvsp[(8) - (12)].src_reg)); + (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) { const GLbitfield tex_mask = (1U << (yyvsp[(10) - (12)].integer)); GLbitfield shadow_tex = 0; GLbitfield target_mask = 0; - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (12)].temp_inst).SaturateMode; (yyval.inst)->Base.TexSrcUnit = (yyvsp[(10) - (12)].integer); if ((yyvsp[(12) - (12)].integer) < 0) { @@ -2346,7 +2348,7 @@ yyreduce: case 33: /* Line 1455 of yacc.c */ -#line 494 "program_parse.y" +#line 496 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -2355,91 +2357,91 @@ yyreduce: case 34: /* Line 1455 of yacc.c */ -#line 499 "program_parse.y" +#line 501 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; case 35: /* Line 1455 of yacc.c */ -#line 500 "program_parse.y" +#line 502 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; case 36: /* Line 1455 of yacc.c */ -#line 501 "program_parse.y" +#line 503 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; case 37: /* Line 1455 of yacc.c */ -#line 502 "program_parse.y" +#line 504 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; case 38: /* Line 1455 of yacc.c */ -#line 503 "program_parse.y" +#line 505 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; case 39: /* Line 1455 of yacc.c */ -#line 504 "program_parse.y" +#line 506 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; case 40: /* Line 1455 of yacc.c */ -#line 505 "program_parse.y" +#line 507 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; case 41: /* Line 1455 of yacc.c */ -#line 506 "program_parse.y" +#line 508 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; case 42: /* Line 1455 of yacc.c */ -#line 507 "program_parse.y" +#line 509 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; case 43: /* Line 1455 of yacc.c */ -#line 508 "program_parse.y" +#line 510 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; case 44: /* Line 1455 of yacc.c */ -#line 509 "program_parse.y" +#line 511 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; case 45: /* Line 1455 of yacc.c */ -#line 510 "program_parse.y" +#line 512 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; case 46: /* Line 1455 of yacc.c */ -#line 514 "program_parse.y" +#line 516 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied * FIXME: to the existing swizzle? @@ -2447,15 +2449,14 @@ yyreduce: (yyvsp[(4) - (6)].src_reg).Base.Swizzle = (yyvsp[(6) - (6)].swiz_mask).swizzle; (yyvsp[(4) - (6)].src_reg).Base.Negate = (yyvsp[(6) - (6)].swiz_mask).mask; - (yyval.inst) = asm_instruction_ctor(OPCODE_SWZ, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), NULL, NULL); - (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; + (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), NULL, NULL); ;} break; case 47: /* Line 1455 of yacc.c */ -#line 527 "program_parse.y" +#line 528 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); @@ -2468,7 +2469,7 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 535 "program_parse.y" +#line 536 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); @@ -2488,7 +2489,7 @@ yyreduce: case 49: /* Line 1455 of yacc.c */ -#line 552 "program_parse.y" +#line 553 "program_parse.y" { (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); @@ -2500,7 +2501,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 559 "program_parse.y" +#line 560 "program_parse.y" { struct asm_symbol temp_sym; @@ -2522,7 +2523,7 @@ yyreduce: case 51: /* Line 1455 of yacc.c */ -#line 578 "program_parse.y" +#line 579 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2538,7 +2539,7 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 589 "program_parse.y" +#line 590 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); @@ -2560,7 +2561,7 @@ yyreduce: case 53: /* Line 1455 of yacc.c */ -#line 609 "program_parse.y" +#line 610 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; @@ -2585,7 +2586,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 631 "program_parse.y" +#line 632 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2597,7 +2598,7 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 640 "program_parse.y" +#line 641 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2633,7 +2634,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 673 "program_parse.y" +#line 674 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; @@ -2643,7 +2644,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 680 "program_parse.y" +#line 681 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2663,7 +2664,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 695 "program_parse.y" +#line 696 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2716,7 +2717,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 745 "program_parse.y" +#line 746 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2763,7 +2764,7 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 787 "program_parse.y" +#line 788 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2779,7 +2780,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 798 "program_parse.y" +#line 799 "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)) { @@ -2805,7 +2806,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 819 "program_parse.y" +#line 820 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2818,7 +2819,7 @@ yyreduce: case 63: /* Line 1455 of yacc.c */ -#line 829 "program_parse.y" +#line 830 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2829,7 +2830,7 @@ yyreduce: case 64: /* Line 1455 of yacc.c */ -#line 835 "program_parse.y" +#line 836 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2863,7 +2864,7 @@ yyreduce: case 65: /* Line 1455 of yacc.c */ -#line 866 "program_parse.y" +#line 867 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2883,7 +2884,7 @@ yyreduce: case 68: /* Line 1455 of yacc.c */ -#line 885 "program_parse.y" +#line 886 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); @@ -2893,7 +2894,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 892 "program_parse.y" +#line 893 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2908,28 +2909,28 @@ yyreduce: case 70: /* Line 1455 of yacc.c */ -#line 903 "program_parse.y" +#line 904 "program_parse.y" { (yyval.integer) = 0; ;} break; case 71: /* Line 1455 of yacc.c */ -#line 904 "program_parse.y" +#line 905 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 72: /* Line 1455 of yacc.c */ -#line 905 "program_parse.y" +#line 906 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; case 73: /* Line 1455 of yacc.c */ -#line 909 "program_parse.y" +#line 910 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2944,7 +2945,7 @@ yyreduce: case 74: /* Line 1455 of yacc.c */ -#line 921 "program_parse.y" +#line 922 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2959,7 +2960,7 @@ yyreduce: case 75: /* Line 1455 of yacc.c */ -#line 933 "program_parse.y" +#line 934 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2980,7 +2981,7 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 951 "program_parse.y" +#line 952 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2994,7 +2995,7 @@ yyreduce: case 77: /* Line 1455 of yacc.c */ -#line 962 "program_parse.y" +#line 963 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -3009,21 +3010,21 @@ yyreduce: case 82: /* Line 1455 of yacc.c */ -#line 978 "program_parse.y" +#line 979 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 87: /* Line 1455 of yacc.c */ -#line 982 "program_parse.y" +#line 983 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 94: /* Line 1455 of yacc.c */ -#line 994 "program_parse.y" +#line 995 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -3044,7 +3045,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 1012 "program_parse.y" +#line 1013 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3053,7 +3054,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 1016 "program_parse.y" +#line 1017 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3062,7 +3063,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 1022 "program_parse.y" +#line 1023 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} @@ -3071,7 +3072,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 1026 "program_parse.y" +#line 1027 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} @@ -3080,7 +3081,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 1030 "program_parse.y" +#line 1031 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} @@ -3089,7 +3090,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 1034 "program_parse.y" +#line 1035 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3103,7 +3104,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 1043 "program_parse.y" +#line 1044 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3117,7 +3118,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 1052 "program_parse.y" +#line 1053 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3126,7 +3127,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 1056 "program_parse.y" +#line 1057 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -3136,7 +3137,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 1061 "program_parse.y" +#line 1062 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} @@ -3145,7 +3146,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 1067 "program_parse.y" +#line 1068 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3159,7 +3160,7 @@ yyreduce: case 109: /* Line 1455 of yacc.c */ -#line 1081 "program_parse.y" +#line 1082 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} @@ -3168,7 +3169,7 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 1085 "program_parse.y" +#line 1086 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} @@ -3177,7 +3178,7 @@ yyreduce: case 111: /* Line 1455 of yacc.c */ -#line 1089 "program_parse.y" +#line 1090 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} @@ -3186,7 +3187,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 1093 "program_parse.y" +#line 1094 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3195,7 +3196,7 @@ yyreduce: case 115: /* Line 1455 of yacc.c */ -#line 1101 "program_parse.y" +#line 1102 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3214,7 +3215,7 @@ yyreduce: case 116: /* Line 1455 of yacc.c */ -#line 1117 "program_parse.y" +#line 1118 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3239,7 +3240,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 1139 "program_parse.y" +#line 1140 "program_parse.y" { (yyval.integer) = 0; ;} @@ -3248,7 +3249,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 1143 "program_parse.y" +#line 1144 "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"); @@ -3262,7 +3263,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 1154 "program_parse.y" +#line 1155 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} @@ -3271,7 +3272,7 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 1160 "program_parse.y" +#line 1161 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} @@ -3280,7 +3281,7 @@ yyreduce: case 122: /* Line 1455 of yacc.c */ -#line 1167 "program_parse.y" +#line 1168 "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); @@ -3290,7 +3291,7 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 1174 "program_parse.y" +#line 1175 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3301,7 +3302,7 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 1180 "program_parse.y" +#line 1181 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3312,7 +3313,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 1186 "program_parse.y" +#line 1187 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3323,7 +3324,7 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 1194 "program_parse.y" +#line 1195 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3334,7 +3335,7 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 1200 "program_parse.y" +#line 1201 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3345,7 +3346,7 @@ yyreduce: case 128: /* Line 1455 of yacc.c */ -#line 1206 "program_parse.y" +#line 1207 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3356,7 +3357,7 @@ yyreduce: case 129: /* Line 1455 of yacc.c */ -#line 1214 "program_parse.y" +#line 1215 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3367,7 +3368,7 @@ yyreduce: case 130: /* Line 1455 of yacc.c */ -#line 1220 "program_parse.y" +#line 1221 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3378,7 +3379,7 @@ yyreduce: case 131: /* Line 1455 of yacc.c */ -#line 1226 "program_parse.y" +#line 1227 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3389,98 +3390,98 @@ yyreduce: case 132: /* Line 1455 of yacc.c */ -#line 1233 "program_parse.y" +#line 1234 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 133: /* Line 1455 of yacc.c */ -#line 1234 "program_parse.y" +#line 1235 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 134: /* Line 1455 of yacc.c */ -#line 1237 "program_parse.y" +#line 1238 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 135: /* Line 1455 of yacc.c */ -#line 1238 "program_parse.y" +#line 1239 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 136: /* Line 1455 of yacc.c */ -#line 1239 "program_parse.y" +#line 1240 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 137: /* Line 1455 of yacc.c */ -#line 1240 "program_parse.y" +#line 1241 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 138: /* Line 1455 of yacc.c */ -#line 1241 "program_parse.y" +#line 1242 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 139: /* Line 1455 of yacc.c */ -#line 1242 "program_parse.y" +#line 1243 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 140: /* Line 1455 of yacc.c */ -#line 1243 "program_parse.y" +#line 1244 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 141: /* Line 1455 of yacc.c */ -#line 1244 "program_parse.y" +#line 1245 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 142: /* Line 1455 of yacc.c */ -#line 1245 "program_parse.y" +#line 1246 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 143: /* Line 1455 of yacc.c */ -#line 1246 "program_parse.y" +#line 1247 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 144: /* Line 1455 of yacc.c */ -#line 1247 "program_parse.y" +#line 1248 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 145: /* Line 1455 of yacc.c */ -#line 1251 "program_parse.y" +#line 1252 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3492,7 +3493,7 @@ yyreduce: case 146: /* Line 1455 of yacc.c */ -#line 1260 "program_parse.y" +#line 1261 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3501,7 +3502,7 @@ yyreduce: case 147: /* Line 1455 of yacc.c */ -#line 1264 "program_parse.y" +#line 1265 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} @@ -3510,7 +3511,7 @@ yyreduce: case 148: /* Line 1455 of yacc.c */ -#line 1268 "program_parse.y" +#line 1269 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} @@ -3519,7 +3520,7 @@ yyreduce: case 149: /* Line 1455 of yacc.c */ -#line 1274 "program_parse.y" +#line 1275 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3531,7 +3532,7 @@ yyreduce: case 150: /* Line 1455 of yacc.c */ -#line 1283 "program_parse.y" +#line 1284 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3540,7 +3541,7 @@ yyreduce: case 151: /* Line 1455 of yacc.c */ -#line 1287 "program_parse.y" +#line 1288 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} @@ -3549,7 +3550,7 @@ yyreduce: case 152: /* Line 1455 of yacc.c */ -#line 1291 "program_parse.y" +#line 1292 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3563,7 +3564,7 @@ yyreduce: case 153: /* Line 1455 of yacc.c */ -#line 1300 "program_parse.y" +#line 1301 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -3572,7 +3573,7 @@ yyreduce: case 154: /* Line 1455 of yacc.c */ -#line 1304 "program_parse.y" +#line 1305 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} @@ -3581,7 +3582,7 @@ yyreduce: case 155: /* Line 1455 of yacc.c */ -#line 1310 "program_parse.y" +#line 1311 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} @@ -3590,7 +3591,7 @@ yyreduce: case 156: /* Line 1455 of yacc.c */ -#line 1316 "program_parse.y" +#line 1317 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; @@ -3600,7 +3601,7 @@ yyreduce: case 157: /* Line 1455 of yacc.c */ -#line 1323 "program_parse.y" +#line 1324 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; @@ -3610,7 +3611,7 @@ yyreduce: case 158: /* Line 1455 of yacc.c */ -#line 1328 "program_parse.y" +#line 1329 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3621,7 +3622,7 @@ yyreduce: case 159: /* Line 1455 of yacc.c */ -#line 1336 "program_parse.y" +#line 1337 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3634,7 +3635,7 @@ yyreduce: case 161: /* Line 1455 of yacc.c */ -#line 1348 "program_parse.y" +#line 1349 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3645,7 +3646,7 @@ yyreduce: case 162: /* Line 1455 of yacc.c */ -#line 1356 "program_parse.y" +#line 1357 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} @@ -3654,7 +3655,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 1362 "program_parse.y" +#line 1363 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} @@ -3663,7 +3664,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1366 "program_parse.y" +#line 1367 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} @@ -3672,7 +3673,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1370 "program_parse.y" +#line 1371 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} @@ -3681,7 +3682,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1376 "program_parse.y" +#line 1377 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3695,7 +3696,7 @@ yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 1387 "program_parse.y" +#line 1388 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3707,7 +3708,7 @@ yyreduce: case 168: /* Line 1455 of yacc.c */ -#line 1396 "program_parse.y" +#line 1397 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} @@ -3716,7 +3717,7 @@ yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 1400 "program_parse.y" +#line 1401 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} @@ -3725,7 +3726,7 @@ yyreduce: case 170: /* Line 1455 of yacc.c */ -#line 1405 "program_parse.y" +#line 1406 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} @@ -3734,7 +3735,7 @@ yyreduce: case 171: /* Line 1455 of yacc.c */ -#line 1409 "program_parse.y" +#line 1410 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} @@ -3743,7 +3744,7 @@ yyreduce: case 172: /* Line 1455 of yacc.c */ -#line 1413 "program_parse.y" +#line 1414 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} @@ -3752,7 +3753,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1417 "program_parse.y" +#line 1418 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} @@ -3761,7 +3762,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1423 "program_parse.y" +#line 1424 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3771,7 +3772,7 @@ yyreduce: case 175: /* Line 1455 of yacc.c */ -#line 1430 "program_parse.y" +#line 1431 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} @@ -3780,7 +3781,7 @@ yyreduce: case 176: /* Line 1455 of yacc.c */ -#line 1434 "program_parse.y" +#line 1435 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} @@ -3789,7 +3790,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1440 "program_parse.y" +#line 1441 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3800,7 +3801,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1448 "program_parse.y" +#line 1449 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3814,7 +3815,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1459 "program_parse.y" +#line 1460 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3824,7 +3825,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1466 "program_parse.y" +#line 1467 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} @@ -3833,7 +3834,7 @@ yyreduce: case 181: /* Line 1455 of yacc.c */ -#line 1470 "program_parse.y" +#line 1471 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} @@ -3842,7 +3843,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 1476 "program_parse.y" +#line 1477 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3855,7 +3856,7 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 1486 "program_parse.y" +#line 1487 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3868,7 +3869,7 @@ yyreduce: case 184: /* Line 1455 of yacc.c */ -#line 1496 "program_parse.y" +#line 1497 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; @@ -3878,7 +3879,7 @@ yyreduce: case 185: /* Line 1455 of yacc.c */ -#line 1501 "program_parse.y" +#line 1502 "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). @@ -3899,7 +3900,7 @@ yyreduce: case 186: /* Line 1455 of yacc.c */ -#line 1519 "program_parse.y" +#line 1520 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3910,7 +3911,7 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1527 "program_parse.y" +#line 1528 "program_parse.y" { (yyval.integer) = 0; ;} @@ -3919,7 +3920,7 @@ yyreduce: case 188: /* Line 1455 of yacc.c */ -#line 1531 "program_parse.y" +#line 1532 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3928,7 +3929,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1537 "program_parse.y" +#line 1538 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} @@ -3937,7 +3938,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1541 "program_parse.y" +#line 1542 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} @@ -3946,7 +3947,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1545 "program_parse.y" +#line 1546 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} @@ -3955,7 +3956,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1551 "program_parse.y" +#line 1552 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3969,7 +3970,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1562 "program_parse.y" +#line 1563 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -3979,7 +3980,7 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1567 "program_parse.y" +#line 1568 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; @@ -3989,7 +3990,7 @@ yyreduce: case 195: /* Line 1455 of yacc.c */ -#line 1572 "program_parse.y" +#line 1573 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; @@ -3999,7 +4000,7 @@ yyreduce: case 196: /* Line 1455 of yacc.c */ -#line 1577 "program_parse.y" +#line 1578 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -4009,7 +4010,7 @@ yyreduce: case 197: /* Line 1455 of yacc.c */ -#line 1582 "program_parse.y" +#line 1583 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -4019,7 +4020,7 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1587 "program_parse.y" +#line 1588 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); @@ -4029,7 +4030,7 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1594 "program_parse.y" +#line 1595 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4038,7 +4039,7 @@ yyreduce: case 200: /* Line 1455 of yacc.c */ -#line 1598 "program_parse.y" +#line 1599 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -4047,7 +4048,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1603 "program_parse.y" +#line 1604 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -4064,7 +4065,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1616 "program_parse.y" +#line 1617 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -4076,7 +4077,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1624 "program_parse.y" +#line 1625 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4090,7 +4091,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1635 "program_parse.y" +#line 1636 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; @@ -4100,7 +4101,7 @@ yyreduce: case 209: /* Line 1455 of yacc.c */ -#line 1647 "program_parse.y" +#line 1648 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4113,7 +4114,7 @@ yyreduce: case 210: /* Line 1455 of yacc.c */ -#line 1657 "program_parse.y" +#line 1658 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4123,7 +4124,7 @@ yyreduce: case 211: /* Line 1455 of yacc.c */ -#line 1662 "program_parse.y" +#line 1663 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4133,7 +4134,7 @@ yyreduce: case 212: /* Line 1455 of yacc.c */ -#line 1669 "program_parse.y" +#line 1670 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4146,7 +4147,7 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 1679 "program_parse.y" +#line 1680 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4159,7 +4160,7 @@ yyreduce: case 214: /* Line 1455 of yacc.c */ -#line 1688 "program_parse.y" +#line 1689 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4169,7 +4170,7 @@ yyreduce: case 215: /* Line 1455 of yacc.c */ -#line 1693 "program_parse.y" +#line 1694 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4179,7 +4180,7 @@ yyreduce: case 216: /* Line 1455 of yacc.c */ -#line 1700 "program_parse.y" +#line 1701 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4192,7 +4193,7 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1710 "program_parse.y" +#line 1711 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4205,7 +4206,7 @@ yyreduce: case 218: /* Line 1455 of yacc.c */ -#line 1720 "program_parse.y" +#line 1721 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4218,7 +4219,7 @@ yyreduce: case 223: /* Line 1455 of yacc.c */ -#line 1735 "program_parse.y" +#line 1736 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4231,7 +4232,7 @@ yyreduce: case 224: /* Line 1455 of yacc.c */ -#line 1745 "program_parse.y" +#line 1746 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4244,7 +4245,7 @@ yyreduce: case 225: /* Line 1455 of yacc.c */ -#line 1753 "program_parse.y" +#line 1754 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4257,7 +4258,7 @@ yyreduce: case 226: /* Line 1455 of yacc.c */ -#line 1763 "program_parse.y" +#line 1764 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4270,7 +4271,7 @@ yyreduce: case 227: /* Line 1455 of yacc.c */ -#line 1771 "program_parse.y" +#line 1772 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4283,7 +4284,7 @@ yyreduce: case 228: /* Line 1455 of yacc.c */ -#line 1780 "program_parse.y" +#line 1781 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4296,7 +4297,7 @@ yyreduce: case 229: /* Line 1455 of yacc.c */ -#line 1789 "program_parse.y" +#line 1790 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4309,7 +4310,7 @@ yyreduce: case 230: /* Line 1455 of yacc.c */ -#line 1799 "program_parse.y" +#line 1800 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} @@ -4318,7 +4319,7 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 1803 "program_parse.y" +#line 1804 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} @@ -4327,42 +4328,42 @@ yyreduce: case 232: /* Line 1455 of yacc.c */ -#line 1808 "program_parse.y" +#line 1809 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 233: /* Line 1455 of yacc.c */ -#line 1809 "program_parse.y" +#line 1810 "program_parse.y" { (yyval.negate) = TRUE; ;} break; case 234: /* Line 1455 of yacc.c */ -#line 1810 "program_parse.y" +#line 1811 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 235: /* Line 1455 of yacc.c */ -#line 1813 "program_parse.y" +#line 1814 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 237: /* Line 1455 of yacc.c */ -#line 1816 "program_parse.y" +#line 1817 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 239: /* Line 1455 of yacc.c */ -#line 1820 "program_parse.y" +#line 1821 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4373,7 +4374,7 @@ yyreduce: case 240: /* Line 1455 of yacc.c */ -#line 1826 "program_parse.y" +#line 1827 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4384,7 +4385,7 @@ yyreduce: case 241: /* Line 1455 of yacc.c */ -#line 1834 "program_parse.y" +#line 1835 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); @@ -4400,7 +4401,7 @@ yyreduce: case 242: /* Line 1455 of yacc.c */ -#line 1847 "program_parse.y" +#line 1848 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4414,7 +4415,7 @@ yyreduce: case 243: /* Line 1455 of yacc.c */ -#line 1856 "program_parse.y" +#line 1857 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4428,7 +4429,7 @@ yyreduce: case 244: /* Line 1455 of yacc.c */ -#line 1865 "program_parse.y" +#line 1866 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} @@ -4437,7 +4438,7 @@ yyreduce: case 245: /* Line 1455 of yacc.c */ -#line 1869 "program_parse.y" +#line 1870 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4451,7 +4452,7 @@ yyreduce: case 246: /* Line 1455 of yacc.c */ -#line 1878 "program_parse.y" +#line 1879 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4465,7 +4466,7 @@ yyreduce: case 247: /* Line 1455 of yacc.c */ -#line 1887 "program_parse.y" +#line 1888 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4479,7 +4480,7 @@ yyreduce: case 248: /* Line 1455 of yacc.c */ -#line 1898 "program_parse.y" +#line 1899 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} @@ -4488,7 +4489,7 @@ yyreduce: case 249: /* Line 1455 of yacc.c */ -#line 1904 "program_parse.y" +#line 1905 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4499,7 +4500,7 @@ yyreduce: case 250: /* Line 1455 of yacc.c */ -#line 1910 "program_parse.y" +#line 1911 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4513,7 +4514,7 @@ yyreduce: case 251: /* Line 1455 of yacc.c */ -#line 1919 "program_parse.y" +#line 1920 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4527,7 +4528,7 @@ yyreduce: case 252: /* Line 1455 of yacc.c */ -#line 1930 "program_parse.y" +#line 1931 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4536,7 +4537,7 @@ yyreduce: case 253: /* Line 1455 of yacc.c */ -#line 1934 "program_parse.y" +#line 1935 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4550,7 +4551,7 @@ yyreduce: case 254: /* Line 1455 of yacc.c */ -#line 1943 "program_parse.y" +#line 1944 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4564,91 +4565,91 @@ yyreduce: case 255: /* Line 1455 of yacc.c */ -#line 1953 "program_parse.y" +#line 1954 "program_parse.y" { (yyval.integer) = 0; ;} break; case 256: /* Line 1455 of yacc.c */ -#line 1954 "program_parse.y" +#line 1955 "program_parse.y" { (yyval.integer) = 0; ;} break; case 257: /* Line 1455 of yacc.c */ -#line 1955 "program_parse.y" +#line 1956 "program_parse.y" { (yyval.integer) = 1; ;} break; case 258: /* Line 1455 of yacc.c */ -#line 1958 "program_parse.y" +#line 1959 "program_parse.y" { (yyval.integer) = 0; ;} break; case 259: /* Line 1455 of yacc.c */ -#line 1959 "program_parse.y" +#line 1960 "program_parse.y" { (yyval.integer) = 0; ;} break; case 260: /* Line 1455 of yacc.c */ -#line 1960 "program_parse.y" +#line 1961 "program_parse.y" { (yyval.integer) = 1; ;} break; case 261: /* Line 1455 of yacc.c */ -#line 1963 "program_parse.y" +#line 1964 "program_parse.y" { (yyval.integer) = 0; ;} break; case 262: /* Line 1455 of yacc.c */ -#line 1964 "program_parse.y" +#line 1965 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 263: /* Line 1455 of yacc.c */ -#line 1967 "program_parse.y" +#line 1968 "program_parse.y" { (yyval.integer) = 0; ;} break; case 264: /* Line 1455 of yacc.c */ -#line 1968 "program_parse.y" +#line 1969 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 265: /* Line 1455 of yacc.c */ -#line 1971 "program_parse.y" +#line 1972 "program_parse.y" { (yyval.integer) = 0; ;} break; case 266: /* Line 1455 of yacc.c */ -#line 1972 "program_parse.y" +#line 1973 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 267: /* Line 1455 of yacc.c */ -#line 1976 "program_parse.y" +#line 1977 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4662,7 +4663,7 @@ yyreduce: case 268: /* Line 1455 of yacc.c */ -#line 1987 "program_parse.y" +#line 1988 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4676,7 +4677,7 @@ yyreduce: case 269: /* Line 1455 of yacc.c */ -#line 1998 "program_parse.y" +#line 1999 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4690,7 +4691,7 @@ yyreduce: case 270: /* Line 1455 of yacc.c */ -#line 2009 "program_parse.y" +#line 2010 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4714,7 +4715,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4718 "program_parse.tab.c" +#line 4719 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4933,7 +4934,42 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2029 "program_parse.y" +#line 2030 "program_parse.y" + + +void +asm_instruction_set_operands(struct asm_instruction *inst, + const struct prog_dst_register *dst, + const struct asm_src_register *src0, + const struct asm_src_register *src1, + const struct asm_src_register *src2) +{ + /* In the core ARB extensions only the KIL instruction doesn't have a + * destination register. + */ + if (dst == NULL) { + init_dst_reg(& inst->Base.DstReg); + } else { + inst->Base.DstReg = *dst; + } + + inst->Base.SrcReg[0] = src0->Base; + inst->SrcReg[0] = *src0; + + if (src1 != NULL) { + inst->Base.SrcReg[1] = src1->Base; + inst->SrcReg[1] = *src1; + } else { + init_src_reg(& inst->SrcReg[1]); + } + + if (src2 != NULL) { + inst->Base.SrcReg[2] = src2->Base; + inst->SrcReg[2] = *src2; + } else { + init_src_reg(& inst->SrcReg[2]); + } +} struct asm_instruction * @@ -4943,37 +4979,34 @@ asm_instruction_ctor(gl_inst_opcode op, const struct asm_src_register *src1, const struct asm_src_register *src2) { - struct asm_instruction *inst = calloc(1, sizeof(struct asm_instruction)); + struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); if (inst) { _mesa_init_instructions(& inst->Base, 1); inst->Base.Opcode = op; - /* In the core ARB extensions only the KIL instruction doesn't have a - * destination register. - */ - if (dst == NULL) { - init_dst_reg(& inst->Base.DstReg); - } else { - inst->Base.DstReg = *dst; - } + asm_instruction_set_operands(inst, dst, src0, src1, src2); + } - inst->Base.SrcReg[0] = src0->Base; - inst->SrcReg[0] = *src0; + return inst; +} - if (src1 != NULL) { - inst->Base.SrcReg[1] = src1->Base; - inst->SrcReg[1] = *src1; - } else { - init_src_reg(& inst->SrcReg[1]); - } - if (src2 != NULL) { - inst->Base.SrcReg[2] = src2->Base; - inst->SrcReg[2] = *src2; - } else { - init_src_reg(& inst->SrcReg[2]); - } +struct asm_instruction * +asm_instruction_copy_ctor(const struct prog_instruction *base, + const struct prog_dst_register *dst, + const struct asm_src_register *src0, + const struct asm_src_register *src1, + const struct asm_src_register *src2) +{ + struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); + + if (inst) { + _mesa_init_instructions(& inst->Base, 1); + inst->Base.Opcode = base->Opcode; + inst->Base.SaturateMode = base->SaturateMode; + + asm_instruction_set_operands(inst, dst, src0, src1, src2); } return inst; diff --git a/src/mesa/shader/program_parse.tab.h b/src/mesa/shader/program_parse.tab.h index 7ab6f6b23e..5f89532d65 100644 --- a/src/mesa/shader/program_parse.tab.h +++ b/src/mesa/shader/program_parse.tab.h @@ -153,7 +153,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 107 "program_parse.y" +#line 116 "program_parse.y" struct asm_instruction *inst; struct asm_symbol *sym; diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 32aa9d503f..4e2912d1c4 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -68,10 +68,19 @@ static void init_dst_reg(struct prog_dst_register *r); static void init_src_reg(struct asm_src_register *r); +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); + static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op, const struct prog_dst_register *dst, const struct asm_src_register *src0, const struct asm_src_register *src1, const struct asm_src_register *src2); +static struct asm_instruction *asm_instruction_copy_ctor( + const struct prog_instruction *base, const struct prog_dst_register *dst, + const struct asm_src_register *src0, const struct asm_src_register *src1, + const struct asm_src_register *src2); + #ifndef FALSE #define FALSE 0 #define TRUE (!FALSE) @@ -358,51 +367,45 @@ ARL_instruction: ARL maskedAddrReg ',' scalarSrcReg VECTORop_instruction: VECTOR_OP maskedDstReg ',' swizzleSrcReg { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL); } ; SCALARop_instruction: SCALAR_OP maskedDstReg ',' scalarSrcReg { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL); } ; BINSCop_instruction: BINSC_OP maskedDstReg ',' scalarSrcReg ',' scalarSrcReg { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, NULL); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, NULL); } ; BINop_instruction: BIN_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, NULL); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, NULL); } ; TRIop_instruction: TRI_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg ',' swizzleSrcReg { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, & $8); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, & $8); } ; SAMPLE_instruction: SAMPLE_OP maskedDstReg ',' swizzleSrcReg ',' texImageUnit ',' texTarget { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL); if ($$ != NULL) { const GLbitfield tex_mask = (1U << $6); GLbitfield shadow_tex = 0; GLbitfield target_mask = 0; - $$->Base.SaturateMode = $1.SaturateMode; $$->Base.TexSrcUnit = $6; if ($8 < 0) { @@ -447,14 +450,13 @@ KIL_instruction: KIL swizzleSrcReg TXD_instruction: TXD_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg ',' swizzleSrcReg ',' texImageUnit ',' texTarget { - $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, & $8); + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, & $8); if ($$ != NULL) { const GLbitfield tex_mask = (1U << $10); GLbitfield shadow_tex = 0; GLbitfield target_mask = 0; - $$->Base.SaturateMode = $1.SaturateMode; $$->Base.TexSrcUnit = $10; if ($12 < 0) { @@ -518,8 +520,7 @@ SWZ_instruction: SWZ maskedDstReg ',' srcReg ',' extendedSwizzle $4.Base.Swizzle = $6.swizzle; $4.Base.Negate = $6.mask; - $$ = asm_instruction_ctor(OPCODE_SWZ, & $2, & $4, NULL, NULL); - $$->Base.SaturateMode = $1.SaturateMode; + $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL); } ; @@ -2028,6 +2029,41 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER %% +void +asm_instruction_set_operands(struct asm_instruction *inst, + const struct prog_dst_register *dst, + const struct asm_src_register *src0, + const struct asm_src_register *src1, + const struct asm_src_register *src2) +{ + /* In the core ARB extensions only the KIL instruction doesn't have a + * destination register. + */ + if (dst == NULL) { + init_dst_reg(& inst->Base.DstReg); + } else { + inst->Base.DstReg = *dst; + } + + inst->Base.SrcReg[0] = src0->Base; + inst->SrcReg[0] = *src0; + + if (src1 != NULL) { + inst->Base.SrcReg[1] = src1->Base; + inst->SrcReg[1] = *src1; + } else { + init_src_reg(& inst->SrcReg[1]); + } + + if (src2 != NULL) { + inst->Base.SrcReg[2] = src2->Base; + inst->SrcReg[2] = *src2; + } else { + init_src_reg(& inst->SrcReg[2]); + } +} + + struct asm_instruction * asm_instruction_ctor(gl_inst_opcode op, const struct prog_dst_register *dst, @@ -2035,37 +2071,34 @@ asm_instruction_ctor(gl_inst_opcode op, const struct asm_src_register *src1, const struct asm_src_register *src2) { - struct asm_instruction *inst = calloc(1, sizeof(struct asm_instruction)); + struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); if (inst) { _mesa_init_instructions(& inst->Base, 1); inst->Base.Opcode = op; - /* In the core ARB extensions only the KIL instruction doesn't have a - * destination register. - */ - if (dst == NULL) { - init_dst_reg(& inst->Base.DstReg); - } else { - inst->Base.DstReg = *dst; - } + asm_instruction_set_operands(inst, dst, src0, src1, src2); + } - inst->Base.SrcReg[0] = src0->Base; - inst->SrcReg[0] = *src0; + return inst; +} - if (src1 != NULL) { - inst->Base.SrcReg[1] = src1->Base; - inst->SrcReg[1] = *src1; - } else { - init_src_reg(& inst->SrcReg[1]); - } - if (src2 != NULL) { - inst->Base.SrcReg[2] = src2->Base; - inst->SrcReg[2] = *src2; - } else { - init_src_reg(& inst->SrcReg[2]); - } +struct asm_instruction * +asm_instruction_copy_ctor(const struct prog_instruction *base, + const struct prog_dst_register *dst, + const struct asm_src_register *src0, + const struct asm_src_register *src1, + const struct asm_src_register *src2) +{ + struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); + + if (inst) { + _mesa_init_instructions(& inst->Base, 1); + inst->Base.Opcode = base->Opcode; + inst->Base.SaturateMode = base->SaturateMode; + + asm_instruction_set_operands(inst, dst, src0, src1, src2); } return inst; -- cgit v1.2.3 From d0adebb8d5ef680590b0f281a20516318c0b8b62 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Fri, 4 Sep 2009 17:27:27 -0700 Subject: NV fp parser: Support instruction and TEMP / OUTPUT sizes Adds support for declaring TEMP and OUTPUT variables as 'LONG' or 'SHORT' precision. The precision specifiers are parsed, but they are currently ignored. Some support for this may be added in the future, but neither Intel hardware nor, as far as I'm aware, Radeon hardware support multiple precisions. Also adds support for instruction precision ('X', 'H', and 'R') suffixes and instruction condition code output ('C') suffix. This results in a fairly major change to the lexer. Instructions are matched with all the possible suffix strings. The suffix string are then carved off by a context (i.e., which program mode and options are set) aware parser that converts the suffixes to bits in prog_instruction. This could have been handled in the same way _SAT was originally handled in the lexer, but it would have resulted in a very large lexer with lots of opportunity for cut-and-paste errors. --- src/mesa/shader/lex.yy.c | 1874 +++++++++++++++------------------ src/mesa/shader/program_lexer.l | 194 ++-- src/mesa/shader/program_parse.tab.c | 776 +++++++------- src/mesa/shader/program_parse.y | 50 +- src/mesa/shader/program_parse_extra.c | 61 ++ src/mesa/shader/program_parser.h | 14 + 6 files changed, 1463 insertions(+), 1506 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index 5bde12a6b7..d71a13c3bd 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -357,8 +357,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); *yy_cp = '\0'; \ yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 217 -#define YY_END_OF_BUFFER 218 +#define YY_NUM_RULES 168 +#define YY_END_OF_BUFFER 169 /* This struct is not used in this scanner, but its presence is necessary. */ struct yy_trans_info @@ -366,93 +366,100 @@ struct yy_trans_info flex_int32_t yy_verify; flex_int32_t yy_nxt; }; -static yyconst flex_int16_t yy_accept[776] = +static yyconst flex_int16_t yy_accept[836] = { 0, - 0, 0, 218, 216, 214, 213, 216, 216, 186, 212, - 188, 188, 188, 188, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 214, 0, 0, 215, 186, - 0, 187, 189, 209, 209, 0, 0, 0, 0, 209, - 0, 0, 0, 0, 0, 0, 0, 166, 210, 167, - 168, 200, 200, 200, 200, 0, 188, 0, 174, 175, - 176, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 207, 207, 0, 0, 0, + 0, 0, 169, 167, 165, 164, 167, 167, 137, 163, + 139, 139, 139, 139, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 165, 0, 0, 166, 137, + 0, 138, 140, 160, 160, 0, 0, 0, 0, 160, + 0, 0, 0, 0, 0, 0, 0, 117, 161, 118, + 119, 151, 151, 151, 151, 0, 139, 0, 125, 126, + 127, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 158, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 206, 206, 206, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 197, 197, 197, 198, 198, 199, 190, - 189, 190, 0, 191, 11, 13, 186, 15, 186, 186, - 16, 18, 186, 20, 22, 24, 26, 28, 30, 6, - - 32, 34, 35, 37, 39, 42, 40, 44, 45, 47, - 49, 51, 53, 55, 186, 186, 186, 186, 186, 65, - 67, 186, 69, 71, 73, 75, 77, 79, 81, 186, - 83, 85, 87, 89, 91, 93, 95, 186, 97, 99, - 101, 103, 186, 109, 111, 186, 186, 186, 186, 186, - 186, 0, 0, 0, 0, 189, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 127, 128, 130, 0, - 205, 0, 0, 0, 0, 0, 0, 144, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 204, 203, - 203, 156, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 194, 194, 195, 196, 0, 192, 186, 186, - 186, 186, 186, 186, 186, 186, 177, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 57, 186, 61, - 186, 186, 186, 178, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 10, - 186, 186, 186, 186, 105, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 0, 211, 0, 0, 0, 120, - 121, 0, 0, 0, 0, 0, 0, 0, 132, 0, + 157, 157, 157, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 148, 148, 148, 149, 149, 150, 141, + 140, 141, 0, 142, 11, 12, 137, 13, 137, 137, + 14, 15, 137, 16, 17, 18, 19, 20, 21, 6, + + 22, 23, 24, 25, 26, 28, 27, 29, 30, 31, + 32, 33, 34, 35, 137, 137, 137, 137, 137, 40, + 41, 137, 42, 43, 44, 45, 46, 47, 48, 137, + 49, 50, 51, 52, 53, 54, 55, 137, 56, 57, + 58, 59, 137, 62, 63, 137, 137, 137, 137, 137, + 137, 0, 0, 0, 0, 140, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 78, 79, 81, 0, + 156, 0, 0, 0, 0, 0, 0, 95, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 155, 154, + 154, 107, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 145, 145, 146, 147, 0, 143, 11, 11, + 137, 12, 12, 12, 137, 137, 137, 137, 137, 15, + 15, 137, 128, 16, 16, 137, 17, 17, 137, 18, + 18, 137, 19, 19, 137, 20, 20, 137, 21, 21, + 137, 22, 22, 137, 24, 24, 137, 25, 25, 137, + 28, 28, 137, 27, 27, 137, 30, 30, 137, 31, + 31, 137, 32, 32, 137, 33, 33, 137, 34, 34, + 137, 35, 35, 137, 137, 137, 137, 36, 137, 38, + 137, 40, 40, 137, 41, 41, 137, 129, 42, 42, + 137, 43, 43, 137, 137, 45, 45, 137, 46, 46, + + 137, 47, 47, 137, 48, 48, 137, 137, 49, 49, + 137, 50, 50, 137, 51, 51, 137, 52, 52, 137, + 53, 53, 137, 54, 54, 137, 137, 10, 56, 137, + 57, 137, 58, 137, 59, 137, 60, 137, 62, 62, + 137, 137, 137, 137, 137, 137, 137, 137, 0, 162, + 0, 0, 0, 71, 72, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, - 0, 160, 0, 162, 0, 0, 0, 0, 0, 0, - 201, 193, 186, 186, 186, 4, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 9, - 186, 59, 186, 63, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 107, 186, 186, 186, - 186, 186, 116, 186, 186, 0, 0, 0, 0, 0, - 122, 123, 0, 0, 0, 0, 131, 0, 0, 135, - - 138, 0, 0, 0, 0, 0, 0, 0, 149, 150, - 0, 0, 0, 0, 155, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 186, 186, 186, 186, 186, - 186, 5, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 7, 8, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, - 186, 186, 186, 186, 117, 186, 113, 0, 0, 0, - 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, - - 0, 141, 0, 145, 146, 0, 148, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 164, 165, 0, - 0, 172, 12, 3, 14, 182, 183, 186, 17, 19, - 21, 23, 25, 27, 29, 31, 33, 36, 38, 43, - 41, 46, 48, 50, 52, 54, 56, 186, 186, 186, - 186, 66, 68, 70, 72, 74, 76, 78, 80, 82, - 186, 186, 186, 84, 86, 88, 90, 92, 94, 96, - 98, 100, 102, 104, 186, 186, 110, 112, 186, 115, - 173, 0, 0, 118, 0, 124, 0, 0, 0, 133, - 0, 0, 0, 0, 0, 0, 147, 0, 0, 153, - - 140, 0, 0, 0, 0, 0, 0, 169, 0, 186, - 58, 186, 62, 186, 179, 180, 186, 106, 186, 114, - 0, 0, 0, 0, 126, 129, 134, 0, 0, 139, - 0, 0, 0, 152, 0, 0, 0, 0, 161, 163, - 0, 186, 60, 64, 186, 108, 2, 1, 0, 125, - 0, 137, 0, 143, 151, 0, 0, 158, 159, 170, - 186, 181, 0, 136, 0, 154, 157, 186, 119, 142, - 186, 186, 184, 185, 0 + 0, 153, 0, 0, 0, 111, 0, 113, 0, 0, + 0, 0, 0, 0, 152, 144, 137, 137, 137, 4, + + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 9, 37, 39, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 60, 137, 61, + 137, 137, 137, 137, 137, 67, 137, 137, 0, 0, + 0, 0, 0, 73, 74, 0, 0, 0, 0, 82, + 0, 0, 86, 89, 0, 0, 0, 0, 0, 0, + 0, 100, 101, 0, 0, 0, 0, 106, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 137, 137, + + 137, 137, 137, 137, 5, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 7, 8, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 61, 137, + 137, 137, 137, 137, 68, 137, 64, 0, 0, 0, + 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 92, 0, 96, 97, 0, 99, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 115, 116, 0, + 0, 123, 11, 3, 12, 133, 134, 137, 14, 15, + + 16, 17, 18, 19, 20, 21, 22, 24, 25, 28, + 27, 30, 31, 32, 33, 34, 35, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 137, 137, 137, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 137, 137, 62, 63, 137, 66, 124, 0, 0, 69, + 0, 75, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 98, 0, 0, 104, 91, 0, 0, 0, + 0, 0, 0, 120, 0, 137, 130, 131, 137, 60, + 137, 65, 0, 0, 0, 0, 77, 80, 85, 0, + 0, 90, 0, 0, 0, 103, 0, 0, 0, 0, + + 112, 114, 0, 137, 137, 61, 2, 1, 0, 76, + 0, 88, 0, 94, 102, 0, 0, 109, 110, 121, + 137, 132, 0, 87, 0, 105, 108, 137, 70, 93, + 137, 137, 135, 136, 0 } ; static yyconst flex_int32_t yy_ec[256] = @@ -498,185 +505,199 @@ static yyconst flex_int32_t yy_meta[68] = 2, 2, 2, 2, 2, 2, 2 } ; -static yyconst flex_int16_t yy_base[779] = +static yyconst flex_int16_t yy_base[839] = { 0, - 0, 0, 1054, 1055, 66, 1055, 1048, 1049, 0, 69, - 85, 128, 140, 152, 151, 58, 56, 63, 76, 1027, - 158, 160, 39, 163, 173, 189, 52, 1020, 76, 990, - 989, 1001, 985, 999, 998, 105, 1027, 1039, 1055, 0, - 225, 1055, 218, 160, 157, 20, 123, 66, 119, 192, - 999, 985, 54, 162, 983, 995, 194, 1055, 200, 195, - 98, 227, 196, 231, 235, 293, 305, 316, 1055, 1055, - 1055, 1004, 1017, 1011, 223, 1000, 1003, 999, 1014, 107, - 298, 996, 1010, 246, 996, 1009, 1000, 1013, 990, 1001, - 992, 182, 993, 984, 993, 984, 983, 984, 144, 978, - - 984, 995, 986, 980, 977, 978, 982, 289, 991, 978, - 302, 985, 972, 986, 962, 65, 315, 989, 981, 980, - 956, 941, 936, 953, 929, 934, 960, 279, 949, 293, - 944, 342, 299, 946, 927, 317, 937, 933, 928, 207, - 934, 920, 936, 933, 924, 320, 324, 926, 915, 929, - 932, 914, 929, 916, 913, 920, 284, 928, 227, 288, - 327, 342, 345, 905, 922, 923, 916, 898, 318, 899, - 921, 912, 330, 341, 345, 349, 353, 357, 361, 1055, - 419, 430, 436, 442, 920, 205, 944, 0, 943, 926, - 916, 915, 935, 913, 912, 911, 910, 909, 908, 0, - - 907, 0, 906, 905, 0, 904, 903, 0, 902, 901, - 900, 899, 898, 897, 913, 906, 919, 354, 356, 893, - 892, 898, 890, 889, 888, 887, 886, 885, 884, 905, - 882, 881, 880, 879, 878, 877, 876, 886, 874, 873, - 872, 871, 357, 870, 869, 861, 860, 845, 845, 844, - 843, 886, 858, 846, 448, 456, 430, 850, 418, 847, - 841, 841, 835, 848, 848, 833, 1055, 1055, 848, 836, - 432, 843, 135, 840, 846, 433, 841, 1055, 832, 839, - 838, 841, 827, 826, 830, 825, 330, 830, 439, 442, - 451, 1055, 822, 820, 820, 828, 829, 811, 456, 816, - - 822, 441, 447, 454, 458, 462, 520, 526, 836, 848, - 834, 833, 826, 840, 830, 829, 0, 828, 827, 826, - 825, 824, 823, 822, 821, 820, 819, 818, 817, 816, - 815, 814, 813, 812, 815, 808, 815, 800, 807, 798, - 821, 804, 803, 0, 802, 801, 800, 799, 798, 797, - 796, 799, 794, 793, 792, 791, 790, 789, 788, 0, - 787, 786, 785, 784, 775, 782, 781, 780, 758, 752, - 757, 763, 746, 761, 495, 1055, 760, 750, 754, 1055, - 1055, 744, 753, 739, 756, 739, 742, 736, 1055, 737, - 736, 733, 740, 733, 741, 737, 747, 744, 726, 732, - - 739, 723, 722, 740, 722, 734, 733, 1055, 732, 722, - 726, 1055, 713, 1055, 718, 718, 726, 709, 710, 720, - 1055, 1055, 752, 734, 750, 0, 532, 748, 748, 747, - 746, 745, 744, 743, 742, 741, 740, 739, 738, 737, - 736, 735, 734, 733, 732, 731, 730, 717, 710, 0, - 710, 701, 708, 699, 723, 722, 721, 720, 719, 718, - 717, 716, 715, 693, 713, 712, 711, 710, 709, 708, - 707, 706, 705, 704, 703, 685, 676, 700, 699, 668, - 671, 651, 0, 652, 645, 652, 651, 652, 644, 662, - 1055, 1055, 644, 642, 652, 645, 1055, 640, 657, 345, - - 1055, 648, 632, 633, 642, 633, 632, 632, 1055, 631, - 640, 630, 646, 643, 1055, 642, 640, 629, 630, 626, - 618, 625, 620, 621, 616, 642, 642, 640, 654, 653, - 648, 0, 636, 635, 634, 633, 632, 631, 630, 629, - 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, - 618, 0, 0, 635, 617, 633, 615, 613, 612, 611, - 610, 609, 608, 607, 606, 605, 484, 604, 603, 602, - 601, 600, 599, 598, 597, 596, 595, 594, 611, 593, - 591, 590, 568, 568, 0, 575, 0, 609, 608, 557, - 575, 1055, 570, 565, 558, 554, 566, 556, 554, 550, - - 566, 557, 556, 1055, 1055, 559, 1055, 554, 547, 536, - 547, 539, 543, 556, 551, 554, 536, 1055, 1055, 548, - 537, 1055, 0, 0, 0, 0, 0, 576, 0, 0, + 0, 0, 1283, 1284, 66, 1284, 1277, 1278, 0, 69, + 85, 128, 140, 152, 151, 58, 56, 63, 76, 1256, + 158, 160, 39, 163, 173, 189, 52, 1249, 76, 1219, + 1218, 1230, 1214, 1228, 1227, 105, 1256, 1268, 1284, 0, + 225, 1284, 218, 160, 157, 20, 123, 66, 119, 192, + 1228, 1214, 54, 162, 1212, 1224, 194, 1284, 200, 195, + 98, 227, 196, 231, 235, 293, 305, 316, 1284, 1284, + 1284, 1233, 1246, 1240, 223, 1229, 1232, 1228, 1243, 107, + 298, 1225, 1239, 246, 1225, 1238, 1229, 1242, 1219, 1230, + 1221, 182, 1222, 1213, 1222, 1213, 1212, 1213, 144, 1207, + + 1213, 1224, 1215, 1209, 1206, 1207, 1211, 289, 1220, 1207, + 302, 1214, 1201, 1215, 1191, 65, 315, 1218, 1210, 1209, + 1185, 1170, 1165, 1182, 1158, 1163, 1189, 279, 1178, 293, + 1173, 342, 299, 1175, 1156, 317, 1166, 1162, 1157, 207, + 1163, 1149, 1165, 1162, 1153, 320, 324, 1155, 1144, 1158, + 1161, 1143, 1158, 1145, 1142, 1149, 284, 1157, 227, 288, + 327, 342, 345, 1134, 1151, 1152, 1145, 1127, 318, 1128, + 1150, 1141, 330, 341, 345, 349, 353, 357, 361, 1284, + 419, 430, 436, 442, 440, 441, 1174, 0, 1173, 1156, + 1146, 443, 1166, 444, 451, 468, 470, 472, 471, 0, + + 496, 0, 497, 498, 0, 499, 500, 0, 524, 525, + 526, 536, 537, 553, 1161, 1154, 1167, 354, 356, 561, + 563, 1148, 564, 565, 1140, 580, 590, 591, 592, 1161, + 593, 617, 618, 619, 629, 630, 1138, 1148, 247, 330, + 362, 419, 445, 646, 1136, 1128, 1127, 1112, 1112, 1111, + 1110, 1153, 1125, 1113, 662, 669, 643, 1117, 487, 1114, + 1108, 1108, 1102, 1115, 1115, 1100, 1284, 1284, 1115, 1103, + 646, 1110, 135, 1107, 1113, 561, 1108, 1284, 1099, 1106, + 1105, 1108, 1094, 1093, 1097, 1092, 330, 1097, 650, 653, + 665, 1284, 1089, 1087, 1087, 1095, 1096, 1078, 670, 1083, + + 1089, 432, 460, 486, 579, 655, 715, 722, 1095, 682, + 1102, 1093, 697, 721, 1100, 1099, 1092, 1106, 1096, 1087, + 699, 1094, 0, 1085, 724, 1092, 1083, 725, 1090, 1081, + 726, 1088, 1079, 727, 1086, 1077, 728, 1084, 1075, 729, + 1082, 1073, 730, 1080, 1071, 731, 1078, 1069, 732, 1076, + 1067, 733, 1074, 1065, 734, 1072, 1063, 735, 1070, 1061, + 736, 1068, 1059, 737, 1066, 1057, 738, 1064, 1055, 739, + 1062, 1053, 740, 1060, 1063, 1056, 1063, 0, 1056, 0, + 1071, 1046, 741, 1053, 1044, 742, 1051, 0, 1042, 743, + 1049, 1040, 745, 1047, 1046, 1037, 746, 1044, 1035, 767, + + 1042, 1033, 770, 1040, 1031, 771, 1038, 1041, 1028, 772, + 1035, 1026, 773, 1033, 1024, 774, 1031, 1022, 775, 1029, + 1020, 776, 1027, 1018, 777, 1025, 1024, 0, 1015, 1022, + 1013, 1020, 1011, 1018, 1009, 1016, 778, 1015, 1006, 779, + 1013, 1012, 990, 984, 989, 995, 978, 993, 424, 1284, + 992, 982, 986, 1284, 1284, 976, 985, 971, 988, 971, + 974, 968, 1284, 969, 968, 965, 972, 965, 973, 969, + 979, 976, 958, 964, 971, 955, 954, 972, 954, 966, + 965, 1284, 964, 954, 958, 1284, 945, 1284, 950, 950, + 958, 941, 942, 952, 1284, 1284, 984, 966, 982, 0, + + 788, 980, 980, 979, 978, 977, 976, 975, 974, 973, + 972, 971, 970, 969, 968, 967, 966, 965, 964, 963, + 962, 949, 942, 0, 0, 0, 959, 958, 957, 956, + 955, 954, 953, 952, 951, 929, 949, 948, 947, 946, + 945, 944, 943, 942, 941, 940, 939, 913, 920, 783, + 936, 935, 904, 907, 887, 0, 888, 881, 888, 887, + 888, 880, 898, 1284, 1284, 880, 878, 888, 881, 1284, + 876, 893, 345, 1284, 884, 868, 869, 878, 869, 868, + 868, 1284, 867, 876, 866, 882, 879, 1284, 878, 876, + 865, 866, 862, 854, 861, 856, 857, 852, 878, 878, + + 876, 890, 889, 884, 0, 872, 871, 870, 869, 868, + 867, 866, 865, 864, 863, 862, 861, 860, 859, 858, + 857, 856, 855, 854, 0, 0, 853, 852, 851, 850, + 849, 848, 847, 846, 845, 791, 844, 843, 842, 841, + 840, 839, 838, 837, 836, 835, 834, 851, 825, 832, + 830, 829, 807, 807, 0, 814, 0, 848, 847, 796, + 814, 1284, 809, 804, 797, 793, 805, 795, 793, 789, + 805, 796, 795, 1284, 1284, 798, 1284, 793, 786, 775, + 786, 778, 782, 795, 790, 793, 775, 1284, 1284, 787, + 776, 1284, 0, 0, 0, 0, 0, 815, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 811, 803, 790, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 557, 574, 555, - 572, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 568, 567, 565, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 550, 567, 0, 0, 521, 0, - 0, 572, 571, 1055, 518, 1055, 522, 522, 531, 1055, - 515, 529, 517, 519, 516, 518, 1055, 496, 507, 1055, - - 1055, 511, 507, 500, 497, 497, 510, 1055, 494, 534, - 0, 518, 0, 517, 0, 0, 532, 0, 515, 0, - 67, 187, 172, 202, 1055, 1055, 1055, 219, 243, 1055, - 245, 246, 300, 1055, 292, 315, 332, 340, 1055, 1055, - 357, 406, 0, 0, 402, 0, 1055, 1055, 381, 1055, - 423, 1055, 437, 1055, 1055, 431, 429, 1055, 1055, 1055, - 460, 0, 448, 1055, 444, 1055, 1055, 534, 1055, 1055, - 496, 528, 0, 0, 1055, 565, 546, 568 + 775, 791, 0, 0, 745, 0, 0, 796, 795, 1284, + 737, 1284, 655, 655, 661, 1284, 644, 658, 643, 644, + 635, 620, 1284, 598, 608, 1284, 1284, 604, 586, 579, + 567, 567, 574, 1284, 557, 582, 0, 0, 582, 0, + 565, 0, 582, 580, 539, 525, 1284, 1284, 1284, 527, + 527, 1284, 525, 497, 499, 1284, 478, 451, 439, 441, + + 1284, 1284, 431, 441, 366, 0, 1284, 1284, 21, 1284, + 144, 1284, 176, 1284, 1284, 182, 187, 1284, 1284, 1284, + 220, 0, 235, 1284, 245, 1284, 1284, 424, 1284, 1284, + 327, 373, 0, 0, 1284, 824, 396, 827 } ; -static yyconst flex_int16_t yy_def[779] = +static yyconst flex_int16_t yy_def[839] = { 0, - 775, 1, 775, 775, 775, 775, 775, 776, 777, 775, - 775, 775, 775, 775, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 775, 775, 776, 775, 777, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 778, 775, 775, 775, 775, - 775, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 777, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 777, - 777, 777, 777, 777, 777, 777, 777, 777, 777, 777, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 777, 777, 777, 777, 777, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 777, 777, 775, 775, 775, 775, 775, 777, 775, 775, - 777, 777, 777, 777, 0, 775, 775, 775 + 835, 1, 835, 835, 835, 835, 835, 836, 837, 835, + 835, 835, 835, 835, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 835, 835, 836, 835, 837, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 838, 835, 835, 835, 835, + 835, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 837, 837, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 837, 837, 837, 837, 837, 837, 837, 837, + + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 837, 837, 837, + 837, 837, 837, 837, 837, 837, 837, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 837, 837, 837, 837, 837, + 837, 837, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 837, 837, 837, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 837, 837, 835, 835, 835, 835, 835, 837, 835, 835, + 837, 837, 837, 837, 0, 835, 835, 835 } ; -static yyconst flex_int16_t yy_nxt[1123] = +static yyconst flex_int16_t yy_nxt[1352] = { 0, 4, 5, 6, 5, 7, 8, 9, 4, 10, 11, 12, 13, 14, 11, 11, 15, 9, 16, 17, 18, @@ -685,7 +706,7 @@ static yyconst flex_int16_t yy_nxt[1123] = 9, 9, 9, 9, 9, 9, 30, 9, 9, 9, 9, 9, 9, 9, 9, 9, 31, 9, 32, 33, 34, 9, 35, 9, 9, 9, 9, 36, 96, 36, - 41, 116, 137, 97, 80, 138, 747, 42, 43, 43, + 41, 116, 137, 97, 80, 138, 823, 42, 43, 43, 43, 43, 43, 43, 77, 81, 78, 119, 82, 117, 83, 238, 79, 66, 67, 67, 67, 67, 67, 67, @@ -697,114 +718,139 @@ static yyconst flex_int16_t yy_nxt[1123] = 67, 67, 67, 67, 67, 218, 171, 219, 70, 68, 66, 67, 67, 67, 67, 67, 67, 72, 139, 73, 71, 68, 140, 68, 144, 92, 74, 145, 98, 88, - 390, 89, 75, 93, 76, 68, 90, 99, 94, 91, - 101, 100, 102, 103, 95, 391, 748, 68, 136, 133, + 464, 89, 75, 93, 76, 68, 90, 99, 94, 91, + 101, 100, 102, 103, 95, 465, 824, 68, 136, 133, 210, 133, 133, 152, 133, 104, 105, 133, 106, 107, 108, 109, 110, 134, 111, 133, 112, 153, 133, 211, - 135, 749, 113, 114, 154, 115, 41, 43, 43, 43, - 43, 43, 43, 146, 147, 157, 310, 132, 165, 133, - 166, 161, 162, 167, 168, 311, 158, 163, 188, 159, - 133, 169, 160, 264, 189, 164, 750, 201, 133, 174, - 173, 175, 176, 132, 751, 265, 128, 129, 46, 47, + 135, 825, 113, 114, 154, 115, 41, 43, 43, 43, + 43, 43, 43, 146, 147, 157, 826, 132, 165, 133, + 166, 161, 162, 167, 168, 827, 158, 163, 188, 159, + 133, 169, 160, 264, 189, 164, 828, 201, 133, 174, + 173, 175, 176, 132, 429, 265, 128, 129, 46, 47, 48, 49, 172, 51, 52, 202, 284, 53, 54, 55, - 56, 57, 58, 130, 60, 61, 285, 752, 131, 753, + 56, 57, 58, 130, 60, 61, 285, 430, 131, 829, 173, 173, 173, 173, 177, 173, 173, 178, 179, 173, - 173, 173, 181, 181, 181, 181, 181, 181, 228, 754, + 173, 173, 181, 181, 181, 181, 181, 181, 228, 830, 196, 197, 182, 66, 67, 67, 67, 67, 67, 67, 198, 232, 229, 183, 68, 184, 184, 184, 184, 184, 184, 240, 134, 241, 254, 233, 281, 286, 182, 135, - 257, 257, 282, 287, 242, 755, 257, 756, 164, 255, + 257, 257, 282, 287, 242, 833, 257, 431, 164, 255, 68, 256, 256, 256, 256, 256, 256, 257, 257, 257, 260, 257, 257, 297, 257, 271, 257, 257, 257, 257, - 757, 257, 340, 298, 257, 257, 338, 405, 257, 365, - 406, 288, 257, 289, 257, 257, 290, 291, 339, 257, - 341, 366, 257, 302, 302, 302, 302, 758, 599, 759, + 432, 257, 380, 298, 257, 257, 378, 479, 257, 433, + 480, 288, 257, 289, 257, 257, 290, 291, 379, 257, + 381, 834, 257, 302, 302, 302, 302, 40, 669, 822, - 257, 600, 760, 257, 302, 302, 302, 302, 303, 302, + 257, 670, 434, 257, 302, 302, 302, 302, 303, 302, 302, 304, 305, 302, 302, 302, 302, 302, 302, 302, 306, 302, 302, 302, 302, 302, 302, 302, 43, 43, - 43, 43, 43, 43, 761, 762, 763, 307, 132, 308, + 43, 43, 43, 43, 831, 832, 435, 307, 132, 308, 308, 308, 308, 308, 308, 184, 184, 184, 184, 184, - 184, 184, 184, 184, 184, 184, 184, 256, 256, 256, - 256, 256, 256, 378, 132, 256, 256, 256, 256, 256, - 256, 376, 376, 376, 376, 764, 379, 376, 394, 376, - 376, 376, 765, 376, 376, 766, 376, 767, 376, 376, - 376, 395, 408, 376, 661, 662, 768, 376, 376, 415, - - 376, 416, 769, 417, 421, 421, 421, 421, 770, 376, - 421, 421, 421, 421, 773, 663, 418, 422, 421, 421, - 421, 421, 421, 421, 421, 421, 421, 421, 421, 308, - 308, 308, 308, 308, 308, 308, 308, 308, 308, 308, - 308, 486, 529, 530, 771, 772, 774, 40, 746, 745, - 744, 743, 742, 741, 740, 739, 738, 487, 737, 736, - 735, 734, 733, 732, 531, 38, 38, 38, 180, 180, - 731, 730, 729, 728, 727, 726, 725, 724, 723, 722, - 721, 720, 719, 718, 717, 716, 715, 714, 713, 712, - 711, 710, 709, 708, 707, 706, 705, 704, 703, 702, - - 701, 700, 699, 698, 697, 696, 695, 694, 693, 692, - 691, 690, 689, 688, 687, 686, 685, 684, 683, 682, - 681, 680, 679, 678, 677, 676, 675, 674, 673, 672, - 671, 670, 669, 668, 667, 666, 665, 664, 660, 659, - 658, 657, 656, 655, 654, 653, 652, 651, 650, 649, - 648, 647, 646, 645, 644, 643, 642, 641, 640, 639, - 638, 637, 636, 635, 634, 633, 632, 631, 630, 629, - 628, 627, 626, 625, 624, 623, 622, 621, 620, 619, - 618, 617, 616, 615, 614, 613, 612, 611, 610, 609, - 608, 607, 606, 605, 604, 603, 602, 601, 598, 597, - - 596, 595, 594, 593, 592, 591, 590, 589, 588, 587, - 586, 585, 584, 583, 582, 581, 580, 579, 578, 577, - 576, 575, 574, 573, 572, 571, 570, 569, 568, 567, - 566, 565, 564, 563, 562, 561, 560, 559, 558, 557, - 556, 555, 554, 553, 552, 551, 550, 549, 548, 547, - 546, 545, 544, 543, 542, 541, 540, 539, 538, 537, - 536, 535, 534, 533, 532, 528, 527, 526, 525, 524, - 523, 522, 521, 520, 519, 518, 517, 516, 515, 514, - 513, 512, 511, 510, 509, 508, 507, 506, 505, 504, - 503, 502, 501, 500, 499, 498, 497, 496, 495, 494, - - 493, 492, 491, 490, 489, 488, 485, 484, 483, 482, - 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, - 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, - 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, - 451, 450, 449, 448, 447, 446, 445, 444, 443, 442, - 441, 440, 439, 438, 437, 436, 435, 434, 433, 432, - 431, 430, 429, 428, 427, 426, 425, 424, 423, 420, - 419, 414, 413, 412, 411, 410, 409, 407, 404, 403, - 402, 401, 400, 399, 398, 397, 396, 393, 392, 389, - 388, 387, 386, 385, 384, 383, 382, 381, 380, 377, - - 288, 260, 375, 374, 373, 372, 371, 370, 369, 368, - 367, 364, 363, 362, 361, 360, 359, 358, 357, 356, - 355, 354, 353, 352, 351, 350, 349, 348, 347, 346, - 345, 344, 343, 342, 337, 336, 335, 334, 333, 332, - 331, 330, 329, 328, 327, 326, 325, 324, 323, 322, - 321, 320, 319, 318, 317, 316, 315, 314, 313, 312, - 309, 301, 300, 299, 296, 295, 294, 293, 292, 283, - 280, 279, 278, 277, 276, 275, 274, 273, 272, 270, - 269, 268, 267, 266, 263, 262, 261, 259, 258, 172, - 253, 252, 251, 250, 249, 248, 247, 246, 245, 244, - - 243, 237, 236, 235, 234, 231, 230, 227, 226, 225, - 224, 223, 222, 221, 220, 217, 216, 215, 214, 213, - 212, 209, 208, 207, 206, 205, 204, 203, 200, 199, - 193, 192, 191, 190, 187, 186, 185, 156, 155, 149, - 148, 39, 127, 126, 125, 124, 123, 122, 121, 118, - 87, 39, 37, 775, 3, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775 + 184, 184, 184, 184, 184, 184, 184, 309, 312, 436, + 320, 324, 310, 313, 132, 321, 325, 437, 327, 821, + 559, 310, 314, 328, 321, 325, 820, 310, 313, 438, + 311, 315, 328, 322, 326, 330, 560, 333, 339, 336, + 331, 329, 334, 340, 337, 495, 495, 495, 495, 331, + + 819, 334, 340, 337, 818, 331, 817, 334, 332, 337, + 335, 341, 338, 342, 345, 348, 351, 354, 343, 346, + 349, 352, 355, 495, 495, 495, 495, 343, 346, 349, + 352, 355, 452, 816, 346, 349, 344, 347, 350, 353, + 356, 357, 360, 363, 815, 453, 358, 361, 364, 496, + 495, 495, 495, 366, 369, 358, 361, 364, 367, 370, + 814, 358, 361, 364, 359, 362, 365, 367, 370, 813, + 372, 812, 811, 367, 370, 373, 368, 371, 382, 810, + 385, 389, 392, 383, 373, 386, 390, 393, 809, 808, + 373, 807, 383, 374, 386, 390, 393, 396, 806, 805, + + 804, 384, 397, 387, 391, 394, 468, 399, 402, 405, + 409, 397, 400, 403, 406, 410, 803, 397, 802, 469, + 398, 400, 403, 406, 410, 801, 800, 400, 403, 406, + 401, 404, 407, 411, 412, 415, 418, 799, 798, 413, + 416, 419, 495, 495, 495, 495, 421, 424, 413, 416, + 419, 422, 425, 797, 413, 416, 419, 414, 417, 420, + 422, 425, 796, 439, 795, 794, 422, 425, 440, 423, + 426, 256, 256, 256, 256, 256, 256, 440, 256, 256, + 256, 256, 256, 256, 450, 450, 441, 450, 450, 793, + 450, 450, 450, 450, 450, 450, 792, 450, 791, 309, + + 450, 450, 790, 789, 450, 788, 482, 450, 450, 787, + 786, 450, 450, 489, 312, 490, 320, 491, 495, 495, + 495, 495, 311, 450, 308, 308, 308, 308, 308, 308, + 492, 308, 308, 308, 308, 308, 308, 315, 312, 322, + 498, 324, 327, 330, 333, 336, 339, 342, 345, 348, + 351, 354, 357, 360, 363, 366, 369, 372, 382, 385, + 389, 315, 392, 396, 326, 329, 332, 335, 338, 341, + 344, 347, 350, 353, 356, 359, 362, 365, 368, 371, + 374, 384, 387, 391, 399, 394, 398, 402, 405, 409, + 412, 415, 418, 421, 424, 548, 439, 785, 602, 603, + + 649, 727, 728, 784, 783, 782, 781, 401, 780, 779, + 404, 407, 411, 414, 417, 420, 423, 426, 549, 441, + 604, 778, 729, 650, 38, 38, 38, 180, 180, 777, + 776, 775, 774, 773, 772, 771, 770, 769, 768, 767, + 766, 765, 764, 763, 762, 761, 760, 759, 758, 757, + 756, 755, 754, 753, 752, 751, 750, 749, 748, 747, + 746, 745, 744, 743, 742, 650, 741, 740, 739, 738, + 737, 736, 735, 734, 733, 732, 731, 730, 726, 725, + 724, 723, 722, 721, 720, 719, 718, 717, 716, 715, + 714, 713, 712, 711, 710, 709, 708, 707, 706, 705, + + 704, 703, 702, 701, 700, 699, 698, 697, 696, 695, + 694, 693, 692, 691, 690, 689, 688, 687, 686, 685, + 684, 683, 682, 681, 680, 679, 678, 677, 676, 675, + 674, 673, 672, 671, 668, 667, 666, 665, 664, 663, + 662, 661, 660, 659, 658, 657, 656, 655, 654, 653, + 652, 651, 648, 549, 647, 646, 645, 644, 643, 642, + 641, 640, 639, 638, 637, 636, 635, 634, 633, 632, + 631, 630, 629, 628, 627, 626, 625, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, + 611, 610, 609, 608, 607, 606, 605, 601, 600, 599, + + 598, 597, 596, 595, 594, 593, 592, 591, 590, 589, + 588, 587, 586, 585, 584, 583, 582, 581, 580, 579, + 578, 577, 576, 575, 574, 573, 572, 571, 570, 569, + 568, 567, 566, 565, 564, 563, 562, 561, 558, 557, + 556, 555, 554, 553, 552, 551, 441, 550, 547, 436, + 546, 434, 545, 432, 544, 430, 543, 542, 426, 541, + 423, 540, 420, 539, 417, 538, 414, 537, 411, 536, + 535, 407, 534, 404, 533, 401, 532, 398, 531, 530, + 394, 529, 391, 528, 387, 527, 384, 526, 525, 524, + 523, 522, 521, 374, 520, 371, 519, 368, 518, 365, + + 517, 362, 516, 359, 515, 356, 514, 353, 513, 350, + 512, 347, 511, 344, 510, 341, 509, 338, 508, 335, + 507, 332, 506, 329, 505, 326, 504, 322, 503, 502, + 501, 500, 499, 315, 497, 311, 494, 493, 488, 487, + 486, 485, 484, 483, 481, 478, 477, 476, 475, 474, + 473, 472, 471, 470, 467, 466, 463, 462, 461, 460, + 459, 458, 457, 456, 455, 454, 451, 288, 260, 449, + 448, 447, 446, 445, 444, 443, 442, 428, 427, 408, + 395, 388, 377, 376, 375, 323, 319, 318, 317, 316, + 301, 300, 299, 296, 295, 294, 293, 292, 283, 280, + + 279, 278, 277, 276, 275, 274, 273, 272, 270, 269, + 268, 267, 266, 263, 262, 261, 259, 258, 172, 253, + 252, 251, 250, 249, 248, 247, 246, 245, 244, 243, + 237, 236, 235, 234, 231, 230, 227, 226, 225, 224, + 223, 222, 221, 220, 217, 216, 215, 214, 213, 212, + 209, 208, 207, 206, 205, 204, 203, 200, 199, 193, + 192, 191, 190, 187, 186, 185, 156, 155, 149, 148, + 39, 127, 126, 125, 124, 123, 122, 121, 118, 87, + 39, 37, 835, 3, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835 } ; -static yyconst flex_int16_t yy_chk[1123] = +static yyconst flex_int16_t yy_chk[1352] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -813,7 +859,7 @@ static yyconst flex_int16_t yy_chk[1123] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 23, 5, - 10, 27, 46, 23, 17, 46, 721, 10, 10, 10, + 10, 27, 46, 23, 17, 46, 809, 10, 10, 10, 10, 10, 10, 10, 16, 17, 16, 29, 17, 27, 18, 116, 16, 11, 11, 11, 11, 11, 11, 11, @@ -826,110 +872,135 @@ static yyconst flex_int16_t yy_chk[1123] = 14, 14, 14, 14, 14, 14, 14, 15, 47, 15, 14, 14, 47, 12, 49, 22, 15, 49, 24, 21, 273, 21, 15, 22, 15, 13, 21, 24, 22, 21, - 25, 24, 25, 25, 22, 273, 722, 14, 45, 45, + 25, 24, 25, 25, 22, 273, 811, 14, 45, 45, 92, 44, 44, 54, 45, 25, 26, 44, 26, 26, 26, 26, 26, 44, 26, 45, 26, 54, 44, 92, - 44, 723, 26, 26, 54, 26, 41, 43, 43, 43, - 43, 43, 43, 50, 50, 57, 186, 43, 60, 50, - 60, 59, 59, 60, 60, 186, 57, 59, 75, 57, - 50, 60, 57, 140, 75, 59, 724, 84, 59, 63, - 63, 63, 63, 43, 728, 140, 41, 41, 41, 41, + 44, 813, 26, 26, 54, 26, 41, 43, 43, 43, + 43, 43, 43, 50, 50, 57, 816, 43, 60, 50, + 60, 59, 59, 60, 60, 817, 57, 59, 75, 57, + 50, 60, 57, 140, 75, 59, 821, 84, 59, 63, + 63, 63, 63, 43, 239, 140, 41, 41, 41, 41, 41, 41, 62, 41, 41, 84, 159, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 159, 729, 41, 731, + 41, 41, 41, 41, 41, 41, 159, 239, 41, 823, 62, 62, 62, 62, 64, 64, 64, 64, 65, 65, - 65, 65, 66, 66, 66, 66, 66, 66, 108, 732, + 65, 65, 66, 66, 66, 66, 66, 66, 108, 825, 81, 81, 66, 67, 67, 67, 67, 67, 67, 67, 81, 111, 108, 68, 67, 68, 68, 68, 68, 68, 68, 117, 128, 117, 130, 111, 157, 160, 66, 128, - 133, 133, 157, 160, 117, 733, 133, 735, 130, 132, + 133, 133, 157, 160, 117, 831, 133, 240, 130, 132, 67, 132, 132, 132, 132, 132, 132, 133, 136, 136, 136, 146, 146, 169, 136, 147, 147, 146, 161, 161, - 736, 147, 219, 169, 161, 136, 218, 287, 146, 243, + 240, 147, 219, 169, 161, 136, 218, 287, 146, 241, 287, 161, 147, 162, 162, 161, 163, 163, 218, 162, - 219, 243, 163, 173, 173, 173, 173, 737, 500, 738, + 219, 832, 163, 173, 173, 173, 173, 837, 573, 805, - 162, 500, 741, 163, 174, 174, 174, 174, 175, 175, + 162, 573, 241, 163, 174, 174, 174, 174, 175, 175, 175, 175, 176, 176, 176, 176, 177, 177, 177, 177, 178, 178, 178, 178, 179, 179, 179, 179, 181, 181, - 181, 181, 181, 181, 742, 745, 749, 182, 181, 182, + 181, 181, 181, 181, 828, 828, 242, 182, 181, 182, 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, - 183, 184, 184, 184, 184, 184, 184, 255, 255, 255, - 255, 255, 255, 259, 181, 256, 256, 256, 256, 256, - 256, 257, 257, 271, 271, 751, 259, 257, 276, 271, - 289, 289, 753, 290, 290, 756, 289, 757, 257, 290, - 271, 276, 291, 291, 567, 567, 761, 289, 291, 299, - - 290, 299, 763, 299, 302, 302, 302, 302, 765, 291, - 303, 303, 303, 303, 771, 567, 299, 304, 304, 304, - 304, 305, 305, 305, 305, 306, 306, 306, 306, 307, - 307, 307, 307, 307, 307, 308, 308, 308, 308, 308, - 308, 375, 427, 427, 768, 768, 772, 777, 719, 717, - 714, 712, 710, 709, 707, 706, 705, 375, 704, 703, - 702, 699, 698, 696, 427, 776, 776, 776, 778, 778, - 695, 694, 693, 692, 691, 689, 688, 687, 685, 683, - 682, 679, 676, 675, 663, 662, 661, 651, 650, 649, - 648, 628, 621, 620, 617, 616, 615, 614, 613, 612, - - 611, 610, 609, 608, 606, 603, 602, 601, 600, 599, - 598, 597, 596, 595, 594, 593, 591, 590, 589, 588, - 586, 584, 583, 582, 581, 580, 579, 578, 577, 576, - 575, 574, 573, 572, 571, 570, 569, 568, 566, 565, - 564, 563, 562, 561, 560, 559, 558, 557, 556, 555, - 554, 551, 550, 549, 548, 547, 546, 545, 544, 543, - 542, 541, 540, 539, 538, 537, 536, 535, 534, 533, - 531, 530, 529, 528, 527, 526, 525, 524, 523, 522, - 521, 520, 519, 518, 517, 516, 514, 513, 512, 511, - 510, 508, 507, 506, 505, 504, 503, 502, 499, 498, - - 496, 495, 494, 493, 490, 489, 488, 487, 486, 485, - 484, 482, 481, 480, 479, 478, 477, 476, 475, 474, - 473, 472, 471, 470, 469, 468, 467, 466, 465, 464, - 463, 462, 461, 460, 459, 458, 457, 456, 455, 454, - 453, 452, 451, 449, 448, 447, 446, 445, 444, 443, - 442, 441, 440, 439, 438, 437, 436, 435, 434, 433, - 432, 431, 430, 429, 428, 425, 424, 423, 420, 419, - 418, 417, 416, 415, 413, 411, 410, 409, 407, 406, - 405, 404, 403, 402, 401, 400, 399, 398, 397, 396, - 395, 394, 393, 392, 391, 390, 388, 387, 386, 385, - - 384, 383, 382, 379, 378, 377, 374, 373, 372, 371, - 370, 369, 368, 367, 366, 365, 364, 363, 362, 361, - 359, 358, 357, 356, 355, 354, 353, 352, 351, 350, - 349, 348, 347, 346, 345, 343, 342, 341, 340, 339, - 338, 337, 336, 335, 334, 333, 332, 331, 330, 329, - 328, 327, 326, 325, 324, 323, 322, 321, 320, 319, - 318, 316, 315, 314, 313, 312, 311, 310, 309, 301, - 300, 298, 297, 296, 295, 294, 293, 288, 286, 285, - 284, 283, 282, 281, 280, 279, 277, 275, 274, 272, - 270, 269, 266, 265, 264, 263, 262, 261, 260, 258, - - 254, 253, 252, 251, 250, 249, 248, 247, 246, 245, - 244, 242, 241, 240, 239, 238, 237, 236, 235, 234, - 233, 232, 231, 230, 229, 228, 227, 226, 225, 224, - 223, 222, 221, 220, 217, 216, 215, 214, 213, 212, - 211, 210, 209, 207, 206, 204, 203, 201, 199, 198, - 197, 196, 195, 194, 193, 192, 191, 190, 189, 187, - 185, 172, 171, 170, 168, 167, 166, 165, 164, 158, - 156, 155, 154, 153, 152, 151, 150, 149, 148, 145, - 144, 143, 142, 141, 139, 138, 137, 135, 134, 131, - 129, 127, 126, 125, 124, 123, 122, 121, 120, 119, - - 118, 115, 114, 113, 112, 110, 109, 107, 106, 105, - 104, 103, 102, 101, 100, 98, 97, 96, 95, 94, - 93, 91, 90, 89, 88, 87, 86, 85, 83, 82, - 79, 78, 77, 76, 74, 73, 72, 56, 55, 52, - 51, 38, 37, 35, 34, 33, 32, 31, 30, 28, - 20, 8, 7, 3, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775, 775, 775, 775, 775, 775, 775, 775, 775, - 775, 775 + 183, 184, 184, 184, 184, 184, 184, 185, 186, 242, + 192, 194, 185, 186, 181, 192, 194, 243, 195, 804, + 449, 185, 186, 195, 192, 194, 803, 185, 186, 243, + 185, 186, 195, 192, 194, 196, 449, 197, 199, 198, + 196, 195, 197, 199, 198, 302, 302, 302, 302, 196, + + 800, 197, 199, 198, 799, 196, 798, 197, 196, 198, + 197, 199, 198, 201, 203, 204, 206, 207, 201, 203, + 204, 206, 207, 303, 303, 303, 303, 201, 203, 204, + 206, 207, 259, 797, 203, 204, 201, 203, 204, 206, + 207, 209, 210, 211, 795, 259, 209, 210, 211, 304, + 304, 304, 304, 212, 213, 209, 210, 211, 212, 213, + 794, 209, 210, 211, 209, 210, 211, 212, 213, 793, + 214, 791, 790, 212, 213, 214, 212, 213, 220, 786, + 221, 223, 224, 220, 214, 221, 223, 224, 785, 784, + 214, 783, 220, 214, 221, 223, 224, 226, 781, 779, + + 776, 220, 226, 221, 223, 224, 276, 227, 228, 229, + 231, 226, 227, 228, 229, 231, 775, 226, 773, 276, + 226, 227, 228, 229, 231, 772, 771, 227, 228, 229, + 227, 228, 229, 231, 232, 233, 234, 770, 769, 232, + 233, 234, 305, 305, 305, 305, 235, 236, 232, 233, + 234, 235, 236, 768, 232, 233, 234, 232, 233, 234, + 235, 236, 765, 244, 764, 762, 235, 236, 244, 235, + 236, 255, 255, 255, 255, 255, 255, 244, 256, 256, + 256, 256, 256, 256, 257, 257, 244, 271, 271, 761, + 257, 289, 289, 271, 290, 290, 760, 289, 759, 310, + + 290, 257, 758, 757, 271, 755, 291, 291, 289, 754, + 753, 290, 291, 299, 313, 299, 321, 299, 306, 306, + 306, 306, 310, 291, 307, 307, 307, 307, 307, 307, + 299, 308, 308, 308, 308, 308, 308, 313, 314, 321, + 314, 325, 328, 331, 334, 337, 340, 343, 346, 349, + 352, 355, 358, 361, 364, 367, 370, 373, 383, 386, + 390, 314, 393, 397, 325, 328, 331, 334, 337, 340, + 343, 346, 349, 352, 355, 358, 361, 364, 367, 370, + 373, 383, 386, 390, 400, 393, 397, 403, 406, 410, + 413, 416, 419, 422, 425, 437, 440, 751, 501, 501, + + 550, 636, 636, 749, 748, 745, 742, 400, 741, 729, + 403, 406, 410, 413, 416, 419, 422, 425, 437, 440, + 501, 728, 636, 550, 836, 836, 836, 838, 838, 727, + 698, 691, 690, 687, 686, 685, 684, 683, 682, 681, + 680, 679, 678, 676, 673, 672, 671, 670, 669, 668, + 667, 666, 665, 664, 663, 661, 660, 659, 658, 656, + 654, 653, 652, 651, 650, 649, 648, 647, 646, 645, + 644, 643, 642, 641, 640, 639, 638, 637, 635, 634, + 633, 632, 631, 630, 629, 628, 627, 624, 623, 622, + 621, 620, 619, 618, 617, 616, 615, 614, 613, 612, + + 611, 610, 609, 608, 607, 606, 604, 603, 602, 601, + 600, 599, 598, 597, 596, 595, 594, 593, 592, 591, + 590, 589, 587, 586, 585, 584, 583, 581, 580, 579, + 578, 577, 576, 575, 572, 571, 569, 568, 567, 566, + 563, 562, 561, 560, 559, 558, 557, 555, 554, 553, + 552, 551, 549, 548, 547, 546, 545, 544, 543, 542, + 541, 540, 539, 538, 537, 536, 535, 534, 533, 532, + 531, 530, 529, 528, 527, 523, 522, 521, 520, 519, + 518, 517, 516, 515, 514, 513, 512, 511, 510, 509, + 508, 507, 506, 505, 504, 503, 502, 499, 498, 497, + + 494, 493, 492, 491, 490, 489, 487, 485, 484, 483, + 481, 480, 479, 478, 477, 476, 475, 474, 473, 472, + 471, 470, 469, 468, 467, 466, 465, 464, 462, 461, + 460, 459, 458, 457, 456, 453, 452, 451, 448, 447, + 446, 445, 444, 443, 442, 441, 439, 438, 436, 435, + 434, 433, 432, 431, 430, 429, 427, 426, 424, 423, + 421, 420, 418, 417, 415, 414, 412, 411, 409, 408, + 407, 405, 404, 402, 401, 399, 398, 396, 395, 394, + 392, 391, 389, 387, 385, 384, 382, 381, 379, 377, + 376, 375, 374, 372, 371, 369, 368, 366, 365, 363, + + 362, 360, 359, 357, 356, 354, 353, 351, 350, 348, + 347, 345, 344, 342, 341, 339, 338, 336, 335, 333, + 332, 330, 329, 327, 326, 324, 322, 320, 319, 318, + 317, 316, 315, 312, 311, 309, 301, 300, 298, 297, + 296, 295, 294, 293, 288, 286, 285, 284, 283, 282, + 281, 280, 279, 277, 275, 274, 272, 270, 269, 266, + 265, 264, 263, 262, 261, 260, 258, 254, 253, 252, + 251, 250, 249, 248, 247, 246, 245, 238, 237, 230, + 225, 222, 217, 216, 215, 193, 191, 190, 189, 187, + 172, 171, 170, 168, 167, 166, 165, 164, 158, 156, + + 155, 154, 153, 152, 151, 150, 149, 148, 145, 144, + 143, 142, 141, 139, 138, 137, 135, 134, 131, 129, + 127, 126, 125, 124, 123, 122, 121, 120, 119, 118, + 115, 114, 113, 112, 110, 109, 107, 106, 105, 104, + 103, 102, 101, 100, 98, 97, 96, 95, 94, 93, + 91, 90, 89, 88, 87, 86, 85, 83, 82, 79, + 78, 77, 76, 74, 73, 72, 56, 55, 52, 51, + 38, 37, 35, 34, 33, 32, 31, 30, 28, 20, + 8, 7, 3, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835, 835, 835, 835, 835, 835, 835, 835, 835, 835, + 835 } ; /* The intent behind this definition is that it'll catch @@ -997,11 +1068,13 @@ static yyconst flex_int16_t yy_chk[1123] = } while (0) -#define return_opcode(condition, token, opcode, sat) \ +#define return_opcode(condition, token, opcode, len) \ do { \ - if (condition) { \ + if (condition && \ + _mesa_parse_instruction_suffix(yyextra, \ + yytext + len, \ + & yylval->temp_inst)) { \ yylval->temp_inst.Opcode = OPCODE_ ## opcode; \ - yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ yylval->string = strdup(yytext); \ @@ -1067,7 +1140,7 @@ swiz_from_char(char c) } while(0); #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1071 "lex.yy.c" +#line 1144 "lex.yy.c" #define INITIAL 0 @@ -1313,10 +1386,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 136 "program_lexer.l" +#line 143 "program_lexer.l" -#line 1320 "lex.yy.c" +#line 1393 "lex.yy.c" yylval = yylval_param; @@ -1373,13 +1446,13 @@ yy_match: while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 776 ) + if ( yy_current_state >= 836 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 1055 ); + while ( yy_base[yy_current_state] != 1284 ); yy_find_action: yy_act = yy_accept[yy_current_state]; @@ -1405,17 +1478,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 138 "program_lexer.l" +#line 145 "program_lexer.l" { return ARBvp_10; } YY_BREAK case 2: YY_RULE_SETUP -#line 139 "program_lexer.l" +#line 146 "program_lexer.l" { return ARBfp_10; } YY_BREAK case 3: YY_RULE_SETUP -#line 140 "program_lexer.l" +#line 147 "program_lexer.l" { yylval->integer = at_address; return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1423,983 +1496,738 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 144 "program_lexer.l" +#line 151 "program_lexer.l" { return ALIAS; } YY_BREAK case 5: YY_RULE_SETUP -#line 145 "program_lexer.l" +#line 152 "program_lexer.l" { return ATTRIB; } YY_BREAK case 6: YY_RULE_SETUP -#line 146 "program_lexer.l" +#line 153 "program_lexer.l" { return END; } YY_BREAK case 7: YY_RULE_SETUP -#line 147 "program_lexer.l" +#line 154 "program_lexer.l" { return OPTION; } YY_BREAK case 8: YY_RULE_SETUP -#line 148 "program_lexer.l" +#line 155 "program_lexer.l" { return OUTPUT; } YY_BREAK case 9: YY_RULE_SETUP -#line 149 "program_lexer.l" +#line 156 "program_lexer.l" { return PARAM; } YY_BREAK case 10: YY_RULE_SETUP -#line 150 "program_lexer.l" +#line 157 "program_lexer.l" { yylval->integer = at_temp; return TEMP; } YY_BREAK case 11: YY_RULE_SETUP -#line 152 "program_lexer.l" -{ return_opcode( 1, VECTOR_OP, ABS, OFF); } +#line 159 "program_lexer.l" +{ return_opcode( 1, VECTOR_OP, ABS, 3); } YY_BREAK case 12: YY_RULE_SETUP -#line 153 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } +#line 160 "program_lexer.l" +{ return_opcode( 1, BIN_OP, ADD, 3); } YY_BREAK case 13: YY_RULE_SETUP -#line 154 "program_lexer.l" -{ return_opcode( 1, BIN_OP, ADD, OFF); } +#line 161 "program_lexer.l" +{ return_opcode(require_ARB_vp, ARL, ARL, 3); } YY_BREAK case 14: YY_RULE_SETUP -#line 155 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } +#line 163 "program_lexer.l" +{ return_opcode(require_ARB_fp, TRI_OP, CMP, 3); } YY_BREAK case 15: YY_RULE_SETUP -#line 156 "program_lexer.l" -{ return_opcode(require_ARB_vp, ARL, ARL, OFF); } +#line 164 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); } YY_BREAK case 16: YY_RULE_SETUP -#line 158 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } +#line 166 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, DDX, 3); } YY_BREAK case 17: YY_RULE_SETUP -#line 159 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } +#line 167 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, DDY, 3); } YY_BREAK case 18: YY_RULE_SETUP -#line 160 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } +#line 168 "program_lexer.l" +{ return_opcode( 1, BIN_OP, DP3, 3); } YY_BREAK case 19: YY_RULE_SETUP -#line 161 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } +#line 169 "program_lexer.l" +{ return_opcode( 1, BIN_OP, DP4, 3); } YY_BREAK case 20: YY_RULE_SETUP -#line 163 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, DDX, OFF); } +#line 170 "program_lexer.l" +{ return_opcode( 1, BIN_OP, DPH, 3); } YY_BREAK case 21: YY_RULE_SETUP -#line 164 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, DDX, ZERO_ONE); } +#line 171 "program_lexer.l" +{ return_opcode( 1, BIN_OP, DST, 3); } YY_BREAK case 22: YY_RULE_SETUP -#line 165 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, DDY, OFF); } +#line 173 "program_lexer.l" +{ return_opcode( 1, SCALAR_OP, EX2, 3); } YY_BREAK case 23: YY_RULE_SETUP -#line 166 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, DDY, ZERO_ONE); } +#line 174 "program_lexer.l" +{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); } YY_BREAK case 24: YY_RULE_SETUP -#line 167 "program_lexer.l" -{ return_opcode( 1, BIN_OP, DP3, OFF); } +#line 176 "program_lexer.l" +{ return_opcode( 1, VECTOR_OP, FLR, 3); } YY_BREAK case 25: YY_RULE_SETUP -#line 168 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } +#line 177 "program_lexer.l" +{ return_opcode( 1, VECTOR_OP, FRC, 3); } YY_BREAK case 26: YY_RULE_SETUP -#line 169 "program_lexer.l" -{ return_opcode( 1, BIN_OP, DP4, OFF); } +#line 179 "program_lexer.l" +{ return_opcode(require_ARB_fp, KIL, KIL, 3); } YY_BREAK case 27: YY_RULE_SETUP -#line 170 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } +#line 181 "program_lexer.l" +{ return_opcode( 1, VECTOR_OP, LIT, 3); } YY_BREAK case 28: YY_RULE_SETUP -#line 171 "program_lexer.l" -{ return_opcode( 1, BIN_OP, DPH, OFF); } +#line 182 "program_lexer.l" +{ return_opcode( 1, SCALAR_OP, LG2, 3); } YY_BREAK case 29: YY_RULE_SETUP -#line 172 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } +#line 183 "program_lexer.l" +{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); } YY_BREAK case 30: YY_RULE_SETUP -#line 173 "program_lexer.l" -{ return_opcode( 1, BIN_OP, DST, OFF); } +#line 184 "program_lexer.l" +{ return_opcode(require_ARB_fp, TRI_OP, LRP, 3); } YY_BREAK case 31: YY_RULE_SETUP -#line 174 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } +#line 186 "program_lexer.l" +{ return_opcode( 1, TRI_OP, MAD, 3); } YY_BREAK case 32: YY_RULE_SETUP -#line 176 "program_lexer.l" -{ return_opcode( 1, SCALAR_OP, EX2, OFF); } +#line 187 "program_lexer.l" +{ return_opcode( 1, BIN_OP, MAX, 3); } YY_BREAK case 33: YY_RULE_SETUP -#line 177 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } +#line 188 "program_lexer.l" +{ return_opcode( 1, BIN_OP, MIN, 3); } YY_BREAK case 34: YY_RULE_SETUP -#line 178 "program_lexer.l" -{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } +#line 189 "program_lexer.l" +{ return_opcode( 1, VECTOR_OP, MOV, 3); } YY_BREAK case 35: YY_RULE_SETUP -#line 180 "program_lexer.l" -{ return_opcode( 1, VECTOR_OP, FLR, OFF); } +#line 190 "program_lexer.l" +{ return_opcode( 1, BIN_OP, MUL, 3); } YY_BREAK case 36: YY_RULE_SETUP -#line 181 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } +#line 192 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, PK2H, 4); } YY_BREAK case 37: YY_RULE_SETUP -#line 182 "program_lexer.l" -{ return_opcode( 1, VECTOR_OP, FRC, OFF); } +#line 193 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, PK2US, 5); } YY_BREAK case 38: YY_RULE_SETUP -#line 183 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } +#line 194 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, PK4B, 4); } YY_BREAK case 39: YY_RULE_SETUP -#line 185 "program_lexer.l" -{ return_opcode(require_ARB_fp, KIL, KIL, OFF); } +#line 195 "program_lexer.l" +{ return_opcode(require_NV_fp, VECTOR_OP, PK4UB, 5); } YY_BREAK case 40: YY_RULE_SETUP -#line 187 "program_lexer.l" -{ return_opcode( 1, VECTOR_OP, LIT, OFF); } +#line 196 "program_lexer.l" +{ return_opcode( 1, BINSC_OP, POW, 3); } YY_BREAK case 41: YY_RULE_SETUP -#line 188 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } +#line 198 "program_lexer.l" +{ return_opcode( 1, SCALAR_OP, RCP, 3); } YY_BREAK case 42: YY_RULE_SETUP -#line 189 "program_lexer.l" -{ return_opcode( 1, SCALAR_OP, LG2, OFF); } +#line 199 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, RFL, 3); } YY_BREAK case 43: YY_RULE_SETUP -#line 190 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } +#line 200 "program_lexer.l" +{ return_opcode( 1, SCALAR_OP, RSQ, 3); } YY_BREAK case 44: YY_RULE_SETUP -#line 191 "program_lexer.l" -{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } +#line 202 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); } YY_BREAK case 45: YY_RULE_SETUP -#line 192 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } +#line 203 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, SEQ, 3); } YY_BREAK case 46: YY_RULE_SETUP -#line 193 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } +#line 204 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, SFL, 3); } YY_BREAK case 47: YY_RULE_SETUP -#line 195 "program_lexer.l" -{ return_opcode( 1, TRI_OP, MAD, OFF); } +#line 205 "program_lexer.l" +{ return_opcode( 1, BIN_OP, SGE, 3); } YY_BREAK case 48: YY_RULE_SETUP -#line 196 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } +#line 206 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, SGT, 3); } YY_BREAK case 49: YY_RULE_SETUP -#line 197 "program_lexer.l" -{ return_opcode( 1, BIN_OP, MAX, OFF); } +#line 207 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); } YY_BREAK case 50: YY_RULE_SETUP -#line 198 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } +#line 208 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, SLE, 3); } YY_BREAK case 51: YY_RULE_SETUP -#line 199 "program_lexer.l" -{ return_opcode( 1, BIN_OP, MIN, OFF); } +#line 209 "program_lexer.l" +{ return_opcode( 1, BIN_OP, SLT, 3); } YY_BREAK case 52: YY_RULE_SETUP -#line 200 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } +#line 210 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, SNE, 3); } YY_BREAK case 53: YY_RULE_SETUP -#line 201 "program_lexer.l" -{ return_opcode( 1, VECTOR_OP, MOV, OFF); } +#line 211 "program_lexer.l" +{ return_opcode(require_NV_fp, BIN_OP, STR, 3); } YY_BREAK case 54: YY_RULE_SETUP -#line 202 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } +#line 212 "program_lexer.l" +{ return_opcode( 1, BIN_OP, SUB, 3); } YY_BREAK case 55: YY_RULE_SETUP -#line 203 "program_lexer.l" -{ return_opcode( 1, BIN_OP, MUL, OFF); } +#line 213 "program_lexer.l" +{ return_opcode( 1, SWZ, SWZ, 3); } YY_BREAK case 56: YY_RULE_SETUP -#line 204 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } +#line 215 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); } YY_BREAK case 57: YY_RULE_SETUP -#line 206 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK2H, OFF); } +#line 216 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); } YY_BREAK case 58: YY_RULE_SETUP -#line 207 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK2H, ZERO_ONE); } +#line 217 "program_lexer.l" +{ return_opcode(require_NV_fp, TXD_OP, TXD, 3); } YY_BREAK case 59: YY_RULE_SETUP -#line 208 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK2US, OFF); } +#line 218 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); } YY_BREAK case 60: YY_RULE_SETUP -#line 209 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK2US, ZERO_ONE); } +#line 220 "program_lexer.l" +{ return_opcode(require_NV_fp, SCALAR_OP, UP2H, 4); } YY_BREAK case 61: YY_RULE_SETUP -#line 210 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK4B, OFF); } +#line 221 "program_lexer.l" +{ return_opcode(require_NV_fp, SCALAR_OP, UP2US, 5); } YY_BREAK case 62: YY_RULE_SETUP -#line 211 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK4B, ZERO_ONE); } +#line 223 "program_lexer.l" +{ return_opcode(require_NV_fp, TRI_OP, X2D, 3); } YY_BREAK case 63: YY_RULE_SETUP -#line 212 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK4UB, OFF); } +#line 224 "program_lexer.l" +{ return_opcode( 1, BIN_OP, XPD, 3); } YY_BREAK case 64: YY_RULE_SETUP -#line 213 "program_lexer.l" -{ return_opcode(require_NV_fp, VECTOR_OP, PK4UB, ZERO_ONE); } +#line 226 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } YY_BREAK case 65: YY_RULE_SETUP -#line 214 "program_lexer.l" -{ return_opcode( 1, BINSC_OP, POW, OFF); } +#line 227 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } YY_BREAK case 66: YY_RULE_SETUP -#line 215 "program_lexer.l" -{ return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } +#line 228 "program_lexer.l" +{ return PROGRAM; } YY_BREAK case 67: YY_RULE_SETUP -#line 217 "program_lexer.l" -{ return_opcode( 1, SCALAR_OP, RCP, OFF); } +#line 229 "program_lexer.l" +{ return STATE; } YY_BREAK case 68: YY_RULE_SETUP -#line 218 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } +#line 230 "program_lexer.l" +{ return RESULT; } YY_BREAK case 69: YY_RULE_SETUP -#line 219 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, RFL, OFF); } +#line 232 "program_lexer.l" +{ return AMBIENT; } YY_BREAK case 70: YY_RULE_SETUP -#line 220 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, RFL, ZERO_ONE); } +#line 233 "program_lexer.l" +{ return ATTENUATION; } YY_BREAK case 71: YY_RULE_SETUP -#line 221 "program_lexer.l" -{ return_opcode( 1, SCALAR_OP, RSQ, OFF); } +#line 234 "program_lexer.l" +{ return BACK; } YY_BREAK case 72: YY_RULE_SETUP -#line 222 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } +#line 235 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, CLIP); } YY_BREAK case 73: YY_RULE_SETUP -#line 224 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } +#line 236 "program_lexer.l" +{ return COLOR; } YY_BREAK case 74: YY_RULE_SETUP -#line 225 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } +#line 237 "program_lexer.l" +{ return_token_or_DOT(require_ARB_fp, DEPTH); } YY_BREAK case 75: YY_RULE_SETUP -#line 226 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SEQ, OFF); } +#line 238 "program_lexer.l" +{ return DIFFUSE; } YY_BREAK case 76: YY_RULE_SETUP -#line 227 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SEQ, ZERO_ONE); } +#line 239 "program_lexer.l" +{ return DIRECTION; } YY_BREAK case 77: YY_RULE_SETUP -#line 228 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SFL, OFF); } +#line 240 "program_lexer.l" +{ return EMISSION; } YY_BREAK case 78: YY_RULE_SETUP -#line 229 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SFL, ZERO_ONE); } +#line 241 "program_lexer.l" +{ return ENV; } YY_BREAK case 79: YY_RULE_SETUP -#line 230 "program_lexer.l" -{ return_opcode( 1, BIN_OP, SGE, OFF); } +#line 242 "program_lexer.l" +{ return EYE; } YY_BREAK case 80: YY_RULE_SETUP -#line 231 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } +#line 243 "program_lexer.l" +{ return FOGCOORD; } YY_BREAK case 81: YY_RULE_SETUP -#line 232 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SGT, OFF); } +#line 244 "program_lexer.l" +{ return FOG; } YY_BREAK case 82: YY_RULE_SETUP -#line 233 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SGT, ZERO_ONE); } +#line 245 "program_lexer.l" +{ return FRONT; } YY_BREAK case 83: YY_RULE_SETUP -#line 234 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } +#line 246 "program_lexer.l" +{ return HALF; } YY_BREAK case 84: YY_RULE_SETUP -#line 235 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } +#line 247 "program_lexer.l" +{ return INVERSE; } YY_BREAK case 85: YY_RULE_SETUP -#line 236 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SLE, OFF); } +#line 248 "program_lexer.l" +{ return INVTRANS; } YY_BREAK case 86: YY_RULE_SETUP -#line 237 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SLE, ZERO_ONE); } +#line 249 "program_lexer.l" +{ return LIGHT; } YY_BREAK case 87: YY_RULE_SETUP -#line 238 "program_lexer.l" -{ return_opcode( 1, BIN_OP, SLT, OFF); } +#line 250 "program_lexer.l" +{ return LIGHTMODEL; } YY_BREAK case 88: YY_RULE_SETUP -#line 239 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } +#line 251 "program_lexer.l" +{ return LIGHTPROD; } YY_BREAK case 89: YY_RULE_SETUP -#line 240 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SNE, OFF); } +#line 252 "program_lexer.l" +{ return LOCAL; } YY_BREAK case 90: YY_RULE_SETUP -#line 241 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, SNE, ZERO_ONE); } +#line 253 "program_lexer.l" +{ return MATERIAL; } YY_BREAK case 91: YY_RULE_SETUP -#line 242 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, STR, OFF); } +#line 254 "program_lexer.l" +{ return MAT_PROGRAM; } YY_BREAK case 92: YY_RULE_SETUP -#line 243 "program_lexer.l" -{ return_opcode(require_NV_fp, BIN_OP, STR, ZERO_ONE); } +#line 255 "program_lexer.l" +{ return MATRIX; } YY_BREAK case 93: YY_RULE_SETUP -#line 244 "program_lexer.l" -{ return_opcode( 1, BIN_OP, SUB, OFF); } +#line 256 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } YY_BREAK case 94: YY_RULE_SETUP -#line 245 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } +#line 257 "program_lexer.l" +{ return MODELVIEW; } YY_BREAK case 95: YY_RULE_SETUP -#line 246 "program_lexer.l" -{ return_opcode( 1, SWZ, SWZ, OFF); } +#line 258 "program_lexer.l" +{ return MVP; } YY_BREAK case 96: YY_RULE_SETUP -#line 247 "program_lexer.l" -{ return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } +#line 259 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, NORMAL); } YY_BREAK case 97: YY_RULE_SETUP -#line 249 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } +#line 260 "program_lexer.l" +{ return OBJECT; } YY_BREAK case 98: YY_RULE_SETUP -#line 250 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } +#line 261 "program_lexer.l" +{ return PALETTE; } YY_BREAK case 99: YY_RULE_SETUP -#line 251 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } +#line 262 "program_lexer.l" +{ return PARAMS; } YY_BREAK case 100: YY_RULE_SETUP -#line 252 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } +#line 263 "program_lexer.l" +{ return PLANE; } YY_BREAK case 101: YY_RULE_SETUP -#line 253 "program_lexer.l" -{ return_opcode(require_NV_fp, TXD_OP, TXD, OFF); } +#line 264 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, POINT); } YY_BREAK case 102: YY_RULE_SETUP -#line 254 "program_lexer.l" -{ return_opcode(require_NV_fp, TXD_OP, TXD, ZERO_ONE); } +#line 265 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, POINTSIZE); } YY_BREAK case 103: YY_RULE_SETUP -#line 255 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } +#line 266 "program_lexer.l" +{ return POSITION; } YY_BREAK case 104: YY_RULE_SETUP -#line 256 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } +#line 267 "program_lexer.l" +{ return PRIMARY; } YY_BREAK case 105: YY_RULE_SETUP -#line 258 "program_lexer.l" -{ return_opcode(require_NV_fp, SCALAR_OP, UP2H, OFF); } +#line 268 "program_lexer.l" +{ return PROJECTION; } YY_BREAK case 106: YY_RULE_SETUP -#line 259 "program_lexer.l" -{ return_opcode(require_NV_fp, SCALAR_OP, UP2H, ZERO_ONE); } +#line 269 "program_lexer.l" +{ return_token_or_DOT(require_ARB_fp, RANGE); } YY_BREAK case 107: YY_RULE_SETUP -#line 260 "program_lexer.l" -{ return_opcode(require_NV_fp, SCALAR_OP, UP2US, OFF); } +#line 270 "program_lexer.l" +{ return ROW; } YY_BREAK case 108: YY_RULE_SETUP -#line 261 "program_lexer.l" -{ return_opcode(require_NV_fp, SCALAR_OP, UP2US, ZERO_ONE); } +#line 271 "program_lexer.l" +{ return SCENECOLOR; } YY_BREAK case 109: YY_RULE_SETUP -#line 263 "program_lexer.l" -{ return_opcode(require_NV_fp, TRI_OP, X2D, OFF); } +#line 272 "program_lexer.l" +{ return SECONDARY; } YY_BREAK case 110: YY_RULE_SETUP -#line 264 "program_lexer.l" -{ return_opcode(require_NV_fp, TRI_OP, X2D, ZERO_ONE); } +#line 273 "program_lexer.l" +{ return SHININESS; } YY_BREAK case 111: YY_RULE_SETUP -#line 265 "program_lexer.l" -{ return_opcode( 1, BIN_OP, XPD, OFF); } +#line 274 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, SIZE); } YY_BREAK case 112: YY_RULE_SETUP -#line 266 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } +#line 275 "program_lexer.l" +{ return SPECULAR; } YY_BREAK case 113: YY_RULE_SETUP -#line 268 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } +#line 276 "program_lexer.l" +{ return SPOT; } YY_BREAK case 114: YY_RULE_SETUP -#line 269 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } +#line 277 "program_lexer.l" +{ return TEXCOORD; } YY_BREAK case 115: YY_RULE_SETUP -#line 270 "program_lexer.l" -{ return PROGRAM; } - YY_BREAK -case 116: -YY_RULE_SETUP -#line 271 "program_lexer.l" -{ return STATE; } - YY_BREAK -case 117: -YY_RULE_SETUP -#line 272 "program_lexer.l" -{ return RESULT; } - YY_BREAK -case 118: -YY_RULE_SETUP -#line 274 "program_lexer.l" -{ return AMBIENT; } - YY_BREAK -case 119: -YY_RULE_SETUP -#line 275 "program_lexer.l" -{ return ATTENUATION; } - YY_BREAK -case 120: -YY_RULE_SETUP -#line 276 "program_lexer.l" -{ return BACK; } - YY_BREAK -case 121: -YY_RULE_SETUP -#line 277 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, CLIP); } - YY_BREAK -case 122: -YY_RULE_SETUP #line 278 "program_lexer.l" -{ return COLOR; } - YY_BREAK -case 123: -YY_RULE_SETUP -#line 279 "program_lexer.l" -{ return_token_or_DOT(require_ARB_fp, DEPTH); } - YY_BREAK -case 124: -YY_RULE_SETUP -#line 280 "program_lexer.l" -{ return DIFFUSE; } - YY_BREAK -case 125: -YY_RULE_SETUP -#line 281 "program_lexer.l" -{ return DIRECTION; } - YY_BREAK -case 126: -YY_RULE_SETUP -#line 282 "program_lexer.l" -{ return EMISSION; } - YY_BREAK -case 127: -YY_RULE_SETUP -#line 283 "program_lexer.l" -{ return ENV; } - YY_BREAK -case 128: -YY_RULE_SETUP -#line 284 "program_lexer.l" -{ return EYE; } - YY_BREAK -case 129: -YY_RULE_SETUP -#line 285 "program_lexer.l" -{ return FOGCOORD; } - YY_BREAK -case 130: -YY_RULE_SETUP -#line 286 "program_lexer.l" -{ return FOG; } - YY_BREAK -case 131: -YY_RULE_SETUP -#line 287 "program_lexer.l" -{ return FRONT; } - YY_BREAK -case 132: -YY_RULE_SETUP -#line 288 "program_lexer.l" -{ return HALF; } - YY_BREAK -case 133: -YY_RULE_SETUP -#line 289 "program_lexer.l" -{ return INVERSE; } - YY_BREAK -case 134: -YY_RULE_SETUP -#line 290 "program_lexer.l" -{ return INVTRANS; } - YY_BREAK -case 135: -YY_RULE_SETUP -#line 291 "program_lexer.l" -{ return LIGHT; } - YY_BREAK -case 136: -YY_RULE_SETUP -#line 292 "program_lexer.l" -{ return LIGHTMODEL; } - YY_BREAK -case 137: -YY_RULE_SETUP -#line 293 "program_lexer.l" -{ return LIGHTPROD; } - YY_BREAK -case 138: -YY_RULE_SETUP -#line 294 "program_lexer.l" -{ return LOCAL; } - YY_BREAK -case 139: -YY_RULE_SETUP -#line 295 "program_lexer.l" -{ return MATERIAL; } - YY_BREAK -case 140: -YY_RULE_SETUP -#line 296 "program_lexer.l" -{ return MAT_PROGRAM; } - YY_BREAK -case 141: -YY_RULE_SETUP -#line 297 "program_lexer.l" -{ return MATRIX; } - YY_BREAK -case 142: -YY_RULE_SETUP -#line 298 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } - YY_BREAK -case 143: -YY_RULE_SETUP -#line 299 "program_lexer.l" -{ return MODELVIEW; } - YY_BREAK -case 144: -YY_RULE_SETUP -#line 300 "program_lexer.l" -{ return MVP; } - YY_BREAK -case 145: -YY_RULE_SETUP -#line 301 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, NORMAL); } - YY_BREAK -case 146: -YY_RULE_SETUP -#line 302 "program_lexer.l" -{ return OBJECT; } - YY_BREAK -case 147: -YY_RULE_SETUP -#line 303 "program_lexer.l" -{ return PALETTE; } - YY_BREAK -case 148: -YY_RULE_SETUP -#line 304 "program_lexer.l" -{ return PARAMS; } - YY_BREAK -case 149: -YY_RULE_SETUP -#line 305 "program_lexer.l" -{ return PLANE; } - YY_BREAK -case 150: -YY_RULE_SETUP -#line 306 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, POINT); } - YY_BREAK -case 151: -YY_RULE_SETUP -#line 307 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, POINTSIZE); } - YY_BREAK -case 152: -YY_RULE_SETUP -#line 308 "program_lexer.l" -{ return POSITION; } - YY_BREAK -case 153: -YY_RULE_SETUP -#line 309 "program_lexer.l" -{ return PRIMARY; } - YY_BREAK -case 154: -YY_RULE_SETUP -#line 310 "program_lexer.l" -{ return PROJECTION; } - YY_BREAK -case 155: -YY_RULE_SETUP -#line 311 "program_lexer.l" -{ return_token_or_DOT(require_ARB_fp, RANGE); } - YY_BREAK -case 156: -YY_RULE_SETUP -#line 312 "program_lexer.l" -{ return ROW; } - YY_BREAK -case 157: -YY_RULE_SETUP -#line 313 "program_lexer.l" -{ return SCENECOLOR; } - YY_BREAK -case 158: -YY_RULE_SETUP -#line 314 "program_lexer.l" -{ return SECONDARY; } - YY_BREAK -case 159: -YY_RULE_SETUP -#line 315 "program_lexer.l" -{ return SHININESS; } - YY_BREAK -case 160: -YY_RULE_SETUP -#line 316 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, SIZE); } - YY_BREAK -case 161: -YY_RULE_SETUP -#line 317 "program_lexer.l" -{ return SPECULAR; } - YY_BREAK -case 162: -YY_RULE_SETUP -#line 318 "program_lexer.l" -{ return SPOT; } - YY_BREAK -case 163: -YY_RULE_SETUP -#line 319 "program_lexer.l" -{ return TEXCOORD; } - YY_BREAK -case 164: -YY_RULE_SETUP -#line 320 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, TEXENV); } YY_BREAK -case 165: +case 116: YY_RULE_SETUP -#line 321 "program_lexer.l" +#line 279 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN); } YY_BREAK -case 166: +case 117: YY_RULE_SETUP -#line 322 "program_lexer.l" +#line 280 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); } YY_BREAK -case 167: +case 118: YY_RULE_SETUP -#line 323 "program_lexer.l" +#line 281 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_S); } YY_BREAK -case 168: +case 119: YY_RULE_SETUP -#line 324 "program_lexer.l" +#line 282 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_T); } YY_BREAK -case 169: +case 120: YY_RULE_SETUP -#line 325 "program_lexer.l" +#line 283 "program_lexer.l" { return TEXTURE; } YY_BREAK -case 170: +case 121: YY_RULE_SETUP -#line 326 "program_lexer.l" +#line 284 "program_lexer.l" { return TRANSPOSE; } YY_BREAK -case 171: +case 122: YY_RULE_SETUP -#line 327 "program_lexer.l" +#line 285 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, VTXATTRIB); } YY_BREAK -case 172: +case 123: YY_RULE_SETUP -#line 328 "program_lexer.l" +#line 286 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, WEIGHT); } YY_BREAK -case 173: +case 124: YY_RULE_SETUP -#line 330 "program_lexer.l" +#line 288 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } YY_BREAK -case 174: +case 125: YY_RULE_SETUP -#line 331 "program_lexer.l" +#line 289 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } YY_BREAK -case 175: +case 126: YY_RULE_SETUP -#line 332 "program_lexer.l" +#line 290 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); } YY_BREAK -case 176: +case 127: YY_RULE_SETUP -#line 333 "program_lexer.l" +#line 291 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); } YY_BREAK -case 177: +case 128: YY_RULE_SETUP -#line 334 "program_lexer.l" +#line 292 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); } YY_BREAK -case 178: +case 129: YY_RULE_SETUP -#line 335 "program_lexer.l" +#line 293 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); } YY_BREAK -case 179: +case 130: YY_RULE_SETUP -#line 336 "program_lexer.l" +#line 294 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); } YY_BREAK -case 180: +case 131: YY_RULE_SETUP -#line 337 "program_lexer.l" +#line 295 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); } YY_BREAK -case 181: +case 132: YY_RULE_SETUP -#line 338 "program_lexer.l" +#line 296 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); } YY_BREAK -case 182: +case 133: YY_RULE_SETUP -#line 339 "program_lexer.l" +#line 297 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); } YY_BREAK -case 183: +case 134: YY_RULE_SETUP -#line 340 "program_lexer.l" +#line 298 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); } YY_BREAK -case 184: +case 135: YY_RULE_SETUP -#line 341 "program_lexer.l" +#line 299 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } YY_BREAK -case 185: +case 136: YY_RULE_SETUP -#line 342 "program_lexer.l" +#line 300 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } YY_BREAK -case 186: +case 137: YY_RULE_SETUP -#line 344 "program_lexer.l" +#line 302 "program_lexer.l" { yylval->string = strdup(yytext); return IDENTIFIER; } YY_BREAK -case 187: +case 138: YY_RULE_SETUP -#line 349 "program_lexer.l" +#line 307 "program_lexer.l" { return DOT_DOT; } YY_BREAK -case 188: +case 139: YY_RULE_SETUP -#line 351 "program_lexer.l" +#line 309 "program_lexer.l" { yylval->integer = strtol(yytext, NULL, 10); return INTEGER; } YY_BREAK -case 189: +case 140: YY_RULE_SETUP -#line 355 "program_lexer.l" +#line 313 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; } YY_BREAK -case 190: -/* rule 190 can match eol */ +case 141: +/* rule 141 can match eol */ *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 359 "program_lexer.l" +#line 317 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; } YY_BREAK -case 191: +case 142: YY_RULE_SETUP -#line 363 "program_lexer.l" +#line 321 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; } YY_BREAK -case 192: +case 143: YY_RULE_SETUP -#line 367 "program_lexer.l" +#line 325 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; } YY_BREAK -case 193: +case 144: YY_RULE_SETUP -#line 372 "program_lexer.l" +#line 330 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; return MASK4; } YY_BREAK -case 194: +case 145: YY_RULE_SETUP -#line 378 "program_lexer.l" +#line 336 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2407,27 +2235,27 @@ YY_RULE_SETUP return MASK3; } YY_BREAK -case 195: +case 146: YY_RULE_SETUP -#line 384 "program_lexer.l" +#line 342 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; return MASK3; } YY_BREAK -case 196: +case 147: YY_RULE_SETUP -#line 389 "program_lexer.l" +#line 347 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; return MASK3; } YY_BREAK -case 197: +case 148: YY_RULE_SETUP -#line 395 "program_lexer.l" +#line 353 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2435,9 +2263,9 @@ YY_RULE_SETUP return MASK2; } YY_BREAK -case 198: +case 149: YY_RULE_SETUP -#line 401 "program_lexer.l" +#line 359 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2445,18 +2273,18 @@ YY_RULE_SETUP return MASK2; } YY_BREAK -case 199: +case 150: YY_RULE_SETUP -#line 407 "program_lexer.l" +#line 365 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; return MASK2; } YY_BREAK -case 200: +case 151: YY_RULE_SETUP -#line 413 "program_lexer.l" +#line 371 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2464,9 +2292,9 @@ YY_RULE_SETUP return MASK1; } YY_BREAK -case 201: +case 152: YY_RULE_SETUP -#line 420 "program_lexer.l" +#line 378 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2476,18 +2304,18 @@ YY_RULE_SETUP return SWIZZLE; } YY_BREAK -case 202: +case 153: YY_RULE_SETUP -#line 429 "program_lexer.l" +#line 387 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; return_token_or_DOT(require_ARB_fp, MASK4); } YY_BREAK -case 203: +case 154: YY_RULE_SETUP -#line 435 "program_lexer.l" +#line 393 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2495,27 +2323,27 @@ YY_RULE_SETUP return_token_or_DOT(require_ARB_fp, MASK3); } YY_BREAK -case 204: +case 155: YY_RULE_SETUP -#line 441 "program_lexer.l" +#line 399 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; return_token_or_DOT(require_ARB_fp, MASK3); } YY_BREAK -case 205: +case 156: YY_RULE_SETUP -#line 446 "program_lexer.l" +#line 404 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; return_token_or_DOT(require_ARB_fp, MASK3); } YY_BREAK -case 206: +case 157: YY_RULE_SETUP -#line 452 "program_lexer.l" +#line 410 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2523,9 +2351,9 @@ YY_RULE_SETUP return_token_or_DOT(require_ARB_fp, MASK2); } YY_BREAK -case 207: +case 158: YY_RULE_SETUP -#line 458 "program_lexer.l" +#line 416 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2533,18 +2361,18 @@ YY_RULE_SETUP return_token_or_DOT(require_ARB_fp, MASK2); } YY_BREAK -case 208: +case 159: YY_RULE_SETUP -#line 464 "program_lexer.l" +#line 422 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; return_token_or_DOT(require_ARB_fp, MASK2); } YY_BREAK -case 209: +case 160: YY_RULE_SETUP -#line 470 "program_lexer.l" +#line 428 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2552,9 +2380,9 @@ YY_RULE_SETUP return_token_or_DOT(require_ARB_fp, MASK1); } YY_BREAK -case 210: +case 161: YY_RULE_SETUP -#line 478 "program_lexer.l" +#line 436 "program_lexer.l" { if (require_ARB_vp) { return TEXGEN_R; @@ -2566,9 +2394,9 @@ YY_RULE_SETUP } } YY_BREAK -case 211: +case 162: YY_RULE_SETUP -#line 489 "program_lexer.l" +#line 447 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2578,15 +2406,15 @@ YY_RULE_SETUP return_token_or_DOT(require_ARB_fp, SWIZZLE); } YY_BREAK -case 212: +case 163: YY_RULE_SETUP -#line 498 "program_lexer.l" +#line 456 "program_lexer.l" { return DOT; } YY_BREAK -case 213: -/* rule 213 can match eol */ +case 164: +/* rule 164 can match eol */ YY_RULE_SETUP -#line 500 "program_lexer.l" +#line 458 "program_lexer.l" { yylloc->first_line++; yylloc->first_column = 1; @@ -2595,30 +2423,30 @@ YY_RULE_SETUP yylloc->position++; } YY_BREAK -case 214: +case 165: YY_RULE_SETUP -#line 507 "program_lexer.l" +#line 465 "program_lexer.l" /* eat whitespace */ ; YY_BREAK -case 215: +case 166: *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 508 "program_lexer.l" +#line 466 "program_lexer.l" /* eat comments */ ; YY_BREAK -case 216: +case 167: YY_RULE_SETUP -#line 509 "program_lexer.l" +#line 467 "program_lexer.l" { return yytext[0]; } YY_BREAK -case 217: +case 168: YY_RULE_SETUP -#line 510 "program_lexer.l" +#line 468 "program_lexer.l" ECHO; YY_BREAK -#line 2622 "lex.yy.c" +#line 2450 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -2912,7 +2740,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 776 ) + if ( yy_current_state >= 836 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2941,11 +2769,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner) while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 776 ) + if ( yy_current_state >= 836 ) yy_c = yy_meta[(unsigned int) yy_c]; } yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 775); + yy_is_jam = (yy_current_state == 835); return yy_is_jam ? 0 : yy_current_state; } @@ -3793,7 +3621,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 510 "program_lexer.l" +#line 468 "program_lexer.l" diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index 62ca9b6db6..d7493f42fa 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -55,11 +55,13 @@ } while (0) -#define return_opcode(condition, token, opcode, sat) \ +#define return_opcode(condition, token, opcode, len) \ do { \ - if (condition) { \ + if (condition && \ + _mesa_parse_instruction_suffix(yyextra, \ + yytext + len, \ + & yylval->temp_inst)) { \ yylval->temp_inst.Opcode = OPCODE_ ## opcode; \ - yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ yylval->string = strdup(yytext); \ @@ -132,6 +134,11 @@ exp [Ee][-+]?[0-9]+ frac "."[0-9]+ dot "."[ \t]* +sz [HRX]? +szf [HR]? +cc C? +sat (_SAT)? + %option bison-bridge bison-locations reentrant noyywrap %% @@ -149,121 +156,72 @@ OUTPUT { return OUTPUT; } PARAM { return PARAM; } TEMP { yylval->integer = at_temp; return TEMP; } -ABS { return_opcode( 1, VECTOR_OP, ABS, OFF); } -ABS_SAT { return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } -ADD { return_opcode( 1, BIN_OP, ADD, OFF); } -ADD_SAT { return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } -ARL { return_opcode(require_ARB_vp, ARL, ARL, OFF); } - -CMP { return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } -CMP_SAT { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } -COS { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } -COS_SAT { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } - -DDX { return_opcode(require_NV_fp, VECTOR_OP, DDX, OFF); } -DDX_SAT { return_opcode(require_NV_fp, VECTOR_OP, DDX, ZERO_ONE); } -DDY { return_opcode(require_NV_fp, VECTOR_OP, DDY, OFF); } -DDY_SAT { return_opcode(require_NV_fp, VECTOR_OP, DDY, ZERO_ONE); } -DP3 { return_opcode( 1, BIN_OP, DP3, OFF); } -DP3_SAT { return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } -DP4 { return_opcode( 1, BIN_OP, DP4, OFF); } -DP4_SAT { return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } -DPH { return_opcode( 1, BIN_OP, DPH, OFF); } -DPH_SAT { return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } -DST { return_opcode( 1, BIN_OP, DST, OFF); } -DST_SAT { return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } - -EX2 { return_opcode( 1, SCALAR_OP, EX2, OFF); } -EX2_SAT { return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } -EXP { return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } - -FLR { return_opcode( 1, VECTOR_OP, FLR, OFF); } -FLR_SAT { return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } -FRC { return_opcode( 1, VECTOR_OP, FRC, OFF); } -FRC_SAT { return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } - -KIL { return_opcode(require_ARB_fp, KIL, KIL, OFF); } - -LIT { return_opcode( 1, VECTOR_OP, LIT, OFF); } -LIT_SAT { return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } -LG2 { return_opcode( 1, SCALAR_OP, LG2, OFF); } -LG2_SAT { return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } -LOG { return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } -LRP { return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } -LRP_SAT { return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } - -MAD { return_opcode( 1, TRI_OP, MAD, OFF); } -MAD_SAT { return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } -MAX { return_opcode( 1, BIN_OP, MAX, OFF); } -MAX_SAT { return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } -MIN { return_opcode( 1, BIN_OP, MIN, OFF); } -MIN_SAT { return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } -MOV { return_opcode( 1, VECTOR_OP, MOV, OFF); } -MOV_SAT { return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } -MUL { return_opcode( 1, BIN_OP, MUL, OFF); } -MUL_SAT { return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } - -PK2H { return_opcode(require_NV_fp, VECTOR_OP, PK2H, OFF); } -PK2H_SAT { return_opcode(require_NV_fp, VECTOR_OP, PK2H, ZERO_ONE); } -PK2US { return_opcode(require_NV_fp, VECTOR_OP, PK2US, OFF); } -PK2US_SAT { return_opcode(require_NV_fp, VECTOR_OP, PK2US, ZERO_ONE); } -PK4B { return_opcode(require_NV_fp, VECTOR_OP, PK4B, OFF); } -PK4B_SAT { return_opcode(require_NV_fp, VECTOR_OP, PK4B, ZERO_ONE); } -PK4UB { return_opcode(require_NV_fp, VECTOR_OP, PK4UB, OFF); } -PK4UB_SAT { return_opcode(require_NV_fp, VECTOR_OP, PK4UB, ZERO_ONE); } -POW { return_opcode( 1, BINSC_OP, POW, OFF); } -POW_SAT { return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } - -RCP { return_opcode( 1, SCALAR_OP, RCP, OFF); } -RCP_SAT { return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } -RFL { return_opcode(require_NV_fp, BIN_OP, RFL, OFF); } -RFL_SAT { return_opcode(require_NV_fp, BIN_OP, RFL, ZERO_ONE); } -RSQ { return_opcode( 1, SCALAR_OP, RSQ, OFF); } -RSQ_SAT { return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } - -SCS { return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } -SCS_SAT { return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } -SEQ { return_opcode(require_NV_fp, BIN_OP, SEQ, OFF); } -SEQ_SAT { return_opcode(require_NV_fp, BIN_OP, SEQ, ZERO_ONE); } -SFL { return_opcode(require_NV_fp, BIN_OP, SFL, OFF); } -SFL_SAT { return_opcode(require_NV_fp, BIN_OP, SFL, ZERO_ONE); } -SGE { return_opcode( 1, BIN_OP, SGE, OFF); } -SGE_SAT { return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } -SGT { return_opcode(require_NV_fp, BIN_OP, SGT, OFF); } -SGT_SAT { return_opcode(require_NV_fp, BIN_OP, SGT, ZERO_ONE); } -SIN { return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } -SIN_SAT { return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } -SLE { return_opcode(require_NV_fp, BIN_OP, SLE, OFF); } -SLE_SAT { return_opcode(require_NV_fp, BIN_OP, SLE, ZERO_ONE); } -SLT { return_opcode( 1, BIN_OP, SLT, OFF); } -SLT_SAT { return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } -SNE { return_opcode(require_NV_fp, BIN_OP, SNE, OFF); } -SNE_SAT { return_opcode(require_NV_fp, BIN_OP, SNE, ZERO_ONE); } -STR { return_opcode(require_NV_fp, BIN_OP, STR, OFF); } -STR_SAT { return_opcode(require_NV_fp, BIN_OP, STR, ZERO_ONE); } -SUB { return_opcode( 1, BIN_OP, SUB, OFF); } -SUB_SAT { return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } -SWZ { return_opcode( 1, SWZ, SWZ, OFF); } -SWZ_SAT { return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } - -TEX { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } -TEX_SAT { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } -TXB { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } -TXB_SAT { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } -TXD { return_opcode(require_NV_fp, TXD_OP, TXD, OFF); } -TXD_SAT { return_opcode(require_NV_fp, TXD_OP, TXD, ZERO_ONE); } -TXP { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } -TXP_SAT { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } - -UP2H { return_opcode(require_NV_fp, SCALAR_OP, UP2H, OFF); } -UP2H_SAT { return_opcode(require_NV_fp, SCALAR_OP, UP2H, ZERO_ONE); } -UP2US { return_opcode(require_NV_fp, SCALAR_OP, UP2US, OFF); } -UP2US_SAT { return_opcode(require_NV_fp, SCALAR_OP, UP2US, ZERO_ONE); } - -X2D { return_opcode(require_NV_fp, TRI_OP, X2D, OFF); } -X2D_SAT { return_opcode(require_NV_fp, TRI_OP, X2D, ZERO_ONE); } -XPD { return_opcode( 1, BIN_OP, XPD, OFF); } -XPD_SAT { return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } +ABS{sz}{cc}{sat} { return_opcode( 1, VECTOR_OP, ABS, 3); } +ADD{sz}{cc}{sat} { return_opcode( 1, BIN_OP, ADD, 3); } +ARL { return_opcode(require_ARB_vp, ARL, ARL, 3); } + +CMP{sat} { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); } +COS{szf}{cc}{sat} { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); } + +DDX{szf}{cc}{sat} { return_opcode(require_NV_fp, VECTOR_OP, DDX, 3); } +DDY{szf}{cc}{sat} { return_opcode(require_NV_fp, VECTOR_OP, DDY, 3); } +DP3{sz}{cc}{sat} { return_opcode( 1, BIN_OP, DP3, 3); } +DP4{sz}{cc}{sat} { return_opcode( 1, BIN_OP, DP4, 3); } +DPH{sz}{cc}{sat} { return_opcode( 1, BIN_OP, DPH, 3); } +DST{szf}{cc}{sat} { return_opcode( 1, BIN_OP, DST, 3); } + +EX2{szf}{cc}{sat} { return_opcode( 1, SCALAR_OP, EX2, 3); } +EXP { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); } + +FLR{sz}{cc}{sat} { return_opcode( 1, VECTOR_OP, FLR, 3); } +FRC{sz}{cc}{sat} { return_opcode( 1, VECTOR_OP, FRC, 3); } + +KIL { return_opcode(require_ARB_fp, KIL, KIL, 3); } + +LIT{szf}{cc}{sat} { return_opcode( 1, VECTOR_OP, LIT, 3); } +LG2{szf}{cc}{sat} { return_opcode( 1, SCALAR_OP, LG2, 3); } +LOG { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); } +LRP{sz}{cc}{sat} { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); } + +MAD{sz}{cc}{sat} { return_opcode( 1, TRI_OP, MAD, 3); } +MAX{sz}{cc}{sat} { return_opcode( 1, BIN_OP, MAX, 3); } +MIN{sz}{cc}{sat} { return_opcode( 1, BIN_OP, MIN, 3); } +MOV{sz}{cc}{sat} { return_opcode( 1, VECTOR_OP, MOV, 3); } +MUL{sz}{cc}{sat} { return_opcode( 1, BIN_OP, MUL, 3); } + +PK2H { return_opcode(require_NV_fp, VECTOR_OP, PK2H, 4); } +PK2US { return_opcode(require_NV_fp, VECTOR_OP, PK2US, 5); } +PK4B { return_opcode(require_NV_fp, VECTOR_OP, PK4B, 4); } +PK4UB { return_opcode(require_NV_fp, VECTOR_OP, PK4UB, 5); } +POW{szf}{cc}{sat} { return_opcode( 1, BINSC_OP, POW, 3); } + +RCP{szf}{cc}{sat} { return_opcode( 1, SCALAR_OP, RCP, 3); } +RFL{szf}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, RFL, 3); } +RSQ{szf}{cc}{sat} { return_opcode( 1, SCALAR_OP, RSQ, 3); } + +SCS{sat} { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); } +SEQ{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, SEQ, 3); } +SFL{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, SFL, 3); } +SGE{sz}{cc}{sat} { return_opcode( 1, BIN_OP, SGE, 3); } +SGT{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, SGT, 3); } +SIN{szf}{cc}{sat} { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); } +SLE{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, SLE, 3); } +SLT{sz}{cc}{sat} { return_opcode( 1, BIN_OP, SLT, 3); } +SNE{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, SNE, 3); } +STR{sz}{cc}{sat} { return_opcode(require_NV_fp, BIN_OP, STR, 3); } +SUB{sz}{cc}{sat} { return_opcode( 1, BIN_OP, SUB, 3); } +SWZ{sat} { return_opcode( 1, SWZ, SWZ, 3); } + +TEX{cc}{sat} { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); } +TXB{cc}{sat} { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); } +TXD{cc}{sat} { return_opcode(require_NV_fp, TXD_OP, TXD, 3); } +TXP{cc}{sat} { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); } + +UP2H{cc}{sat} { return_opcode(require_NV_fp, SCALAR_OP, UP2H, 4); } +UP2US{cc}{sat} { return_opcode(require_NV_fp, SCALAR_OP, UP2US, 5); } + +X2D{szf}{cc}{sat} { return_opcode(require_NV_fp, TRI_OP, X2D, 3); } +XPD{sat} { return_opcode( 1, BIN_OP, XPD, 3); } vertex { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } fragment { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index b9a0e557ad..e741e9a13b 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -597,16 +597,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 375 +#define YYLAST 383 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 117 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 136 +#define YYNNTS 137 /* YYNRULES -- Number of rules. */ -#define YYNRULES 270 +#define YYNRULES 272 /* YYNRULES -- Number of states. */ -#define YYNSTATES 456 +#define YYNSTATES 458 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -685,11 +685,11 @@ static const yytype_uint16 yyprhs[] = 564, 566, 568, 570, 572, 575, 577, 579, 581, 583, 589, 591, 595, 601, 607, 609, 613, 619, 621, 623, 625, 627, 629, 631, 633, 635, 637, 641, 647, 655, - 665, 668, 671, 673, 675, 676, 677, 681, 682, 686, - 690, 692, 697, 700, 703, 706, 709, 713, 716, 720, - 721, 723, 725, 726, 728, 730, 731, 733, 735, 736, - 738, 740, 741, 745, 746, 750, 751, 755, 757, 759, - 761 + 665, 668, 671, 673, 675, 676, 677, 682, 684, 685, + 686, 690, 694, 696, 702, 705, 708, 711, 714, 718, + 721, 725, 726, 728, 730, 731, 733, 735, 736, 738, + 740, 741, 743, 745, 746, 750, 751, 755, 756, 760, + 762, 764, 766 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ @@ -706,7 +706,7 @@ static const yytype_int16 yyrhs[] = 108, 141, -1, 17, 142, 108, 141, 108, 141, 108, 141, -1, 15, 142, 108, 141, 108, 136, 108, 137, -1, 20, 141, -1, 22, 142, 108, 141, 108, 141, - 108, 141, 108, 136, 108, 137, -1, 83, 247, -1, + 108, 141, 108, 136, 108, 137, -1, 83, 248, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, 94, -1, 95, -1, 21, 142, 108, 147, 108, 144, @@ -715,19 +715,19 @@ static const yytype_int16 yyrhs[] = 147, 160, 109, -1, 148, 161, -1, 156, 158, -1, 145, 108, 145, 108, 145, 108, 145, -1, 233, 146, -1, 23, -1, 99, -1, 99, -1, 164, -1, 149, - 110, 150, 111, -1, 178, -1, 240, -1, 99, -1, + 110, 150, 111, -1, 178, -1, 241, -1, 99, -1, 99, -1, 151, -1, 152, -1, 23, -1, 156, 157, 153, -1, -1, 112, 154, -1, 113, 155, -1, 23, -1, 23, -1, 99, -1, 103, -1, 103, -1, 103, -1, 103, -1, 100, -1, 104, -1, -1, 100, -1, 101, -1, 102, -1, 103, -1, -1, 163, -1, 170, - -1, 234, -1, 236, -1, 239, -1, 252, -1, 7, + -1, 234, -1, 237, -1, 240, -1, 253, -1, 7, 99, 114, 164, -1, 96, 165, -1, 38, 169, -1, - 60, -1, 98, 167, -1, 53, -1, 29, 245, -1, - 37, -1, 74, 246, -1, 50, 110, 168, 111, -1, + 60, -1, 98, 167, -1, 53, -1, 29, 246, -1, + 37, -1, 74, 247, -1, 50, 110, 168, 111, -1, 97, 110, 166, 111, -1, 23, -1, -1, 110, 168, - 111, -1, 23, -1, 60, -1, 29, 245, -1, 37, - -1, 74, 246, -1, 171, -1, 172, -1, 10, 99, + 111, -1, 23, -1, 60, -1, 29, 246, -1, 37, + -1, 74, 247, -1, 171, -1, 172, -1, 10, 99, 174, -1, 10, 99, 110, 173, 111, 175, -1, -1, 23, -1, 114, 177, -1, 114, 115, 176, 116, -1, 179, -1, 176, 108, 179, -1, 181, -1, 217, -1, @@ -736,13 +736,13 @@ static const yytype_int16 yyrhs[] = 182, -1, 73, 184, -1, 73, 187, -1, 73, 189, -1, 73, 195, -1, 73, 191, -1, 73, 198, -1, 73, 200, -1, 73, 202, -1, 73, 204, -1, 73, - 216, -1, 47, 244, 183, -1, 193, -1, 33, -1, + 216, -1, 47, 245, 183, -1, 193, -1, 33, -1, 69, -1, 43, 110, 194, 111, 185, -1, 193, -1, 60, -1, 26, -1, 72, 186, -1, 40, -1, 32, - -1, 44, 188, -1, 25, -1, 244, 67, -1, 45, - 110, 194, 111, 244, 190, -1, 193, -1, 75, 248, + -1, 44, 188, -1, 25, -1, 245, 67, -1, 45, + 110, 194, 111, 245, 190, -1, 193, -1, 75, 249, 192, -1, 29, -1, 25, -1, 31, -1, 71, -1, - 23, -1, 76, 246, 196, 197, -1, 35, -1, 54, + 23, -1, 76, 247, 196, 197, -1, 35, -1, 54, -1, 79, -1, 80, -1, 78, -1, 77, -1, 36, 199, -1, 29, -1, 56, -1, 28, 110, 201, 111, 57, -1, 23, -1, 58, 203, -1, 70, -1, 26, @@ -750,7 +750,7 @@ static const yytype_int16 yyrhs[] = -1, 66, 110, 210, 105, 210, 111, -1, 49, 211, 208, -1, -1, 209, -1, 41, -1, 82, -1, 42, -1, 23, -1, 51, 212, -1, 63, -1, 52, -1, - 81, 246, -1, 55, 110, 214, 111, -1, 48, 110, + 81, 247, -1, 55, 110, 214, 111, -1, 48, 110, 215, 111, -1, -1, 213, -1, 23, -1, 23, -1, 23, -1, 30, 64, -1, 221, -1, 224, -1, 219, -1, 222, -1, 62, 34, 110, 220, 111, -1, 225, @@ -762,16 +762,17 @@ static const yytype_int16 yyrhs[] = -1, 115, 232, 108, 232, 116, -1, 115, 232, 108, 232, 108, 232, 116, -1, 115, 232, 108, 232, 108, 232, 108, 232, 116, -1, 233, 24, -1, 233, 23, - -1, 112, -1, 113, -1, -1, -1, 11, 235, 238, - -1, -1, 5, 237, 238, -1, 238, 108, 99, -1, - 99, -1, 9, 99, 114, 240, -1, 65, 60, -1, - 65, 37, -1, 65, 241, -1, 65, 59, -1, 65, - 74, 246, -1, 65, 30, -1, 29, 242, 243, -1, - -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, - -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, - -1, 110, 249, 111, -1, -1, 110, 250, 111, -1, - -1, 110, 251, 111, -1, 23, -1, 23, -1, 23, - -1, 6, 99, 114, 99, -1 + -1, 112, -1, 113, -1, -1, -1, 236, 11, 235, + 239, -1, 99, -1, -1, -1, 5, 238, 239, -1, + 239, 108, 99, -1, 99, -1, 236, 9, 99, 114, + 241, -1, 65, 60, -1, 65, 37, -1, 65, 242, + -1, 65, 59, -1, 65, 74, 247, -1, 65, 30, + -1, 29, 243, 244, -1, -1, 39, -1, 27, -1, + -1, 61, -1, 68, -1, -1, 39, -1, 27, -1, + -1, 61, -1, 68, -1, -1, 110, 250, 111, -1, + -1, 110, 251, 111, -1, -1, 110, 252, 111, -1, + 23, -1, 23, -1, 23, -1, 6, 99, 114, 99, + -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ @@ -800,11 +801,11 @@ static const yytype_uint16 yyrline[] = 1598, 1603, 1616, 1624, 1635, 1643, 1643, 1645, 1645, 1647, 1657, 1662, 1669, 1679, 1688, 1693, 1700, 1710, 1720, 1732, 1732, 1733, 1733, 1735, 1745, 1753, 1763, 1771, 1779, 1788, - 1799, 1803, 1809, 1810, 1811, 1814, 1814, 1817, 1817, 1820, - 1826, 1834, 1847, 1856, 1865, 1869, 1878, 1887, 1898, 1905, - 1910, 1919, 1931, 1934, 1943, 1954, 1955, 1956, 1959, 1960, - 1961, 1964, 1965, 1968, 1969, 1972, 1973, 1976, 1987, 1998, - 2009 + 1799, 1803, 1809, 1810, 1811, 1814, 1814, 1817, 1852, 1856, + 1856, 1859, 1865, 1873, 1886, 1895, 1904, 1908, 1917, 1926, + 1937, 1944, 1949, 1958, 1970, 1973, 1982, 1993, 1994, 1995, + 1998, 1999, 2000, 2003, 2004, 2007, 2008, 2011, 2012, 2015, + 2026, 2037, 2048 }; #endif @@ -866,9 +867,10 @@ static const char *const yytname[] = "progLocalParam", "progEnvParamNum", "progLocalParamNum", "paramConstDecl", "paramConstUse", "paramConstScalarDecl", "paramConstScalarUse", "paramConstVector", "signedFloatConstant", - "optionalSign", "TEMP_statement", "@1", "ADDRESS_statement", "@2", - "varNameList", "OUTPUT_statement", "resultBinding", "resultColBinding", - "optResultFaceType", "optResultColorType", "optFaceType", "optColorType", + "optionalSign", "TEMP_statement", "@1", "optVarSize", + "ADDRESS_statement", "@2", "varNameList", "OUTPUT_statement", + "resultBinding", "resultColBinding", "optResultFaceType", + "optResultColorType", "optFaceType", "optColorType", "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum", "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", "ALIAS_statement", 0 @@ -921,11 +923,11 @@ static const yytype_uint8 yyr1[] = 212, 213, 214, 215, 216, 217, 217, 218, 218, 219, 220, 220, 221, 222, 223, 223, 224, 225, 226, 227, 227, 228, 228, 229, 230, 230, 231, 231, 231, 231, - 232, 232, 233, 233, 233, 235, 234, 237, 236, 238, - 238, 239, 240, 240, 240, 240, 240, 240, 241, 242, - 242, 242, 243, 243, 243, 244, 244, 244, 245, 245, - 245, 246, 246, 247, 247, 248, 248, 249, 250, 251, - 252 + 232, 232, 233, 233, 233, 235, 234, 236, 236, 238, + 237, 239, 239, 240, 241, 241, 241, 241, 241, 241, + 242, 243, 243, 243, 244, 244, 244, 245, 245, 245, + 246, 246, 246, 247, 247, 248, 248, 249, 249, 250, + 251, 252, 253 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -954,11 +956,11 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 2, 1, 1, 1, 1, 5, 1, 3, 5, 5, 1, 3, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 5, 7, 9, - 2, 2, 1, 1, 0, 0, 3, 0, 3, 3, - 1, 4, 2, 2, 2, 2, 3, 2, 3, 0, - 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, - 1, 0, 3, 0, 3, 0, 3, 1, 1, 1, - 4 + 2, 2, 1, 1, 0, 0, 4, 1, 0, 0, + 3, 3, 1, 5, 2, 2, 2, 2, 3, 2, + 3, 0, 1, 1, 0, 1, 1, 0, 1, 1, + 0, 1, 1, 0, 3, 0, 3, 0, 3, 1, + 1, 1, 4 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -966,143 +968,143 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 3, 4, 0, 6, 1, 9, 0, 5, 0, - 0, 237, 0, 0, 0, 0, 235, 2, 0, 0, - 0, 0, 0, 0, 0, 234, 0, 0, 8, 0, - 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, - 23, 20, 0, 88, 89, 113, 114, 90, 91, 92, - 93, 7, 0, 0, 0, 0, 0, 0, 0, 64, - 0, 87, 63, 0, 0, 0, 0, 0, 75, 0, - 0, 232, 233, 31, 0, 0, 0, 10, 11, 240, - 238, 0, 0, 0, 117, 234, 115, 236, 249, 247, - 243, 245, 242, 261, 244, 234, 83, 84, 85, 86, - 53, 234, 234, 234, 234, 234, 234, 77, 54, 225, - 224, 0, 0, 0, 0, 59, 0, 234, 82, 0, - 60, 62, 126, 127, 205, 206, 128, 221, 222, 0, - 234, 0, 270, 94, 241, 118, 0, 119, 123, 124, - 125, 219, 220, 223, 0, 251, 250, 252, 0, 246, - 0, 0, 0, 0, 26, 0, 25, 24, 258, 111, - 109, 261, 96, 0, 0, 0, 0, 0, 0, 255, - 0, 255, 0, 0, 265, 261, 134, 135, 136, 137, - 139, 138, 140, 141, 142, 143, 0, 144, 258, 101, - 0, 99, 97, 261, 0, 106, 95, 82, 0, 80, - 79, 81, 51, 0, 0, 0, 239, 0, 231, 230, - 253, 254, 248, 267, 0, 234, 234, 0, 47, 0, - 50, 0, 234, 259, 260, 110, 112, 0, 0, 0, - 204, 175, 176, 174, 0, 157, 257, 256, 156, 0, - 0, 0, 0, 199, 195, 0, 194, 261, 187, 181, - 180, 179, 0, 0, 0, 0, 100, 0, 102, 0, - 0, 98, 0, 234, 226, 68, 0, 66, 67, 0, - 234, 234, 0, 116, 262, 28, 27, 0, 78, 49, - 263, 0, 0, 217, 0, 218, 0, 178, 0, 166, - 0, 158, 0, 163, 164, 147, 148, 165, 145, 146, - 0, 201, 193, 200, 0, 196, 189, 191, 190, 186, - 188, 269, 0, 162, 161, 168, 169, 0, 0, 108, - 0, 105, 0, 0, 52, 0, 61, 76, 70, 46, - 0, 0, 0, 234, 48, 0, 33, 0, 234, 212, - 216, 0, 0, 255, 203, 0, 202, 0, 266, 173, - 172, 170, 171, 167, 192, 0, 103, 104, 107, 234, - 227, 0, 0, 69, 234, 57, 58, 56, 234, 0, - 0, 0, 121, 129, 132, 130, 207, 208, 131, 268, - 0, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 30, 29, 177, 152, 154, 151, 0, - 149, 150, 0, 198, 197, 182, 0, 73, 71, 74, - 72, 0, 0, 0, 0, 133, 184, 234, 120, 264, - 155, 153, 159, 160, 234, 228, 234, 0, 0, 0, - 0, 183, 122, 0, 0, 0, 0, 210, 0, 214, - 0, 229, 234, 0, 209, 0, 213, 0, 0, 55, - 32, 211, 215, 0, 0, 185 + 0, 3, 4, 0, 6, 1, 9, 0, 5, 238, + 0, 239, 0, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 234, 0, 0, 237, 8, 0, 12, + 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, + 20, 0, 88, 89, 113, 114, 90, 0, 91, 92, + 93, 7, 0, 0, 0, 0, 0, 64, 0, 87, + 63, 0, 0, 0, 0, 0, 75, 0, 0, 232, + 233, 31, 0, 0, 0, 10, 11, 0, 235, 242, + 240, 0, 0, 117, 234, 115, 251, 249, 245, 247, + 244, 263, 246, 234, 83, 84, 85, 86, 53, 234, + 234, 234, 234, 234, 234, 77, 54, 225, 224, 0, + 0, 0, 0, 59, 0, 234, 82, 0, 60, 62, + 126, 127, 205, 206, 128, 221, 222, 0, 234, 0, + 0, 0, 272, 94, 118, 0, 119, 123, 124, 125, + 219, 220, 223, 0, 253, 252, 254, 0, 248, 0, + 0, 0, 0, 26, 0, 25, 24, 260, 111, 109, + 263, 96, 0, 0, 0, 0, 0, 0, 257, 0, + 257, 0, 0, 267, 263, 134, 135, 136, 137, 139, + 138, 140, 141, 142, 143, 0, 144, 260, 101, 0, + 99, 97, 263, 0, 106, 95, 82, 0, 80, 79, + 81, 51, 0, 0, 0, 0, 236, 241, 0, 231, + 230, 255, 256, 250, 269, 0, 234, 234, 0, 47, + 0, 50, 0, 234, 261, 262, 110, 112, 0, 0, + 0, 204, 175, 176, 174, 0, 157, 259, 258, 156, + 0, 0, 0, 0, 199, 195, 0, 194, 263, 187, + 181, 180, 179, 0, 0, 0, 0, 100, 0, 102, + 0, 0, 98, 0, 234, 226, 68, 0, 66, 67, + 0, 234, 234, 243, 0, 116, 264, 28, 27, 0, + 78, 49, 265, 0, 0, 217, 0, 218, 0, 178, + 0, 166, 0, 158, 0, 163, 164, 147, 148, 165, + 145, 146, 0, 201, 193, 200, 0, 196, 189, 191, + 190, 186, 188, 271, 0, 162, 161, 168, 169, 0, + 0, 108, 0, 105, 0, 0, 52, 0, 61, 76, + 70, 46, 0, 0, 0, 234, 48, 0, 33, 0, + 234, 212, 216, 0, 0, 257, 203, 0, 202, 0, + 268, 173, 172, 170, 171, 167, 192, 0, 103, 104, + 107, 234, 227, 0, 0, 69, 234, 57, 58, 56, + 234, 0, 0, 0, 121, 129, 132, 130, 207, 208, + 131, 270, 0, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 30, 29, 177, 152, 154, + 151, 0, 149, 150, 0, 198, 197, 182, 0, 73, + 71, 74, 72, 0, 0, 0, 0, 133, 184, 234, + 120, 266, 155, 153, 159, 160, 234, 228, 234, 0, + 0, 0, 0, 183, 122, 0, 0, 0, 0, 210, + 0, 214, 0, 229, 234, 0, 209, 0, 213, 0, + 0, 55, 32, 211, 215, 0, 0, 185 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 281, - 393, 41, 151, 218, 73, 60, 69, 329, 330, 367, - 219, 61, 119, 266, 267, 268, 363, 408, 410, 70, - 328, 108, 279, 202, 100, 42, 43, 120, 196, 322, - 261, 320, 162, 44, 45, 46, 136, 86, 273, 371, - 137, 121, 372, 373, 122, 176, 298, 177, 400, 421, - 178, 238, 179, 422, 180, 314, 299, 290, 181, 317, - 353, 182, 233, 183, 288, 184, 251, 185, 415, 431, - 186, 309, 310, 355, 248, 302, 303, 347, 345, 187, - 123, 375, 376, 436, 124, 377, 438, 125, 284, 286, - 378, 126, 141, 127, 128, 143, 74, 47, 57, 48, - 52, 80, 49, 62, 94, 147, 212, 239, 225, 149, - 336, 253, 214, 380, 312, 50 + -1, 3, 4, 6, 8, 9, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 283, + 395, 40, 150, 219, 71, 58, 67, 331, 332, 369, + 220, 59, 117, 267, 268, 269, 365, 410, 412, 68, + 330, 106, 281, 201, 98, 41, 42, 118, 195, 324, + 262, 322, 161, 43, 44, 45, 135, 85, 275, 373, + 136, 119, 374, 375, 120, 175, 300, 176, 402, 423, + 177, 239, 178, 424, 179, 316, 301, 292, 180, 319, + 355, 181, 234, 182, 290, 183, 252, 184, 417, 433, + 185, 311, 312, 357, 249, 304, 305, 349, 347, 186, + 121, 377, 378, 438, 122, 379, 440, 123, 286, 288, + 380, 124, 140, 125, 126, 142, 72, 46, 130, 47, + 48, 52, 80, 49, 60, 92, 146, 213, 240, 226, + 148, 338, 254, 215, 382, 314, 50 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -403 +#define YYPACT_NINF -386 static const yytype_int16 yypact[] = { - 62, -403, -403, 41, -403, -403, 81, -36, -403, 198, - -8, -403, -5, 18, 20, 35, -403, -403, -23, -23, - -23, -23, -23, -23, 45, 131, -23, -23, -403, 58, - -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, - -403, -403, 67, -403, -403, -403, -403, -403, -403, -403, - -403, -403, 63, 86, 92, 128, 84, 63, 99, -403, - 69, 133, -403, 87, 89, 129, 145, 146, -403, 147, - 154, -403, -403, -403, -13, 150, 151, -403, -403, -403, - 152, 162, -14, 197, 240, -34, -403, 152, 98, -403, - -403, -403, -403, 155, -403, 131, -403, -403, -403, -403, - -403, 131, 131, 131, 131, 131, 131, -403, -403, -403, - -403, 72, 105, 77, 17, 156, 12, 131, 68, 157, - -403, -403, -403, -403, -403, -403, -403, -403, -403, 12, - 131, 165, -403, -403, -403, -403, 158, -403, -403, -403, - -403, -403, -403, -403, 223, -403, -403, -16, 245, -403, - 163, 164, -9, 167, -403, 168, -403, -403, 55, -403, - -403, 155, -403, 170, 171, 172, 206, 2, 173, 34, - 174, 127, 112, 1, 175, 155, -403, -403, -403, -403, - -403, -403, -403, -403, -403, -403, 207, -403, 55, -403, - 177, -403, -403, 155, 178, 179, -403, 68, 22, -403, - -403, -403, -403, -6, 169, 182, -403, 180, -403, -403, - -403, -403, -403, -403, 181, 131, 131, 12, -403, 188, - 190, 195, 131, -403, -403, -403, -403, 272, 273, 274, - -403, -403, -403, -403, 275, -403, -403, -403, -403, 232, - 275, 79, 191, 277, -403, 192, -403, 155, 15, -403, - -403, -403, 280, 276, 8, 194, -403, 283, -403, 284, - 283, -403, 199, 131, -403, -403, 200, -403, -403, 209, - 131, 131, 201, -403, -403, -403, -403, 204, -403, -403, - 205, 210, 211, -403, 203, -403, 212, -403, 213, -403, - 214, -403, 215, -403, -403, -403, -403, -403, -403, -403, - 286, -403, -403, -403, 294, -403, -403, -403, -403, -403, - -403, -403, 216, -403, -403, -403, -403, 161, 297, -403, - 217, -403, 218, 219, -403, 76, -403, -403, 139, -403, - 227, -4, 228, 30, -403, 298, -403, 137, 131, -403, - -403, 265, 130, 127, -403, 220, -403, 226, -403, -403, - -403, -403, -403, -403, -403, 229, -403, -403, -403, 131, - -403, 315, 319, -403, 131, -403, -403, -403, 131, 123, - 77, 80, -403, -403, -403, -403, -403, -403, -403, -403, - 233, -403, -403, -403, -403, -403, -403, -403, -403, -403, - -403, -403, -403, -403, -403, -403, -403, -403, -403, 311, - -403, -403, 9, -403, -403, -403, 83, -403, -403, -403, - -403, 237, 238, 239, 241, -403, 281, 30, -403, -403, - -403, -403, -403, -403, 131, -403, 131, 195, 272, 273, - 242, -403, -403, 234, 246, 247, 248, 243, 249, 251, - 297, -403, 131, 137, -403, 272, -403, 273, 36, -403, - -403, -403, -403, 297, 250, -403 + 203, -386, -386, 23, -386, -386, 67, -50, -386, 20, + 16, -386, 21, 37, 48, -386, -19, -19, -19, -19, + -19, -19, 58, 131, -19, -19, -386, -386, 53, -386, + -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -386, 64, -386, -386, -386, -386, -386, 229, -386, -386, + -386, -386, 77, 81, 89, 78, 95, -386, 75, 130, + -386, 119, 139, 140, 142, 146, -386, 147, 136, -386, + -386, -386, -14, 148, 149, -386, -386, 159, -386, -386, + 152, 162, -20, 239, -6, -386, 31, -386, -386, -386, + -386, 153, -386, 131, -386, -386, -386, -386, -386, 131, + 131, 131, 131, 131, 131, -386, -386, -386, -386, 28, + 50, 123, 40, 154, 30, 131, 101, 155, -386, -386, + -386, -386, -386, -386, -386, -386, -386, 30, 131, 156, + 77, 167, -386, -386, -386, 158, -386, -386, -386, -386, + -386, -386, -386, 218, -386, -386, 13, 244, -386, 160, + 163, -10, 164, -386, 165, -386, -386, 73, -386, -386, + 153, -386, 166, 168, 169, 210, 42, 170, 91, 171, + 100, 145, 38, 173, 153, -386, -386, -386, -386, -386, + -386, -386, -386, -386, -386, 209, -386, 73, -386, 174, + -386, -386, 153, 175, 176, -386, 101, 57, -386, -386, + -386, -386, -16, 179, 180, 225, 152, -386, 177, -386, + -386, -386, -386, -386, -386, 181, 131, 131, 30, -386, + 190, 191, 212, 131, -386, -386, -386, -386, 273, 274, + 275, -386, -386, -386, -386, 276, -386, -386, -386, -386, + 233, 276, 115, 192, 278, -386, 193, -386, 153, 9, + -386, -386, -386, 281, 277, 25, 195, -386, 284, -386, + 285, 284, -386, 200, 131, -386, -386, 199, -386, -386, + 208, 131, 131, -386, 197, -386, -386, -386, -386, 206, + -386, -386, 207, 205, 211, -386, 213, -386, 214, -386, + 215, -386, 216, -386, 217, -386, -386, -386, -386, -386, + -386, -386, 293, -386, -386, -386, 295, -386, -386, -386, + -386, -386, -386, -386, 219, -386, -386, -386, -386, 157, + 297, -386, 220, -386, 221, 222, -386, 66, -386, -386, + 133, -386, 226, -12, 230, 49, -386, 298, -386, 125, + 131, -386, -386, 265, 118, 100, -386, 228, -386, 232, + -386, -386, -386, -386, -386, -386, -386, 234, -386, -386, + -386, 131, -386, 300, 306, -386, 131, -386, -386, -386, + 131, 129, 123, 69, -386, -386, -386, -386, -386, -386, + -386, -386, 235, -386, -386, -386, -386, -386, -386, -386, + -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -386, 308, -386, -386, 41, -386, -386, -386, 86, -386, + -386, -386, -386, 240, 241, 231, 237, -386, 286, 49, + -386, -386, -386, -386, -386, -386, 131, -386, 131, 212, + 273, 274, 243, -386, -386, 238, 242, 247, 245, 246, + 248, 252, 297, -386, 131, 125, -386, 273, -386, 274, + 45, -386, -386, -386, -386, 297, 250, -386 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, - -403, -403, -403, -403, -403, -403, -403, -403, -403, -74, - -81, -403, -98, 141, -82, 160, -403, -403, -358, -403, - -41, -403, -403, -403, -403, -403, -403, -403, -403, 166, - -403, -403, -403, 176, -403, -403, -403, 282, -403, -403, - -403, 103, -403, -403, -403, -403, -403, -403, -403, -403, - -403, -403, -52, -403, -84, -403, -403, -403, -403, -403, - -403, -403, -403, -403, -403, -403, -333, 126, -403, -403, - -403, -403, -403, -403, -403, -403, -403, -403, -403, -403, - -3, -403, -403, -402, -403, -403, -403, -403, -403, -403, - 285, -403, -403, -403, -403, -403, -403, -403, -398, -392, - 287, -403, -403, -145, -83, -114, -85, -403, -403, -403, - -403, 314, -403, 291, -403, -403, -403, -167, 187, -149, - -403, -403, -403, -403, -403, -403 + -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -386, -386, -386, -386, -386, -386, -386, -386, -386, -71, + -80, -386, -96, 144, -81, 204, -386, -386, -350, -386, + -17, -386, -386, -386, -386, -386, -386, -386, -386, 161, + -386, -386, -386, 172, -386, -386, -386, 282, -386, -386, + -386, 105, -386, -386, -386, -386, -386, -386, -386, -386, + -386, -386, -52, -386, -83, -386, -386, -386, -386, -386, + -386, -386, -386, -386, -386, -386, -300, 128, -386, -386, + -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, + -2, -386, -386, -327, -386, -386, -386, -386, -386, -386, + 287, -386, -386, -386, -386, -386, -386, -386, -385, -318, + 288, -386, -386, -145, -82, -112, -84, -386, -386, -386, + -386, -386, 249, -386, 178, -386, -386, -386, -166, 186, + -131, -386, -386, -386, -386, -386, -386 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1112,86 +1114,88 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -222 static const yytype_int16 yytable[] = { - 144, 138, 142, 198, 241, 154, 411, 220, 157, 401, - 109, 110, 226, 150, 109, 110, 152, 265, 152, 365, - 153, 152, 155, 156, 111, 111, 254, 249, 112, 111, - 437, 231, 144, 118, 293, 109, 110, 439, 448, 113, - 294, 5, 58, 315, 258, 210, 188, 451, 205, 112, - 111, 454, 211, 112, 189, 452, 306, 307, 232, 235, - 113, 236, 316, 10, 113, 1, 2, 190, 434, 423, - 191, 250, 220, 237, 112, 197, 59, 192, 71, 72, - 297, 117, 114, 114, 449, 113, 115, 114, 204, 7, - 115, 193, 369, 68, 53, 366, 116, 308, 305, 51, - 217, 158, 117, 370, 293, 165, 117, 166, 114, 159, - 294, 115, 295, 167, 194, 195, 223, 54, 276, 55, - 168, 169, 170, 224, 171, 145, 172, 117, 88, 89, - 263, 152, 160, 275, 56, 173, 90, 146, 264, 163, - 282, 453, 71, 72, 68, 117, 161, 405, 296, 325, - 297, 164, 174, 175, 236, 293, 396, 413, 91, 92, - 242, 294, 79, 243, 244, 77, 237, 245, 199, 414, - 397, 200, 201, 93, 78, 246, 402, 95, 144, 63, - 64, 65, 66, 67, 359, 331, 75, 76, 417, 332, - 398, 424, 360, 247, 84, 101, 418, 102, 85, 425, - 81, 297, 399, 11, 12, 13, 82, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 96, 97, 98, 99, 103, 349, 350, - 351, 352, 83, 71, 72, 406, 208, 209, 144, 374, - 142, 361, 362, 104, 105, 106, 394, 107, 129, 130, - 131, 132, 58, 135, 206, 148, -65, 203, 213, 207, - 230, 215, 216, 255, 144, 221, 222, 270, 280, 331, - 227, 228, 229, 234, 240, 252, 412, 257, 259, 260, - 271, 278, 274, -221, 272, 283, 285, 287, 289, 291, - 301, 300, 304, 311, 318, 313, 319, 321, 324, 344, - 433, 326, 327, 334, 339, 335, 333, 346, 337, 338, - 354, 379, 395, 340, 341, 342, 343, 348, 356, 357, - 358, 403, 144, 374, 142, 364, 368, 404, 407, 144, - 405, 331, 409, 420, 419, 426, 427, 430, 445, 428, - 441, 429, 440, 435, 442, 443, 447, 331, 277, 444, - 446, 455, 450, 323, 133, 432, 292, 416, 0, 269, - 139, 87, 140, 262, 134, 256 + 143, 137, 141, 197, 242, 153, 221, 266, 156, 107, + 108, 367, 149, 107, 108, 151, 413, 151, 109, 152, + 151, 154, 155, 5, 109, 11, 12, 13, 109, 227, + 14, 143, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 255, 403, 439, 56, 204, 110, 10, + 308, 309, 110, 107, 108, 116, 110, 157, 144, 111, + 317, 259, 453, 111, 250, 158, 295, 111, 109, 187, + 145, 232, 296, 221, 211, 7, 112, 188, 436, 318, + 57, 212, 112, 66, 162, 113, 112, 368, 159, 113, + 189, 310, 110, 190, 451, 114, 163, 196, 233, 218, + 191, 115, 160, 111, 425, 115, 69, 70, 251, 115, + 203, 371, 299, 441, 192, 450, 236, 307, 237, 26, + 53, 278, 372, 51, 86, 87, 112, 237, 456, 113, + 238, 454, 88, 151, 224, 277, 54, 193, 194, 238, + 295, 225, 284, 295, 398, 115, 296, 55, 297, 296, + 455, 164, 327, 165, 89, 90, 407, 66, 399, 166, + 75, 69, 70, 415, 115, 264, 167, 168, 169, 91, + 170, 76, 171, 265, 361, 416, 79, 419, 400, 404, + 143, 172, 362, 93, 298, 420, 299, 333, 83, 299, + 401, 334, 84, 243, 426, 81, 244, 245, 173, 174, + 246, 198, 427, 82, 199, 200, 1, 2, 247, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, 61, 62, 63, 64, 65, 248, 99, 73, 74, + 94, 95, 96, 97, 351, 352, 353, 354, 77, 105, + 78, 209, 210, 69, 70, 363, 364, 100, 101, 408, + 102, 143, 376, 141, 103, 104, 127, 128, 129, 396, + 131, 132, 134, 147, -65, 202, 207, 214, 216, 208, + 205, 217, 222, 223, 231, 256, 228, 143, 229, 230, + 235, 241, 333, 253, 258, 260, 261, 271, 272, 414, + 56, 274, 276, 280, -221, 282, 285, 287, 289, 291, + 293, 303, 302, 306, 313, 320, 315, 321, 323, 326, + 328, 329, 335, 339, 435, 336, 346, 337, 348, 340, + 356, 381, 397, 409, 341, 342, 343, 344, 345, 411, + 350, 358, 359, 360, 366, 143, 376, 141, 370, 405, + 422, 430, 143, 406, 333, 407, 421, 431, 428, 429, + 444, 447, 432, 442, 443, 445, 446, 449, 437, 448, + 333, 457, 279, 270, 133, 452, 325, 434, 263, 294, + 418, 138, 139, 257, 0, 0, 0, 0, 0, 206, + 0, 0, 0, 273 }; static const yytype_int16 yycheck[] = { - 85, 85, 85, 117, 171, 103, 364, 152, 106, 342, - 23, 24, 161, 95, 23, 24, 101, 23, 103, 23, - 102, 106, 104, 105, 38, 38, 175, 26, 62, 38, - 428, 29, 117, 74, 25, 23, 24, 429, 440, 73, - 31, 0, 65, 35, 193, 61, 29, 445, 130, 62, - 38, 453, 68, 62, 37, 447, 41, 42, 56, 25, - 73, 27, 54, 99, 73, 3, 4, 50, 426, 402, - 53, 70, 217, 39, 62, 116, 99, 60, 112, 113, - 71, 115, 96, 96, 442, 73, 99, 96, 129, 8, - 99, 74, 62, 99, 99, 99, 109, 82, 247, 107, - 109, 29, 115, 73, 25, 28, 115, 30, 96, 37, - 31, 99, 33, 36, 97, 98, 61, 99, 216, 99, - 43, 44, 45, 68, 47, 27, 49, 115, 29, 30, - 108, 216, 60, 215, 99, 58, 37, 39, 116, 34, - 222, 105, 112, 113, 99, 115, 74, 111, 69, 263, - 71, 46, 75, 76, 27, 25, 26, 34, 59, 60, - 48, 31, 99, 51, 52, 107, 39, 55, 100, 46, - 40, 103, 104, 74, 107, 63, 343, 108, 263, 19, - 20, 21, 22, 23, 108, 270, 26, 27, 108, 271, - 60, 108, 116, 81, 110, 108, 116, 108, 114, 116, - 114, 71, 72, 5, 6, 7, 114, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 100, 101, 102, 103, 108, 77, 78, - 79, 80, 114, 112, 113, 359, 23, 24, 333, 333, - 333, 112, 113, 108, 108, 108, 338, 103, 108, 108, - 108, 99, 65, 23, 99, 110, 110, 110, 23, 111, - 64, 108, 108, 66, 359, 108, 108, 108, 83, 364, - 110, 110, 110, 110, 110, 110, 368, 110, 110, 110, - 108, 103, 111, 103, 114, 23, 23, 23, 23, 67, - 23, 110, 110, 23, 110, 29, 23, 23, 109, 23, - 424, 111, 103, 109, 111, 110, 115, 23, 108, 108, - 23, 23, 57, 111, 111, 111, 111, 111, 111, 111, - 111, 111, 417, 417, 417, 108, 108, 111, 23, 424, - 111, 426, 23, 32, 111, 108, 108, 66, 105, 110, - 116, 110, 110, 427, 108, 108, 105, 442, 217, 111, - 111, 111, 443, 260, 82, 417, 240, 370, -1, 203, - 85, 57, 85, 197, 83, 188 + 84, 84, 84, 115, 170, 101, 151, 23, 104, 23, + 24, 23, 93, 23, 24, 99, 366, 101, 38, 100, + 104, 102, 103, 0, 38, 5, 6, 7, 38, 160, + 10, 115, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 174, 344, 430, 65, 128, 62, 99, + 41, 42, 62, 23, 24, 72, 62, 29, 27, 73, + 35, 192, 447, 73, 26, 37, 25, 73, 38, 29, + 39, 29, 31, 218, 61, 8, 96, 37, 428, 54, + 99, 68, 96, 99, 34, 99, 96, 99, 60, 99, + 50, 82, 62, 53, 444, 109, 46, 114, 56, 109, + 60, 115, 74, 73, 404, 115, 112, 113, 70, 115, + 127, 62, 71, 431, 74, 442, 25, 248, 27, 99, + 99, 217, 73, 107, 29, 30, 96, 27, 455, 99, + 39, 449, 37, 217, 61, 216, 99, 97, 98, 39, + 25, 68, 223, 25, 26, 115, 31, 99, 33, 31, + 105, 28, 264, 30, 59, 60, 111, 99, 40, 36, + 107, 112, 113, 34, 115, 108, 43, 44, 45, 74, + 47, 107, 49, 116, 108, 46, 99, 108, 60, 345, + 264, 58, 116, 108, 69, 116, 71, 271, 110, 71, + 72, 272, 114, 48, 108, 114, 51, 52, 75, 76, + 55, 100, 116, 114, 103, 104, 3, 4, 63, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 17, 18, 19, 20, 21, 81, 108, 24, 25, + 100, 101, 102, 103, 77, 78, 79, 80, 9, 103, + 11, 23, 24, 112, 113, 112, 113, 108, 108, 361, + 108, 335, 335, 335, 108, 108, 108, 108, 99, 340, + 108, 99, 23, 110, 110, 110, 99, 23, 108, 111, + 114, 108, 108, 108, 64, 66, 110, 361, 110, 110, + 110, 110, 366, 110, 110, 110, 110, 108, 108, 370, + 65, 114, 111, 103, 103, 83, 23, 23, 23, 23, + 67, 23, 110, 110, 23, 110, 29, 23, 23, 109, + 111, 103, 115, 108, 426, 109, 23, 110, 23, 108, + 23, 23, 57, 23, 111, 111, 111, 111, 111, 23, + 111, 111, 111, 111, 108, 419, 419, 419, 108, 111, + 32, 110, 426, 111, 428, 111, 111, 110, 108, 108, + 108, 105, 66, 110, 116, 108, 111, 105, 429, 111, + 444, 111, 218, 202, 82, 445, 261, 419, 196, 241, + 372, 84, 84, 187, -1, -1, -1, -1, -1, 130, + -1, -1, -1, 205 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -1199,51 +1203,51 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 3, 4, 118, 119, 0, 120, 8, 121, 122, - 99, 5, 6, 7, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 138, 162, 163, 170, 171, 172, 234, 236, 239, - 252, 107, 237, 99, 99, 99, 99, 235, 65, 99, - 142, 148, 240, 142, 142, 142, 142, 142, 99, 143, - 156, 112, 113, 141, 233, 142, 142, 107, 107, 99, - 238, 114, 114, 114, 110, 114, 174, 238, 29, 30, - 37, 59, 60, 74, 241, 108, 100, 101, 102, 103, - 161, 108, 108, 108, 108, 108, 108, 103, 158, 23, - 24, 38, 62, 73, 96, 99, 109, 115, 147, 149, - 164, 178, 181, 217, 221, 224, 228, 230, 231, 108, - 108, 108, 99, 164, 240, 23, 173, 177, 181, 217, - 227, 229, 231, 232, 233, 27, 39, 242, 110, 246, - 141, 139, 233, 141, 139, 141, 141, 139, 29, 37, - 60, 74, 169, 34, 46, 28, 30, 36, 43, 44, - 45, 47, 49, 58, 75, 76, 182, 184, 187, 189, - 191, 195, 198, 200, 202, 204, 207, 216, 29, 37, - 50, 53, 60, 74, 97, 98, 165, 147, 232, 100, - 103, 104, 160, 110, 147, 141, 99, 111, 23, 24, - 61, 68, 243, 23, 249, 108, 108, 109, 140, 147, - 230, 108, 108, 61, 68, 245, 246, 110, 110, 110, - 64, 29, 56, 199, 110, 25, 27, 39, 188, 244, - 110, 244, 48, 51, 52, 55, 63, 81, 211, 26, - 70, 203, 110, 248, 246, 66, 245, 110, 246, 110, - 110, 167, 160, 108, 116, 23, 150, 151, 152, 156, - 108, 108, 114, 175, 111, 141, 139, 140, 103, 159, - 83, 136, 141, 23, 225, 23, 226, 23, 201, 23, - 194, 67, 194, 25, 31, 33, 69, 71, 183, 193, - 110, 23, 212, 213, 110, 246, 41, 42, 82, 208, - 209, 23, 251, 29, 192, 35, 54, 196, 110, 23, - 168, 23, 166, 168, 109, 232, 111, 103, 157, 144, - 145, 233, 141, 115, 109, 110, 247, 108, 108, 111, - 111, 111, 111, 111, 23, 215, 23, 214, 111, 77, - 78, 79, 80, 197, 23, 210, 111, 111, 111, 108, - 116, 112, 113, 153, 108, 23, 99, 146, 108, 62, - 73, 176, 179, 180, 181, 218, 219, 222, 227, 23, - 250, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 137, 141, 57, 26, 40, 60, 72, - 185, 193, 244, 111, 111, 111, 232, 23, 154, 23, - 155, 145, 141, 34, 46, 205, 207, 108, 116, 111, - 32, 186, 190, 193, 108, 116, 108, 108, 110, 110, - 66, 206, 179, 232, 145, 136, 220, 225, 223, 226, - 110, 116, 108, 108, 111, 105, 111, 105, 210, 145, - 137, 225, 226, 105, 210, 111 + 99, 5, 6, 7, 10, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 99, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 138, 162, 163, 170, 171, 172, 234, 236, 237, 240, + 253, 107, 238, 99, 99, 99, 65, 99, 142, 148, + 241, 142, 142, 142, 142, 142, 99, 143, 156, 112, + 113, 141, 233, 142, 142, 107, 107, 9, 11, 99, + 239, 114, 114, 110, 114, 174, 29, 30, 37, 59, + 60, 74, 242, 108, 100, 101, 102, 103, 161, 108, + 108, 108, 108, 108, 108, 103, 158, 23, 24, 38, + 62, 73, 96, 99, 109, 115, 147, 149, 164, 178, + 181, 217, 221, 224, 228, 230, 231, 108, 108, 99, + 235, 108, 99, 164, 23, 173, 177, 181, 217, 227, + 229, 231, 232, 233, 27, 39, 243, 110, 247, 141, + 139, 233, 141, 139, 141, 141, 139, 29, 37, 60, + 74, 169, 34, 46, 28, 30, 36, 43, 44, 45, + 47, 49, 58, 75, 76, 182, 184, 187, 189, 191, + 195, 198, 200, 202, 204, 207, 216, 29, 37, 50, + 53, 60, 74, 97, 98, 165, 147, 232, 100, 103, + 104, 160, 110, 147, 141, 114, 239, 99, 111, 23, + 24, 61, 68, 244, 23, 250, 108, 108, 109, 140, + 147, 230, 108, 108, 61, 68, 246, 247, 110, 110, + 110, 64, 29, 56, 199, 110, 25, 27, 39, 188, + 245, 110, 245, 48, 51, 52, 55, 63, 81, 211, + 26, 70, 203, 110, 249, 247, 66, 246, 110, 247, + 110, 110, 167, 160, 108, 116, 23, 150, 151, 152, + 156, 108, 108, 241, 114, 175, 111, 141, 139, 140, + 103, 159, 83, 136, 141, 23, 225, 23, 226, 23, + 201, 23, 194, 67, 194, 25, 31, 33, 69, 71, + 183, 193, 110, 23, 212, 213, 110, 247, 41, 42, + 82, 208, 209, 23, 252, 29, 192, 35, 54, 196, + 110, 23, 168, 23, 166, 168, 109, 232, 111, 103, + 157, 144, 145, 233, 141, 115, 109, 110, 248, 108, + 108, 111, 111, 111, 111, 111, 23, 215, 23, 214, + 111, 77, 78, 79, 80, 197, 23, 210, 111, 111, + 111, 108, 116, 112, 113, 153, 108, 23, 99, 146, + 108, 62, 73, 176, 179, 180, 181, 218, 219, 222, + 227, 23, 251, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 137, 141, 57, 26, 40, + 60, 72, 185, 193, 245, 111, 111, 111, 232, 23, + 154, 23, 155, 145, 141, 34, 46, 205, 207, 108, + 116, 111, 32, 186, 190, 193, 108, 116, 108, 108, + 110, 110, 66, 206, 179, 232, 145, 136, 220, 225, + 223, 226, 110, 116, 108, 108, 111, 105, 111, 105, + 210, 145, 137, 225, 226, 105, 210, 111 }; #define yyerrok (yyerrstatus = 0) @@ -4350,20 +4354,67 @@ yyreduce: /* Line 1455 of yacc.c */ #line 1814 "program_parse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} + { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 237: /* Line 1455 of yacc.c */ -#line 1817 "program_parse.y" - { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} +#line 1818 "program_parse.y" + { + /* NV_fragment_program_option defines the size qualifiers in a + * fairly broken way. "SHORT" or "LONG" can optionally be used + * before TEMP or OUTPUT. However, neither is a reserved word! + * This means that we have to parse it as an identifier, then check + * to make sure it's one of the valid values. *sigh* + * + * In addition, the grammar in the extension spec does *not* allow + * the size specifier to be optional, but all known implementations + * do. + */ + if (!state->option.NV_fragment) { + yyerror(& (yylsp[(1) - (1)]), state, "unexpected IDENTIFIER"); + YYERROR; + } + + if (strcmp("SHORT", (yyvsp[(1) - (1)].string)) == 0) { + } else if (strcmp("LONG", (yyvsp[(1) - (1)].string)) == 0) { + } else { + char *const err_str = + make_error_string("invalid storage size specifier \"%s\"", + (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid storage size specifier"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + ;} + break; + + case 238: + +/* Line 1455 of yacc.c */ +#line 1852 "program_parse.y" + { + ;} break; case 239: /* Line 1455 of yacc.c */ -#line 1821 "program_parse.y" +#line 1856 "program_parse.y" + { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} + break; + + case 241: + +/* Line 1455 of yacc.c */ +#line 1860 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4371,10 +4422,10 @@ yyreduce: ;} break; - case 240: + case 242: /* Line 1455 of yacc.c */ -#line 1827 "program_parse.y" +#line 1866 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4382,26 +4433,26 @@ yyreduce: ;} break; - case 241: + case 243: /* Line 1455 of yacc.c */ -#line 1835 "program_parse.y" +#line 1874 "program_parse.y" { struct asm_symbol *const s = - declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); + declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); if (s == NULL) { YYERROR; } else { - s->output_binding = (yyvsp[(4) - (4)].result); + s->output_binding = (yyvsp[(5) - (5)].result); } ;} break; - case 242: + case 244: /* Line 1455 of yacc.c */ -#line 1848 "program_parse.y" +#line 1887 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4412,10 +4463,10 @@ yyreduce: ;} break; - case 243: + case 245: /* Line 1455 of yacc.c */ -#line 1857 "program_parse.y" +#line 1896 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4426,19 +4477,19 @@ yyreduce: ;} break; - case 244: + case 246: /* Line 1455 of yacc.c */ -#line 1866 "program_parse.y" +#line 1905 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 245: + case 247: /* Line 1455 of yacc.c */ -#line 1870 "program_parse.y" +#line 1909 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4449,10 +4500,10 @@ yyreduce: ;} break; - case 246: + case 248: /* Line 1455 of yacc.c */ -#line 1879 "program_parse.y" +#line 1918 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4463,10 +4514,10 @@ yyreduce: ;} break; - case 247: + case 249: /* Line 1455 of yacc.c */ -#line 1888 "program_parse.y" +#line 1927 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4477,19 +4528,19 @@ yyreduce: ;} break; - case 248: + case 250: /* Line 1455 of yacc.c */ -#line 1899 "program_parse.y" +#line 1938 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 249: + case 251: /* Line 1455 of yacc.c */ -#line 1905 "program_parse.y" +#line 1944 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4497,10 +4548,10 @@ yyreduce: ;} break; - case 250: + case 252: /* Line 1455 of yacc.c */ -#line 1911 "program_parse.y" +#line 1950 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4511,10 +4562,10 @@ yyreduce: ;} break; - case 251: + case 253: /* Line 1455 of yacc.c */ -#line 1920 "program_parse.y" +#line 1959 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4525,19 +4576,19 @@ yyreduce: ;} break; - case 252: + case 254: /* Line 1455 of yacc.c */ -#line 1931 "program_parse.y" +#line 1970 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 253: + case 255: /* Line 1455 of yacc.c */ -#line 1935 "program_parse.y" +#line 1974 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4548,10 +4599,10 @@ yyreduce: ;} break; - case 254: + case 256: /* Line 1455 of yacc.c */ -#line 1944 "program_parse.y" +#line 1983 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4562,94 +4613,94 @@ yyreduce: ;} break; - case 255: + case 257: /* Line 1455 of yacc.c */ -#line 1954 "program_parse.y" +#line 1993 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 256: + case 258: /* Line 1455 of yacc.c */ -#line 1955 "program_parse.y" +#line 1994 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 257: + case 259: /* Line 1455 of yacc.c */ -#line 1956 "program_parse.y" +#line 1995 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 258: + case 260: /* Line 1455 of yacc.c */ -#line 1959 "program_parse.y" +#line 1998 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 259: + case 261: /* Line 1455 of yacc.c */ -#line 1960 "program_parse.y" +#line 1999 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 260: + case 262: /* Line 1455 of yacc.c */ -#line 1961 "program_parse.y" +#line 2000 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 261: + case 263: /* Line 1455 of yacc.c */ -#line 1964 "program_parse.y" +#line 2003 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 262: + case 264: /* Line 1455 of yacc.c */ -#line 1965 "program_parse.y" +#line 2004 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 263: + case 265: /* Line 1455 of yacc.c */ -#line 1968 "program_parse.y" +#line 2007 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 264: + case 266: /* Line 1455 of yacc.c */ -#line 1969 "program_parse.y" +#line 2008 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 265: + case 267: /* Line 1455 of yacc.c */ -#line 1972 "program_parse.y" +#line 2011 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 266: + case 268: /* Line 1455 of yacc.c */ -#line 1973 "program_parse.y" +#line 2012 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 267: + case 269: /* Line 1455 of yacc.c */ -#line 1977 "program_parse.y" +#line 2016 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4660,10 +4711,10 @@ yyreduce: ;} break; - case 268: + case 270: /* Line 1455 of yacc.c */ -#line 1988 "program_parse.y" +#line 2027 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4674,10 +4725,10 @@ yyreduce: ;} break; - case 269: + case 271: /* Line 1455 of yacc.c */ -#line 1999 "program_parse.y" +#line 2038 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4688,10 +4739,10 @@ yyreduce: ;} break; - case 270: + case 272: /* Line 1455 of yacc.c */ -#line 2010 "program_parse.y" +#line 2049 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4715,7 +4766,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4719 "program_parse.tab.c" +#line 4770 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4934,7 +4985,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2030 "program_parse.y" +#line 2069 "program_parse.y" void @@ -5004,7 +5055,10 @@ asm_instruction_copy_ctor(const struct prog_instruction *base, if (inst) { _mesa_init_instructions(& inst->Base, 1); inst->Base.Opcode = base->Opcode; + inst->Base.CondUpdate = base->CondUpdate; + inst->Base.CondDst = base->CondDst; inst->Base.SaturateMode = base->SaturateMode; + inst->Base.Precision = base->Precision; asm_instruction_set_operands(inst, dst, src0, src1, src2); } diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 4e2912d1c4..51cc9f7f11 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -1811,7 +1811,46 @@ optionalSign: '+' { $$ = FALSE; } | { $$ = FALSE; } ; -TEMP_statement: TEMP { $$ = $1; } varNameList +TEMP_statement: optVarSize TEMP { $$ = $2; } varNameList + ; + +optVarSize: IDENTIFIER + { + /* NV_fragment_program_option defines the size qualifiers in a + * fairly broken way. "SHORT" or "LONG" can optionally be used + * before TEMP or OUTPUT. However, neither is a reserved word! + * This means that we have to parse it as an identifier, then check + * to make sure it's one of the valid values. *sigh* + * + * In addition, the grammar in the extension spec does *not* allow + * the size specifier to be optional, but all known implementations + * do. + */ + if (!state->option.NV_fragment) { + yyerror(& @1, state, "unexpected IDENTIFIER"); + YYERROR; + } + + if (strcmp("SHORT", $1) == 0) { + } else if (strcmp("LONG", $1) == 0) { + } else { + char *const err_str = + make_error_string("invalid storage size specifier \"%s\"", + $1); + + yyerror(& @1, state, (err_str != NULL) + ? err_str : "invalid storage size specifier"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + } + | + { + } ; ADDRESS_statement: ADDRESS { $$ = $1; } varNameList @@ -1831,15 +1870,15 @@ varNameList: varNameList ',' IDENTIFIER } ; -OUTPUT_statement: OUTPUT IDENTIFIER '=' resultBinding +OUTPUT_statement: optVarSize OUTPUT IDENTIFIER '=' resultBinding { struct asm_symbol *const s = - declare_variable(state, $2, at_output, & @2); + declare_variable(state, $3, at_output, & @3); if (s == NULL) { YYERROR; } else { - s->output_binding = $4; + s->output_binding = $5; } } ; @@ -2096,7 +2135,10 @@ asm_instruction_copy_ctor(const struct prog_instruction *base, if (inst) { _mesa_init_instructions(& inst->Base, 1); inst->Base.Opcode = base->Opcode; + inst->Base.CondUpdate = base->CondUpdate; + inst->Base.CondDst = base->CondDst; inst->Base.SaturateMode = base->SaturateMode; + inst->Base.Precision = base->Precision; asm_instruction_set_operands(inst, dst, src0, src1, src2); } diff --git a/src/mesa/shader/program_parse_extra.c b/src/mesa/shader/program_parse_extra.c index 79e80c54d7..cb7b7a5fb2 100644 --- a/src/mesa/shader/program_parse_extra.c +++ b/src/mesa/shader/program_parse_extra.c @@ -33,6 +33,67 @@ * \author Ian Romanick */ +int +_mesa_parse_instruction_suffix(const struct asm_parser_state *state, + const char *suffix, + struct prog_instruction *inst) +{ + inst->CondUpdate = 0; + inst->CondDst = 0; + inst->SaturateMode = SATURATE_OFF; + inst->Precision = FLOAT32; + + + /* The first possible suffix element is the precision specifier from + * NV_fragment_program_option. + */ + if (state->option.NV_fragment) { + switch (suffix[0]) { + case 'H': + inst->Precision = FLOAT16; + suffix++; + break; + case 'R': + inst->Precision = FLOAT32; + suffix++; + break; + case 'X': + inst->Precision = FIXED12; + suffix++; + break; + default: + break; + } + } + + /* The next possible suffix element is the condition code modifier selection + * from NV_fragment_program_option. + */ + if (state->option.NV_fragment) { + if (suffix[0] == 'C') { + inst->CondUpdate = 1; + suffix++; + } + } + + + /* The final possible suffix element is the saturation selector from + * ARB_fragment_program. + */ + if (state->mode == ARB_fragment) { + if (strcmp(suffix, "_SAT") == 0) { + inst->SaturateMode = SATURATE_ZERO_ONE; + suffix += 4; + } + } + + + /* It is an error for all of the suffix string not to be consumed. + */ + return suffix[0] == '\0'; +} + + int _mesa_ARBvp_parse_option(struct asm_parser_state *state, const char *option) { diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h index be32a1bed1..497891f53d 100644 --- a/src/mesa/shader/program_parser.h +++ b/src/mesa/shader/program_parser.h @@ -264,4 +264,18 @@ extern int _mesa_ARBvp_parse_option(struct asm_parser_state *state, extern int _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option); +/** + * Parses and processes instruction suffixes + * + * Instruction suffixes, such as \c _SAT, are processed. The relevant bits + * are set in \c inst. If suffixes are encountered that are either not known + * or not supported by the modes and options set in \c state, zero will be + * returned. + * + * \return + * Non-zero on success, zero on failure. + */ +extern int _mesa_parse_instruction_suffix(const struct asm_parser_state *state, + const char *suffix, struct prog_instruction *inst); + /*@}*/ -- cgit v1.2.3 From 0e7953366f2a8ab1b0e885d94f6635c7640b3cc7 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 10 Sep 2009 14:35:33 -0700 Subject: ARB prog parser: Differentiate between used and unused names in the lexer The lexer will return IDENTIFIER only when the name does not have an associated symbol. Otherwise USED_IDENTIFIER is returned. --- src/mesa/shader/lex.yy.c | 366 +++++----- src/mesa/shader/program_lexer.l | 20 +- src/mesa/shader/program_parse.tab.c | 1259 ++++++++++++++++++----------------- src/mesa/shader/program_parse.tab.h | 17 +- src/mesa/shader/program_parse.y | 23 +- 5 files changed, 851 insertions(+), 834 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index d71a13c3bd..959eb854d6 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -1052,8 +1052,7 @@ static yyconst flex_int16_t yy_chk[1352] = if (condition) { \ return token; \ } else { \ - yylval->string = strdup(yytext); \ - return IDENTIFIER; \ + return handle_ident(yyextra, yytext, yylval); \ } \ } while (0) @@ -1077,8 +1076,7 @@ static yyconst flex_int16_t yy_chk[1352] = yylval->temp_inst.Opcode = OPCODE_ ## opcode; \ return token; \ } else { \ - yylval->string = strdup(yytext); \ - return IDENTIFIER; \ + return handle_ident(yyextra, yytext, yylval); \ } \ } while (0) @@ -1127,6 +1125,15 @@ swiz_from_char(char c) return 0; } +static int +handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval) +{ + lval->string = strdup(text); + + return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL) + ? IDENTIFIER : USED_IDENTIFIER; +} + #define YY_USER_ACTION \ do { \ yylloc->first_column = yylloc->last_column; \ @@ -1140,7 +1147,7 @@ swiz_from_char(char c) } while(0); #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1144 "lex.yy.c" +#line 1151 "lex.yy.c" #define INITIAL 0 @@ -1386,10 +1393,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 143 "program_lexer.l" +#line 150 "program_lexer.l" -#line 1393 "lex.yy.c" +#line 1400 "lex.yy.c" yylval = yylval_param; @@ -1478,17 +1485,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 145 "program_lexer.l" +#line 152 "program_lexer.l" { return ARBvp_10; } YY_BREAK case 2: YY_RULE_SETUP -#line 146 "program_lexer.l" +#line 153 "program_lexer.l" { return ARBfp_10; } YY_BREAK case 3: YY_RULE_SETUP -#line 147 "program_lexer.l" +#line 154 "program_lexer.l" { yylval->integer = at_address; return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1496,685 +1503,682 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 151 "program_lexer.l" +#line 158 "program_lexer.l" { return ALIAS; } YY_BREAK case 5: YY_RULE_SETUP -#line 152 "program_lexer.l" +#line 159 "program_lexer.l" { return ATTRIB; } YY_BREAK case 6: YY_RULE_SETUP -#line 153 "program_lexer.l" +#line 160 "program_lexer.l" { return END; } YY_BREAK case 7: YY_RULE_SETUP -#line 154 "program_lexer.l" +#line 161 "program_lexer.l" { return OPTION; } YY_BREAK case 8: YY_RULE_SETUP -#line 155 "program_lexer.l" +#line 162 "program_lexer.l" { return OUTPUT; } YY_BREAK case 9: YY_RULE_SETUP -#line 156 "program_lexer.l" +#line 163 "program_lexer.l" { return PARAM; } YY_BREAK case 10: YY_RULE_SETUP -#line 157 "program_lexer.l" +#line 164 "program_lexer.l" { yylval->integer = at_temp; return TEMP; } YY_BREAK case 11: YY_RULE_SETUP -#line 159 "program_lexer.l" +#line 166 "program_lexer.l" { return_opcode( 1, VECTOR_OP, ABS, 3); } YY_BREAK case 12: YY_RULE_SETUP -#line 160 "program_lexer.l" +#line 167 "program_lexer.l" { return_opcode( 1, BIN_OP, ADD, 3); } YY_BREAK case 13: YY_RULE_SETUP -#line 161 "program_lexer.l" +#line 168 "program_lexer.l" { return_opcode(require_ARB_vp, ARL, ARL, 3); } YY_BREAK case 14: YY_RULE_SETUP -#line 163 "program_lexer.l" +#line 170 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); } YY_BREAK case 15: YY_RULE_SETUP -#line 164 "program_lexer.l" +#line 171 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); } YY_BREAK case 16: YY_RULE_SETUP -#line 166 "program_lexer.l" +#line 173 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, DDX, 3); } YY_BREAK case 17: YY_RULE_SETUP -#line 167 "program_lexer.l" +#line 174 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, DDY, 3); } YY_BREAK case 18: YY_RULE_SETUP -#line 168 "program_lexer.l" +#line 175 "program_lexer.l" { return_opcode( 1, BIN_OP, DP3, 3); } YY_BREAK case 19: YY_RULE_SETUP -#line 169 "program_lexer.l" +#line 176 "program_lexer.l" { return_opcode( 1, BIN_OP, DP4, 3); } YY_BREAK case 20: YY_RULE_SETUP -#line 170 "program_lexer.l" +#line 177 "program_lexer.l" { return_opcode( 1, BIN_OP, DPH, 3); } YY_BREAK case 21: YY_RULE_SETUP -#line 171 "program_lexer.l" +#line 178 "program_lexer.l" { return_opcode( 1, BIN_OP, DST, 3); } YY_BREAK case 22: YY_RULE_SETUP -#line 173 "program_lexer.l" +#line 180 "program_lexer.l" { return_opcode( 1, SCALAR_OP, EX2, 3); } YY_BREAK case 23: YY_RULE_SETUP -#line 174 "program_lexer.l" +#line 181 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); } YY_BREAK case 24: YY_RULE_SETUP -#line 176 "program_lexer.l" +#line 183 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FLR, 3); } YY_BREAK case 25: YY_RULE_SETUP -#line 177 "program_lexer.l" +#line 184 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FRC, 3); } YY_BREAK case 26: YY_RULE_SETUP -#line 179 "program_lexer.l" +#line 186 "program_lexer.l" { return_opcode(require_ARB_fp, KIL, KIL, 3); } YY_BREAK case 27: YY_RULE_SETUP -#line 181 "program_lexer.l" +#line 188 "program_lexer.l" { return_opcode( 1, VECTOR_OP, LIT, 3); } YY_BREAK case 28: YY_RULE_SETUP -#line 182 "program_lexer.l" +#line 189 "program_lexer.l" { return_opcode( 1, SCALAR_OP, LG2, 3); } YY_BREAK case 29: YY_RULE_SETUP -#line 183 "program_lexer.l" +#line 190 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); } YY_BREAK case 30: YY_RULE_SETUP -#line 184 "program_lexer.l" +#line 191 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); } YY_BREAK case 31: YY_RULE_SETUP -#line 186 "program_lexer.l" +#line 193 "program_lexer.l" { return_opcode( 1, TRI_OP, MAD, 3); } YY_BREAK case 32: YY_RULE_SETUP -#line 187 "program_lexer.l" +#line 194 "program_lexer.l" { return_opcode( 1, BIN_OP, MAX, 3); } YY_BREAK case 33: YY_RULE_SETUP -#line 188 "program_lexer.l" +#line 195 "program_lexer.l" { return_opcode( 1, BIN_OP, MIN, 3); } YY_BREAK case 34: YY_RULE_SETUP -#line 189 "program_lexer.l" +#line 196 "program_lexer.l" { return_opcode( 1, VECTOR_OP, MOV, 3); } YY_BREAK case 35: YY_RULE_SETUP -#line 190 "program_lexer.l" +#line 197 "program_lexer.l" { return_opcode( 1, BIN_OP, MUL, 3); } YY_BREAK case 36: YY_RULE_SETUP -#line 192 "program_lexer.l" +#line 199 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, PK2H, 4); } YY_BREAK case 37: YY_RULE_SETUP -#line 193 "program_lexer.l" +#line 200 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, PK2US, 5); } YY_BREAK case 38: YY_RULE_SETUP -#line 194 "program_lexer.l" +#line 201 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, PK4B, 4); } YY_BREAK case 39: YY_RULE_SETUP -#line 195 "program_lexer.l" +#line 202 "program_lexer.l" { return_opcode(require_NV_fp, VECTOR_OP, PK4UB, 5); } YY_BREAK case 40: YY_RULE_SETUP -#line 196 "program_lexer.l" +#line 203 "program_lexer.l" { return_opcode( 1, BINSC_OP, POW, 3); } YY_BREAK case 41: YY_RULE_SETUP -#line 198 "program_lexer.l" +#line 205 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RCP, 3); } YY_BREAK case 42: YY_RULE_SETUP -#line 199 "program_lexer.l" +#line 206 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, RFL, 3); } YY_BREAK case 43: YY_RULE_SETUP -#line 200 "program_lexer.l" +#line 207 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RSQ, 3); } YY_BREAK case 44: YY_RULE_SETUP -#line 202 "program_lexer.l" +#line 209 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); } YY_BREAK case 45: YY_RULE_SETUP -#line 203 "program_lexer.l" +#line 210 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, SEQ, 3); } YY_BREAK case 46: YY_RULE_SETUP -#line 204 "program_lexer.l" +#line 211 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, SFL, 3); } YY_BREAK case 47: YY_RULE_SETUP -#line 205 "program_lexer.l" +#line 212 "program_lexer.l" { return_opcode( 1, BIN_OP, SGE, 3); } YY_BREAK case 48: YY_RULE_SETUP -#line 206 "program_lexer.l" +#line 213 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, SGT, 3); } YY_BREAK case 49: YY_RULE_SETUP -#line 207 "program_lexer.l" +#line 214 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); } YY_BREAK case 50: YY_RULE_SETUP -#line 208 "program_lexer.l" +#line 215 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, SLE, 3); } YY_BREAK case 51: YY_RULE_SETUP -#line 209 "program_lexer.l" +#line 216 "program_lexer.l" { return_opcode( 1, BIN_OP, SLT, 3); } YY_BREAK case 52: YY_RULE_SETUP -#line 210 "program_lexer.l" +#line 217 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, SNE, 3); } YY_BREAK case 53: YY_RULE_SETUP -#line 211 "program_lexer.l" +#line 218 "program_lexer.l" { return_opcode(require_NV_fp, BIN_OP, STR, 3); } YY_BREAK case 54: YY_RULE_SETUP -#line 212 "program_lexer.l" +#line 219 "program_lexer.l" { return_opcode( 1, BIN_OP, SUB, 3); } YY_BREAK case 55: YY_RULE_SETUP -#line 213 "program_lexer.l" +#line 220 "program_lexer.l" { return_opcode( 1, SWZ, SWZ, 3); } YY_BREAK case 56: YY_RULE_SETUP -#line 215 "program_lexer.l" +#line 222 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); } YY_BREAK case 57: YY_RULE_SETUP -#line 216 "program_lexer.l" +#line 223 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); } YY_BREAK case 58: YY_RULE_SETUP -#line 217 "program_lexer.l" +#line 224 "program_lexer.l" { return_opcode(require_NV_fp, TXD_OP, TXD, 3); } YY_BREAK case 59: YY_RULE_SETUP -#line 218 "program_lexer.l" +#line 225 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); } YY_BREAK case 60: YY_RULE_SETUP -#line 220 "program_lexer.l" +#line 227 "program_lexer.l" { return_opcode(require_NV_fp, SCALAR_OP, UP2H, 4); } YY_BREAK case 61: YY_RULE_SETUP -#line 221 "program_lexer.l" +#line 228 "program_lexer.l" { return_opcode(require_NV_fp, SCALAR_OP, UP2US, 5); } YY_BREAK case 62: YY_RULE_SETUP -#line 223 "program_lexer.l" +#line 230 "program_lexer.l" { return_opcode(require_NV_fp, TRI_OP, X2D, 3); } YY_BREAK case 63: YY_RULE_SETUP -#line 224 "program_lexer.l" +#line 231 "program_lexer.l" { return_opcode( 1, BIN_OP, XPD, 3); } YY_BREAK case 64: YY_RULE_SETUP -#line 226 "program_lexer.l" +#line 233 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } YY_BREAK case 65: YY_RULE_SETUP -#line 227 "program_lexer.l" +#line 234 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } YY_BREAK case 66: YY_RULE_SETUP -#line 228 "program_lexer.l" +#line 235 "program_lexer.l" { return PROGRAM; } YY_BREAK case 67: YY_RULE_SETUP -#line 229 "program_lexer.l" +#line 236 "program_lexer.l" { return STATE; } YY_BREAK case 68: YY_RULE_SETUP -#line 230 "program_lexer.l" +#line 237 "program_lexer.l" { return RESULT; } YY_BREAK case 69: YY_RULE_SETUP -#line 232 "program_lexer.l" +#line 239 "program_lexer.l" { return AMBIENT; } YY_BREAK case 70: YY_RULE_SETUP -#line 233 "program_lexer.l" +#line 240 "program_lexer.l" { return ATTENUATION; } YY_BREAK case 71: YY_RULE_SETUP -#line 234 "program_lexer.l" +#line 241 "program_lexer.l" { return BACK; } YY_BREAK case 72: YY_RULE_SETUP -#line 235 "program_lexer.l" +#line 242 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, CLIP); } YY_BREAK case 73: YY_RULE_SETUP -#line 236 "program_lexer.l" +#line 243 "program_lexer.l" { return COLOR; } YY_BREAK case 74: YY_RULE_SETUP -#line 237 "program_lexer.l" +#line 244 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, DEPTH); } YY_BREAK case 75: YY_RULE_SETUP -#line 238 "program_lexer.l" +#line 245 "program_lexer.l" { return DIFFUSE; } YY_BREAK case 76: YY_RULE_SETUP -#line 239 "program_lexer.l" +#line 246 "program_lexer.l" { return DIRECTION; } YY_BREAK case 77: YY_RULE_SETUP -#line 240 "program_lexer.l" +#line 247 "program_lexer.l" { return EMISSION; } YY_BREAK case 78: YY_RULE_SETUP -#line 241 "program_lexer.l" +#line 248 "program_lexer.l" { return ENV; } YY_BREAK case 79: YY_RULE_SETUP -#line 242 "program_lexer.l" +#line 249 "program_lexer.l" { return EYE; } YY_BREAK case 80: YY_RULE_SETUP -#line 243 "program_lexer.l" +#line 250 "program_lexer.l" { return FOGCOORD; } YY_BREAK case 81: YY_RULE_SETUP -#line 244 "program_lexer.l" +#line 251 "program_lexer.l" { return FOG; } YY_BREAK case 82: YY_RULE_SETUP -#line 245 "program_lexer.l" +#line 252 "program_lexer.l" { return FRONT; } YY_BREAK case 83: YY_RULE_SETUP -#line 246 "program_lexer.l" +#line 253 "program_lexer.l" { return HALF; } YY_BREAK case 84: YY_RULE_SETUP -#line 247 "program_lexer.l" +#line 254 "program_lexer.l" { return INVERSE; } YY_BREAK case 85: YY_RULE_SETUP -#line 248 "program_lexer.l" +#line 255 "program_lexer.l" { return INVTRANS; } YY_BREAK case 86: YY_RULE_SETUP -#line 249 "program_lexer.l" +#line 256 "program_lexer.l" { return LIGHT; } YY_BREAK case 87: YY_RULE_SETUP -#line 250 "program_lexer.l" +#line 257 "program_lexer.l" { return LIGHTMODEL; } YY_BREAK case 88: YY_RULE_SETUP -#line 251 "program_lexer.l" +#line 258 "program_lexer.l" { return LIGHTPROD; } YY_BREAK case 89: YY_RULE_SETUP -#line 252 "program_lexer.l" +#line 259 "program_lexer.l" { return LOCAL; } YY_BREAK case 90: YY_RULE_SETUP -#line 253 "program_lexer.l" +#line 260 "program_lexer.l" { return MATERIAL; } YY_BREAK case 91: YY_RULE_SETUP -#line 254 "program_lexer.l" +#line 261 "program_lexer.l" { return MAT_PROGRAM; } YY_BREAK case 92: YY_RULE_SETUP -#line 255 "program_lexer.l" +#line 262 "program_lexer.l" { return MATRIX; } YY_BREAK case 93: YY_RULE_SETUP -#line 256 "program_lexer.l" +#line 263 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } YY_BREAK case 94: YY_RULE_SETUP -#line 257 "program_lexer.l" +#line 264 "program_lexer.l" { return MODELVIEW; } YY_BREAK case 95: YY_RULE_SETUP -#line 258 "program_lexer.l" +#line 265 "program_lexer.l" { return MVP; } YY_BREAK case 96: YY_RULE_SETUP -#line 259 "program_lexer.l" +#line 266 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, NORMAL); } YY_BREAK case 97: YY_RULE_SETUP -#line 260 "program_lexer.l" +#line 267 "program_lexer.l" { return OBJECT; } YY_BREAK case 98: YY_RULE_SETUP -#line 261 "program_lexer.l" +#line 268 "program_lexer.l" { return PALETTE; } YY_BREAK case 99: YY_RULE_SETUP -#line 262 "program_lexer.l" +#line 269 "program_lexer.l" { return PARAMS; } YY_BREAK case 100: YY_RULE_SETUP -#line 263 "program_lexer.l" +#line 270 "program_lexer.l" { return PLANE; } YY_BREAK case 101: YY_RULE_SETUP -#line 264 "program_lexer.l" +#line 271 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINT); } YY_BREAK case 102: YY_RULE_SETUP -#line 265 "program_lexer.l" +#line 272 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINTSIZE); } YY_BREAK case 103: YY_RULE_SETUP -#line 266 "program_lexer.l" +#line 273 "program_lexer.l" { return POSITION; } YY_BREAK case 104: YY_RULE_SETUP -#line 267 "program_lexer.l" +#line 274 "program_lexer.l" { return PRIMARY; } YY_BREAK case 105: YY_RULE_SETUP -#line 268 "program_lexer.l" +#line 275 "program_lexer.l" { return PROJECTION; } YY_BREAK case 106: YY_RULE_SETUP -#line 269 "program_lexer.l" +#line 276 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, RANGE); } YY_BREAK case 107: YY_RULE_SETUP -#line 270 "program_lexer.l" +#line 277 "program_lexer.l" { return ROW; } YY_BREAK case 108: YY_RULE_SETUP -#line 271 "program_lexer.l" +#line 278 "program_lexer.l" { return SCENECOLOR; } YY_BREAK case 109: YY_RULE_SETUP -#line 272 "program_lexer.l" +#line 279 "program_lexer.l" { return SECONDARY; } YY_BREAK case 110: YY_RULE_SETUP -#line 273 "program_lexer.l" +#line 280 "program_lexer.l" { return SHININESS; } YY_BREAK case 111: YY_RULE_SETUP -#line 274 "program_lexer.l" +#line 281 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, SIZE); } YY_BREAK case 112: YY_RULE_SETUP -#line 275 "program_lexer.l" +#line 282 "program_lexer.l" { return SPECULAR; } YY_BREAK case 113: YY_RULE_SETUP -#line 276 "program_lexer.l" +#line 283 "program_lexer.l" { return SPOT; } YY_BREAK case 114: YY_RULE_SETUP -#line 277 "program_lexer.l" +#line 284 "program_lexer.l" { return TEXCOORD; } YY_BREAK case 115: YY_RULE_SETUP -#line 278 "program_lexer.l" +#line 285 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, TEXENV); } YY_BREAK case 116: YY_RULE_SETUP -#line 279 "program_lexer.l" +#line 286 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN); } YY_BREAK case 117: YY_RULE_SETUP -#line 280 "program_lexer.l" +#line 287 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); } YY_BREAK case 118: YY_RULE_SETUP -#line 281 "program_lexer.l" +#line 288 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_S); } YY_BREAK case 119: YY_RULE_SETUP -#line 282 "program_lexer.l" +#line 289 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_T); } YY_BREAK case 120: YY_RULE_SETUP -#line 283 "program_lexer.l" +#line 290 "program_lexer.l" { return TEXTURE; } YY_BREAK case 121: YY_RULE_SETUP -#line 284 "program_lexer.l" +#line 291 "program_lexer.l" { return TRANSPOSE; } YY_BREAK case 122: YY_RULE_SETUP -#line 285 "program_lexer.l" +#line 292 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, VTXATTRIB); } YY_BREAK case 123: YY_RULE_SETUP -#line 286 "program_lexer.l" +#line 293 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, WEIGHT); } YY_BREAK case 124: YY_RULE_SETUP -#line 288 "program_lexer.l" +#line 295 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } YY_BREAK case 125: YY_RULE_SETUP -#line 289 "program_lexer.l" +#line 296 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } YY_BREAK case 126: YY_RULE_SETUP -#line 290 "program_lexer.l" +#line 297 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); } YY_BREAK case 127: YY_RULE_SETUP -#line 291 "program_lexer.l" +#line 298 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); } YY_BREAK case 128: YY_RULE_SETUP -#line 292 "program_lexer.l" +#line 299 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); } YY_BREAK case 129: YY_RULE_SETUP -#line 293 "program_lexer.l" +#line 300 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); } YY_BREAK case 130: YY_RULE_SETUP -#line 294 "program_lexer.l" +#line 301 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); } YY_BREAK case 131: YY_RULE_SETUP -#line 295 "program_lexer.l" +#line 302 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); } YY_BREAK case 132: YY_RULE_SETUP -#line 296 "program_lexer.l" +#line 303 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); } YY_BREAK case 133: YY_RULE_SETUP -#line 297 "program_lexer.l" +#line 304 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); } YY_BREAK case 134: YY_RULE_SETUP -#line 298 "program_lexer.l" +#line 305 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); } YY_BREAK case 135: YY_RULE_SETUP -#line 299 "program_lexer.l" +#line 306 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } YY_BREAK case 136: YY_RULE_SETUP -#line 300 "program_lexer.l" +#line 307 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } YY_BREAK case 137: YY_RULE_SETUP -#line 302 "program_lexer.l" -{ - yylval->string = strdup(yytext); - return IDENTIFIER; -} +#line 309 "program_lexer.l" +{ return handle_ident(yyextra, yytext, yylval); } YY_BREAK case 138: YY_RULE_SETUP -#line 307 "program_lexer.l" +#line 311 "program_lexer.l" { return DOT_DOT; } YY_BREAK case 139: YY_RULE_SETUP -#line 309 "program_lexer.l" +#line 313 "program_lexer.l" { yylval->integer = strtol(yytext, NULL, 10); return INTEGER; @@ -2182,7 +2186,7 @@ YY_RULE_SETUP YY_BREAK case 140: YY_RULE_SETUP -#line 313 "program_lexer.l" +#line 317 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; @@ -2194,7 +2198,7 @@ case 141: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 317 "program_lexer.l" +#line 321 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; @@ -2202,7 +2206,7 @@ YY_RULE_SETUP YY_BREAK case 142: YY_RULE_SETUP -#line 321 "program_lexer.l" +#line 325 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; @@ -2210,7 +2214,7 @@ YY_RULE_SETUP YY_BREAK case 143: YY_RULE_SETUP -#line 325 "program_lexer.l" +#line 329 "program_lexer.l" { yylval->real = strtod(yytext, NULL); return REAL; @@ -2218,7 +2222,7 @@ YY_RULE_SETUP YY_BREAK case 144: YY_RULE_SETUP -#line 330 "program_lexer.l" +#line 334 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2227,7 +2231,7 @@ YY_RULE_SETUP YY_BREAK case 145: YY_RULE_SETUP -#line 336 "program_lexer.l" +#line 340 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2237,7 +2241,7 @@ YY_RULE_SETUP YY_BREAK case 146: YY_RULE_SETUP -#line 342 "program_lexer.l" +#line 346 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2246,7 +2250,7 @@ YY_RULE_SETUP YY_BREAK case 147: YY_RULE_SETUP -#line 347 "program_lexer.l" +#line 351 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2255,7 +2259,7 @@ YY_RULE_SETUP YY_BREAK case 148: YY_RULE_SETUP -#line 353 "program_lexer.l" +#line 357 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2265,7 +2269,7 @@ YY_RULE_SETUP YY_BREAK case 149: YY_RULE_SETUP -#line 359 "program_lexer.l" +#line 363 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2275,7 +2279,7 @@ YY_RULE_SETUP YY_BREAK case 150: YY_RULE_SETUP -#line 365 "program_lexer.l" +#line 369 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2284,7 +2288,7 @@ YY_RULE_SETUP YY_BREAK case 151: YY_RULE_SETUP -#line 371 "program_lexer.l" +#line 375 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2294,7 +2298,7 @@ YY_RULE_SETUP YY_BREAK case 152: YY_RULE_SETUP -#line 378 "program_lexer.l" +#line 382 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2306,7 +2310,7 @@ YY_RULE_SETUP YY_BREAK case 153: YY_RULE_SETUP -#line 387 "program_lexer.l" +#line 391 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2315,7 +2319,7 @@ YY_RULE_SETUP YY_BREAK case 154: YY_RULE_SETUP -#line 393 "program_lexer.l" +#line 397 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2325,7 +2329,7 @@ YY_RULE_SETUP YY_BREAK case 155: YY_RULE_SETUP -#line 399 "program_lexer.l" +#line 403 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2334,7 +2338,7 @@ YY_RULE_SETUP YY_BREAK case 156: YY_RULE_SETUP -#line 404 "program_lexer.l" +#line 408 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2343,7 +2347,7 @@ YY_RULE_SETUP YY_BREAK case 157: YY_RULE_SETUP -#line 410 "program_lexer.l" +#line 414 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2353,7 +2357,7 @@ YY_RULE_SETUP YY_BREAK case 158: YY_RULE_SETUP -#line 416 "program_lexer.l" +#line 420 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2363,7 +2367,7 @@ YY_RULE_SETUP YY_BREAK case 159: YY_RULE_SETUP -#line 422 "program_lexer.l" +#line 426 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2372,7 +2376,7 @@ YY_RULE_SETUP YY_BREAK case 160: YY_RULE_SETUP -#line 428 "program_lexer.l" +#line 432 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2382,7 +2386,7 @@ YY_RULE_SETUP YY_BREAK case 161: YY_RULE_SETUP -#line 436 "program_lexer.l" +#line 440 "program_lexer.l" { if (require_ARB_vp) { return TEXGEN_R; @@ -2396,7 +2400,7 @@ YY_RULE_SETUP YY_BREAK case 162: YY_RULE_SETUP -#line 447 "program_lexer.l" +#line 451 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2408,13 +2412,13 @@ YY_RULE_SETUP YY_BREAK case 163: YY_RULE_SETUP -#line 456 "program_lexer.l" +#line 460 "program_lexer.l" { return DOT; } YY_BREAK case 164: /* rule 164 can match eol */ YY_RULE_SETUP -#line 458 "program_lexer.l" +#line 462 "program_lexer.l" { yylloc->first_line++; yylloc->first_column = 1; @@ -2425,7 +2429,7 @@ YY_RULE_SETUP YY_BREAK case 165: YY_RULE_SETUP -#line 465 "program_lexer.l" +#line 469 "program_lexer.l" /* eat whitespace */ ; YY_BREAK case 166: @@ -2433,20 +2437,20 @@ case 166: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 466 "program_lexer.l" +#line 470 "program_lexer.l" /* eat comments */ ; YY_BREAK case 167: YY_RULE_SETUP -#line 467 "program_lexer.l" +#line 471 "program_lexer.l" { return yytext[0]; } YY_BREAK case 168: YY_RULE_SETUP -#line 468 "program_lexer.l" +#line 472 "program_lexer.l" ECHO; YY_BREAK -#line 2450 "lex.yy.c" +#line 2454 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -3621,7 +3625,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 468 "program_lexer.l" +#line 472 "program_lexer.l" diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index d7493f42fa..9e68c34ac0 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -39,8 +39,7 @@ if (condition) { \ return token; \ } else { \ - yylval->string = strdup(yytext); \ - return IDENTIFIER; \ + return handle_ident(yyextra, yytext, yylval); \ } \ } while (0) @@ -64,8 +63,7 @@ yylval->temp_inst.Opcode = OPCODE_ ## opcode; \ return token; \ } else { \ - yylval->string = strdup(yytext); \ - return IDENTIFIER; \ + return handle_ident(yyextra, yytext, yylval); \ } \ } while (0) @@ -114,6 +112,15 @@ swiz_from_char(char c) return 0; } +static int +handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval) +{ + lval->string = strdup(text); + + return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL) + ? IDENTIFIER : USED_IDENTIFIER; +} + #define YY_USER_ACTION \ do { \ yylloc->first_column = yylloc->last_column; \ @@ -299,10 +306,7 @@ ARRAY2D { return_token_or_IDENTIFIER(require_ARB_fp && require ARRAYSHADOW1D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } ARRAYSHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } -[_a-zA-Z$][_a-zA-Z0-9$]* { - yylval->string = strdup(yytext); - return IDENTIFIER; -} +[_a-zA-Z$][_a-zA-Z0-9$]* { return handle_ident(yyextra, yytext, yylval); } ".." { return DOT_DOT; } diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index e741e9a13b..d37b20ba42 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -303,13 +303,14 @@ static struct asm_instruction *asm_instruction_copy_ctor( VTXATTRIB = 352, WEIGHT = 353, IDENTIFIER = 354, - MASK4 = 355, - MASK3 = 356, - MASK2 = 357, - MASK1 = 358, - SWIZZLE = 359, - DOT_DOT = 360, - DOT = 361 + USED_IDENTIFIER = 355, + MASK4 = 356, + MASK3 = 357, + MASK2 = 358, + MASK1 = 359, + SWIZZLE = 360, + DOT_DOT = 361, + DOT = 362 }; #endif @@ -349,7 +350,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 353 "program_parse.tab.c" +#line 354 "program_parse.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -373,14 +374,14 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 258 "program_parse.y" +#line 259 "program_parse.y" extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner); /* Line 264 of yacc.c */ -#line 384 "program_parse.tab.c" +#line 385 "program_parse.tab.c" #ifdef short # undef short @@ -597,20 +598,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 383 +#define YYLAST 393 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 117 +#define YYNTOKENS 118 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 137 +#define YYNNTS 138 /* YYNRULES -- Number of rules. */ -#define YYNRULES 272 +#define YYNRULES 274 /* YYNRULES -- Number of states. */ -#define YYNSTATES 458 +#define YYNSTATES 460 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 361 +#define YYMAXUTOK 362 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -622,15 +623,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 112, 108, 113, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 2, 107, - 2, 114, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 113, 109, 114, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, + 2, 115, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 110, 2, 111, 2, 2, 2, 2, 2, 2, + 2, 111, 2, 112, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 115, 109, 116, 2, 2, 2, 2, + 2, 2, 2, 116, 110, 117, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -654,7 +655,7 @@ static const yytype_uint8 yytranslate[] = 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106 + 105, 106, 107 }; #if YYDEBUG @@ -689,123 +690,123 @@ static const yytype_uint16 yyprhs[] = 686, 690, 694, 696, 702, 705, 708, 711, 714, 718, 721, 725, 726, 728, 730, 731, 733, 735, 736, 738, 740, 741, 743, 745, 746, 750, 751, 755, 756, 760, - 762, 764, 766 + 762, 764, 766, 771, 773 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 118, 0, -1, 119, 120, 122, 12, -1, 3, -1, - 4, -1, 120, 121, -1, -1, 8, 99, 107, -1, - 122, 123, -1, -1, 124, 107, -1, 162, 107, -1, - 125, -1, 126, -1, 127, -1, 128, -1, 129, -1, - 130, -1, 131, -1, 132, -1, 138, -1, 133, -1, - 134, -1, 135, -1, 19, 143, 108, 139, -1, 18, - 142, 108, 141, -1, 16, 142, 108, 139, -1, 14, - 142, 108, 139, 108, 139, -1, 13, 142, 108, 141, - 108, 141, -1, 17, 142, 108, 141, 108, 141, 108, - 141, -1, 15, 142, 108, 141, 108, 136, 108, 137, - -1, 20, 141, -1, 22, 142, 108, 141, 108, 141, - 108, 141, 108, 136, 108, 137, -1, 83, 248, -1, + 119, 0, -1, 120, 121, 123, 12, -1, 3, -1, + 4, -1, 121, 122, -1, -1, 8, 255, 108, -1, + 123, 124, -1, -1, 125, 108, -1, 163, 108, -1, + 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, + 131, -1, 132, -1, 133, -1, 139, -1, 134, -1, + 135, -1, 136, -1, 19, 144, 109, 140, -1, 18, + 143, 109, 142, -1, 16, 143, 109, 140, -1, 14, + 143, 109, 140, 109, 140, -1, 13, 143, 109, 142, + 109, 142, -1, 17, 143, 109, 142, 109, 142, 109, + 142, -1, 15, 143, 109, 142, 109, 137, 109, 138, + -1, 20, 142, -1, 22, 143, 109, 142, 109, 142, + 109, 142, 109, 137, 109, 138, -1, 83, 249, -1, 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, - 94, -1, 95, -1, 21, 142, 108, 147, 108, 144, - -1, 233, 140, -1, 233, 109, 140, 109, -1, 147, - 159, -1, 230, -1, 233, 147, 160, -1, 233, 109, - 147, 160, 109, -1, 148, 161, -1, 156, 158, -1, - 145, 108, 145, 108, 145, 108, 145, -1, 233, 146, - -1, 23, -1, 99, -1, 99, -1, 164, -1, 149, - 110, 150, 111, -1, 178, -1, 241, -1, 99, -1, - 99, -1, 151, -1, 152, -1, 23, -1, 156, 157, - 153, -1, -1, 112, 154, -1, 113, 155, -1, 23, - -1, 23, -1, 99, -1, 103, -1, 103, -1, 103, - -1, 103, -1, 100, -1, 104, -1, -1, 100, -1, - 101, -1, 102, -1, 103, -1, -1, 163, -1, 170, - -1, 234, -1, 237, -1, 240, -1, 253, -1, 7, - 99, 114, 164, -1, 96, 165, -1, 38, 169, -1, - 60, -1, 98, 167, -1, 53, -1, 29, 246, -1, - 37, -1, 74, 247, -1, 50, 110, 168, 111, -1, - 97, 110, 166, 111, -1, 23, -1, -1, 110, 168, - 111, -1, 23, -1, 60, -1, 29, 246, -1, 37, - -1, 74, 247, -1, 171, -1, 172, -1, 10, 99, - 174, -1, 10, 99, 110, 173, 111, 175, -1, -1, - 23, -1, 114, 177, -1, 114, 115, 176, 116, -1, - 179, -1, 176, 108, 179, -1, 181, -1, 217, -1, - 227, -1, 181, -1, 217, -1, 228, -1, 180, -1, - 218, -1, 227, -1, 181, -1, 73, 205, -1, 73, - 182, -1, 73, 184, -1, 73, 187, -1, 73, 189, - -1, 73, 195, -1, 73, 191, -1, 73, 198, -1, - 73, 200, -1, 73, 202, -1, 73, 204, -1, 73, - 216, -1, 47, 245, 183, -1, 193, -1, 33, -1, - 69, -1, 43, 110, 194, 111, 185, -1, 193, -1, - 60, -1, 26, -1, 72, 186, -1, 40, -1, 32, - -1, 44, 188, -1, 25, -1, 245, 67, -1, 45, - 110, 194, 111, 245, 190, -1, 193, -1, 75, 249, - 192, -1, 29, -1, 25, -1, 31, -1, 71, -1, - 23, -1, 76, 247, 196, 197, -1, 35, -1, 54, + 94, -1, 95, -1, 21, 143, 109, 148, 109, 145, + -1, 234, 141, -1, 234, 110, 141, 110, -1, 148, + 160, -1, 231, -1, 234, 148, 161, -1, 234, 110, + 148, 161, 110, -1, 149, 162, -1, 157, 159, -1, + 146, 109, 146, 109, 146, 109, 146, -1, 234, 147, + -1, 23, -1, 255, -1, 100, -1, 165, -1, 150, + 111, 151, 112, -1, 179, -1, 242, -1, 100, -1, + 100, -1, 152, -1, 153, -1, 23, -1, 157, 158, + 154, -1, -1, 113, 155, -1, 114, 156, -1, 23, + -1, 23, -1, 100, -1, 104, -1, 104, -1, 104, + -1, 104, -1, 101, -1, 105, -1, -1, 101, -1, + 102, -1, 103, -1, 104, -1, -1, 164, -1, 171, + -1, 235, -1, 238, -1, 241, -1, 254, -1, 7, + 99, 115, 165, -1, 96, 166, -1, 38, 170, -1, + 60, -1, 98, 168, -1, 53, -1, 29, 247, -1, + 37, -1, 74, 248, -1, 50, 111, 169, 112, -1, + 97, 111, 167, 112, -1, 23, -1, -1, 111, 169, + 112, -1, 23, -1, 60, -1, 29, 247, -1, 37, + -1, 74, 248, -1, 172, -1, 173, -1, 10, 99, + 175, -1, 10, 99, 111, 174, 112, 176, -1, -1, + 23, -1, 115, 178, -1, 115, 116, 177, 117, -1, + 180, -1, 177, 109, 180, -1, 182, -1, 218, -1, + 228, -1, 182, -1, 218, -1, 229, -1, 181, -1, + 219, -1, 228, -1, 182, -1, 73, 206, -1, 73, + 183, -1, 73, 185, -1, 73, 188, -1, 73, 190, + -1, 73, 196, -1, 73, 192, -1, 73, 199, -1, + 73, 201, -1, 73, 203, -1, 73, 205, -1, 73, + 217, -1, 47, 246, 184, -1, 194, -1, 33, -1, + 69, -1, 43, 111, 195, 112, 186, -1, 194, -1, + 60, -1, 26, -1, 72, 187, -1, 40, -1, 32, + -1, 44, 189, -1, 25, -1, 246, 67, -1, 45, + 111, 195, 112, 246, 191, -1, 194, -1, 75, 250, + 193, -1, 29, -1, 25, -1, 31, -1, 71, -1, + 23, -1, 76, 248, 197, 198, -1, 35, -1, 54, -1, 79, -1, 80, -1, 78, -1, 77, -1, 36, - 199, -1, 29, -1, 56, -1, 28, 110, 201, 111, - 57, -1, 23, -1, 58, 203, -1, 70, -1, 26, - -1, 207, 66, 110, 210, 111, -1, 207, 206, -1, - -1, 66, 110, 210, 105, 210, 111, -1, 49, 211, - 208, -1, -1, 209, -1, 41, -1, 82, -1, 42, - -1, 23, -1, 51, 212, -1, 63, -1, 52, -1, - 81, 247, -1, 55, 110, 214, 111, -1, 48, 110, - 215, 111, -1, -1, 213, -1, 23, -1, 23, -1, - 23, -1, 30, 64, -1, 221, -1, 224, -1, 219, - -1, 222, -1, 62, 34, 110, 220, 111, -1, 225, - -1, 225, 105, 225, -1, 62, 34, 110, 225, 111, - -1, 62, 46, 110, 223, 111, -1, 226, -1, 226, - 105, 226, -1, 62, 46, 110, 226, 111, -1, 23, - -1, 23, -1, 229, -1, 231, -1, 230, -1, 231, - -1, 232, -1, 24, -1, 23, -1, 115, 232, 116, - -1, 115, 232, 108, 232, 116, -1, 115, 232, 108, - 232, 108, 232, 116, -1, 115, 232, 108, 232, 108, - 232, 108, 232, 116, -1, 233, 24, -1, 233, 23, - -1, 112, -1, 113, -1, -1, -1, 236, 11, 235, - 239, -1, 99, -1, -1, -1, 5, 238, 239, -1, - 239, 108, 99, -1, 99, -1, 236, 9, 99, 114, - 241, -1, 65, 60, -1, 65, 37, -1, 65, 242, - -1, 65, 59, -1, 65, 74, 247, -1, 65, 30, - -1, 29, 243, 244, -1, -1, 39, -1, 27, -1, + 200, -1, 29, -1, 56, -1, 28, 111, 202, 112, + 57, -1, 23, -1, 58, 204, -1, 70, -1, 26, + -1, 208, 66, 111, 211, 112, -1, 208, 207, -1, + -1, 66, 111, 211, 106, 211, 112, -1, 49, 212, + 209, -1, -1, 210, -1, 41, -1, 82, -1, 42, + -1, 23, -1, 51, 213, -1, 63, -1, 52, -1, + 81, 248, -1, 55, 111, 215, 112, -1, 48, 111, + 216, 112, -1, -1, 214, -1, 23, -1, 23, -1, + 23, -1, 30, 64, -1, 222, -1, 225, -1, 220, + -1, 223, -1, 62, 34, 111, 221, 112, -1, 226, + -1, 226, 106, 226, -1, 62, 34, 111, 226, 112, + -1, 62, 46, 111, 224, 112, -1, 227, -1, 227, + 106, 227, -1, 62, 46, 111, 227, 112, -1, 23, + -1, 23, -1, 230, -1, 232, -1, 231, -1, 232, + -1, 233, -1, 24, -1, 23, -1, 116, 233, 117, + -1, 116, 233, 109, 233, 117, -1, 116, 233, 109, + 233, 109, 233, 117, -1, 116, 233, 109, 233, 109, + 233, 109, 233, 117, -1, 234, 24, -1, 234, 23, + -1, 113, -1, 114, -1, -1, -1, 237, 11, 236, + 240, -1, 255, -1, -1, -1, 5, 239, 240, -1, + 240, 109, 99, -1, 99, -1, 237, 9, 99, 115, + 242, -1, 65, 60, -1, 65, 37, -1, 65, 243, + -1, 65, 59, -1, 65, 74, 248, -1, 65, 30, + -1, 29, 244, 245, -1, -1, 39, -1, 27, -1, -1, 61, -1, 68, -1, -1, 39, -1, 27, -1, - -1, 61, -1, 68, -1, -1, 110, 250, 111, -1, - -1, 110, 251, 111, -1, -1, 110, 252, 111, -1, - 23, -1, 23, -1, 23, -1, 6, 99, 114, 99, - -1 + -1, 61, -1, 68, -1, -1, 111, 251, 112, -1, + -1, 111, 252, 112, -1, -1, 111, 253, 112, -1, + 23, -1, 23, -1, 23, -1, 6, 99, 115, 100, + -1, 99, -1, 100, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 265, 265, 268, 276, 288, 289, 292, 314, 315, - 318, 333, 336, 341, 348, 349, 350, 351, 352, 353, - 354, 357, 358, 359, 362, 368, 374, 380, 387, 393, - 400, 444, 451, 495, 501, 502, 503, 504, 505, 506, - 507, 508, 509, 510, 511, 512, 515, 527, 535, 552, - 559, 578, 589, 609, 631, 640, 673, 680, 695, 745, - 787, 798, 819, 829, 835, 866, 883, 883, 885, 892, - 904, 905, 906, 909, 921, 933, 951, 962, 974, 976, - 977, 978, 979, 982, 982, 982, 982, 983, 986, 987, - 988, 989, 990, 991, 994, 1012, 1016, 1022, 1026, 1030, - 1034, 1043, 1052, 1056, 1061, 1067, 1078, 1078, 1079, 1081, - 1085, 1089, 1093, 1099, 1099, 1101, 1117, 1140, 1143, 1154, - 1160, 1166, 1167, 1174, 1180, 1186, 1194, 1200, 1206, 1214, - 1220, 1226, 1234, 1235, 1238, 1239, 1240, 1241, 1242, 1243, - 1244, 1245, 1246, 1247, 1248, 1251, 1260, 1264, 1268, 1274, - 1283, 1287, 1291, 1300, 1304, 1310, 1316, 1323, 1328, 1336, - 1346, 1348, 1356, 1362, 1366, 1370, 1376, 1387, 1396, 1400, - 1405, 1409, 1413, 1417, 1423, 1430, 1434, 1440, 1448, 1459, - 1466, 1470, 1476, 1486, 1497, 1501, 1519, 1528, 1531, 1537, - 1541, 1545, 1551, 1562, 1567, 1572, 1577, 1582, 1587, 1595, - 1598, 1603, 1616, 1624, 1635, 1643, 1643, 1645, 1645, 1647, - 1657, 1662, 1669, 1679, 1688, 1693, 1700, 1710, 1720, 1732, - 1732, 1733, 1733, 1735, 1745, 1753, 1763, 1771, 1779, 1788, - 1799, 1803, 1809, 1810, 1811, 1814, 1814, 1817, 1852, 1856, - 1856, 1859, 1865, 1873, 1886, 1895, 1904, 1908, 1917, 1926, - 1937, 1944, 1949, 1958, 1970, 1973, 1982, 1993, 1994, 1995, - 1998, 1999, 2000, 2003, 2004, 2007, 2008, 2011, 2012, 2015, - 2026, 2037, 2048 + 0, 266, 266, 269, 277, 289, 290, 293, 315, 316, + 319, 334, 337, 342, 349, 350, 351, 352, 353, 354, + 355, 358, 359, 360, 363, 369, 375, 381, 388, 394, + 401, 445, 452, 496, 502, 503, 504, 505, 506, 507, + 508, 509, 510, 511, 512, 513, 516, 528, 536, 553, + 560, 579, 590, 610, 632, 641, 674, 681, 696, 746, + 788, 799, 820, 830, 836, 867, 884, 884, 886, 893, + 905, 906, 907, 910, 922, 934, 952, 963, 975, 977, + 978, 979, 980, 983, 983, 983, 983, 984, 987, 988, + 989, 990, 991, 992, 995, 1013, 1017, 1023, 1027, 1031, + 1035, 1044, 1053, 1057, 1062, 1068, 1079, 1079, 1080, 1082, + 1086, 1090, 1094, 1100, 1100, 1102, 1118, 1141, 1144, 1155, + 1161, 1167, 1168, 1175, 1181, 1187, 1195, 1201, 1207, 1215, + 1221, 1227, 1235, 1236, 1239, 1240, 1241, 1242, 1243, 1244, + 1245, 1246, 1247, 1248, 1249, 1252, 1261, 1265, 1269, 1275, + 1284, 1288, 1292, 1301, 1305, 1311, 1317, 1324, 1329, 1337, + 1347, 1349, 1357, 1363, 1367, 1371, 1377, 1388, 1397, 1401, + 1406, 1410, 1414, 1418, 1424, 1431, 1435, 1441, 1449, 1460, + 1467, 1471, 1477, 1487, 1498, 1502, 1520, 1529, 1532, 1538, + 1542, 1546, 1552, 1563, 1568, 1573, 1578, 1583, 1588, 1596, + 1599, 1604, 1617, 1625, 1636, 1644, 1644, 1646, 1646, 1648, + 1658, 1663, 1670, 1680, 1689, 1694, 1701, 1711, 1721, 1733, + 1733, 1734, 1734, 1736, 1746, 1754, 1764, 1772, 1780, 1789, + 1800, 1804, 1810, 1811, 1812, 1815, 1815, 1818, 1853, 1857, + 1857, 1860, 1866, 1874, 1887, 1896, 1905, 1909, 1918, 1927, + 1938, 1945, 1950, 1959, 1971, 1974, 1983, 1994, 1995, 1996, + 1999, 2000, 2001, 2004, 2005, 2008, 2009, 2012, 2013, 2016, + 2027, 2038, 2049, 2070, 2071 }; #endif @@ -830,11 +831,11 @@ static const char *const yytname[] = "TEX_2D", "TEX_3D", "TEX_CUBE", "TEX_RECT", "TEX_SHADOW1D", "TEX_SHADOW2D", "TEX_SHADOWRECT", "TEX_ARRAY1D", "TEX_ARRAY2D", "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", - "WEIGHT", "IDENTIFIER", "MASK4", "MASK3", "MASK2", "MASK1", "SWIZZLE", - "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", "'+'", "'-'", "'='", - "'{'", "'}'", "$accept", "program", "language", "optionSequence", - "option", "statementSequence", "statement", "instruction", - "ALU_instruction", "TexInstruction", "ARL_instruction", + "WEIGHT", "IDENTIFIER", "USED_IDENTIFIER", "MASK4", "MASK3", "MASK2", + "MASK1", "SWIZZLE", "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", + "'+'", "'-'", "'='", "'{'", "'}'", "$accept", "program", "language", + "optionSequence", "option", "statementSequence", "statement", + "instruction", "ALU_instruction", "TexInstruction", "ARL_instruction", "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", "KIL_instruction", "TXD_instruction", "texImageUnit", "texTarget", @@ -873,7 +874,7 @@ static const char *const yytname[] = "optResultColorType", "optFaceType", "optColorType", "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum", "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", - "ALIAS_statement", 0 + "ALIAS_statement", "string", 0 }; #endif @@ -892,42 +893,42 @@ static const yytype_uint16 yytoknum[] = 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 59, 44, 124, - 91, 93, 43, 45, 61, 123, 125 + 355, 356, 357, 358, 359, 360, 361, 362, 59, 44, + 124, 91, 93, 43, 45, 61, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint8 yyr1[] = { - 0, 117, 118, 119, 119, 120, 120, 121, 122, 122, - 123, 123, 124, 124, 125, 125, 125, 125, 125, 125, - 125, 126, 126, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 137, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 138, 139, 139, 140, - 140, 141, 141, 142, 143, 144, 145, 146, 146, 147, - 147, 147, 147, 148, 148, 149, 150, 150, 151, 152, - 153, 153, 153, 154, 155, 156, 157, 158, 159, 160, - 160, 160, 160, 161, 161, 161, 161, 161, 162, 162, - 162, 162, 162, 162, 163, 164, 164, 165, 165, 165, - 165, 165, 165, 165, 165, 166, 167, 167, 168, 169, - 169, 169, 169, 170, 170, 171, 172, 173, 173, 174, - 175, 176, 176, 177, 177, 177, 178, 178, 178, 179, - 179, 179, 180, 180, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 182, 183, 183, 183, 184, - 185, 185, 185, 185, 185, 186, 187, 188, 188, 189, - 190, 191, 192, 193, 193, 193, 194, 195, 196, 196, - 197, 197, 197, 197, 198, 199, 199, 200, 201, 202, - 203, 203, 204, 205, 206, 206, 207, 208, 208, 209, - 209, 209, 210, 211, 211, 211, 211, 211, 211, 212, - 212, 213, 214, 215, 216, 217, 217, 218, 218, 219, - 220, 220, 221, 222, 223, 223, 224, 225, 226, 227, - 227, 228, 228, 229, 230, 230, 231, 231, 231, 231, - 232, 232, 233, 233, 233, 235, 234, 236, 236, 238, - 237, 239, 239, 240, 241, 241, 241, 241, 241, 241, - 242, 243, 243, 243, 244, 244, 244, 245, 245, 245, - 246, 246, 246, 247, 247, 248, 248, 249, 249, 250, - 251, 252, 253 + 0, 118, 119, 120, 120, 121, 121, 122, 123, 123, + 124, 124, 125, 125, 126, 126, 126, 126, 126, 126, + 126, 127, 127, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 138, 138, 138, 138, 138, + 138, 138, 138, 138, 138, 138, 139, 140, 140, 141, + 141, 142, 142, 143, 144, 145, 146, 147, 147, 148, + 148, 148, 148, 149, 149, 150, 151, 151, 152, 153, + 154, 154, 154, 155, 156, 157, 158, 159, 160, 161, + 161, 161, 161, 162, 162, 162, 162, 162, 163, 163, + 163, 163, 163, 163, 164, 165, 165, 166, 166, 166, + 166, 166, 166, 166, 166, 167, 168, 168, 169, 170, + 170, 170, 170, 171, 171, 172, 173, 174, 174, 175, + 176, 177, 177, 178, 178, 178, 179, 179, 179, 180, + 180, 180, 181, 181, 182, 182, 182, 182, 182, 182, + 182, 182, 182, 182, 182, 183, 184, 184, 184, 185, + 186, 186, 186, 186, 186, 187, 188, 189, 189, 190, + 191, 192, 193, 194, 194, 194, 195, 196, 197, 197, + 198, 198, 198, 198, 199, 200, 200, 201, 202, 203, + 204, 204, 205, 206, 207, 207, 208, 209, 209, 210, + 210, 210, 211, 212, 212, 212, 212, 212, 212, 213, + 213, 214, 215, 216, 217, 218, 218, 219, 219, 220, + 221, 221, 222, 223, 224, 224, 225, 226, 227, 228, + 228, 229, 229, 230, 231, 231, 232, 232, 232, 232, + 233, 233, 234, 234, 234, 236, 235, 237, 237, 239, + 238, 240, 240, 241, 242, 242, 242, 242, 242, 242, + 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, + 247, 247, 247, 248, 248, 249, 249, 250, 250, 251, + 252, 253, 254, 255, 255 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -960,7 +961,7 @@ static const yytype_uint8 yyr2[] = 3, 3, 1, 5, 2, 2, 2, 2, 3, 2, 3, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 3, 0, 3, 0, 3, 1, - 1, 1, 4 + 1, 1, 4, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -969,142 +970,142 @@ static const yytype_uint8 yyr2[] = static const yytype_uint16 yydefact[] = { 0, 3, 4, 0, 6, 1, 9, 0, 5, 238, - 0, 239, 0, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 234, 0, 0, 237, 8, 0, 12, - 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, - 20, 0, 88, 89, 113, 114, 90, 0, 91, 92, - 93, 7, 0, 0, 0, 0, 0, 64, 0, 87, - 63, 0, 0, 0, 0, 0, 75, 0, 0, 232, - 233, 31, 0, 0, 0, 10, 11, 0, 235, 242, - 240, 0, 0, 117, 234, 115, 251, 249, 245, 247, - 244, 263, 246, 234, 83, 84, 85, 86, 53, 234, - 234, 234, 234, 234, 234, 77, 54, 225, 224, 0, - 0, 0, 0, 59, 0, 234, 82, 0, 60, 62, - 126, 127, 205, 206, 128, 221, 222, 0, 234, 0, - 0, 0, 272, 94, 118, 0, 119, 123, 124, 125, - 219, 220, 223, 0, 253, 252, 254, 0, 248, 0, - 0, 0, 0, 26, 0, 25, 24, 260, 111, 109, - 263, 96, 0, 0, 0, 0, 0, 0, 257, 0, - 257, 0, 0, 267, 263, 134, 135, 136, 137, 139, - 138, 140, 141, 142, 143, 0, 144, 260, 101, 0, - 99, 97, 263, 0, 106, 95, 82, 0, 80, 79, - 81, 51, 0, 0, 0, 0, 236, 241, 0, 231, - 230, 255, 256, 250, 269, 0, 234, 234, 0, 47, - 0, 50, 0, 234, 261, 262, 110, 112, 0, 0, - 0, 204, 175, 176, 174, 0, 157, 259, 258, 156, - 0, 0, 0, 0, 199, 195, 0, 194, 263, 187, - 181, 180, 179, 0, 0, 0, 0, 100, 0, 102, - 0, 0, 98, 0, 234, 226, 68, 0, 66, 67, - 0, 234, 234, 243, 0, 116, 264, 28, 27, 0, - 78, 49, 265, 0, 0, 217, 0, 218, 0, 178, - 0, 166, 0, 158, 0, 163, 164, 147, 148, 165, - 145, 146, 0, 201, 193, 200, 0, 196, 189, 191, - 190, 186, 188, 271, 0, 162, 161, 168, 169, 0, - 0, 108, 0, 105, 0, 0, 52, 0, 61, 76, - 70, 46, 0, 0, 0, 234, 48, 0, 33, 0, - 234, 212, 216, 0, 0, 257, 203, 0, 202, 0, - 268, 173, 172, 170, 171, 167, 192, 0, 103, 104, - 107, 234, 227, 0, 0, 69, 234, 57, 58, 56, - 234, 0, 0, 0, 121, 129, 132, 130, 207, 208, - 131, 270, 0, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 30, 29, 177, 152, 154, - 151, 0, 149, 150, 0, 198, 197, 182, 0, 73, - 71, 74, 72, 0, 0, 0, 0, 133, 184, 234, - 120, 266, 155, 153, 159, 160, 234, 228, 234, 0, - 0, 0, 0, 183, 122, 0, 0, 0, 0, 210, - 0, 214, 0, 229, 234, 0, 209, 0, 213, 0, - 0, 55, 32, 211, 215, 0, 0, 185 + 273, 274, 0, 239, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 234, 0, 0, 8, 0, + 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, + 23, 20, 0, 88, 89, 113, 114, 90, 0, 91, + 92, 93, 237, 7, 0, 0, 0, 0, 0, 64, + 0, 87, 63, 0, 0, 0, 0, 0, 75, 0, + 0, 232, 233, 31, 0, 0, 0, 10, 11, 0, + 235, 242, 240, 0, 0, 117, 234, 115, 251, 249, + 245, 247, 244, 263, 246, 234, 83, 84, 85, 86, + 53, 234, 234, 234, 234, 234, 234, 77, 54, 225, + 224, 0, 0, 0, 0, 59, 0, 234, 82, 0, + 60, 62, 126, 127, 205, 206, 128, 221, 222, 0, + 234, 0, 0, 0, 272, 94, 118, 0, 119, 123, + 124, 125, 219, 220, 223, 0, 253, 252, 254, 0, + 248, 0, 0, 0, 0, 26, 0, 25, 24, 260, + 111, 109, 263, 96, 0, 0, 0, 0, 0, 0, + 257, 0, 257, 0, 0, 267, 263, 134, 135, 136, + 137, 139, 138, 140, 141, 142, 143, 0, 144, 260, + 101, 0, 99, 97, 263, 0, 106, 95, 82, 0, + 80, 79, 81, 51, 0, 0, 0, 0, 236, 241, + 0, 231, 230, 255, 256, 250, 269, 0, 234, 234, + 0, 47, 0, 50, 0, 234, 261, 262, 110, 112, + 0, 0, 0, 204, 175, 176, 174, 0, 157, 259, + 258, 156, 0, 0, 0, 0, 199, 195, 0, 194, + 263, 187, 181, 180, 179, 0, 0, 0, 0, 100, + 0, 102, 0, 0, 98, 0, 234, 226, 68, 0, + 66, 67, 0, 234, 234, 243, 0, 116, 264, 28, + 27, 0, 78, 49, 265, 0, 0, 217, 0, 218, + 0, 178, 0, 166, 0, 158, 0, 163, 164, 147, + 148, 165, 145, 146, 0, 201, 193, 200, 0, 196, + 189, 191, 190, 186, 188, 271, 0, 162, 161, 168, + 169, 0, 0, 108, 0, 105, 0, 0, 52, 0, + 61, 76, 70, 46, 0, 0, 0, 234, 48, 0, + 33, 0, 234, 212, 216, 0, 0, 257, 203, 0, + 202, 0, 268, 173, 172, 170, 171, 167, 192, 0, + 103, 104, 107, 234, 227, 0, 0, 69, 234, 57, + 56, 58, 234, 0, 0, 0, 121, 129, 132, 130, + 207, 208, 131, 270, 0, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 30, 29, 177, + 152, 154, 151, 0, 149, 150, 0, 198, 197, 182, + 0, 73, 71, 74, 72, 0, 0, 0, 0, 133, + 184, 234, 120, 266, 155, 153, 159, 160, 234, 228, + 234, 0, 0, 0, 0, 183, 122, 0, 0, 0, + 0, 210, 0, 214, 0, 229, 234, 0, 209, 0, + 213, 0, 0, 55, 32, 211, 215, 0, 0, 185 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 3, 4, 6, 8, 9, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 283, - 395, 40, 150, 219, 71, 58, 67, 331, 332, 369, - 220, 59, 117, 267, 268, 269, 365, 410, 412, 68, - 330, 106, 281, 201, 98, 41, 42, 118, 195, 324, - 262, 322, 161, 43, 44, 45, 135, 85, 275, 373, - 136, 119, 374, 375, 120, 175, 300, 176, 402, 423, - 177, 239, 178, 424, 179, 316, 301, 292, 180, 319, - 355, 181, 234, 182, 290, 183, 252, 184, 417, 433, - 185, 311, 312, 357, 249, 304, 305, 349, 347, 186, - 121, 377, 378, 438, 122, 379, 440, 123, 286, 288, - 380, 124, 140, 125, 126, 142, 72, 46, 130, 47, - 48, 52, 80, 49, 60, 92, 146, 213, 240, 226, - 148, 338, 254, 215, 382, 314, 50 + -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 285, + 397, 41, 152, 221, 73, 60, 69, 333, 334, 370, + 222, 61, 119, 269, 270, 271, 367, 412, 414, 70, + 332, 108, 283, 203, 100, 42, 43, 120, 197, 326, + 264, 324, 163, 44, 45, 46, 137, 87, 277, 375, + 138, 121, 376, 377, 122, 177, 302, 178, 404, 425, + 179, 241, 180, 426, 181, 318, 303, 294, 182, 321, + 357, 183, 236, 184, 292, 185, 254, 186, 419, 435, + 187, 313, 314, 359, 251, 306, 307, 351, 349, 188, + 123, 379, 380, 440, 124, 381, 442, 125, 288, 290, + 382, 126, 142, 127, 128, 144, 74, 47, 132, 48, + 49, 54, 82, 50, 62, 94, 148, 215, 242, 228, + 150, 340, 256, 217, 384, 316, 51, 12 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -386 +#define YYPACT_NINF -401 static const yytype_int16 yypact[] = { - 203, -386, -386, 23, -386, -386, 67, -50, -386, 20, - 16, -386, 21, 37, 48, -386, -19, -19, -19, -19, - -19, -19, 58, 131, -19, -19, -386, -386, 53, -386, - -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, - -386, 64, -386, -386, -386, -386, -386, 229, -386, -386, - -386, -386, 77, 81, 89, 78, 95, -386, 75, 130, - -386, 119, 139, 140, 142, 146, -386, 147, 136, -386, - -386, -386, -14, 148, 149, -386, -386, 159, -386, -386, - 152, 162, -20, 239, -6, -386, 31, -386, -386, -386, - -386, 153, -386, 131, -386, -386, -386, -386, -386, 131, - 131, 131, 131, 131, 131, -386, -386, -386, -386, 28, - 50, 123, 40, 154, 30, 131, 101, 155, -386, -386, - -386, -386, -386, -386, -386, -386, -386, 30, 131, 156, - 77, 167, -386, -386, -386, 158, -386, -386, -386, -386, - -386, -386, -386, 218, -386, -386, 13, 244, -386, 160, - 163, -10, 164, -386, 165, -386, -386, 73, -386, -386, - 153, -386, 166, 168, 169, 210, 42, 170, 91, 171, - 100, 145, 38, 173, 153, -386, -386, -386, -386, -386, - -386, -386, -386, -386, -386, 209, -386, 73, -386, 174, - -386, -386, 153, 175, 176, -386, 101, 57, -386, -386, - -386, -386, -16, 179, 180, 225, 152, -386, 177, -386, - -386, -386, -386, -386, -386, 181, 131, 131, 30, -386, - 190, 191, 212, 131, -386, -386, -386, -386, 273, 274, - 275, -386, -386, -386, -386, 276, -386, -386, -386, -386, - 233, 276, 115, 192, 278, -386, 193, -386, 153, 9, - -386, -386, -386, 281, 277, 25, 195, -386, 284, -386, - 285, 284, -386, 200, 131, -386, -386, 199, -386, -386, - 208, 131, 131, -386, 197, -386, -386, -386, -386, 206, - -386, -386, 207, 205, 211, -386, 213, -386, 214, -386, - 215, -386, 216, -386, 217, -386, -386, -386, -386, -386, - -386, -386, 293, -386, -386, -386, 295, -386, -386, -386, - -386, -386, -386, -386, 219, -386, -386, -386, -386, 157, - 297, -386, 220, -386, 221, 222, -386, 66, -386, -386, - 133, -386, 226, -12, 230, 49, -386, 298, -386, 125, - 131, -386, -386, 265, 118, 100, -386, 228, -386, 232, - -386, -386, -386, -386, -386, -386, -386, 234, -386, -386, - -386, 131, -386, 300, 306, -386, 131, -386, -386, -386, - 131, 129, 123, 69, -386, -386, -386, -386, -386, -386, - -386, -386, 235, -386, -386, -386, -386, -386, -386, -386, - -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, - -386, 308, -386, -386, 41, -386, -386, -386, 86, -386, - -386, -386, -386, 240, 241, 231, 237, -386, 286, 49, - -386, -386, -386, -386, -386, -386, 131, -386, 131, 212, - 273, 274, 243, -386, -386, 238, 242, 247, 245, 246, - 248, 252, 297, -386, 131, 125, -386, 273, -386, 274, - 45, -386, -386, -386, -386, 297, 250, -386 + 122, -401, -401, 49, -401, -401, 56, 61, -401, 20, + -401, -401, -5, -401, 7, 45, 78, -401, -47, -47, + -47, -47, -47, -47, 79, 85, -47, -47, -401, 99, + -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, + -401, -401, 127, -401, -401, -401, -401, -401, 120, -401, + -401, -401, -401, -401, 135, 133, 134, 25, 129, -401, + 138, 137, -401, 145, 146, 147, 148, 151, -401, 152, + 154, -401, -401, -401, -14, 153, 155, -401, -401, 143, + -401, -401, 156, 163, 14, 243, 32, -401, 31, -401, + -401, -401, -401, 157, -401, 85, -401, -401, -401, -401, + -401, 85, 85, 85, 85, 85, 85, -401, -401, -401, + -401, 112, 149, 126, 54, 158, 27, 85, 132, 159, + -401, -401, -401, -401, -401, -401, -401, -401, -401, 27, + 85, 160, 135, 168, -401, -401, -401, 161, -401, -401, + -401, -401, -401, -401, -401, 198, -401, -401, 89, 248, + -401, 167, 169, 22, 170, -401, 171, -401, -401, 117, + -401, -401, 157, -401, 172, 173, 174, 208, -1, 175, + 53, 176, 165, 142, -3, 177, 157, -401, -401, -401, + -401, -401, -401, -401, -401, -401, -401, 215, -401, 117, + -401, 179, -401, -401, 157, 180, 181, -401, 132, -38, + -401, -401, -401, -401, -10, 184, 185, 209, 156, -401, + 182, -401, -401, -401, -401, -401, -401, 183, 85, 85, + 27, -401, 192, 194, 216, 85, -401, -401, -401, -401, + 277, 278, 279, -401, -401, -401, -401, 280, -401, -401, + -401, -401, 237, 280, 68, 195, 282, -401, 196, -401, + 157, 33, -401, -401, -401, 285, 281, 19, 200, -401, + 286, -401, 289, 286, -401, 203, 85, -401, -401, 202, + -401, -401, 212, 85, 85, -401, 201, -401, -401, -401, + -401, 210, -401, -401, 207, 213, 214, -401, 218, -401, + 219, -401, 220, -401, 221, -401, 222, -401, -401, -401, + -401, -401, -401, -401, 296, -401, -401, -401, 298, -401, + -401, -401, -401, -401, -401, -401, 226, -401, -401, -401, + -401, 166, 301, -401, 227, -401, 228, 229, -401, 46, + -401, -401, 116, -401, 217, -12, 234, 51, -401, 302, + -401, 125, 85, -401, -401, 270, 37, 165, -401, 233, + -401, 235, -401, -401, -401, -401, -401, -401, -401, 236, + -401, -401, -401, 85, -401, 305, 323, -401, 85, -401, + -401, -401, 85, 162, 126, 59, -401, -401, -401, -401, + -401, -401, -401, -401, 238, -401, -401, -401, -401, -401, + -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, + -401, -401, -401, 317, -401, -401, 41, -401, -401, -401, + 65, -401, -401, -401, -401, 242, 244, 241, 245, -401, + 288, 51, -401, -401, -401, -401, -401, -401, 85, -401, + 85, 216, 277, 278, 246, -401, -401, 247, 249, 250, + 251, 255, 253, 256, 301, -401, 85, 125, -401, 277, + -401, 278, 94, -401, -401, -401, -401, 301, 254, -401 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, - -386, -386, -386, -386, -386, -386, -386, -386, -386, -71, - -80, -386, -96, 144, -81, 204, -386, -386, -350, -386, - -17, -386, -386, -386, -386, -386, -386, -386, -386, 161, - -386, -386, -386, 172, -386, -386, -386, 282, -386, -386, - -386, 105, -386, -386, -386, -386, -386, -386, -386, -386, - -386, -386, -52, -386, -83, -386, -386, -386, -386, -386, - -386, -386, -386, -386, -386, -386, -300, 128, -386, -386, - -386, -386, -386, -386, -386, -386, -386, -386, -386, -386, - -2, -386, -386, -327, -386, -386, -386, -386, -386, -386, - 287, -386, -386, -386, -386, -386, -386, -386, -385, -318, - 288, -386, -386, -145, -82, -112, -84, -386, -386, -386, - -386, -386, 249, -386, 178, -386, -386, -386, -166, 186, - -131, -386, -386, -386, -386, -386, -386 + -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, + -401, -401, -401, -401, -401, -401, -401, -401, -401, -76, + -80, -401, -98, 150, -83, 205, -401, -401, -361, -401, + -18, -401, -401, -401, -401, -401, -401, -401, -401, 164, + -401, -401, -401, 178, -401, -401, -401, 287, -401, -401, + -401, 106, -401, -401, -401, -401, -401, -401, -401, -401, + -401, -401, -49, -401, -85, -401, -401, -401, -401, -401, + -401, -401, -401, -401, -401, -401, -330, 130, -401, -401, + -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, + 0, -401, -401, -400, -401, -401, -401, -401, -401, -401, + 291, -401, -401, -401, -401, -401, -401, -401, -302, -317, + 292, -401, -401, -139, -84, -113, -86, -401, -401, -401, + -401, -401, 252, -401, 186, -401, -401, -401, -166, 190, + -133, -401, -401, -401, -401, -401, -401, -6 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -1114,140 +1115,142 @@ static const yytype_int16 yypgoto[] = #define YYTABLE_NINF -222 static const yytype_int16 yytable[] = { - 143, 137, 141, 197, 242, 153, 221, 266, 156, 107, - 108, 367, 149, 107, 108, 151, 413, 151, 109, 152, - 151, 154, 155, 5, 109, 11, 12, 13, 109, 227, - 14, 143, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 255, 403, 439, 56, 204, 110, 10, - 308, 309, 110, 107, 108, 116, 110, 157, 144, 111, - 317, 259, 453, 111, 250, 158, 295, 111, 109, 187, - 145, 232, 296, 221, 211, 7, 112, 188, 436, 318, - 57, 212, 112, 66, 162, 113, 112, 368, 159, 113, - 189, 310, 110, 190, 451, 114, 163, 196, 233, 218, - 191, 115, 160, 111, 425, 115, 69, 70, 251, 115, - 203, 371, 299, 441, 192, 450, 236, 307, 237, 26, - 53, 278, 372, 51, 86, 87, 112, 237, 456, 113, - 238, 454, 88, 151, 224, 277, 54, 193, 194, 238, - 295, 225, 284, 295, 398, 115, 296, 55, 297, 296, - 455, 164, 327, 165, 89, 90, 407, 66, 399, 166, - 75, 69, 70, 415, 115, 264, 167, 168, 169, 91, - 170, 76, 171, 265, 361, 416, 79, 419, 400, 404, - 143, 172, 362, 93, 298, 420, 299, 333, 83, 299, - 401, 334, 84, 243, 426, 81, 244, 245, 173, 174, - 246, 198, 427, 82, 199, 200, 1, 2, 247, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 61, 62, 63, 64, 65, 248, 99, 73, 74, - 94, 95, 96, 97, 351, 352, 353, 354, 77, 105, - 78, 209, 210, 69, 70, 363, 364, 100, 101, 408, - 102, 143, 376, 141, 103, 104, 127, 128, 129, 396, - 131, 132, 134, 147, -65, 202, 207, 214, 216, 208, - 205, 217, 222, 223, 231, 256, 228, 143, 229, 230, - 235, 241, 333, 253, 258, 260, 261, 271, 272, 414, - 56, 274, 276, 280, -221, 282, 285, 287, 289, 291, - 293, 303, 302, 306, 313, 320, 315, 321, 323, 326, - 328, 329, 335, 339, 435, 336, 346, 337, 348, 340, - 356, 381, 397, 409, 341, 342, 343, 344, 345, 411, - 350, 358, 359, 360, 366, 143, 376, 141, 370, 405, - 422, 430, 143, 406, 333, 407, 421, 431, 428, 429, - 444, 447, 432, 442, 443, 445, 446, 449, 437, 448, - 333, 457, 279, 270, 133, 452, 325, 434, 263, 294, - 418, 138, 139, 257, 0, 0, 0, 0, 0, 206, - 0, 0, 0, 273 + 145, 139, 143, 52, 199, 155, 244, 415, 158, 109, + 110, 369, 151, 268, 223, 153, 405, 153, 58, 154, + 153, 156, 157, 252, 111, 13, 14, 15, 234, 229, + 16, 145, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 257, 452, 109, 110, 206, 112, 5, + 109, 110, 111, 59, 319, 235, 118, 458, 146, 113, + 111, 261, 297, 400, 7, 111, 297, 253, 298, 438, + 147, 266, 298, 320, 310, 311, 427, 401, 238, 267, + 239, 223, 114, 189, 112, 453, 115, 10, 11, 112, + 68, 190, 240, 297, 112, 113, 116, 402, 198, 298, + 113, 299, 117, 53, 191, 113, 55, 192, 301, 403, + 114, 205, 301, 373, 193, 312, 443, 309, 114, 10, + 11, 280, 115, 114, 374, 1, 2, 115, 194, 79, + 441, 80, 220, 153, 456, 279, 85, 300, 117, 301, + 86, 159, 286, 117, 56, 71, 72, 455, 117, 160, + 213, 195, 196, 329, 166, 363, 167, 214, 88, 89, + 10, 11, 168, 364, 71, 72, 90, 117, 421, 169, + 170, 171, 161, 172, 428, 173, 422, 57, 226, 68, + 145, 406, 429, 164, 174, 227, 162, 335, 91, 92, + 245, 336, 239, 246, 247, 165, 417, 248, 71, 72, + 457, 175, 176, 93, 240, 249, 409, 77, 418, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 211, 212, 250, 63, 64, 65, 66, 67, 365, + 366, 75, 76, 200, 81, 78, 201, 202, 96, 97, + 98, 99, 131, 353, 354, 355, 356, 95, 83, 84, + 410, 145, 378, 143, 101, 102, 103, 104, 107, 398, + 105, 106, 129, 134, 130, 133, 136, 209, 149, -65, + 204, 216, 233, 210, 58, 207, 218, 145, 219, 224, + 225, 258, 335, 230, 231, 232, 237, 243, 255, 416, + 260, 262, 263, 273, 274, 278, 282, 276, -221, 284, + 287, 289, 291, 293, 295, 305, 304, 308, 315, 323, + 317, 322, 325, 328, 330, 437, 331, 337, 339, 348, + 338, 350, 341, 342, 358, 383, 368, 399, 411, 371, + 343, 344, 345, 346, 347, 145, 378, 143, 352, 360, + 361, 362, 145, 372, 335, 407, 413, 408, 409, 424, + 423, 430, 432, 431, 434, 439, 433, 444, 446, 447, + 335, 449, 451, 448, 445, 450, 459, 454, 272, 327, + 281, 135, 436, 296, 420, 0, 265, 140, 141, 259, + 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, + 0, 0, 0, 275 }; static const yytype_int16 yycheck[] = { - 84, 84, 84, 115, 170, 101, 151, 23, 104, 23, - 24, 23, 93, 23, 24, 99, 366, 101, 38, 100, - 104, 102, 103, 0, 38, 5, 6, 7, 38, 160, - 10, 115, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 174, 344, 430, 65, 128, 62, 99, - 41, 42, 62, 23, 24, 72, 62, 29, 27, 73, - 35, 192, 447, 73, 26, 37, 25, 73, 38, 29, - 39, 29, 31, 218, 61, 8, 96, 37, 428, 54, - 99, 68, 96, 99, 34, 99, 96, 99, 60, 99, - 50, 82, 62, 53, 444, 109, 46, 114, 56, 109, - 60, 115, 74, 73, 404, 115, 112, 113, 70, 115, - 127, 62, 71, 431, 74, 442, 25, 248, 27, 99, - 99, 217, 73, 107, 29, 30, 96, 27, 455, 99, - 39, 449, 37, 217, 61, 216, 99, 97, 98, 39, - 25, 68, 223, 25, 26, 115, 31, 99, 33, 31, - 105, 28, 264, 30, 59, 60, 111, 99, 40, 36, - 107, 112, 113, 34, 115, 108, 43, 44, 45, 74, - 47, 107, 49, 116, 108, 46, 99, 108, 60, 345, - 264, 58, 116, 108, 69, 116, 71, 271, 110, 71, - 72, 272, 114, 48, 108, 114, 51, 52, 75, 76, - 55, 100, 116, 114, 103, 104, 3, 4, 63, 84, + 86, 86, 86, 9, 117, 103, 172, 368, 106, 23, + 24, 23, 95, 23, 153, 101, 346, 103, 65, 102, + 106, 104, 105, 26, 38, 5, 6, 7, 29, 162, + 10, 117, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 176, 444, 23, 24, 130, 62, 0, + 23, 24, 38, 100, 35, 56, 74, 457, 27, 73, + 38, 194, 25, 26, 8, 38, 25, 70, 31, 430, + 39, 109, 31, 54, 41, 42, 406, 40, 25, 117, + 27, 220, 96, 29, 62, 446, 100, 99, 100, 62, + 100, 37, 39, 25, 62, 73, 110, 60, 116, 31, + 73, 33, 116, 108, 50, 73, 99, 53, 71, 72, + 96, 129, 71, 62, 60, 82, 433, 250, 96, 99, + 100, 219, 100, 96, 73, 3, 4, 100, 74, 9, + 432, 11, 110, 219, 451, 218, 111, 69, 116, 71, + 115, 29, 225, 116, 99, 113, 114, 449, 116, 37, + 61, 97, 98, 266, 28, 109, 30, 68, 29, 30, + 99, 100, 36, 117, 113, 114, 37, 116, 109, 43, + 44, 45, 60, 47, 109, 49, 117, 99, 61, 100, + 266, 347, 117, 34, 58, 68, 74, 273, 59, 60, + 48, 274, 27, 51, 52, 46, 34, 55, 113, 114, + 106, 75, 76, 74, 39, 63, 112, 108, 46, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 17, 18, 19, 20, 21, 81, 108, 24, 25, - 100, 101, 102, 103, 77, 78, 79, 80, 9, 103, - 11, 23, 24, 112, 113, 112, 113, 108, 108, 361, - 108, 335, 335, 335, 108, 108, 108, 108, 99, 340, - 108, 99, 23, 110, 110, 110, 99, 23, 108, 111, - 114, 108, 108, 108, 64, 66, 110, 361, 110, 110, - 110, 110, 366, 110, 110, 110, 110, 108, 108, 370, - 65, 114, 111, 103, 103, 83, 23, 23, 23, 23, - 67, 23, 110, 110, 23, 110, 29, 23, 23, 109, - 111, 103, 115, 108, 426, 109, 23, 110, 23, 108, - 23, 23, 57, 23, 111, 111, 111, 111, 111, 23, - 111, 111, 111, 111, 108, 419, 419, 419, 108, 111, - 32, 110, 426, 111, 428, 111, 111, 110, 108, 108, - 108, 105, 66, 110, 116, 108, 111, 105, 429, 111, - 444, 111, 218, 202, 82, 445, 261, 419, 196, 241, - 372, 84, 84, 187, -1, -1, -1, -1, -1, 130, - -1, -1, -1, 205 + 95, 23, 24, 81, 19, 20, 21, 22, 23, 113, + 114, 26, 27, 101, 99, 108, 104, 105, 101, 102, + 103, 104, 99, 77, 78, 79, 80, 109, 115, 115, + 363, 337, 337, 337, 109, 109, 109, 109, 104, 342, + 109, 109, 109, 100, 109, 109, 23, 99, 111, 111, + 111, 23, 64, 112, 65, 115, 109, 363, 109, 109, + 109, 66, 368, 111, 111, 111, 111, 111, 111, 372, + 111, 111, 111, 109, 109, 112, 104, 115, 104, 83, + 23, 23, 23, 23, 67, 23, 111, 111, 23, 23, + 29, 111, 23, 110, 112, 428, 104, 116, 111, 23, + 110, 23, 109, 109, 23, 23, 109, 57, 23, 335, + 112, 112, 112, 112, 112, 421, 421, 421, 112, 112, + 112, 112, 428, 109, 430, 112, 23, 112, 112, 32, + 112, 109, 111, 109, 66, 431, 111, 111, 109, 109, + 446, 106, 106, 112, 117, 112, 112, 447, 204, 263, + 220, 84, 421, 243, 374, -1, 198, 86, 86, 189, + -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, + -1, -1, -1, 207 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint8 yystos[] = { - 0, 3, 4, 118, 119, 0, 120, 8, 121, 122, - 99, 5, 6, 7, 10, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 99, 123, 124, 125, + 0, 3, 4, 119, 120, 0, 121, 8, 122, 123, + 99, 100, 255, 5, 6, 7, 10, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 138, 162, 163, 170, 171, 172, 234, 236, 237, 240, - 253, 107, 238, 99, 99, 99, 65, 99, 142, 148, - 241, 142, 142, 142, 142, 142, 99, 143, 156, 112, - 113, 141, 233, 142, 142, 107, 107, 9, 11, 99, - 239, 114, 114, 110, 114, 174, 29, 30, 37, 59, - 60, 74, 242, 108, 100, 101, 102, 103, 161, 108, - 108, 108, 108, 108, 108, 103, 158, 23, 24, 38, - 62, 73, 96, 99, 109, 115, 147, 149, 164, 178, - 181, 217, 221, 224, 228, 230, 231, 108, 108, 99, - 235, 108, 99, 164, 23, 173, 177, 181, 217, 227, - 229, 231, 232, 233, 27, 39, 243, 110, 247, 141, - 139, 233, 141, 139, 141, 141, 139, 29, 37, 60, - 74, 169, 34, 46, 28, 30, 36, 43, 44, 45, - 47, 49, 58, 75, 76, 182, 184, 187, 189, 191, - 195, 198, 200, 202, 204, 207, 216, 29, 37, 50, - 53, 60, 74, 97, 98, 165, 147, 232, 100, 103, - 104, 160, 110, 147, 141, 114, 239, 99, 111, 23, - 24, 61, 68, 244, 23, 250, 108, 108, 109, 140, - 147, 230, 108, 108, 61, 68, 246, 247, 110, 110, - 110, 64, 29, 56, 199, 110, 25, 27, 39, 188, - 245, 110, 245, 48, 51, 52, 55, 63, 81, 211, - 26, 70, 203, 110, 249, 247, 66, 246, 110, 247, - 110, 110, 167, 160, 108, 116, 23, 150, 151, 152, - 156, 108, 108, 241, 114, 175, 111, 141, 139, 140, - 103, 159, 83, 136, 141, 23, 225, 23, 226, 23, - 201, 23, 194, 67, 194, 25, 31, 33, 69, 71, - 183, 193, 110, 23, 212, 213, 110, 247, 41, 42, - 82, 208, 209, 23, 252, 29, 192, 35, 54, 196, - 110, 23, 168, 23, 166, 168, 109, 232, 111, 103, - 157, 144, 145, 233, 141, 115, 109, 110, 248, 108, - 108, 111, 111, 111, 111, 111, 23, 215, 23, 214, - 111, 77, 78, 79, 80, 197, 23, 210, 111, 111, - 111, 108, 116, 112, 113, 153, 108, 23, 99, 146, - 108, 62, 73, 176, 179, 180, 181, 218, 219, 222, - 227, 23, 251, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 137, 141, 57, 26, 40, - 60, 72, 185, 193, 245, 111, 111, 111, 232, 23, - 154, 23, 155, 145, 141, 34, 46, 205, 207, 108, - 116, 111, 32, 186, 190, 193, 108, 116, 108, 108, - 110, 110, 66, 206, 179, 232, 145, 136, 220, 225, - 223, 226, 110, 116, 108, 108, 111, 105, 111, 105, - 210, 145, 137, 225, 226, 105, 210, 111 + 136, 139, 163, 164, 171, 172, 173, 235, 237, 238, + 241, 254, 255, 108, 239, 99, 99, 99, 65, 100, + 143, 149, 242, 143, 143, 143, 143, 143, 100, 144, + 157, 113, 114, 142, 234, 143, 143, 108, 108, 9, + 11, 99, 240, 115, 115, 111, 115, 175, 29, 30, + 37, 59, 60, 74, 243, 109, 101, 102, 103, 104, + 162, 109, 109, 109, 109, 109, 109, 104, 159, 23, + 24, 38, 62, 73, 96, 100, 110, 116, 148, 150, + 165, 179, 182, 218, 222, 225, 229, 231, 232, 109, + 109, 99, 236, 109, 100, 165, 23, 174, 178, 182, + 218, 228, 230, 232, 233, 234, 27, 39, 244, 111, + 248, 142, 140, 234, 142, 140, 142, 142, 140, 29, + 37, 60, 74, 170, 34, 46, 28, 30, 36, 43, + 44, 45, 47, 49, 58, 75, 76, 183, 185, 188, + 190, 192, 196, 199, 201, 203, 205, 208, 217, 29, + 37, 50, 53, 60, 74, 97, 98, 166, 148, 233, + 101, 104, 105, 161, 111, 148, 142, 115, 240, 99, + 112, 23, 24, 61, 68, 245, 23, 251, 109, 109, + 110, 141, 148, 231, 109, 109, 61, 68, 247, 248, + 111, 111, 111, 64, 29, 56, 200, 111, 25, 27, + 39, 189, 246, 111, 246, 48, 51, 52, 55, 63, + 81, 212, 26, 70, 204, 111, 250, 248, 66, 247, + 111, 248, 111, 111, 168, 161, 109, 117, 23, 151, + 152, 153, 157, 109, 109, 242, 115, 176, 112, 142, + 140, 141, 104, 160, 83, 137, 142, 23, 226, 23, + 227, 23, 202, 23, 195, 67, 195, 25, 31, 33, + 69, 71, 184, 194, 111, 23, 213, 214, 111, 248, + 41, 42, 82, 209, 210, 23, 253, 29, 193, 35, + 54, 197, 111, 23, 169, 23, 167, 169, 110, 233, + 112, 104, 158, 145, 146, 234, 142, 116, 110, 111, + 249, 109, 109, 112, 112, 112, 112, 112, 23, 216, + 23, 215, 112, 77, 78, 79, 80, 198, 23, 211, + 112, 112, 112, 109, 117, 113, 114, 154, 109, 23, + 147, 255, 109, 62, 73, 177, 180, 181, 182, 219, + 220, 223, 228, 23, 252, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 138, 142, 57, + 26, 40, 60, 72, 186, 194, 246, 112, 112, 112, + 233, 23, 155, 23, 156, 146, 142, 34, 46, 206, + 208, 109, 117, 112, 32, 187, 191, 194, 109, 117, + 109, 109, 111, 111, 66, 207, 180, 233, 146, 137, + 221, 226, 224, 227, 111, 117, 109, 109, 112, 106, + 112, 106, 211, 146, 138, 226, 227, 106, 211, 112 }; #define yyerrok (yyerrstatus = 0) @@ -2101,7 +2104,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 269 "program_parse.y" +#line 270 "program_parse.y" { if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header"); @@ -2114,7 +2117,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 277 "program_parse.y" +#line 278 "program_parse.y" { if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header"); @@ -2129,7 +2132,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 293 "program_parse.y" +#line 294 "program_parse.y" { int valid = 0; @@ -2154,7 +2157,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 319 "program_parse.y" +#line 320 "program_parse.y" { if ((yyvsp[(1) - (2)].inst) != NULL) { if (state->inst_tail == NULL) { @@ -2174,7 +2177,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 337 "program_parse.y" +#line 338 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumAluInstructions++; @@ -2184,7 +2187,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 342 "program_parse.y" +#line 343 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumTexInstructions++; @@ -2194,7 +2197,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 363 "program_parse.y" +#line 364 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2203,7 +2206,7 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 369 "program_parse.y" +#line 370 "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); ;} @@ -2212,7 +2215,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 375 "program_parse.y" +#line 376 "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); ;} @@ -2221,7 +2224,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 381 "program_parse.y" +#line 382 "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); ;} @@ -2230,7 +2233,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 388 "program_parse.y" +#line 389 "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); ;} @@ -2239,7 +2242,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 395 "program_parse.y" +#line 396 "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)); ;} @@ -2248,7 +2251,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 401 "program_parse.y" +#line 402 "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) { @@ -2295,7 +2298,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 445 "program_parse.y" +#line 446 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); state->fragment.UsesKill = 1; @@ -2305,7 +2308,7 @@ yyreduce: case 32: /* Line 1455 of yacc.c */ -#line 452 "program_parse.y" +#line 453 "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) { @@ -2352,7 +2355,7 @@ yyreduce: case 33: /* Line 1455 of yacc.c */ -#line 496 "program_parse.y" +#line 497 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -2361,91 +2364,91 @@ yyreduce: case 34: /* Line 1455 of yacc.c */ -#line 501 "program_parse.y" +#line 502 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; case 35: /* Line 1455 of yacc.c */ -#line 502 "program_parse.y" +#line 503 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; case 36: /* Line 1455 of yacc.c */ -#line 503 "program_parse.y" +#line 504 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; case 37: /* Line 1455 of yacc.c */ -#line 504 "program_parse.y" +#line 505 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; case 38: /* Line 1455 of yacc.c */ -#line 505 "program_parse.y" +#line 506 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; case 39: /* Line 1455 of yacc.c */ -#line 506 "program_parse.y" +#line 507 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; case 40: /* Line 1455 of yacc.c */ -#line 507 "program_parse.y" +#line 508 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; case 41: /* Line 1455 of yacc.c */ -#line 508 "program_parse.y" +#line 509 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; case 42: /* Line 1455 of yacc.c */ -#line 509 "program_parse.y" +#line 510 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; case 43: /* Line 1455 of yacc.c */ -#line 510 "program_parse.y" +#line 511 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; case 44: /* Line 1455 of yacc.c */ -#line 511 "program_parse.y" +#line 512 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; case 45: /* Line 1455 of yacc.c */ -#line 512 "program_parse.y" +#line 513 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; case 46: /* Line 1455 of yacc.c */ -#line 516 "program_parse.y" +#line 517 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied * FIXME: to the existing swizzle? @@ -2460,7 +2463,7 @@ yyreduce: case 47: /* Line 1455 of yacc.c */ -#line 528 "program_parse.y" +#line 529 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); @@ -2473,7 +2476,7 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 536 "program_parse.y" +#line 537 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); @@ -2493,7 +2496,7 @@ yyreduce: case 49: /* Line 1455 of yacc.c */ -#line 553 "program_parse.y" +#line 554 "program_parse.y" { (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); @@ -2505,7 +2508,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 560 "program_parse.y" +#line 561 "program_parse.y" { struct asm_symbol temp_sym; @@ -2527,7 +2530,7 @@ yyreduce: case 51: /* Line 1455 of yacc.c */ -#line 579 "program_parse.y" +#line 580 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2543,7 +2546,7 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 590 "program_parse.y" +#line 591 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); @@ -2565,7 +2568,7 @@ yyreduce: case 53: /* Line 1455 of yacc.c */ -#line 610 "program_parse.y" +#line 611 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; @@ -2590,7 +2593,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 632 "program_parse.y" +#line 633 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2602,7 +2605,7 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 641 "program_parse.y" +#line 642 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2638,7 +2641,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 674 "program_parse.y" +#line 675 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; @@ -2648,7 +2651,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 681 "program_parse.y" +#line 682 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2668,7 +2671,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 696 "program_parse.y" +#line 697 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2721,7 +2724,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 746 "program_parse.y" +#line 747 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2768,7 +2771,7 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 788 "program_parse.y" +#line 789 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2784,7 +2787,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 799 "program_parse.y" +#line 800 "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)) { @@ -2810,7 +2813,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 820 "program_parse.y" +#line 821 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2823,7 +2826,7 @@ yyreduce: case 63: /* Line 1455 of yacc.c */ -#line 830 "program_parse.y" +#line 831 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2834,7 +2837,7 @@ yyreduce: case 64: /* Line 1455 of yacc.c */ -#line 836 "program_parse.y" +#line 837 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2868,7 +2871,7 @@ yyreduce: case 65: /* Line 1455 of yacc.c */ -#line 867 "program_parse.y" +#line 868 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2888,7 +2891,7 @@ yyreduce: case 68: /* Line 1455 of yacc.c */ -#line 886 "program_parse.y" +#line 887 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); @@ -2898,7 +2901,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 893 "program_parse.y" +#line 894 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2913,28 +2916,28 @@ yyreduce: case 70: /* Line 1455 of yacc.c */ -#line 904 "program_parse.y" +#line 905 "program_parse.y" { (yyval.integer) = 0; ;} break; case 71: /* Line 1455 of yacc.c */ -#line 905 "program_parse.y" +#line 906 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 72: /* Line 1455 of yacc.c */ -#line 906 "program_parse.y" +#line 907 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; case 73: /* Line 1455 of yacc.c */ -#line 910 "program_parse.y" +#line 911 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2949,7 +2952,7 @@ yyreduce: case 74: /* Line 1455 of yacc.c */ -#line 922 "program_parse.y" +#line 923 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2964,7 +2967,7 @@ yyreduce: case 75: /* Line 1455 of yacc.c */ -#line 934 "program_parse.y" +#line 935 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2985,7 +2988,7 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 952 "program_parse.y" +#line 953 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2999,7 +3002,7 @@ yyreduce: case 77: /* Line 1455 of yacc.c */ -#line 963 "program_parse.y" +#line 964 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -3014,21 +3017,21 @@ yyreduce: case 82: /* Line 1455 of yacc.c */ -#line 979 "program_parse.y" +#line 980 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 87: /* Line 1455 of yacc.c */ -#line 983 "program_parse.y" +#line 984 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 94: /* Line 1455 of yacc.c */ -#line 995 "program_parse.y" +#line 996 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -3049,7 +3052,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 1013 "program_parse.y" +#line 1014 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3058,7 +3061,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 1017 "program_parse.y" +#line 1018 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} @@ -3067,7 +3070,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 1023 "program_parse.y" +#line 1024 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} @@ -3076,7 +3079,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 1027 "program_parse.y" +#line 1028 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} @@ -3085,7 +3088,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 1031 "program_parse.y" +#line 1032 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} @@ -3094,7 +3097,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 1035 "program_parse.y" +#line 1036 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3108,7 +3111,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 1044 "program_parse.y" +#line 1045 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3122,7 +3125,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 1053 "program_parse.y" +#line 1054 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3131,7 +3134,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 1057 "program_parse.y" +#line 1058 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -3141,7 +3144,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 1062 "program_parse.y" +#line 1063 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} @@ -3150,7 +3153,7 @@ yyreduce: case 105: /* Line 1455 of yacc.c */ -#line 1068 "program_parse.y" +#line 1069 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3164,7 +3167,7 @@ yyreduce: case 109: /* Line 1455 of yacc.c */ -#line 1082 "program_parse.y" +#line 1083 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} @@ -3173,7 +3176,7 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 1086 "program_parse.y" +#line 1087 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} @@ -3182,7 +3185,7 @@ yyreduce: case 111: /* Line 1455 of yacc.c */ -#line 1090 "program_parse.y" +#line 1091 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} @@ -3191,7 +3194,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 1094 "program_parse.y" +#line 1095 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} @@ -3200,7 +3203,7 @@ yyreduce: case 115: /* 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) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3219,7 +3222,7 @@ yyreduce: case 116: /* Line 1455 of yacc.c */ -#line 1118 "program_parse.y" +#line 1119 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3244,7 +3247,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 1140 "program_parse.y" +#line 1141 "program_parse.y" { (yyval.integer) = 0; ;} @@ -3253,7 +3256,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 1144 "program_parse.y" +#line 1145 "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"); @@ -3267,7 +3270,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 1155 "program_parse.y" +#line 1156 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} @@ -3276,7 +3279,7 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 1161 "program_parse.y" +#line 1162 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} @@ -3285,7 +3288,7 @@ yyreduce: case 122: /* Line 1455 of yacc.c */ -#line 1168 "program_parse.y" +#line 1169 "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); @@ -3295,7 +3298,7 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 1175 "program_parse.y" +#line 1176 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3306,7 +3309,7 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 1181 "program_parse.y" +#line 1182 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3317,7 +3320,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 1187 "program_parse.y" +#line 1188 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3328,7 +3331,7 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 1195 "program_parse.y" +#line 1196 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3339,7 +3342,7 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 1201 "program_parse.y" +#line 1202 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3350,7 +3353,7 @@ yyreduce: case 128: /* Line 1455 of yacc.c */ -#line 1207 "program_parse.y" +#line 1208 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3361,7 +3364,7 @@ yyreduce: case 129: /* Line 1455 of yacc.c */ -#line 1215 "program_parse.y" +#line 1216 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3372,7 +3375,7 @@ yyreduce: case 130: /* Line 1455 of yacc.c */ -#line 1221 "program_parse.y" +#line 1222 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3383,7 +3386,7 @@ yyreduce: case 131: /* Line 1455 of yacc.c */ -#line 1227 "program_parse.y" +#line 1228 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3394,98 +3397,98 @@ yyreduce: case 132: /* Line 1455 of yacc.c */ -#line 1234 "program_parse.y" +#line 1235 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 133: /* Line 1455 of yacc.c */ -#line 1235 "program_parse.y" +#line 1236 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 134: /* Line 1455 of yacc.c */ -#line 1238 "program_parse.y" +#line 1239 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 135: /* Line 1455 of yacc.c */ -#line 1239 "program_parse.y" +#line 1240 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 136: /* Line 1455 of yacc.c */ -#line 1240 "program_parse.y" +#line 1241 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 137: /* Line 1455 of yacc.c */ -#line 1241 "program_parse.y" +#line 1242 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 138: /* Line 1455 of yacc.c */ -#line 1242 "program_parse.y" +#line 1243 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 139: /* Line 1455 of yacc.c */ -#line 1243 "program_parse.y" +#line 1244 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 140: /* Line 1455 of yacc.c */ -#line 1244 "program_parse.y" +#line 1245 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 141: /* Line 1455 of yacc.c */ -#line 1245 "program_parse.y" +#line 1246 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 142: /* Line 1455 of yacc.c */ -#line 1246 "program_parse.y" +#line 1247 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 143: /* Line 1455 of yacc.c */ -#line 1247 "program_parse.y" +#line 1248 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 144: /* Line 1455 of yacc.c */ -#line 1248 "program_parse.y" +#line 1249 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 145: /* Line 1455 of yacc.c */ -#line 1252 "program_parse.y" +#line 1253 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3497,7 +3500,7 @@ yyreduce: case 146: /* Line 1455 of yacc.c */ -#line 1261 "program_parse.y" +#line 1262 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3506,7 +3509,7 @@ yyreduce: case 147: /* Line 1455 of yacc.c */ -#line 1265 "program_parse.y" +#line 1266 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} @@ -3515,7 +3518,7 @@ yyreduce: case 148: /* Line 1455 of yacc.c */ -#line 1269 "program_parse.y" +#line 1270 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} @@ -3524,7 +3527,7 @@ yyreduce: case 149: /* Line 1455 of yacc.c */ -#line 1275 "program_parse.y" +#line 1276 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3536,7 +3539,7 @@ yyreduce: case 150: /* Line 1455 of yacc.c */ -#line 1284 "program_parse.y" +#line 1285 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3545,7 +3548,7 @@ yyreduce: case 151: /* Line 1455 of yacc.c */ -#line 1288 "program_parse.y" +#line 1289 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} @@ -3554,7 +3557,7 @@ yyreduce: case 152: /* Line 1455 of yacc.c */ -#line 1292 "program_parse.y" +#line 1293 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3568,7 +3571,7 @@ yyreduce: case 153: /* Line 1455 of yacc.c */ -#line 1301 "program_parse.y" +#line 1302 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} @@ -3577,7 +3580,7 @@ yyreduce: case 154: /* Line 1455 of yacc.c */ -#line 1305 "program_parse.y" +#line 1306 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} @@ -3586,7 +3589,7 @@ yyreduce: case 155: /* Line 1455 of yacc.c */ -#line 1311 "program_parse.y" +#line 1312 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} @@ -3595,7 +3598,7 @@ yyreduce: case 156: /* Line 1455 of yacc.c */ -#line 1317 "program_parse.y" +#line 1318 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; @@ -3605,7 +3608,7 @@ yyreduce: case 157: /* Line 1455 of yacc.c */ -#line 1324 "program_parse.y" +#line 1325 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; @@ -3615,7 +3618,7 @@ yyreduce: case 158: /* Line 1455 of yacc.c */ -#line 1329 "program_parse.y" +#line 1330 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3626,7 +3629,7 @@ yyreduce: case 159: /* Line 1455 of yacc.c */ -#line 1337 "program_parse.y" +#line 1338 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3639,7 +3642,7 @@ yyreduce: case 161: /* Line 1455 of yacc.c */ -#line 1349 "program_parse.y" +#line 1350 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3650,7 +3653,7 @@ yyreduce: case 162: /* Line 1455 of yacc.c */ -#line 1357 "program_parse.y" +#line 1358 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} @@ -3659,7 +3662,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 1363 "program_parse.y" +#line 1364 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} @@ -3668,7 +3671,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1367 "program_parse.y" +#line 1368 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} @@ -3677,7 +3680,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1371 "program_parse.y" +#line 1372 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} @@ -3686,7 +3689,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1377 "program_parse.y" +#line 1378 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3700,7 +3703,7 @@ yyreduce: case 167: /* 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_TEXGEN; @@ -3712,7 +3715,7 @@ yyreduce: case 168: /* Line 1455 of yacc.c */ -#line 1397 "program_parse.y" +#line 1398 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} @@ -3721,7 +3724,7 @@ yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 1401 "program_parse.y" +#line 1402 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} @@ -3730,7 +3733,7 @@ yyreduce: case 170: /* Line 1455 of yacc.c */ -#line 1406 "program_parse.y" +#line 1407 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} @@ -3739,7 +3742,7 @@ yyreduce: case 171: /* Line 1455 of yacc.c */ -#line 1410 "program_parse.y" +#line 1411 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} @@ -3748,7 +3751,7 @@ yyreduce: case 172: /* Line 1455 of yacc.c */ -#line 1414 "program_parse.y" +#line 1415 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} @@ -3757,7 +3760,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1418 "program_parse.y" +#line 1419 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} @@ -3766,7 +3769,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1424 "program_parse.y" +#line 1425 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3776,7 +3779,7 @@ yyreduce: case 175: /* Line 1455 of yacc.c */ -#line 1431 "program_parse.y" +#line 1432 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} @@ -3785,7 +3788,7 @@ yyreduce: case 176: /* Line 1455 of yacc.c */ -#line 1435 "program_parse.y" +#line 1436 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} @@ -3794,7 +3797,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1441 "program_parse.y" +#line 1442 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3805,7 +3808,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1449 "program_parse.y" +#line 1450 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3819,7 +3822,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1460 "program_parse.y" +#line 1461 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); @@ -3829,7 +3832,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1467 "program_parse.y" +#line 1468 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} @@ -3838,7 +3841,7 @@ yyreduce: case 181: /* Line 1455 of yacc.c */ -#line 1471 "program_parse.y" +#line 1472 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} @@ -3847,7 +3850,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 1477 "program_parse.y" +#line 1478 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3860,7 +3863,7 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 1487 "program_parse.y" +#line 1488 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3873,7 +3876,7 @@ yyreduce: case 184: /* Line 1455 of yacc.c */ -#line 1497 "program_parse.y" +#line 1498 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; @@ -3883,7 +3886,7 @@ yyreduce: case 185: /* Line 1455 of yacc.c */ -#line 1502 "program_parse.y" +#line 1503 "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). @@ -3904,7 +3907,7 @@ yyreduce: case 186: /* Line 1455 of yacc.c */ -#line 1520 "program_parse.y" +#line 1521 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3915,7 +3918,7 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1528 "program_parse.y" +#line 1529 "program_parse.y" { (yyval.integer) = 0; ;} @@ -3924,7 +3927,7 @@ yyreduce: case 188: /* Line 1455 of yacc.c */ -#line 1532 "program_parse.y" +#line 1533 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -3933,7 +3936,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1538 "program_parse.y" +#line 1539 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} @@ -3942,7 +3945,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1542 "program_parse.y" +#line 1543 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} @@ -3951,7 +3954,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1546 "program_parse.y" +#line 1547 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} @@ -3960,7 +3963,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1552 "program_parse.y" +#line 1553 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3974,7 +3977,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1563 "program_parse.y" +#line 1564 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -3984,7 +3987,7 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1568 "program_parse.y" +#line 1569 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; @@ -3994,7 +3997,7 @@ yyreduce: case 195: /* Line 1455 of yacc.c */ -#line 1573 "program_parse.y" +#line 1574 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; @@ -4004,7 +4007,7 @@ yyreduce: case 196: /* Line 1455 of yacc.c */ -#line 1578 "program_parse.y" +#line 1579 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); @@ -4014,7 +4017,7 @@ yyreduce: case 197: /* Line 1455 of yacc.c */ -#line 1583 "program_parse.y" +#line 1584 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; @@ -4024,7 +4027,7 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1588 "program_parse.y" +#line 1589 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); @@ -4034,7 +4037,7 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1595 "program_parse.y" +#line 1596 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4043,7 +4046,7 @@ yyreduce: case 200: /* Line 1455 of yacc.c */ -#line 1599 "program_parse.y" +#line 1600 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} @@ -4052,7 +4055,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1604 "program_parse.y" +#line 1605 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -4069,7 +4072,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1617 "program_parse.y" +#line 1618 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -4081,7 +4084,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1625 "program_parse.y" +#line 1626 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4095,7 +4098,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1636 "program_parse.y" +#line 1637 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; @@ -4105,7 +4108,7 @@ yyreduce: case 209: /* Line 1455 of yacc.c */ -#line 1648 "program_parse.y" +#line 1649 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4118,7 +4121,7 @@ yyreduce: case 210: /* Line 1455 of yacc.c */ -#line 1658 "program_parse.y" +#line 1659 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4128,7 +4131,7 @@ yyreduce: case 211: /* Line 1455 of yacc.c */ -#line 1663 "program_parse.y" +#line 1664 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4138,7 +4141,7 @@ yyreduce: case 212: /* Line 1455 of yacc.c */ -#line 1670 "program_parse.y" +#line 1671 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4151,7 +4154,7 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 1680 "program_parse.y" +#line 1681 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4164,7 +4167,7 @@ yyreduce: case 214: /* Line 1455 of yacc.c */ -#line 1689 "program_parse.y" +#line 1690 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); @@ -4174,7 +4177,7 @@ yyreduce: case 215: /* Line 1455 of yacc.c */ -#line 1694 "program_parse.y" +#line 1695 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); @@ -4184,7 +4187,7 @@ yyreduce: case 216: /* Line 1455 of yacc.c */ -#line 1701 "program_parse.y" +#line 1702 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4197,7 +4200,7 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1711 "program_parse.y" +#line 1712 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4210,7 +4213,7 @@ yyreduce: case 218: /* Line 1455 of yacc.c */ -#line 1721 "program_parse.y" +#line 1722 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4223,7 +4226,7 @@ yyreduce: case 223: /* Line 1455 of yacc.c */ -#line 1736 "program_parse.y" +#line 1737 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4236,7 +4239,7 @@ yyreduce: case 224: /* Line 1455 of yacc.c */ -#line 1746 "program_parse.y" +#line 1747 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4249,7 +4252,7 @@ yyreduce: case 225: /* Line 1455 of yacc.c */ -#line 1754 "program_parse.y" +#line 1755 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4262,7 +4265,7 @@ yyreduce: case 226: /* Line 1455 of yacc.c */ -#line 1764 "program_parse.y" +#line 1765 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4275,7 +4278,7 @@ yyreduce: case 227: /* Line 1455 of yacc.c */ -#line 1772 "program_parse.y" +#line 1773 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4288,7 +4291,7 @@ yyreduce: case 228: /* Line 1455 of yacc.c */ -#line 1781 "program_parse.y" +#line 1782 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4301,7 +4304,7 @@ yyreduce: case 229: /* Line 1455 of yacc.c */ -#line 1790 "program_parse.y" +#line 1791 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4314,7 +4317,7 @@ yyreduce: case 230: /* Line 1455 of yacc.c */ -#line 1800 "program_parse.y" +#line 1801 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} @@ -4323,7 +4326,7 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 1804 "program_parse.y" +#line 1805 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} @@ -4332,35 +4335,35 @@ yyreduce: case 232: /* Line 1455 of yacc.c */ -#line 1809 "program_parse.y" +#line 1810 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 233: /* Line 1455 of yacc.c */ -#line 1810 "program_parse.y" +#line 1811 "program_parse.y" { (yyval.negate) = TRUE; ;} break; case 234: /* Line 1455 of yacc.c */ -#line 1811 "program_parse.y" +#line 1812 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 235: /* Line 1455 of yacc.c */ -#line 1814 "program_parse.y" +#line 1815 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 237: /* Line 1455 of yacc.c */ -#line 1818 "program_parse.y" +#line 1819 "program_parse.y" { /* NV_fragment_program_option defines the size qualifiers in a * fairly broken way. "SHORT" or "LONG" can optionally be used @@ -4399,7 +4402,7 @@ yyreduce: case 238: /* Line 1455 of yacc.c */ -#line 1852 "program_parse.y" +#line 1853 "program_parse.y" { ;} break; @@ -4407,14 +4410,14 @@ yyreduce: case 239: /* Line 1455 of yacc.c */ -#line 1856 "program_parse.y" +#line 1857 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 241: /* Line 1455 of yacc.c */ -#line 1860 "program_parse.y" +#line 1861 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4425,7 +4428,7 @@ yyreduce: case 242: /* Line 1455 of yacc.c */ -#line 1866 "program_parse.y" +#line 1867 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4436,7 +4439,7 @@ yyreduce: case 243: /* Line 1455 of yacc.c */ -#line 1874 "program_parse.y" +#line 1875 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); @@ -4452,7 +4455,7 @@ yyreduce: case 244: /* Line 1455 of yacc.c */ -#line 1887 "program_parse.y" +#line 1888 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4466,7 +4469,7 @@ yyreduce: case 245: /* Line 1455 of yacc.c */ -#line 1896 "program_parse.y" +#line 1897 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4480,7 +4483,7 @@ yyreduce: case 246: /* Line 1455 of yacc.c */ -#line 1905 "program_parse.y" +#line 1906 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} @@ -4489,7 +4492,7 @@ yyreduce: case 247: /* Line 1455 of yacc.c */ -#line 1909 "program_parse.y" +#line 1910 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4503,7 +4506,7 @@ yyreduce: case 248: /* Line 1455 of yacc.c */ -#line 1918 "program_parse.y" +#line 1919 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4517,7 +4520,7 @@ yyreduce: case 249: /* Line 1455 of yacc.c */ -#line 1927 "program_parse.y" +#line 1928 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4531,7 +4534,7 @@ yyreduce: case 250: /* Line 1455 of yacc.c */ -#line 1938 "program_parse.y" +#line 1939 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} @@ -4540,7 +4543,7 @@ yyreduce: case 251: /* Line 1455 of yacc.c */ -#line 1944 "program_parse.y" +#line 1945 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4551,7 +4554,7 @@ yyreduce: case 252: /* Line 1455 of yacc.c */ -#line 1950 "program_parse.y" +#line 1951 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4565,7 +4568,7 @@ yyreduce: case 253: /* Line 1455 of yacc.c */ -#line 1959 "program_parse.y" +#line 1960 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4579,7 +4582,7 @@ yyreduce: case 254: /* Line 1455 of yacc.c */ -#line 1970 "program_parse.y" +#line 1971 "program_parse.y" { (yyval.integer) = 0; ;} @@ -4588,7 +4591,7 @@ yyreduce: case 255: /* Line 1455 of yacc.c */ -#line 1974 "program_parse.y" +#line 1975 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4602,7 +4605,7 @@ yyreduce: case 256: /* Line 1455 of yacc.c */ -#line 1983 "program_parse.y" +#line 1984 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4616,91 +4619,91 @@ yyreduce: case 257: /* Line 1455 of yacc.c */ -#line 1993 "program_parse.y" +#line 1994 "program_parse.y" { (yyval.integer) = 0; ;} break; case 258: /* Line 1455 of yacc.c */ -#line 1994 "program_parse.y" +#line 1995 "program_parse.y" { (yyval.integer) = 0; ;} break; case 259: /* Line 1455 of yacc.c */ -#line 1995 "program_parse.y" +#line 1996 "program_parse.y" { (yyval.integer) = 1; ;} break; case 260: /* Line 1455 of yacc.c */ -#line 1998 "program_parse.y" +#line 1999 "program_parse.y" { (yyval.integer) = 0; ;} break; case 261: /* Line 1455 of yacc.c */ -#line 1999 "program_parse.y" +#line 2000 "program_parse.y" { (yyval.integer) = 0; ;} break; case 262: /* Line 1455 of yacc.c */ -#line 2000 "program_parse.y" +#line 2001 "program_parse.y" { (yyval.integer) = 1; ;} break; case 263: /* Line 1455 of yacc.c */ -#line 2003 "program_parse.y" +#line 2004 "program_parse.y" { (yyval.integer) = 0; ;} break; case 264: /* Line 1455 of yacc.c */ -#line 2004 "program_parse.y" +#line 2005 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 265: /* Line 1455 of yacc.c */ -#line 2007 "program_parse.y" +#line 2008 "program_parse.y" { (yyval.integer) = 0; ;} break; case 266: /* Line 1455 of yacc.c */ -#line 2008 "program_parse.y" +#line 2009 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 267: /* Line 1455 of yacc.c */ -#line 2011 "program_parse.y" +#line 2012 "program_parse.y" { (yyval.integer) = 0; ;} break; case 268: /* Line 1455 of yacc.c */ -#line 2012 "program_parse.y" +#line 2013 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 269: /* Line 1455 of yacc.c */ -#line 2016 "program_parse.y" +#line 2017 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4714,7 +4717,7 @@ yyreduce: case 270: /* Line 1455 of yacc.c */ -#line 2027 "program_parse.y" +#line 2028 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4728,7 +4731,7 @@ yyreduce: case 271: /* Line 1455 of yacc.c */ -#line 2038 "program_parse.y" +#line 2039 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4742,7 +4745,7 @@ yyreduce: case 272: /* Line 1455 of yacc.c */ -#line 2049 "program_parse.y" +#line 2050 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4766,7 +4769,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4770 "program_parse.tab.c" +#line 4773 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4985,7 +4988,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2069 "program_parse.y" +#line 2074 "program_parse.y" void diff --git a/src/mesa/shader/program_parse.tab.h b/src/mesa/shader/program_parse.tab.h index 5f89532d65..c6ed6c777e 100644 --- a/src/mesa/shader/program_parse.tab.h +++ b/src/mesa/shader/program_parse.tab.h @@ -136,13 +136,14 @@ VTXATTRIB = 352, WEIGHT = 353, IDENTIFIER = 354, - MASK4 = 355, - MASK3 = 356, - MASK2 = 357, - MASK1 = 358, - SWIZZLE = 359, - DOT_DOT = 360, - DOT = 361 + USED_IDENTIFIER = 355, + MASK4 = 356, + MASK3 = 357, + MASK2 = 358, + MASK1 = 359, + SWIZZLE = 360, + DOT_DOT = 361, + DOT = 362 }; #endif @@ -182,7 +183,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 186 "program_parse.tab.h" +#line 187 "program_parse.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 51cc9f7f11..d6bac07081 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -178,7 +178,8 @@ static struct asm_instruction *asm_instruction_copy_ctor( %token VERTEX VTXATTRIB %token WEIGHT -%token IDENTIFIER +%token IDENTIFIER USED_IDENTIFIER +%type string %token MASK4 MASK3 MASK2 MASK1 SWIZZLE %token DOT_DOT %token DOT @@ -289,7 +290,7 @@ optionSequence: optionSequence option | ; -option: OPTION IDENTIFIER ';' +option: OPTION string ';' { int valid = 0; @@ -692,7 +693,7 @@ extSwizSel: INTEGER $$.xyzw_valid = 1; $$.rgba_valid = 1; } - | IDENTIFIER + | string { if (strlen($1) > 1) { yyerror(& @1, state, "invalid extended swizzle selector"); @@ -742,7 +743,7 @@ extSwizSel: INTEGER } ; -srcReg: IDENTIFIER /* temporaryReg | progParamSingle */ +srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */ { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -832,7 +833,7 @@ dstReg: resultBinding $$.File = PROGRAM_OUTPUT; $$.Index = $1; } - | IDENTIFIER /* temporaryReg | vertexResultReg */ + | USED_IDENTIFIER /* temporaryReg | vertexResultReg */ { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -863,7 +864,7 @@ dstReg: resultBinding } ; -progParamArray: IDENTIFIER +progParamArray: USED_IDENTIFIER { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -930,7 +931,7 @@ addrRegNegOffset: INTEGER } ; -addrReg: IDENTIFIER +addrReg: USED_IDENTIFIER { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -1814,7 +1815,7 @@ optionalSign: '+' { $$ = FALSE; } TEMP_statement: optVarSize TEMP { $$ = $2; } varNameList ; -optVarSize: IDENTIFIER +optVarSize: string { /* NV_fragment_program_option defines the size qualifiers in a * fairly broken way. "SHORT" or "LONG" can optionally be used @@ -2045,7 +2046,7 @@ legacyTexUnitNum: INTEGER } ; -ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER +ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $2); @@ -2066,6 +2067,10 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER } ; +string: IDENTIFIER + | USED_IDENTIFIER + ; + %% void -- cgit v1.2.3 From 81722c5d7e8e93d837510b9e6e5d014ec64cf4b3 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 10 Sep 2009 15:04:24 -0700 Subject: NV fp parser: Add support for condition codes Conditional write masks and the condition-code based KIL instruction are all supported. The specific behavior of KIL in the following shader may or may not match the behavior of other implementations: !!ARBfp1.0 TEMP GT; MOVC GT, fragment.texcoord[0]; KIL GT.x; END Should be it interpreted as 'KIL srcReg' or as 'KIL ccTest'? The current parser will interpret it as 'KIL srcReg'. --- src/mesa/shader/program_parse.tab.c | 1895 ++++++++++++++++++--------------- src/mesa/shader/program_parse.y | 102 +- src/mesa/shader/program_parse_extra.c | 54 + src/mesa/shader/program_parser.h | 13 + 4 files changed, 1183 insertions(+), 881 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index d37b20ba42..33195c0b16 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -374,7 +374,7 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 259 "program_parse.y" +#line 261 "program_parse.y" extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner); @@ -598,16 +598,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 5 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 393 +#define YYLAST 396 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 118 +#define YYNTOKENS 120 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 138 +#define YYNNTS 143 /* YYNRULES -- Number of rules. */ -#define YYNRULES 274 +#define YYNRULES 282 /* YYNRULES -- Number of states. */ -#define YYNSTATES 460 +#define YYNSTATES 473 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -623,15 +623,15 @@ static const yytype_uint8 yytranslate[] = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 113, 109, 114, 2, 2, 2, 2, + 115, 116, 2, 113, 109, 114, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 108, - 2, 115, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 117, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 111, 2, 112, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 116, 110, 117, 2, 2, 2, 2, + 2, 2, 2, 118, 110, 119, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -666,147 +666,151 @@ static const yytype_uint16 yyprhs[] = 0, 0, 3, 8, 10, 12, 15, 16, 20, 23, 24, 27, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52, 54, 59, 64, 69, 76, 83, - 92, 101, 104, 117, 120, 122, 124, 126, 128, 130, - 132, 134, 136, 138, 140, 142, 144, 151, 154, 159, - 162, 164, 168, 174, 177, 180, 188, 191, 193, 195, - 197, 199, 204, 206, 208, 210, 212, 214, 216, 218, - 222, 223, 226, 229, 231, 233, 235, 237, 239, 241, - 243, 245, 247, 248, 250, 252, 254, 256, 257, 259, - 261, 263, 265, 267, 269, 274, 277, 280, 282, 285, - 287, 290, 292, 295, 300, 305, 307, 308, 312, 314, - 316, 319, 321, 324, 326, 328, 332, 339, 340, 342, - 345, 350, 352, 356, 358, 360, 362, 364, 366, 368, - 370, 372, 374, 376, 379, 382, 385, 388, 391, 394, - 397, 400, 403, 406, 409, 412, 416, 418, 420, 422, - 428, 430, 432, 434, 437, 439, 441, 444, 446, 449, - 456, 458, 462, 464, 466, 468, 470, 472, 477, 479, - 481, 483, 485, 487, 489, 492, 494, 496, 502, 504, - 507, 509, 511, 517, 520, 521, 528, 532, 533, 535, - 537, 539, 541, 543, 546, 548, 550, 553, 558, 563, - 564, 566, 568, 570, 572, 575, 577, 579, 581, 583, - 589, 591, 595, 601, 607, 609, 613, 619, 621, 623, - 625, 627, 629, 631, 633, 635, 637, 641, 647, 655, - 665, 668, 671, 673, 675, 676, 677, 682, 684, 685, - 686, 690, 694, 696, 702, 705, 708, 711, 714, 718, - 721, 725, 726, 728, 730, 731, 733, 735, 736, 738, - 740, 741, 743, 745, 746, 750, 751, 755, 756, 760, - 762, 764, 766, 771, 773 + 92, 101, 104, 107, 120, 123, 125, 127, 129, 131, + 133, 135, 137, 139, 141, 143, 145, 147, 154, 157, + 162, 165, 167, 171, 177, 181, 184, 192, 195, 197, + 199, 201, 203, 208, 210, 212, 214, 216, 218, 220, + 222, 226, 227, 230, 233, 235, 237, 239, 241, 243, + 245, 247, 249, 251, 252, 254, 256, 258, 260, 261, + 265, 269, 270, 273, 276, 278, 280, 282, 284, 286, + 288, 290, 292, 297, 300, 303, 305, 308, 310, 313, + 315, 318, 323, 328, 330, 331, 335, 337, 339, 342, + 344, 347, 349, 351, 355, 362, 363, 365, 368, 373, + 375, 379, 381, 383, 385, 387, 389, 391, 393, 395, + 397, 399, 402, 405, 408, 411, 414, 417, 420, 423, + 426, 429, 432, 435, 439, 441, 443, 445, 451, 453, + 455, 457, 460, 462, 464, 467, 469, 472, 479, 481, + 485, 487, 489, 491, 493, 495, 500, 502, 504, 506, + 508, 510, 512, 515, 517, 519, 525, 527, 530, 532, + 534, 540, 543, 544, 551, 555, 556, 558, 560, 562, + 564, 566, 569, 571, 573, 576, 581, 586, 587, 589, + 591, 593, 595, 598, 600, 602, 604, 606, 612, 614, + 618, 624, 630, 632, 636, 642, 644, 646, 648, 650, + 652, 654, 656, 658, 660, 664, 670, 678, 688, 691, + 694, 696, 698, 699, 700, 705, 707, 708, 709, 713, + 717, 719, 725, 728, 731, 734, 737, 741, 744, 748, + 749, 751, 753, 754, 756, 758, 759, 761, 763, 764, + 766, 768, 769, 773, 774, 778, 779, 783, 785, 787, + 789, 794, 796 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int16 yyrhs[] = { - 119, 0, -1, 120, 121, 123, 12, -1, 3, -1, - 4, -1, 121, 122, -1, -1, 8, 255, 108, -1, - 123, 124, -1, -1, 125, 108, -1, 163, 108, -1, - 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, - 131, -1, 132, -1, 133, -1, 139, -1, 134, -1, - 135, -1, 136, -1, 19, 144, 109, 140, -1, 18, - 143, 109, 142, -1, 16, 143, 109, 140, -1, 14, - 143, 109, 140, 109, 140, -1, 13, 143, 109, 142, - 109, 142, -1, 17, 143, 109, 142, 109, 142, 109, - 142, -1, 15, 143, 109, 142, 109, 137, 109, 138, - -1, 20, 142, -1, 22, 143, 109, 142, 109, 142, - 109, 142, 109, 137, 109, 138, -1, 83, 249, -1, - 84, -1, 85, -1, 86, -1, 87, -1, 88, -1, - 89, -1, 90, -1, 91, -1, 92, -1, 93, -1, - 94, -1, 95, -1, 21, 143, 109, 148, 109, 145, - -1, 234, 141, -1, 234, 110, 141, 110, -1, 148, - 160, -1, 231, -1, 234, 148, 161, -1, 234, 110, - 148, 161, 110, -1, 149, 162, -1, 157, 159, -1, - 146, 109, 146, 109, 146, 109, 146, -1, 234, 147, - -1, 23, -1, 255, -1, 100, -1, 165, -1, 150, - 111, 151, 112, -1, 179, -1, 242, -1, 100, -1, - 100, -1, 152, -1, 153, -1, 23, -1, 157, 158, - 154, -1, -1, 113, 155, -1, 114, 156, -1, 23, - -1, 23, -1, 100, -1, 104, -1, 104, -1, 104, - -1, 104, -1, 101, -1, 105, -1, -1, 101, -1, - 102, -1, 103, -1, 104, -1, -1, 164, -1, 171, - -1, 235, -1, 238, -1, 241, -1, 254, -1, 7, - 99, 115, 165, -1, 96, 166, -1, 38, 170, -1, - 60, -1, 98, 168, -1, 53, -1, 29, 247, -1, - 37, -1, 74, 248, -1, 50, 111, 169, 112, -1, - 97, 111, 167, 112, -1, 23, -1, -1, 111, 169, - 112, -1, 23, -1, 60, -1, 29, 247, -1, 37, - -1, 74, 248, -1, 172, -1, 173, -1, 10, 99, - 175, -1, 10, 99, 111, 174, 112, 176, -1, -1, - 23, -1, 115, 178, -1, 115, 116, 177, 117, -1, - 180, -1, 177, 109, 180, -1, 182, -1, 218, -1, - 228, -1, 182, -1, 218, -1, 229, -1, 181, -1, - 219, -1, 228, -1, 182, -1, 73, 206, -1, 73, - 183, -1, 73, 185, -1, 73, 188, -1, 73, 190, - -1, 73, 196, -1, 73, 192, -1, 73, 199, -1, - 73, 201, -1, 73, 203, -1, 73, 205, -1, 73, - 217, -1, 47, 246, 184, -1, 194, -1, 33, -1, - 69, -1, 43, 111, 195, 112, 186, -1, 194, -1, - 60, -1, 26, -1, 72, 187, -1, 40, -1, 32, - -1, 44, 189, -1, 25, -1, 246, 67, -1, 45, - 111, 195, 112, 246, 191, -1, 194, -1, 75, 250, - 193, -1, 29, -1, 25, -1, 31, -1, 71, -1, - 23, -1, 76, 248, 197, 198, -1, 35, -1, 54, - -1, 79, -1, 80, -1, 78, -1, 77, -1, 36, - 200, -1, 29, -1, 56, -1, 28, 111, 202, 112, - 57, -1, 23, -1, 58, 204, -1, 70, -1, 26, - -1, 208, 66, 111, 211, 112, -1, 208, 207, -1, - -1, 66, 111, 211, 106, 211, 112, -1, 49, 212, - 209, -1, -1, 210, -1, 41, -1, 82, -1, 42, - -1, 23, -1, 51, 213, -1, 63, -1, 52, -1, - 81, 248, -1, 55, 111, 215, 112, -1, 48, 111, - 216, 112, -1, -1, 214, -1, 23, -1, 23, -1, - 23, -1, 30, 64, -1, 222, -1, 225, -1, 220, - -1, 223, -1, 62, 34, 111, 221, 112, -1, 226, - -1, 226, 106, 226, -1, 62, 34, 111, 226, 112, - -1, 62, 46, 111, 224, 112, -1, 227, -1, 227, - 106, 227, -1, 62, 46, 111, 227, 112, -1, 23, - -1, 23, -1, 230, -1, 232, -1, 231, -1, 232, - -1, 233, -1, 24, -1, 23, -1, 116, 233, 117, - -1, 116, 233, 109, 233, 117, -1, 116, 233, 109, - 233, 109, 233, 117, -1, 116, 233, 109, 233, 109, - 233, 109, 233, 117, -1, 234, 24, -1, 234, 23, - -1, 113, -1, 114, -1, -1, -1, 237, 11, 236, - 240, -1, 255, -1, -1, -1, 5, 239, 240, -1, - 240, 109, 99, -1, 99, -1, 237, 9, 99, 115, - 242, -1, 65, 60, -1, 65, 37, -1, 65, 243, - -1, 65, 59, -1, 65, 74, 248, -1, 65, 30, - -1, 29, 244, 245, -1, -1, 39, -1, 27, -1, - -1, 61, -1, 68, -1, -1, 39, -1, 27, -1, - -1, 61, -1, 68, -1, -1, 111, 251, 112, -1, - -1, 111, 252, 112, -1, -1, 111, 253, 112, -1, - 23, -1, 23, -1, 23, -1, 6, 99, 115, 100, - -1, 99, -1, 100, -1 + 121, 0, -1, 122, 123, 125, 12, -1, 3, -1, + 4, -1, 123, 124, -1, -1, 8, 262, 108, -1, + 125, 126, -1, -1, 127, 108, -1, 170, 108, -1, + 128, -1, 129, -1, 130, -1, 131, -1, 132, -1, + 133, -1, 134, -1, 135, -1, 141, -1, 136, -1, + 137, -1, 138, -1, 19, 146, 109, 142, -1, 18, + 145, 109, 144, -1, 16, 145, 109, 142, -1, 14, + 145, 109, 142, 109, 142, -1, 13, 145, 109, 144, + 109, 144, -1, 17, 145, 109, 144, 109, 144, 109, + 144, -1, 15, 145, 109, 144, 109, 139, 109, 140, + -1, 20, 144, -1, 20, 166, -1, 22, 145, 109, + 144, 109, 144, 109, 144, 109, 139, 109, 140, -1, + 83, 256, -1, 84, -1, 85, -1, 86, -1, 87, + -1, 88, -1, 89, -1, 90, -1, 91, -1, 92, + -1, 93, -1, 94, -1, 95, -1, 21, 145, 109, + 150, 109, 147, -1, 241, 143, -1, 241, 110, 143, + 110, -1, 150, 162, -1, 238, -1, 241, 150, 163, + -1, 241, 110, 150, 163, 110, -1, 151, 164, 165, + -1, 159, 161, -1, 148, 109, 148, 109, 148, 109, + 148, -1, 241, 149, -1, 23, -1, 262, -1, 100, + -1, 172, -1, 152, 111, 153, 112, -1, 186, -1, + 249, -1, 100, -1, 100, -1, 154, -1, 155, -1, + 23, -1, 159, 160, 156, -1, -1, 113, 157, -1, + 114, 158, -1, 23, -1, 23, -1, 100, -1, 104, + -1, 104, -1, 104, -1, 104, -1, 101, -1, 105, + -1, -1, 101, -1, 102, -1, 103, -1, 104, -1, + -1, 115, 166, 116, -1, 115, 167, 116, -1, -1, + 168, 163, -1, 169, 163, -1, 99, -1, 100, -1, + 171, -1, 178, -1, 242, -1, 245, -1, 248, -1, + 261, -1, 7, 99, 117, 172, -1, 96, 173, -1, + 38, 177, -1, 60, -1, 98, 175, -1, 53, -1, + 29, 254, -1, 37, -1, 74, 255, -1, 50, 111, + 176, 112, -1, 97, 111, 174, 112, -1, 23, -1, + -1, 111, 176, 112, -1, 23, -1, 60, -1, 29, + 254, -1, 37, -1, 74, 255, -1, 179, -1, 180, + -1, 10, 99, 182, -1, 10, 99, 111, 181, 112, + 183, -1, -1, 23, -1, 117, 185, -1, 117, 118, + 184, 119, -1, 187, -1, 184, 109, 187, -1, 189, + -1, 225, -1, 235, -1, 189, -1, 225, -1, 236, + -1, 188, -1, 226, -1, 235, -1, 189, -1, 73, + 213, -1, 73, 190, -1, 73, 192, -1, 73, 195, + -1, 73, 197, -1, 73, 203, -1, 73, 199, -1, + 73, 206, -1, 73, 208, -1, 73, 210, -1, 73, + 212, -1, 73, 224, -1, 47, 253, 191, -1, 201, + -1, 33, -1, 69, -1, 43, 111, 202, 112, 193, + -1, 201, -1, 60, -1, 26, -1, 72, 194, -1, + 40, -1, 32, -1, 44, 196, -1, 25, -1, 253, + 67, -1, 45, 111, 202, 112, 253, 198, -1, 201, + -1, 75, 257, 200, -1, 29, -1, 25, -1, 31, + -1, 71, -1, 23, -1, 76, 255, 204, 205, -1, + 35, -1, 54, -1, 79, -1, 80, -1, 78, -1, + 77, -1, 36, 207, -1, 29, -1, 56, -1, 28, + 111, 209, 112, 57, -1, 23, -1, 58, 211, -1, + 70, -1, 26, -1, 215, 66, 111, 218, 112, -1, + 215, 214, -1, -1, 66, 111, 218, 106, 218, 112, + -1, 49, 219, 216, -1, -1, 217, -1, 41, -1, + 82, -1, 42, -1, 23, -1, 51, 220, -1, 63, + -1, 52, -1, 81, 255, -1, 55, 111, 222, 112, + -1, 48, 111, 223, 112, -1, -1, 221, -1, 23, + -1, 23, -1, 23, -1, 30, 64, -1, 229, -1, + 232, -1, 227, -1, 230, -1, 62, 34, 111, 228, + 112, -1, 233, -1, 233, 106, 233, -1, 62, 34, + 111, 233, 112, -1, 62, 46, 111, 231, 112, -1, + 234, -1, 234, 106, 234, -1, 62, 46, 111, 234, + 112, -1, 23, -1, 23, -1, 237, -1, 239, -1, + 238, -1, 239, -1, 240, -1, 24, -1, 23, -1, + 118, 240, 119, -1, 118, 240, 109, 240, 119, -1, + 118, 240, 109, 240, 109, 240, 119, -1, 118, 240, + 109, 240, 109, 240, 109, 240, 119, -1, 241, 24, + -1, 241, 23, -1, 113, -1, 114, -1, -1, -1, + 244, 11, 243, 247, -1, 262, -1, -1, -1, 5, + 246, 247, -1, 247, 109, 99, -1, 99, -1, 244, + 9, 99, 117, 249, -1, 65, 60, -1, 65, 37, + -1, 65, 250, -1, 65, 59, -1, 65, 74, 255, + -1, 65, 30, -1, 29, 251, 252, -1, -1, 39, + -1, 27, -1, -1, 61, -1, 68, -1, -1, 39, + -1, 27, -1, -1, 61, -1, 68, -1, -1, 111, + 258, 112, -1, -1, 111, 259, 112, -1, -1, 111, + 260, 112, -1, 23, -1, 23, -1, 23, -1, 6, + 99, 117, 100, -1, 99, -1, 100, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 266, 266, 269, 277, 289, 290, 293, 315, 316, - 319, 334, 337, 342, 349, 350, 351, 352, 353, 354, - 355, 358, 359, 360, 363, 369, 375, 381, 388, 394, - 401, 445, 452, 496, 502, 503, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 516, 528, 536, 553, - 560, 579, 590, 610, 632, 641, 674, 681, 696, 746, - 788, 799, 820, 830, 836, 867, 884, 884, 886, 893, - 905, 906, 907, 910, 922, 934, 952, 963, 975, 977, - 978, 979, 980, 983, 983, 983, 983, 984, 987, 988, - 989, 990, 991, 992, 995, 1013, 1017, 1023, 1027, 1031, - 1035, 1044, 1053, 1057, 1062, 1068, 1079, 1079, 1080, 1082, - 1086, 1090, 1094, 1100, 1100, 1102, 1118, 1141, 1144, 1155, - 1161, 1167, 1168, 1175, 1181, 1187, 1195, 1201, 1207, 1215, - 1221, 1227, 1235, 1236, 1239, 1240, 1241, 1242, 1243, 1244, - 1245, 1246, 1247, 1248, 1249, 1252, 1261, 1265, 1269, 1275, - 1284, 1288, 1292, 1301, 1305, 1311, 1317, 1324, 1329, 1337, - 1347, 1349, 1357, 1363, 1367, 1371, 1377, 1388, 1397, 1401, - 1406, 1410, 1414, 1418, 1424, 1431, 1435, 1441, 1449, 1460, - 1467, 1471, 1477, 1487, 1498, 1502, 1520, 1529, 1532, 1538, - 1542, 1546, 1552, 1563, 1568, 1573, 1578, 1583, 1588, 1596, - 1599, 1604, 1617, 1625, 1636, 1644, 1644, 1646, 1646, 1648, - 1658, 1663, 1670, 1680, 1689, 1694, 1701, 1711, 1721, 1733, - 1733, 1734, 1734, 1736, 1746, 1754, 1764, 1772, 1780, 1789, - 1800, 1804, 1810, 1811, 1812, 1815, 1815, 1818, 1853, 1857, - 1857, 1860, 1866, 1874, 1887, 1896, 1905, 1909, 1918, 1927, - 1938, 1945, 1950, 1959, 1971, 1974, 1983, 1994, 1995, 1996, - 1999, 2000, 2001, 2004, 2005, 2008, 2009, 2012, 2013, 2016, - 2027, 2038, 2049, 2070, 2071 + 0, 268, 268, 271, 279, 291, 292, 295, 317, 318, + 321, 336, 339, 344, 351, 352, 353, 354, 355, 356, + 357, 360, 361, 362, 365, 371, 377, 383, 390, 396, + 403, 447, 452, 462, 506, 512, 513, 514, 515, 516, + 517, 518, 519, 520, 521, 522, 523, 526, 538, 546, + 563, 570, 589, 600, 620, 645, 654, 687, 694, 709, + 759, 801, 812, 833, 843, 849, 880, 897, 897, 899, + 906, 918, 919, 920, 923, 935, 947, 965, 976, 988, + 990, 991, 992, 993, 996, 996, 996, 996, 997, 1000, + 1004, 1009, 1016, 1023, 1030, 1053, 1076, 1077, 1078, 1079, + 1080, 1081, 1084, 1102, 1106, 1112, 1116, 1120, 1124, 1133, + 1142, 1146, 1151, 1157, 1168, 1168, 1169, 1171, 1175, 1179, + 1183, 1189, 1189, 1191, 1207, 1230, 1233, 1244, 1250, 1256, + 1257, 1264, 1270, 1276, 1284, 1290, 1296, 1304, 1310, 1316, + 1324, 1325, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 1337, 1338, 1341, 1350, 1354, 1358, 1364, 1373, 1377, + 1381, 1390, 1394, 1400, 1406, 1413, 1418, 1426, 1436, 1438, + 1446, 1452, 1456, 1460, 1466, 1477, 1486, 1490, 1495, 1499, + 1503, 1507, 1513, 1520, 1524, 1530, 1538, 1549, 1556, 1560, + 1566, 1576, 1587, 1591, 1609, 1618, 1621, 1627, 1631, 1635, + 1641, 1652, 1657, 1662, 1667, 1672, 1677, 1685, 1688, 1693, + 1706, 1714, 1725, 1733, 1733, 1735, 1735, 1737, 1747, 1752, + 1759, 1769, 1778, 1783, 1790, 1800, 1810, 1822, 1822, 1823, + 1823, 1825, 1835, 1843, 1853, 1861, 1869, 1878, 1889, 1893, + 1899, 1900, 1901, 1904, 1904, 1907, 1942, 1946, 1946, 1949, + 1955, 1963, 1976, 1985, 1994, 1998, 2007, 2016, 2027, 2034, + 2039, 2048, 2060, 2063, 2072, 2083, 2084, 2085, 2088, 2089, + 2090, 2093, 2094, 2097, 2098, 2101, 2102, 2105, 2116, 2127, + 2138, 2159, 2160 }; #endif @@ -833,8 +837,8 @@ static const char *const yytname[] = "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", "WEIGHT", "IDENTIFIER", "USED_IDENTIFIER", "MASK4", "MASK3", "MASK2", "MASK1", "SWIZZLE", "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", - "'+'", "'-'", "'='", "'{'", "'}'", "$accept", "program", "language", - "optionSequence", "option", "statementSequence", "statement", + "'+'", "'-'", "'('", "')'", "'='", "'{'", "'}'", "$accept", "program", + "language", "optionSequence", "option", "statementSequence", "statement", "instruction", "ALU_instruction", "TexInstruction", "ARL_instruction", "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", @@ -845,6 +849,7 @@ static const char *const yytname[] = "progParamArrayAbs", "progParamArrayRel", "addrRegRelOffset", "addrRegPosOffset", "addrRegNegOffset", "addrReg", "addrComponent", "addrWriteMask", "scalarSuffix", "swizzleSuffix", "optionalMask", + "optionalCcMask", "ccTest", "ccTest2", "ccMaskRule", "ccMaskRule2", "namingStatement", "ATTRIB_statement", "attribBinding", "vtxAttribItem", "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", "PARAM_statement", "PARAM_singleStmt", "PARAM_multipleStmt", @@ -894,41 +899,42 @@ static const yytype_uint16 yytoknum[] = 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 59, 44, - 124, 91, 93, 43, 45, 61, 123, 125 + 124, 91, 93, 43, 45, 40, 41, 61, 123, 125 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_uint16 yyr1[] = { - 0, 118, 119, 120, 120, 121, 121, 122, 123, 123, - 124, 124, 125, 125, 126, 126, 126, 126, 126, 126, - 126, 127, 127, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 138, 138, 138, 138, 138, - 138, 138, 138, 138, 138, 138, 139, 140, 140, 141, - 141, 142, 142, 143, 144, 145, 146, 147, 147, 148, - 148, 148, 148, 149, 149, 150, 151, 151, 152, 153, - 154, 154, 154, 155, 156, 157, 158, 159, 160, 161, - 161, 161, 161, 162, 162, 162, 162, 162, 163, 163, - 163, 163, 163, 163, 164, 165, 165, 166, 166, 166, - 166, 166, 166, 166, 166, 167, 168, 168, 169, 170, - 170, 170, 170, 171, 171, 172, 173, 174, 174, 175, - 176, 177, 177, 178, 178, 178, 179, 179, 179, 180, - 180, 180, 181, 181, 182, 182, 182, 182, 182, 182, - 182, 182, 182, 182, 182, 183, 184, 184, 184, 185, - 186, 186, 186, 186, 186, 187, 188, 189, 189, 190, - 191, 192, 193, 194, 194, 194, 195, 196, 197, 197, - 198, 198, 198, 198, 199, 200, 200, 201, 202, 203, - 204, 204, 205, 206, 207, 207, 208, 209, 209, 210, - 210, 210, 211, 212, 212, 212, 212, 212, 212, 213, - 213, 214, 215, 216, 217, 218, 218, 219, 219, 220, - 221, 221, 222, 223, 224, 224, 225, 226, 227, 228, - 228, 229, 229, 230, 231, 231, 232, 232, 232, 232, - 233, 233, 234, 234, 234, 236, 235, 237, 237, 239, - 238, 240, 240, 241, 242, 242, 242, 242, 242, 242, - 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, - 247, 247, 247, 248, 248, 249, 249, 250, 250, 251, - 252, 253, 254, 255, 255 + 0, 120, 121, 122, 122, 123, 123, 124, 125, 125, + 126, 126, 127, 127, 128, 128, 128, 128, 128, 128, + 128, 129, 129, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 137, 138, 139, 140, 140, 140, 140, 140, + 140, 140, 140, 140, 140, 140, 140, 141, 142, 142, + 143, 143, 144, 144, 145, 146, 147, 148, 149, 149, + 150, 150, 150, 150, 151, 151, 152, 153, 153, 154, + 155, 156, 156, 156, 157, 158, 159, 160, 161, 162, + 163, 163, 163, 163, 164, 164, 164, 164, 164, 165, + 165, 165, 166, 167, 168, 169, 170, 170, 170, 170, + 170, 170, 171, 172, 172, 173, 173, 173, 173, 173, + 173, 173, 173, 174, 175, 175, 176, 177, 177, 177, + 177, 178, 178, 179, 180, 181, 181, 182, 183, 184, + 184, 185, 185, 185, 186, 186, 186, 187, 187, 187, + 188, 188, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 190, 191, 191, 191, 192, 193, 193, + 193, 193, 193, 194, 195, 196, 196, 197, 198, 199, + 200, 201, 201, 201, 202, 203, 204, 204, 205, 205, + 205, 205, 206, 207, 207, 208, 209, 210, 211, 211, + 212, 213, 214, 214, 215, 216, 216, 217, 217, 217, + 218, 219, 219, 219, 219, 219, 219, 220, 220, 221, + 222, 223, 224, 225, 225, 226, 226, 227, 228, 228, + 229, 230, 231, 231, 232, 233, 234, 235, 235, 236, + 236, 237, 238, 238, 239, 239, 239, 239, 240, 240, + 241, 241, 241, 243, 242, 244, 244, 246, 245, 247, + 247, 248, 249, 249, 249, 249, 249, 249, 250, 251, + 251, 251, 252, 252, 252, 253, 253, 253, 254, 254, + 254, 255, 255, 256, 256, 257, 257, 258, 259, 260, + 261, 262, 262 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -937,31 +943,32 @@ static const yytype_uint8 yyr2[] = 0, 2, 4, 1, 1, 2, 0, 3, 2, 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 6, 6, 8, - 8, 2, 12, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 6, 2, 4, 2, - 1, 3, 5, 2, 2, 7, 2, 1, 1, 1, - 1, 4, 1, 1, 1, 1, 1, 1, 1, 3, - 0, 2, 2, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, - 1, 1, 1, 1, 4, 2, 2, 1, 2, 1, - 2, 1, 2, 4, 4, 1, 0, 3, 1, 1, - 2, 1, 2, 1, 1, 3, 6, 0, 1, 2, - 4, 1, 3, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 3, 1, 1, 1, 5, - 1, 1, 1, 2, 1, 1, 2, 1, 2, 6, - 1, 3, 1, 1, 1, 1, 1, 4, 1, 1, - 1, 1, 1, 1, 2, 1, 1, 5, 1, 2, - 1, 1, 5, 2, 0, 6, 3, 0, 1, 1, - 1, 1, 1, 2, 1, 1, 2, 4, 4, 0, - 1, 1, 1, 1, 2, 1, 1, 1, 1, 5, - 1, 3, 5, 5, 1, 3, 5, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 5, 7, 9, - 2, 2, 1, 1, 0, 0, 4, 1, 0, 0, - 3, 3, 1, 5, 2, 2, 2, 2, 3, 2, - 3, 0, 1, 1, 0, 1, 1, 0, 1, 1, - 0, 1, 1, 0, 3, 0, 3, 0, 3, 1, - 1, 1, 4, 1, 1 + 8, 2, 2, 12, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 6, 2, 4, + 2, 1, 3, 5, 3, 2, 7, 2, 1, 1, + 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, + 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0, 1, 1, 1, 1, 0, 3, + 3, 0, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 2, 2, 1, 2, 1, 2, 1, + 2, 4, 4, 1, 0, 3, 1, 1, 2, 1, + 2, 1, 1, 3, 6, 0, 1, 2, 4, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 3, 1, 1, 1, 5, 1, 1, + 1, 2, 1, 1, 2, 1, 2, 6, 1, 3, + 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, + 1, 1, 2, 1, 1, 5, 1, 2, 1, 1, + 5, 2, 0, 6, 3, 0, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 4, 4, 0, 1, 1, + 1, 1, 2, 1, 1, 1, 1, 5, 1, 3, + 5, 5, 1, 3, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 5, 7, 9, 2, 2, + 1, 1, 0, 0, 4, 1, 0, 0, 3, 3, + 1, 5, 2, 2, 2, 2, 3, 2, 3, 0, + 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, + 1, 0, 3, 0, 3, 0, 3, 1, 1, 1, + 4, 1, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -969,288 +976,296 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 3, 4, 0, 6, 1, 9, 0, 5, 238, - 273, 274, 0, 239, 0, 0, 0, 2, 0, 0, - 0, 0, 0, 0, 0, 234, 0, 0, 8, 0, + 0, 3, 4, 0, 6, 1, 9, 0, 5, 246, + 281, 282, 0, 247, 0, 0, 0, 2, 0, 0, + 0, 0, 0, 0, 0, 242, 0, 0, 8, 0, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, - 23, 20, 0, 88, 89, 113, 114, 90, 0, 91, - 92, 93, 237, 7, 0, 0, 0, 0, 0, 64, - 0, 87, 63, 0, 0, 0, 0, 0, 75, 0, - 0, 232, 233, 31, 0, 0, 0, 10, 11, 0, - 235, 242, 240, 0, 0, 117, 234, 115, 251, 249, - 245, 247, 244, 263, 246, 234, 83, 84, 85, 86, - 53, 234, 234, 234, 234, 234, 234, 77, 54, 225, - 224, 0, 0, 0, 0, 59, 0, 234, 82, 0, - 60, 62, 126, 127, 205, 206, 128, 221, 222, 0, - 234, 0, 0, 0, 272, 94, 118, 0, 119, 123, - 124, 125, 219, 220, 223, 0, 253, 252, 254, 0, - 248, 0, 0, 0, 0, 26, 0, 25, 24, 260, - 111, 109, 263, 96, 0, 0, 0, 0, 0, 0, - 257, 0, 257, 0, 0, 267, 263, 134, 135, 136, - 137, 139, 138, 140, 141, 142, 143, 0, 144, 260, - 101, 0, 99, 97, 263, 0, 106, 95, 82, 0, - 80, 79, 81, 51, 0, 0, 0, 0, 236, 241, - 0, 231, 230, 255, 256, 250, 269, 0, 234, 234, - 0, 47, 0, 50, 0, 234, 261, 262, 110, 112, - 0, 0, 0, 204, 175, 176, 174, 0, 157, 259, - 258, 156, 0, 0, 0, 0, 199, 195, 0, 194, - 263, 187, 181, 180, 179, 0, 0, 0, 0, 100, - 0, 102, 0, 0, 98, 0, 234, 226, 68, 0, - 66, 67, 0, 234, 234, 243, 0, 116, 264, 28, - 27, 0, 78, 49, 265, 0, 0, 217, 0, 218, - 0, 178, 0, 166, 0, 158, 0, 163, 164, 147, - 148, 165, 145, 146, 0, 201, 193, 200, 0, 196, - 189, 191, 190, 186, 188, 271, 0, 162, 161, 168, - 169, 0, 0, 108, 0, 105, 0, 0, 52, 0, - 61, 76, 70, 46, 0, 0, 0, 234, 48, 0, - 33, 0, 234, 212, 216, 0, 0, 257, 203, 0, - 202, 0, 268, 173, 172, 170, 171, 167, 192, 0, - 103, 104, 107, 234, 227, 0, 0, 69, 234, 57, - 56, 58, 234, 0, 0, 0, 121, 129, 132, 130, - 207, 208, 131, 270, 0, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 30, 29, 177, - 152, 154, 151, 0, 149, 150, 0, 198, 197, 182, - 0, 73, 71, 74, 72, 0, 0, 0, 0, 133, - 184, 234, 120, 266, 155, 153, 159, 160, 234, 228, - 234, 0, 0, 0, 0, 183, 122, 0, 0, 0, - 0, 210, 0, 214, 0, 229, 234, 0, 209, 0, - 213, 0, 0, 55, 32, 211, 215, 0, 0, 185 + 23, 20, 0, 96, 97, 121, 122, 98, 0, 99, + 100, 101, 245, 7, 0, 0, 0, 0, 0, 65, + 0, 88, 64, 0, 0, 0, 0, 0, 76, 0, + 0, 94, 240, 241, 31, 32, 83, 0, 0, 0, + 10, 11, 0, 243, 250, 248, 0, 0, 125, 242, + 123, 259, 257, 253, 255, 252, 271, 254, 242, 84, + 85, 86, 87, 91, 242, 242, 242, 242, 242, 242, + 78, 55, 81, 80, 82, 92, 233, 232, 0, 0, + 0, 0, 60, 0, 242, 83, 0, 61, 63, 134, + 135, 213, 214, 136, 229, 230, 0, 242, 0, 0, + 0, 280, 102, 126, 0, 127, 131, 132, 133, 227, + 228, 231, 0, 261, 260, 262, 0, 256, 0, 0, + 54, 0, 0, 0, 26, 0, 25, 24, 268, 119, + 117, 271, 104, 0, 0, 0, 0, 0, 0, 265, + 0, 265, 0, 0, 275, 271, 142, 143, 144, 145, + 147, 146, 148, 149, 150, 151, 0, 152, 268, 109, + 0, 107, 105, 271, 0, 114, 103, 83, 0, 52, + 0, 0, 0, 0, 244, 249, 0, 239, 238, 263, + 264, 258, 277, 0, 242, 95, 0, 0, 83, 242, + 0, 48, 0, 51, 0, 242, 269, 270, 118, 120, + 0, 0, 0, 212, 183, 184, 182, 0, 165, 267, + 266, 164, 0, 0, 0, 0, 207, 203, 0, 202, + 271, 195, 189, 188, 187, 0, 0, 0, 0, 108, + 0, 110, 0, 0, 106, 0, 242, 234, 69, 0, + 67, 68, 0, 242, 242, 251, 0, 124, 272, 28, + 89, 90, 93, 27, 0, 79, 50, 273, 0, 0, + 225, 0, 226, 0, 186, 0, 174, 0, 166, 0, + 171, 172, 155, 156, 173, 153, 154, 0, 209, 201, + 208, 0, 204, 197, 199, 198, 194, 196, 279, 0, + 170, 169, 176, 177, 0, 0, 116, 0, 113, 0, + 0, 53, 0, 62, 77, 71, 47, 0, 0, 0, + 242, 49, 0, 34, 0, 242, 220, 224, 0, 0, + 265, 211, 0, 210, 0, 276, 181, 180, 178, 179, + 175, 200, 0, 111, 112, 115, 242, 235, 0, 0, + 70, 242, 58, 57, 59, 242, 0, 0, 0, 129, + 137, 140, 138, 215, 216, 139, 278, 0, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 30, 29, 185, 160, 162, 159, 0, 157, 158, 0, + 206, 205, 190, 0, 74, 72, 75, 73, 0, 0, + 0, 0, 141, 192, 242, 128, 274, 163, 161, 167, + 168, 242, 236, 242, 0, 0, 0, 0, 191, 130, + 0, 0, 0, 0, 218, 0, 222, 0, 237, 242, + 0, 217, 0, 221, 0, 0, 56, 33, 219, 223, + 0, 0, 193 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { -1, 3, 4, 6, 8, 9, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 285, - 397, 41, 152, 221, 73, 60, 69, 333, 334, 370, - 222, 61, 119, 269, 270, 271, 367, 412, 414, 70, - 332, 108, 283, 203, 100, 42, 43, 120, 197, 326, - 264, 324, 163, 44, 45, 46, 137, 87, 277, 375, - 138, 121, 376, 377, 122, 177, 302, 178, 404, 425, - 179, 241, 180, 426, 181, 318, 303, 294, 182, 321, - 357, 183, 236, 184, 292, 185, 254, 186, 419, 435, - 187, 313, 314, 359, 251, 306, 307, 351, 349, 188, - 123, 379, 380, 440, 124, 381, 442, 125, 288, 290, - 382, 126, 142, 127, 128, 144, 74, 47, 132, 48, - 49, 54, 82, 50, 62, 94, 148, 215, 242, 228, - 150, 340, 256, 217, 384, 316, 51, 12 + 32, 33, 34, 35, 36, 37, 38, 39, 40, 298, + 410, 41, 161, 231, 74, 60, 69, 346, 347, 383, + 232, 61, 126, 279, 280, 281, 380, 425, 427, 70, + 345, 111, 296, 115, 103, 160, 75, 227, 76, 228, + 42, 43, 127, 206, 339, 274, 337, 172, 44, 45, + 46, 144, 90, 287, 388, 145, 128, 389, 390, 129, + 186, 315, 187, 417, 438, 188, 251, 189, 439, 190, + 331, 316, 307, 191, 334, 370, 192, 246, 193, 305, + 194, 264, 195, 432, 448, 196, 326, 327, 372, 261, + 319, 320, 364, 362, 197, 130, 392, 393, 453, 131, + 394, 455, 132, 301, 303, 395, 133, 149, 134, 135, + 151, 77, 47, 139, 48, 49, 54, 85, 50, 62, + 97, 155, 221, 252, 238, 157, 353, 266, 223, 397, + 329, 51, 12 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -401 +#define YYPACT_NINF -387 static const yytype_int16 yypact[] = { - 122, -401, -401, 49, -401, -401, 56, 61, -401, 20, - -401, -401, -5, -401, 7, 45, 78, -401, -47, -47, - -47, -47, -47, -47, 79, 85, -47, -47, -401, 99, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, 127, -401, -401, -401, -401, -401, 120, -401, - -401, -401, -401, -401, 135, 133, 134, 25, 129, -401, - 138, 137, -401, 145, 146, 147, 148, 151, -401, 152, - 154, -401, -401, -401, -14, 153, 155, -401, -401, 143, - -401, -401, 156, 163, 14, 243, 32, -401, 31, -401, - -401, -401, -401, 157, -401, 85, -401, -401, -401, -401, - -401, 85, 85, 85, 85, 85, 85, -401, -401, -401, - -401, 112, 149, 126, 54, 158, 27, 85, 132, 159, - -401, -401, -401, -401, -401, -401, -401, -401, -401, 27, - 85, 160, 135, 168, -401, -401, -401, 161, -401, -401, - -401, -401, -401, -401, -401, 198, -401, -401, 89, 248, - -401, 167, 169, 22, 170, -401, 171, -401, -401, 117, - -401, -401, 157, -401, 172, 173, 174, 208, -1, 175, - 53, 176, 165, 142, -3, 177, 157, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, 215, -401, 117, - -401, 179, -401, -401, 157, 180, 181, -401, 132, -38, - -401, -401, -401, -401, -10, 184, 185, 209, 156, -401, - 182, -401, -401, -401, -401, -401, -401, 183, 85, 85, - 27, -401, 192, 194, 216, 85, -401, -401, -401, -401, - 277, 278, 279, -401, -401, -401, -401, 280, -401, -401, - -401, -401, 237, 280, 68, 195, 282, -401, 196, -401, - 157, 33, -401, -401, -401, 285, 281, 19, 200, -401, - 286, -401, 289, 286, -401, 203, 85, -401, -401, 202, - -401, -401, 212, 85, 85, -401, 201, -401, -401, -401, - -401, 210, -401, -401, 207, 213, 214, -401, 218, -401, - 219, -401, 220, -401, 221, -401, 222, -401, -401, -401, - -401, -401, -401, -401, 296, -401, -401, -401, 298, -401, - -401, -401, -401, -401, -401, -401, 226, -401, -401, -401, - -401, 166, 301, -401, 227, -401, 228, 229, -401, 46, - -401, -401, 116, -401, 217, -12, 234, 51, -401, 302, - -401, 125, 85, -401, -401, 270, 37, 165, -401, 233, - -401, 235, -401, -401, -401, -401, -401, -401, -401, 236, - -401, -401, -401, 85, -401, 305, 323, -401, 85, -401, - -401, -401, 85, 162, 126, 59, -401, -401, -401, -401, - -401, -401, -401, -401, 238, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, 317, -401, -401, 41, -401, -401, -401, - 65, -401, -401, -401, -401, 242, 244, 241, 245, -401, - 288, 51, -401, -401, -401, -401, -401, -401, 85, -401, - 85, 216, 277, 278, 246, -401, -401, 247, 249, 250, - 251, 255, 253, 256, 301, -401, 85, 125, -401, 277, - -401, 278, 94, -401, -401, -401, -401, 301, 254, -401 + 202, -387, -387, 67, -387, -387, 73, -73, -387, 24, + -387, -387, -4, -387, 78, 84, 127, -387, -18, -18, + -18, -18, -18, -18, 66, 44, -18, -18, -387, 138, + -387, -387, -387, -387, -387, -387, -387, -387, -387, -387, + -387, -387, 144, -387, -387, -387, -387, -387, 236, -387, + -387, -387, -387, -387, 154, 140, 141, 10, 133, -387, + 145, 136, -387, 150, 151, 155, 156, 157, -387, 158, + 166, -387, -387, -387, -387, -387, 131, -13, 159, 162, + -387, -387, 173, -387, -387, 165, 175, 23, 232, 0, + -387, 125, -387, -387, -387, -387, 167, -387, 116, -387, + -387, -387, -387, 161, 116, 116, 116, 116, 116, 116, + -387, -387, -387, -387, -387, -387, -387, -387, 105, 98, + 92, 19, 168, 30, 116, 131, 169, -387, -387, -387, + -387, -387, -387, -387, -387, -387, 30, 116, 160, 154, + 174, -387, -387, -387, 170, -387, -387, -387, -387, -387, + -387, -387, 210, -387, -387, 134, 258, -387, 176, 149, + -387, 177, -10, 179, -387, 180, -387, -387, 135, -387, + -387, 167, -387, 172, 182, 183, 220, 46, 184, 106, + 185, 146, 123, 7, 186, 167, -387, -387, -387, -387, + -387, -387, -387, -387, -387, -387, 224, -387, 135, -387, + 187, -387, -387, 167, 189, 190, -387, 131, -45, -387, + 1, 193, 194, 226, 165, -387, 188, -387, -387, -387, + -387, -387, -387, 192, 116, -387, 191, 195, 131, 116, + 30, -387, 204, 205, 223, 116, -387, -387, -387, -387, + 287, 289, 290, -387, -387, -387, -387, 291, -387, -387, + -387, -387, 248, 291, 128, 206, 293, -387, 207, -387, + 167, 16, -387, -387, -387, 296, 294, 45, 209, -387, + 299, -387, 301, 299, -387, 215, 116, -387, -387, 214, + -387, -387, 225, 116, 116, -387, 212, -387, -387, -387, + -387, -387, -387, -387, 217, -387, -387, 221, 219, 222, + -387, 227, -387, 228, -387, 229, -387, 231, -387, 237, + -387, -387, -387, -387, -387, -387, -387, 310, -387, -387, + -387, 311, -387, -387, -387, -387, -387, -387, -387, 238, + -387, -387, -387, -387, 164, 312, -387, 239, -387, 241, + 243, -387, 63, -387, -387, 137, -387, 235, -15, 247, + 33, -387, 313, -387, 124, 116, -387, -387, 280, 129, + 146, -387, 245, -387, 246, -387, -387, -387, -387, -387, + -387, -387, 249, -387, -387, -387, 116, -387, 315, 325, + -387, 116, -387, -387, -387, 116, 142, 92, 71, -387, + -387, -387, -387, -387, -387, -387, -387, 250, -387, -387, + -387, -387, -387, -387, -387, -387, -387, -387, -387, -387, + -387, -387, -387, -387, -387, -387, 327, -387, -387, 40, + -387, -387, -387, 72, -387, -387, -387, -387, 251, 254, + 253, 255, -387, 302, 33, -387, -387, -387, -387, -387, + -387, 116, -387, 116, 223, 287, 289, 256, -387, -387, + 252, 260, 263, 261, 259, 262, 269, 312, -387, 116, + 124, -387, 287, -387, 289, 119, -387, -387, -387, -387, + 312, 264, -387 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -76, - -80, -401, -98, 150, -83, 205, -401, -401, -361, -401, - -18, -401, -401, -401, -401, -401, -401, -401, -401, 164, - -401, -401, -401, 178, -401, -401, -401, 287, -401, -401, - -401, 106, -401, -401, -401, -401, -401, -401, -401, -401, - -401, -401, -49, -401, -85, -401, -401, -401, -401, -401, - -401, -401, -401, -401, -401, -401, -330, 130, -401, -401, - -401, -401, -401, -401, -401, -401, -401, -401, -401, -401, - 0, -401, -401, -400, -401, -401, -401, -401, -401, -401, - 291, -401, -401, -401, -401, -401, -401, -401, -302, -317, - 292, -401, -401, -139, -84, -113, -86, -401, -401, -401, - -401, -401, 252, -401, 186, -401, -401, -401, -166, 190, - -133, -401, -401, -401, -401, -401, -401, -6 + -387, -387, -387, -387, -387, -387, -387, -387, -387, -387, + -387, -387, -387, -387, -387, -387, -387, -387, -387, -67, + -82, -387, -100, 152, -86, 201, -387, -387, -365, -387, + -11, -387, -387, -387, -387, -387, -387, -387, -387, 171, + -387, -387, -387, -118, -387, -387, 230, -387, -387, -387, + -387, -387, 292, -387, -387, -387, 107, -387, -387, -387, + -387, -387, -387, -387, -387, -387, -387, -51, -387, -88, + -387, -387, -387, -387, -387, -387, -387, -387, -387, -387, + -387, -304, 132, -387, -387, -387, -387, -387, -387, -387, + -387, -387, -387, -387, -387, -3, -387, -387, -361, -387, + -387, -387, -387, -387, -387, 297, -387, -387, -387, -387, + -387, -387, -387, -386, -376, 298, -387, -387, -139, -87, + -120, -89, -387, -387, -387, -387, -387, 257, -387, 178, + -387, -387, -387, -176, 196, -153, -387, -387, -387, -387, + -387, -387, -6 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -222 +#define YYTABLE_NINF -230 static const yytype_int16 yytable[] = { - 145, 139, 143, 52, 199, 155, 244, 415, 158, 109, - 110, 369, 151, 268, 223, 153, 405, 153, 58, 154, - 153, 156, 157, 252, 111, 13, 14, 15, 234, 229, - 16, 145, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 257, 452, 109, 110, 206, 112, 5, - 109, 110, 111, 59, 319, 235, 118, 458, 146, 113, - 111, 261, 297, 400, 7, 111, 297, 253, 298, 438, - 147, 266, 298, 320, 310, 311, 427, 401, 238, 267, - 239, 223, 114, 189, 112, 453, 115, 10, 11, 112, - 68, 190, 240, 297, 112, 113, 116, 402, 198, 298, - 113, 299, 117, 53, 191, 113, 55, 192, 301, 403, - 114, 205, 301, 373, 193, 312, 443, 309, 114, 10, - 11, 280, 115, 114, 374, 1, 2, 115, 194, 79, - 441, 80, 220, 153, 456, 279, 85, 300, 117, 301, - 86, 159, 286, 117, 56, 71, 72, 455, 117, 160, - 213, 195, 196, 329, 166, 363, 167, 214, 88, 89, - 10, 11, 168, 364, 71, 72, 90, 117, 421, 169, - 170, 171, 161, 172, 428, 173, 422, 57, 226, 68, - 145, 406, 429, 164, 174, 227, 162, 335, 91, 92, - 245, 336, 239, 246, 247, 165, 417, 248, 71, 72, - 457, 175, 176, 93, 240, 249, 409, 77, 418, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 211, 212, 250, 63, 64, 65, 66, 67, 365, - 366, 75, 76, 200, 81, 78, 201, 202, 96, 97, - 98, 99, 131, 353, 354, 355, 356, 95, 83, 84, - 410, 145, 378, 143, 101, 102, 103, 104, 107, 398, - 105, 106, 129, 134, 130, 133, 136, 209, 149, -65, - 204, 216, 233, 210, 58, 207, 218, 145, 219, 224, - 225, 258, 335, 230, 231, 232, 237, 243, 255, 416, - 260, 262, 263, 273, 274, 278, 282, 276, -221, 284, - 287, 289, 291, 293, 295, 305, 304, 308, 315, 323, - 317, 322, 325, 328, 330, 437, 331, 337, 339, 348, - 338, 350, 341, 342, 358, 383, 368, 399, 411, 371, - 343, 344, 345, 346, 347, 145, 378, 143, 352, 360, - 361, 362, 145, 372, 335, 407, 413, 408, 409, 424, - 423, 430, 432, 431, 434, 439, 433, 444, 446, 447, - 335, 449, 451, 448, 445, 450, 459, 454, 272, 327, - 281, 135, 436, 296, 420, 0, 265, 140, 141, 259, - 0, 0, 0, 0, 208, 0, 0, 0, 0, 0, - 0, 0, 0, 275 + 152, 146, 150, 52, 208, 254, 164, 209, 382, 167, + 116, 117, 158, 116, 117, 162, 428, 162, 239, 163, + 162, 165, 166, 233, 278, 118, 10, 11, 118, 13, + 14, 15, 267, 262, 16, 152, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 58, 198, 119, + 271, 212, 119, 116, 117, 418, 199, 323, 324, 454, + 120, 118, 119, 120, 276, 310, 125, 5, 118, 200, + 456, 311, 201, 120, 277, 244, 468, 263, 451, 202, + 332, 7, 59, 121, 10, 11, 121, 122, 469, 275, + 122, 233, 119, 203, 466, 386, 465, 123, 325, 333, + 230, 68, 245, 120, 53, 124, 387, 322, 124, 471, + 292, 314, 207, 72, 73, 440, 204, 205, 124, 121, + 175, 88, 176, 10, 11, 211, 121, 89, 177, 293, + 122, 248, 173, 249, 168, 178, 179, 180, 289, 181, + 162, 182, 169, 71, 174, 250, 72, 73, 124, 299, + 183, 124, 153, 310, 310, 413, 342, 72, 73, 311, + 311, 312, 91, 92, 154, 170, 68, 184, 185, 414, + 93, 255, 376, 249, 256, 257, 430, 55, 258, 171, + 434, 441, 377, 56, 419, 250, 259, 152, 431, 415, + 435, 442, 94, 95, 348, 219, 236, 313, 349, 314, + 314, 416, 220, 237, 260, 1, 2, 96, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 63, 64, 65, 66, 67, 470, 57, 78, 79, 72, + 73, 422, 112, 217, 218, 113, 114, 99, 100, 101, + 102, 366, 367, 368, 369, 82, 80, 83, 71, 225, + 378, 379, 81, 84, 98, 143, 423, 86, 87, 104, + 105, 152, 391, 150, 106, 107, 108, 109, 136, 411, + 110, 137, 138, 215, 140, 141, 159, 213, 156, -66, + 210, 222, 216, 240, 243, 224, 229, 152, 234, 235, + 268, 58, 348, 241, 242, 247, 253, 265, 270, 429, + 272, 273, 283, 284, 288, 286, 297, 290, 295, -229, + 300, 291, 302, 304, 306, 308, 318, 317, 321, 328, + 335, 450, 336, 330, 338, 341, 343, 351, 354, 344, + 350, 355, 352, 361, 363, 371, 396, 412, 424, 356, + 357, 358, 384, 359, 381, 152, 391, 150, 426, 360, + 365, 373, 152, 374, 348, 375, 385, 420, 421, 437, + 443, 422, 436, 444, 445, 462, 446, 457, 447, 459, + 348, 458, 460, 461, 463, 464, 472, 452, 467, 142, + 340, 282, 294, 449, 433, 309, 147, 148, 0, 226, + 0, 285, 0, 0, 269, 0, 214 }; static const yytype_int16 yycheck[] = { - 86, 86, 86, 9, 117, 103, 172, 368, 106, 23, - 24, 23, 95, 23, 153, 101, 346, 103, 65, 102, - 106, 104, 105, 26, 38, 5, 6, 7, 29, 162, - 10, 117, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 176, 444, 23, 24, 130, 62, 0, - 23, 24, 38, 100, 35, 56, 74, 457, 27, 73, - 38, 194, 25, 26, 8, 38, 25, 70, 31, 430, - 39, 109, 31, 54, 41, 42, 406, 40, 25, 117, - 27, 220, 96, 29, 62, 446, 100, 99, 100, 62, - 100, 37, 39, 25, 62, 73, 110, 60, 116, 31, - 73, 33, 116, 108, 50, 73, 99, 53, 71, 72, - 96, 129, 71, 62, 60, 82, 433, 250, 96, 99, - 100, 219, 100, 96, 73, 3, 4, 100, 74, 9, - 432, 11, 110, 219, 451, 218, 111, 69, 116, 71, - 115, 29, 225, 116, 99, 113, 114, 449, 116, 37, - 61, 97, 98, 266, 28, 109, 30, 68, 29, 30, - 99, 100, 36, 117, 113, 114, 37, 116, 109, 43, - 44, 45, 60, 47, 109, 49, 117, 99, 61, 100, - 266, 347, 117, 34, 58, 68, 74, 273, 59, 60, - 48, 274, 27, 51, 52, 46, 34, 55, 113, 114, - 106, 75, 76, 74, 39, 63, 112, 108, 46, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 23, 24, 81, 19, 20, 21, 22, 23, 113, - 114, 26, 27, 101, 99, 108, 104, 105, 101, 102, - 103, 104, 99, 77, 78, 79, 80, 109, 115, 115, - 363, 337, 337, 337, 109, 109, 109, 109, 104, 342, - 109, 109, 109, 100, 109, 109, 23, 99, 111, 111, - 111, 23, 64, 112, 65, 115, 109, 363, 109, 109, - 109, 66, 368, 111, 111, 111, 111, 111, 111, 372, - 111, 111, 111, 109, 109, 112, 104, 115, 104, 83, - 23, 23, 23, 23, 67, 23, 111, 111, 23, 23, - 29, 111, 23, 110, 112, 428, 104, 116, 111, 23, - 110, 23, 109, 109, 23, 23, 109, 57, 23, 335, - 112, 112, 112, 112, 112, 421, 421, 421, 112, 112, - 112, 112, 428, 109, 430, 112, 23, 112, 112, 32, - 112, 109, 111, 109, 66, 431, 111, 111, 109, 109, - 446, 106, 106, 112, 117, 112, 112, 447, 204, 263, - 220, 84, 421, 243, 374, -1, 198, 86, 86, 189, - -1, -1, -1, -1, 132, -1, -1, -1, -1, -1, - -1, -1, -1, 207 + 89, 89, 89, 9, 124, 181, 106, 125, 23, 109, + 23, 24, 98, 23, 24, 104, 381, 106, 171, 105, + 109, 107, 108, 162, 23, 38, 99, 100, 38, 5, + 6, 7, 185, 26, 10, 124, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 65, 29, 62, + 203, 137, 62, 23, 24, 359, 37, 41, 42, 445, + 73, 38, 62, 73, 109, 25, 77, 0, 38, 50, + 446, 31, 53, 73, 119, 29, 462, 70, 443, 60, + 35, 8, 100, 96, 99, 100, 96, 100, 464, 207, + 100, 230, 62, 74, 459, 62, 457, 110, 82, 54, + 110, 100, 56, 73, 108, 118, 73, 260, 118, 470, + 228, 71, 123, 113, 114, 419, 97, 98, 118, 96, + 28, 111, 30, 99, 100, 136, 96, 117, 36, 229, + 100, 25, 34, 27, 29, 43, 44, 45, 224, 47, + 229, 49, 37, 99, 46, 39, 113, 114, 118, 235, + 58, 118, 27, 25, 25, 26, 276, 113, 114, 31, + 31, 33, 29, 30, 39, 60, 100, 75, 76, 40, + 37, 48, 109, 27, 51, 52, 34, 99, 55, 74, + 109, 109, 119, 99, 360, 39, 63, 276, 46, 60, + 119, 119, 59, 60, 283, 61, 61, 69, 284, 71, + 71, 72, 68, 68, 81, 3, 4, 74, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 19, 20, 21, 22, 23, 106, 99, 26, 27, 113, + 114, 112, 101, 23, 24, 104, 105, 101, 102, 103, + 104, 77, 78, 79, 80, 9, 108, 11, 99, 100, + 113, 114, 108, 99, 109, 23, 376, 117, 117, 109, + 109, 350, 350, 350, 109, 109, 109, 109, 109, 355, + 104, 109, 99, 99, 109, 100, 115, 117, 111, 111, + 111, 23, 112, 111, 64, 109, 109, 376, 109, 109, + 66, 65, 381, 111, 111, 111, 111, 111, 111, 385, + 111, 111, 109, 109, 112, 117, 83, 116, 104, 104, + 23, 116, 23, 23, 23, 67, 23, 111, 111, 23, + 111, 441, 23, 29, 23, 110, 112, 110, 109, 104, + 118, 109, 111, 23, 23, 23, 23, 57, 23, 112, + 112, 112, 348, 112, 109, 434, 434, 434, 23, 112, + 112, 112, 441, 112, 443, 112, 109, 112, 112, 32, + 109, 112, 112, 109, 111, 106, 111, 111, 66, 109, + 459, 119, 109, 112, 112, 106, 112, 444, 460, 87, + 273, 210, 230, 434, 387, 253, 89, 89, -1, 159, + -1, 213, -1, -1, 198, -1, 139 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_uint16 yystos[] = { - 0, 3, 4, 119, 120, 0, 121, 8, 122, 123, - 99, 100, 255, 5, 6, 7, 10, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 139, 163, 164, 171, 172, 173, 235, 237, 238, - 241, 254, 255, 108, 239, 99, 99, 99, 65, 100, - 143, 149, 242, 143, 143, 143, 143, 143, 100, 144, - 157, 113, 114, 142, 234, 143, 143, 108, 108, 9, - 11, 99, 240, 115, 115, 111, 115, 175, 29, 30, - 37, 59, 60, 74, 243, 109, 101, 102, 103, 104, - 162, 109, 109, 109, 109, 109, 109, 104, 159, 23, - 24, 38, 62, 73, 96, 100, 110, 116, 148, 150, - 165, 179, 182, 218, 222, 225, 229, 231, 232, 109, - 109, 99, 236, 109, 100, 165, 23, 174, 178, 182, - 218, 228, 230, 232, 233, 234, 27, 39, 244, 111, - 248, 142, 140, 234, 142, 140, 142, 142, 140, 29, - 37, 60, 74, 170, 34, 46, 28, 30, 36, 43, - 44, 45, 47, 49, 58, 75, 76, 183, 185, 188, - 190, 192, 196, 199, 201, 203, 205, 208, 217, 29, - 37, 50, 53, 60, 74, 97, 98, 166, 148, 233, - 101, 104, 105, 161, 111, 148, 142, 115, 240, 99, - 112, 23, 24, 61, 68, 245, 23, 251, 109, 109, - 110, 141, 148, 231, 109, 109, 61, 68, 247, 248, - 111, 111, 111, 64, 29, 56, 200, 111, 25, 27, - 39, 189, 246, 111, 246, 48, 51, 52, 55, 63, - 81, 212, 26, 70, 204, 111, 250, 248, 66, 247, - 111, 248, 111, 111, 168, 161, 109, 117, 23, 151, - 152, 153, 157, 109, 109, 242, 115, 176, 112, 142, - 140, 141, 104, 160, 83, 137, 142, 23, 226, 23, - 227, 23, 202, 23, 195, 67, 195, 25, 31, 33, - 69, 71, 184, 194, 111, 23, 213, 214, 111, 248, - 41, 42, 82, 209, 210, 23, 253, 29, 193, 35, - 54, 197, 111, 23, 169, 23, 167, 169, 110, 233, - 112, 104, 158, 145, 146, 234, 142, 116, 110, 111, - 249, 109, 109, 112, 112, 112, 112, 112, 23, 216, - 23, 215, 112, 77, 78, 79, 80, 198, 23, 211, - 112, 112, 112, 109, 117, 113, 114, 154, 109, 23, - 147, 255, 109, 62, 73, 177, 180, 181, 182, 219, - 220, 223, 228, 23, 252, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 138, 142, 57, - 26, 40, 60, 72, 186, 194, 246, 112, 112, 112, - 233, 23, 155, 23, 156, 146, 142, 34, 46, 206, - 208, 109, 117, 112, 32, 187, 191, 194, 109, 117, - 109, 109, 111, 111, 66, 207, 180, 233, 146, 137, - 221, 226, 224, 227, 111, 117, 109, 109, 112, 106, - 112, 106, 211, 146, 138, 226, 227, 106, 211, 112 + 0, 3, 4, 121, 122, 0, 123, 8, 124, 125, + 99, 100, 262, 5, 6, 7, 10, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 141, 170, 171, 178, 179, 180, 242, 244, 245, + 248, 261, 262, 108, 246, 99, 99, 99, 65, 100, + 145, 151, 249, 145, 145, 145, 145, 145, 100, 146, + 159, 99, 113, 114, 144, 166, 168, 241, 145, 145, + 108, 108, 9, 11, 99, 247, 117, 117, 111, 117, + 182, 29, 30, 37, 59, 60, 74, 250, 109, 101, + 102, 103, 104, 164, 109, 109, 109, 109, 109, 109, + 104, 161, 101, 104, 105, 163, 23, 24, 38, 62, + 73, 96, 100, 110, 118, 150, 152, 172, 186, 189, + 225, 229, 232, 236, 238, 239, 109, 109, 99, 243, + 109, 100, 172, 23, 181, 185, 189, 225, 235, 237, + 239, 240, 241, 27, 39, 251, 111, 255, 144, 115, + 165, 142, 241, 144, 142, 144, 144, 142, 29, 37, + 60, 74, 177, 34, 46, 28, 30, 36, 43, 44, + 45, 47, 49, 58, 75, 76, 190, 192, 195, 197, + 199, 203, 206, 208, 210, 212, 215, 224, 29, 37, + 50, 53, 60, 74, 97, 98, 173, 150, 240, 163, + 111, 150, 144, 117, 247, 99, 112, 23, 24, 61, + 68, 252, 23, 258, 109, 100, 166, 167, 169, 109, + 110, 143, 150, 238, 109, 109, 61, 68, 254, 255, + 111, 111, 111, 64, 29, 56, 207, 111, 25, 27, + 39, 196, 253, 111, 253, 48, 51, 52, 55, 63, + 81, 219, 26, 70, 211, 111, 257, 255, 66, 254, + 111, 255, 111, 111, 175, 163, 109, 119, 23, 153, + 154, 155, 159, 109, 109, 249, 117, 183, 112, 144, + 116, 116, 163, 142, 143, 104, 162, 83, 139, 144, + 23, 233, 23, 234, 23, 209, 23, 202, 67, 202, + 25, 31, 33, 69, 71, 191, 201, 111, 23, 220, + 221, 111, 255, 41, 42, 82, 216, 217, 23, 260, + 29, 200, 35, 54, 204, 111, 23, 176, 23, 174, + 176, 110, 240, 112, 104, 160, 147, 148, 241, 144, + 118, 110, 111, 256, 109, 109, 112, 112, 112, 112, + 112, 23, 223, 23, 222, 112, 77, 78, 79, 80, + 205, 23, 218, 112, 112, 112, 109, 119, 113, 114, + 156, 109, 23, 149, 262, 109, 62, 73, 184, 187, + 188, 189, 226, 227, 230, 235, 23, 259, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 140, 144, 57, 26, 40, 60, 72, 193, 201, 253, + 112, 112, 112, 240, 23, 157, 23, 158, 148, 144, + 34, 46, 213, 215, 109, 119, 112, 32, 194, 198, + 201, 109, 119, 109, 109, 111, 111, 66, 214, 187, + 240, 148, 139, 228, 233, 231, 234, 111, 119, 109, + 109, 112, 106, 112, 106, 218, 148, 140, 233, 234, + 106, 218, 112 }; #define yyerrok (yyerrstatus = 0) @@ -2104,7 +2119,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 270 "program_parse.y" +#line 272 "program_parse.y" { if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid fragment program header"); @@ -2117,7 +2132,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 278 "program_parse.y" +#line 280 "program_parse.y" { if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex program header"); @@ -2132,7 +2147,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 294 "program_parse.y" +#line 296 "program_parse.y" { int valid = 0; @@ -2157,7 +2172,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 320 "program_parse.y" +#line 322 "program_parse.y" { if ((yyvsp[(1) - (2)].inst) != NULL) { if (state->inst_tail == NULL) { @@ -2177,7 +2192,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 338 "program_parse.y" +#line 340 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumAluInstructions++; @@ -2187,7 +2202,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 343 "program_parse.y" +#line 345 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); state->prog->NumTexInstructions++; @@ -2197,7 +2212,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 364 "program_parse.y" +#line 366 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); ;} @@ -2206,7 +2221,7 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 370 "program_parse.y" +#line 372 "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); ;} @@ -2215,7 +2230,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 376 "program_parse.y" +#line 378 "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); ;} @@ -2224,7 +2239,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 382 "program_parse.y" +#line 384 "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); ;} @@ -2233,7 +2248,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 389 "program_parse.y" +#line 391 "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); ;} @@ -2242,7 +2257,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 396 "program_parse.y" +#line 398 "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)); ;} @@ -2251,7 +2266,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 402 "program_parse.y" +#line 404 "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) { @@ -2298,7 +2313,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 446 "program_parse.y" +#line 448 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); state->fragment.UsesKill = 1; @@ -2309,6 +2324,19 @@ yyreduce: /* Line 1455 of yacc.c */ #line 453 "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; + (yyval.inst)->Base.DstReg.CondSwizzle = (yyvsp[(2) - (2)].dst_reg).CondSwizzle; + (yyval.inst)->Base.DstReg.CondSrc = (yyvsp[(2) - (2)].dst_reg).CondSrc; + state->fragment.UsesKill = 1; + ;} + break; + + case 33: + +/* Line 1455 of yacc.c */ +#line 463 "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) { @@ -2352,103 +2380,103 @@ yyreduce: ;} break; - case 33: + case 34: /* Line 1455 of yacc.c */ -#line 497 "program_parse.y" +#line 507 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 34: + case 35: /* Line 1455 of yacc.c */ -#line 502 "program_parse.y" +#line 512 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; - case 35: + case 36: /* Line 1455 of yacc.c */ -#line 503 "program_parse.y" +#line 513 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; - case 36: + case 37: /* Line 1455 of yacc.c */ -#line 504 "program_parse.y" +#line 514 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; - case 37: + case 38: /* Line 1455 of yacc.c */ -#line 505 "program_parse.y" +#line 515 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; - case 38: + case 39: /* Line 1455 of yacc.c */ -#line 506 "program_parse.y" +#line 516 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; - case 39: + case 40: /* Line 1455 of yacc.c */ -#line 507 "program_parse.y" +#line 517 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; - case 40: + case 41: /* Line 1455 of yacc.c */ -#line 508 "program_parse.y" +#line 518 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; - case 41: + case 42: /* Line 1455 of yacc.c */ -#line 509 "program_parse.y" +#line 519 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; - case 42: + case 43: /* Line 1455 of yacc.c */ -#line 510 "program_parse.y" +#line 520 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; - case 43: + case 44: /* Line 1455 of yacc.c */ -#line 511 "program_parse.y" +#line 521 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; - case 44: + case 45: /* Line 1455 of yacc.c */ -#line 512 "program_parse.y" +#line 522 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; - case 45: + case 46: /* Line 1455 of yacc.c */ -#line 513 "program_parse.y" +#line 523 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; - case 46: + case 47: /* Line 1455 of yacc.c */ -#line 517 "program_parse.y" +#line 527 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied * FIXME: to the existing swizzle? @@ -2460,10 +2488,10 @@ yyreduce: ;} break; - case 47: + case 48: /* Line 1455 of yacc.c */ -#line 529 "program_parse.y" +#line 539 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); @@ -2473,10 +2501,10 @@ yyreduce: ;} break; - case 48: + case 49: /* Line 1455 of yacc.c */ -#line 537 "program_parse.y" +#line 547 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); @@ -2493,10 +2521,10 @@ yyreduce: ;} break; - case 49: + case 50: /* Line 1455 of yacc.c */ -#line 554 "program_parse.y" +#line 564 "program_parse.y" { (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); @@ -2505,10 +2533,10 @@ yyreduce: ;} break; - case 50: + case 51: /* Line 1455 of yacc.c */ -#line 561 "program_parse.y" +#line 571 "program_parse.y" { struct asm_symbol temp_sym; @@ -2527,10 +2555,10 @@ yyreduce: ;} break; - case 51: + case 52: /* Line 1455 of yacc.c */ -#line 580 "program_parse.y" +#line 590 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2543,10 +2571,10 @@ yyreduce: ;} break; - case 52: + case 53: /* Line 1455 of yacc.c */ -#line 591 "program_parse.y" +#line 601 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); @@ -2565,13 +2593,16 @@ yyreduce: ;} break; - case 53: + case 54: /* Line 1455 of yacc.c */ -#line 611 "program_parse.y" +#line 621 "program_parse.y" { - (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); - (yyval.dst_reg).WriteMask = (yyvsp[(2) - (2)].swiz_mask).mask; + (yyval.dst_reg) = (yyvsp[(1) - (3)].dst_reg); + (yyval.dst_reg).WriteMask = (yyvsp[(2) - (3)].swiz_mask).mask; + (yyval.dst_reg).CondMask = (yyvsp[(3) - (3)].dst_reg).CondMask; + (yyval.dst_reg).CondSwizzle = (yyvsp[(3) - (3)].dst_reg).CondSwizzle; + (yyval.dst_reg).CondSrc = (yyvsp[(3) - (3)].dst_reg).CondSrc; if ((yyval.dst_reg).File == PROGRAM_OUTPUT) { /* Technically speaking, this should check that it is in @@ -2580,7 +2611,7 @@ yyreduce: */ if (state->option.PositionInvariant && ((yyval.dst_reg).Index == VERT_RESULT_HPOS)) { - yyerror(& (yylsp[(1) - (2)]), state, "position-invariant programs cannot " + yyerror(& (yylsp[(1) - (3)]), state, "position-invariant programs cannot " "write position"); YYERROR; } @@ -2590,10 +2621,10 @@ yyreduce: ;} break; - case 54: + case 55: /* Line 1455 of yacc.c */ -#line 633 "program_parse.y" +#line 646 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2602,10 +2633,10 @@ yyreduce: ;} break; - case 55: + case 56: /* Line 1455 of yacc.c */ -#line 642 "program_parse.y" +#line 655 "program_parse.y" { const unsigned xyzw_valid = ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2638,20 +2669,20 @@ yyreduce: ;} break; - case 56: + case 57: /* Line 1455 of yacc.c */ -#line 675 "program_parse.y" +#line 688 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); (yyval.ext_swizzle).negate = ((yyvsp[(1) - (2)].negate)) ? 1 : 0; ;} break; - case 57: + case 58: /* Line 1455 of yacc.c */ -#line 682 "program_parse.y" +#line 695 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2668,10 +2699,10 @@ yyreduce: ;} break; - case 58: + case 59: /* Line 1455 of yacc.c */ -#line 697 "program_parse.y" +#line 710 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2721,10 +2752,10 @@ yyreduce: ;} break; - case 59: + case 60: /* Line 1455 of yacc.c */ -#line 747 "program_parse.y" +#line 760 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2768,10 +2799,10 @@ yyreduce: ;} break; - case 60: + case 61: /* Line 1455 of yacc.c */ -#line 789 "program_parse.y" +#line 802 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2784,10 +2815,10 @@ yyreduce: ;} break; - case 61: + case 62: /* Line 1455 of yacc.c */ -#line 800 "program_parse.y" +#line 813 "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)) { @@ -2810,10 +2841,10 @@ yyreduce: ;} break; - case 62: + case 63: /* Line 1455 of yacc.c */ -#line 821 "program_parse.y" +#line 834 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2823,10 +2854,10 @@ yyreduce: ;} break; - case 63: + case 64: /* Line 1455 of yacc.c */ -#line 831 "program_parse.y" +#line 844 "program_parse.y" { init_dst_reg(& (yyval.dst_reg)); (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2834,10 +2865,10 @@ yyreduce: ;} break; - case 64: + case 65: /* Line 1455 of yacc.c */ -#line 837 "program_parse.y" +#line 850 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2868,10 +2899,10 @@ yyreduce: ;} break; - case 65: + case 66: /* Line 1455 of yacc.c */ -#line 868 "program_parse.y" +#line 881 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2888,20 +2919,20 @@ yyreduce: ;} break; - case 68: + case 69: /* Line 1455 of yacc.c */ -#line 887 "program_parse.y" +#line 900 "program_parse.y" { init_src_reg(& (yyval.src_reg)); (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer); ;} break; - case 69: + case 70: /* Line 1455 of yacc.c */ -#line 894 "program_parse.y" +#line 907 "program_parse.y" { /* FINISHME: Add support for multiple address registers. */ @@ -2913,31 +2944,31 @@ yyreduce: ;} break; - case 70: + case 71: /* Line 1455 of yacc.c */ -#line 905 "program_parse.y" +#line 918 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 71: + case 72: /* Line 1455 of yacc.c */ -#line 906 "program_parse.y" +#line 919 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 72: + case 73: /* Line 1455 of yacc.c */ -#line 907 "program_parse.y" +#line 920 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; - case 73: + case 74: /* Line 1455 of yacc.c */ -#line 911 "program_parse.y" +#line 924 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2949,10 +2980,10 @@ yyreduce: ;} break; - case 74: + case 75: /* Line 1455 of yacc.c */ -#line 923 "program_parse.y" +#line 936 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { yyerror(& (yylsp[(1) - (1)]), state, @@ -2964,10 +2995,10 @@ yyreduce: ;} break; - case 75: + case 76: /* Line 1455 of yacc.c */ -#line 935 "program_parse.y" +#line 948 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2985,10 +3016,10 @@ yyreduce: ;} break; - case 76: + case 77: /* Line 1455 of yacc.c */ -#line 953 "program_parse.y" +#line 966 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2999,10 +3030,10 @@ yyreduce: ;} break; - case 77: + case 78: /* Line 1455 of yacc.c */ -#line 964 "program_parse.y" +#line 977 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { yyerror(& (yylsp[(1) - (1)]), state, @@ -3014,24 +3045,125 @@ yyreduce: ;} break; - case 82: + case 83: /* Line 1455 of yacc.c */ -#line 980 "program_parse.y" +#line 993 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; - case 87: + case 88: /* Line 1455 of yacc.c */ -#line 984 "program_parse.y" +#line 997 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; + case 89: + +/* Line 1455 of yacc.c */ +#line 1001 "program_parse.y" + { + (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); + ;} + break; + + case 90: + +/* Line 1455 of yacc.c */ +#line 1005 "program_parse.y" + { + (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); + ;} + break; + + case 91: + +/* Line 1455 of yacc.c */ +#line 1009 "program_parse.y" + { + (yyval.dst_reg).CondMask = COND_TR; + (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; + (yyval.dst_reg).CondSrc = 0; + ;} + break; + + case 92: + +/* Line 1455 of yacc.c */ +#line 1017 "program_parse.y" + { + (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); + (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; + ;} + break; + + case 93: + +/* Line 1455 of yacc.c */ +#line 1024 "program_parse.y" + { + (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); + (yyval.dst_reg).CondSwizzle = (yyvsp[(2) - (2)].swiz_mask).swizzle; + ;} + break; + case 94: /* Line 1455 of yacc.c */ -#line 996 "program_parse.y" +#line 1031 "program_parse.y" + { + const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); + if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + + (yyval.dst_reg).CondMask = cond; + (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; + (yyval.dst_reg).CondSrc = 0; + ;} + break; + + case 95: + +/* Line 1455 of yacc.c */ +#line 1054 "program_parse.y" + { + const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); + if ((cond == 0) || ((yyvsp[(1) - (1)].string)[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", (yyvsp[(1) - (1)].string)); + + yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + + (yyval.dst_reg).CondMask = cond; + (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; + (yyval.dst_reg).CondSrc = 0; + ;} + break; + + case 102: + +/* Line 1455 of yacc.c */ +#line 1085 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -3049,55 +3181,55 @@ yyreduce: ;} break; - case 95: + case 103: /* Line 1455 of yacc.c */ -#line 1014 "program_parse.y" +#line 1103 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 96: + case 104: /* Line 1455 of yacc.c */ -#line 1018 "program_parse.y" +#line 1107 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); ;} break; - case 97: + case 105: /* Line 1455 of yacc.c */ -#line 1024 "program_parse.y" +#line 1113 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; ;} break; - case 98: + case 106: /* Line 1455 of yacc.c */ -#line 1028 "program_parse.y" +#line 1117 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; ;} break; - case 99: + case 107: /* Line 1455 of yacc.c */ -#line 1032 "program_parse.y" +#line 1121 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; ;} break; - case 100: + case 108: /* Line 1455 of yacc.c */ -#line 1036 "program_parse.y" +#line 1125 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -3108,10 +3240,10 @@ yyreduce: ;} break; - case 101: + case 109: /* Line 1455 of yacc.c */ -#line 1045 "program_parse.y" +#line 1134 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -3122,38 +3254,38 @@ yyreduce: ;} break; - case 102: + case 110: /* Line 1455 of yacc.c */ -#line 1054 "program_parse.y" +#line 1143 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 103: + case 111: /* Line 1455 of yacc.c */ -#line 1058 "program_parse.y" +#line 1147 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 104: + case 112: /* Line 1455 of yacc.c */ -#line 1063 "program_parse.y" +#line 1152 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); ;} break; - case 105: + case 113: /* Line 1455 of yacc.c */ -#line 1069 "program_parse.y" +#line 1158 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3164,46 +3296,46 @@ yyreduce: ;} break; - case 109: + case 117: /* Line 1455 of yacc.c */ -#line 1083 "program_parse.y" +#line 1172 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; ;} break; - case 110: + case 118: /* Line 1455 of yacc.c */ -#line 1087 "program_parse.y" +#line 1176 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); ;} break; - case 111: + case 119: /* Line 1455 of yacc.c */ -#line 1091 "program_parse.y" +#line 1180 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; ;} break; - case 112: + case 120: /* Line 1455 of yacc.c */ -#line 1095 "program_parse.y" +#line 1184 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); ;} break; - case 115: + case 123: /* Line 1455 of yacc.c */ -#line 1103 "program_parse.y" +#line 1192 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3219,10 +3351,10 @@ yyreduce: ;} break; - case 116: + case 124: /* Line 1455 of yacc.c */ -#line 1119 "program_parse.y" +#line 1208 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { yyerror(& (yylsp[(4) - (6)]), state, @@ -3244,19 +3376,19 @@ yyreduce: ;} break; - case 117: + case 125: /* Line 1455 of yacc.c */ -#line 1141 "program_parse.y" +#line 1230 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 118: + case 126: /* Line 1455 of yacc.c */ -#line 1145 "program_parse.y" +#line 1234 "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"); @@ -3267,38 +3399,38 @@ yyreduce: ;} break; - case 119: + case 127: /* Line 1455 of yacc.c */ -#line 1156 "program_parse.y" +#line 1245 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); ;} break; - case 120: + case 128: /* Line 1455 of yacc.c */ -#line 1162 "program_parse.y" +#line 1251 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); ;} break; - case 122: + case 130: /* Line 1455 of yacc.c */ -#line 1169 "program_parse.y" +#line 1258 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym); ;} break; - case 123: + case 131: /* Line 1455 of yacc.c */ -#line 1176 "program_parse.y" +#line 1265 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3306,10 +3438,10 @@ yyreduce: ;} break; - case 124: + case 132: /* Line 1455 of yacc.c */ -#line 1182 "program_parse.y" +#line 1271 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3317,10 +3449,10 @@ yyreduce: ;} break; - case 125: + case 133: /* Line 1455 of yacc.c */ -#line 1188 "program_parse.y" +#line 1277 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3328,10 +3460,10 @@ yyreduce: ;} break; - case 126: + case 134: /* Line 1455 of yacc.c */ -#line 1196 "program_parse.y" +#line 1285 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3339,10 +3471,10 @@ yyreduce: ;} break; - case 127: + case 135: /* Line 1455 of yacc.c */ -#line 1202 "program_parse.y" +#line 1291 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3350,10 +3482,10 @@ yyreduce: ;} break; - case 128: + case 136: /* Line 1455 of yacc.c */ -#line 1208 "program_parse.y" +#line 1297 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3361,10 +3493,10 @@ yyreduce: ;} break; - case 129: + case 137: /* Line 1455 of yacc.c */ -#line 1216 "program_parse.y" +#line 1305 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3372,10 +3504,10 @@ yyreduce: ;} break; - case 130: + case 138: /* Line 1455 of yacc.c */ -#line 1222 "program_parse.y" +#line 1311 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3383,10 +3515,10 @@ yyreduce: ;} break; - case 131: + case 139: /* Line 1455 of yacc.c */ -#line 1228 "program_parse.y" +#line 1317 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); (yyval.temp_sym).param_binding_begin = ~0; @@ -3394,101 +3526,101 @@ yyreduce: ;} break; - case 132: + case 140: /* Line 1455 of yacc.c */ -#line 1235 "program_parse.y" +#line 1324 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; - case 133: + case 141: /* Line 1455 of yacc.c */ -#line 1236 "program_parse.y" +#line 1325 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 134: + case 142: /* Line 1455 of yacc.c */ -#line 1239 "program_parse.y" +#line 1328 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 135: + case 143: /* Line 1455 of yacc.c */ -#line 1240 "program_parse.y" +#line 1329 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 136: + case 144: /* Line 1455 of yacc.c */ -#line 1241 "program_parse.y" +#line 1330 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 137: + case 145: /* Line 1455 of yacc.c */ -#line 1242 "program_parse.y" +#line 1331 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 138: + case 146: /* Line 1455 of yacc.c */ -#line 1243 "program_parse.y" +#line 1332 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 139: + case 147: /* Line 1455 of yacc.c */ -#line 1244 "program_parse.y" +#line 1333 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 140: + case 148: /* Line 1455 of yacc.c */ -#line 1245 "program_parse.y" +#line 1334 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 141: + case 149: /* Line 1455 of yacc.c */ -#line 1246 "program_parse.y" +#line 1335 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 142: + case 150: /* Line 1455 of yacc.c */ -#line 1247 "program_parse.y" +#line 1336 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 143: + case 151: /* Line 1455 of yacc.c */ -#line 1248 "program_parse.y" +#line 1337 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 144: + case 152: /* Line 1455 of yacc.c */ -#line 1249 "program_parse.y" +#line 1338 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; - case 145: + case 153: /* Line 1455 of yacc.c */ -#line 1253 "program_parse.y" +#line 1342 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_MATERIAL; @@ -3497,37 +3629,37 @@ yyreduce: ;} break; - case 146: + case 154: /* Line 1455 of yacc.c */ -#line 1262 "program_parse.y" +#line 1351 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 147: + case 155: /* Line 1455 of yacc.c */ -#line 1266 "program_parse.y" +#line 1355 "program_parse.y" { (yyval.integer) = STATE_EMISSION; ;} break; - case 148: + case 156: /* Line 1455 of yacc.c */ -#line 1270 "program_parse.y" +#line 1359 "program_parse.y" { (yyval.integer) = STATE_SHININESS; ;} break; - case 149: + case 157: /* Line 1455 of yacc.c */ -#line 1276 "program_parse.y" +#line 1365 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHT; @@ -3536,28 +3668,28 @@ yyreduce: ;} break; - case 150: + case 158: /* Line 1455 of yacc.c */ -#line 1285 "program_parse.y" +#line 1374 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 151: + case 159: /* Line 1455 of yacc.c */ -#line 1289 "program_parse.y" +#line 1378 "program_parse.y" { (yyval.integer) = STATE_POSITION; ;} break; - case 152: + case 160: /* Line 1455 of yacc.c */ -#line 1293 "program_parse.y" +#line 1382 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3568,57 +3700,57 @@ yyreduce: ;} break; - case 153: + case 161: /* Line 1455 of yacc.c */ -#line 1302 "program_parse.y" +#line 1391 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 154: + case 162: /* Line 1455 of yacc.c */ -#line 1306 "program_parse.y" +#line 1395 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; ;} break; - case 155: + case 163: /* Line 1455 of yacc.c */ -#line 1312 "program_parse.y" +#line 1401 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; ;} break; - case 156: + case 164: /* Line 1455 of yacc.c */ -#line 1318 "program_parse.y" +#line 1407 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1]; ;} break; - case 157: + case 165: /* Line 1455 of yacc.c */ -#line 1325 "program_parse.y" +#line 1414 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT; ;} break; - case 158: + case 166: /* Line 1455 of yacc.c */ -#line 1330 "program_parse.y" +#line 1419 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3626,10 +3758,10 @@ yyreduce: ;} break; - case 159: + case 167: /* Line 1455 of yacc.c */ -#line 1338 "program_parse.y" +#line 1427 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_LIGHTPROD; @@ -3639,10 +3771,10 @@ yyreduce: ;} break; - case 161: + case 169: /* Line 1455 of yacc.c */ -#line 1350 "program_parse.y" +#line 1439 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3650,46 +3782,46 @@ yyreduce: ;} break; - case 162: + case 170: /* Line 1455 of yacc.c */ -#line 1358 "program_parse.y" +#line 1447 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; ;} break; - case 163: + case 171: /* Line 1455 of yacc.c */ -#line 1364 "program_parse.y" +#line 1453 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; ;} break; - case 164: + case 172: /* Line 1455 of yacc.c */ -#line 1368 "program_parse.y" +#line 1457 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; ;} break; - case 165: + case 173: /* Line 1455 of yacc.c */ -#line 1372 "program_parse.y" +#line 1461 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; ;} break; - case 166: + case 174: /* Line 1455 of yacc.c */ -#line 1378 "program_parse.y" +#line 1467 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3700,10 +3832,10 @@ yyreduce: ;} break; - case 167: + case 175: /* Line 1455 of yacc.c */ -#line 1389 "program_parse.y" +#line 1478 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_TEXGEN; @@ -3712,92 +3844,92 @@ yyreduce: ;} break; - case 168: + case 176: /* Line 1455 of yacc.c */ -#line 1398 "program_parse.y" +#line 1487 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; ;} break; - case 169: + case 177: /* Line 1455 of yacc.c */ -#line 1402 "program_parse.y" +#line 1491 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; ;} break; - case 170: + case 178: /* Line 1455 of yacc.c */ -#line 1407 "program_parse.y" +#line 1496 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; ;} break; - case 171: + case 179: /* Line 1455 of yacc.c */ -#line 1411 "program_parse.y" +#line 1500 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; ;} break; - case 172: + case 180: /* Line 1455 of yacc.c */ -#line 1415 "program_parse.y" +#line 1504 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; ;} break; - case 173: + case 181: /* Line 1455 of yacc.c */ -#line 1419 "program_parse.y" +#line 1508 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; ;} break; - case 174: + case 182: /* Line 1455 of yacc.c */ -#line 1425 "program_parse.y" +#line 1514 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 175: + case 183: /* Line 1455 of yacc.c */ -#line 1432 "program_parse.y" +#line 1521 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; ;} break; - case 176: + case 184: /* Line 1455 of yacc.c */ -#line 1436 "program_parse.y" +#line 1525 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; ;} break; - case 177: + case 185: /* Line 1455 of yacc.c */ -#line 1442 "program_parse.y" +#line 1531 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_CLIPPLANE; @@ -3805,10 +3937,10 @@ yyreduce: ;} break; - case 178: + case 186: /* Line 1455 of yacc.c */ -#line 1450 "program_parse.y" +#line 1539 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3819,38 +3951,38 @@ yyreduce: ;} break; - case 179: + case 187: /* Line 1455 of yacc.c */ -#line 1461 "program_parse.y" +#line 1550 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = (yyvsp[(2) - (2)].integer); ;} break; - case 180: + case 188: /* Line 1455 of yacc.c */ -#line 1468 "program_parse.y" +#line 1557 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; ;} break; - case 181: + case 189: /* Line 1455 of yacc.c */ -#line 1472 "program_parse.y" +#line 1561 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; ;} break; - case 182: + case 190: /* Line 1455 of yacc.c */ -#line 1478 "program_parse.y" +#line 1567 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3860,10 +3992,10 @@ yyreduce: ;} break; - case 183: + case 191: /* Line 1455 of yacc.c */ -#line 1488 "program_parse.y" +#line 1577 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3873,20 +4005,20 @@ yyreduce: ;} break; - case 184: + case 192: /* Line 1455 of yacc.c */ -#line 1498 "program_parse.y" +#line 1587 "program_parse.y" { (yyval.state)[2] = 0; (yyval.state)[3] = 3; ;} break; - case 185: + case 193: /* Line 1455 of yacc.c */ -#line 1503 "program_parse.y" +#line 1592 "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). @@ -3904,10 +4036,10 @@ yyreduce: ;} break; - case 186: + case 194: /* Line 1455 of yacc.c */ -#line 1521 "program_parse.y" +#line 1610 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3915,55 +4047,55 @@ yyreduce: ;} break; - case 187: + case 195: /* Line 1455 of yacc.c */ -#line 1529 "program_parse.y" +#line 1618 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 188: + case 196: /* Line 1455 of yacc.c */ -#line 1533 "program_parse.y" +#line 1622 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 189: + case 197: /* Line 1455 of yacc.c */ -#line 1539 "program_parse.y" +#line 1628 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; ;} break; - case 190: + case 198: /* Line 1455 of yacc.c */ -#line 1543 "program_parse.y" +#line 1632 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; ;} break; - case 191: + case 199: /* Line 1455 of yacc.c */ -#line 1547 "program_parse.y" +#line 1636 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; ;} break; - case 192: + case 200: /* Line 1455 of yacc.c */ -#line 1553 "program_parse.y" +#line 1642 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3974,88 +4106,88 @@ yyreduce: ;} break; - case 193: + case 201: /* Line 1455 of yacc.c */ -#line 1564 "program_parse.y" +#line 1653 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 194: + case 202: /* Line 1455 of yacc.c */ -#line 1569 "program_parse.y" +#line 1658 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; (yyval.state)[1] = 0; ;} break; - case 195: + case 203: /* Line 1455 of yacc.c */ -#line 1574 "program_parse.y" +#line 1663 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; (yyval.state)[1] = 0; ;} break; - case 196: + case 204: /* Line 1455 of yacc.c */ -#line 1579 "program_parse.y" +#line 1668 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; (yyval.state)[1] = (yyvsp[(2) - (2)].integer); ;} break; - case 197: + case 205: /* Line 1455 of yacc.c */ -#line 1584 "program_parse.y" +#line 1673 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); YYERROR; ;} break; - case 198: + case 206: /* Line 1455 of yacc.c */ -#line 1589 "program_parse.y" +#line 1678 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; (yyval.state)[1] = (yyvsp[(3) - (4)].integer); ;} break; - case 199: + case 207: /* Line 1455 of yacc.c */ -#line 1596 "program_parse.y" +#line 1685 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 200: + case 208: /* Line 1455 of yacc.c */ -#line 1600 "program_parse.y" +#line 1689 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 201: + case 209: /* Line 1455 of yacc.c */ -#line 1605 "program_parse.y" +#line 1694 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix * zero is valid. @@ -4069,10 +4201,10 @@ yyreduce: ;} break; - case 202: + case 210: /* Line 1455 of yacc.c */ -#line 1618 "program_parse.y" +#line 1707 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value * through here. The error will be generated later. @@ -4081,10 +4213,10 @@ yyreduce: ;} break; - case 203: + case 211: /* Line 1455 of yacc.c */ -#line 1626 "program_parse.y" +#line 1715 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -4095,20 +4227,20 @@ yyreduce: ;} break; - case 204: + case 212: /* Line 1455 of yacc.c */ -#line 1637 "program_parse.y" +#line 1726 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = STATE_DEPTH_RANGE; ;} break; - case 209: + case 217: /* Line 1455 of yacc.c */ -#line 1649 "program_parse.y" +#line 1738 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4118,30 +4250,30 @@ yyreduce: ;} break; - case 210: + case 218: /* Line 1455 of yacc.c */ -#line 1659 "program_parse.y" +#line 1748 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 211: + case 219: /* Line 1455 of yacc.c */ -#line 1664 "program_parse.y" +#line 1753 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 212: + case 220: /* Line 1455 of yacc.c */ -#line 1671 "program_parse.y" +#line 1760 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4151,10 +4283,10 @@ yyreduce: ;} break; - case 213: + case 221: /* Line 1455 of yacc.c */ -#line 1681 "program_parse.y" +#line 1770 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4164,30 +4296,30 @@ yyreduce: ;} break; - case 214: + case 222: /* Line 1455 of yacc.c */ -#line 1690 "program_parse.y" +#line 1779 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); (yyval.state)[1] = (yyvsp[(1) - (1)].integer); ;} break; - case 215: + case 223: /* Line 1455 of yacc.c */ -#line 1695 "program_parse.y" +#line 1784 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); (yyval.state)[1] = (yyvsp[(3) - (3)].integer); ;} break; - case 216: + case 224: /* Line 1455 of yacc.c */ -#line 1702 "program_parse.y" +#line 1791 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); (yyval.state)[0] = state->state_param_enum; @@ -4197,10 +4329,10 @@ yyreduce: ;} break; - case 217: + case 225: /* Line 1455 of yacc.c */ -#line 1712 "program_parse.y" +#line 1801 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4210,10 +4342,10 @@ yyreduce: ;} break; - case 218: + case 226: /* Line 1455 of yacc.c */ -#line 1722 "program_parse.y" +#line 1811 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4223,10 +4355,10 @@ yyreduce: ;} break; - case 223: + case 231: /* Line 1455 of yacc.c */ -#line 1737 "program_parse.y" +#line 1826 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4236,10 +4368,10 @@ yyreduce: ;} break; - case 224: + case 232: /* Line 1455 of yacc.c */ -#line 1747 "program_parse.y" +#line 1836 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4249,10 +4381,10 @@ yyreduce: ;} break; - case 225: + case 233: /* Line 1455 of yacc.c */ -#line 1755 "program_parse.y" +#line 1844 "program_parse.y" { (yyval.vector).count = 1; (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4262,10 +4394,10 @@ yyreduce: ;} break; - case 226: + case 234: /* Line 1455 of yacc.c */ -#line 1765 "program_parse.y" +#line 1854 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4275,10 +4407,10 @@ yyreduce: ;} break; - case 227: + case 235: /* Line 1455 of yacc.c */ -#line 1773 "program_parse.y" +#line 1862 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4288,10 +4420,10 @@ yyreduce: ;} break; - case 228: + case 236: /* Line 1455 of yacc.c */ -#line 1782 "program_parse.y" +#line 1871 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4301,10 +4433,10 @@ yyreduce: ;} break; - case 229: + case 237: /* Line 1455 of yacc.c */ -#line 1791 "program_parse.y" +#line 1880 "program_parse.y" { (yyval.vector).count = 4; (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4314,56 +4446,56 @@ yyreduce: ;} break; - case 230: + case 238: /* Line 1455 of yacc.c */ -#line 1801 "program_parse.y" +#line 1890 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); ;} break; - case 231: + case 239: /* Line 1455 of yacc.c */ -#line 1805 "program_parse.y" +#line 1894 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); ;} break; - case 232: + case 240: /* Line 1455 of yacc.c */ -#line 1810 "program_parse.y" +#line 1899 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 233: + case 241: /* Line 1455 of yacc.c */ -#line 1811 "program_parse.y" +#line 1900 "program_parse.y" { (yyval.negate) = TRUE; ;} break; - case 234: + case 242: /* Line 1455 of yacc.c */ -#line 1812 "program_parse.y" +#line 1901 "program_parse.y" { (yyval.negate) = FALSE; ;} break; - case 235: + case 243: /* Line 1455 of yacc.c */ -#line 1815 "program_parse.y" +#line 1904 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; - case 237: + case 245: /* Line 1455 of yacc.c */ -#line 1819 "program_parse.y" +#line 1908 "program_parse.y" { /* NV_fragment_program_option defines the size qualifiers in a * fairly broken way. "SHORT" or "LONG" can optionally be used @@ -4399,25 +4531,25 @@ yyreduce: ;} break; - case 238: + case 246: /* Line 1455 of yacc.c */ -#line 1853 "program_parse.y" +#line 1942 "program_parse.y" { ;} break; - case 239: + case 247: /* Line 1455 of yacc.c */ -#line 1857 "program_parse.y" +#line 1946 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; - case 241: + case 249: /* Line 1455 of yacc.c */ -#line 1861 "program_parse.y" +#line 1950 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { YYERROR; @@ -4425,10 +4557,10 @@ yyreduce: ;} break; - case 242: + case 250: /* Line 1455 of yacc.c */ -#line 1867 "program_parse.y" +#line 1956 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { YYERROR; @@ -4436,10 +4568,10 @@ yyreduce: ;} break; - case 243: + case 251: /* Line 1455 of yacc.c */ -#line 1875 "program_parse.y" +#line 1964 "program_parse.y" { struct asm_symbol *const s = declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)])); @@ -4452,10 +4584,10 @@ yyreduce: ;} break; - case 244: + case 252: /* Line 1455 of yacc.c */ -#line 1888 "program_parse.y" +#line 1977 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_HPOS; @@ -4466,10 +4598,10 @@ yyreduce: ;} break; - case 245: + case 253: /* Line 1455 of yacc.c */ -#line 1897 "program_parse.y" +#line 1986 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_FOGC; @@ -4480,19 +4612,19 @@ yyreduce: ;} break; - case 246: + case 254: /* Line 1455 of yacc.c */ -#line 1906 "program_parse.y" +#line 1995 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); ;} break; - case 247: + case 255: /* Line 1455 of yacc.c */ -#line 1910 "program_parse.y" +#line 1999 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_PSIZ; @@ -4503,10 +4635,10 @@ yyreduce: ;} break; - case 248: + case 256: /* Line 1455 of yacc.c */ -#line 1919 "program_parse.y" +#line 2008 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4517,10 +4649,10 @@ yyreduce: ;} break; - case 249: + case 257: /* Line 1455 of yacc.c */ -#line 1928 "program_parse.y" +#line 2017 "program_parse.y" { if (state->mode == ARB_fragment) { (yyval.result) = FRAG_RESULT_DEPTH; @@ -4531,19 +4663,19 @@ yyreduce: ;} break; - case 250: + case 258: /* Line 1455 of yacc.c */ -#line 1939 "program_parse.y" +#line 2028 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); ;} break; - case 251: + case 259: /* Line 1455 of yacc.c */ -#line 1945 "program_parse.y" +#line 2034 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) ? VERT_RESULT_COL0 @@ -4551,10 +4683,10 @@ yyreduce: ;} break; - case 252: + case 260: /* Line 1455 of yacc.c */ -#line 1951 "program_parse.y" +#line 2040 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_COL0; @@ -4565,10 +4697,10 @@ yyreduce: ;} break; - case 253: + case 261: /* Line 1455 of yacc.c */ -#line 1960 "program_parse.y" +#line 2049 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = VERT_RESULT_BFC0; @@ -4579,19 +4711,19 @@ yyreduce: ;} break; - case 254: + case 262: /* Line 1455 of yacc.c */ -#line 1971 "program_parse.y" +#line 2060 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 255: + case 263: /* Line 1455 of yacc.c */ -#line 1975 "program_parse.y" +#line 2064 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 0; @@ -4602,10 +4734,10 @@ yyreduce: ;} break; - case 256: + case 264: /* Line 1455 of yacc.c */ -#line 1984 "program_parse.y" +#line 2073 "program_parse.y" { if (state->mode == ARB_vertex) { (yyval.integer) = 1; @@ -4616,94 +4748,94 @@ yyreduce: ;} break; - case 257: + case 265: /* Line 1455 of yacc.c */ -#line 1994 "program_parse.y" +#line 2083 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 258: + case 266: /* Line 1455 of yacc.c */ -#line 1995 "program_parse.y" +#line 2084 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 259: + case 267: /* Line 1455 of yacc.c */ -#line 1996 "program_parse.y" +#line 2085 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 260: + case 268: /* Line 1455 of yacc.c */ -#line 1999 "program_parse.y" +#line 2088 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 261: + case 269: /* Line 1455 of yacc.c */ -#line 2000 "program_parse.y" +#line 2089 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 262: + case 270: /* Line 1455 of yacc.c */ -#line 2001 "program_parse.y" +#line 2090 "program_parse.y" { (yyval.integer) = 1; ;} break; - case 263: + case 271: /* Line 1455 of yacc.c */ -#line 2004 "program_parse.y" +#line 2093 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 264: + case 272: /* Line 1455 of yacc.c */ -#line 2005 "program_parse.y" +#line 2094 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 265: + case 273: /* Line 1455 of yacc.c */ -#line 2008 "program_parse.y" +#line 2097 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 266: + case 274: /* Line 1455 of yacc.c */ -#line 2009 "program_parse.y" +#line 2098 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 267: + case 275: /* Line 1455 of yacc.c */ -#line 2012 "program_parse.y" +#line 2101 "program_parse.y" { (yyval.integer) = 0; ;} break; - case 268: + case 276: /* Line 1455 of yacc.c */ -#line 2013 "program_parse.y" +#line 2102 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; - case 269: + case 277: /* Line 1455 of yacc.c */ -#line 2017 "program_parse.y" +#line 2106 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4714,10 +4846,10 @@ yyreduce: ;} break; - case 270: + case 278: /* Line 1455 of yacc.c */ -#line 2028 "program_parse.y" +#line 2117 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4728,10 +4860,10 @@ yyreduce: ;} break; - case 271: + case 279: /* Line 1455 of yacc.c */ -#line 2039 "program_parse.y" +#line 2128 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4742,10 +4874,10 @@ yyreduce: ;} break; - case 272: + case 280: /* Line 1455 of yacc.c */ -#line 2050 "program_parse.y" +#line 2139 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4769,7 +4901,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4773 "program_parse.tab.c" +#line 4905 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4988,7 +5120,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 2074 "program_parse.y" +#line 2163 "program_parse.y" void @@ -5007,8 +5139,15 @@ asm_instruction_set_operands(struct asm_instruction *inst, inst->Base.DstReg = *dst; } - inst->Base.SrcReg[0] = src0->Base; - inst->SrcReg[0] = *src0; + /* The only instruction that doesn't have any source registers is the + * condition-code based KIL instruction added by NV_fragment_program_option. + */ + if (src0 != NULL) { + inst->Base.SrcReg[0] = src0->Base; + inst->SrcReg[0] = *src0; + } else { + init_src_reg(& inst->SrcReg[0]); + } if (src1 != NULL) { inst->Base.SrcReg[1] = src1->Base; diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index d6bac07081..3021ae83f3 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -202,6 +202,8 @@ static struct asm_instruction *asm_instruction_copy_ctor( %type addrReg %type addrComponent addrWriteMask +%type ccMaskRule ccTest ccMaskRule2 ccTest2 optionalCcMask + %type resultBinding resultColBinding %type optFaceType optColorType %type optResultFaceType optResultColorType @@ -447,6 +449,14 @@ KIL_instruction: KIL swizzleSrcReg $$ = asm_instruction_ctor(OPCODE_KIL, NULL, & $2, NULL, NULL); state->fragment.UsesKill = 1; } + | KIL ccTest + { + $$ = asm_instruction_ctor(OPCODE_KIL_NV, NULL, NULL, NULL, NULL); + $$->Base.DstReg.CondMask = $2.CondMask; + $$->Base.DstReg.CondSwizzle = $2.CondSwizzle; + $$->Base.DstReg.CondSrc = $2.CondSrc; + state->fragment.UsesKill = 1; + } ; TXD_instruction: TXD_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg ',' swizzleSrcReg ',' texImageUnit ',' texTarget @@ -607,10 +617,13 @@ swizzleSrcReg: optionalSign srcReg swizzleSuffix ; -maskedDstReg: dstReg optionalMask +maskedDstReg: dstReg optionalMask optionalCcMask { $$ = $1; $$.WriteMask = $2.mask; + $$.CondMask = $3.CondMask; + $$.CondSwizzle = $3.CondSwizzle; + $$.CondSrc = $3.CondSrc; if ($$.File == PROGRAM_OUTPUT) { /* Technically speaking, this should check that it is in @@ -984,6 +997,82 @@ optionalMask: MASK4 | MASK3 | MASK2 | MASK1 | { $$.swizzle = SWIZZLE_NOOP; $$.mask = WRITEMASK_XYZW; } ; +optionalCcMask: '(' ccTest ')' + { + $$ = $2; + } + | '(' ccTest2 ')' + { + $$ = $2; + } + | + { + $$.CondMask = COND_TR; + $$.CondSwizzle = SWIZZLE_NOOP; + $$.CondSrc = 0; + } + ; + +ccTest: ccMaskRule swizzleSuffix + { + $$ = $1; + $$.CondSwizzle = $2.swizzle; + } + ; + +ccTest2: ccMaskRule2 swizzleSuffix + { + $$ = $1; + $$.CondSwizzle = $2.swizzle; + } + ; + +ccMaskRule: IDENTIFIER + { + const int cond = _mesa_parse_cc($1); + if ((cond == 0) || ($1[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", $1); + + yyerror(& @1, state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + + $$.CondMask = cond; + $$.CondSwizzle = SWIZZLE_NOOP; + $$.CondSrc = 0; + } + ; + +ccMaskRule2: USED_IDENTIFIER + { + const int cond = _mesa_parse_cc($1); + if ((cond == 0) || ($1[2] != '\0')) { + char *const err_str = + make_error_string("invalid condition code \"%s\"", $1); + + yyerror(& @1, state, (err_str != NULL) + ? err_str : "invalid condition code"); + + if (err_str != NULL) { + _mesa_free(err_str); + } + + YYERROR; + } + + $$.CondMask = cond; + $$.CondSwizzle = SWIZZLE_NOOP; + $$.CondSrc = 0; + } + ; + namingStatement: ATTRIB_statement | PARAM_statement | TEMP_statement @@ -2089,8 +2178,15 @@ asm_instruction_set_operands(struct asm_instruction *inst, inst->Base.DstReg = *dst; } - inst->Base.SrcReg[0] = src0->Base; - inst->SrcReg[0] = *src0; + /* The only instruction that doesn't have any source registers is the + * condition-code based KIL instruction added by NV_fragment_program_option. + */ + if (src0 != NULL) { + inst->Base.SrcReg[0] = src0->Base; + inst->SrcReg[0] = *src0; + } else { + init_src_reg(& inst->SrcReg[0]); + } if (src1 != NULL) { inst->Base.SrcReg[1] = src1->Base; diff --git a/src/mesa/shader/program_parse_extra.c b/src/mesa/shader/program_parse_extra.c index cb7b7a5fb2..0656c5eaa8 100644 --- a/src/mesa/shader/program_parse_extra.c +++ b/src/mesa/shader/program_parse_extra.c @@ -94,6 +94,60 @@ _mesa_parse_instruction_suffix(const struct asm_parser_state *state, } +int +_mesa_parse_cc(const char *s) +{ + int cond = 0; + + switch (s[0]) { + case 'E': + if (s[1] == 'Q') { + cond = COND_EQ; + } + break; + + case 'F': + if (s[1] == 'L') { + cond = COND_FL; + } + break; + + case 'G': + if (s[1] == 'E') { + cond = COND_GE; + } else if (s[1] == 'T') { + cond = COND_GT; + } + break; + + case 'L': + if (s[1] == 'E') { + cond = COND_LE; + } else if (s[1] == 'T') { + cond = COND_LT; + } + break; + + case 'N': + if (s[1] == 'E') { + cond = COND_NE; + } + break; + + case 'T': + if (s[1] == 'R') { + cond = COND_TR; + } + break; + + default: + break; + } + + return ((cond == 0) || (s[2] != '\0')) ? 0 : cond; +} + + int _mesa_ARBvp_parse_option(struct asm_parser_state *state, const char *option) { diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h index 497891f53d..bce6041381 100644 --- a/src/mesa/shader/program_parser.h +++ b/src/mesa/shader/program_parser.h @@ -278,4 +278,17 @@ extern int _mesa_ARBfp_parse_option(struct asm_parser_state *state, extern int _mesa_parse_instruction_suffix(const struct asm_parser_state *state, const char *suffix, struct prog_instruction *inst); +/** + * Parses a condition code name + * + * The condition code names (e.g., \c LT, \c GT, \c NE) were added to assembly + * shaders with the \c GL_NV_fragment_program_option extension. This function + * converts a string representation into one of the \c COND_ macros. + * + * \return + * One of the \c COND_ macros defined in prog_instruction.h on success or zero + * on failure. + */ +extern int _mesa_parse_cc(const char *s); + /*@}*/ -- cgit v1.2.3 From dd245016657c599ecf24c4abe999319f9c870c47 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 20 Oct 2009 10:58:14 -0700 Subject: ARB prog parser: Fix parameter array size comparison Array indexes are invalid when >= the maximum, but array sizes are only in valid when > the maximum. This prevented programs from declaring a single maximum size array. See the piglit vp-max-array test. --- src/mesa/shader/program_parse.tab.c | 2 +- src/mesa/shader/program_parse.y | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 9f2d4de90f..c255e912ed 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -3109,7 +3109,7 @@ yyreduce: /* Line 1455 of yacc.c */ #line 1041 "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 { diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 06c1915fbe..ae9e15ae5a 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -1039,7 +1039,7 @@ optArraySize: } | INTEGER { - if (($1 < 1) || ((unsigned) $1 >= state->limits->MaxParameters)) { + if (($1 < 1) || ((unsigned) $1 > state->limits->MaxParameters)) { yyerror(& @1, state, "invalid parameter array size"); YYERROR; } else { -- cgit v1.2.3 From 8df9587d68752f3369cc1eda1606d3b7c1041ec6 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 27 Oct 2009 11:46:29 -0700 Subject: ARB prog parser: Don't leak program string The program string is kept in the program object. On the second call into glProgramStringARB the previous kept string would be leaked. --- src/mesa/shader/program_parse.y | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index ae9e15ae5a..c3152aa2f8 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -2278,6 +2278,10 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, _mesa_memcpy (strz, str, len); strz[len] = '\0'; + if (state->prog->String != NULL) { + _mesa_free(state->prog->String); + } + state->prog->String = strz; state->st = _mesa_symbol_table_ctor(); -- cgit v1.2.3 From 93dae6761bc90bbd43b450d2673620ec189b2c7a Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 27 Oct 2009 13:40:18 -0700 Subject: ARB prog parser: Fix epic memory leak in lexer / parser interface Anything that matched IDENTIFIER was strdup'ed and returned to the parser. However, almost every case of IDENTIFIER in the parser just dropped the returned string on the floor. Every swizzle string, every option string, every use of a variable, etc. leaked memory. Create a temporary buffer in the parser state (string_dumpster and dumpster_size). Return strings from the lexer to the parser in the buffer. Grow the buffer as needed. When the parser needs to keep a string (i.e., delcaring a new variable), let it make a copy then. The only leak that valgrind now detects is /occasionally/ the copy of the program string in gl_program::String is leaked. I'm not seeing how. :( --- src/mesa/shader/lex.yy.c | 445 ++++++++++++++++++++---------------- src/mesa/shader/program_lexer.l | 45 +++- src/mesa/shader/program_parse.tab.c | 21 +- src/mesa/shader/program_parse.y | 17 +- src/mesa/shader/program_parser.h | 16 ++ 5 files changed, 337 insertions(+), 207 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index fefef573ee..728c2dc272 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -53,7 +53,6 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; -#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -84,6 +83,8 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif +#endif /* ! C99 */ + #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -157,7 +158,15 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else #define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -918,7 +927,7 @@ static yyconst flex_int16_t yy_chk[1023] = if (condition) { \ return token; \ } else { \ - yylval->string = strdup(yytext); \ + yylval->string = return_string(yyextra, yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -941,7 +950,7 @@ static yyconst flex_int16_t yy_chk[1023] = yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ - yylval->string = strdup(yytext); \ + yylval->string = return_string(yyextra, yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -949,6 +958,45 @@ static yyconst flex_int16_t yy_chk[1023] = #define SWIZZLE_INVAL MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \ SWIZZLE_NIL, SWIZZLE_NIL) +/** + * Send a string to the parser using asm_parser_state::string_dumpster + * + * Sends a string to the parser using asm_parser_state::string_dumpster as a + * temporary storage buffer. Data previously stored in + * asm_parser_state::string_dumpster will be lost. If + * asm_parser_state::string_dumpster is not large enough to hold the new + * string, the buffer size will be increased. The buffer size is \b never + * decreased. + * + * \param state Assembler parser state tracking + * \param str String to be passed to the parser + * + * \return + * A pointer to asm_parser_state::string_dumpster on success or \c NULL on + * failure. Currently the only failure case is \c ENOMEM. + */ +static char * +return_string(struct asm_parser_state *state, const char *str) +{ + const size_t len = strlen(str); + + if (len >= state->dumpster_size) { + char *const dumpster = _mesa_realloc(state->string_dumpster, + state->dumpster_size, + len + 1); + if (dumpster == NULL) { + return NULL; + } + + state->string_dumpster = dumpster; + state->dumpster_size = len + 1; + } + + memcpy(state->string_dumpster, str, len + 1); + return state->string_dumpster; +} + + static unsigned mask_from_char(char c) { @@ -1004,7 +1052,7 @@ swiz_from_char(char c) } while(0); #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1008 "lex.yy.c" +#line 1056 "lex.yy.c" #define INITIAL 0 @@ -1141,7 +1189,12 @@ static int input (yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else #define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1149,7 +1202,7 @@ static int input (yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1160,7 +1213,7 @@ static int input (yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - unsigned n; \ + size_t n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1245,10 +1298,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 137 "program_lexer.l" +#line 176 "program_lexer.l" -#line 1252 "lex.yy.c" +#line 1305 "lex.yy.c" yylval = yylval_param; @@ -1337,17 +1390,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 139 "program_lexer.l" +#line 178 "program_lexer.l" { return ARBvp_10; } YY_BREAK case 2: YY_RULE_SETUP -#line 140 "program_lexer.l" +#line 179 "program_lexer.l" { return ARBfp_10; } YY_BREAK case 3: YY_RULE_SETUP -#line 141 "program_lexer.l" +#line 180 "program_lexer.l" { yylval->integer = at_address; return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1355,760 +1408,760 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 145 "program_lexer.l" +#line 184 "program_lexer.l" { return ALIAS; } YY_BREAK case 5: YY_RULE_SETUP -#line 146 "program_lexer.l" +#line 185 "program_lexer.l" { return ATTRIB; } YY_BREAK case 6: YY_RULE_SETUP -#line 147 "program_lexer.l" +#line 186 "program_lexer.l" { return END; } YY_BREAK case 7: YY_RULE_SETUP -#line 148 "program_lexer.l" +#line 187 "program_lexer.l" { return OPTION; } YY_BREAK case 8: YY_RULE_SETUP -#line 149 "program_lexer.l" +#line 188 "program_lexer.l" { return OUTPUT; } YY_BREAK case 9: YY_RULE_SETUP -#line 150 "program_lexer.l" +#line 189 "program_lexer.l" { return PARAM; } YY_BREAK case 10: YY_RULE_SETUP -#line 151 "program_lexer.l" +#line 190 "program_lexer.l" { yylval->integer = at_temp; return TEMP; } YY_BREAK case 11: YY_RULE_SETUP -#line 153 "program_lexer.l" +#line 192 "program_lexer.l" { return_opcode( 1, VECTOR_OP, ABS, OFF); } YY_BREAK case 12: YY_RULE_SETUP -#line 154 "program_lexer.l" +#line 193 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } YY_BREAK case 13: YY_RULE_SETUP -#line 155 "program_lexer.l" +#line 194 "program_lexer.l" { return_opcode( 1, BIN_OP, ADD, OFF); } YY_BREAK case 14: YY_RULE_SETUP -#line 156 "program_lexer.l" +#line 195 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } YY_BREAK case 15: YY_RULE_SETUP -#line 157 "program_lexer.l" +#line 196 "program_lexer.l" { return_opcode(require_ARB_vp, ARL, ARL, OFF); } YY_BREAK case 16: YY_RULE_SETUP -#line 159 "program_lexer.l" +#line 198 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } YY_BREAK case 17: YY_RULE_SETUP -#line 160 "program_lexer.l" +#line 199 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } YY_BREAK case 18: YY_RULE_SETUP -#line 161 "program_lexer.l" +#line 200 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } YY_BREAK case 19: YY_RULE_SETUP -#line 162 "program_lexer.l" +#line 201 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } YY_BREAK case 20: YY_RULE_SETUP -#line 164 "program_lexer.l" +#line 203 "program_lexer.l" { return_opcode( 1, BIN_OP, DP3, OFF); } YY_BREAK case 21: YY_RULE_SETUP -#line 165 "program_lexer.l" +#line 204 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } YY_BREAK case 22: YY_RULE_SETUP -#line 166 "program_lexer.l" +#line 205 "program_lexer.l" { return_opcode( 1, BIN_OP, DP4, OFF); } YY_BREAK case 23: YY_RULE_SETUP -#line 167 "program_lexer.l" +#line 206 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } YY_BREAK case 24: YY_RULE_SETUP -#line 168 "program_lexer.l" +#line 207 "program_lexer.l" { return_opcode( 1, BIN_OP, DPH, OFF); } YY_BREAK case 25: YY_RULE_SETUP -#line 169 "program_lexer.l" +#line 208 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } YY_BREAK case 26: YY_RULE_SETUP -#line 170 "program_lexer.l" +#line 209 "program_lexer.l" { return_opcode( 1, BIN_OP, DST, OFF); } YY_BREAK case 27: YY_RULE_SETUP -#line 171 "program_lexer.l" +#line 210 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } YY_BREAK case 28: YY_RULE_SETUP -#line 173 "program_lexer.l" +#line 212 "program_lexer.l" { return_opcode( 1, SCALAR_OP, EX2, OFF); } YY_BREAK case 29: YY_RULE_SETUP -#line 174 "program_lexer.l" +#line 213 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } YY_BREAK case 30: YY_RULE_SETUP -#line 175 "program_lexer.l" +#line 214 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } YY_BREAK case 31: YY_RULE_SETUP -#line 177 "program_lexer.l" +#line 216 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FLR, OFF); } YY_BREAK case 32: YY_RULE_SETUP -#line 178 "program_lexer.l" +#line 217 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } YY_BREAK case 33: YY_RULE_SETUP -#line 179 "program_lexer.l" +#line 218 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FRC, OFF); } YY_BREAK case 34: YY_RULE_SETUP -#line 180 "program_lexer.l" +#line 219 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } YY_BREAK case 35: YY_RULE_SETUP -#line 182 "program_lexer.l" +#line 221 "program_lexer.l" { return_opcode(require_ARB_fp, KIL, KIL, OFF); } YY_BREAK case 36: YY_RULE_SETUP -#line 184 "program_lexer.l" +#line 223 "program_lexer.l" { return_opcode( 1, VECTOR_OP, LIT, OFF); } YY_BREAK case 37: YY_RULE_SETUP -#line 185 "program_lexer.l" +#line 224 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } YY_BREAK case 38: YY_RULE_SETUP -#line 186 "program_lexer.l" +#line 225 "program_lexer.l" { return_opcode( 1, SCALAR_OP, LG2, OFF); } YY_BREAK case 39: YY_RULE_SETUP -#line 187 "program_lexer.l" +#line 226 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } YY_BREAK case 40: YY_RULE_SETUP -#line 188 "program_lexer.l" +#line 227 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } YY_BREAK case 41: YY_RULE_SETUP -#line 189 "program_lexer.l" +#line 228 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } YY_BREAK case 42: YY_RULE_SETUP -#line 190 "program_lexer.l" +#line 229 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } YY_BREAK case 43: YY_RULE_SETUP -#line 192 "program_lexer.l" +#line 231 "program_lexer.l" { return_opcode( 1, TRI_OP, MAD, OFF); } YY_BREAK case 44: YY_RULE_SETUP -#line 193 "program_lexer.l" +#line 232 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } YY_BREAK case 45: YY_RULE_SETUP -#line 194 "program_lexer.l" +#line 233 "program_lexer.l" { return_opcode( 1, BIN_OP, MAX, OFF); } YY_BREAK case 46: YY_RULE_SETUP -#line 195 "program_lexer.l" +#line 234 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } YY_BREAK case 47: YY_RULE_SETUP -#line 196 "program_lexer.l" +#line 235 "program_lexer.l" { return_opcode( 1, BIN_OP, MIN, OFF); } YY_BREAK case 48: YY_RULE_SETUP -#line 197 "program_lexer.l" +#line 236 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } YY_BREAK case 49: YY_RULE_SETUP -#line 198 "program_lexer.l" +#line 237 "program_lexer.l" { return_opcode( 1, VECTOR_OP, MOV, OFF); } YY_BREAK case 50: YY_RULE_SETUP -#line 199 "program_lexer.l" +#line 238 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } YY_BREAK case 51: YY_RULE_SETUP -#line 200 "program_lexer.l" +#line 239 "program_lexer.l" { return_opcode( 1, BIN_OP, MUL, OFF); } YY_BREAK case 52: YY_RULE_SETUP -#line 201 "program_lexer.l" +#line 240 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } YY_BREAK case 53: YY_RULE_SETUP -#line 203 "program_lexer.l" +#line 242 "program_lexer.l" { return_opcode( 1, BINSC_OP, POW, OFF); } YY_BREAK case 54: YY_RULE_SETUP -#line 204 "program_lexer.l" +#line 243 "program_lexer.l" { return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } YY_BREAK case 55: YY_RULE_SETUP -#line 206 "program_lexer.l" +#line 245 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RCP, OFF); } YY_BREAK case 56: YY_RULE_SETUP -#line 207 "program_lexer.l" +#line 246 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } YY_BREAK case 57: YY_RULE_SETUP -#line 208 "program_lexer.l" +#line 247 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RSQ, OFF); } YY_BREAK case 58: YY_RULE_SETUP -#line 209 "program_lexer.l" +#line 248 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } YY_BREAK case 59: YY_RULE_SETUP -#line 211 "program_lexer.l" +#line 250 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } YY_BREAK case 60: YY_RULE_SETUP -#line 212 "program_lexer.l" +#line 251 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } YY_BREAK case 61: YY_RULE_SETUP -#line 213 "program_lexer.l" +#line 252 "program_lexer.l" { return_opcode( 1, BIN_OP, SGE, OFF); } YY_BREAK case 62: YY_RULE_SETUP -#line 214 "program_lexer.l" +#line 253 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } YY_BREAK case 63: YY_RULE_SETUP -#line 215 "program_lexer.l" +#line 254 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } YY_BREAK case 64: YY_RULE_SETUP -#line 216 "program_lexer.l" +#line 255 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } YY_BREAK case 65: YY_RULE_SETUP -#line 217 "program_lexer.l" +#line 256 "program_lexer.l" { return_opcode( 1, BIN_OP, SLT, OFF); } YY_BREAK case 66: YY_RULE_SETUP -#line 218 "program_lexer.l" +#line 257 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } YY_BREAK case 67: YY_RULE_SETUP -#line 219 "program_lexer.l" +#line 258 "program_lexer.l" { return_opcode( 1, BIN_OP, SUB, OFF); } YY_BREAK case 68: YY_RULE_SETUP -#line 220 "program_lexer.l" +#line 259 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } YY_BREAK case 69: YY_RULE_SETUP -#line 221 "program_lexer.l" +#line 260 "program_lexer.l" { return_opcode( 1, SWZ, SWZ, OFF); } YY_BREAK case 70: YY_RULE_SETUP -#line 222 "program_lexer.l" +#line 261 "program_lexer.l" { return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } YY_BREAK case 71: YY_RULE_SETUP -#line 224 "program_lexer.l" +#line 263 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } YY_BREAK case 72: YY_RULE_SETUP -#line 225 "program_lexer.l" +#line 264 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } YY_BREAK case 73: YY_RULE_SETUP -#line 226 "program_lexer.l" +#line 265 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } YY_BREAK case 74: YY_RULE_SETUP -#line 227 "program_lexer.l" +#line 266 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } YY_BREAK case 75: YY_RULE_SETUP -#line 228 "program_lexer.l" +#line 267 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } YY_BREAK case 76: YY_RULE_SETUP -#line 229 "program_lexer.l" +#line 268 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } YY_BREAK case 77: YY_RULE_SETUP -#line 231 "program_lexer.l" +#line 270 "program_lexer.l" { return_opcode( 1, BIN_OP, XPD, OFF); } YY_BREAK case 78: YY_RULE_SETUP -#line 232 "program_lexer.l" +#line 271 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } YY_BREAK case 79: YY_RULE_SETUP -#line 234 "program_lexer.l" +#line 273 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } YY_BREAK case 80: YY_RULE_SETUP -#line 235 "program_lexer.l" +#line 274 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } YY_BREAK case 81: YY_RULE_SETUP -#line 236 "program_lexer.l" +#line 275 "program_lexer.l" { return PROGRAM; } YY_BREAK case 82: YY_RULE_SETUP -#line 237 "program_lexer.l" +#line 276 "program_lexer.l" { return STATE; } YY_BREAK case 83: YY_RULE_SETUP -#line 238 "program_lexer.l" +#line 277 "program_lexer.l" { return RESULT; } YY_BREAK case 84: YY_RULE_SETUP -#line 240 "program_lexer.l" +#line 279 "program_lexer.l" { return AMBIENT; } YY_BREAK case 85: YY_RULE_SETUP -#line 241 "program_lexer.l" +#line 280 "program_lexer.l" { return ATTENUATION; } YY_BREAK case 86: YY_RULE_SETUP -#line 242 "program_lexer.l" +#line 281 "program_lexer.l" { return BACK; } YY_BREAK case 87: YY_RULE_SETUP -#line 243 "program_lexer.l" +#line 282 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, CLIP); } YY_BREAK case 88: YY_RULE_SETUP -#line 244 "program_lexer.l" +#line 283 "program_lexer.l" { return COLOR; } YY_BREAK case 89: YY_RULE_SETUP -#line 245 "program_lexer.l" +#line 284 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, DEPTH); } YY_BREAK case 90: YY_RULE_SETUP -#line 246 "program_lexer.l" +#line 285 "program_lexer.l" { return DIFFUSE; } YY_BREAK case 91: YY_RULE_SETUP -#line 247 "program_lexer.l" +#line 286 "program_lexer.l" { return DIRECTION; } YY_BREAK case 92: YY_RULE_SETUP -#line 248 "program_lexer.l" +#line 287 "program_lexer.l" { return EMISSION; } YY_BREAK case 93: YY_RULE_SETUP -#line 249 "program_lexer.l" +#line 288 "program_lexer.l" { return ENV; } YY_BREAK case 94: YY_RULE_SETUP -#line 250 "program_lexer.l" +#line 289 "program_lexer.l" { return EYE; } YY_BREAK case 95: YY_RULE_SETUP -#line 251 "program_lexer.l" +#line 290 "program_lexer.l" { return FOGCOORD; } YY_BREAK case 96: YY_RULE_SETUP -#line 252 "program_lexer.l" +#line 291 "program_lexer.l" { return FOG; } YY_BREAK case 97: YY_RULE_SETUP -#line 253 "program_lexer.l" +#line 292 "program_lexer.l" { return FRONT; } YY_BREAK case 98: YY_RULE_SETUP -#line 254 "program_lexer.l" +#line 293 "program_lexer.l" { return HALF; } YY_BREAK case 99: YY_RULE_SETUP -#line 255 "program_lexer.l" +#line 294 "program_lexer.l" { return INVERSE; } YY_BREAK case 100: YY_RULE_SETUP -#line 256 "program_lexer.l" +#line 295 "program_lexer.l" { return INVTRANS; } YY_BREAK case 101: YY_RULE_SETUP -#line 257 "program_lexer.l" +#line 296 "program_lexer.l" { return LIGHT; } YY_BREAK case 102: YY_RULE_SETUP -#line 258 "program_lexer.l" +#line 297 "program_lexer.l" { return LIGHTMODEL; } YY_BREAK case 103: YY_RULE_SETUP -#line 259 "program_lexer.l" +#line 298 "program_lexer.l" { return LIGHTPROD; } YY_BREAK case 104: YY_RULE_SETUP -#line 260 "program_lexer.l" +#line 299 "program_lexer.l" { return LOCAL; } YY_BREAK case 105: YY_RULE_SETUP -#line 261 "program_lexer.l" +#line 300 "program_lexer.l" { return MATERIAL; } YY_BREAK case 106: YY_RULE_SETUP -#line 262 "program_lexer.l" +#line 301 "program_lexer.l" { return MAT_PROGRAM; } YY_BREAK case 107: YY_RULE_SETUP -#line 263 "program_lexer.l" +#line 302 "program_lexer.l" { return MATRIX; } YY_BREAK case 108: YY_RULE_SETUP -#line 264 "program_lexer.l" +#line 303 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } YY_BREAK case 109: YY_RULE_SETUP -#line 265 "program_lexer.l" +#line 304 "program_lexer.l" { return MODELVIEW; } YY_BREAK case 110: YY_RULE_SETUP -#line 266 "program_lexer.l" +#line 305 "program_lexer.l" { return MVP; } YY_BREAK case 111: YY_RULE_SETUP -#line 267 "program_lexer.l" +#line 306 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, NORMAL); } YY_BREAK case 112: YY_RULE_SETUP -#line 268 "program_lexer.l" +#line 307 "program_lexer.l" { return OBJECT; } YY_BREAK case 113: YY_RULE_SETUP -#line 269 "program_lexer.l" +#line 308 "program_lexer.l" { return PALETTE; } YY_BREAK case 114: YY_RULE_SETUP -#line 270 "program_lexer.l" +#line 309 "program_lexer.l" { return PARAMS; } YY_BREAK case 115: YY_RULE_SETUP -#line 271 "program_lexer.l" +#line 310 "program_lexer.l" { return PLANE; } YY_BREAK case 116: YY_RULE_SETUP -#line 272 "program_lexer.l" +#line 311 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINT_TOK); } YY_BREAK case 117: YY_RULE_SETUP -#line 273 "program_lexer.l" +#line 312 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINTSIZE); } YY_BREAK case 118: YY_RULE_SETUP -#line 274 "program_lexer.l" +#line 313 "program_lexer.l" { return POSITION; } YY_BREAK case 119: YY_RULE_SETUP -#line 275 "program_lexer.l" +#line 314 "program_lexer.l" { return PRIMARY; } YY_BREAK case 120: YY_RULE_SETUP -#line 276 "program_lexer.l" +#line 315 "program_lexer.l" { return PROJECTION; } YY_BREAK case 121: YY_RULE_SETUP -#line 277 "program_lexer.l" +#line 316 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, RANGE); } YY_BREAK case 122: YY_RULE_SETUP -#line 278 "program_lexer.l" +#line 317 "program_lexer.l" { return ROW; } YY_BREAK case 123: YY_RULE_SETUP -#line 279 "program_lexer.l" +#line 318 "program_lexer.l" { return SCENECOLOR; } YY_BREAK case 124: YY_RULE_SETUP -#line 280 "program_lexer.l" +#line 319 "program_lexer.l" { return SECONDARY; } YY_BREAK case 125: YY_RULE_SETUP -#line 281 "program_lexer.l" +#line 320 "program_lexer.l" { return SHININESS; } YY_BREAK case 126: YY_RULE_SETUP -#line 282 "program_lexer.l" +#line 321 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, SIZE_TOK); } YY_BREAK case 127: YY_RULE_SETUP -#line 283 "program_lexer.l" +#line 322 "program_lexer.l" { return SPECULAR; } YY_BREAK case 128: YY_RULE_SETUP -#line 284 "program_lexer.l" +#line 323 "program_lexer.l" { return SPOT; } YY_BREAK case 129: YY_RULE_SETUP -#line 285 "program_lexer.l" +#line 324 "program_lexer.l" { return TEXCOORD; } YY_BREAK case 130: YY_RULE_SETUP -#line 286 "program_lexer.l" +#line 325 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, TEXENV); } YY_BREAK case 131: YY_RULE_SETUP -#line 287 "program_lexer.l" +#line 326 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN); } YY_BREAK case 132: YY_RULE_SETUP -#line 288 "program_lexer.l" +#line 327 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); } YY_BREAK case 133: YY_RULE_SETUP -#line 289 "program_lexer.l" +#line 328 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_S); } YY_BREAK case 134: YY_RULE_SETUP -#line 290 "program_lexer.l" +#line 329 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_T); } YY_BREAK case 135: YY_RULE_SETUP -#line 291 "program_lexer.l" +#line 330 "program_lexer.l" { return TEXTURE; } YY_BREAK case 136: YY_RULE_SETUP -#line 292 "program_lexer.l" +#line 331 "program_lexer.l" { return TRANSPOSE; } YY_BREAK case 137: YY_RULE_SETUP -#line 293 "program_lexer.l" +#line 332 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, VTXATTRIB); } YY_BREAK case 138: YY_RULE_SETUP -#line 294 "program_lexer.l" +#line 333 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, WEIGHT); } YY_BREAK case 139: YY_RULE_SETUP -#line 296 "program_lexer.l" +#line 335 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } YY_BREAK case 140: YY_RULE_SETUP -#line 297 "program_lexer.l" +#line 336 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } YY_BREAK case 141: YY_RULE_SETUP -#line 298 "program_lexer.l" +#line 337 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); } YY_BREAK case 142: YY_RULE_SETUP -#line 299 "program_lexer.l" +#line 338 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); } YY_BREAK case 143: YY_RULE_SETUP -#line 300 "program_lexer.l" +#line 339 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); } YY_BREAK case 144: YY_RULE_SETUP -#line 301 "program_lexer.l" +#line 340 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); } YY_BREAK case 145: YY_RULE_SETUP -#line 302 "program_lexer.l" +#line 341 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); } YY_BREAK case 146: YY_RULE_SETUP -#line 303 "program_lexer.l" +#line 342 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); } YY_BREAK case 147: YY_RULE_SETUP -#line 304 "program_lexer.l" +#line 343 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); } YY_BREAK case 148: YY_RULE_SETUP -#line 305 "program_lexer.l" +#line 344 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); } YY_BREAK case 149: YY_RULE_SETUP -#line 306 "program_lexer.l" +#line 345 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); } YY_BREAK case 150: YY_RULE_SETUP -#line 307 "program_lexer.l" +#line 346 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } YY_BREAK case 151: YY_RULE_SETUP -#line 308 "program_lexer.l" +#line 347 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } YY_BREAK case 152: YY_RULE_SETUP -#line 310 "program_lexer.l" +#line 349 "program_lexer.l" { - yylval->string = strdup(yytext); + yylval->string = return_string(yyextra, yytext); return IDENTIFIER; } YY_BREAK case 153: YY_RULE_SETUP -#line 315 "program_lexer.l" +#line 354 "program_lexer.l" { return DOT_DOT; } YY_BREAK case 154: YY_RULE_SETUP -#line 317 "program_lexer.l" +#line 356 "program_lexer.l" { yylval->integer = strtol(yytext, NULL, 10); return INTEGER; @@ -2116,7 +2169,7 @@ YY_RULE_SETUP YY_BREAK case 155: YY_RULE_SETUP -#line 321 "program_lexer.l" +#line 360 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2128,7 +2181,7 @@ case 156: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 325 "program_lexer.l" +#line 364 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2136,7 +2189,7 @@ YY_RULE_SETUP YY_BREAK case 157: YY_RULE_SETUP -#line 329 "program_lexer.l" +#line 368 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2144,7 +2197,7 @@ YY_RULE_SETUP YY_BREAK case 158: YY_RULE_SETUP -#line 333 "program_lexer.l" +#line 372 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2152,7 +2205,7 @@ YY_RULE_SETUP YY_BREAK case 159: YY_RULE_SETUP -#line 338 "program_lexer.l" +#line 377 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2161,7 +2214,7 @@ YY_RULE_SETUP YY_BREAK case 160: YY_RULE_SETUP -#line 344 "program_lexer.l" +#line 383 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2171,7 +2224,7 @@ YY_RULE_SETUP YY_BREAK case 161: YY_RULE_SETUP -#line 350 "program_lexer.l" +#line 389 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2180,7 +2233,7 @@ YY_RULE_SETUP YY_BREAK case 162: YY_RULE_SETUP -#line 355 "program_lexer.l" +#line 394 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2189,7 +2242,7 @@ YY_RULE_SETUP YY_BREAK case 163: YY_RULE_SETUP -#line 361 "program_lexer.l" +#line 400 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2199,7 +2252,7 @@ YY_RULE_SETUP YY_BREAK case 164: YY_RULE_SETUP -#line 367 "program_lexer.l" +#line 406 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2209,7 +2262,7 @@ YY_RULE_SETUP YY_BREAK case 165: YY_RULE_SETUP -#line 373 "program_lexer.l" +#line 412 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2218,7 +2271,7 @@ YY_RULE_SETUP YY_BREAK case 166: YY_RULE_SETUP -#line 379 "program_lexer.l" +#line 418 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2228,7 +2281,7 @@ YY_RULE_SETUP YY_BREAK case 167: YY_RULE_SETUP -#line 386 "program_lexer.l" +#line 425 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2240,7 +2293,7 @@ YY_RULE_SETUP YY_BREAK case 168: YY_RULE_SETUP -#line 395 "program_lexer.l" +#line 434 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2249,7 +2302,7 @@ YY_RULE_SETUP YY_BREAK case 169: YY_RULE_SETUP -#line 401 "program_lexer.l" +#line 440 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2259,7 +2312,7 @@ YY_RULE_SETUP YY_BREAK case 170: YY_RULE_SETUP -#line 407 "program_lexer.l" +#line 446 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2268,7 +2321,7 @@ YY_RULE_SETUP YY_BREAK case 171: YY_RULE_SETUP -#line 412 "program_lexer.l" +#line 451 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2277,7 +2330,7 @@ YY_RULE_SETUP YY_BREAK case 172: YY_RULE_SETUP -#line 418 "program_lexer.l" +#line 457 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2287,7 +2340,7 @@ YY_RULE_SETUP YY_BREAK case 173: YY_RULE_SETUP -#line 424 "program_lexer.l" +#line 463 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2297,7 +2350,7 @@ YY_RULE_SETUP YY_BREAK case 174: YY_RULE_SETUP -#line 430 "program_lexer.l" +#line 469 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2306,7 +2359,7 @@ YY_RULE_SETUP YY_BREAK case 175: YY_RULE_SETUP -#line 436 "program_lexer.l" +#line 475 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2316,7 +2369,7 @@ YY_RULE_SETUP YY_BREAK case 176: YY_RULE_SETUP -#line 444 "program_lexer.l" +#line 483 "program_lexer.l" { if (require_ARB_vp) { return TEXGEN_R; @@ -2330,7 +2383,7 @@ YY_RULE_SETUP YY_BREAK case 177: YY_RULE_SETUP -#line 455 "program_lexer.l" +#line 494 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2342,13 +2395,13 @@ YY_RULE_SETUP YY_BREAK case 178: YY_RULE_SETUP -#line 464 "program_lexer.l" +#line 503 "program_lexer.l" { return DOT; } YY_BREAK case 179: /* rule 179 can match eol */ YY_RULE_SETUP -#line 466 "program_lexer.l" +#line 505 "program_lexer.l" { yylloc->first_line++; yylloc->first_column = 1; @@ -2359,7 +2412,7 @@ YY_RULE_SETUP YY_BREAK case 180: YY_RULE_SETUP -#line 473 "program_lexer.l" +#line 512 "program_lexer.l" /* eat whitespace */ ; YY_BREAK case 181: @@ -2367,20 +2420,20 @@ case 181: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 474 "program_lexer.l" +#line 513 "program_lexer.l" /* eat comments */ ; YY_BREAK case 182: YY_RULE_SETUP -#line 475 "program_lexer.l" +#line 514 "program_lexer.l" { return yytext[0]; } YY_BREAK case 183: YY_RULE_SETUP -#line 476 "program_lexer.l" +#line 515 "program_lexer.l" ECHO; YY_BREAK -#line 2384 "lex.yy.c" +#line 2437 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -3148,8 +3201,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param bytes the byte buffer to scan - * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ @@ -3555,7 +3608,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 476 "program_lexer.l" +#line 515 "program_lexer.l" diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index c2803ff707..6c4fad3037 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -40,7 +40,7 @@ if (condition) { \ return token; \ } else { \ - yylval->string = strdup(yytext); \ + yylval->string = return_string(yyextra, yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -63,7 +63,7 @@ yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ - yylval->string = strdup(yytext); \ + yylval->string = return_string(yyextra, yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -71,6 +71,45 @@ #define SWIZZLE_INVAL MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \ SWIZZLE_NIL, SWIZZLE_NIL) +/** + * Send a string to the parser using asm_parser_state::string_dumpster + * + * Sends a string to the parser using asm_parser_state::string_dumpster as a + * temporary storage buffer. Data previously stored in + * asm_parser_state::string_dumpster will be lost. If + * asm_parser_state::string_dumpster is not large enough to hold the new + * string, the buffer size will be increased. The buffer size is \b never + * decreased. + * + * \param state Assembler parser state tracking + * \param str String to be passed to the parser + * + * \return + * A pointer to asm_parser_state::string_dumpster on success or \c NULL on + * failure. Currently the only failure case is \c ENOMEM. + */ +static char * +return_string(struct asm_parser_state *state, const char *str) +{ + const size_t len = strlen(str); + + if (len >= state->dumpster_size) { + char *const dumpster = _mesa_realloc(state->string_dumpster, + state->dumpster_size, + len + 1); + if (dumpster == NULL) { + return NULL; + } + + state->string_dumpster = dumpster; + state->dumpster_size = len + 1; + } + + memcpy(state->string_dumpster, str, len + 1); + return state->string_dumpster; +} + + static unsigned mask_from_char(char c) { @@ -308,7 +347,7 @@ ARRAYSHADOW1D { return_token_or_IDENTIFIER(require_ARB_fp && require ARRAYSHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } [_a-zA-Z$][_a-zA-Z0-9$]* { - yylval->string = strdup(yytext); + yylval->string = return_string(yyextra, yytext); return IDENTIFIER; } diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index c255e912ed..261b605a2d 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -4565,7 +4565,7 @@ yyreduce: "undefined variable binding in ALIAS statement"); YYERROR; } else { - _mesa_symbol_table_add_symbol(state->st, 0, (yyvsp[(2) - (4)].string), target); + _mesa_symbol_table_add_symbol(state->st, 0, strdup((yyvsp[(2) - (4)].string)), target); } ;} break; @@ -4896,10 +4896,14 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t, if (exist != NULL) { yyerror(locp, state, "redeclared identifier"); } else { - s = calloc(1, sizeof(struct asm_symbol)); - s->name = name; + const size_t name_len = strlen(name); + + s = calloc(1, sizeof(struct asm_symbol) + name_len + 1); + s->name = (char *)(s + 1); s->type = t; + memcpy((char *) s->name, name, name_len + 1); + switch (t) { case at_temp: if (state->prog->NumTemporaries >= state->limits->MaxTemps) { @@ -5147,6 +5151,11 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, _mesa_memcpy (strz, str, len); strz[len] = '\0'; + if (state->prog->String != NULL) { + _mesa_free(state->prog->String); + state->prog->String = NULL; + } + state->prog->String = strz; state->st = _mesa_symbol_table_ctor(); @@ -5236,7 +5245,6 @@ error: for (sym = state->sym; sym != NULL; sym = temp) { temp = sym->next; - _mesa_free((void *) sym->name); _mesa_free(sym); } state->sym = NULL; @@ -5244,6 +5252,11 @@ error: _mesa_symbol_table_dtor(state->st); state->st = NULL; + if (state->string_dumpster != NULL) { + _mesa_free(state->string_dumpster); + state->dumpster_size = 0; + } + return result; } diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index c3152aa2f8..a23625d3fb 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -1919,7 +1919,7 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER "undefined variable binding in ALIAS statement"); YYERROR; } else { - _mesa_symbol_table_add_symbol(state->st, 0, $2, target); + _mesa_symbol_table_add_symbol(state->st, 0, strdup($2), target); } } ; @@ -2027,10 +2027,14 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t, if (exist != NULL) { yyerror(locp, state, "redeclared identifier"); } else { - s = calloc(1, sizeof(struct asm_symbol)); - s->name = name; + const size_t name_len = strlen(name); + + s = calloc(1, sizeof(struct asm_symbol) + name_len + 1); + s->name = (char *)(s + 1); s->type = t; + memcpy((char *) s->name, name, name_len + 1); + switch (t) { case at_temp: if (state->prog->NumTemporaries >= state->limits->MaxTemps) { @@ -2280,6 +2284,7 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, if (state->prog->String != NULL) { _mesa_free(state->prog->String); + state->prog->String = NULL; } state->prog->String = strz; @@ -2371,7 +2376,6 @@ error: for (sym = state->sym; sym != NULL; sym = temp) { temp = sym->next; - _mesa_free((void *) sym->name); _mesa_free(sym); } state->sym = NULL; @@ -2379,5 +2383,10 @@ error: _mesa_symbol_table_dtor(state->st); state->st = NULL; + if (state->string_dumpster != NULL) { + _mesa_free(state->string_dumpster); + state->dumpster_size = 0; + } + return result; } diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h index fa47d84565..8d8b4d89bc 100644 --- a/src/mesa/shader/program_parser.h +++ b/src/mesa/shader/program_parser.h @@ -38,6 +38,13 @@ enum asm_type { at_output, }; +/** + * \note + * Objects of this type are allocated as the object plus the name of the + * symbol. That is, malloc(sizeof(struct asm_symbol) + strlen(name) + 1). + * Alternately, asm_symbol::name could be moved to the bottom of the structure + * and declared as 'char name[0];'. + */ struct asm_symbol { struct asm_symbol *next; /**< List linkage for freeing. */ const char *name; @@ -157,6 +164,15 @@ struct asm_parser_state { /*@}*/ + /** + * Buffer to hold strings transfered from the lexer to the parser + */ + /*@{*/ + char *string_dumpster; /**< String data transfered. */ + size_t dumpster_size; /**< Total size, in bytes, of the buffer. */ + /*@}*/ + + /** * Selected limits copied from gl_constants * -- cgit v1.2.3 From df5615de1f1bfc68417eb2a6381fe3d8ab9ac035 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 30 Oct 2009 19:05:50 -0600 Subject: ARB prog parser: new set_src_reg(), set_dst_reg() helpers These functions do sanity checks on the register file and index. --- src/mesa/shader/program_parse.y | 83 +++++++++++++++++++++++++++-------------- 1 file changed, 55 insertions(+), 28 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 20bde83af7..32b058400c 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -66,8 +66,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); @@ -580,9 +586,7 @@ scalarUse: srcReg scalarSuffix temp_sym.param_binding_begin = ~0; initialize_symbol_from_const(state->prog, & temp_sym, & $1); - init_src_reg(& $$); - $$.Base.File = PROGRAM_CONSTANT; - $$.Base.Index = temp_sym.param_binding_begin; + set_src_reg(& $$, PROGRAM_CONSTANT, temp_sym.param_binding_begin); } ; @@ -644,9 +648,7 @@ maskedDstReg: dstReg optionalMask optionalCcMask maskedAddrReg: addrReg addrWriteMask { - init_dst_reg(& $$); - $$.File = PROGRAM_ADDRESS; - $$.Index = 0; + set_dst_reg(& $$, PROGRAM_ADDRESS, 0); $$.WriteMask = $2.mask; } ; @@ -776,16 +778,13 @@ srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */ init_src_reg(& $$); switch (s->type) { case at_temp: - $$.Base.File = PROGRAM_TEMPORARY; - $$.Base.Index = s->temp_binding; + set_src_reg(& $$, PROGRAM_TEMPORARY, s->temp_binding); break; case at_param: - $$.Base.File = s->param_binding_type; - $$.Base.Index = s->param_binding_begin; + set_src_reg(& $$, s->param_binding_type, s->param_binding_begin); break; case at_attrib: - $$.Base.File = PROGRAM_INPUT; - $$.Base.Index = s->attrib_binding; + set_src_reg(& $$, PROGRAM_INPUT, s->attrib_binding); state->prog->InputsRead |= (1U << $$.Base.Index); if (!validate_inputs(& @1, state)) { @@ -800,9 +799,7 @@ srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */ } | attribBinding { - init_src_reg(& $$); - $$.Base.File = PROGRAM_INPUT; - $$.Base.Index = $1; + set_src_reg(& $$, PROGRAM_INPUT, $1); state->prog->InputsRead |= (1U << $$.Base.Index); if (!validate_inputs(& @1, state)) { @@ -832,19 +829,16 @@ srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */ } | paramSingleItemUse { - init_src_reg(& $$); - $$.Base.File = ($1.name != NULL) + gl_register_file file = ($1.name != NULL) ? $1.param_binding_type : PROGRAM_CONSTANT; - $$.Base.Index = $1.param_binding_begin; + set_src_reg(& $$, file, $1.param_binding_begin); } ; dstReg: resultBinding { - init_dst_reg(& $$); - $$.File = PROGRAM_OUTPUT; - $$.Index = $1; + set_dst_reg(& $$, PROGRAM_OUTPUT, $1); } | USED_IDENTIFIER /* temporaryReg | vertexResultReg */ { @@ -859,19 +853,15 @@ dstReg: resultBinding YYERROR; } - init_dst_reg(& $$); switch (s->type) { case at_temp: - $$.File = PROGRAM_TEMPORARY; - $$.Index = s->temp_binding; + set_dst_reg(& $$, PROGRAM_TEMPORARY, s->temp_binding); break; case at_output: - $$.File = PROGRAM_OUTPUT; - $$.Index = s->output_binding; + set_dst_reg(& $$, PROGRAM_OUTPUT, s->output_binding); break; default: - $$.File = s->param_binding_type; - $$.Index = s->param_binding_begin; + set_dst_reg(& $$, s->param_binding_type, s->param_binding_begin); break; } } @@ -2263,6 +2253,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) { @@ -2273,6 +2283,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 * -- cgit v1.2.3 From fe86f8d73268785b31bc8d5a278a233bff42034d Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Wed, 4 Nov 2009 17:26:48 -0700 Subject: ARB prog parser: include variable name in error text --- src/mesa/shader/program_parse.tab.c | 1065 ++++++++++++++++++++++++----------- src/mesa/shader/program_parse.tab.h | 151 +---- src/mesa/shader/program_parse.y | 5 +- 3 files changed, 751 insertions(+), 470 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 7f45e0987d..e57c83ea65 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton implementation for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,7 +28,7 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ @@ -47,7 +46,7 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.3" +#define YYBISON_VERSION "2.4.1" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -55,235 +54,20 @@ /* Pure parsers. */ #define YYPURE 1 -/* Using locations. */ -#define YYLSP_NEEDED 1 - +/* Push parsers. */ +#define YYPUSH 0 +/* Pull parsers. */ +#define YYPULL 1 -/* Tokens. */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - ARBvp_10 = 258, - ARBfp_10 = 259, - ADDRESS = 260, - ALIAS = 261, - ATTRIB = 262, - OPTION = 263, - OUTPUT = 264, - PARAM = 265, - TEMP = 266, - END = 267, - BIN_OP = 268, - BINSC_OP = 269, - SAMPLE_OP = 270, - SCALAR_OP = 271, - TRI_OP = 272, - VECTOR_OP = 273, - ARL = 274, - KIL = 275, - SWZ = 276, - TXD_OP = 277, - INTEGER = 278, - REAL = 279, - AMBIENT = 280, - ATTENUATION = 281, - BACK = 282, - CLIP = 283, - COLOR = 284, - DEPTH = 285, - DIFFUSE = 286, - DIRECTION = 287, - EMISSION = 288, - ENV = 289, - EYE = 290, - FOG = 291, - FOGCOORD = 292, - FRAGMENT = 293, - FRONT = 294, - HALF = 295, - INVERSE = 296, - INVTRANS = 297, - LIGHT = 298, - LIGHTMODEL = 299, - LIGHTPROD = 300, - LOCAL = 301, - MATERIAL = 302, - MAT_PROGRAM = 303, - MATRIX = 304, - MATRIXINDEX = 305, - MODELVIEW = 306, - MVP = 307, - NORMAL = 308, - OBJECT = 309, - PALETTE = 310, - PARAMS = 311, - PLANE = 312, - POINT_TOK = 313, - POINTSIZE = 314, - POSITION = 315, - PRIMARY = 316, - PROGRAM = 317, - PROJECTION = 318, - RANGE = 319, - RESULT = 320, - ROW = 321, - SCENECOLOR = 322, - SECONDARY = 323, - SHININESS = 324, - SIZE_TOK = 325, - SPECULAR = 326, - SPOT = 327, - STATE = 328, - TEXCOORD = 329, - TEXENV = 330, - TEXGEN = 331, - TEXGEN_Q = 332, - TEXGEN_R = 333, - TEXGEN_S = 334, - TEXGEN_T = 335, - TEXTURE = 336, - TRANSPOSE = 337, - TEXTURE_UNIT = 338, - TEX_1D = 339, - TEX_2D = 340, - TEX_3D = 341, - TEX_CUBE = 342, - TEX_RECT = 343, - TEX_SHADOW1D = 344, - TEX_SHADOW2D = 345, - TEX_SHADOWRECT = 346, - TEX_ARRAY1D = 347, - TEX_ARRAY2D = 348, - TEX_ARRAYSHADOW1D = 349, - TEX_ARRAYSHADOW2D = 350, - VERTEX = 351, - VTXATTRIB = 352, - WEIGHT = 353, - IDENTIFIER = 354, - USED_IDENTIFIER = 355, - MASK4 = 356, - MASK3 = 357, - MASK2 = 358, - MASK1 = 359, - SWIZZLE = 360, - DOT_DOT = 361, - DOT = 362 - }; -#endif -/* Tokens. */ -#define ARBvp_10 258 -#define ARBfp_10 259 -#define ADDRESS 260 -#define ALIAS 261 -#define ATTRIB 262 -#define OPTION 263 -#define OUTPUT 264 -#define PARAM 265 -#define TEMP 266 -#define END 267 -#define BIN_OP 268 -#define BINSC_OP 269 -#define SAMPLE_OP 270 -#define SCALAR_OP 271 -#define TRI_OP 272 -#define VECTOR_OP 273 -#define ARL 274 -#define KIL 275 -#define SWZ 276 -#define TXD_OP 277 -#define INTEGER 278 -#define REAL 279 -#define AMBIENT 280 -#define ATTENUATION 281 -#define BACK 282 -#define CLIP 283 -#define COLOR 284 -#define DEPTH 285 -#define DIFFUSE 286 -#define DIRECTION 287 -#define EMISSION 288 -#define ENV 289 -#define EYE 290 -#define FOG 291 -#define FOGCOORD 292 -#define FRAGMENT 293 -#define FRONT 294 -#define HALF 295 -#define INVERSE 296 -#define INVTRANS 297 -#define LIGHT 298 -#define LIGHTMODEL 299 -#define LIGHTPROD 300 -#define LOCAL 301 -#define MATERIAL 302 -#define MAT_PROGRAM 303 -#define MATRIX 304 -#define MATRIXINDEX 305 -#define MODELVIEW 306 -#define MVP 307 -#define NORMAL 308 -#define OBJECT 309 -#define PALETTE 310 -#define PARAMS 311 -#define PLANE 312 -#define POINT_TOK 313 -#define POINTSIZE 314 -#define POSITION 315 -#define PRIMARY 316 -#define PROGRAM 317 -#define PROJECTION 318 -#define RANGE 319 -#define RESULT 320 -#define ROW 321 -#define SCENECOLOR 322 -#define SECONDARY 323 -#define SHININESS 324 -#define SIZE_TOK 325 -#define SPECULAR 326 -#define SPOT 327 -#define STATE 328 -#define TEXCOORD 329 -#define TEXENV 330 -#define TEXGEN 331 -#define TEXGEN_Q 332 -#define TEXGEN_R 333 -#define TEXGEN_S 334 -#define TEXGEN_T 335 -#define TEXTURE 336 -#define TRANSPOSE 337 -#define TEXTURE_UNIT 338 -#define TEX_1D 339 -#define TEX_2D 340 -#define TEX_3D 341 -#define TEX_CUBE 342 -#define TEX_RECT 343 -#define TEX_SHADOW1D 344 -#define TEX_SHADOW2D 345 -#define TEX_SHADOWRECT 346 -#define TEX_ARRAY1D 347 -#define TEX_ARRAY2D 348 -#define TEX_ARRAYSHADOW1D 349 -#define TEX_ARRAYSHADOW2D 350 -#define VERTEX 351 -#define VTXATTRIB 352 -#define WEIGHT 353 -#define IDENTIFIER 354 -#define USED_IDENTIFIER 355 -#define MASK4 356 -#define MASK3 357 -#define MASK2 358 -#define MASK1 359 -#define SWIZZLE 360 -#define DOT_DOT 361 -#define DOT 362 - +/* Using locations. */ +#define YYLSP_NEEDED 1 /* Copy the first part of user declarations. */ + +/* Line 189 of yacc.c */ #line 1 "program_parse.y" /* @@ -400,6 +184,9 @@ static struct asm_instruction *asm_instruction_copy_ctor( #define YYLEX_PARAM state->scanner +/* Line 189 of yacc.c */ +#line 189 "program_parse.tab.c" + /* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 @@ -418,10 +205,130 @@ static struct asm_instruction *asm_instruction_copy_ctor( # define YYTOKEN_TABLE 0 #endif + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + ARBvp_10 = 258, + ARBfp_10 = 259, + ADDRESS = 260, + ALIAS = 261, + ATTRIB = 262, + OPTION = 263, + OUTPUT = 264, + PARAM = 265, + TEMP = 266, + END = 267, + BIN_OP = 268, + BINSC_OP = 269, + SAMPLE_OP = 270, + SCALAR_OP = 271, + TRI_OP = 272, + VECTOR_OP = 273, + ARL = 274, + KIL = 275, + SWZ = 276, + TXD_OP = 277, + INTEGER = 278, + REAL = 279, + AMBIENT = 280, + ATTENUATION = 281, + BACK = 282, + CLIP = 283, + COLOR = 284, + DEPTH = 285, + DIFFUSE = 286, + DIRECTION = 287, + EMISSION = 288, + ENV = 289, + EYE = 290, + FOG = 291, + FOGCOORD = 292, + FRAGMENT = 293, + FRONT = 294, + HALF = 295, + INVERSE = 296, + INVTRANS = 297, + LIGHT = 298, + LIGHTMODEL = 299, + LIGHTPROD = 300, + LOCAL = 301, + MATERIAL = 302, + MAT_PROGRAM = 303, + MATRIX = 304, + MATRIXINDEX = 305, + MODELVIEW = 306, + MVP = 307, + NORMAL = 308, + OBJECT = 309, + PALETTE = 310, + PARAMS = 311, + PLANE = 312, + POINT_TOK = 313, + POINTSIZE = 314, + POSITION = 315, + PRIMARY = 316, + PROGRAM = 317, + PROJECTION = 318, + RANGE = 319, + RESULT = 320, + ROW = 321, + SCENECOLOR = 322, + SECONDARY = 323, + SHININESS = 324, + SIZE_TOK = 325, + SPECULAR = 326, + SPOT = 327, + STATE = 328, + TEXCOORD = 329, + TEXENV = 330, + TEXGEN = 331, + TEXGEN_Q = 332, + TEXGEN_R = 333, + TEXGEN_S = 334, + TEXGEN_T = 335, + TEXTURE = 336, + TRANSPOSE = 337, + TEXTURE_UNIT = 338, + TEX_1D = 339, + TEX_2D = 340, + TEX_3D = 341, + TEX_CUBE = 342, + TEX_RECT = 343, + TEX_SHADOW1D = 344, + TEX_SHADOW2D = 345, + TEX_SHADOWRECT = 346, + TEX_ARRAY1D = 347, + TEX_ARRAY2D = 348, + TEX_ARRAYSHADOW1D = 349, + TEX_ARRAYSHADOW2D = 350, + VERTEX = 351, + VTXATTRIB = 352, + WEIGHT = 353, + IDENTIFIER = 354, + USED_IDENTIFIER = 355, + MASK4 = 356, + MASK3 = 357, + MASK2 = 358, + MASK1 = 359, + SWIZZLE = 360, + DOT_DOT = 361, + DOT = 362 + }; +#endif + + + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 122 "program_parse.y" { + +/* Line 214 of yacc.c */ +#line 122 "program_parse.y" + struct asm_instruction *inst; struct asm_symbol *sym; struct asm_symbol temp_sym; @@ -445,13 +352,15 @@ typedef union YYSTYPE unsigned xyzw_valid:1; unsigned negate:1; } ext_swizzle; -} -/* Line 187 of yacc.c. */ -#line 451 "program_parse.tab.c" - YYSTYPE; + + + +/* Line 214 of yacc.c */ +#line 360 "program_parse.tab.c" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED @@ -469,14 +378,16 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ + +/* Line 264 of yacc.c */ #line 267 "program_parse.y" extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param, void *yyscanner); -/* Line 216 of yacc.c. */ -#line 480 "program_parse.tab.c" +/* Line 264 of yacc.c */ +#line 391 "program_parse.tab.c" #ifdef short # undef short @@ -551,14 +462,14 @@ typedef short int yytype_int16; #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static int -YYID (int i) +YYID (int yyi) #else static int -YYID (i) - int i; +YYID (yyi) + int yyi; #endif { - return i; + return yyi; } #endif @@ -640,9 +551,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ /* A type that is properly aligned for any stack member. */ union yyalloc { - yytype_int16 yyss; - YYSTYPE yyvs; - YYLTYPE yyls; + yytype_int16 yyss_alloc; + YYSTYPE yyvs_alloc; + YYLTYPE yyls_alloc; }; /* The size of the maximum gap between one aligned stack and the next. */ @@ -677,12 +588,12 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack) \ +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ do \ { \ YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack, Stack, yysize); \ - Stack = &yyptr->Stack; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ yyptr += yynewbytes / sizeof (*yyptr); \ } \ @@ -905,7 +816,7 @@ static const yytype_uint16 yyrline[] = 1949, 1957, 1970, 1979, 1988, 1992, 2001, 2010, 2021, 2028, 2033, 2042, 2054, 2057, 2066, 2077, 2078, 2079, 2082, 2083, 2084, 2087, 2088, 2091, 2092, 2095, 2096, 2099, 2110, 2121, - 2132, 2153, 2154 + 2132, 2154, 2155 }; #endif @@ -1553,17 +1464,20 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, state) #if (defined __STDC__ || defined __C99__FUNC__ \ || defined __cplusplus || defined _MSC_VER) static void -yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) #else static void -yy_stack_print (bottom, top) - yytype_int16 *bottom; - yytype_int16 *top; +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; #endif { YYFPRINTF (stderr, "Stack now"); - for (; bottom <= top; ++bottom) - YYFPRINTF (stderr, " %d", *bottom); + for (; yybottom <= yytop; yybottom++) + { + int yybot = *yybottom; + YYFPRINTF (stderr, " %d", yybot); + } YYFPRINTF (stderr, "\n"); } @@ -1599,11 +1513,11 @@ yy_reduce_print (yyvsp, yylsp, yyrule, state) /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { - fprintf (stderr, " $%d = ", yyi + 1); + YYFPRINTF (stderr, " $%d = ", yyi + 1); yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], &(yyvsp[(yyi + 1) - (yynrhs)]) , &(yylsp[(yyi + 1) - (yynrhs)]) , state); - fprintf (stderr, "\n"); + YYFPRINTF (stderr, "\n"); } } @@ -1887,10 +1801,8 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, state) break; } } - /* Prevent warnings from -Wmissing-prototypes. */ - #ifdef YYPARSE_PARAM #if defined __STDC__ || defined __cplusplus int yyparse (void *YYPARSE_PARAM); @@ -1909,10 +1821,9 @@ int yyparse (); - -/*----------. -| yyparse. | -`----------*/ +/*-------------------------. +| yyparse or yypush_parse. | +`-------------------------*/ #ifdef YYPARSE_PARAM #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1936,24 +1847,59 @@ yyparse (state) #endif #endif { - /* The look-ahead symbol. */ +/* The lookahead symbol. */ int yychar; -/* The semantic value of the look-ahead symbol. */ +/* The semantic value of the lookahead symbol. */ YYSTYPE yylval; -/* Number of syntax errors so far. */ -int yynerrs; -/* Location data for the look-ahead symbol. */ +/* Location data for the lookahead symbol. */ YYLTYPE yylloc; - int yystate; + /* Number of syntax errors so far. */ + int yynerrs; + + int yystate; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + + /* The stacks and their tools: + `yyss': related to states. + `yyvs': related to semantic values. + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs; + YYSTYPE *yyvsp; + + /* The location stack. */ + YYLTYPE yylsa[YYINITDEPTH]; + YYLTYPE *yyls; + YYLTYPE *yylsp; + + /* The locations where the error started and ended. */ + YYLTYPE yyerror_range[2]; + + YYSIZE_T yystacksize; + int yyn; int yyresult; - /* Number of tokens to shift before error messages enabled. */ - int yyerrstatus; - /* Look-ahead token as an internal (translated) token number. */ - int yytoken = 0; + /* Lookahead token as an internal (translated) token number. */ + int yytoken; + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + YYLTYPE yyloc; + #if YYERROR_VERBOSE /* Buffer for error messages, and its allocated size. */ char yymsgbuf[128]; @@ -1961,63 +1907,37 @@ YYLTYPE yylloc; YYSIZE_T yymsg_alloc = sizeof yymsgbuf; #endif - /* Three stacks and their tools: - `yyss': related to states, - `yyvs': related to semantic values, - `yyls': related to locations. - - Refer to the stacks thru separate pointers, to allow yyoverflow - to reallocate them elsewhere. */ - - /* The state stack. */ - yytype_int16 yyssa[YYINITDEPTH]; - yytype_int16 *yyss = yyssa; - yytype_int16 *yyssp; - - /* The semantic value stack. */ - YYSTYPE yyvsa[YYINITDEPTH]; - YYSTYPE *yyvs = yyvsa; - YYSTYPE *yyvsp; - - /* The location stack. */ - YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; - /* The locations where the error started and ended. */ - YYLTYPE yyerror_range[2]; - #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) - YYSIZE_T yystacksize = YYINITDEPTH; - - /* The variables used to return semantic value and location from the - action routines. */ - YYSTYPE yyval; - YYLTYPE yyloc; - /* The number of symbols on the RHS of the reduced rule. Keep to zero when no symbol should be popped. */ int yylen = 0; + yytoken = 0; + yyss = yyssa; + yyvs = yyvsa; + yyls = yylsa; + yystacksize = YYINITDEPTH; + YYDPRINTF ((stderr, "Starting parse\n")); yystate = 0; yyerrstatus = 0; yynerrs = 0; - yychar = YYEMPTY; /* Cause a token to be read. */ + yychar = YYEMPTY; /* Cause a token to be read. */ /* Initialize stack pointers. Waste one element of value and location stack so that they stay on the same level as the state stack. The wasted elements are never initialized. */ - yyssp = yyss; yyvsp = yyvs; yylsp = yyls; + #if YYLTYPE_IS_TRIVIAL /* Initialize the default location before parsing starts. */ yylloc.first_line = yylloc.last_line = 1; - yylloc.first_column = yylloc.last_column = 0; + yylloc.first_column = yylloc.last_column = 1; #endif goto yysetstate; @@ -2056,6 +1976,7 @@ YYLTYPE yylloc; &yyvs1, yysize * sizeof (*yyvsp), &yyls1, yysize * sizeof (*yylsp), &yystacksize); + yyls = yyls1; yyss = yyss1; yyvs = yyvs1; @@ -2077,9 +1998,9 @@ YYLTYPE yylloc; (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); if (! yyptr) goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss); - YYSTACK_RELOCATE (yyvs); - YYSTACK_RELOCATE (yyls); + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE if (yyss1 != yyssa) YYSTACK_FREE (yyss1); @@ -2100,6 +2021,9 @@ YYLTYPE yylloc; YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + if (yystate == YYFINAL) + YYACCEPT; + goto yybackup; /*-----------. @@ -2108,16 +2032,16 @@ YYLTYPE yylloc; yybackup: /* Do appropriate processing given the current state. Read a - look-ahead token if we need one and don't already have one. */ + lookahead token if we need one and don't already have one. */ - /* First try to decide what to do without reference to look-ahead token. */ + /* First try to decide what to do without reference to lookahead token. */ yyn = yypact[yystate]; if (yyn == YYPACT_NINF) goto yydefault; - /* Not known => get a look-ahead token if don't already have one. */ + /* Not known => get a lookahead token if don't already have one. */ - /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */ if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); @@ -2149,20 +2073,16 @@ yybackup: goto yyreduce; } - if (yyn == YYFINAL) - YYACCEPT; - /* Count tokens shifted since error; after three, turn off error status. */ if (yyerrstatus) yyerrstatus--; - /* Shift the look-ahead token. */ + /* Shift the lookahead token. */ YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); - /* Discard the shifted token unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; + /* Discard the shifted token. */ + yychar = YYEMPTY; yystate = yyn; *++yyvsp = yylval; @@ -2203,6 +2123,8 @@ yyreduce: switch (yyn) { case 3: + +/* Line 1455 of yacc.c */ #line 278 "program_parse.y" { if (state->prog->Target != GL_VERTEX_PROGRAM_ARB) { @@ -2214,6 +2136,8 @@ yyreduce: break; case 4: + +/* Line 1455 of yacc.c */ #line 286 "program_parse.y" { if (state->prog->Target != GL_FRAGMENT_PROGRAM_ARB) { @@ -2227,6 +2151,8 @@ yyreduce: break; case 7: + +/* Line 1455 of yacc.c */ #line 302 "program_parse.y" { int valid = 0; @@ -2250,6 +2176,8 @@ yyreduce: break; case 10: + +/* Line 1455 of yacc.c */ #line 328 "program_parse.y" { if ((yyvsp[(1) - (2)].inst) != NULL) { @@ -2268,6 +2196,8 @@ yyreduce: break; case 12: + +/* Line 1455 of yacc.c */ #line 346 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); @@ -2276,6 +2206,8 @@ yyreduce: break; case 13: + +/* Line 1455 of yacc.c */ #line 351 "program_parse.y" { (yyval.inst) = (yyvsp[(1) - (1)].inst); @@ -2284,6 +2216,8 @@ yyreduce: break; case 24: + +/* Line 1455 of yacc.c */ #line 372 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); @@ -2291,6 +2225,8 @@ yyreduce: break; case 25: + +/* Line 1455 of yacc.c */ #line 378 "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); @@ -2298,6 +2234,8 @@ yyreduce: break; case 26: + +/* Line 1455 of yacc.c */ #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); @@ -2305,6 +2243,8 @@ yyreduce: break; case 27: + +/* Line 1455 of yacc.c */ #line 390 "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); @@ -2312,6 +2252,8 @@ yyreduce: break; case 28: + +/* Line 1455 of yacc.c */ #line 397 "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); @@ -2319,6 +2261,8 @@ yyreduce: break; case 29: + +/* Line 1455 of yacc.c */ #line 404 "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)); @@ -2326,6 +2270,8 @@ yyreduce: break; case 30: + +/* Line 1455 of yacc.c */ #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), NULL, NULL); @@ -2371,6 +2317,8 @@ yyreduce: break; case 31: + +/* Line 1455 of yacc.c */ #line 454 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL); @@ -2379,6 +2327,8 @@ yyreduce: break; case 32: + +/* Line 1455 of yacc.c */ #line 459 "program_parse.y" { (yyval.inst) = asm_instruction_ctor(OPCODE_KIL_NV, NULL, NULL, NULL, NULL); @@ -2390,6 +2340,8 @@ yyreduce: break; case 33: + +/* Line 1455 of yacc.c */ #line 469 "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)); @@ -2435,6 +2387,8 @@ yyreduce: break; case 34: + +/* Line 1455 of yacc.c */ #line 513 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); @@ -2442,66 +2396,92 @@ yyreduce: break; case 35: + +/* Line 1455 of yacc.c */ #line 518 "program_parse.y" { (yyval.integer) = TEXTURE_1D_INDEX; ;} break; case 36: + +/* Line 1455 of yacc.c */ #line 519 "program_parse.y" { (yyval.integer) = TEXTURE_2D_INDEX; ;} break; case 37: + +/* Line 1455 of yacc.c */ #line 520 "program_parse.y" { (yyval.integer) = TEXTURE_3D_INDEX; ;} break; case 38: + +/* Line 1455 of yacc.c */ #line 521 "program_parse.y" { (yyval.integer) = TEXTURE_CUBE_INDEX; ;} break; case 39: + +/* Line 1455 of yacc.c */ #line 522 "program_parse.y" { (yyval.integer) = TEXTURE_RECT_INDEX; ;} break; case 40: + +/* Line 1455 of yacc.c */ #line 523 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_INDEX; ;} break; case 41: + +/* Line 1455 of yacc.c */ #line 524 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_INDEX; ;} break; case 42: + +/* Line 1455 of yacc.c */ #line 525 "program_parse.y" { (yyval.integer) = -TEXTURE_RECT_INDEX; ;} break; case 43: + +/* Line 1455 of yacc.c */ #line 526 "program_parse.y" { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;} break; case 44: + +/* Line 1455 of yacc.c */ #line 527 "program_parse.y" { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;} break; case 45: + +/* Line 1455 of yacc.c */ #line 528 "program_parse.y" { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;} break; case 46: + +/* Line 1455 of yacc.c */ #line 529 "program_parse.y" { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;} break; case 47: + +/* Line 1455 of yacc.c */ #line 533 "program_parse.y" { /* FIXME: Is this correct? Should the extenedSwizzle be applied @@ -2515,6 +2495,8 @@ yyreduce: break; case 48: + +/* Line 1455 of yacc.c */ #line 545 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); @@ -2526,6 +2508,8 @@ yyreduce: break; case 49: + +/* Line 1455 of yacc.c */ #line 553 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); @@ -2544,6 +2528,8 @@ yyreduce: break; case 50: + +/* Line 1455 of yacc.c */ #line 570 "program_parse.y" { (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); @@ -2554,6 +2540,8 @@ yyreduce: break; case 51: + +/* Line 1455 of yacc.c */ #line 577 "program_parse.y" { struct asm_symbol temp_sym; @@ -2572,6 +2560,8 @@ yyreduce: break; case 52: + +/* Line 1455 of yacc.c */ #line 594 "program_parse.y" { (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2586,6 +2576,8 @@ yyreduce: break; case 53: + +/* Line 1455 of yacc.c */ #line 605 "program_parse.y" { (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); @@ -2606,6 +2598,8 @@ yyreduce: break; case 54: + +/* Line 1455 of yacc.c */ #line 625 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (3)].dst_reg); @@ -2632,6 +2626,8 @@ yyreduce: break; case 55: + +/* Line 1455 of yacc.c */ #line 650 "program_parse.y" { set_dst_reg(& (yyval.dst_reg), PROGRAM_ADDRESS, 0); @@ -2640,6 +2636,8 @@ yyreduce: break; case 56: + +/* Line 1455 of yacc.c */ #line 657 "program_parse.y" { const unsigned xyzw_valid = @@ -2674,6 +2672,8 @@ yyreduce: break; case 57: + +/* Line 1455 of yacc.c */ #line 690 "program_parse.y" { (yyval.ext_swizzle) = (yyvsp[(2) - (2)].ext_swizzle); @@ -2682,6 +2682,8 @@ yyreduce: break; case 58: + +/* Line 1455 of yacc.c */ #line 697 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) != 0) && ((yyvsp[(1) - (1)].integer) != 1)) { @@ -2700,6 +2702,8 @@ yyreduce: break; case 59: + +/* Line 1455 of yacc.c */ #line 712 "program_parse.y" { if (strlen((yyvsp[(1) - (1)].string)) > 1) { @@ -2751,6 +2755,8 @@ yyreduce: break; case 60: + +/* Line 1455 of yacc.c */ #line 762 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) @@ -2793,6 +2799,8 @@ yyreduce: break; case 61: + +/* Line 1455 of yacc.c */ #line 801 "program_parse.y" { set_src_reg(& (yyval.src_reg), PROGRAM_INPUT, (yyvsp[(1) - (1)].attrib)); @@ -2805,6 +2813,8 @@ yyreduce: break; case 62: + +/* Line 1455 of yacc.c */ #line 810 "program_parse.y" { if (! (yyvsp[(3) - (4)].src_reg).Base.RelAddr @@ -2829,6 +2839,8 @@ yyreduce: break; case 63: + +/* Line 1455 of yacc.c */ #line 831 "program_parse.y" { gl_register_file file = ((yyvsp[(1) - (1)].temp_sym).name != NULL) @@ -2839,6 +2851,8 @@ yyreduce: break; case 64: + +/* Line 1455 of yacc.c */ #line 840 "program_parse.y" { set_dst_reg(& (yyval.dst_reg), PROGRAM_OUTPUT, (yyvsp[(1) - (1)].result)); @@ -2846,6 +2860,8 @@ yyreduce: break; case 65: + +/* Line 1455 of yacc.c */ #line 844 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) @@ -2874,6 +2890,8 @@ yyreduce: break; case 66: + +/* Line 1455 of yacc.c */ #line 871 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) @@ -2892,6 +2910,8 @@ yyreduce: break; case 69: + +/* Line 1455 of yacc.c */ #line 890 "program_parse.y" { init_src_reg(& (yyval.src_reg)); @@ -2900,6 +2920,8 @@ yyreduce: break; case 70: + +/* Line 1455 of yacc.c */ #line 897 "program_parse.y" { /* FINISHME: Add support for multiple address registers. @@ -2913,21 +2935,29 @@ yyreduce: break; case 71: + +/* Line 1455 of yacc.c */ #line 908 "program_parse.y" { (yyval.integer) = 0; ;} break; case 72: + +/* Line 1455 of yacc.c */ #line 909 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 73: + +/* Line 1455 of yacc.c */ #line 910 "program_parse.y" { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;} break; case 74: + +/* Line 1455 of yacc.c */ #line 914 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { @@ -2943,6 +2973,8 @@ yyreduce: break; case 75: + +/* Line 1455 of yacc.c */ #line 928 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { @@ -2958,6 +2990,8 @@ yyreduce: break; case 76: + +/* Line 1455 of yacc.c */ #line 942 "program_parse.y" { struct asm_symbol *const s = (struct asm_symbol *) @@ -2977,6 +3011,8 @@ yyreduce: break; case 77: + +/* Line 1455 of yacc.c */ #line 960 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { @@ -2989,6 +3025,8 @@ yyreduce: break; case 78: + +/* Line 1455 of yacc.c */ #line 971 "program_parse.y" { if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) { @@ -3002,16 +3040,22 @@ yyreduce: break; case 83: + +/* Line 1455 of yacc.c */ #line 987 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 88: + +/* Line 1455 of yacc.c */ #line 991 "program_parse.y" { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} break; case 89: + +/* Line 1455 of yacc.c */ #line 995 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); @@ -3019,6 +3063,8 @@ yyreduce: break; case 90: + +/* Line 1455 of yacc.c */ #line 999 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); @@ -3026,6 +3072,8 @@ yyreduce: break; case 91: + +/* Line 1455 of yacc.c */ #line 1003 "program_parse.y" { (yyval.dst_reg).CondMask = COND_TR; @@ -3035,6 +3083,8 @@ yyreduce: break; case 92: + +/* Line 1455 of yacc.c */ #line 1011 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); @@ -3043,6 +3093,8 @@ yyreduce: break; case 93: + +/* Line 1455 of yacc.c */ #line 1018 "program_parse.y" { (yyval.dst_reg) = (yyvsp[(1) - (2)].dst_reg); @@ -3051,6 +3103,8 @@ yyreduce: break; case 94: + +/* Line 1455 of yacc.c */ #line 1025 "program_parse.y" { const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); @@ -3075,6 +3129,8 @@ yyreduce: break; case 95: + +/* Line 1455 of yacc.c */ #line 1048 "program_parse.y" { const int cond = _mesa_parse_cc((yyvsp[(1) - (1)].string)); @@ -3099,6 +3155,8 @@ yyreduce: break; case 102: + +/* Line 1455 of yacc.c */ #line 1079 "program_parse.y" { struct asm_symbol *const s = @@ -3118,6 +3176,8 @@ yyreduce: break; case 103: + +/* Line 1455 of yacc.c */ #line 1097 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); @@ -3125,6 +3185,8 @@ yyreduce: break; case 104: + +/* Line 1455 of yacc.c */ #line 1101 "program_parse.y" { (yyval.attrib) = (yyvsp[(2) - (2)].attrib); @@ -3132,6 +3194,8 @@ yyreduce: break; case 105: + +/* Line 1455 of yacc.c */ #line 1107 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_POS; @@ -3139,6 +3203,8 @@ yyreduce: break; case 106: + +/* Line 1455 of yacc.c */ #line 1111 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_WEIGHT; @@ -3146,6 +3212,8 @@ yyreduce: break; case 107: + +/* Line 1455 of yacc.c */ #line 1115 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_NORMAL; @@ -3153,6 +3221,8 @@ yyreduce: break; case 108: + +/* Line 1455 of yacc.c */ #line 1119 "program_parse.y" { if (!state->ctx->Extensions.EXT_secondary_color) { @@ -3165,6 +3235,8 @@ yyreduce: break; case 109: + +/* Line 1455 of yacc.c */ #line 1128 "program_parse.y" { if (!state->ctx->Extensions.EXT_fog_coord) { @@ -3177,6 +3249,8 @@ yyreduce: break; case 110: + +/* Line 1455 of yacc.c */ #line 1137 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); @@ -3184,6 +3258,8 @@ yyreduce: break; case 111: + +/* Line 1455 of yacc.c */ #line 1141 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); @@ -3192,6 +3268,8 @@ yyreduce: break; case 112: + +/* Line 1455 of yacc.c */ #line 1146 "program_parse.y" { (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer); @@ -3199,6 +3277,8 @@ yyreduce: break; case 113: + +/* Line 1455 of yacc.c */ #line 1152 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) { @@ -3211,6 +3291,8 @@ yyreduce: break; case 117: + +/* Line 1455 of yacc.c */ #line 1166 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_WPOS; @@ -3218,6 +3300,8 @@ yyreduce: break; case 118: + +/* Line 1455 of yacc.c */ #line 1170 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer); @@ -3225,6 +3309,8 @@ yyreduce: break; case 119: + +/* Line 1455 of yacc.c */ #line 1174 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_FOGC; @@ -3232,6 +3318,8 @@ yyreduce: break; case 120: + +/* Line 1455 of yacc.c */ #line 1178 "program_parse.y" { (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer); @@ -3239,6 +3327,8 @@ yyreduce: break; case 123: + +/* Line 1455 of yacc.c */ #line 1186 "program_parse.y" { struct asm_symbol *const s = @@ -3256,6 +3346,8 @@ yyreduce: break; case 124: + +/* Line 1455 of yacc.c */ #line 1202 "program_parse.y" { if (((yyvsp[(4) - (6)].integer) != 0) && ((unsigned) (yyvsp[(4) - (6)].integer) != (yyvsp[(6) - (6)].temp_sym).param_binding_length)) { @@ -3279,6 +3371,8 @@ yyreduce: break; case 125: + +/* Line 1455 of yacc.c */ #line 1224 "program_parse.y" { (yyval.integer) = 0; @@ -3286,6 +3380,8 @@ yyreduce: break; case 126: + +/* Line 1455 of yacc.c */ #line 1228 "program_parse.y" { if (((yyvsp[(1) - (1)].integer) < 1) || ((unsigned) (yyvsp[(1) - (1)].integer) > state->limits->MaxParameters)) { @@ -3298,6 +3394,8 @@ yyreduce: break; case 127: + +/* Line 1455 of yacc.c */ #line 1239 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym); @@ -3305,6 +3403,8 @@ yyreduce: break; case 128: + +/* Line 1455 of yacc.c */ #line 1245 "program_parse.y" { (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym); @@ -3312,6 +3412,8 @@ yyreduce: break; case 130: + +/* Line 1455 of yacc.c */ #line 1252 "program_parse.y" { (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length; @@ -3320,6 +3422,8 @@ yyreduce: break; case 131: + +/* Line 1455 of yacc.c */ #line 1259 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3329,6 +3433,8 @@ yyreduce: break; case 132: + +/* Line 1455 of yacc.c */ #line 1265 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3338,6 +3444,8 @@ yyreduce: break; case 133: + +/* Line 1455 of yacc.c */ #line 1271 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3347,6 +3455,8 @@ yyreduce: break; case 134: + +/* Line 1455 of yacc.c */ #line 1279 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3356,6 +3466,8 @@ yyreduce: break; case 135: + +/* Line 1455 of yacc.c */ #line 1285 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3365,6 +3477,8 @@ yyreduce: break; case 136: + +/* Line 1455 of yacc.c */ #line 1291 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3374,6 +3488,8 @@ yyreduce: break; case 137: + +/* Line 1455 of yacc.c */ #line 1299 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3383,6 +3499,8 @@ yyreduce: break; case 138: + +/* Line 1455 of yacc.c */ #line 1305 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3392,6 +3510,8 @@ yyreduce: break; case 139: + +/* Line 1455 of yacc.c */ #line 1311 "program_parse.y" { memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym))); @@ -3401,71 +3521,99 @@ yyreduce: break; case 140: + +/* Line 1455 of yacc.c */ #line 1318 "program_parse.y" { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;} break; case 141: + +/* Line 1455 of yacc.c */ #line 1319 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 142: + +/* Line 1455 of yacc.c */ #line 1322 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 143: + +/* Line 1455 of yacc.c */ #line 1323 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 144: + +/* Line 1455 of yacc.c */ #line 1324 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 145: + +/* Line 1455 of yacc.c */ #line 1325 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 146: + +/* Line 1455 of yacc.c */ #line 1326 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 147: + +/* Line 1455 of yacc.c */ #line 1327 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 148: + +/* Line 1455 of yacc.c */ #line 1328 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 149: + +/* Line 1455 of yacc.c */ #line 1329 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 150: + +/* Line 1455 of yacc.c */ #line 1330 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 151: + +/* Line 1455 of yacc.c */ #line 1331 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 152: + +/* Line 1455 of yacc.c */ #line 1332 "program_parse.y" { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;} break; case 153: + +/* Line 1455 of yacc.c */ #line 1336 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3476,6 +3624,8 @@ yyreduce: break; case 154: + +/* Line 1455 of yacc.c */ #line 1345 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); @@ -3483,6 +3633,8 @@ yyreduce: break; case 155: + +/* Line 1455 of yacc.c */ #line 1349 "program_parse.y" { (yyval.integer) = STATE_EMISSION; @@ -3490,6 +3642,8 @@ yyreduce: break; case 156: + +/* Line 1455 of yacc.c */ #line 1353 "program_parse.y" { (yyval.integer) = STATE_SHININESS; @@ -3497,6 +3651,8 @@ yyreduce: break; case 157: + +/* Line 1455 of yacc.c */ #line 1359 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3507,6 +3663,8 @@ yyreduce: break; case 158: + +/* Line 1455 of yacc.c */ #line 1368 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); @@ -3514,6 +3672,8 @@ yyreduce: break; case 159: + +/* Line 1455 of yacc.c */ #line 1372 "program_parse.y" { (yyval.integer) = STATE_POSITION; @@ -3521,6 +3681,8 @@ yyreduce: break; case 160: + +/* Line 1455 of yacc.c */ #line 1376 "program_parse.y" { if (!state->ctx->Extensions.EXT_point_parameters) { @@ -3533,6 +3695,8 @@ yyreduce: break; case 161: + +/* Line 1455 of yacc.c */ #line 1385 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); @@ -3540,6 +3704,8 @@ yyreduce: break; case 162: + +/* Line 1455 of yacc.c */ #line 1389 "program_parse.y" { (yyval.integer) = STATE_HALF_VECTOR; @@ -3547,6 +3713,8 @@ yyreduce: break; case 163: + +/* Line 1455 of yacc.c */ #line 1395 "program_parse.y" { (yyval.integer) = STATE_SPOT_DIRECTION; @@ -3554,6 +3722,8 @@ yyreduce: break; case 164: + +/* Line 1455 of yacc.c */ #line 1401 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0]; @@ -3562,6 +3732,8 @@ yyreduce: break; case 165: + +/* Line 1455 of yacc.c */ #line 1408 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3570,6 +3742,8 @@ yyreduce: break; case 166: + +/* Line 1455 of yacc.c */ #line 1413 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3579,6 +3753,8 @@ yyreduce: break; case 167: + +/* Line 1455 of yacc.c */ #line 1421 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3590,6 +3766,8 @@ yyreduce: break; case 169: + +/* Line 1455 of yacc.c */ #line 1433 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3599,6 +3777,8 @@ yyreduce: break; case 170: + +/* Line 1455 of yacc.c */ #line 1441 "program_parse.y" { (yyval.integer) = STATE_TEXENV_COLOR; @@ -3606,6 +3786,8 @@ yyreduce: break; case 171: + +/* Line 1455 of yacc.c */ #line 1447 "program_parse.y" { (yyval.integer) = STATE_AMBIENT; @@ -3613,6 +3795,8 @@ yyreduce: break; case 172: + +/* Line 1455 of yacc.c */ #line 1451 "program_parse.y" { (yyval.integer) = STATE_DIFFUSE; @@ -3620,6 +3804,8 @@ yyreduce: break; case 173: + +/* Line 1455 of yacc.c */ #line 1455 "program_parse.y" { (yyval.integer) = STATE_SPECULAR; @@ -3627,6 +3813,8 @@ yyreduce: break; case 174: + +/* Line 1455 of yacc.c */ #line 1461 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) { @@ -3639,6 +3827,8 @@ yyreduce: break; case 175: + +/* Line 1455 of yacc.c */ #line 1472 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3649,6 +3839,8 @@ yyreduce: break; case 176: + +/* Line 1455 of yacc.c */ #line 1481 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S; @@ -3656,6 +3848,8 @@ yyreduce: break; case 177: + +/* Line 1455 of yacc.c */ #line 1485 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_OBJECT_S; @@ -3663,6 +3857,8 @@ yyreduce: break; case 178: + +/* Line 1455 of yacc.c */ #line 1490 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S; @@ -3670,6 +3866,8 @@ yyreduce: break; case 179: + +/* Line 1455 of yacc.c */ #line 1494 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S; @@ -3677,6 +3875,8 @@ yyreduce: break; case 180: + +/* Line 1455 of yacc.c */ #line 1498 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S; @@ -3684,6 +3884,8 @@ yyreduce: break; case 181: + +/* Line 1455 of yacc.c */ #line 1502 "program_parse.y" { (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S; @@ -3691,6 +3893,8 @@ yyreduce: break; case 182: + +/* Line 1455 of yacc.c */ #line 1508 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3699,6 +3903,8 @@ yyreduce: break; case 183: + +/* Line 1455 of yacc.c */ #line 1515 "program_parse.y" { (yyval.integer) = STATE_FOG_COLOR; @@ -3706,6 +3912,8 @@ yyreduce: break; case 184: + +/* Line 1455 of yacc.c */ #line 1519 "program_parse.y" { (yyval.integer) = STATE_FOG_PARAMS; @@ -3713,6 +3921,8 @@ yyreduce: break; case 185: + +/* Line 1455 of yacc.c */ #line 1525 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3722,6 +3932,8 @@ yyreduce: break; case 186: + +/* Line 1455 of yacc.c */ #line 1533 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) { @@ -3734,6 +3946,8 @@ yyreduce: break; case 187: + +/* Line 1455 of yacc.c */ #line 1544 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3742,6 +3956,8 @@ yyreduce: break; case 188: + +/* Line 1455 of yacc.c */ #line 1551 "program_parse.y" { (yyval.integer) = STATE_POINT_SIZE; @@ -3749,6 +3965,8 @@ yyreduce: break; case 189: + +/* Line 1455 of yacc.c */ #line 1555 "program_parse.y" { (yyval.integer) = STATE_POINT_ATTENUATION; @@ -3756,6 +3974,8 @@ yyreduce: break; case 190: + +/* Line 1455 of yacc.c */ #line 1561 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0]; @@ -3767,6 +3987,8 @@ yyreduce: break; case 191: + +/* Line 1455 of yacc.c */ #line 1571 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0]; @@ -3778,6 +4000,8 @@ yyreduce: break; case 192: + +/* Line 1455 of yacc.c */ #line 1581 "program_parse.y" { (yyval.state)[2] = 0; @@ -3786,6 +4010,8 @@ yyreduce: break; case 193: + +/* Line 1455 of yacc.c */ #line 1586 "program_parse.y" { /* It seems logical that the matrix row range specifier would have @@ -3805,6 +4031,8 @@ yyreduce: break; case 194: + +/* Line 1455 of yacc.c */ #line 1604 "program_parse.y" { (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0]; @@ -3814,6 +4042,8 @@ yyreduce: break; case 195: + +/* Line 1455 of yacc.c */ #line 1612 "program_parse.y" { (yyval.integer) = 0; @@ -3821,6 +4051,8 @@ yyreduce: break; case 196: + +/* Line 1455 of yacc.c */ #line 1616 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); @@ -3828,6 +4060,8 @@ yyreduce: break; case 197: + +/* Line 1455 of yacc.c */ #line 1622 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVERSE; @@ -3835,6 +4069,8 @@ yyreduce: break; case 198: + +/* Line 1455 of yacc.c */ #line 1626 "program_parse.y" { (yyval.integer) = STATE_MATRIX_TRANSPOSE; @@ -3842,6 +4078,8 @@ yyreduce: break; case 199: + +/* Line 1455 of yacc.c */ #line 1630 "program_parse.y" { (yyval.integer) = STATE_MATRIX_INVTRANS; @@ -3849,6 +4087,8 @@ yyreduce: break; case 200: + +/* Line 1455 of yacc.c */ #line 1636 "program_parse.y" { if ((yyvsp[(1) - (1)].integer) > 3) { @@ -3861,6 +4101,8 @@ yyreduce: break; case 201: + +/* Line 1455 of yacc.c */ #line 1647 "program_parse.y" { (yyval.state)[0] = STATE_MODELVIEW_MATRIX; @@ -3869,6 +4111,8 @@ yyreduce: break; case 202: + +/* Line 1455 of yacc.c */ #line 1652 "program_parse.y" { (yyval.state)[0] = STATE_PROJECTION_MATRIX; @@ -3877,6 +4121,8 @@ yyreduce: break; case 203: + +/* Line 1455 of yacc.c */ #line 1657 "program_parse.y" { (yyval.state)[0] = STATE_MVP_MATRIX; @@ -3885,6 +4131,8 @@ yyreduce: break; case 204: + +/* Line 1455 of yacc.c */ #line 1662 "program_parse.y" { (yyval.state)[0] = STATE_TEXTURE_MATRIX; @@ -3893,6 +4141,8 @@ yyreduce: break; case 205: + +/* Line 1455 of yacc.c */ #line 1667 "program_parse.y" { yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported"); @@ -3901,6 +4151,8 @@ yyreduce: break; case 206: + +/* Line 1455 of yacc.c */ #line 1672 "program_parse.y" { (yyval.state)[0] = STATE_PROGRAM_MATRIX; @@ -3909,6 +4161,8 @@ yyreduce: break; case 207: + +/* Line 1455 of yacc.c */ #line 1679 "program_parse.y" { (yyval.integer) = 0; @@ -3916,6 +4170,8 @@ yyreduce: break; case 208: + +/* Line 1455 of yacc.c */ #line 1683 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); @@ -3923,6 +4179,8 @@ yyreduce: break; case 209: + +/* Line 1455 of yacc.c */ #line 1688 "program_parse.y" { /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix @@ -3938,6 +4196,8 @@ yyreduce: break; case 210: + +/* Line 1455 of yacc.c */ #line 1701 "program_parse.y" { /* Since GL_ARB_matrix_palette isn't supported, just let any value @@ -3948,6 +4208,8 @@ yyreduce: break; case 211: + +/* Line 1455 of yacc.c */ #line 1709 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) { @@ -3960,6 +4222,8 @@ yyreduce: break; case 212: + +/* Line 1455 of yacc.c */ #line 1720 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3968,6 +4232,8 @@ yyreduce: break; case 217: + +/* Line 1455 of yacc.c */ #line 1732 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -3979,6 +4245,8 @@ yyreduce: break; case 218: + +/* Line 1455 of yacc.c */ #line 1742 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); @@ -3987,6 +4255,8 @@ yyreduce: break; case 219: + +/* Line 1455 of yacc.c */ #line 1747 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); @@ -3995,6 +4265,8 @@ yyreduce: break; case 220: + +/* Line 1455 of yacc.c */ #line 1754 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -4006,6 +4278,8 @@ yyreduce: break; case 221: + +/* Line 1455 of yacc.c */ #line 1764 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -4017,6 +4291,8 @@ yyreduce: break; case 222: + +/* Line 1455 of yacc.c */ #line 1773 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (1)].integer); @@ -4025,6 +4301,8 @@ yyreduce: break; case 223: + +/* Line 1455 of yacc.c */ #line 1778 "program_parse.y" { (yyval.state)[0] = (yyvsp[(1) - (3)].integer); @@ -4033,6 +4311,8 @@ yyreduce: break; case 224: + +/* Line 1455 of yacc.c */ #line 1785 "program_parse.y" { memset((yyval.state), 0, sizeof((yyval.state))); @@ -4044,6 +4324,8 @@ yyreduce: break; case 225: + +/* Line 1455 of yacc.c */ #line 1795 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) { @@ -4055,6 +4337,8 @@ yyreduce: break; case 226: + +/* Line 1455 of yacc.c */ #line 1805 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) { @@ -4066,6 +4350,8 @@ yyreduce: break; case 231: + +/* Line 1455 of yacc.c */ #line 1820 "program_parse.y" { (yyval.vector).count = 4; @@ -4077,6 +4363,8 @@ yyreduce: break; case 232: + +/* Line 1455 of yacc.c */ #line 1830 "program_parse.y" { (yyval.vector).count = 1; @@ -4088,6 +4376,8 @@ yyreduce: break; case 233: + +/* Line 1455 of yacc.c */ #line 1838 "program_parse.y" { (yyval.vector).count = 1; @@ -4099,6 +4389,8 @@ yyreduce: break; case 234: + +/* Line 1455 of yacc.c */ #line 1848 "program_parse.y" { (yyval.vector).count = 4; @@ -4110,6 +4402,8 @@ yyreduce: break; case 235: + +/* Line 1455 of yacc.c */ #line 1856 "program_parse.y" { (yyval.vector).count = 4; @@ -4121,6 +4415,8 @@ yyreduce: break; case 236: + +/* Line 1455 of yacc.c */ #line 1865 "program_parse.y" { (yyval.vector).count = 4; @@ -4132,6 +4428,8 @@ yyreduce: break; case 237: + +/* Line 1455 of yacc.c */ #line 1874 "program_parse.y" { (yyval.vector).count = 4; @@ -4143,6 +4441,8 @@ yyreduce: break; case 238: + +/* Line 1455 of yacc.c */ #line 1884 "program_parse.y" { (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real); @@ -4150,6 +4450,8 @@ yyreduce: break; case 239: + +/* Line 1455 of yacc.c */ #line 1888 "program_parse.y" { (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer)); @@ -4157,26 +4459,36 @@ yyreduce: break; case 240: + +/* Line 1455 of yacc.c */ #line 1893 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 241: + +/* Line 1455 of yacc.c */ #line 1894 "program_parse.y" { (yyval.negate) = TRUE; ;} break; case 242: + +/* Line 1455 of yacc.c */ #line 1895 "program_parse.y" { (yyval.negate) = FALSE; ;} break; case 243: + +/* Line 1455 of yacc.c */ #line 1898 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} break; case 245: + +/* Line 1455 of yacc.c */ #line 1902 "program_parse.y" { /* NV_fragment_program_option defines the size qualifiers in a @@ -4214,17 +4526,23 @@ yyreduce: break; case 246: + +/* Line 1455 of yacc.c */ #line 1936 "program_parse.y" { ;} break; case 247: + +/* Line 1455 of yacc.c */ #line 1940 "program_parse.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 249: + +/* Line 1455 of yacc.c */ #line 1944 "program_parse.y" { if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) { @@ -4234,6 +4552,8 @@ yyreduce: break; case 250: + +/* Line 1455 of yacc.c */ #line 1950 "program_parse.y" { if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) { @@ -4243,6 +4563,8 @@ yyreduce: break; case 251: + +/* Line 1455 of yacc.c */ #line 1958 "program_parse.y" { struct asm_symbol *const s = @@ -4257,6 +4579,8 @@ yyreduce: break; case 252: + +/* Line 1455 of yacc.c */ #line 1971 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4269,6 +4593,8 @@ yyreduce: break; case 253: + +/* Line 1455 of yacc.c */ #line 1980 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4281,6 +4607,8 @@ yyreduce: break; case 254: + +/* Line 1455 of yacc.c */ #line 1989 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (2)].result); @@ -4288,6 +4616,8 @@ yyreduce: break; case 255: + +/* Line 1455 of yacc.c */ #line 1993 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4300,6 +4630,8 @@ yyreduce: break; case 256: + +/* Line 1455 of yacc.c */ #line 2002 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4312,6 +4644,8 @@ yyreduce: break; case 257: + +/* Line 1455 of yacc.c */ #line 2011 "program_parse.y" { if (state->mode == ARB_fragment) { @@ -4324,6 +4658,8 @@ yyreduce: break; case 258: + +/* Line 1455 of yacc.c */ #line 2022 "program_parse.y" { (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer); @@ -4331,6 +4667,8 @@ yyreduce: break; case 259: + +/* Line 1455 of yacc.c */ #line 2028 "program_parse.y" { (yyval.integer) = (state->mode == ARB_vertex) @@ -4340,6 +4678,8 @@ yyreduce: break; case 260: + +/* Line 1455 of yacc.c */ #line 2034 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4352,6 +4692,8 @@ yyreduce: break; case 261: + +/* Line 1455 of yacc.c */ #line 2043 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4364,6 +4706,8 @@ yyreduce: break; case 262: + +/* Line 1455 of yacc.c */ #line 2054 "program_parse.y" { (yyval.integer) = 0; @@ -4371,6 +4715,8 @@ yyreduce: break; case 263: + +/* Line 1455 of yacc.c */ #line 2058 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4383,6 +4729,8 @@ yyreduce: break; case 264: + +/* Line 1455 of yacc.c */ #line 2067 "program_parse.y" { if (state->mode == ARB_vertex) { @@ -4395,66 +4743,92 @@ yyreduce: break; case 265: + +/* Line 1455 of yacc.c */ #line 2077 "program_parse.y" { (yyval.integer) = 0; ;} break; case 266: + +/* Line 1455 of yacc.c */ #line 2078 "program_parse.y" { (yyval.integer) = 0; ;} break; case 267: + +/* Line 1455 of yacc.c */ #line 2079 "program_parse.y" { (yyval.integer) = 1; ;} break; case 268: + +/* Line 1455 of yacc.c */ #line 2082 "program_parse.y" { (yyval.integer) = 0; ;} break; case 269: + +/* Line 1455 of yacc.c */ #line 2083 "program_parse.y" { (yyval.integer) = 0; ;} break; case 270: + +/* Line 1455 of yacc.c */ #line 2084 "program_parse.y" { (yyval.integer) = 1; ;} break; case 271: + +/* Line 1455 of yacc.c */ #line 2087 "program_parse.y" { (yyval.integer) = 0; ;} break; case 272: + +/* Line 1455 of yacc.c */ #line 2088 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 273: + +/* Line 1455 of yacc.c */ #line 2091 "program_parse.y" { (yyval.integer) = 0; ;} break; case 274: + +/* Line 1455 of yacc.c */ #line 2092 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 275: + +/* Line 1455 of yacc.c */ #line 2095 "program_parse.y" { (yyval.integer) = 0; ;} break; case 276: + +/* Line 1455 of yacc.c */ #line 2096 "program_parse.y" { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;} break; case 277: + +/* Line 1455 of yacc.c */ #line 2100 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) { @@ -4467,6 +4841,8 @@ yyreduce: break; case 278: + +/* Line 1455 of yacc.c */ #line 2111 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) { @@ -4479,6 +4855,8 @@ yyreduce: break; case 279: + +/* Line 1455 of yacc.c */ #line 2122 "program_parse.y" { if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) { @@ -4491,6 +4869,8 @@ yyreduce: break; case 280: + +/* Line 1455 of yacc.c */ #line 2133 "program_parse.y" { struct asm_symbol *exist = (struct asm_symbol *) @@ -4498,9 +4878,10 @@ yyreduce: struct asm_symbol *target = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, (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)); + yyerror(& (yylsp[(2) - (4)]), state, m); YYERROR; } else if (target == NULL) { yyerror(& (yylsp[(4) - (4)]), state, @@ -4513,8 +4894,9 @@ yyreduce: break; -/* Line 1267 of yacc.c. */ -#line 4518 "program_parse.tab.c" + +/* Line 1455 of yacc.c */ +#line 4900 "program_parse.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4590,7 +4972,7 @@ yyerrlab: if (yyerrstatus == 3) { - /* If just tried and failed to reuse look-ahead token after an + /* If just tried and failed to reuse lookahead token after an error, discard it. */ if (yychar <= YYEOF) @@ -4607,7 +4989,7 @@ yyerrlab: } } - /* Else will try to reuse look-ahead token after shifting the error + /* Else will try to reuse lookahead token after shifting the error token. */ goto yyerrlab1; @@ -4665,14 +5047,11 @@ yyerrlab1: YY_STACK_PRINT (yyss, yyssp); } - if (yyn == YYFINAL) - YYACCEPT; - *++yyvsp = yylval; yyerror_range[1] = yylloc; /* Using YYLLOC is tempting, but would change the location of - the look-ahead. YYLOC is available though. */ + the lookahead. YYLOC is available though. */ YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2); *++yylsp = yyloc; @@ -4697,7 +5076,7 @@ yyabortlab: yyresult = 1; goto yyreturn; -#ifndef yyoverflow +#if !defined(yyoverflow) || YYERROR_VERBOSE /*-------------------------------------------------. | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ @@ -4708,7 +5087,7 @@ yyexhaustedlab: #endif yyreturn: - if (yychar != YYEOF && yychar != YYEMPTY) + if (yychar != YYEMPTY) yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc, state); /* Do not reclaim the symbols of the rule which action triggered @@ -4734,7 +5113,9 @@ yyreturn: } -#line 2157 "program_parse.y" + +/* Line 1675 of yacc.c */ +#line 2158 "program_parse.y" void diff --git a/src/mesa/shader/program_parse.tab.h b/src/mesa/shader/program_parse.tab.h index 25048065c1..406100c859 100644 --- a/src/mesa/shader/program_parse.tab.h +++ b/src/mesa/shader/program_parse.tab.h @@ -1,24 +1,23 @@ -/* A Bison parser, made by GNU Bison 2.3. */ -/* Skeleton interface for Bison's Yacc-like parsers in C +/* A Bison parser, made by GNU Bison 2.4.1. */ - Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -29,10 +28,11 @@ special exception, which will cause the skeleton and the resulting Bison output files to be licensed under the GNU General Public License without this special exception. - + This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ + /* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE @@ -146,120 +146,16 @@ DOT = 362 }; #endif -/* Tokens. */ -#define ARBvp_10 258 -#define ARBfp_10 259 -#define ADDRESS 260 -#define ALIAS 261 -#define ATTRIB 262 -#define OPTION 263 -#define OUTPUT 264 -#define PARAM 265 -#define TEMP 266 -#define END 267 -#define BIN_OP 268 -#define BINSC_OP 269 -#define SAMPLE_OP 270 -#define SCALAR_OP 271 -#define TRI_OP 272 -#define VECTOR_OP 273 -#define ARL 274 -#define KIL 275 -#define SWZ 276 -#define TXD_OP 277 -#define INTEGER 278 -#define REAL 279 -#define AMBIENT 280 -#define ATTENUATION 281 -#define BACK 282 -#define CLIP 283 -#define COLOR 284 -#define DEPTH 285 -#define DIFFUSE 286 -#define DIRECTION 287 -#define EMISSION 288 -#define ENV 289 -#define EYE 290 -#define FOG 291 -#define FOGCOORD 292 -#define FRAGMENT 293 -#define FRONT 294 -#define HALF 295 -#define INVERSE 296 -#define INVTRANS 297 -#define LIGHT 298 -#define LIGHTMODEL 299 -#define LIGHTPROD 300 -#define LOCAL 301 -#define MATERIAL 302 -#define MAT_PROGRAM 303 -#define MATRIX 304 -#define MATRIXINDEX 305 -#define MODELVIEW 306 -#define MVP 307 -#define NORMAL 308 -#define OBJECT 309 -#define PALETTE 310 -#define PARAMS 311 -#define PLANE 312 -#define POINT_TOK 313 -#define POINTSIZE 314 -#define POSITION 315 -#define PRIMARY 316 -#define PROGRAM 317 -#define PROJECTION 318 -#define RANGE 319 -#define RESULT 320 -#define ROW 321 -#define SCENECOLOR 322 -#define SECONDARY 323 -#define SHININESS 324 -#define SIZE_TOK 325 -#define SPECULAR 326 -#define SPOT 327 -#define STATE 328 -#define TEXCOORD 329 -#define TEXENV 330 -#define TEXGEN 331 -#define TEXGEN_Q 332 -#define TEXGEN_R 333 -#define TEXGEN_S 334 -#define TEXGEN_T 335 -#define TEXTURE 336 -#define TRANSPOSE 337 -#define TEXTURE_UNIT 338 -#define TEX_1D 339 -#define TEX_2D 340 -#define TEX_3D 341 -#define TEX_CUBE 342 -#define TEX_RECT 343 -#define TEX_SHADOW1D 344 -#define TEX_SHADOW2D 345 -#define TEX_SHADOWRECT 346 -#define TEX_ARRAY1D 347 -#define TEX_ARRAY2D 348 -#define TEX_ARRAYSHADOW1D 349 -#define TEX_ARRAYSHADOW2D 350 -#define VERTEX 351 -#define VTXATTRIB 352 -#define WEIGHT 353 -#define IDENTIFIER 354 -#define USED_IDENTIFIER 355 -#define MASK4 356 -#define MASK3 357 -#define MASK2 358 -#define MASK1 359 -#define SWIZZLE 360 -#define DOT_DOT 361 -#define DOT 362 - #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED typedef union YYSTYPE -#line 122 "program_parse.y" { + +/* Line 1676 of yacc.c */ +#line 122 "program_parse.y" + struct asm_instruction *inst; struct asm_symbol *sym; struct asm_symbol temp_sym; @@ -283,13 +179,15 @@ typedef union YYSTYPE unsigned xyzw_valid:1; unsigned negate:1; } ext_swizzle; -} -/* Line 1489 of yacc.c. */ -#line 289 "program_parse.tab.h" - YYSTYPE; + + + +/* Line 1676 of yacc.c */ +#line 187 "program_parse.tab.h" +} YYSTYPE; +# define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 -# define YYSTYPE_IS_TRIVIAL 1 #endif @@ -308,3 +206,4 @@ typedef struct YYLTYPE #endif + diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index 32b058400c..5767c51759 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -2136,9 +2136,10 @@ ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER struct asm_symbol *target = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $4); - if (exist != NULL) { - yyerror(& @2, state, "redeclared identifier"); + char m[1000]; + _mesa_snprintf(m, sizeof(m), "redeclared identifier: %s", $2); + yyerror(& @2, state, m); YYERROR; } else if (target == NULL) { yyerror(& @4, state, -- cgit v1.2.3 From 1c7337d46eab0cfd36ebc0ad22c5a66ec9b91d39 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 4 Nov 2009 12:03:44 -0800 Subject: Revert "ARB prog parser: Fix epic memory leak in lexer / parser interface" This reverts commit 93dae6761bc90bbd43b450d2673620ec189b2c7a. This change was completely broken when the parser uses multiple strings in a single production. It would be nice if bug fixes could initially land somewhere other than the stable branch. --- src/mesa/shader/lex.yy.c | 445 ++++++++++++++++-------------------- src/mesa/shader/program_lexer.l | 45 +--- src/mesa/shader/program_parse.tab.c | 21 +- src/mesa/shader/program_parse.y | 17 +- src/mesa/shader/program_parser.h | 16 -- 5 files changed, 207 insertions(+), 337 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index 728c2dc272..fefef573ee 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -53,6 +53,7 @@ typedef int flex_int32_t; typedef unsigned char flex_uint8_t; typedef unsigned short int flex_uint16_t; typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ /* Limits of integral types. */ #ifndef INT8_MIN @@ -83,8 +84,6 @@ typedef unsigned int flex_uint32_t; #define UINT32_MAX (4294967295U) #endif -#endif /* ! C99 */ - #endif /* ! FLEXINT_H */ #ifdef __cplusplus @@ -158,15 +157,7 @@ typedef void* yyscan_t; /* Size of default input buffer. */ #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ #endif /* The state buf must be large enough to hold one state per character in the main buffer. @@ -927,7 +918,7 @@ static yyconst flex_int16_t yy_chk[1023] = if (condition) { \ return token; \ } else { \ - yylval->string = return_string(yyextra, yytext); \ + yylval->string = strdup(yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -950,7 +941,7 @@ static yyconst flex_int16_t yy_chk[1023] = yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ - yylval->string = return_string(yyextra, yytext); \ + yylval->string = strdup(yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -958,45 +949,6 @@ static yyconst flex_int16_t yy_chk[1023] = #define SWIZZLE_INVAL MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \ SWIZZLE_NIL, SWIZZLE_NIL) -/** - * Send a string to the parser using asm_parser_state::string_dumpster - * - * Sends a string to the parser using asm_parser_state::string_dumpster as a - * temporary storage buffer. Data previously stored in - * asm_parser_state::string_dumpster will be lost. If - * asm_parser_state::string_dumpster is not large enough to hold the new - * string, the buffer size will be increased. The buffer size is \b never - * decreased. - * - * \param state Assembler parser state tracking - * \param str String to be passed to the parser - * - * \return - * A pointer to asm_parser_state::string_dumpster on success or \c NULL on - * failure. Currently the only failure case is \c ENOMEM. - */ -static char * -return_string(struct asm_parser_state *state, const char *str) -{ - const size_t len = strlen(str); - - if (len >= state->dumpster_size) { - char *const dumpster = _mesa_realloc(state->string_dumpster, - state->dumpster_size, - len + 1); - if (dumpster == NULL) { - return NULL; - } - - state->string_dumpster = dumpster; - state->dumpster_size = len + 1; - } - - memcpy(state->string_dumpster, str, len + 1); - return state->string_dumpster; -} - - static unsigned mask_from_char(char c) { @@ -1052,7 +1004,7 @@ swiz_from_char(char c) } while(0); #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1056 "lex.yy.c" +#line 1008 "lex.yy.c" #define INITIAL 0 @@ -1189,12 +1141,7 @@ static int input (yyscan_t yyscanner ); /* Amount of stuff to slurp up with each read. */ #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ #endif /* Copy whatever the last rule matched to the standard output. */ @@ -1202,7 +1149,7 @@ static int input (yyscan_t yyscanner ); /* This used to be an fputs(), but since the string might contain NUL's, * we now use fwrite(). */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO fwrite( yytext, yyleng, 1, yyout ) #endif /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, @@ -1213,7 +1160,7 @@ static int input (yyscan_t yyscanner ); if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ { \ int c = '*'; \ - size_t n; \ + unsigned n; \ for ( n = 0; n < max_size && \ (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ buf[n] = (char) c; \ @@ -1298,10 +1245,10 @@ YY_DECL register int yy_act; struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 176 "program_lexer.l" +#line 137 "program_lexer.l" -#line 1305 "lex.yy.c" +#line 1252 "lex.yy.c" yylval = yylval_param; @@ -1390,17 +1337,17 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP -#line 178 "program_lexer.l" +#line 139 "program_lexer.l" { return ARBvp_10; } YY_BREAK case 2: YY_RULE_SETUP -#line 179 "program_lexer.l" +#line 140 "program_lexer.l" { return ARBfp_10; } YY_BREAK case 3: YY_RULE_SETUP -#line 180 "program_lexer.l" +#line 141 "program_lexer.l" { yylval->integer = at_address; return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1408,760 +1355,760 @@ YY_RULE_SETUP YY_BREAK case 4: YY_RULE_SETUP -#line 184 "program_lexer.l" +#line 145 "program_lexer.l" { return ALIAS; } YY_BREAK case 5: YY_RULE_SETUP -#line 185 "program_lexer.l" +#line 146 "program_lexer.l" { return ATTRIB; } YY_BREAK case 6: YY_RULE_SETUP -#line 186 "program_lexer.l" +#line 147 "program_lexer.l" { return END; } YY_BREAK case 7: YY_RULE_SETUP -#line 187 "program_lexer.l" +#line 148 "program_lexer.l" { return OPTION; } YY_BREAK case 8: YY_RULE_SETUP -#line 188 "program_lexer.l" +#line 149 "program_lexer.l" { return OUTPUT; } YY_BREAK case 9: YY_RULE_SETUP -#line 189 "program_lexer.l" +#line 150 "program_lexer.l" { return PARAM; } YY_BREAK case 10: YY_RULE_SETUP -#line 190 "program_lexer.l" +#line 151 "program_lexer.l" { yylval->integer = at_temp; return TEMP; } YY_BREAK case 11: YY_RULE_SETUP -#line 192 "program_lexer.l" +#line 153 "program_lexer.l" { return_opcode( 1, VECTOR_OP, ABS, OFF); } YY_BREAK case 12: YY_RULE_SETUP -#line 193 "program_lexer.l" +#line 154 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } YY_BREAK case 13: YY_RULE_SETUP -#line 194 "program_lexer.l" +#line 155 "program_lexer.l" { return_opcode( 1, BIN_OP, ADD, OFF); } YY_BREAK case 14: YY_RULE_SETUP -#line 195 "program_lexer.l" +#line 156 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } YY_BREAK case 15: YY_RULE_SETUP -#line 196 "program_lexer.l" +#line 157 "program_lexer.l" { return_opcode(require_ARB_vp, ARL, ARL, OFF); } YY_BREAK case 16: YY_RULE_SETUP -#line 198 "program_lexer.l" +#line 159 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } YY_BREAK case 17: YY_RULE_SETUP -#line 199 "program_lexer.l" +#line 160 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } YY_BREAK case 18: YY_RULE_SETUP -#line 200 "program_lexer.l" +#line 161 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } YY_BREAK case 19: YY_RULE_SETUP -#line 201 "program_lexer.l" +#line 162 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } YY_BREAK case 20: YY_RULE_SETUP -#line 203 "program_lexer.l" +#line 164 "program_lexer.l" { return_opcode( 1, BIN_OP, DP3, OFF); } YY_BREAK case 21: YY_RULE_SETUP -#line 204 "program_lexer.l" +#line 165 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } YY_BREAK case 22: YY_RULE_SETUP -#line 205 "program_lexer.l" +#line 166 "program_lexer.l" { return_opcode( 1, BIN_OP, DP4, OFF); } YY_BREAK case 23: YY_RULE_SETUP -#line 206 "program_lexer.l" +#line 167 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } YY_BREAK case 24: YY_RULE_SETUP -#line 207 "program_lexer.l" +#line 168 "program_lexer.l" { return_opcode( 1, BIN_OP, DPH, OFF); } YY_BREAK case 25: YY_RULE_SETUP -#line 208 "program_lexer.l" +#line 169 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } YY_BREAK case 26: YY_RULE_SETUP -#line 209 "program_lexer.l" +#line 170 "program_lexer.l" { return_opcode( 1, BIN_OP, DST, OFF); } YY_BREAK case 27: YY_RULE_SETUP -#line 210 "program_lexer.l" +#line 171 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } YY_BREAK case 28: YY_RULE_SETUP -#line 212 "program_lexer.l" +#line 173 "program_lexer.l" { return_opcode( 1, SCALAR_OP, EX2, OFF); } YY_BREAK case 29: YY_RULE_SETUP -#line 213 "program_lexer.l" +#line 174 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } YY_BREAK case 30: YY_RULE_SETUP -#line 214 "program_lexer.l" +#line 175 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } YY_BREAK case 31: YY_RULE_SETUP -#line 216 "program_lexer.l" +#line 177 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FLR, OFF); } YY_BREAK case 32: YY_RULE_SETUP -#line 217 "program_lexer.l" +#line 178 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } YY_BREAK case 33: YY_RULE_SETUP -#line 218 "program_lexer.l" +#line 179 "program_lexer.l" { return_opcode( 1, VECTOR_OP, FRC, OFF); } YY_BREAK case 34: YY_RULE_SETUP -#line 219 "program_lexer.l" +#line 180 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } YY_BREAK case 35: YY_RULE_SETUP -#line 221 "program_lexer.l" +#line 182 "program_lexer.l" { return_opcode(require_ARB_fp, KIL, KIL, OFF); } YY_BREAK case 36: YY_RULE_SETUP -#line 223 "program_lexer.l" +#line 184 "program_lexer.l" { return_opcode( 1, VECTOR_OP, LIT, OFF); } YY_BREAK case 37: YY_RULE_SETUP -#line 224 "program_lexer.l" +#line 185 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } YY_BREAK case 38: YY_RULE_SETUP -#line 225 "program_lexer.l" +#line 186 "program_lexer.l" { return_opcode( 1, SCALAR_OP, LG2, OFF); } YY_BREAK case 39: YY_RULE_SETUP -#line 226 "program_lexer.l" +#line 187 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } YY_BREAK case 40: YY_RULE_SETUP -#line 227 "program_lexer.l" +#line 188 "program_lexer.l" { return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } YY_BREAK case 41: YY_RULE_SETUP -#line 228 "program_lexer.l" +#line 189 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } YY_BREAK case 42: YY_RULE_SETUP -#line 229 "program_lexer.l" +#line 190 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } YY_BREAK case 43: YY_RULE_SETUP -#line 231 "program_lexer.l" +#line 192 "program_lexer.l" { return_opcode( 1, TRI_OP, MAD, OFF); } YY_BREAK case 44: YY_RULE_SETUP -#line 232 "program_lexer.l" +#line 193 "program_lexer.l" { return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } YY_BREAK case 45: YY_RULE_SETUP -#line 233 "program_lexer.l" +#line 194 "program_lexer.l" { return_opcode( 1, BIN_OP, MAX, OFF); } YY_BREAK case 46: YY_RULE_SETUP -#line 234 "program_lexer.l" +#line 195 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } YY_BREAK case 47: YY_RULE_SETUP -#line 235 "program_lexer.l" +#line 196 "program_lexer.l" { return_opcode( 1, BIN_OP, MIN, OFF); } YY_BREAK case 48: YY_RULE_SETUP -#line 236 "program_lexer.l" +#line 197 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } YY_BREAK case 49: YY_RULE_SETUP -#line 237 "program_lexer.l" +#line 198 "program_lexer.l" { return_opcode( 1, VECTOR_OP, MOV, OFF); } YY_BREAK case 50: YY_RULE_SETUP -#line 238 "program_lexer.l" +#line 199 "program_lexer.l" { return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } YY_BREAK case 51: YY_RULE_SETUP -#line 239 "program_lexer.l" +#line 200 "program_lexer.l" { return_opcode( 1, BIN_OP, MUL, OFF); } YY_BREAK case 52: YY_RULE_SETUP -#line 240 "program_lexer.l" +#line 201 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } YY_BREAK case 53: YY_RULE_SETUP -#line 242 "program_lexer.l" +#line 203 "program_lexer.l" { return_opcode( 1, BINSC_OP, POW, OFF); } YY_BREAK case 54: YY_RULE_SETUP -#line 243 "program_lexer.l" +#line 204 "program_lexer.l" { return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } YY_BREAK case 55: YY_RULE_SETUP -#line 245 "program_lexer.l" +#line 206 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RCP, OFF); } YY_BREAK case 56: YY_RULE_SETUP -#line 246 "program_lexer.l" +#line 207 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } YY_BREAK case 57: YY_RULE_SETUP -#line 247 "program_lexer.l" +#line 208 "program_lexer.l" { return_opcode( 1, SCALAR_OP, RSQ, OFF); } YY_BREAK case 58: YY_RULE_SETUP -#line 248 "program_lexer.l" +#line 209 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } YY_BREAK case 59: YY_RULE_SETUP -#line 250 "program_lexer.l" +#line 211 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } YY_BREAK case 60: YY_RULE_SETUP -#line 251 "program_lexer.l" +#line 212 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } YY_BREAK case 61: YY_RULE_SETUP -#line 252 "program_lexer.l" +#line 213 "program_lexer.l" { return_opcode( 1, BIN_OP, SGE, OFF); } YY_BREAK case 62: YY_RULE_SETUP -#line 253 "program_lexer.l" +#line 214 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } YY_BREAK case 63: YY_RULE_SETUP -#line 254 "program_lexer.l" +#line 215 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } YY_BREAK case 64: YY_RULE_SETUP -#line 255 "program_lexer.l" +#line 216 "program_lexer.l" { return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } YY_BREAK case 65: YY_RULE_SETUP -#line 256 "program_lexer.l" +#line 217 "program_lexer.l" { return_opcode( 1, BIN_OP, SLT, OFF); } YY_BREAK case 66: YY_RULE_SETUP -#line 257 "program_lexer.l" +#line 218 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } YY_BREAK case 67: YY_RULE_SETUP -#line 258 "program_lexer.l" +#line 219 "program_lexer.l" { return_opcode( 1, BIN_OP, SUB, OFF); } YY_BREAK case 68: YY_RULE_SETUP -#line 259 "program_lexer.l" +#line 220 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } YY_BREAK case 69: YY_RULE_SETUP -#line 260 "program_lexer.l" +#line 221 "program_lexer.l" { return_opcode( 1, SWZ, SWZ, OFF); } YY_BREAK case 70: YY_RULE_SETUP -#line 261 "program_lexer.l" +#line 222 "program_lexer.l" { return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } YY_BREAK case 71: YY_RULE_SETUP -#line 263 "program_lexer.l" +#line 224 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } YY_BREAK case 72: YY_RULE_SETUP -#line 264 "program_lexer.l" +#line 225 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } YY_BREAK case 73: YY_RULE_SETUP -#line 265 "program_lexer.l" +#line 226 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } YY_BREAK case 74: YY_RULE_SETUP -#line 266 "program_lexer.l" +#line 227 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } YY_BREAK case 75: YY_RULE_SETUP -#line 267 "program_lexer.l" +#line 228 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } YY_BREAK case 76: YY_RULE_SETUP -#line 268 "program_lexer.l" +#line 229 "program_lexer.l" { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } YY_BREAK case 77: YY_RULE_SETUP -#line 270 "program_lexer.l" +#line 231 "program_lexer.l" { return_opcode( 1, BIN_OP, XPD, OFF); } YY_BREAK case 78: YY_RULE_SETUP -#line 271 "program_lexer.l" +#line 232 "program_lexer.l" { return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } YY_BREAK case 79: YY_RULE_SETUP -#line 273 "program_lexer.l" +#line 234 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } YY_BREAK case 80: YY_RULE_SETUP -#line 274 "program_lexer.l" +#line 235 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } YY_BREAK case 81: YY_RULE_SETUP -#line 275 "program_lexer.l" +#line 236 "program_lexer.l" { return PROGRAM; } YY_BREAK case 82: YY_RULE_SETUP -#line 276 "program_lexer.l" +#line 237 "program_lexer.l" { return STATE; } YY_BREAK case 83: YY_RULE_SETUP -#line 277 "program_lexer.l" +#line 238 "program_lexer.l" { return RESULT; } YY_BREAK case 84: YY_RULE_SETUP -#line 279 "program_lexer.l" +#line 240 "program_lexer.l" { return AMBIENT; } YY_BREAK case 85: YY_RULE_SETUP -#line 280 "program_lexer.l" +#line 241 "program_lexer.l" { return ATTENUATION; } YY_BREAK case 86: YY_RULE_SETUP -#line 281 "program_lexer.l" +#line 242 "program_lexer.l" { return BACK; } YY_BREAK case 87: YY_RULE_SETUP -#line 282 "program_lexer.l" +#line 243 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, CLIP); } YY_BREAK case 88: YY_RULE_SETUP -#line 283 "program_lexer.l" +#line 244 "program_lexer.l" { return COLOR; } YY_BREAK case 89: YY_RULE_SETUP -#line 284 "program_lexer.l" +#line 245 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, DEPTH); } YY_BREAK case 90: YY_RULE_SETUP -#line 285 "program_lexer.l" +#line 246 "program_lexer.l" { return DIFFUSE; } YY_BREAK case 91: YY_RULE_SETUP -#line 286 "program_lexer.l" +#line 247 "program_lexer.l" { return DIRECTION; } YY_BREAK case 92: YY_RULE_SETUP -#line 287 "program_lexer.l" +#line 248 "program_lexer.l" { return EMISSION; } YY_BREAK case 93: YY_RULE_SETUP -#line 288 "program_lexer.l" +#line 249 "program_lexer.l" { return ENV; } YY_BREAK case 94: YY_RULE_SETUP -#line 289 "program_lexer.l" +#line 250 "program_lexer.l" { return EYE; } YY_BREAK case 95: YY_RULE_SETUP -#line 290 "program_lexer.l" +#line 251 "program_lexer.l" { return FOGCOORD; } YY_BREAK case 96: YY_RULE_SETUP -#line 291 "program_lexer.l" +#line 252 "program_lexer.l" { return FOG; } YY_BREAK case 97: YY_RULE_SETUP -#line 292 "program_lexer.l" +#line 253 "program_lexer.l" { return FRONT; } YY_BREAK case 98: YY_RULE_SETUP -#line 293 "program_lexer.l" +#line 254 "program_lexer.l" { return HALF; } YY_BREAK case 99: YY_RULE_SETUP -#line 294 "program_lexer.l" +#line 255 "program_lexer.l" { return INVERSE; } YY_BREAK case 100: YY_RULE_SETUP -#line 295 "program_lexer.l" +#line 256 "program_lexer.l" { return INVTRANS; } YY_BREAK case 101: YY_RULE_SETUP -#line 296 "program_lexer.l" +#line 257 "program_lexer.l" { return LIGHT; } YY_BREAK case 102: YY_RULE_SETUP -#line 297 "program_lexer.l" +#line 258 "program_lexer.l" { return LIGHTMODEL; } YY_BREAK case 103: YY_RULE_SETUP -#line 298 "program_lexer.l" +#line 259 "program_lexer.l" { return LIGHTPROD; } YY_BREAK case 104: YY_RULE_SETUP -#line 299 "program_lexer.l" +#line 260 "program_lexer.l" { return LOCAL; } YY_BREAK case 105: YY_RULE_SETUP -#line 300 "program_lexer.l" +#line 261 "program_lexer.l" { return MATERIAL; } YY_BREAK case 106: YY_RULE_SETUP -#line 301 "program_lexer.l" +#line 262 "program_lexer.l" { return MAT_PROGRAM; } YY_BREAK case 107: YY_RULE_SETUP -#line 302 "program_lexer.l" +#line 263 "program_lexer.l" { return MATRIX; } YY_BREAK case 108: YY_RULE_SETUP -#line 303 "program_lexer.l" +#line 264 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } YY_BREAK case 109: YY_RULE_SETUP -#line 304 "program_lexer.l" +#line 265 "program_lexer.l" { return MODELVIEW; } YY_BREAK case 110: YY_RULE_SETUP -#line 305 "program_lexer.l" +#line 266 "program_lexer.l" { return MVP; } YY_BREAK case 111: YY_RULE_SETUP -#line 306 "program_lexer.l" +#line 267 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, NORMAL); } YY_BREAK case 112: YY_RULE_SETUP -#line 307 "program_lexer.l" +#line 268 "program_lexer.l" { return OBJECT; } YY_BREAK case 113: YY_RULE_SETUP -#line 308 "program_lexer.l" +#line 269 "program_lexer.l" { return PALETTE; } YY_BREAK case 114: YY_RULE_SETUP -#line 309 "program_lexer.l" +#line 270 "program_lexer.l" { return PARAMS; } YY_BREAK case 115: YY_RULE_SETUP -#line 310 "program_lexer.l" +#line 271 "program_lexer.l" { return PLANE; } YY_BREAK case 116: YY_RULE_SETUP -#line 311 "program_lexer.l" +#line 272 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINT_TOK); } YY_BREAK case 117: YY_RULE_SETUP -#line 312 "program_lexer.l" +#line 273 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, POINTSIZE); } YY_BREAK case 118: YY_RULE_SETUP -#line 313 "program_lexer.l" +#line 274 "program_lexer.l" { return POSITION; } YY_BREAK case 119: YY_RULE_SETUP -#line 314 "program_lexer.l" +#line 275 "program_lexer.l" { return PRIMARY; } YY_BREAK case 120: YY_RULE_SETUP -#line 315 "program_lexer.l" +#line 276 "program_lexer.l" { return PROJECTION; } YY_BREAK case 121: YY_RULE_SETUP -#line 316 "program_lexer.l" +#line 277 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, RANGE); } YY_BREAK case 122: YY_RULE_SETUP -#line 317 "program_lexer.l" +#line 278 "program_lexer.l" { return ROW; } YY_BREAK case 123: YY_RULE_SETUP -#line 318 "program_lexer.l" +#line 279 "program_lexer.l" { return SCENECOLOR; } YY_BREAK case 124: YY_RULE_SETUP -#line 319 "program_lexer.l" +#line 280 "program_lexer.l" { return SECONDARY; } YY_BREAK case 125: YY_RULE_SETUP -#line 320 "program_lexer.l" +#line 281 "program_lexer.l" { return SHININESS; } YY_BREAK case 126: YY_RULE_SETUP -#line 321 "program_lexer.l" +#line 282 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, SIZE_TOK); } YY_BREAK case 127: YY_RULE_SETUP -#line 322 "program_lexer.l" +#line 283 "program_lexer.l" { return SPECULAR; } YY_BREAK case 128: YY_RULE_SETUP -#line 323 "program_lexer.l" +#line 284 "program_lexer.l" { return SPOT; } YY_BREAK case 129: YY_RULE_SETUP -#line 324 "program_lexer.l" +#line 285 "program_lexer.l" { return TEXCOORD; } YY_BREAK case 130: YY_RULE_SETUP -#line 325 "program_lexer.l" +#line 286 "program_lexer.l" { return_token_or_DOT(require_ARB_fp, TEXENV); } YY_BREAK case 131: YY_RULE_SETUP -#line 326 "program_lexer.l" +#line 287 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN); } YY_BREAK case 132: YY_RULE_SETUP -#line 327 "program_lexer.l" +#line 288 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_Q); } YY_BREAK case 133: YY_RULE_SETUP -#line 328 "program_lexer.l" +#line 289 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_S); } YY_BREAK case 134: YY_RULE_SETUP -#line 329 "program_lexer.l" +#line 290 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, TEXGEN_T); } YY_BREAK case 135: YY_RULE_SETUP -#line 330 "program_lexer.l" +#line 291 "program_lexer.l" { return TEXTURE; } YY_BREAK case 136: YY_RULE_SETUP -#line 331 "program_lexer.l" +#line 292 "program_lexer.l" { return TRANSPOSE; } YY_BREAK case 137: YY_RULE_SETUP -#line 332 "program_lexer.l" +#line 293 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, VTXATTRIB); } YY_BREAK case 138: YY_RULE_SETUP -#line 333 "program_lexer.l" +#line 294 "program_lexer.l" { return_token_or_DOT(require_ARB_vp, WEIGHT); } YY_BREAK case 139: YY_RULE_SETUP -#line 335 "program_lexer.l" +#line 296 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } YY_BREAK case 140: YY_RULE_SETUP -#line 336 "program_lexer.l" +#line 297 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } YY_BREAK case 141: YY_RULE_SETUP -#line 337 "program_lexer.l" +#line 298 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); } YY_BREAK case 142: YY_RULE_SETUP -#line 338 "program_lexer.l" +#line 299 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); } YY_BREAK case 143: YY_RULE_SETUP -#line 339 "program_lexer.l" +#line 300 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); } YY_BREAK case 144: YY_RULE_SETUP -#line 340 "program_lexer.l" +#line 301 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); } YY_BREAK case 145: YY_RULE_SETUP -#line 341 "program_lexer.l" +#line 302 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); } YY_BREAK case 146: YY_RULE_SETUP -#line 342 "program_lexer.l" +#line 303 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); } YY_BREAK case 147: YY_RULE_SETUP -#line 343 "program_lexer.l" +#line 304 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); } YY_BREAK case 148: YY_RULE_SETUP -#line 344 "program_lexer.l" +#line 305 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); } YY_BREAK case 149: YY_RULE_SETUP -#line 345 "program_lexer.l" +#line 306 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); } YY_BREAK case 150: YY_RULE_SETUP -#line 346 "program_lexer.l" +#line 307 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } YY_BREAK case 151: YY_RULE_SETUP -#line 347 "program_lexer.l" +#line 308 "program_lexer.l" { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } YY_BREAK case 152: YY_RULE_SETUP -#line 349 "program_lexer.l" +#line 310 "program_lexer.l" { - yylval->string = return_string(yyextra, yytext); + yylval->string = strdup(yytext); return IDENTIFIER; } YY_BREAK case 153: YY_RULE_SETUP -#line 354 "program_lexer.l" +#line 315 "program_lexer.l" { return DOT_DOT; } YY_BREAK case 154: YY_RULE_SETUP -#line 356 "program_lexer.l" +#line 317 "program_lexer.l" { yylval->integer = strtol(yytext, NULL, 10); return INTEGER; @@ -2169,7 +2116,7 @@ YY_RULE_SETUP YY_BREAK case 155: YY_RULE_SETUP -#line 360 "program_lexer.l" +#line 321 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2181,7 +2128,7 @@ case 156: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 364 "program_lexer.l" +#line 325 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2189,7 +2136,7 @@ YY_RULE_SETUP YY_BREAK case 157: YY_RULE_SETUP -#line 368 "program_lexer.l" +#line 329 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2197,7 +2144,7 @@ YY_RULE_SETUP YY_BREAK case 158: YY_RULE_SETUP -#line 372 "program_lexer.l" +#line 333 "program_lexer.l" { yylval->real = _mesa_strtod(yytext, NULL); return REAL; @@ -2205,7 +2152,7 @@ YY_RULE_SETUP YY_BREAK case 159: YY_RULE_SETUP -#line 377 "program_lexer.l" +#line 338 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2214,7 +2161,7 @@ YY_RULE_SETUP YY_BREAK case 160: YY_RULE_SETUP -#line 383 "program_lexer.l" +#line 344 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2224,7 +2171,7 @@ YY_RULE_SETUP YY_BREAK case 161: YY_RULE_SETUP -#line 389 "program_lexer.l" +#line 350 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2233,7 +2180,7 @@ YY_RULE_SETUP YY_BREAK case 162: YY_RULE_SETUP -#line 394 "program_lexer.l" +#line 355 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2242,7 +2189,7 @@ YY_RULE_SETUP YY_BREAK case 163: YY_RULE_SETUP -#line 400 "program_lexer.l" +#line 361 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2252,7 +2199,7 @@ YY_RULE_SETUP YY_BREAK case 164: YY_RULE_SETUP -#line 406 "program_lexer.l" +#line 367 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2262,7 +2209,7 @@ YY_RULE_SETUP YY_BREAK case 165: YY_RULE_SETUP -#line 412 "program_lexer.l" +#line 373 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2271,7 +2218,7 @@ YY_RULE_SETUP YY_BREAK case 166: YY_RULE_SETUP -#line 418 "program_lexer.l" +#line 379 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2281,7 +2228,7 @@ YY_RULE_SETUP YY_BREAK case 167: YY_RULE_SETUP -#line 425 "program_lexer.l" +#line 386 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2293,7 +2240,7 @@ YY_RULE_SETUP YY_BREAK case 168: YY_RULE_SETUP -#line 434 "program_lexer.l" +#line 395 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_NOOP; yylval->swiz_mask.mask = WRITEMASK_XYZW; @@ -2302,7 +2249,7 @@ YY_RULE_SETUP YY_BREAK case 169: YY_RULE_SETUP -#line 440 "program_lexer.l" +#line 401 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XY @@ -2312,7 +2259,7 @@ YY_RULE_SETUP YY_BREAK case 170: YY_RULE_SETUP -#line 446 "program_lexer.l" +#line 407 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_XZW; @@ -2321,7 +2268,7 @@ YY_RULE_SETUP YY_BREAK case 171: YY_RULE_SETUP -#line 451 "program_lexer.l" +#line 412 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_YZW; @@ -2330,7 +2277,7 @@ YY_RULE_SETUP YY_BREAK case 172: YY_RULE_SETUP -#line 457 "program_lexer.l" +#line 418 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_X @@ -2340,7 +2287,7 @@ YY_RULE_SETUP YY_BREAK case 173: YY_RULE_SETUP -#line 463 "program_lexer.l" +#line 424 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_Y @@ -2350,7 +2297,7 @@ YY_RULE_SETUP YY_BREAK case 174: YY_RULE_SETUP -#line 469 "program_lexer.l" +#line 430 "program_lexer.l" { yylval->swiz_mask.swizzle = SWIZZLE_INVAL; yylval->swiz_mask.mask = WRITEMASK_ZW; @@ -2359,7 +2306,7 @@ YY_RULE_SETUP YY_BREAK case 175: YY_RULE_SETUP -#line 475 "program_lexer.l" +#line 436 "program_lexer.l" { const unsigned s = swiz_from_char(yytext[1]); yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2369,7 +2316,7 @@ YY_RULE_SETUP YY_BREAK case 176: YY_RULE_SETUP -#line 483 "program_lexer.l" +#line 444 "program_lexer.l" { if (require_ARB_vp) { return TEXGEN_R; @@ -2383,7 +2330,7 @@ YY_RULE_SETUP YY_BREAK case 177: YY_RULE_SETUP -#line 494 "program_lexer.l" +#line 455 "program_lexer.l" { yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]), swiz_from_char(yytext[2]), @@ -2395,13 +2342,13 @@ YY_RULE_SETUP YY_BREAK case 178: YY_RULE_SETUP -#line 503 "program_lexer.l" +#line 464 "program_lexer.l" { return DOT; } YY_BREAK case 179: /* rule 179 can match eol */ YY_RULE_SETUP -#line 505 "program_lexer.l" +#line 466 "program_lexer.l" { yylloc->first_line++; yylloc->first_column = 1; @@ -2412,7 +2359,7 @@ YY_RULE_SETUP YY_BREAK case 180: YY_RULE_SETUP -#line 512 "program_lexer.l" +#line 473 "program_lexer.l" /* eat whitespace */ ; YY_BREAK case 181: @@ -2420,20 +2367,20 @@ case 181: yyg->yy_c_buf_p = yy_cp -= 1; YY_DO_BEFORE_ACTION; /* set up yytext again */ YY_RULE_SETUP -#line 513 "program_lexer.l" +#line 474 "program_lexer.l" /* eat comments */ ; YY_BREAK case 182: YY_RULE_SETUP -#line 514 "program_lexer.l" +#line 475 "program_lexer.l" { return yytext[0]; } YY_BREAK case 183: YY_RULE_SETUP -#line 515 "program_lexer.l" +#line 476 "program_lexer.l" ECHO; YY_BREAK -#line 2437 "lex.yy.c" +#line 2384 "lex.yy.c" case YY_STATE_EOF(INITIAL): yyterminate(); @@ -3201,8 +3148,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) /** Setup the input buffer state to scan the given bytes. The next call to yylex() will * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. * @param yyscanner The scanner object. * @return the newly allocated buffer state object. */ @@ -3608,7 +3555,7 @@ void yyfree (void * ptr , yyscan_t yyscanner) #define YYTABLES_NAME "yytables" -#line 515 "program_lexer.l" +#line 476 "program_lexer.l" diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index 6c4fad3037..c2803ff707 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -40,7 +40,7 @@ if (condition) { \ return token; \ } else { \ - yylval->string = return_string(yyextra, yytext); \ + yylval->string = strdup(yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -63,7 +63,7 @@ yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \ return token; \ } else { \ - yylval->string = return_string(yyextra, yytext); \ + yylval->string = strdup(yytext); \ return IDENTIFIER; \ } \ } while (0) @@ -71,45 +71,6 @@ #define SWIZZLE_INVAL MAKE_SWIZZLE4(SWIZZLE_NIL, SWIZZLE_NIL, \ SWIZZLE_NIL, SWIZZLE_NIL) -/** - * Send a string to the parser using asm_parser_state::string_dumpster - * - * Sends a string to the parser using asm_parser_state::string_dumpster as a - * temporary storage buffer. Data previously stored in - * asm_parser_state::string_dumpster will be lost. If - * asm_parser_state::string_dumpster is not large enough to hold the new - * string, the buffer size will be increased. The buffer size is \b never - * decreased. - * - * \param state Assembler parser state tracking - * \param str String to be passed to the parser - * - * \return - * A pointer to asm_parser_state::string_dumpster on success or \c NULL on - * failure. Currently the only failure case is \c ENOMEM. - */ -static char * -return_string(struct asm_parser_state *state, const char *str) -{ - const size_t len = strlen(str); - - if (len >= state->dumpster_size) { - char *const dumpster = _mesa_realloc(state->string_dumpster, - state->dumpster_size, - len + 1); - if (dumpster == NULL) { - return NULL; - } - - state->string_dumpster = dumpster; - state->dumpster_size = len + 1; - } - - memcpy(state->string_dumpster, str, len + 1); - return state->string_dumpster; -} - - static unsigned mask_from_char(char c) { @@ -347,7 +308,7 @@ ARRAYSHADOW1D { return_token_or_IDENTIFIER(require_ARB_fp && require ARRAYSHADOW2D { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } [_a-zA-Z$][_a-zA-Z0-9$]* { - yylval->string = return_string(yyextra, yytext); + yylval->string = strdup(yytext); return IDENTIFIER; } diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 261b605a2d..c255e912ed 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -4565,7 +4565,7 @@ yyreduce: "undefined variable binding in ALIAS statement"); YYERROR; } else { - _mesa_symbol_table_add_symbol(state->st, 0, strdup((yyvsp[(2) - (4)].string)), target); + _mesa_symbol_table_add_symbol(state->st, 0, (yyvsp[(2) - (4)].string), target); } ;} break; @@ -4896,14 +4896,10 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t, if (exist != NULL) { yyerror(locp, state, "redeclared identifier"); } else { - const size_t name_len = strlen(name); - - s = calloc(1, sizeof(struct asm_symbol) + name_len + 1); - s->name = (char *)(s + 1); + s = calloc(1, sizeof(struct asm_symbol)); + s->name = name; s->type = t; - memcpy((char *) s->name, name, name_len + 1); - switch (t) { case at_temp: if (state->prog->NumTemporaries >= state->limits->MaxTemps) { @@ -5151,11 +5147,6 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, _mesa_memcpy (strz, str, len); strz[len] = '\0'; - if (state->prog->String != NULL) { - _mesa_free(state->prog->String); - state->prog->String = NULL; - } - state->prog->String = strz; state->st = _mesa_symbol_table_ctor(); @@ -5245,6 +5236,7 @@ error: for (sym = state->sym; sym != NULL; sym = temp) { temp = sym->next; + _mesa_free((void *) sym->name); _mesa_free(sym); } state->sym = NULL; @@ -5252,11 +5244,6 @@ error: _mesa_symbol_table_dtor(state->st); state->st = NULL; - if (state->string_dumpster != NULL) { - _mesa_free(state->string_dumpster); - state->dumpster_size = 0; - } - return result; } diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index a23625d3fb..c3152aa2f8 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -1919,7 +1919,7 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER "undefined variable binding in ALIAS statement"); YYERROR; } else { - _mesa_symbol_table_add_symbol(state->st, 0, strdup($2), target); + _mesa_symbol_table_add_symbol(state->st, 0, $2, target); } } ; @@ -2027,14 +2027,10 @@ declare_variable(struct asm_parser_state *state, char *name, enum asm_type t, if (exist != NULL) { yyerror(locp, state, "redeclared identifier"); } else { - const size_t name_len = strlen(name); - - s = calloc(1, sizeof(struct asm_symbol) + name_len + 1); - s->name = (char *)(s + 1); + s = calloc(1, sizeof(struct asm_symbol)); + s->name = name; s->type = t; - memcpy((char *) s->name, name, name_len + 1); - switch (t) { case at_temp: if (state->prog->NumTemporaries >= state->limits->MaxTemps) { @@ -2284,7 +2280,6 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, if (state->prog->String != NULL) { _mesa_free(state->prog->String); - state->prog->String = NULL; } state->prog->String = strz; @@ -2376,6 +2371,7 @@ error: for (sym = state->sym; sym != NULL; sym = temp) { temp = sym->next; + _mesa_free((void *) sym->name); _mesa_free(sym); } state->sym = NULL; @@ -2383,10 +2379,5 @@ error: _mesa_symbol_table_dtor(state->st); state->st = NULL; - if (state->string_dumpster != NULL) { - _mesa_free(state->string_dumpster); - state->dumpster_size = 0; - } - return result; } diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h index 8d8b4d89bc..fa47d84565 100644 --- a/src/mesa/shader/program_parser.h +++ b/src/mesa/shader/program_parser.h @@ -38,13 +38,6 @@ enum asm_type { at_output, }; -/** - * \note - * Objects of this type are allocated as the object plus the name of the - * symbol. That is, malloc(sizeof(struct asm_symbol) + strlen(name) + 1). - * Alternately, asm_symbol::name could be moved to the bottom of the structure - * and declared as 'char name[0];'. - */ struct asm_symbol { struct asm_symbol *next; /**< List linkage for freeing. */ const char *name; @@ -164,15 +157,6 @@ struct asm_parser_state { /*@}*/ - /** - * Buffer to hold strings transfered from the lexer to the parser - */ - /*@{*/ - char *string_dumpster; /**< String data transfered. */ - size_t dumpster_size; /**< Total size, in bytes, of the buffer. */ - /*@}*/ - - /** * Selected limits copied from gl_constants * -- cgit v1.2.3 From 301a9b7e28f7404b8f6d8c34649f0035b49a8249 Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 5 Nov 2009 14:15:56 -0800 Subject: ARB prog parser: Release strings returned from the lexer that don't need to be kept --- src/mesa/shader/program_parse.y | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index c3152aa2f8..b2db2958be 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -291,6 +291,8 @@ option: OPTION IDENTIFIER ';' } + free($2); + if (!valid) { const char *const err_str = (state->mode == ARB_vertex) ? "invalid ARB vertex program option" @@ -591,12 +593,17 @@ extSwizSel: INTEGER } | IDENTIFIER { + char s; + if (strlen($1) > 1) { yyerror(& @1, state, "invalid extended swizzle selector"); YYERROR; } - switch ($1[0]) { + s = $1[0]; + free($1); + + switch (s) { case 'x': $$.swz = SWIZZLE_X; $$.xyzw_valid = 1; @@ -644,6 +651,8 @@ srcReg: IDENTIFIER /* temporaryReg | progParamSingle */ struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); + free($1); + if (s == NULL) { yyerror(& @1, state, "invalid operand variable"); YYERROR; @@ -734,6 +743,8 @@ dstReg: resultBinding struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); + free($1); + if (s == NULL) { yyerror(& @1, state, "invalid operand variable"); YYERROR; @@ -765,6 +776,8 @@ progParamArray: IDENTIFIER struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); + free($1); + if (s == NULL) { yyerror(& @1, state, "invalid operand variable"); YYERROR; @@ -832,6 +845,8 @@ addrReg: IDENTIFIER struct asm_symbol *const s = (struct asm_symbol *) _mesa_symbol_table_find_symbol(state->st, 0, $1); + free($1); + if (s == NULL) { yyerror(& @1, state, "invalid array member"); YYERROR; @@ -894,6 +909,7 @@ ATTRIB_statement: ATTRIB IDENTIFIER '=' attribBinding declare_variable(state, $2, at_attrib, & @2); if (s == NULL) { + free($2); YYERROR; } else { s->attrib_binding = $4; @@ -1001,6 +1017,7 @@ PARAM_singleStmt: PARAM IDENTIFIER paramSingleInit declare_variable(state, $2, at_param, & @2); if (s == NULL) { + free($2); YYERROR; } else { s->param_binding_type = $3.param_binding_type; @@ -1014,6 +1031,7 @@ PARAM_singleStmt: PARAM IDENTIFIER paramSingleInit PARAM_multipleStmt: PARAM IDENTIFIER '[' optArraySize ']' paramMultipleInit { if (($4 != 0) && ((unsigned) $4 != $6.param_binding_length)) { + free($2); yyerror(& @4, state, "parameter array size and number of bindings must match"); YYERROR; @@ -1022,6 +1040,7 @@ PARAM_multipleStmt: PARAM IDENTIFIER '[' optArraySize ']' paramMultipleInit declare_variable(state, $2, $6.type, & @2); if (s == NULL) { + free($2); YYERROR; } else { s->param_binding_type = $6.param_binding_type; @@ -1717,12 +1736,14 @@ ADDRESS_statement: ADDRESS { $$ = $1; } varNameList varNameList: varNameList ',' IDENTIFIER { if (!declare_variable(state, $3, $0, & @3)) { + free($3); YYERROR; } } | IDENTIFIER { if (!declare_variable(state, $1, $0, & @1)) { + free($1); YYERROR; } } @@ -1734,6 +1755,7 @@ OUTPUT_statement: OUTPUT IDENTIFIER '=' resultBinding declare_variable(state, $2, at_output, & @2); if (s == NULL) { + free($2); YYERROR; } else { s->output_binding = $4; @@ -1911,10 +1933,14 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER _mesa_symbol_table_find_symbol(state->st, 0, $4); + free($4); + if (exist != NULL) { + free($2); yyerror(& @2, state, "redeclared identifier"); YYERROR; } else if (target == NULL) { + free($2); yyerror(& @4, state, "undefined variable binding in ALIAS statement"); YYERROR; -- cgit v1.2.3 From d8e256f9236d3e9dfd433c3a59718f0fdf1ca79a Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Thu, 5 Nov 2009 14:17:07 -0800 Subject: ARB prog parser: Release old program string in _mesa_parse_arb_{fragment,vertex}_program The program structure passed to _mesa_parse_arb_program is just a place holder. The stings that actually need to be released are only known to the functions calling _mesa_parse_arb_program, so they should be freed there. --- src/mesa/shader/arbprogparse.c | 6 ++++++ src/mesa/shader/program_parse.y | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/shader/arbprogparse.c b/src/mesa/shader/arbprogparse.c index 05ee4f563e..dd732b6666 100644 --- a/src/mesa/shader/arbprogparse.c +++ b/src/mesa/shader/arbprogparse.c @@ -87,6 +87,9 @@ _mesa_parse_arb_fragment_program(GLcontext* ctx, GLenum target, return; } + if (program->Base.String != NULL) + _mesa_free(program->Base.String); + /* Copy the relevant contents of the arb_program struct into the * fragment_program struct. */ @@ -178,6 +181,9 @@ _mesa_parse_arb_vertex_program(GLcontext *ctx, GLenum target, return; } + if (program->Base.String != NULL) + _mesa_free(program->Base.String); + /* Copy the relevant contents of the arb_program struct into the * vertex_program struct. */ diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index b2db2958be..aad5eeb7da 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -2304,10 +2304,6 @@ _mesa_parse_arb_program(GLcontext *ctx, GLenum target, const GLubyte *str, _mesa_memcpy (strz, str, len); strz[len] = '\0'; - if (state->prog->String != NULL) { - _mesa_free(state->prog->String); - } - state->prog->String = strz; state->st = _mesa_symbol_table_ctor(); -- cgit v1.2.3 From 5606dfb572bf4b89b4882265924705bacc8c182b Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Tue, 17 Nov 2009 16:10:24 -0800 Subject: Merge branch 'outputswritten64' Add a GLbitfield64 type and several macros to operate on 64-bit fields. The OutputsWritten field of gl_program is changed to use that type. This results in a fair amount of fallout in drivers that use programs. No changes are strictly necessary at this point as all bits used are below the 32-bit boundary. Fairly soon several bits will be added for clip distances written by a vertex shader. This will cause several bits used for varyings to be pushed above the 32-bit boundary. This will affect any drivers that support GLSL. At this point, only the i965 driver has been modified to support this eventuality. I did this as a "squash" merge. There were several places through the outputswritten64 branch where things were broken. I foresee this causing difficulties later for bisecting. The history is still available in the branch. Conflicts: src/mesa/drivers/dri/i965/brw_wm.h --- src/mesa/drivers/dri/i965/brw_clip.c | 2 +- src/mesa/drivers/dri/i965/brw_clip.h | 2 +- src/mesa/drivers/dri/i965/brw_context.h | 6 +----- src/mesa/drivers/dri/i965/brw_gs.h | 2 +- src/mesa/drivers/dri/i965/brw_sf.c | 6 +++--- src/mesa/drivers/dri/i965/brw_sf.h | 2 +- src/mesa/drivers/dri/i965/brw_sf_emit.c | 18 +++++++++--------- src/mesa/drivers/dri/i965/brw_util.c | 2 +- src/mesa/drivers/dri/i965/brw_util.h | 2 +- src/mesa/drivers/dri/i965/brw_vs.c | 2 +- src/mesa/drivers/dri/i965/brw_vs_emit.c | 8 ++++---- src/mesa/drivers/dri/i965/brw_wm.c | 4 ++-- src/mesa/drivers/dri/i965/brw_wm.h | 2 +- src/mesa/drivers/dri/i965/brw_wm_fp.c | 2 +- src/mesa/drivers/dri/i965/brw_wm_glsl.c | 2 +- src/mesa/drivers/dri/i965/brw_wm_pass2.c | 4 ++-- src/mesa/drivers/dri/i965/brw_wm_state.c | 2 +- src/mesa/drivers/dri/r200/r200_tcl.c | 15 ++++++++------- src/mesa/main/config.h | 2 +- src/mesa/main/context.c | 8 +++++--- src/mesa/main/ffvertex_prog.c | 2 +- src/mesa/main/mtypes.h | 27 ++++++++++++++++++++++++++- src/mesa/main/texenvprogram.c | 2 +- src/mesa/shader/prog_print.c | 6 +++--- src/mesa/shader/program_parse.tab.c | 2 +- src/mesa/shader/program_parse.y | 2 +- src/mesa/shader/programopt.c | 8 ++++---- src/mesa/shader/slang/slang_link.c | 25 +++++++++++++++---------- src/mesa/state_tracker/st_atom_shader.c | 2 +- src/mesa/state_tracker/st_program.c | 2 +- src/mesa/swrast/s_fragprog.c | 12 ++++++------ src/mesa/tnl/t_context.c | 2 +- src/mesa/tnl/t_vb_program.c | 8 ++++---- 33 files changed, 111 insertions(+), 82 deletions(-) (limited to 'src/mesa/shader/program_parse.y') diff --git a/src/mesa/drivers/dri/i965/brw_clip.c b/src/mesa/drivers/dri/i965/brw_clip.c index f45dcf8282..dbd10a5297 100644 --- a/src/mesa/drivers/dri/i965/brw_clip.c +++ b/src/mesa/drivers/dri/i965/brw_clip.c @@ -78,7 +78,7 @@ static void compile_clip_prog( struct brw_context *brw, delta = REG_SIZE; for (i = 0; i < VERT_RESULT_MAX; i++) - if (c.key.attrs & (1<= VERT_RESULT_TEX0 && i <= VERT_RESULT_TEX7) { @@ -147,7 +147,7 @@ static void upload_sf_prog(struct brw_context *brw) * edgeflag testing here, it is already done in the clip * program. */ - if (key.attrs & (1<key.attrs & (1<key.attrs & BITFIELD64_BIT(attr)) ? 1 : 0; } /*********************************************************************** @@ -122,8 +122,8 @@ static void do_twoside_color( struct brw_sf_compile *c ) * Flat shading */ -#define VERT_RESULT_COLOR_BITS ((1<nr_setup_regs - 1); - GLuint persp_mask; - GLuint linear_mask; + GLbitfield64 persp_mask; + GLbitfield64 linear_mask; if (c->key.do_flat_shading || c->key.linear_color) persp_mask = c->key.attrs & ~(FRAG_BIT_WPOS | @@ -331,10 +331,10 @@ static GLboolean calculate_masks( struct brw_sf_compile *c, *pc_linear = 0; *pc = 0xf; - if (persp_mask & (1 << c->idx_to_attr[reg*2])) + if (persp_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2])) *pc_persp = 0xf; - if (linear_mask & (1 << c->idx_to_attr[reg*2])) + if (linear_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2])) *pc_linear = 0xf; /* Maybe only processs one attribute on the final round: @@ -342,10 +342,10 @@ static GLboolean calculate_masks( struct brw_sf_compile *c, if (reg*2+1 < c->nr_setup_attrs) { *pc |= 0xf0; - if (persp_mask & (1 << c->idx_to_attr[reg*2+1])) + if (persp_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2+1])) *pc_persp |= 0xf0; - if (linear_mask & (1 << c->idx_to_attr[reg*2+1])) + if (linear_mask & BITFIELD64_BIT(c->idx_to_attr[reg*2+1])) *pc_linear |= 0xf0; } diff --git a/src/mesa/drivers/dri/i965/brw_util.c b/src/mesa/drivers/dri/i965/brw_util.c index ce21aa4869..bba9249d1b 100644 --- a/src/mesa/drivers/dri/i965/brw_util.c +++ b/src/mesa/drivers/dri/i965/brw_util.c @@ -35,7 +35,7 @@ #include "brw_util.h" #include "brw_defines.h" -GLuint brw_count_bits( GLuint val ) +GLuint brw_count_bits(uint64_t val) { GLuint i; for (i = 0; val ; val >>= 1) diff --git a/src/mesa/drivers/dri/i965/brw_util.h b/src/mesa/drivers/dri/i965/brw_util.h index 33e7cd87e4..04f3175d3e 100644 --- a/src/mesa/drivers/dri/i965/brw_util.h +++ b/src/mesa/drivers/dri/i965/brw_util.h @@ -35,7 +35,7 @@ #include "main/mtypes.h" -extern GLuint brw_count_bits( GLuint val ); +extern GLuint brw_count_bits(uint64_t val); extern GLuint brw_parameter_list_state_flags(struct gl_program_parameter_list *paramList); extern GLuint brw_translate_blend_factor( GLenum factor ); extern GLuint brw_translate_blend_equation( GLenum mode ); diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index f0c79efbd9..fd055e225e 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -56,7 +56,7 @@ static void do_vs_prog( struct brw_context *brw, c.prog_data.inputs_read = vp->program.Base.InputsRead; if (c.key.copy_edgeflag) { - c.prog_data.outputs_written |= 1<prog_data.outputs_written & (1 << i)) { + if (c->prog_data.outputs_written & BITFIELD64_BIT(i)) { c->nr_outputs++; assert(i < Elements(c->regs[PROGRAM_OUTPUT])); if (i == VERT_RESULT_HPOS) { @@ -1124,7 +1124,7 @@ static void emit_vertex_write( struct brw_vs_compile *c) /* Update the header for point size, user clipping flags, and -ve rhw * workaround. */ - if ((c->prog_data.outputs_written & (1<prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) || c->key.nr_userclip || BRW_IS_965(p->brw)) { struct brw_reg header1 = retype(get_tmp(c), BRW_REGISTER_TYPE_UD); @@ -1134,7 +1134,7 @@ static void emit_vertex_write( struct brw_vs_compile *c) brw_set_access_mode(p, BRW_ALIGN_16); - if (c->prog_data.outputs_written & (1<prog_data.outputs_written & BITFIELD64_BIT(VERT_RESULT_PSIZ)) { struct brw_reg psiz = c->regs[PROGRAM_OUTPUT][VERT_RESULT_PSIZ]; brw_MUL(p, brw_writemask(header1, WRITEMASK_W), brw_swizzle1(psiz, 0), brw_imm_f(1<<11)); brw_AND(p, brw_writemask(header1, WRITEMASK_W), header1, brw_imm_ud(0x7ff<<8)); @@ -1224,7 +1224,7 @@ static void emit_vertex_write( struct brw_vs_compile *c) */ GLuint i, mrf = 0; for (i = c->first_overflow_output; i < VERT_RESULT_MAX; i++) { - if (c->prog_data.outputs_written & (1 << i)) { + if (c->prog_data.outputs_written & BITFIELD64_BIT(i)) { /* move from GRF to MRF */ brw_MOV(p, brw_message_reg(4+mrf), c->regs[PROGRAM_OUTPUT][i]); mrf++; diff --git a/src/mesa/drivers/dri/i965/brw_wm.c b/src/mesa/drivers/dri/i965/brw_wm.c index d8971321f3..77e3b2c32a 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.c +++ b/src/mesa/drivers/dri/i965/brw_wm.c @@ -231,7 +231,7 @@ static void brw_wm_populate_key( struct brw_context *brw, ctx->Color.AlphaEnabled) lookup |= IZ_PS_KILL_ALPHATEST_BIT; - if (fp->program.Base.OutputsWritten & (1<program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) lookup |= IZ_PS_COMPUTES_DEPTH_BIT; /* _NEW_DEPTH */ @@ -347,7 +347,7 @@ static void brw_wm_populate_key( struct brw_context *brw, key->nr_color_regions = brw->state.nr_color_regions; /* CACHE_NEW_VS_PROG */ - key->vp_outputs_written = brw->vs.prog_data->outputs_written & DO_SETUP_BITS; + key->vp_outputs_written = brw->vs.prog_data->outputs_written; /* The unique fragment program ID */ key->program_string_id = fp->id; diff --git a/src/mesa/drivers/dri/i965/brw_wm.h b/src/mesa/drivers/dri/i965/brw_wm.h index b3c05eb0ad..9dcb6e14bb 100644 --- a/src/mesa/drivers/dri/i965/brw_wm.h +++ b/src/mesa/drivers/dri/i965/brw_wm.h @@ -79,7 +79,7 @@ struct brw_wm_prog_key { GLuint program_string_id:32; GLushort origin_x, origin_y; GLushort drawable_height; - GLuint vp_outputs_written; + GLbitfield64 vp_outputs_written; }; diff --git a/src/mesa/drivers/dri/i965/brw_wm_fp.c b/src/mesa/drivers/dri/i965/brw_wm_fp.c index 1c4f62ba48..7d03179588 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_fp.c +++ b/src/mesa/drivers/dri/i965/brw_wm_fp.c @@ -986,7 +986,7 @@ static void emit_render_target_writes( struct brw_wm_compile *c ) } else { /* if gl_FragData[0] is written, use it, else use gl_FragColor */ - if (c->fp->program.Base.OutputsWritten & (1 << FRAG_RESULT_DATA0)) + if (c->fp->program.Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DATA0)) outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_DATA0); else outcolor = src_reg(PROGRAM_OUTPUT, FRAG_RESULT_COLOR); diff --git a/src/mesa/drivers/dri/i965/brw_wm_glsl.c b/src/mesa/drivers/dri/i965/brw_wm_glsl.c index 3ab446164c..e8c2cb66ec 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_glsl.c +++ b/src/mesa/drivers/dri/i965/brw_wm_glsl.c @@ -371,7 +371,7 @@ static void prealloc_reg(struct brw_wm_compile *c) for (j = 0; j < 4; j++) set_reg(c, PROGRAM_PAYLOAD, fp_input, j, reg); } - if (c->key.vp_outputs_written & (1 << i)) { + if (c->key.vp_outputs_written & BITFIELD64_BIT(i)) { reg_index += 2; } } diff --git a/src/mesa/drivers/dri/i965/brw_wm_pass2.c b/src/mesa/drivers/dri/i965/brw_wm_pass2.c index 6faea018fb..31303febf0 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_pass2.c +++ b/src/mesa/drivers/dri/i965/brw_wm_pass2.c @@ -82,8 +82,8 @@ static void init_registers( struct brw_wm_compile *c ) for (j = 0; j < c->nr_creg; j++) prealloc_reg(c, &c->creg[j], i++); - for (j = 0; j < FRAG_ATTRIB_MAX; j++) { - if (c->key.vp_outputs_written & (1<key.vp_outputs_written & BITFIELD64_BIT(j)) { int fp_index; if (j >= VERT_RESULT_VAR0) diff --git a/src/mesa/drivers/dri/i965/brw_wm_state.c b/src/mesa/drivers/dri/i965/brw_wm_state.c index 361f91292b..f89ed9bce7 100644 --- a/src/mesa/drivers/dri/i965/brw_wm_state.c +++ b/src/mesa/drivers/dri/i965/brw_wm_state.c @@ -106,7 +106,7 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key) /* as far as we can tell */ key->computes_depth = - (fp->Base.OutputsWritten & (1 << FRAG_RESULT_DEPTH)) != 0; + (fp->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) != 0; /* BRW_NEW_DEPTH_BUFFER * Override for NULL depthbuffer case, required by the Pixel Shader Computed * Depth field. diff --git a/src/mesa/drivers/dri/r200/r200_tcl.c b/src/mesa/drivers/dri/r200/r200_tcl.c index c702910ef2..e7d48a7f29 100644 --- a/src/mesa/drivers/dri/r200/r200_tcl.c +++ b/src/mesa/drivers/dri/r200/r200_tcl.c @@ -509,25 +509,26 @@ static GLboolean r200_run_tcl_render( GLcontext *ctx, prog to a not enabled output however, so just don't mess with it. We only need to change compsel. */ GLuint out_compsel = 0; - GLuint vp_out = rmesa->curr_vp_hw->mesa_program.Base.OutputsWritten; + const GLbitfield64 vp_out = + rmesa->curr_vp_hw->mesa_program.Base.OutputsWritten; vimap_rev = &rmesa->curr_vp_hw->inputmap_rev[0]; - assert(vp_out & (1 << VERT_RESULT_HPOS)); + assert(vp_out & BITFIELD64_BIT(VERT_RESULT_HPOS)); out_compsel = R200_OUTPUT_XYZW; - if (vp_out & (1 << VERT_RESULT_COL0)) { + if (vp_out & BITFIELD64_BIT(VERT_RESULT_COL0)) { out_compsel |= R200_OUTPUT_COLOR_0; } - if (vp_out & (1 << VERT_RESULT_COL1)) { + if (vp_out & BITFIELD64_BIT(VERT_RESULT_COL1)) { out_compsel |= R200_OUTPUT_COLOR_1; } - if (vp_out & (1 << VERT_RESULT_FOGC)) { + if (vp_out & BITFIELD64_BIT(VERT_RESULT_FOGC)) { out_compsel |= R200_OUTPUT_DISCRETE_FOG; } - if (vp_out & (1 << VERT_RESULT_PSIZ)) { + if (vp_out & BITFIELD64_BIT(VERT_RESULT_PSIZ)) { out_compsel |= R200_OUTPUT_PT_SIZE; } for (i = VERT_RESULT_TEX0; i < VERT_RESULT_TEX6; i++) { - if (vp_out & (1 << i)) { + if (vp_out & BITFIELD64_BIT(i)) { out_compsel |= R200_OUTPUT_TEX_0 << (i - VERT_RESULT_TEX0); } } diff --git a/src/mesa/main/config.h b/src/mesa/main/config.h index 8a09efdb53..c5048970cc 100644 --- a/src/mesa/main/config.h +++ b/src/mesa/main/config.h @@ -205,7 +205,7 @@ #define MAX_VARYING 16 /**< number of float[4] vectors */ #define MAX_SAMPLERS MAX_TEXTURE_IMAGE_UNITS #define MAX_PROGRAM_INPUTS 32 -#define MAX_PROGRAM_OUTPUTS 32 +#define MAX_PROGRAM_OUTPUTS 64 /*@}*/ /** For GL_ARB_vertex_program */ diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index 101d3c6b67..b5bf46718f 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -601,9 +601,11 @@ _mesa_init_constants(GLcontext *ctx) ASSERT(MAX_NV_VERTEX_PROGRAM_INPUTS <= VERT_ATTRIB_MAX); ASSERT(MAX_NV_VERTEX_PROGRAM_OUTPUTS <= VERT_RESULT_MAX); - /* check that we don't exceed various 32-bit bitfields */ - ASSERT(VERT_RESULT_MAX <= 32); - ASSERT(FRAG_ATTRIB_MAX <= 32); + /* check that we don't exceed the size of various bitfields */ + ASSERT(VERT_RESULT_MAX <= + (8 * sizeof(ctx->VertexProgram._Current->Base.OutputsWritten))); + ASSERT(FRAG_ATTRIB_MAX <= + (8 * sizeof(ctx->FragmentProgram._Current->Base.InputsRead))); } diff --git a/src/mesa/main/ffvertex_prog.c b/src/mesa/main/ffvertex_prog.c index 356476e35a..fe2416d894 100644 --- a/src/mesa/main/ffvertex_prog.c +++ b/src/mesa/main/ffvertex_prog.c @@ -438,7 +438,7 @@ static struct ureg register_input( struct tnl_program *p, GLuint input ) */ static struct ureg register_output( struct tnl_program *p, GLuint output ) { - p->program->Base.OutputsWritten |= (1<program->Base.OutputsWritten |= BITFIELD64_BIT(output); return make_ureg(PROGRAM_OUTPUT, output); } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index 34c51b5442..881d233ca3 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -78,6 +78,31 @@ #endif +/** + * \name 64-bit extension of GLbitfield. + */ +/*@{*/ +typedef GLuint64 GLbitfield64; + +#define BITFIELD64_ONE 1ULL +#define BITFIELD64_ALLONES ~0ULL + +/** Set a single bit */ +#define BITFIELD64_BIT(b) (BITFIELD64_ONE << (b)) + +/** Set a mask of the least significant \c b bits */ +#define BITFIELD64_MASK(b) (((b) >= 64) ? BITFIELD64_ALLONES : \ + (BITFIELD64_BIT(b) - 1)) + +/** + * Set all bits from l (low bit) to h (high bit), inclusive. + * + * \note \C BITFIELD_64_RANGE(0, 63) return 64 set bits. + */ +#define BITFIELD64_RANGE(l, h) (BITFIELD64_MASK((h) + 1) & ~BITFIELD64_MASK(l)) +/*@}*/ + + /** * \name Some forward type declarations */ @@ -1670,7 +1695,7 @@ struct gl_program struct prog_instruction *Instructions; GLbitfield InputsRead; /**< Bitmask of which input regs are read */ - GLbitfield OutputsWritten; /**< Bitmask of which output regs are written to */ + GLbitfield64 OutputsWritten; /**< Bitmask of which output regs are written */ GLbitfield InputFlags[MAX_PROGRAM_INPUTS]; /**< PROG_PARAM_BIT_x flags */ GLbitfield OutputFlags[MAX_PROGRAM_OUTPUTS]; /**< PROG_PARAM_BIT_x flags */ GLbitfield TexturesUsed[MAX_TEXTURE_UNITS]; /**< TEXTURE_x_BIT bitmask */ diff --git a/src/mesa/main/texenvprogram.c b/src/mesa/main/texenvprogram.c index d7e77e759e..f439d4addb 100644 --- a/src/mesa/main/texenvprogram.c +++ b/src/mesa/main/texenvprogram.c @@ -367,7 +367,7 @@ static GLbitfield get_fp_input_mask( GLcontext *ctx ) else { /* calculate from vp->outputs */ struct gl_vertex_program *vprog; - GLbitfield vp_outputs; + GLbitfield64 vp_outputs; /* Choose GLSL vertex shader over ARB vertex program. Need this * since vertex shader state validation comes after fragment state diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index ba4d39452f..52c102cbaa 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -826,11 +826,11 @@ _mesa_print_program(const struct gl_program *prog) * XXX move to imports.[ch] if useful elsewhere. */ static const char * -binary(GLbitfield val) +binary(GLbitfield64 val) { - static char buf[50]; + static char buf[80]; GLint i, len = 0; - for (i = 31; i >= 0; --i) { + for (i = 63; i >= 0; --i) { if (val & (1 << i)) buf[len++] = '1'; else if (len > 0 || i == 0) diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index b9ef88b64b..d4f8429488 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -2622,7 +2622,7 @@ yyreduce: YYERROR; } - state->prog->OutputsWritten |= (1U << (yyval.dst_reg).Index); + state->prog->OutputsWritten |= BITFIELD64_BIT((yyval.dst_reg).Index); } ;} break; diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index d07bf85b36..8ca6f9805b 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -643,7 +643,7 @@ maskedDstReg: dstReg optionalMask optionalCcMask YYERROR; } - state->prog->OutputsWritten |= (1U << $$.Index); + state->prog->OutputsWritten |= BITFIELD64_BIT($$.Index); } } ; diff --git a/src/mesa/shader/programopt.c b/src/mesa/shader/programopt.c index 3b8529592d..a0daac1b80 100644 --- a/src/mesa/shader/programopt.c +++ b/src/mesa/shader/programopt.c @@ -109,7 +109,7 @@ _mesa_insert_mvp_dp4_code(GLcontext *ctx, struct gl_vertex_program *vprog) vprog->Base.Instructions = newInst; vprog->Base.NumInstructions = newLen; vprog->Base.InputsRead |= VERT_BIT_POS; - vprog->Base.OutputsWritten |= (1 << VERT_RESULT_HPOS); + vprog->Base.OutputsWritten |= BITFIELD64_BIT(VERT_RESULT_HPOS); } @@ -211,7 +211,7 @@ _mesa_insert_mvp_mad_code(GLcontext *ctx, struct gl_vertex_program *vprog) vprog->Base.Instructions = newInst; vprog->Base.NumInstructions = newLen; vprog->Base.InputsRead |= VERT_BIT_POS; - vprog->Base.OutputsWritten |= (1 << VERT_RESULT_HPOS); + vprog->Base.OutputsWritten |= BITFIELD64_BIT(VERT_RESULT_HPOS); } @@ -613,7 +613,7 @@ _mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog) prog->Base.Instructions = inst; prog->Base.NumInstructions = 2; prog->Base.InputsRead = 1 << inputAttr; - prog->Base.OutputsWritten = 1 << FRAG_RESULT_COLOR; + prog->Base.OutputsWritten = BITFIELD64_BIT(FRAG_RESULT_COLOR); } @@ -657,7 +657,7 @@ _mesa_nop_vertex_program(GLcontext *ctx, struct gl_vertex_program *prog) prog->Base.Instructions = inst; prog->Base.NumInstructions = 2; prog->Base.InputsRead = 1 << inputAttr; - prog->Base.OutputsWritten = 1 << VERT_RESULT_COL0; + prog->Base.OutputsWritten = BITFIELD64_BIT(VERT_RESULT_COL0); /* * Now insert code to do standard modelview/projection transformation. diff --git a/src/mesa/shader/slang/slang_link.c b/src/mesa/shader/slang/slang_link.c index 144c126525..0a2bc49780 100644 --- a/src/mesa/shader/slang/slang_link.c +++ b/src/mesa/shader/slang/slang_link.c @@ -515,7 +515,7 @@ _slang_update_inputs_outputs(struct gl_program *prog) } if (inst->DstReg.File == PROGRAM_OUTPUT) { - prog->OutputsWritten |= 1 << inst->DstReg.Index; + prog->OutputsWritten |= BITFIELD64_BIT(inst->DstReg.Index); if (inst->DstReg.RelAddr) { /* If the output attribute is indexed with relative addressing * we know that it must be a varying or texcoord such as @@ -528,14 +528,17 @@ _slang_update_inputs_outputs(struct gl_program *prog) if (prog->Target == GL_VERTEX_PROGRAM_ARB) { if (inst->DstReg.Index == VERT_RESULT_TEX0) { /* mark all texcoord outputs as written */ - const GLbitfield mask = - ((1 << MAX_TEXTURE_COORD_UNITS) - 1) << VERT_RESULT_TEX0; + const GLbitfield64 mask = + BITFIELD64_RANGE(VERT_RESULT_TEX0, + (VERT_RESULT_TEX0 + + MAX_TEXTURE_COORD_UNITS - 1)); prog->OutputsWritten |= mask; } else if (inst->DstReg.Index == VERT_RESULT_VAR0) { /* mark all generic varying outputs as written */ - const GLbitfield mask = - ((1 << MAX_VARYING) - 1) << VERT_RESULT_VAR0; + const GLbitfield64 mask = + BITFIELD64_RANGE(VERT_RESULT_VAR0, + (VERT_RESULT_VAR0 + MAX_VARYING - 1)); prog->OutputsWritten |= mask; } } @@ -807,7 +810,8 @@ _slang_link(GLcontext *ctx, if (shProg->VertexProgram) { _slang_update_inputs_outputs(&shProg->VertexProgram->Base); _slang_count_temporaries(&shProg->VertexProgram->Base); - if (!(shProg->VertexProgram->Base.OutputsWritten & (1 << VERT_RESULT_HPOS))) { + if (!(shProg->VertexProgram->Base.OutputsWritten + & BITFIELD64_BIT(VERT_RESULT_HPOS))) { /* the vertex program did not compute a vertex position */ link_error(shProg, "gl_Position was not written by vertex shader\n"); @@ -825,7 +829,7 @@ _slang_link(GLcontext *ctx, if (shProg->FragmentProgram) { const GLbitfield varyingRead = shProg->FragmentProgram->Base.InputsRead >> FRAG_ATTRIB_VAR0; - const GLbitfield varyingWritten = shProg->VertexProgram ? + const GLbitfield64 varyingWritten = shProg->VertexProgram ? shProg->VertexProgram->Base.OutputsWritten >> VERT_RESULT_VAR0 : 0x0; if ((varyingRead & varyingWritten) != varyingRead) { link_error(shProg, @@ -836,9 +840,10 @@ _slang_link(GLcontext *ctx, /* check that gl_FragColor and gl_FragData are not both written to */ if (shProg->FragmentProgram) { - GLbitfield outputsWritten = shProg->FragmentProgram->Base.OutputsWritten; - if ((outputsWritten & ((1 << FRAG_RESULT_COLOR))) && - (outputsWritten >= (1 << FRAG_RESULT_DATA0))) { + const GLbitfield64 outputsWritten = + shProg->FragmentProgram->Base.OutputsWritten; + if ((outputsWritten & BITFIELD64_BIT(FRAG_RESULT_COLOR)) && + (outputsWritten >= BITFIELD64_BIT(FRAG_RESULT_DATA0))) { link_error(shProg, "Fragment program cannot write both gl_FragColor" " and gl_FragData[].\n"); return; diff --git a/src/mesa/state_tracker/st_atom_shader.c b/src/mesa/state_tracker/st_atom_shader.c index ee649be885..6e311e537e 100644 --- a/src/mesa/state_tracker/st_atom_shader.c +++ b/src/mesa/state_tracker/st_atom_shader.c @@ -176,7 +176,7 @@ find_translated_vp(struct st_context *st, /* See if we need to translate vertex program to TGSI form */ if (xvp->serialNo != stvp->serialNo) { GLuint outAttr; - const GLbitfield outputsWritten = stvp->Base.Base.OutputsWritten; + const GLbitfield64 outputsWritten = stvp->Base.Base.OutputsWritten; GLuint numVpOuts = 0; GLboolean emitPntSize = GL_FALSE, emitBFC0 = GL_FALSE, emitBFC1 = GL_FALSE; GLbitfield usedGenerics = 0x0; diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 6d02722c13..190b6a5526 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -469,7 +469,7 @@ st_translate_fragment_program(struct st_context *st, */ { uint numColors = 0; - GLbitfield outputsWritten = stfp->Base.Base.OutputsWritten; + GLbitfield64 outputsWritten = stfp->Base.Base.OutputsWritten; /* if z is written, emit that first */ if (outputsWritten & (1 << FRAG_RESULT_DEPTH)) { diff --git a/src/mesa/swrast/s_fragprog.c b/src/mesa/swrast/s_fragprog.c index 77a77f0bcb..a22d34415d 100644 --- a/src/mesa/swrast/s_fragprog.c +++ b/src/mesa/swrast/s_fragprog.c @@ -190,7 +190,7 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) { SWcontext *swrast = SWRAST_CONTEXT(ctx); const struct gl_fragment_program *program = ctx->FragmentProgram._Current; - const GLbitfield outputsWritten = program->Base.OutputsWritten; + const GLbitfield64 outputsWritten = program->Base.OutputsWritten; struct gl_program_machine *machine = &swrast->FragProgMachine; GLuint i; @@ -201,7 +201,7 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) if (_mesa_execute_program(ctx, &program->Base, machine)) { /* Store result color */ - if (outputsWritten & (1 << FRAG_RESULT_COLOR)) { + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_COLOR)) { COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0][i], machine->Outputs[FRAG_RESULT_COLOR]); } @@ -212,7 +212,7 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) */ GLuint buf; for (buf = 0; buf < ctx->DrawBuffer->_NumColorDrawBuffers; buf++) { - if (outputsWritten & (1 << (FRAG_RESULT_DATA0 + buf))) { + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DATA0 + buf)) { COPY_4V(span->array->attribs[FRAG_ATTRIB_COL0 + buf][i], machine->Outputs[FRAG_RESULT_DATA0 + buf]); } @@ -220,7 +220,7 @@ run_program(GLcontext *ctx, SWspan *span, GLuint start, GLuint end) } /* Store result depth/z */ - if (outputsWritten & (1 << FRAG_RESULT_DEPTH)) { + if (outputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { const GLfloat depth = machine->Outputs[FRAG_RESULT_DEPTH][2]; if (depth <= 0.0) span->array->z[i] = 0; @@ -256,12 +256,12 @@ _swrast_exec_fragment_program( GLcontext *ctx, SWspan *span ) run_program(ctx, span, 0, span->end); - if (program->Base.OutputsWritten & (1 << FRAG_RESULT_COLOR)) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_COLOR)) { span->interpMask &= ~SPAN_RGBA; span->arrayMask |= SPAN_RGBA; } - if (program->Base.OutputsWritten & (1 << FRAG_RESULT_DEPTH)) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(FRAG_RESULT_DEPTH)) { span->interpMask &= ~SPAN_Z; span->arrayMask |= SPAN_Z; } diff --git a/src/mesa/tnl/t_context.c b/src/mesa/tnl/t_context.c index f2771cde09..db21b4589d 100644 --- a/src/mesa/tnl/t_context.c +++ b/src/mesa/tnl/t_context.c @@ -171,7 +171,7 @@ _tnl_InvalidateState( GLcontext *ctx, GLuint new_state ) if (vp) { GLuint i; for (i = 0; i < MAX_VARYING; i++) { - if (vp->Base.OutputsWritten & (1 << (VERT_RESULT_VAR0 + i))) { + if (vp->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) { RENDERINPUTS_SET(tnl->render_inputs_bitset, _TNL_ATTRIB_GENERIC(i)); } diff --git a/src/mesa/tnl/t_vb_program.c b/src/mesa/tnl/t_vb_program.c index c10a27614f..e69f7d5766 100644 --- a/src/mesa/tnl/t_vb_program.c +++ b/src/mesa/tnl/t_vb_program.c @@ -329,7 +329,7 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage ) /* make list of outputs to save some time below */ numOutputs = 0; for (i = 0; i < VERT_RESULT_MAX; i++) { - if (program->Base.OutputsWritten & (1 << i)) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(i)) { outputs[numOutputs++] = i; } } @@ -407,14 +407,14 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage ) /* Fixup fog and point size results if needed */ if (program->IsNVProgram) { if (ctx->Fog.Enabled && - (program->Base.OutputsWritten & (1 << VERT_RESULT_FOGC)) == 0) { + (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_FOGC)) == 0) { for (i = 0; i < VB->Count; i++) { store->results[VERT_RESULT_FOGC].data[i][0] = 1.0; } } if (ctx->VertexProgram.PointSizeEnabled && - (program->Base.OutputsWritten & (1 << VERT_RESULT_PSIZ)) == 0) { + (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_PSIZ)) == 0) { for (i = 0; i < VB->Count; i++) { store->results[VERT_RESULT_PSIZ].data[i][0] = ctx->Point.Size; } @@ -472,7 +472,7 @@ run_vp( GLcontext *ctx, struct tnl_pipeline_stage *stage ) } for (i = 0; i < ctx->Const.MaxVarying; i++) { - if (program->Base.OutputsWritten & (1 << (VERT_RESULT_VAR0 + i))) { + if (program->Base.OutputsWritten & BITFIELD64_BIT(VERT_RESULT_VAR0 + i)) { /* Note: varying results get put into the generic attributes */ VB->AttribPtr[VERT_ATTRIB_GENERIC0+i] = &store->results[VERT_RESULT_VAR0 + i]; -- cgit v1.2.3