summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Romanick <ian.d.romanick@intel.com>2009-09-10 15:04:24 -0700
committerIan Romanick <ian.d.romanick@intel.com>2009-09-10 15:04:24 -0700
commit81722c5d7e8e93d837510b9e6e5d014ec64cf4b3 (patch)
tree354cdf68d823182ce0c313c13b58ac3964eb2db6
parentcdb719399438194c5e9d5bc1bae3458398fe4e54 (diff)
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'.
-rw-r--r--src/mesa/shader/program_parse.tab.c1895
-rw-r--r--src/mesa/shader/program_parse.y102
-rw-r--r--src/mesa/shader/program_parse_extra.c54
-rw-r--r--src/mesa/shader/program_parser.h13
4 files changed, 1183 insertions, 881 deletions
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;
@@ -2310,6 +2325,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) {
const GLbitfield tex_mask = (1U << (yyvsp[(10) - (12)].integer));
@@ -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 <sym> addrReg
%type <swiz_mask> addrComponent addrWriteMask
+%type <dst_reg> ccMaskRule ccTest ccMaskRule2 ccTest2 optionalCcMask
+
%type <result> resultBinding resultColBinding
%type <integer> optFaceType optColorType
%type <integer> 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
@@ -95,6 +95,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)
{
if (strcmp(option, "ARB_position_invariant") == 0) {
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);
+
/*@}*/