diff options
Diffstat (limited to 'src/mesa/shader')
| -rw-r--r-- | src/mesa/shader/lex.yy.c | 1740 | ||||
| -rw-r--r-- | src/mesa/shader/prog_instruction.h | 1 | ||||
| -rw-r--r-- | src/mesa/shader/prog_print.c | 7 | ||||
| -rw-r--r-- | src/mesa/shader/program.c | 7 | ||||
| -rw-r--r-- | src/mesa/shader/program_lexer.l | 157 | ||||
| -rw-r--r-- | src/mesa/shader/program_parse.tab.c | 3226 | ||||
| -rw-r--r-- | src/mesa/shader/program_parse.tab.h | 321 | ||||
| -rw-r--r-- | src/mesa/shader/program_parse.y | 400 | ||||
| -rw-r--r-- | src/mesa/shader/program_parse_extra.c | 126 | ||||
| -rw-r--r-- | src/mesa/shader/program_parser.h | 28 | ||||
| -rw-r--r-- | src/mesa/shader/programopt.c | 91 | ||||
| -rw-r--r-- | src/mesa/shader/programopt.h | 7 | ||||
| -rw-r--r-- | src/mesa/shader/shader_api.c | 63 | ||||
| -rw-r--r-- | src/mesa/shader/slang/slang_compile.c | 10 | 
14 files changed, 3462 insertions, 2722 deletions
| diff --git a/src/mesa/shader/lex.yy.c b/src/mesa/shader/lex.yy.c index 728c2dc272..5e605274aa 100644 --- a/src/mesa/shader/lex.yy.c +++ b/src/mesa/shader/lex.yy.c @@ -53,6 +53,7 @@ typedef int flex_int32_t;  typedef unsigned char flex_uint8_t;   typedef unsigned short int flex_uint16_t;  typedef unsigned int flex_uint32_t; +#endif /* ! C99 */  /* Limits of integral types. */  #ifndef INT8_MIN @@ -83,8 +84,6 @@ typedef unsigned int flex_uint32_t;  #define UINT32_MAX             (4294967295U)  #endif -#endif /* ! C99 */ -  #endif /* ! FLEXINT_H */  #ifdef __cplusplus @@ -158,15 +157,7 @@ typedef void* yyscan_t;  /* Size of default input buffer. */  #ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else  #define YY_BUF_SIZE 16384 -#endif /* __ia64__ */  #endif  /* The state buf must be large enough to hold one state per character in the main buffer. @@ -357,8 +348,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );  	*yy_cp = '\0'; \  	yyg->yy_c_buf_p = yy_cp; -#define YY_NUM_RULES 183 -#define YY_END_OF_BUFFER 184 +#define YY_NUM_RULES 170 +#define YY_END_OF_BUFFER 171  /* This struct is not used in this scanner,     but its presence is necessary. */  struct yy_trans_info @@ -366,82 +357,101 @@ struct yy_trans_info  	flex_int32_t yy_verify;  	flex_int32_t yy_nxt;  	}; -static yyconst flex_int16_t yy_accept[675] = +static yyconst flex_int16_t yy_accept[850] =      {   0, -        0,    0,  184,  182,  180,  179,  182,  182,  152,  178, -      154,  154,  154,  154,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  180,    0,    0,  181,  152,    0, -      153,  155,  175,  175,    0,    0,    0,    0,  175,    0, -        0,    0,    0,    0,    0,    0,  132,  176,  133,  134, -      166,  166,  166,  166,    0,  154,    0,  140,  141,  142, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, +        0,    0,  171,  169,  167,  166,  169,  169,  139,  165, +      141,  141,  141,  141,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  167,    0,    0,  168,  139, +        0,  140,  142,  162,  162,    0,    0,    0,    0,  162, +        0,    0,    0,    0,    0,    0,    0,  119,  163,  120, +      121,  153,  153,  153,  153,    0,  141,    0,  127,  128, +      129,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,    0,    0,    0,    0, -        0,    0,    0,    0,    0,  174,    0,    0,    0,    0, -        0,    0,    0,    0,    0,  173,  173,    0,    0,    0, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,    0,    0,    0,    0, +        0,    0,    0,    0,    0,  161,    0,    0,    0,    0, +        0,    0,    0,    0,    0,  160,  160,    0,    0,    0,          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, -      172,  172,  172,    0,    0,    0,    0,    0,    0,    0, -        0,    0,    0,  163,  163,  163,  164,  164,  165,  156, -      155,  156,    0,  157,   11,   13,  152,   15,  152,  152, -       16,   18,  152,   20,   22,   24,   26,    6,   28,   30, -       31,   33,   35,   38,   36,   40,   41,   43,   45,   47, +      159,  159,  159,    0,    0,    0,    0,    0,    0,    0, +        0,    0,    0,  150,  150,  150,  151,  151,  152,  143, +      142,  143,    0,  144,   11,   12,  139,   13,  139,  139, +       14,   15,  139,   16,   17,   18,   19,   20,   21,    6, + +       22,   23,   24,   25,   26,   28,   27,   29,   30,   31, +       32,   33,   34,   35,  139,  139,  139,  139,  139,   40, +       41,  139,   42,   43,   44,   45,   46,   47,   48,  139, +       49,   50,   51,   52,   53,   54,   55,  139,   56,   57, +       58,   59,  139,  139,   64,   65,  139,  139,  139,  139, +      139,  139,    0,    0,    0,    0,  142,    0,    0,    0, +        0,    0,    0,    0,    0,    0,    0,   80,   81,   83, +        0,  158,    0,    0,    0,    0,    0,    0,   97,    0, +        0,    0,    0,    0,    0,    0,    0,    0,    0,  157, +      156,  156,  109,    0,    0,    0,    0,    0,    0,    0, -       49,   51,  152,  152,  152,   53,   55,  152,   57,   59, -       61,  152,   63,   65,   67,   69,  152,   71,   73,   75, -       77,  152,  152,  152,  152,  152,  152,    0,    0,    0, -        0,  155,    0,    0,    0,    0,    0,    0,    0,    0, -        0,    0,   93,   94,   96,    0,  171,    0,    0,    0, -        0,    0,    0,  110,    0,    0,    0,    0,    0,    0, -        0,    0,    0,    0,  170,  169,  169,  122,    0,    0, -        0,    0,    0,    0,    0,    0,    0,    0,  160,  160, -      161,  162,    0,  158,  152,  152,  152,  152,  152,  152, -      152,  152,  143,  152,  152,  152,  152,  152,  152,  152, +        0,    0,    0,  147,  147,  148,  149,    0,  145,   11, +       11,  139,   12,   12,   12,  139,  139,  139,  139,  139, +       15,   15,  139,  130,   16,   16,  139,   17,   17,  139, +       18,   18,  139,   19,   19,  139,   20,   20,  139,   21, +       21,  139,   22,   22,  139,   24,   24,  139,   25,   25, +      139,   28,   28,  139,   27,   27,  139,   30,   30,  139, +       31,   31,  139,   32,   32,  139,   33,   33,  139,   34, +       34,  139,   35,   35,  139,  139,  139,  139,   36,  139, +       38,  139,   40,   40,  139,   41,   41,  139,  131,   42, +       42,  139,   43,   43,  139,  139,   45,   45,  139,   46, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  144,  152,  152,  152,  152,  152,  152, -      152,  152,   10,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,    0,  177,    0,    0,    0,   86,   87, -        0,    0,    0,    0,    0,    0,    0,   98,    0,    0, +       46,  139,   47,   47,  139,   48,   48,  139,  139,   49, +       49,  139,   50,   50,  139,   51,   51,  139,   52,   52, +      139,   53,   53,  139,   54,   54,  139,  139,   10,   56, +      139,   57,  139,   58,  139,   59,  139,   60,  139,   62, +      139,   64,   64,  139,  139,  139,  139,  139,  139,  139, +      139,    0,  164,    0,    0,    0,   73,   74,    0,    0, +        0,    0,    0,    0,    0,   85,    0,    0,    0,    0,          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, -        0,    0,    0,    0,    0,    0,  168,    0,    0,    0, -      126,    0,  128,    0,    0,    0,    0,    0,    0,  167, -      159,  152,  152,  152,    4,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, +        0,    0,    0,    0,  155,    0,    0,    0,  113,    0, +      115,    0,    0,    0,    0,    0,    0,  154,  146,  139, -      152,  152,  152,  152,  152,  152,    9,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,   82,  152,  152,    0,    0,    0, -        0,    0,   88,   89,    0,    0,    0,    0,   97,    0, -        0,  101,  104,    0,    0,    0,    0,    0,    0,    0, -      115,  116,    0,    0,    0,    0,  121,    0,    0,    0, -        0,    0,    0,    0,    0,    0,    0,  152,  152,  152, -      152,  152,  152,    5,  152,  152,  152,  152,  152,  152, -      152,  152,  152,  152,  152,  152,  152,  152,  152,  152, -      152,    7,    8,  152,  152,  152,  152,  152,  152,  152, +      139,  139,    4,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,    9,   37,   39,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +       60,  139,   61,   62,  139,   63,  139,  139,  139,  139, +      139,   69,  139,  139,    0,    0,    0,    0,    0,   75, +       76,    0,    0,    0,    0,   84,    0,    0,   88,   91, +        0,    0,    0,    0,    0,    0,    0,  102,  103,    0, +        0,    0,    0,  108,    0,    0,    0,    0,    0,    0, -      152,  152,  152,  152,  152,  152,  152,  152,  152,   83, -      152,   79,    0,    0,    0,    0,  137,    0,    0,    0, -        0,    0,    0,    0,    0,    0,  107,    0,  111,  112, -        0,  114,    0,    0,    0,    0,    0,    0,    0,    0, -        0,    0,  130,  131,    0,    0,  138,   12,    3,   14, -      148,  149,  152,   17,   19,   21,   23,   25,   27,   29, -       32,   34,   39,   37,   42,   44,   46,   48,   50,   52, -       54,   56,   58,   60,   62,  152,  152,  152,   64,   66, -       68,   70,   72,   74,   76,   78,  152,   81,  139,    0, -        0,   84,    0,   90,    0,    0,    0,   99,    0,    0, +        0,    0,    0,    0,  139,  139,  139,  139,  139,  139, +        5,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +        7,    8,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,  139,  139,  139,  139,  139,  139, +      139,  139,  139,  139,   61,  139,  139,   63,  139,  139, +      139,  139,  139,   70,  139,   66,    0,    0,    0,    0, +      124,    0,    0,    0,    0,    0,    0,    0,    0,    0, +       94,    0,   98,   99,    0,  101,    0,    0,    0,    0, +        0,    0,    0,    0,    0,    0,  117,  118,    0,    0, -        0,    0,    0,    0,  113,    0,    0,  119,  106,    0, -        0,    0,    0,    0,    0,  135,    0,  152,  145,  146, -      152,   80,    0,    0,    0,    0,   92,   95,  100,    0, -        0,  105,    0,    0,    0,  118,    0,    0,    0,    0, -      127,  129,    0,  152,  152,    2,    1,    0,   91,    0, -      103,    0,  109,  117,    0,    0,  124,  125,  136,  152, -      147,    0,  102,    0,  120,  123,  152,   85,  108,  152, -      152,  150,  151,    0 +      125,   11,    3,   12,  135,  136,  139,   14,   15,   16, +       17,   18,   19,   20,   21,   22,   24,   25,   28,   27, +       30,   31,   32,   33,   34,   35,   40,   41,   42,   43, +       44,   45,   46,   47,   48,  139,  139,  139,   49,   50, +       51,   52,   53,   54,   55,   56,   57,   58,   59,  139, +      139,  139,  139,   64,   65,  139,   68,  126,    0,    0, +       71,    0,   77,    0,    0,    0,   86,    0,    0,    0, +        0,    0,    0,  100,    0,    0,  106,   93,    0,    0, +        0,    0,    0,    0,  122,    0,  139,  132,  133,  139, +       60,  139,   62,  139,   67,    0,    0,    0,    0,   79, + +       82,   87,    0,    0,   92,    0,    0,    0,  105,    0, +        0,    0,    0,  114,  116,    0,  139,  139,   61,   63, +        2,    1,    0,   78,    0,   90,    0,   96,  104,    0, +        0,  111,  112,  123,  139,  134,    0,   89,    0,  107, +      110,  139,   72,   95,  139,  139,  137,  138,    0      } ;  static yyconst flex_int32_t yy_ec[256] = @@ -487,280 +497,357 @@ static yyconst flex_int32_t yy_meta[68] =          2,    2,    2,    2,    2,    2,    2      } ; -static yyconst flex_int16_t yy_base[678] = +static yyconst flex_int16_t yy_base[853] =      {   0, -        0,    0,  954,  955,   66,  955,  948,  949,    0,   69, -       85,  128,  140,  152,  151,   58,   39,   48,   75,  927, -      158,  160,   73,   59,   71,  170,   54,  920,  890,  889, -      901,  885,  899,  898,  142,  927,  939,  955,    0,  206, -      955,  189,  168,  171,   53,   27,   66,  119,  175,  899, -      885,  123,  170,  883,  895,  183,  955,  198,  225,   99, -      212,  219,  223,  227,  285,  297,  308,  955,  955,  955, -      904,  917,  911,  165,  900,  903,  899,  914,  224,  896, -      910,  194,  896,  909,  900,  913,  890,  901,  892,  294, -      893,  884,  893,  884,  883,  884,  878,  884,  895,  881, +        0,    0, 1299, 1300,   66, 1300, 1293, 1294,    0,   69, +       85,  128,  140,  152,  151,   58,   56,   63,   76, 1272, +      158,  160,   39,  163,  173,  189,   52, 1265,   76, 1235, +     1234, 1246, 1230, 1244, 1243,  105, 1272, 1284, 1300,    0, +      225, 1300,  218,  160,  157,   20,  123,   66,  119,  192, +     1244, 1230,   54,  162, 1228, 1240,  194, 1300,  200,  195, +       98,  227,  196,  231,  235,  293,  305,  316, 1300, 1300, +     1300, 1249, 1262, 1256,  223, 1245, 1248, 1244, 1259,  107, +      298, 1241, 1255,  246, 1241, 1254, 1245, 1258, 1235, 1246, +     1237,  182, 1238, 1229, 1238, 1229, 1228, 1229,  144, 1223, -      878,  890,  893,  880,  873,  889,  865,  193,  139,  885, -      861,  846,  841,  858,  834,  839,  865,  167,  854,  259, -      849,  325,  282,  851,  832,  302,  842,  838,  833,   43, -      839,  825,  841,  838,  829,  305,  309,  831,  820,  834, -      837,  819,  834,  821,  818,  825,  275,  833,  254,  299, -      317,  327,  331,  810,  827,  828,  821,  803,  310,  804, -      826,  817,  316,  327,  331,  335,  339,  343,  347,  955, -      405,  416,  422,  428,  825,  240,  849,    0,  848,  831, -      821,  820,  840,  818,  817,  816,  815,    0,  814,    0, -      813,  812,    0,  811,  810,    0,  809,  808,  807,  806, +     1229, 1240, 1231, 1225, 1222, 1223, 1227,  289, 1236, 1223, +      302, 1230, 1217, 1231, 1207,   65,  315,  276, 1227, 1226, +     1202, 1187, 1182, 1199, 1175, 1180, 1206,  279, 1195,  293, +     1190,  342,  299, 1192, 1173,  317, 1183, 1179, 1174,  207, +     1180, 1166, 1182, 1179, 1170,  320,  324, 1172, 1161, 1175, +     1178, 1160, 1175, 1162, 1159, 1166,  284, 1174,  227,  288, +      327,  342,  345, 1151, 1168, 1169, 1162, 1144,  318, 1145, +     1167, 1158,  330,  341,  345,  349,  353,  357,  361, 1300, +      419,  430,  436,  442,  440,  441, 1191,    0, 1190, 1173, +     1163,  443, 1183,  444,  451,  468,  470,  472,  471,    0, -      805,  804,  820,  813,  826,  800,  799,  805,  797,  796, -      795,  816,  793,  792,  791,  790,  800,  788,  787,  786, -      785,  777,  776,  761,  761,  760,  759,  802,  774,  762, -      434,  442,  416,  766,  186,  763,  757,  757,  751,  764, -      764,  749,  955,  955,  764,  752,  418,  759,  281,  756, -      762,  308,  757,  955,  748,  755,  754,  757,  743,  742, -      746,  741,  278,  746,  420,  428,  430,  955,  738,  736, -      736,  744,  745,  727,  421,  732,  738,  419,  426,  430, -      434,  438,  496,  502,  752,  764,  750,  749,  742,  756, -      746,  745,    0,  744,  743,  742,  741,  740,  739,  738, +      496,    0,  497,  498,    0,  499,  500,    0,  524,  525, +      526,  536,  537,  553, 1178, 1171, 1184,  354,  356,  561, +      563, 1165,  564,  565, 1157,  580,  590,  591,  592, 1178, +      593,  617,  618,  619,  629,  630, 1155, 1165,  330,  362, +      419,  483,  445,  364,  646, 1153, 1145, 1144, 1129, 1129, +     1128, 1127, 1170, 1142, 1130,  662,  669,  643, 1134,  487, +     1131, 1125, 1125, 1119, 1132, 1132, 1117, 1300, 1300, 1132, +     1120,  646, 1127,  135, 1124, 1130,  561, 1125, 1300, 1116, +     1123, 1122, 1125, 1111, 1110, 1114, 1109,  448, 1114,  650, +      653,  665, 1300, 1106, 1104, 1104, 1112, 1113, 1095,  670, -      737,  736,  735,  734,  733,  732,  731,  730,  733,  726, -      733,  726,  725,    0,  724,  723,  722,  725,  720,  719, -      718,  717,    0,  716,  715,  714,  713,  691,  685,  690, -      696,  679,  694,  315,  955,  693,  683,  687,  955,  955, -      677,  686,  672,  689,  672,  675,  669,  955,  670,  669, -      666,  673,  666,  674,  670,  680,  677,  659,  665,  672, -      656,  655,  673,  655,  667,  666,  955,  665,  655,  659, -      955,  646,  955,  651,  651,  659,  642,  643,  653,  955, -      955,  685,  667,  683,    0,  507,  681,  681,  680,  679, -      678,  677,  676,  675,  674,  673,  672,  671,  670,  669, +     1100, 1106,  486,  579,  655,  661,  668,  726,  732, 1112, +      682, 1119, 1110,  688,  730, 1117, 1116, 1109, 1123, 1113, +     1104,  712, 1111,    0, 1102,  731, 1109, 1100,  733, 1107, +     1098,  734, 1105, 1096,  736, 1103, 1094,  737, 1101, 1092, +      738, 1099, 1090,  739, 1097, 1088,  740, 1095, 1086,  741, +     1093, 1084,  742, 1091, 1082,  743, 1089, 1080,  744, 1087, +     1078,  745, 1085, 1076,  746, 1083, 1074,  747, 1081, 1072, +      748, 1079, 1070,  749, 1077, 1080, 1073, 1080,    0, 1073, +        0, 1088, 1063,  750, 1070, 1061,  751, 1068,    0, 1059, +      752, 1066, 1057,  755, 1064, 1063, 1054,  758, 1061, 1052, -      668,  667,  666,  665,  652,  645,    0,  662,  661,  660, -      659,  658,  636,  656,  655,  654,  653,  652,  651,  650, -      649,  618,  621,  601,    0,  602,  595,  602,  601,  602, -      594,  612,  955,  955,  594,  592,  602,  595,  955,  590, -      607,  330,  955,  598,  582,  583,  592,  583,  582,  582, -      955,  581,  590,  580,  596,  593,  955,  592,  590,  579, -      580,  576,  568,  575,  570,  571,  566,  592,  592,  590, -      604,  603,  598,    0,  586,  585,  584,  583,  582,  581, -      580,  579,  578,  577,  576,  575,  574,  573,  572,  571, -      570,    0,    0,  569,  568,  567,  566,  565,  509,  564, +      776, 1059, 1050,  777, 1057, 1048,  779, 1055, 1058, 1045, +      780, 1052, 1043,  782, 1050, 1041,  783, 1048, 1039,  784, +     1046, 1037,  785, 1044, 1035,  786, 1042, 1041,    0, 1032, +     1039, 1030, 1037, 1028, 1035, 1026, 1033,  787, 1032,  788, +     1047, 1022,  789, 1029, 1028, 1006, 1000, 1005, 1011,  994, +     1009,  424, 1300, 1008,  998, 1002, 1300, 1300,  992, 1001, +      987, 1004,  987,  990,  984, 1300,  985,  984,  981,  988, +      981,  989,  985,  995,  992,  974,  980,  987,  971,  970, +      988,  970,  982,  981, 1300,  980,  970,  974, 1300,  961, +     1300,  966,  966,  974,  957,  958,  968, 1300, 1300, 1000, -      563,  562,  561,  560,  559,  558,  557,  535,  535,    0, -      542,    0,  576,  575,  524,  542,  955,  537,  532,  525, -      521,  533,  523,  521,  517,  533,  524,  523,  955,  955, -      526,  955,  521,  514,  503,  514,  506,  510,  523,  518, -      521,  503,  955,  955,  515,  504,  955,    0,    0,    0, -        0,    0,  543,    0,    0,    0,    0,    0,    0,    0, +      982,  998,    0,  798,  996,  996,  995,  994,  993,  992, +      991,  990,  989,  988,  987,  986,  985,  984,  983,  982, +      981,  980,  979,  978,  965,  958,    0,    0,    0,  975, +      974,  973,  972,  971,  970,  969,  968,  967,  945,  965, +      964,  963,  962,  961,  960,  959,  958,  957,  956,  955, +      929,  936,  793,  927,  934,  794,  950,  949,  918,  921, +      901,    0,  902,  895,  902,  901,  902,  894,  912, 1300, +     1300,  894,  892,  902,  895, 1300,  890,  907,  516, 1300, +      898,  882,  883,  892,  883,  882,  882, 1300,  881,  890, +      880,  896,  893, 1300,  892,  890,  879,  880,  876,  868, + +      875,  870,  871,  866,  892,  892,  890,  904,  903,  898, +        0,  886,  885,  884,  883,  882,  881,  880,  879,  878, +      877,  876,  875,  874,  873,  872,  871,  870,  869,  868, +        0,    0,  867,  866,  865,  864,  863,  862,  861,  860, +      859,  804,  858,  857,  856,  855,  854,  853,  852,  851, +      850,  849,  848,  865,  839,  846,  862,  836,  843,  841, +      840,  818,  818,    0,  825,    0,  859,  858,  807,  825, +     1300,  820,  815,  808,  804,  816,  806,  804,  800,  816, +      807,  806, 1300, 1300,  809, 1300,  804,  797,  786,  797, +      789,  793,  806,  801,  804,  786, 1300, 1300,  798,  787, + +     1300,    0,    0,    0,    0,    0,  826,    0,    0,    0,          0,    0,    0,    0,    0,    0,    0,    0,    0,    0, -        0,    0,    0,    0,    0,  539,  538,  536,    0,    0, -        0,    0,    0,    0,    0,    0,  494,    0,    0,  545, -      544,  955,  491,  955,  495,  495,  504,  955,  488,  502, +        0,    0,    0,    0,    0,    0,    0,    0,    0,    0, +        0,    0,    0,    0,    0,  814,  813,  802,    0,    0, +        0,    0,    0,    0,    0,    0,    0,    0,    0,  785, +      798,  779,  792,    0,    0,  656,    0,    0,  706,  702, +     1300,  649, 1300,  648,  648,  654, 1300,  637,  645,  610, +      612,  608,  608, 1300,  572,  583, 1300, 1300,  577,  573, +      560,  557,  542,  555, 1300,  539,  573,    0,    0,  572, +        0,  555,    0,  546,    0,  562,  551,  495,  479, 1300, -      483,  485,  482,  490,  955,  468,  479,  955,  955,  483, -      479,  472,  470,  470,  483,  955,  467,  507,    0,    0, -      507,    0,  514,  513,  472,  433,  955,  955,  955,  435, -      435,  955,  429,  386,  377,  955,  366,  365,  323,  328, -      955,  955,  339,  348,  337,  955,  955,  307,  955,  305, -      955,  257,  955,  955,  247,  221,  955,  955,  955,  236, -        0,  213,  955,  150,  955,  955,  232,  955,  955,  162, -      138,    0,    0,  955,  541,  108,  544 +     1300, 1300,  481,  481, 1300,  480,  443,   31, 1300,  141, +      166,  171,  186, 1300, 1300,  211,  236,  276,    0,    0, +     1300, 1300,  290, 1300,  325, 1300,  346, 1300, 1300,  343, +      341, 1300, 1300, 1300,  365,    0,  380, 1300,  371, 1300, +     1300,  486, 1300, 1300,  451,  458,    0,    0, 1300,  836, +      503,  839      } ; -static yyconst flex_int16_t yy_def[678] = +static yyconst flex_int16_t yy_def[853] =      {   0, -      674,    1,  674,  674,  674,  674,  674,  675,  676,  674, -      674,  674,  674,  674,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  674,  674,  675,  674,  676,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  677,  674,  674,  674,  674,  674, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, +      849,    1,  849,  849,  849,  849,  849,  850,  851,  849, +      849,  849,  849,  849,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  849,  849,  850,  849,  851, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  852,  849,  849,  849,  849, +      849,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, + +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  851, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  676, -      676,  676,  676,  676,  676,  676,  676,  676,  676,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, +      849,  849,  849,  849,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  676,  676,  676, -      676,  676,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  676,  676,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  676, -      676,  674,  674,  674,  674,  674,  676,  674,  674,  676, -      676,  676,  676,    0,  674,  674,  674 +      849,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  851,  851,  851,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  851,  851,  851,  851, +      851,  851,  851,  851,  851,  849,  849,  849,  849,  849, + +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  851,  851,  851,  851, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  851,  851,  849,  849,  849,  849, +      849,  851,  849,  849,  851,  851,  851,  851,    0,  849, +      849,  849      } ; -static yyconst flex_int16_t yy_nxt[1023] = +static yyconst flex_int16_t yy_nxt[1368] =      {   0,          4,    5,    6,    5,    7,    8,    9,    4,   10,   11,         12,   13,   14,   11,   11,   15,    9,   16,   17,   18,         19,    9,    9,    9,   20,   21,   22,    9,   23,   24, -        9,   25,   26,   27,    9,    9,    9,   28,    9,    9, -        9,    9,    9,    9,    9,    9,   29,    9,    9,    9, -        9,    9,    9,    9,    9,    9,   30,    9,   31,   32, -       33,    9,   34,    9,    9,    9,    9,   35,   79,   35, -       40,   80,  129,  108,   96,   81,  130,   41,   42,   42, -       42,   42,   42,   42,   76,   82,   77,   97,   98,  240, -       99,  109,   78,   65,   66,   66,   66,   66,   66,   66, +        9,   25,   26,   27,   28,    9,    9,   29,    9,    9, +        9,    9,    9,    9,    9,    9,   30,    9,    9,    9, +        9,    9,    9,    9,    9,    9,   31,    9,   32,   33, +       34,    9,   35,    9,    9,    9,    9,   36,   96,   36, +       41,  116,  137,   97,   80,  138,  829,   42,   43,   43, +       43,   43,   43,   43,   77,   81,   78,  119,   82,  117, +       83,  238,   79,   66,   67,   67,   67,   67,   67,   67, + +       84,   85,  239,  150,   68,  120,   36,   86,   36,  151, +       44,   45,   46,   47,   48,   49,   50,   51,   52,  141, +      142,   53,   54,   55,   56,   57,   58,   59,   60,   61, +       68,  143,   62,   63,   64,   65,   66,   67,   67,   67, +       67,   67,   67,  170,  194,  195,   69,   68,   66,   67, +       67,   67,   67,   67,   67,  218,  171,  219,   70,   68, +       66,   67,   67,   67,   67,   67,   67,   72,  139,   73, +       71,   68,  140,   68,  144,   92,   74,  145,   98,   88, +      467,   89,   75,   93,   76,   68,   90,   99,   94,   91, +      101,  100,  102,  103,   95,  468,  830,   68,  136,  133, + +      210,  133,  133,  152,  133,  104,  105,  133,  106,  107, +      108,  109,  110,  134,  111,  133,  112,  153,  133,  211, +      135,  831,  113,  114,  154,  115,   41,   43,   43,   43, +       43,   43,   43,  146,  147,  157,  832,  132,  165,  133, +      166,  161,  162,  167,  168,  833,  158,  163,  188,  159, +      133,  169,  160,  265,  189,  164,  834,  201,  133,  174, +      173,  175,  176,  132,  835,  266,  128,  129,   46,   47, +       48,   49,  172,   51,   52,  202,  285,   53,   54,   55, +       56,   57,   58,  130,   60,   61,  286,  243,  131,  244, +      173,  173,  173,  173,  177,  173,  173,  178,  179,  173, + +      173,  173,  181,  181,  181,  181,  181,  181,  228,  836, +      196,  197,  182,   66,   67,   67,   67,   67,   67,   67, +      198,  232,  229,  183,   68,  184,  184,  184,  184,  184, +      184,  240,  134,  241,  255,  233,  282,  287,  182,  135, +      258,  258,  283,  288,  242,  837,  258,  430,  164,  256, +       68,  257,  257,  257,  257,  257,  257,  258,  258,  258, +      261,  258,  258,  298,  258,  272,  258,  258,  258,  258, +      431,  258,  381,  299,  258,  258,  379,  838,  258,  432, +      440,  289,  258,  290,  258,  258,  291,  292,  380,  258, +      382,  839,  258,  303,  303,  303,  303,  840,  441,  841, -       83,  241,   94,  100,   67,  127,   84,   95,  128,   39, -       43,   44,   45,   46,   47,   48,   49,   50,   51,  131, -      132,   52,   53,   54,   55,   56,   57,   58,   59,   60, -       67,  133,   61,   62,   63,   64,   65,   66,   66,   66, -       66,   66,   66,   35,  160,   35,   68,   67,   65,   66, -       66,   66,   66,   66,   66,  219,  673,  161,   69,   67, -       65,   66,   66,   66,   66,   66,   66,   71,  220,   72, -       70,   67,  140,   67,  134,   90,   73,  135,  141,   86, -      672,   87,   74,   91,   75,   67,   88,  101,   92,   89, -      178,  102,  103,  104,   93,  105,  179,   67,   42,   42, +      258,  842,  433,  258,  303,  303,  303,  303,  304,  303, +      303,  305,  306,  303,  303,  303,  303,  303,  303,  303, +      307,  303,  303,  303,  303,  303,  303,  303,   43,   43, +       43,   43,   43,   43,  843,  844,  434,  308,  132,  309, +      309,  309,  309,  309,  309,  184,  184,  184,  184,  184, +      184,  184,  184,  184,  184,  184,  184,  310,  313,  435, +      321,  325,  311,  314,  132,  322,  326,  438,  328,  847, +      565,  311,  315,  329,  322,  326,  848,  311,  314,  439, +      312,  316,  329,  323,  327,  331,  566,  334,  340,  337, +      332,  330,  335,  341,  338,  482,  845,  846,  483,  332, -       42,   42,   42,   42,  106,  189,  107,   40,  122,  123, -      123,  142,  126,  123,  669,  123,  136,  137,  123,  217, -      124,  124,  123,  190,  147,  143,  123,  125,  125,  123, -      218,  337,  144,  123,  122,  148,  184,  185,  149,  151, -      152,  150,  670,  671,  338,  153,  186,  118,  119,   45, -       46,   47,   48,  154,   50,   51,  123,  162,   52,   53, -       54,   55,   56,   57,  120,   59,   60,  668,  155,  121, -      156,  286,  667,  157,  158,  163,  163,  163,  163,  666, -      287,  159,  164,  163,  165,  166,  167,  163,  163,  168, -      169,  163,  163,  163,  171,  171,  171,  171,  171,  171, +      436,  335,  341,  338,   40,  332,  828,  335,  333,  338, +      336,  342,  339,  343,  346,  349,  352,  355,  344,  347, +      350,  353,  356,  437,  827,  826,  825,  344,  347,  350, +      353,  356,  455,  824,  347,  350,  345,  348,  351,  354, +      357,  358,  361,  364,  823,  456,  359,  362,  365,  498, +      498,  498,  498,  367,  370,  359,  362,  365,  368,  371, +      822,  359,  362,  365,  360,  363,  366,  368,  371,  678, +      373,  821,  679,  368,  371,  374,  369,  372,  383,  820, +      386,  390,  393,  384,  374,  387,  391,  394,  819,  818, +      374,  817,  384,  375,  387,  391,  394,  397,  816,  815, -      230,  665,  664,  260,  172,   65,   66,   66,   66,   66, -       66,   66,  198,  261,  154,  173,   67,  174,  174,  174, -      174,  174,  174,  233,  233,  364,  349,  257,  365,  233, -      172,  199,  231,  258,  232,  232,  232,  232,  232,  232, -      233,  350,   67,  233,  233,  236,  233,  233,  262,  233, -      247,  233,  233,  353,  263,  273,  233,  663,  233,  233, -      233,  428,  662,  233,  233,  274,  354,  233,  265,  233, -      661,  264,  266,  267,  233,  233,  660,  429,  233,  278, -      278,  278,  278,  524,  659,  233,  525,  658,  657,  233, -      278,  278,  278,  278,  279,  278,  278,  280,  281,  278, +      814,  385,  398,  388,  392,  395,  471,  400,  403,  406, +      410,  398,  401,  404,  407,  411,  813,  398,  812,  472, +      399,  401,  404,  407,  411,  811,  810,  401,  404,  407, +      402,  405,  408,  412,  413,  416,  419,  809,  808,  414, +      417,  420,  498,  498,  498,  498,  422,  425,  414,  417, +      420,  423,  426,  807,  414,  417,  420,  415,  418,  421, +      423,  426,  806,  442,  805,  804,  423,  426,  443,  424, +      427,  257,  257,  257,  257,  257,  257,  443,  257,  257, +      257,  257,  257,  257,  453,  453,  444,  453,  453,  803, +      453,  453,  453,  453,  453,  453,  802,  453,  801,  310, -      278,  278,  278,  278,  278,  278,  282,  278,  278,  278, -      278,  278,  278,  278,   42,   42,   42,   42,   42,   42, -      656,  655,  654,  283,  122,  284,  284,  284,  284,  284, -      284,  174,  174,  174,  174,  174,  174,  174,  174,  174, -      174,  174,  174,  232,  232,  232,  232,  232,  232,  653, -      122,  232,  232,  232,  232,  232,  232,  335,  335,  335, -      335,  335,  335,  335,  374,  335,  375,  335,  376,  335, -      335,  367,  335,  652,  335,  335,  335,  335,  335,  651, -      650,  377,  380,  380,  380,  380,  335,  649,  335,  380, -      380,  380,  380,  381,  380,  380,  380,  380,  380,  380, +      453,  453,  800,  799,  453,  313,  485,  453,  453,  798, +      797,  453,  453,  492,  796,  493,  795,  494,  499,  498, +      498,  498,  312,  453,  498,  498,  498,  498,  316,  321, +      495,  498,  498,  498,  498,  309,  309,  309,  309,  309, +      309,  309,  309,  309,  309,  309,  309,  313,  325,  501, +      328,  331,  323,  334,  337,  340,  343,  346,  349,  352, +      355,  358,  361,  364,  367,  370,  373,  383,  386,  390, +      316,  327,  393,  330,  333,  397,  336,  339,  342,  345, +      348,  351,  354,  357,  360,  363,  366,  369,  372,  375, +      385,  388,  392,  400,  403,  395,  406,  410,  399,  413, -      380,  380,  380,  380,  380,  284,  284,  284,  284,  284, -      284,  284,  284,  284,  284,  284,  284,  471,  472,  576, -      577,  648,  647,  646,  645,  644,  643,  642,  641,  640, -      639,  638,  637,  636,  635,  634,  633,  632,  631,  473, -      578,   37,   37,   37,  170,  170,  630,  629,  628,  627, -      626,  625,  624,  623,  622,  621,  620,  619,  618,  617, -      616,  615,  614,  613,  612,  611,  610,  609,  608,  607, -      606,  605,  604,  603,  602,  601,  600,  599,  598,  597, -      596,  595,  594,  593,  592,  591,  590,  589,  588,  587, -      586,  585,  584,  583,  582,  581,  580,  579,  575,  574, +      416,  419,  422,  425,  551,  554,  442,  794,  608,  609, +      655,  658,  793,  792,  736,  737,  402,  405,  791,  408, +      412,  790,  415,  418,  421,  424,  427,  552,  555,  444, +      610,  789,  788,  656,  659,  738,   38,   38,   38,  180, +      180,  787,  786,  785,  784,  783,  782,  781,  780,  779, +      778,  777,  776,  775,  774,  773,  772,  771,  770,  769, +      768,  767,  766,  765,  764,  763,  762,  761,  760,  759, +      758,  757,  756,  755,  754,  753,  659,  752,  751,  656, +      750,  749,  748,  747,  746,  745,  744,  743,  742,  741, +      740,  739,  735,  734,  733,  732,  731,  730,  729,  728, -      573,  572,  571,  570,  569,  568,  567,  566,  565,  564, -      563,  562,  561,  560,  559,  558,  557,  556,  555,  554, -      553,  552,  551,  550,  549,  548,  547,  546,  545,  544, -      543,  542,  541,  540,  539,  538,  537,  536,  535,  534, -      533,  532,  531,  530,  529,  528,  527,  526,  523,  522, -      521,  520,  519,  518,  517,  516,  515,  514,  513,  512, -      511,  510,  509,  508,  507,  506,  505,  504,  503,  502, -      501,  500,  499,  498,  497,  496,  495,  494,  493,  492, -      491,  490,  489,  488,  487,  486,  485,  484,  483,  482, -      481,  480,  479,  478,  477,  476,  475,  474,  470,  469, +      727,  726,  725,  724,  723,  722,  721,  720,  719,  718, +      717,  716,  715,  714,  713,  712,  711,  710,  709,  708, +      707,  706,  705,  704,  703,  702,  701,  700,  699,  698, +      697,  696,  695,  694,  693,  692,  691,  690,  689,  688, +      687,  686,  685,  684,  683,  682,  681,  680,  677,  676, +      675,  674,  673,  672,  671,  670,  669,  668,  667,  666, +      665,  664,  663,  662,  661,  660,  657,  555,  654,  552, +      653,  652,  651,  650,  649,  648,  647,  646,  645,  644, +      643,  642,  641,  640,  639,  638,  637,  636,  635,  634, +      633,  632,  631,  630,  629,  628,  627,  626,  625,  624, -      468,  467,  466,  465,  464,  463,  462,  461,  460,  459, -      458,  457,  456,  455,  454,  453,  452,  451,  450,  449, -      448,  447,  446,  445,  444,  443,  442,  441,  440,  439, -      438,  437,  436,  435,  434,  433,  432,  431,  430,  427, -      426,  425,  424,  423,  422,  421,  420,  419,  418,  417, -      416,  415,  414,  413,  412,  411,  410,  409,  408,  407, -      406,  405,  404,  403,  402,  401,  400,  399,  398,  397, -      396,  395,  394,  393,  392,  391,  390,  389,  388,  387, -      386,  385,  384,  383,  382,  379,  378,  373,  372,  371, -      370,  369,  368,  366,  363,  362,  361,  360,  359,  358, +      623,  622,  621,  620,  619,  618,  617,  616,  615,  614, +      613,  612,  611,  607,  606,  605,  604,  603,  602,  601, +      600,  599,  598,  597,  596,  595,  594,  593,  592,  591, +      590,  589,  588,  587,  586,  585,  584,  583,  582,  581, +      580,  579,  578,  577,  576,  575,  574,  573,  572,  571, +      570,  569,  568,  567,  564,  563,  562,  561,  560,  559, +      558,  557,  444,  556,  553,  550,  437,  549,  435,  548, +      433,  547,  431,  546,  545,  427,  544,  424,  543,  421, +      542,  418,  541,  415,  540,  412,  539,  538,  408,  537, +      405,  536,  402,  535,  399,  534,  533,  395,  532,  392, -      357,  356,  355,  352,  351,  348,  347,  346,  345,  344, -      343,  342,  341,  340,  339,  336,  264,  236,  334,  333, -      332,  331,  330,  329,  328,  327,  326,  325,  324,  323, -      322,  321,  320,  319,  318,  317,  316,  315,  314,  313, -      312,  311,  310,  309,  308,  307,  306,  305,  304,  303, -      302,  301,  300,  299,  298,  297,  296,  295,  294,  293, -      292,  291,  290,  289,  288,  285,  277,  276,  275,  272, -      271,  270,  269,  268,  259,  256,  255,  254,  253,  252, -      251,  250,  249,  248,  246,  245,  244,  243,  242,  239, -      238,  237,  235,  234,  162,  229,  228,  227,  226,  225, +      531,  388,  530,  385,  529,  528,  527,  526,  525,  524, +      375,  523,  372,  522,  369,  521,  366,  520,  363,  519, +      360,  518,  357,  517,  354,  516,  351,  515,  348,  514, +      345,  513,  342,  512,  339,  511,  336,  510,  333,  509, +      330,  508,  327,  507,  323,  506,  505,  504,  503,  502, +      316,  500,  312,  497,  496,  491,  490,  489,  488,  487, +      486,  484,  481,  480,  479,  478,  477,  476,  475,  474, +      473,  470,  469,  466,  465,  464,  463,  462,  461,  460, +      459,  458,  457,  454,  289,  261,  452,  451,  450,  449, +      448,  447,  446,  445,  429,  428,  409,  396,  389,  378, -      224,  223,  222,  221,  216,  215,  214,  213,  212,  211, -      210,  209,  208,  207,  206,  205,  204,  203,  202,  201, -      200,  197,  196,  195,  194,  193,  192,  191,  188,  187, -      183,  182,  181,  180,  177,  176,  175,  146,  145,  139, -      138,   38,  117,  116,  115,  114,  113,  112,  111,  110, -       85,   38,   36,  674,    3,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, +      377,  376,  324,  320,  319,  318,  317,  302,  301,  300, +      297,  296,  295,  294,  293,  284,  281,  280,  279,  278, +      277,  276,  275,  274,  273,  271,  270,  269,  268,  267, +      264,  263,  262,  260,  259,  172,  254,  253,  252,  251, +      250,  249,  248,  247,  246,  245,  237,  236,  235,  234, +      231,  230,  227,  226,  225,  224,  223,  222,  221,  220, +      217,  216,  215,  214,  213,  212,  209,  208,  207,  206, +      205,  204,  203,  200,  199,  193,  192,  191,  190,  187, +      186,  185,  156,  155,  149,  148,   39,  127,  126,  125, +      124,  123,  122,  121,  118,   87,   39,   37,  849,    3, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674 +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849      } ; -static yyconst flex_int16_t yy_chk[1023] = +static yyconst flex_int16_t yy_chk[1368] =      {   0,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1, @@ -768,113 +855,150 @@ static yyconst flex_int16_t yy_chk[1023] =          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1,          1,    1,    1,    1,    1,    1,    1,    1,    1,    1, -        1,    1,    1,    1,    1,    1,    1,    5,   17,    5, -       10,   17,   46,   27,   24,   18,   46,   10,   10,   10, -       10,   10,   10,   10,   16,   18,   16,   24,   25,  130, -       25,   27,   16,   11,   11,   11,   11,   11,   11,   11, +        1,    1,    1,    1,    1,    1,    1,    5,   23,    5, +       10,   27,   46,   23,   17,   46,  808,   10,   10,   10, +       10,   10,   10,   10,   16,   17,   16,   29,   17,   27, +       18,  116,   16,   11,   11,   11,   11,   11,   11,   11, + +       18,   19,  116,   53,   11,   29,   36,   19,   36,   53, +       10,   10,   10,   10,   10,   10,   10,   10,   10,   48, +       48,   10,   10,   10,   10,   10,   10,   10,   10,   10, +       11,   48,   10,   10,   10,   10,   12,   12,   12,   12, +       12,   12,   12,   61,   80,   80,   12,   12,   13,   13, +       13,   13,   13,   13,   13,   99,   61,   99,   13,   13, +       14,   14,   14,   14,   14,   14,   14,   15,   47,   15, +       14,   14,   47,   12,   49,   22,   15,   49,   24,   21, +      274,   21,   15,   22,   15,   13,   21,   24,   22,   21, +       25,   24,   25,   25,   22,  274,  810,   14,   45,   45, + +       92,   44,   44,   54,   45,   25,   26,   44,   26,   26, +       26,   26,   26,   44,   26,   45,   26,   54,   44,   92, +       44,  811,   26,   26,   54,   26,   41,   43,   43,   43, +       43,   43,   43,   50,   50,   57,  812,   43,   60,   50, +       60,   59,   59,   60,   60,  813,   57,   59,   75,   57, +       50,   60,   57,  140,   75,   59,  816,   84,   59,   63, +       63,   63,   63,   43,  817,  140,   41,   41,   41,   41, +       41,   41,   62,   41,   41,   84,  159,   41,   41,   41, +       41,   41,   41,   41,   41,   41,  159,  118,   41,  118, +       62,   62,   62,   62,   64,   64,   64,   64,   65,   65, + +       65,   65,   66,   66,   66,   66,   66,   66,  108,  818, +       81,   81,   66,   67,   67,   67,   67,   67,   67,   67, +       81,  111,  108,   68,   67,   68,   68,   68,   68,   68, +       68,  117,  128,  117,  130,  111,  157,  160,   66,  128, +      133,  133,  157,  160,  117,  823,  133,  239,  130,  132, +       67,  132,  132,  132,  132,  132,  132,  133,  136,  136, +      136,  146,  146,  169,  136,  147,  147,  146,  161,  161, +      239,  147,  219,  169,  161,  136,  218,  825,  146,  240, +      244,  161,  147,  162,  162,  161,  163,  163,  218,  162, +      219,  827,  163,  173,  173,  173,  173,  830,  244,  831, -       19,  130,   23,   25,   11,   45,   19,   23,   45,  676, -       10,   10,   10,   10,   10,   10,   10,   10,   10,   47, -       47,   10,   10,   10,   10,   10,   10,   10,   10,   10, -       11,   47,   10,   10,   10,   10,   12,   12,   12,   12, -       12,   12,   12,   35,   60,   35,   12,   12,   13,   13, -       13,   13,   13,   13,   13,  109,  671,   60,   13,   13, -       14,   14,   14,   14,   14,   14,   14,   15,  109,   15, -       14,   14,   52,   12,   48,   22,   15,   48,   52,   21, -      670,   21,   15,   22,   15,   13,   21,   26,   22,   21, -       74,   26,   26,   26,   22,   26,   74,   14,   42,   42, +      162,  835,  240,  163,  174,  174,  174,  174,  175,  175, +      175,  175,  176,  176,  176,  176,  177,  177,  177,  177, +      178,  178,  178,  178,  179,  179,  179,  179,  181,  181, +      181,  181,  181,  181,  837,  839,  241,  182,  181,  182, +      182,  182,  182,  182,  182,  183,  183,  183,  183,  183, +      183,  184,  184,  184,  184,  184,  184,  185,  186,  241, +      192,  194,  185,  186,  181,  192,  194,  243,  195,  845, +      452,  185,  186,  195,  192,  194,  846,  185,  186,  243, +      185,  186,  195,  192,  194,  196,  452,  197,  199,  198, +      196,  195,  197,  199,  198,  288,  842,  842,  288,  196, -       42,   42,   42,   42,   26,   82,   26,   40,   42,   43, -       43,   53,   44,   44,  664,   43,   49,   49,   44,  108, -      118,   43,   49,   82,   56,   53,   43,  118,   43,   44, -      108,  235,   53,   49,   42,   56,   79,   79,   56,   58, -       58,   56,  667,  667,  235,   58,   79,   40,   40,   40, -       40,   40,   40,   58,   40,   40,   58,   61,   40,   40, -       40,   40,   40,   40,   40,   40,   40,  662,   59,   40, -       59,  176,  660,   59,   59,   61,   61,   61,   61,  656, -      176,   59,   62,   62,   62,   62,   63,   63,   63,   63, -       64,   64,   64,   64,   65,   65,   65,   65,   65,   65, +      242,  197,  199,  198,  851,  196,  807,  197,  196,  198, +      197,  199,  198,  201,  203,  204,  206,  207,  201,  203, +      204,  206,  207,  242,  806,  804,  803,  201,  203,  204, +      206,  207,  260,  799,  203,  204,  201,  203,  204,  206, +      207,  209,  210,  211,  798,  260,  209,  210,  211,  303, +      303,  303,  303,  212,  213,  209,  210,  211,  212,  213, +      797,  209,  210,  211,  209,  210,  211,  212,  213,  579, +      214,  796,  579,  212,  213,  214,  212,  213,  220,  794, +      221,  223,  224,  220,  214,  221,  223,  224,  792,  790, +      214,  787,  220,  214,  221,  223,  224,  226,  786,  784, -      120,  655,  652,  149,   65,   66,   66,   66,   66,   66, -       66,   66,   90,  149,  120,   67,   66,   67,   67,   67, -       67,   67,   67,  123,  123,  263,  249,  147,  263,  123, -       65,   90,  122,  147,  122,  122,  122,  122,  122,  122, -      123,  249,   66,  126,  126,  126,  136,  136,  150,  126, -      137,  137,  136,  252,  150,  159,  137,  650,  151,  151, -      126,  334,  648,  136,  151,  159,  252,  137,  152,  152, -      645,  151,  153,  153,  152,  151,  644,  334,  153,  163, -      163,  163,  163,  442,  643,  152,  442,  640,  639,  153, -      164,  164,  164,  164,  165,  165,  165,  165,  166,  166, +      783,  220,  226,  221,  223,  224,  277,  227,  228,  229, +      231,  226,  227,  228,  229,  231,  782,  226,  781,  277, +      226,  227,  228,  229,  231,  780,  779,  227,  228,  229, +      227,  228,  229,  231,  232,  233,  234,  776,  775,  232, +      233,  234,  304,  304,  304,  304,  235,  236,  232,  233, +      234,  235,  236,  773,  232,  233,  234,  232,  233,  234, +      235,  236,  772,  245,  771,  770,  235,  236,  245,  235, +      236,  256,  256,  256,  256,  256,  256,  245,  257,  257, +      257,  257,  257,  257,  258,  258,  245,  272,  272,  769, +      258,  290,  290,  272,  291,  291,  768,  290,  766,  311, -      166,  166,  167,  167,  167,  167,  168,  168,  168,  168, -      169,  169,  169,  169,  171,  171,  171,  171,  171,  171, -      638,  637,  635,  172,  171,  172,  172,  172,  172,  172, -      172,  173,  173,  173,  173,  173,  173,  174,  174,  174, -      174,  174,  174,  231,  231,  231,  231,  231,  231,  634, -      171,  232,  232,  232,  232,  232,  232,  233,  233,  247, -      247,  265,  265,  233,  275,  247,  275,  265,  275,  266, -      266,  267,  267,  633,  233,  266,  247,  267,  265,  631, -      630,  275,  278,  278,  278,  278,  266,  626,  267,  279, -      279,  279,  279,  280,  280,  280,  280,  281,  281,  281, +      291,  258,  765,  764,  272,  314,  292,  292,  290,  762, +      760,  291,  292,  300,  759,  300,  756,  300,  305,  305, +      305,  305,  311,  292,  306,  306,  306,  306,  314,  322, +      300,  307,  307,  307,  307,  308,  308,  308,  308,  308, +      308,  309,  309,  309,  309,  309,  309,  315,  326,  315, +      329,  332,  322,  335,  338,  341,  344,  347,  350,  353, +      356,  359,  362,  365,  368,  371,  374,  384,  387,  391, +      315,  326,  394,  329,  332,  398,  335,  338,  341,  344, +      347,  350,  353,  356,  359,  362,  365,  368,  371,  374, +      384,  387,  391,  401,  404,  394,  407,  411,  398,  414, -      281,  282,  282,  282,  282,  283,  283,  283,  283,  283, -      283,  284,  284,  284,  284,  284,  284,  386,  386,  499, -      499,  625,  624,  623,  621,  618,  617,  615,  614,  613, -      612,  611,  610,  607,  606,  604,  603,  602,  601,  386, -      499,  675,  675,  675,  677,  677,  600,  599,  597,  596, -      595,  593,  591,  590,  587,  578,  577,  576,  553,  546, -      545,  542,  541,  540,  539,  538,  537,  536,  535,  534, -      533,  531,  528,  527,  526,  525,  524,  523,  522,  521, -      520,  519,  518,  516,  515,  514,  513,  511,  509,  508, -      507,  506,  505,  504,  503,  502,  501,  500,  498,  497, +      417,  420,  423,  426,  438,  440,  443,  753,  504,  504, +      553,  556,  752,  751,  642,  642,  401,  404,  750,  407, +      411,  738,  414,  417,  420,  423,  426,  438,  440,  443, +      504,  737,  736,  553,  556,  642,  850,  850,  850,  852, +      852,  707,  700,  699,  696,  695,  694,  693,  692,  691, +      690,  689,  688,  687,  685,  682,  681,  680,  679,  678, +      677,  676,  675,  674,  673,  672,  670,  669,  668,  667, +      665,  663,  662,  661,  660,  659,  658,  657,  656,  655, +      654,  653,  652,  651,  650,  649,  648,  647,  646,  645, +      644,  643,  641,  640,  639,  638,  637,  636,  635,  634, -      496,  495,  494,  491,  490,  489,  488,  487,  486,  485, -      484,  483,  482,  481,  480,  479,  478,  477,  476,  475, -      473,  472,  471,  470,  469,  468,  467,  466,  465,  464, -      463,  462,  461,  460,  459,  458,  456,  455,  454,  453, -      452,  450,  449,  448,  447,  446,  445,  444,  441,  440, -      438,  437,  436,  435,  432,  431,  430,  429,  428,  427, -      426,  424,  423,  422,  421,  420,  419,  418,  417,  416, -      415,  414,  413,  412,  411,  410,  409,  408,  406,  405, -      404,  403,  402,  401,  400,  399,  398,  397,  396,  395, -      394,  393,  392,  391,  390,  389,  388,  387,  384,  383, +      633,  630,  629,  628,  627,  626,  625,  624,  623,  622, +      621,  620,  619,  618,  617,  616,  615,  614,  613,  612, +      610,  609,  608,  607,  606,  605,  604,  603,  602,  601, +      600,  599,  598,  597,  596,  595,  593,  592,  591,  590, +      589,  587,  586,  585,  584,  583,  582,  581,  578,  577, +      575,  574,  573,  572,  569,  568,  567,  566,  565,  564, +      563,  561,  560,  559,  558,  557,  555,  554,  552,  551, +      550,  549,  548,  547,  546,  545,  544,  543,  542,  541, +      540,  539,  538,  537,  536,  535,  534,  533,  532,  531, +      530,  526,  525,  524,  523,  522,  521,  520,  519,  518, -      382,  379,  378,  377,  376,  375,  374,  372,  370,  369, -      368,  366,  365,  364,  363,  362,  361,  360,  359,  358, -      357,  356,  355,  354,  353,  352,  351,  350,  349,  347, -      346,  345,  344,  343,  342,  341,  338,  337,  336,  333, -      332,  331,  330,  329,  328,  327,  326,  325,  324,  322, -      321,  320,  319,  318,  317,  316,  315,  313,  312,  311, -      310,  309,  308,  307,  306,  305,  304,  303,  302,  301, -      300,  299,  298,  297,  296,  295,  294,  292,  291,  290, -      289,  288,  287,  286,  285,  277,  276,  274,  273,  272, -      271,  270,  269,  264,  262,  261,  260,  259,  258,  257, +      517,  516,  515,  514,  513,  512,  511,  510,  509,  508, +      507,  506,  505,  502,  501,  500,  497,  496,  495,  494, +      493,  492,  490,  488,  487,  486,  484,  483,  482,  481, +      480,  479,  478,  477,  476,  475,  474,  473,  472,  471, +      470,  469,  468,  467,  465,  464,  463,  462,  461,  460, +      459,  456,  455,  454,  451,  450,  449,  448,  447,  446, +      445,  444,  442,  441,  439,  437,  436,  435,  434,  433, +      432,  431,  430,  428,  427,  425,  424,  422,  421,  419, +      418,  416,  415,  413,  412,  410,  409,  408,  406,  405, +      403,  402,  400,  399,  397,  396,  395,  393,  392,  390, -      256,  255,  253,  251,  250,  248,  246,  245,  242,  241, -      240,  239,  238,  237,  236,  234,  230,  229,  228,  227, -      226,  225,  224,  223,  222,  221,  220,  219,  218,  217, -      216,  215,  214,  213,  212,  211,  210,  209,  208,  207, -      206,  205,  204,  203,  202,  201,  200,  199,  198,  197, -      195,  194,  192,  191,  189,  187,  186,  185,  184,  183, -      182,  181,  180,  179,  177,  175,  162,  161,  160,  158, -      157,  156,  155,  154,  148,  146,  145,  144,  143,  142, -      141,  140,  139,  138,  135,  134,  133,  132,  131,  129, -      128,  127,  125,  124,  121,  119,  117,  116,  115,  114, +      388,  386,  385,  383,  382,  380,  378,  377,  376,  375, +      373,  372,  370,  369,  367,  366,  364,  363,  361,  360, +      358,  357,  355,  354,  352,  351,  349,  348,  346,  345, +      343,  342,  340,  339,  337,  336,  334,  333,  331,  330, +      328,  327,  325,  323,  321,  320,  319,  318,  317,  316, +      313,  312,  310,  302,  301,  299,  298,  297,  296,  295, +      294,  289,  287,  286,  285,  284,  283,  282,  281,  280, +      278,  276,  275,  273,  271,  270,  267,  266,  265,  264, +      263,  262,  261,  259,  255,  254,  253,  252,  251,  250, +      249,  248,  247,  246,  238,  237,  230,  225,  222,  217, -      113,  112,  111,  110,  107,  106,  105,  104,  103,  102, -      101,  100,   99,   98,   97,   96,   95,   94,   93,   92, -       91,   89,   88,   87,   86,   85,   84,   83,   81,   80, -       78,   77,   76,   75,   73,   72,   71,   55,   54,   51, -       50,   37,   36,   34,   33,   32,   31,   30,   29,   28, -       20,    8,    7,    3,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, +      216,  215,  193,  191,  190,  189,  187,  172,  171,  170, +      168,  167,  166,  165,  164,  158,  156,  155,  154,  153, +      152,  151,  150,  149,  148,  145,  144,  143,  142,  141, +      139,  138,  137,  135,  134,  131,  129,  127,  126,  125, +      124,  123,  122,  121,  120,  119,  115,  114,  113,  112, +      110,  109,  107,  106,  105,  104,  103,  102,  101,  100, +       98,   97,   96,   95,   94,   93,   91,   90,   89,   88, +       87,   86,   85,   83,   82,   79,   78,   77,   76,   74, +       73,   72,   56,   55,   52,   51,   38,   37,   35,   34, +       33,   32,   31,   30,   28,   20,    8,    7,    3,  849, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674,  674,  674,  674,  674,  674,  674,  674,  674, -      674,  674 +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849,  849,  849,  849, +      849,  849,  849,  849,  849,  849,  849      } ;  /* The intent behind this definition is that it'll catch @@ -913,15 +1037,21 @@ static yyconst flex_int16_t yy_chk[1023] =  #include "prog_instruction.h"  #include "prog_statevars.h" +#include "symbol_table.h"  #include "program_parser.h"  #include "program_parse.tab.h"  #define require_ARB_vp (yyextra->mode == ARB_vertex)  #define require_ARB_fp (yyextra->mode == ARB_fragment) +#define require_NV_fp  (yyextra->option.NV_fragment)  #define require_shadow (yyextra->option.Shadow)  #define require_rect   (yyextra->option.TexRect)  #define require_texarray        (yyextra->option.TexArray) +#ifndef HAVE_UNISTD_H +#define YY_NO_UNISTD_H +#endif +  #define return_token_or_IDENTIFIER(condition, token)	\     do {							\        if (condition) {					\ @@ -943,11 +1073,13 @@ static yyconst flex_int16_t yy_chk[1023] =     } while (0) -#define return_opcode(condition, token, opcode, sat)	\ +#define return_opcode(condition, token, opcode, len)	\     do {							\ -      if (condition) {					\ +      if (condition &&					\ +	  _mesa_parse_instruction_suffix(yyextra,	\ +					 yytext + len,	\ +					 & yylval->temp_inst)) {	\  	 yylval->temp_inst.Opcode = OPCODE_ ## opcode;	\ -	 yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \  	 return token;					\        } else {						\  	 yylval->string = return_string(yyextra, yytext);		\ @@ -1039,6 +1171,15 @@ swiz_from_char(char c)     return 0;  } +static int +handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval) +{ +   lval->string = strdup(text); + +   return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL) +      ? IDENTIFIER : USED_IDENTIFIER; +} +  #define YY_USER_ACTION							\     do {									\        yylloc->first_column = yylloc->last_column;			\ @@ -1052,7 +1193,7 @@ swiz_from_char(char c)     } while(0);  #define YY_EXTRA_TYPE struct asm_parser_state * -#line 1056 "lex.yy.c" +#line 1197 "lex.yy.c"  #define INITIAL 0 @@ -1189,12 +1330,7 @@ static int input (yyscan_t yyscanner );  /* Amount of stuff to slurp up with each read. */  #ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else  #define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */  #endif  /* Copy whatever the last rule matched to the standard output. */ @@ -1202,7 +1338,7 @@ static int input (yyscan_t yyscanner );  /* This used to be an fputs(), but since the string might contain NUL's,   * we now use fwrite().   */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#define ECHO fwrite( yytext, yyleng, 1, yyout )  #endif  /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL, @@ -1213,7 +1349,7 @@ static int input (yyscan_t yyscanner );  	if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \  		{ \  		int c = '*'; \ -		size_t n; \ +		unsigned n; \  		for ( n = 0; n < max_size && \  			     (c = getc( yyin )) != EOF && c != '\n'; ++n ) \  			buf[n] = (char) c; \ @@ -1298,10 +1434,10 @@ YY_DECL  	register int yy_act;      struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; -#line 176 "program_lexer.l" +#line 198 "program_lexer.l" -#line 1305 "lex.yy.c" +#line 1441 "lex.yy.c"      yylval = yylval_param; @@ -1358,13 +1494,13 @@ yy_match:  			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  				{  				yy_current_state = (int) yy_def[yy_current_state]; -				if ( yy_current_state >= 675 ) +				if ( yy_current_state >= 850 )  					yy_c = yy_meta[(unsigned int) yy_c];  				}  			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];  			++yy_cp;  			} -		while ( yy_base[yy_current_state] != 955 ); +		while ( yy_base[yy_current_state] != 1300 );  yy_find_action:  		yy_act = yy_accept[yy_current_state]; @@ -1390,17 +1526,17 @@ do_action:	/* This label is used only to access EOF actions. */  case 1:  YY_RULE_SETUP -#line 178 "program_lexer.l" +#line 200 "program_lexer.l"  { return ARBvp_10; }  	YY_BREAK  case 2:  YY_RULE_SETUP -#line 179 "program_lexer.l" +#line 201 "program_lexer.l"  { return ARBfp_10; }  	YY_BREAK  case 3:  YY_RULE_SETUP -#line 180 "program_lexer.l" +#line 202 "program_lexer.l"  {     yylval->integer = at_address;     return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS); @@ -1408,813 +1544,745 @@ YY_RULE_SETUP  	YY_BREAK  case 4:  YY_RULE_SETUP -#line 184 "program_lexer.l" +#line 206 "program_lexer.l"  { return ALIAS; }  	YY_BREAK  case 5:  YY_RULE_SETUP -#line 185 "program_lexer.l" +#line 207 "program_lexer.l"  { return ATTRIB; }  	YY_BREAK  case 6:  YY_RULE_SETUP -#line 186 "program_lexer.l" +#line 208 "program_lexer.l"  { return END; }  	YY_BREAK  case 7:  YY_RULE_SETUP -#line 187 "program_lexer.l" +#line 209 "program_lexer.l"  { return OPTION; }  	YY_BREAK  case 8:  YY_RULE_SETUP -#line 188 "program_lexer.l" +#line 210 "program_lexer.l"  { return OUTPUT; }  	YY_BREAK  case 9:  YY_RULE_SETUP -#line 189 "program_lexer.l" +#line 211 "program_lexer.l"  { return PARAM; }  	YY_BREAK  case 10:  YY_RULE_SETUP -#line 190 "program_lexer.l" +#line 212 "program_lexer.l"  { yylval->integer = at_temp; return TEMP; }  	YY_BREAK  case 11:  YY_RULE_SETUP -#line 192 "program_lexer.l" -{ return_opcode(             1, VECTOR_OP, ABS, OFF); } +#line 214 "program_lexer.l" +{ return_opcode(             1, VECTOR_OP, ABS, 3); }  	YY_BREAK  case 12:  YY_RULE_SETUP -#line 193 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } +#line 215 "program_lexer.l" +{ return_opcode(             1, BIN_OP, ADD, 3); }  	YY_BREAK  case 13:  YY_RULE_SETUP -#line 194 "program_lexer.l" -{ return_opcode(             1, BIN_OP, ADD, OFF); } +#line 216 "program_lexer.l" +{ return_opcode(require_ARB_vp, ARL, ARL, 3); }  	YY_BREAK  case 14:  YY_RULE_SETUP -#line 195 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } +#line 218 "program_lexer.l" +{ return_opcode(require_ARB_fp, TRI_OP, CMP, 3); }  	YY_BREAK  case 15:  YY_RULE_SETUP -#line 196 "program_lexer.l" -{ return_opcode(require_ARB_vp, ARL, ARL, OFF); } +#line 219 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); }  	YY_BREAK  case 16:  YY_RULE_SETUP -#line 198 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } +#line 221 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, DDX, 3); }  	YY_BREAK  case 17:  YY_RULE_SETUP -#line 199 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } +#line 222 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, DDY, 3); }  	YY_BREAK  case 18:  YY_RULE_SETUP -#line 200 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } +#line 223 "program_lexer.l" +{ return_opcode(             1, BIN_OP, DP3, 3); }  	YY_BREAK  case 19:  YY_RULE_SETUP -#line 201 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } +#line 224 "program_lexer.l" +{ return_opcode(             1, BIN_OP, DP4, 3); }  	YY_BREAK  case 20:  YY_RULE_SETUP -#line 203 "program_lexer.l" -{ return_opcode(             1, BIN_OP, DP3, OFF); } +#line 225 "program_lexer.l" +{ return_opcode(             1, BIN_OP, DPH, 3); }  	YY_BREAK  case 21:  YY_RULE_SETUP -#line 204 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } +#line 226 "program_lexer.l" +{ return_opcode(             1, BIN_OP, DST, 3); }  	YY_BREAK  case 22:  YY_RULE_SETUP -#line 205 "program_lexer.l" -{ return_opcode(             1, BIN_OP, DP4, OFF); } +#line 228 "program_lexer.l" +{ return_opcode(             1, SCALAR_OP, EX2, 3); }  	YY_BREAK  case 23:  YY_RULE_SETUP -#line 206 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } +#line 229 "program_lexer.l" +{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); }  	YY_BREAK  case 24:  YY_RULE_SETUP -#line 207 "program_lexer.l" -{ return_opcode(             1, BIN_OP, DPH, OFF); } +#line 231 "program_lexer.l" +{ return_opcode(             1, VECTOR_OP, FLR, 3); }  	YY_BREAK  case 25:  YY_RULE_SETUP -#line 208 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } +#line 232 "program_lexer.l" +{ return_opcode(             1, VECTOR_OP, FRC, 3); }  	YY_BREAK  case 26:  YY_RULE_SETUP -#line 209 "program_lexer.l" -{ return_opcode(             1, BIN_OP, DST, OFF); } +#line 234 "program_lexer.l" +{ return_opcode(require_ARB_fp, KIL, KIL, 3); }  	YY_BREAK  case 27:  YY_RULE_SETUP -#line 210 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } +#line 236 "program_lexer.l" +{ return_opcode(             1, VECTOR_OP, LIT, 3); }  	YY_BREAK  case 28:  YY_RULE_SETUP -#line 212 "program_lexer.l" -{ return_opcode(             1, SCALAR_OP, EX2, OFF); } +#line 237 "program_lexer.l" +{ return_opcode(             1, SCALAR_OP, LG2, 3); }  	YY_BREAK  case 29:  YY_RULE_SETUP -#line 213 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } +#line 238 "program_lexer.l" +{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); }  	YY_BREAK  case 30:  YY_RULE_SETUP -#line 214 "program_lexer.l" -{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } +#line 239 "program_lexer.l" +{ return_opcode(require_ARB_fp, TRI_OP, LRP, 3); }  	YY_BREAK  case 31:  YY_RULE_SETUP -#line 216 "program_lexer.l" -{ return_opcode(             1, VECTOR_OP, FLR, OFF); } +#line 241 "program_lexer.l" +{ return_opcode(             1, TRI_OP, MAD, 3); }  	YY_BREAK  case 32:  YY_RULE_SETUP -#line 217 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } +#line 242 "program_lexer.l" +{ return_opcode(             1, BIN_OP, MAX, 3); }  	YY_BREAK  case 33:  YY_RULE_SETUP -#line 218 "program_lexer.l" -{ return_opcode(             1, VECTOR_OP, FRC, OFF); } +#line 243 "program_lexer.l" +{ return_opcode(             1, BIN_OP, MIN, 3); }  	YY_BREAK  case 34:  YY_RULE_SETUP -#line 219 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } +#line 244 "program_lexer.l" +{ return_opcode(             1, VECTOR_OP, MOV, 3); }  	YY_BREAK  case 35:  YY_RULE_SETUP -#line 221 "program_lexer.l" -{ return_opcode(require_ARB_fp, KIL, KIL, OFF); } +#line 245 "program_lexer.l" +{ return_opcode(             1, BIN_OP, MUL, 3); }  	YY_BREAK  case 36:  YY_RULE_SETUP -#line 223 "program_lexer.l" -{ return_opcode(             1, VECTOR_OP, LIT, OFF); } +#line 247 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, PK2H, 4); }  	YY_BREAK  case 37:  YY_RULE_SETUP -#line 224 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } +#line 248 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, PK2US, 5); }  	YY_BREAK  case 38:  YY_RULE_SETUP -#line 225 "program_lexer.l" -{ return_opcode(             1, SCALAR_OP, LG2, OFF); } +#line 249 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, PK4B, 4); }  	YY_BREAK  case 39:  YY_RULE_SETUP -#line 226 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } +#line 250 "program_lexer.l" +{ return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, 5); }  	YY_BREAK  case 40:  YY_RULE_SETUP -#line 227 "program_lexer.l" -{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } +#line 251 "program_lexer.l" +{ return_opcode(             1, BINSC_OP, POW, 3); }  	YY_BREAK  case 41:  YY_RULE_SETUP -#line 228 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } +#line 253 "program_lexer.l" +{ return_opcode(             1, SCALAR_OP, RCP, 3); }  	YY_BREAK  case 42:  YY_RULE_SETUP -#line 229 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } +#line 254 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP,    RFL, 3); }  	YY_BREAK  case 43:  YY_RULE_SETUP -#line 231 "program_lexer.l" -{ return_opcode(             1, TRI_OP, MAD, OFF); } +#line 255 "program_lexer.l" +{ return_opcode(             1, SCALAR_OP, RSQ, 3); }  	YY_BREAK  case 44:  YY_RULE_SETUP -#line 232 "program_lexer.l" -{ return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } +#line 257 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); }  	YY_BREAK  case 45:  YY_RULE_SETUP -#line 233 "program_lexer.l" -{ return_opcode(             1, BIN_OP, MAX, OFF); } +#line 258 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, SEQ, 3); }  	YY_BREAK  case 46:  YY_RULE_SETUP -#line 234 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } +#line 259 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, SFL, 3); }  	YY_BREAK  case 47:  YY_RULE_SETUP -#line 235 "program_lexer.l" -{ return_opcode(             1, BIN_OP, MIN, OFF); } +#line 260 "program_lexer.l" +{ return_opcode(             1, BIN_OP, SGE, 3); }  	YY_BREAK  case 48:  YY_RULE_SETUP -#line 236 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } +#line 261 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, SGT, 3); }  	YY_BREAK  case 49:  YY_RULE_SETUP -#line 237 "program_lexer.l" -{ return_opcode(             1, VECTOR_OP, MOV, OFF); } +#line 262 "program_lexer.l" +{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); }  	YY_BREAK  case 50:  YY_RULE_SETUP -#line 238 "program_lexer.l" -{ return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } +#line 263 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, SLE, 3); }  	YY_BREAK  case 51:  YY_RULE_SETUP -#line 239 "program_lexer.l" -{ return_opcode(             1, BIN_OP, MUL, OFF); } +#line 264 "program_lexer.l" +{ return_opcode(             1, BIN_OP, SLT, 3); }  	YY_BREAK  case 52:  YY_RULE_SETUP -#line 240 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } +#line 265 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, SNE, 3); }  	YY_BREAK  case 53:  YY_RULE_SETUP -#line 242 "program_lexer.l" -{ return_opcode(             1, BINSC_OP, POW, OFF); } +#line 266 "program_lexer.l" +{ return_opcode(require_NV_fp,  BIN_OP, STR, 3); }  	YY_BREAK  case 54:  YY_RULE_SETUP -#line 243 "program_lexer.l" -{ return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } +#line 267 "program_lexer.l" +{ return_opcode(             1, BIN_OP, SUB, 3); }  	YY_BREAK  case 55:  YY_RULE_SETUP -#line 245 "program_lexer.l" -{ return_opcode(             1, SCALAR_OP, RCP, OFF); } +#line 268 "program_lexer.l" +{ return_opcode(             1, SWZ, SWZ, 3); }  	YY_BREAK  case 56:  YY_RULE_SETUP -#line 246 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } +#line 270 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); }  	YY_BREAK  case 57:  YY_RULE_SETUP -#line 247 "program_lexer.l" -{ return_opcode(             1, SCALAR_OP, RSQ, OFF); } +#line 271 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); }  	YY_BREAK  case 58:  YY_RULE_SETUP -#line 248 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } +#line 272 "program_lexer.l" +{ return_opcode(require_NV_fp,  TXD_OP, TXD, 3); }  	YY_BREAK  case 59:  YY_RULE_SETUP -#line 250 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } +#line 273 "program_lexer.l" +{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); }  	YY_BREAK  case 60:  YY_RULE_SETUP -#line 251 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } +#line 275 "program_lexer.l" +{ return_opcode(require_NV_fp,  SCALAR_OP, UP2H, 4); }  	YY_BREAK  case 61:  YY_RULE_SETUP -#line 252 "program_lexer.l" -{ return_opcode(             1, BIN_OP, SGE, OFF); } +#line 276 "program_lexer.l" +{ return_opcode(require_NV_fp,  SCALAR_OP, UP2US, 5); }  	YY_BREAK  case 62:  YY_RULE_SETUP -#line 253 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } +#line 277 "program_lexer.l" +{ return_opcode(require_NV_fp,  SCALAR_OP, UP4B, 4); }  	YY_BREAK  case 63:  YY_RULE_SETUP -#line 254 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } +#line 278 "program_lexer.l" +{ return_opcode(require_NV_fp,  SCALAR_OP, UP4UB, 5); }  	YY_BREAK  case 64:  YY_RULE_SETUP -#line 255 "program_lexer.l" -{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } +#line 280 "program_lexer.l" +{ return_opcode(require_NV_fp,  TRI_OP, X2D, 3); }  	YY_BREAK  case 65:  YY_RULE_SETUP -#line 256 "program_lexer.l" -{ return_opcode(             1, BIN_OP, SLT, OFF); } +#line 281 "program_lexer.l" +{ return_opcode(             1, BIN_OP, XPD, 3); }  	YY_BREAK  case 66:  YY_RULE_SETUP -#line 257 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } +#line 283 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }  	YY_BREAK  case 67:  YY_RULE_SETUP -#line 258 "program_lexer.l" -{ return_opcode(             1, BIN_OP, SUB, OFF); } +#line 284 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }  	YY_BREAK  case 68:  YY_RULE_SETUP -#line 259 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } +#line 285 "program_lexer.l" +{ return PROGRAM; }  	YY_BREAK  case 69:  YY_RULE_SETUP -#line 260 "program_lexer.l" -{ return_opcode(             1, SWZ, SWZ, OFF); } +#line 286 "program_lexer.l" +{ return STATE; }  	YY_BREAK  case 70:  YY_RULE_SETUP -#line 261 "program_lexer.l" -{ return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } +#line 287 "program_lexer.l" +{ return RESULT; }  	YY_BREAK  case 71:  YY_RULE_SETUP -#line 263 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } +#line 289 "program_lexer.l" +{ return AMBIENT; }  	YY_BREAK  case 72:  YY_RULE_SETUP -#line 264 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } +#line 290 "program_lexer.l" +{ return ATTENUATION; }  	YY_BREAK  case 73:  YY_RULE_SETUP -#line 265 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } +#line 291 "program_lexer.l" +{ return BACK; }  	YY_BREAK  case 74:  YY_RULE_SETUP -#line 266 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } +#line 292 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, CLIP); }  	YY_BREAK  case 75:  YY_RULE_SETUP -#line 267 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } +#line 293 "program_lexer.l" +{ return COLOR; }  	YY_BREAK  case 76:  YY_RULE_SETUP -#line 268 "program_lexer.l" -{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } +#line 294 "program_lexer.l" +{ return_token_or_DOT(require_ARB_fp, DEPTH); }  	YY_BREAK  case 77:  YY_RULE_SETUP -#line 270 "program_lexer.l" -{ return_opcode(             1, BIN_OP, XPD, OFF); } +#line 295 "program_lexer.l" +{ return DIFFUSE; }  	YY_BREAK  case 78:  YY_RULE_SETUP -#line 271 "program_lexer.l" -{ return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } +#line 296 "program_lexer.l" +{ return DIRECTION; }  	YY_BREAK  case 79:  YY_RULE_SETUP -#line 273 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); } +#line 297 "program_lexer.l" +{ return EMISSION; }  	YY_BREAK  case 80:  YY_RULE_SETUP -#line 274 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } +#line 298 "program_lexer.l" +{ return ENV; }  	YY_BREAK  case 81:  YY_RULE_SETUP -#line 275 "program_lexer.l" -{ return PROGRAM; } +#line 299 "program_lexer.l" +{ return EYE; }  	YY_BREAK  case 82:  YY_RULE_SETUP -#line 276 "program_lexer.l" -{ return STATE; } +#line 300 "program_lexer.l" +{ return FOGCOORD; }  	YY_BREAK  case 83:  YY_RULE_SETUP -#line 277 "program_lexer.l" -{ return RESULT; } +#line 301 "program_lexer.l" +{ return FOG; }  	YY_BREAK  case 84:  YY_RULE_SETUP -#line 279 "program_lexer.l" -{ return AMBIENT; } +#line 302 "program_lexer.l" +{ return FRONT; }  	YY_BREAK  case 85:  YY_RULE_SETUP -#line 280 "program_lexer.l" -{ return ATTENUATION; } +#line 303 "program_lexer.l" +{ return HALF; }  	YY_BREAK  case 86:  YY_RULE_SETUP -#line 281 "program_lexer.l" -{ return BACK; } +#line 304 "program_lexer.l" +{ return INVERSE; }  	YY_BREAK  case 87:  YY_RULE_SETUP -#line 282 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, CLIP); } +#line 305 "program_lexer.l" +{ return INVTRANS; }  	YY_BREAK  case 88:  YY_RULE_SETUP -#line 283 "program_lexer.l" -{ return COLOR; } +#line 306 "program_lexer.l" +{ return LIGHT; }  	YY_BREAK  case 89:  YY_RULE_SETUP -#line 284 "program_lexer.l" -{ return_token_or_DOT(require_ARB_fp, DEPTH); } +#line 307 "program_lexer.l" +{ return LIGHTMODEL; }  	YY_BREAK  case 90:  YY_RULE_SETUP -#line 285 "program_lexer.l" -{ return DIFFUSE; } +#line 308 "program_lexer.l" +{ return LIGHTPROD; }  	YY_BREAK  case 91:  YY_RULE_SETUP -#line 286 "program_lexer.l" -{ return DIRECTION; } +#line 309 "program_lexer.l" +{ return LOCAL; }  	YY_BREAK  case 92:  YY_RULE_SETUP -#line 287 "program_lexer.l" -{ return EMISSION; } +#line 310 "program_lexer.l" +{ return MATERIAL; }  	YY_BREAK  case 93:  YY_RULE_SETUP -#line 288 "program_lexer.l" -{ return ENV; } +#line 311 "program_lexer.l" +{ return MAT_PROGRAM; }  	YY_BREAK  case 94:  YY_RULE_SETUP -#line 289 "program_lexer.l" -{ return EYE; } +#line 312 "program_lexer.l" +{ return MATRIX; }  	YY_BREAK  case 95:  YY_RULE_SETUP -#line 290 "program_lexer.l" -{ return FOGCOORD; } +#line 313 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }  	YY_BREAK  case 96:  YY_RULE_SETUP -#line 291 "program_lexer.l" -{ return FOG; } +#line 314 "program_lexer.l" +{ return MODELVIEW; }  	YY_BREAK  case 97:  YY_RULE_SETUP -#line 292 "program_lexer.l" -{ return FRONT; } +#line 315 "program_lexer.l" +{ return MVP; }  	YY_BREAK  case 98:  YY_RULE_SETUP -#line 293 "program_lexer.l" -{ return HALF; } +#line 316 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, NORMAL); }  	YY_BREAK  case 99:  YY_RULE_SETUP -#line 294 "program_lexer.l" -{ return INVERSE; } +#line 317 "program_lexer.l" +{ return OBJECT; }  	YY_BREAK  case 100:  YY_RULE_SETUP -#line 295 "program_lexer.l" -{ return INVTRANS; } +#line 318 "program_lexer.l" +{ return PALETTE; }  	YY_BREAK  case 101:  YY_RULE_SETUP -#line 296 "program_lexer.l" -{ return LIGHT; } +#line 319 "program_lexer.l" +{ return PARAMS; }  	YY_BREAK  case 102:  YY_RULE_SETUP -#line 297 "program_lexer.l" -{ return LIGHTMODEL; } +#line 320 "program_lexer.l" +{ return PLANE; }  	YY_BREAK  case 103:  YY_RULE_SETUP -#line 298 "program_lexer.l" -{ return LIGHTPROD; } +#line 321 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, POINT_TOK); }  	YY_BREAK  case 104:  YY_RULE_SETUP -#line 299 "program_lexer.l" -{ return LOCAL; } +#line 322 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, POINTSIZE); }  	YY_BREAK  case 105:  YY_RULE_SETUP -#line 300 "program_lexer.l" -{ return MATERIAL; } +#line 323 "program_lexer.l" +{ return POSITION; }  	YY_BREAK  case 106:  YY_RULE_SETUP -#line 301 "program_lexer.l" -{ return MAT_PROGRAM; } +#line 324 "program_lexer.l" +{ return PRIMARY; }  	YY_BREAK  case 107:  YY_RULE_SETUP -#line 302 "program_lexer.l" -{ return MATRIX; } +#line 325 "program_lexer.l" +{ return PROJECTION; }  	YY_BREAK  case 108:  YY_RULE_SETUP -#line 303 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); } +#line 326 "program_lexer.l" +{ return_token_or_DOT(require_ARB_fp, RANGE); }  	YY_BREAK  case 109:  YY_RULE_SETUP -#line 304 "program_lexer.l" -{ return MODELVIEW; } +#line 327 "program_lexer.l" +{ return ROW; }  	YY_BREAK  case 110:  YY_RULE_SETUP -#line 305 "program_lexer.l" -{ return MVP; } +#line 328 "program_lexer.l" +{ return SCENECOLOR; }  	YY_BREAK  case 111:  YY_RULE_SETUP -#line 306 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, NORMAL); } +#line 329 "program_lexer.l" +{ return SECONDARY; }  	YY_BREAK  case 112:  YY_RULE_SETUP -#line 307 "program_lexer.l" -{ return OBJECT; } +#line 330 "program_lexer.l" +{ return SHININESS; }  	YY_BREAK  case 113:  YY_RULE_SETUP -#line 308 "program_lexer.l" -{ return PALETTE; } +#line 331 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, SIZE_TOK); }  	YY_BREAK  case 114:  YY_RULE_SETUP -#line 309 "program_lexer.l" -{ return PARAMS; } +#line 332 "program_lexer.l" +{ return SPECULAR; }  	YY_BREAK  case 115:  YY_RULE_SETUP -#line 310 "program_lexer.l" -{ return PLANE; } +#line 333 "program_lexer.l" +{ return SPOT; }  	YY_BREAK  case 116:  YY_RULE_SETUP -#line 311 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, POINT_TOK); } +#line 334 "program_lexer.l" +{ return TEXCOORD; }  	YY_BREAK  case 117:  YY_RULE_SETUP -#line 312 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, POINTSIZE); } +#line 335 "program_lexer.l" +{ return_token_or_DOT(require_ARB_fp, TEXENV); }  	YY_BREAK  case 118:  YY_RULE_SETUP -#line 313 "program_lexer.l" -{ return POSITION; } +#line 336 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, TEXGEN); }  	YY_BREAK  case 119:  YY_RULE_SETUP -#line 314 "program_lexer.l" -{ return PRIMARY; } +#line 337 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }  	YY_BREAK  case 120:  YY_RULE_SETUP -#line 315 "program_lexer.l" -{ return PROJECTION; } +#line 338 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); }  	YY_BREAK  case 121:  YY_RULE_SETUP -#line 316 "program_lexer.l" -{ return_token_or_DOT(require_ARB_fp, RANGE); } +#line 339 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); }  	YY_BREAK  case 122:  YY_RULE_SETUP -#line 317 "program_lexer.l" -{ return ROW; } +#line 340 "program_lexer.l" +{ return TEXTURE; }  	YY_BREAK  case 123:  YY_RULE_SETUP -#line 318 "program_lexer.l" -{ return SCENECOLOR; } +#line 341 "program_lexer.l" +{ return TRANSPOSE; }  	YY_BREAK  case 124:  YY_RULE_SETUP -#line 319 "program_lexer.l" -{ return SECONDARY; } +#line 342 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); }  	YY_BREAK  case 125:  YY_RULE_SETUP -#line 320 "program_lexer.l" -{ return SHININESS; } +#line 343 "program_lexer.l" +{ return_token_or_DOT(require_ARB_vp, WEIGHT); }  	YY_BREAK  case 126:  YY_RULE_SETUP -#line 321 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, SIZE_TOK); } +#line 345 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }  	YY_BREAK  case 127:  YY_RULE_SETUP -#line 322 "program_lexer.l" -{ return SPECULAR; } +#line 346 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }  	YY_BREAK  case 128:  YY_RULE_SETUP -#line 323 "program_lexer.l" -{ return SPOT; } +#line 347 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }  	YY_BREAK  case 129:  YY_RULE_SETUP -#line 324 "program_lexer.l" -{ return TEXCOORD; } +#line 348 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }  	YY_BREAK  case 130:  YY_RULE_SETUP -#line 325 "program_lexer.l" -{ return_token_or_DOT(require_ARB_fp, TEXENV); } +#line 349 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }  	YY_BREAK  case 131:  YY_RULE_SETUP -#line 326 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, TEXGEN); } +#line 350 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }  	YY_BREAK  case 132:  YY_RULE_SETUP -#line 327 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); } +#line 351 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }  	YY_BREAK  case 133:  YY_RULE_SETUP -#line 328 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); } +#line 352 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }  	YY_BREAK  case 134:  YY_RULE_SETUP -#line 329 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); } +#line 353 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }  	YY_BREAK  case 135:  YY_RULE_SETUP -#line 330 "program_lexer.l" -{ return TEXTURE; } +#line 354 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }  	YY_BREAK  case 136:  YY_RULE_SETUP -#line 331 "program_lexer.l" -{ return TRANSPOSE; } +#line 355 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }  	YY_BREAK  case 137:  YY_RULE_SETUP -#line 332 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); } +#line 356 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }  	YY_BREAK  case 138:  YY_RULE_SETUP -#line 333 "program_lexer.l" -{ return_token_or_DOT(require_ARB_vp, WEIGHT); } +#line 357 "program_lexer.l" +{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }  	YY_BREAK  case 139:  YY_RULE_SETUP -#line 335 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); } +#line 359 "program_lexer.l" +{ return handle_ident(yyextra, yytext, yylval); }  	YY_BREAK  case 140:  YY_RULE_SETUP -#line 336 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); } -	YY_BREAK -case 141: -YY_RULE_SETUP -#line 337 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); } -	YY_BREAK -case 142: -YY_RULE_SETUP -#line 338 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); } -	YY_BREAK -case 143: -YY_RULE_SETUP -#line 339 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); } -	YY_BREAK -case 144: -YY_RULE_SETUP -#line 340 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); } -	YY_BREAK -case 145: -YY_RULE_SETUP -#line 341 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); } -	YY_BREAK -case 146: -YY_RULE_SETUP -#line 342 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); } -	YY_BREAK -case 147: -YY_RULE_SETUP -#line 343 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); } -	YY_BREAK -case 148: -YY_RULE_SETUP -#line 344 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); } -	YY_BREAK -case 149: -YY_RULE_SETUP -#line 345 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); } -	YY_BREAK -case 150: -YY_RULE_SETUP -#line 346 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); } -	YY_BREAK -case 151: -YY_RULE_SETUP -#line 347 "program_lexer.l" -{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } -	YY_BREAK -case 152: -YY_RULE_SETUP -#line 349 "program_lexer.l" -{ -   yylval->string = return_string(yyextra, yytext); -   return IDENTIFIER; -} -	YY_BREAK -case 153: -YY_RULE_SETUP -#line 354 "program_lexer.l" +#line 361 "program_lexer.l"  { return DOT_DOT; }  	YY_BREAK -case 154: +case 141:  YY_RULE_SETUP -#line 356 "program_lexer.l" +#line 363 "program_lexer.l"  {     yylval->integer = strtol(yytext, NULL, 10);     return INTEGER;  }  	YY_BREAK -case 155: +case 142:  YY_RULE_SETUP -#line 360 "program_lexer.l" +#line 367 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL;  }  	YY_BREAK -case 156: -/* rule 156 can match eol */ +case 143: +/* rule 143 can match eol */  *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */  yyg->yy_c_buf_p = yy_cp -= 1;  YY_DO_BEFORE_ACTION; /* set up yytext again */  YY_RULE_SETUP -#line 364 "program_lexer.l" +#line 371 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL;  }  	YY_BREAK -case 157: +case 144:  YY_RULE_SETUP -#line 368 "program_lexer.l" +#line 375 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL;  }  	YY_BREAK -case 158: +case 145:  YY_RULE_SETUP -#line 372 "program_lexer.l" +#line 379 "program_lexer.l"  {     yylval->real = _mesa_strtod(yytext, NULL);     return REAL;  }  	YY_BREAK -case 159: +case 146:  YY_RULE_SETUP -#line 377 "program_lexer.l" +#line 384 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;     yylval->swiz_mask.mask = WRITEMASK_XYZW;     return MASK4;  }  	YY_BREAK -case 160: +case 147:  YY_RULE_SETUP -#line 383 "program_lexer.l" +#line 390 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XY @@ -2222,27 +2290,27 @@ YY_RULE_SETUP     return MASK3;  }  	YY_BREAK -case 161: +case 148:  YY_RULE_SETUP -#line 389 "program_lexer.l" +#line 396 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XZW;     return MASK3;  }  	YY_BREAK -case 162: +case 149:  YY_RULE_SETUP -#line 394 "program_lexer.l" +#line 401 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_YZW;     return MASK3;  }  	YY_BREAK -case 163: +case 150:  YY_RULE_SETUP -#line 400 "program_lexer.l" +#line 407 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_X @@ -2250,9 +2318,9 @@ YY_RULE_SETUP     return MASK2;  }  	YY_BREAK -case 164: +case 151:  YY_RULE_SETUP -#line 406 "program_lexer.l" +#line 413 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_Y @@ -2260,18 +2328,18 @@ YY_RULE_SETUP     return MASK2;  }  	YY_BREAK -case 165: +case 152:  YY_RULE_SETUP -#line 412 "program_lexer.l" +#line 419 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_ZW;     return MASK2;  }  	YY_BREAK -case 166: +case 153:  YY_RULE_SETUP -#line 418 "program_lexer.l" +#line 425 "program_lexer.l"  {     const unsigned s = swiz_from_char(yytext[1]);     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2279,9 +2347,9 @@ YY_RULE_SETUP     return MASK1;   }  	YY_BREAK -case 167: +case 154:  YY_RULE_SETUP -#line 425 "program_lexer.l" +#line 432 "program_lexer.l"  {     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),  					    swiz_from_char(yytext[2]), @@ -2291,18 +2359,18 @@ YY_RULE_SETUP     return SWIZZLE;  }  	YY_BREAK -case 168: +case 155:  YY_RULE_SETUP -#line 434 "program_lexer.l" +#line 441 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_NOOP;     yylval->swiz_mask.mask = WRITEMASK_XYZW;     return_token_or_DOT(require_ARB_fp, MASK4);  }  	YY_BREAK -case 169: +case 156:  YY_RULE_SETUP -#line 440 "program_lexer.l" +#line 447 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XY @@ -2310,27 +2378,27 @@ YY_RULE_SETUP     return_token_or_DOT(require_ARB_fp, MASK3);  }  	YY_BREAK -case 170: +case 157:  YY_RULE_SETUP -#line 446 "program_lexer.l" +#line 453 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_XZW;     return_token_or_DOT(require_ARB_fp, MASK3);  }  	YY_BREAK -case 171: +case 158:  YY_RULE_SETUP -#line 451 "program_lexer.l" +#line 458 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_YZW;     return_token_or_DOT(require_ARB_fp, MASK3);  }  	YY_BREAK -case 172: +case 159:  YY_RULE_SETUP -#line 457 "program_lexer.l" +#line 464 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_X @@ -2338,9 +2406,9 @@ YY_RULE_SETUP     return_token_or_DOT(require_ARB_fp, MASK2);  }  	YY_BREAK -case 173: +case 160:  YY_RULE_SETUP -#line 463 "program_lexer.l" +#line 470 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_Y @@ -2348,18 +2416,18 @@ YY_RULE_SETUP     return_token_or_DOT(require_ARB_fp, MASK2);  }  	YY_BREAK -case 174: +case 161:  YY_RULE_SETUP -#line 469 "program_lexer.l" +#line 476 "program_lexer.l"  {     yylval->swiz_mask.swizzle = SWIZZLE_INVAL;     yylval->swiz_mask.mask = WRITEMASK_ZW;     return_token_or_DOT(require_ARB_fp, MASK2);  }  	YY_BREAK -case 175: +case 162:  YY_RULE_SETUP -#line 475 "program_lexer.l" +#line 482 "program_lexer.l"  {     const unsigned s = swiz_from_char(yytext[1]);     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s); @@ -2367,9 +2435,9 @@ YY_RULE_SETUP     return_token_or_DOT(require_ARB_fp, MASK1);  }  	YY_BREAK -case 176: +case 163:  YY_RULE_SETUP -#line 483 "program_lexer.l" +#line 490 "program_lexer.l"  {     if (require_ARB_vp) {        return TEXGEN_R; @@ -2381,9 +2449,9 @@ YY_RULE_SETUP     }  }  	YY_BREAK -case 177: +case 164:  YY_RULE_SETUP -#line 494 "program_lexer.l" +#line 501 "program_lexer.l"  {     yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),  					    swiz_from_char(yytext[2]), @@ -2393,15 +2461,15 @@ YY_RULE_SETUP     return_token_or_DOT(require_ARB_fp, SWIZZLE);  }  	YY_BREAK -case 178: +case 165:  YY_RULE_SETUP -#line 503 "program_lexer.l" +#line 510 "program_lexer.l"  { return DOT; }  	YY_BREAK -case 179: -/* rule 179 can match eol */ +case 166: +/* rule 166 can match eol */  YY_RULE_SETUP -#line 505 "program_lexer.l" +#line 512 "program_lexer.l"  {     yylloc->first_line++;     yylloc->first_column = 1; @@ -2410,30 +2478,30 @@ YY_RULE_SETUP     yylloc->position++;  }  	YY_BREAK -case 180: +case 167:  YY_RULE_SETUP -#line 512 "program_lexer.l" +#line 519 "program_lexer.l"  /* eat whitespace */ ;  	YY_BREAK -case 181: +case 168:  *yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */  yyg->yy_c_buf_p = yy_cp -= 1;  YY_DO_BEFORE_ACTION; /* set up yytext again */  YY_RULE_SETUP -#line 513 "program_lexer.l" +#line 520 "program_lexer.l"  /* eat comments */ ;  	YY_BREAK -case 182: +case 169:  YY_RULE_SETUP -#line 514 "program_lexer.l" +#line 521 "program_lexer.l"  { return yytext[0]; }  	YY_BREAK -case 183: +case 170:  YY_RULE_SETUP -#line 515 "program_lexer.l" +#line 522 "program_lexer.l"  ECHO;  	YY_BREAK -#line 2437 "lex.yy.c" +#line 2505 "lex.yy.c"  case YY_STATE_EOF(INITIAL):  	yyterminate(); @@ -2727,7 +2795,7 @@ static int yy_get_next_buffer (yyscan_t yyscanner)  		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  			{  			yy_current_state = (int) yy_def[yy_current_state]; -			if ( yy_current_state >= 675 ) +			if ( yy_current_state >= 850 )  				yy_c = yy_meta[(unsigned int) yy_c];  			}  		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; @@ -2756,11 +2824,11 @@ static int yy_get_next_buffer (yyscan_t yyscanner)  	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )  		{  		yy_current_state = (int) yy_def[yy_current_state]; -		if ( yy_current_state >= 675 ) +		if ( yy_current_state >= 850 )  			yy_c = yy_meta[(unsigned int) yy_c];  		}  	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; -	yy_is_jam = (yy_current_state == 674); +	yy_is_jam = (yy_current_state == 849);  	return yy_is_jam ? 0 : yy_current_state;  } @@ -3201,8 +3269,8 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr , yyscan_t yyscanner)  /** Setup the input buffer state to scan the given bytes. The next call to yylex() will   * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes.   * @param yyscanner The scanner object.   * @return the newly allocated buffer state object.   */ @@ -3608,7 +3676,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)  #define YYTABLES_NAME "yytables" -#line 515 "program_lexer.l" +#line 522 "program_lexer.l" diff --git a/src/mesa/shader/prog_instruction.h b/src/mesa/shader/prog_instruction.h index 39a221eeab..1c687bc16c 100644 --- a/src/mesa/shader/prog_instruction.h +++ b/src/mesa/shader/prog_instruction.h @@ -121,7 +121,6 @@  /*@{*/  #define SATURATE_OFF            0  #define SATURATE_ZERO_ONE       1 -#define SATURATE_PLUS_MINUS_ONE 2  /*@}*/ diff --git a/src/mesa/shader/prog_print.c b/src/mesa/shader/prog_print.c index b71735aa80..ba4d39452f 100644 --- a/src/mesa/shader/prog_print.c +++ b/src/mesa/shader/prog_print.c @@ -788,7 +788,7 @@ _mesa_fprint_program_opt(FILE *f,        else if (mode == PROG_PRINT_NV)           _mesa_fprintf(f, "!!VP1.0\n");        else -         _mesa_fprintf(f, "# Vertex Program/Shader\n"); +         _mesa_fprintf(f, "# Vertex Program/Shader %u\n", prog->Id);        break;     case GL_FRAGMENT_PROGRAM_ARB:     case GL_FRAGMENT_PROGRAM_NV: @@ -797,7 +797,7 @@ _mesa_fprint_program_opt(FILE *f,        else if (mode == PROG_PRINT_NV)           _mesa_fprintf(f, "!!FP1.0\n");        else -         _mesa_fprintf(f, "# Fragment Program/Shader\n"); +         _mesa_fprintf(f, "# Fragment Program/Shader %u\n", prog->Id);        break;     } @@ -906,7 +906,8 @@ _mesa_fprint_parameter_list(FILE *f,     if (!list)        return; -   _mesa_fprintf(f, "param list %p\n", (void *) list); +   if (0) +      _mesa_fprintf(f, "param list %p\n", (void *) list);     _mesa_fprintf(f, "dirty state flags: 0x%x\n", list->StateFlags);     for (i = 0; i < list->NumParameters; i++){        struct gl_program_parameter *param = list->Parameters + i; diff --git a/src/mesa/shader/program.c b/src/mesa/shader/program.c index 2cd6eb8a38..532adf4d36 100644 --- a/src/mesa/shader/program.c +++ b/src/mesa/shader/program.c @@ -351,13 +351,6 @@ _mesa_delete_program(GLcontext *ctx, struct gl_program *prog)        _mesa_free_parameter_list(prog->Attributes);     } -   /* XXX this is a little ugly */ -   if (prog->Target == GL_VERTEX_PROGRAM_ARB) { -      struct gl_vertex_program *vprog = (struct gl_vertex_program *) prog; -      if (vprog->TnlData) -         _mesa_free(vprog->TnlData); -   } -     _mesa_free(prog);  } diff --git a/src/mesa/shader/program_lexer.l b/src/mesa/shader/program_lexer.l index 6c4fad3037..b50fb3c7dc 100644 --- a/src/mesa/shader/program_lexer.l +++ b/src/mesa/shader/program_lexer.l @@ -26,15 +26,21 @@  #include "prog_instruction.h"  #include "prog_statevars.h" +#include "symbol_table.h"  #include "program_parser.h"  #include "program_parse.tab.h"  #define require_ARB_vp (yyextra->mode == ARB_vertex)  #define require_ARB_fp (yyextra->mode == ARB_fragment) +#define require_NV_fp  (yyextra->option.NV_fragment)  #define require_shadow (yyextra->option.Shadow)  #define require_rect   (yyextra->option.TexRect)  #define require_texarray        (yyextra->option.TexArray) +#ifndef HAVE_UNISTD_H +#define YY_NO_UNISTD_H +#endif +  #define return_token_or_IDENTIFIER(condition, token)	\     do {							\        if (condition) {					\ @@ -56,11 +62,13 @@     } while (0) -#define return_opcode(condition, token, opcode, sat)	\ +#define return_opcode(condition, token, opcode, len)	\     do {							\ -      if (condition) {					\ +      if (condition &&					\ +	  _mesa_parse_instruction_suffix(yyextra,	\ +					 yytext + len,	\ +					 & yylval->temp_inst)) {	\  	 yylval->temp_inst.Opcode = OPCODE_ ## opcode;	\ -	 yylval->temp_inst.SaturateMode = SATURATE_ ## sat; \  	 return token;					\        } else {						\  	 yylval->string = return_string(yyextra, yytext);		\ @@ -152,6 +160,15 @@ swiz_from_char(char c)     return 0;  } +static int +handle_ident(struct asm_parser_state *state, const char *text, YYSTYPE *lval) +{ +   lval->string = strdup(text); + +   return (_mesa_symbol_table_find_symbol(state->st, 0, text) == NULL) +      ? IDENTIFIER : USED_IDENTIFIER; +} +  #define YY_USER_ACTION							\     do {									\        yylloc->first_column = yylloc->last_column;			\ @@ -172,6 +189,11 @@ exp    [Ee][-+]?[0-9]+  frac   "."[0-9]+  dot    "."[ \t]* +sz     [HRX]? +szf    [HR]? +cc     C? +sat    (_SAT)? +  %option bison-bridge bison-locations reentrant noyywrap  %% @@ -189,86 +211,74 @@ OUTPUT                    { return OUTPUT; }  PARAM                     { return PARAM; }  TEMP                      { yylval->integer = at_temp; return TEMP; } -ABS       { return_opcode(             1, VECTOR_OP, ABS, OFF); } -ABS_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); } -ADD       { return_opcode(             1, BIN_OP, ADD, OFF); } -ADD_SAT   { return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); } -ARL       { return_opcode(require_ARB_vp, ARL, ARL, OFF); } +ABS{sz}{cc}{sat}   { return_opcode(             1, VECTOR_OP, ABS, 3); } +ADD{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, ADD, 3); } +ARL                { return_opcode(require_ARB_vp, ARL, ARL, 3); } -CMP       { return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); } -CMP_SAT   { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); } -COS       { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); } -COS_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); } +CMP{sat}           { return_opcode(require_ARB_fp, TRI_OP, CMP, 3); } +COS{szf}{cc}{sat}  { return_opcode(require_ARB_fp, SCALAR_OP, COS, 3); } -DP3       { return_opcode(             1, BIN_OP, DP3, OFF); } -DP3_SAT   { return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); } -DP4       { return_opcode(             1, BIN_OP, DP4, OFF); } -DP4_SAT   { return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); } -DPH       { return_opcode(             1, BIN_OP, DPH, OFF); } -DPH_SAT   { return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); } -DST       { return_opcode(             1, BIN_OP, DST, OFF); } -DST_SAT   { return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); } +DDX{szf}{cc}{sat}  { return_opcode(require_NV_fp,  VECTOR_OP, DDX, 3); } +DDY{szf}{cc}{sat}  { return_opcode(require_NV_fp,  VECTOR_OP, DDY, 3); } +DP3{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, DP3, 3); } +DP4{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, DP4, 3); } +DPH{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, DPH, 3); } +DST{szf}{cc}{sat}  { return_opcode(             1, BIN_OP, DST, 3); } -EX2       { return_opcode(             1, SCALAR_OP, EX2, OFF); } -EX2_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); } -EXP       { return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); } +EX2{szf}{cc}{sat}  { return_opcode(             1, SCALAR_OP, EX2, 3); } +EXP                { return_opcode(require_ARB_vp, SCALAR_OP, EXP, 3); } -FLR       { return_opcode(             1, VECTOR_OP, FLR, OFF); } -FLR_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); } -FRC       { return_opcode(             1, VECTOR_OP, FRC, OFF); } -FRC_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); } +FLR{sz}{cc}{sat}   { return_opcode(             1, VECTOR_OP, FLR, 3); } +FRC{sz}{cc}{sat}   { return_opcode(             1, VECTOR_OP, FRC, 3); } -KIL       { return_opcode(require_ARB_fp, KIL, KIL, OFF); } +KIL                { return_opcode(require_ARB_fp, KIL, KIL, 3); } -LIT       { return_opcode(             1, VECTOR_OP, LIT, OFF); } -LIT_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); } -LG2       { return_opcode(             1, SCALAR_OP, LG2, OFF); } -LG2_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); } -LOG       { return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); } -LRP       { return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); } -LRP_SAT   { return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); } +LIT{szf}{cc}{sat}  { return_opcode(             1, VECTOR_OP, LIT, 3); } +LG2{szf}{cc}{sat}  { return_opcode(             1, SCALAR_OP, LG2, 3); } +LOG                { return_opcode(require_ARB_vp, SCALAR_OP, LOG, 3); } +LRP{sz}{cc}{sat}   { return_opcode(require_ARB_fp, TRI_OP, LRP, 3); } -MAD       { return_opcode(             1, TRI_OP, MAD, OFF); } -MAD_SAT   { return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); } -MAX       { return_opcode(             1, BIN_OP, MAX, OFF); } -MAX_SAT   { return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); } -MIN       { return_opcode(             1, BIN_OP, MIN, OFF); } -MIN_SAT   { return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); } -MOV       { return_opcode(             1, VECTOR_OP, MOV, OFF); } -MOV_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); } -MUL       { return_opcode(             1, BIN_OP, MUL, OFF); } -MUL_SAT   { return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); } +MAD{sz}{cc}{sat}   { return_opcode(             1, TRI_OP, MAD, 3); } +MAX{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, MAX, 3); } +MIN{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, MIN, 3); } +MOV{sz}{cc}{sat}   { return_opcode(             1, VECTOR_OP, MOV, 3); } +MUL{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, MUL, 3); } -POW       { return_opcode(             1, BINSC_OP, POW, OFF); } -POW_SAT   { return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); } +PK2H               { return_opcode(require_NV_fp,  VECTOR_OP, PK2H, 4); } +PK2US              { return_opcode(require_NV_fp,  VECTOR_OP, PK2US, 5); } +PK4B               { return_opcode(require_NV_fp,  VECTOR_OP, PK4B, 4); } +PK4UB              { return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, 5); } +POW{szf}{cc}{sat}  { return_opcode(             1, BINSC_OP, POW, 3); } -RCP       { return_opcode(             1, SCALAR_OP, RCP, OFF); } -RCP_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); } -RSQ       { return_opcode(             1, SCALAR_OP, RSQ, OFF); } -RSQ_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); } +RCP{szf}{cc}{sat}  { return_opcode(             1, SCALAR_OP, RCP, 3); } +RFL{szf}{cc}{sat}  { return_opcode(require_NV_fp,  BIN_OP,    RFL, 3); } +RSQ{szf}{cc}{sat}  { return_opcode(             1, SCALAR_OP, RSQ, 3); } -SCS       { return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); } -SCS_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); } -SGE       { return_opcode(             1, BIN_OP, SGE, OFF); } -SGE_SAT   { return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); } -SIN       { return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); } -SIN_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); } -SLT       { return_opcode(             1, BIN_OP, SLT, OFF); } -SLT_SAT   { return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); } -SUB       { return_opcode(             1, BIN_OP, SUB, OFF); } -SUB_SAT   { return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); } -SWZ       { return_opcode(             1, SWZ, SWZ, OFF); } -SWZ_SAT   { return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); } +SCS{sat}           { return_opcode(require_ARB_fp, SCALAR_OP, SCS, 3); } +SEQ{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, SEQ, 3); } +SFL{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, SFL, 3); } +SGE{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, SGE, 3); } +SGT{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, SGT, 3); } +SIN{szf}{cc}{sat}  { return_opcode(require_ARB_fp, SCALAR_OP, SIN, 3); } +SLE{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, SLE, 3); } +SLT{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, SLT, 3); } +SNE{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, SNE, 3); } +STR{sz}{cc}{sat}   { return_opcode(require_NV_fp,  BIN_OP, STR, 3); } +SUB{sz}{cc}{sat}   { return_opcode(             1, BIN_OP, SUB, 3); } +SWZ{sat}           { return_opcode(             1, SWZ, SWZ, 3); } -TEX       { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); } -TEX_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); } -TXB       { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); } -TXB_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); } -TXP       { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); } -TXP_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); } +TEX{cc}{sat}       { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, 3); } +TXB{cc}{sat}       { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, 3); } +TXD{cc}{sat}       { return_opcode(require_NV_fp,  TXD_OP, TXD, 3); } +TXP{cc}{sat}       { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, 3); } -XPD       { return_opcode(             1, BIN_OP, XPD, OFF); } -XPD_SAT   { return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); } +UP2H{cc}{sat}      { return_opcode(require_NV_fp,  SCALAR_OP, UP2H, 4); } +UP2US{cc}{sat}     { return_opcode(require_NV_fp,  SCALAR_OP, UP2US, 5); } +UP4B{cc}{sat}      { return_opcode(require_NV_fp,  SCALAR_OP, UP4B, 4); } +UP4UB{cc}{sat}     { return_opcode(require_NV_fp,  SCALAR_OP, UP4UB, 5); } + +X2D{szf}{cc}{sat}  { return_opcode(require_NV_fp,  TRI_OP, X2D, 3); } +XPD{sat}           { return_opcode(             1, BIN_OP, XPD, 3); }  vertex                    { return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }  fragment                  { return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); } @@ -346,10 +356,7 @@ ARRAY2D                   { return_token_or_IDENTIFIER(require_ARB_fp && require  ARRAYSHADOW1D             { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }  ARRAYSHADOW2D             { return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); } -[_a-zA-Z$][_a-zA-Z0-9$]*  { -   yylval->string = return_string(yyextra, yytext); -   return IDENTIFIER; -} +[_a-zA-Z$][_a-zA-Z0-9$]*  { return handle_ident(yyextra, yytext, yylval); }  ".."                      { return DOT_DOT; } diff --git a/src/mesa/shader/program_parse.tab.c b/src/mesa/shader/program_parse.tab.c index 261b605a2d..6e4095eca6 100644 --- a/src/mesa/shader/program_parse.tab.c +++ b/src/mesa/shader/program_parse.tab.c @@ -1,23 +1,24 @@ - -/* A Bison parser, made by GNU Bison 2.4.1.  */ +/* A Bison parser, made by GNU Bison 2.3.  */  /* Skeleton implementation for Bison's Yacc-like parsers in C -    -      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + +   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006     Free Software Foundation, Inc. -    -   This program is free software: you can redistribute it and/or modify + +   This program is free software; you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by -   the Free Software Foundation, either version 3 of the License, or -   (at your option) any later version. -    +   the Free Software Foundation; either version 2, or (at your option) +   any later version. +     This program is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details. -    +     You should have received a copy of the GNU General Public License -   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ +   along with this program; if not, write to the Free Software +   Foundation, Inc., 51 Franklin Street, Fifth Floor, +   Boston, MA 02110-1301, USA.  */  /* As a special exception, you may create a larger work that contains     part or all of the Bison parser skeleton and distribute that work @@ -28,7 +29,7 @@     special exception, which will cause the skeleton and the resulting     Bison output files to be licensed under the GNU General Public     License without this special exception. -    +     This special exception was added by the Free Software Foundation in     version 2.2 of Bison.  */ @@ -46,7 +47,7 @@  #define YYBISON 1  /* Bison version.  */ -#define YYBISON_VERSION "2.4.1" +#define YYBISON_VERSION "2.3"  /* Skeleton name.  */  #define YYSKELETON_NAME "yacc.c" @@ -54,20 +55,235 @@  /* Pure parsers.  */  #define YYPURE 1 -/* Push parsers.  */ -#define YYPUSH 0 - -/* Pull parsers.  */ -#define YYPULL 1 -  /* Using locations.  */  #define YYLSP_NEEDED 1 -/* Copy the first part of user declarations.  */ +/* Tokens.  */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE +   /* Put the tokens into the symbol table, so that GDB and other debuggers +      know about them.  */ +   enum yytokentype { +     ARBvp_10 = 258, +     ARBfp_10 = 259, +     ADDRESS = 260, +     ALIAS = 261, +     ATTRIB = 262, +     OPTION = 263, +     OUTPUT = 264, +     PARAM = 265, +     TEMP = 266, +     END = 267, +     BIN_OP = 268, +     BINSC_OP = 269, +     SAMPLE_OP = 270, +     SCALAR_OP = 271, +     TRI_OP = 272, +     VECTOR_OP = 273, +     ARL = 274, +     KIL = 275, +     SWZ = 276, +     TXD_OP = 277, +     INTEGER = 278, +     REAL = 279, +     AMBIENT = 280, +     ATTENUATION = 281, +     BACK = 282, +     CLIP = 283, +     COLOR = 284, +     DEPTH = 285, +     DIFFUSE = 286, +     DIRECTION = 287, +     EMISSION = 288, +     ENV = 289, +     EYE = 290, +     FOG = 291, +     FOGCOORD = 292, +     FRAGMENT = 293, +     FRONT = 294, +     HALF = 295, +     INVERSE = 296, +     INVTRANS = 297, +     LIGHT = 298, +     LIGHTMODEL = 299, +     LIGHTPROD = 300, +     LOCAL = 301, +     MATERIAL = 302, +     MAT_PROGRAM = 303, +     MATRIX = 304, +     MATRIXINDEX = 305, +     MODELVIEW = 306, +     MVP = 307, +     NORMAL = 308, +     OBJECT = 309, +     PALETTE = 310, +     PARAMS = 311, +     PLANE = 312, +     POINT_TOK = 313, +     POINTSIZE = 314, +     POSITION = 315, +     PRIMARY = 316, +     PROGRAM = 317, +     PROJECTION = 318, +     RANGE = 319, +     RESULT = 320, +     ROW = 321, +     SCENECOLOR = 322, +     SECONDARY = 323, +     SHININESS = 324, +     SIZE_TOK = 325, +     SPECULAR = 326, +     SPOT = 327, +     STATE = 328, +     TEXCOORD = 329, +     TEXENV = 330, +     TEXGEN = 331, +     TEXGEN_Q = 332, +     TEXGEN_R = 333, +     TEXGEN_S = 334, +     TEXGEN_T = 335, +     TEXTURE = 336, +     TRANSPOSE = 337, +     TEXTURE_UNIT = 338, +     TEX_1D = 339, +     TEX_2D = 340, +     TEX_3D = 341, +     TEX_CUBE = 342, +     TEX_RECT = 343, +     TEX_SHADOW1D = 344, +     TEX_SHADOW2D = 345, +     TEX_SHADOWRECT = 346, +     TEX_ARRAY1D = 347, +     TEX_ARRAY2D = 348, +     TEX_ARRAYSHADOW1D = 349, +     TEX_ARRAYSHADOW2D = 350, +     VERTEX = 351, +     VTXATTRIB = 352, +     WEIGHT = 353, +     IDENTIFIER = 354, +     USED_IDENTIFIER = 355, +     MASK4 = 356, +     MASK3 = 357, +     MASK2 = 358, +     MASK1 = 359, +     SWIZZLE = 360, +     DOT_DOT = 361, +     DOT = 362 +   }; +#endif +/* Tokens.  */ +#define ARBvp_10 258 +#define ARBfp_10 259 +#define ADDRESS 260 +#define ALIAS 261 +#define ATTRIB 262 +#define OPTION 263 +#define OUTPUT 264 +#define PARAM 265 +#define TEMP 266 +#define END 267 +#define BIN_OP 268 +#define BINSC_OP 269 +#define SAMPLE_OP 270 +#define SCALAR_OP 271 +#define TRI_OP 272 +#define VECTOR_OP 273 +#define ARL 274 +#define KIL 275 +#define SWZ 276 +#define TXD_OP 277 +#define INTEGER 278 +#define REAL 279 +#define AMBIENT 280 +#define ATTENUATION 281 +#define BACK 282 +#define CLIP 283 +#define COLOR 284 +#define DEPTH 285 +#define DIFFUSE 286 +#define DIRECTION 287 +#define EMISSION 288 +#define ENV 289 +#define EYE 290 +#define FOG 291 +#define FOGCOORD 292 +#define FRAGMENT 293 +#define FRONT 294 +#define HALF 295 +#define INVERSE 296 +#define INVTRANS 297 +#define LIGHT 298 +#define LIGHTMODEL 299 +#define LIGHTPROD 300 +#define LOCAL 301 +#define MATERIAL 302 +#define MAT_PROGRAM 303 +#define MATRIX 304 +#define MATRIXINDEX 305 +#define MODELVIEW 306 +#define MVP 307 +#define NORMAL 308 +#define OBJECT 309 +#define PALETTE 310 +#define PARAMS 311 +#define PLANE 312 +#define POINT_TOK 313 +#define POINTSIZE 314 +#define POSITION 315 +#define PRIMARY 316 +#define PROGRAM 317 +#define PROJECTION 318 +#define RANGE 319 +#define RESULT 320 +#define ROW 321 +#define SCENECOLOR 322 +#define SECONDARY 323 +#define SHININESS 324 +#define SIZE_TOK 325 +#define SPECULAR 326 +#define SPOT 327 +#define STATE 328 +#define TEXCOORD 329 +#define TEXENV 330 +#define TEXGEN 331 +#define TEXGEN_Q 332 +#define TEXGEN_R 333 +#define TEXGEN_S 334 +#define TEXGEN_T 335 +#define TEXTURE 336 +#define TRANSPOSE 337 +#define TEXTURE_UNIT 338 +#define TEX_1D 339 +#define TEX_2D 340 +#define TEX_3D 341 +#define TEX_CUBE 342 +#define TEX_RECT 343 +#define TEX_SHADOW1D 344 +#define TEX_SHADOW2D 345 +#define TEX_SHADOWRECT 346 +#define TEX_ARRAY1D 347 +#define TEX_ARRAY2D 348 +#define TEX_ARRAYSHADOW1D 349 +#define TEX_ARRAYSHADOW2D 350 +#define VERTEX 351 +#define VTXATTRIB 352 +#define WEIGHT 353 +#define IDENTIFIER 354 +#define USED_IDENTIFIER 355 +#define MASK4 356 +#define MASK3 357 +#define MASK2 358 +#define MASK1 359 +#define SWIZZLE 360 +#define DOT_DOT 361 +#define DOT 362 + + + -/* Line 189 of yacc.c  */ +/* Copy the first part of user declarations.  */  #line 1 "program_parse.y"  /* @@ -139,10 +355,19 @@ static void init_dst_reg(struct prog_dst_register *r);  static void init_src_reg(struct asm_src_register *r); +static void asm_instruction_set_operands(struct asm_instruction *inst, +    const struct prog_dst_register *dst, const struct asm_src_register *src0, +    const struct asm_src_register *src1, const struct asm_src_register *src2); +  static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,      const struct prog_dst_register *dst, const struct asm_src_register *src0,      const struct asm_src_register *src1, const struct asm_src_register *src2); +static struct asm_instruction *asm_instruction_copy_ctor( +    const struct prog_instruction *base, const struct prog_dst_register *dst, +    const struct asm_src_register *src0, const struct asm_src_register *src1, +    const struct asm_src_register *src2); +  #ifndef FALSE  #define FALSE 0  #define TRUE (!FALSE) @@ -169,9 +394,6 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,  #define YYLEX_PARAM state->scanner -/* Line 189 of yacc.c  */ -#line 174 "program_parse.tab.c" -  /* Enabling traces.  */  #ifndef YYDEBUG  # define YYDEBUG 0 @@ -190,128 +412,10 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,  # define YYTOKEN_TABLE 0  #endif - -/* Tokens.  */ -#ifndef YYTOKENTYPE -# define YYTOKENTYPE -   /* Put the tokens into the symbol table, so that GDB and other debuggers -      know about them.  */ -   enum yytokentype { -     ARBvp_10 = 258, -     ARBfp_10 = 259, -     ADDRESS = 260, -     ALIAS = 261, -     ATTRIB = 262, -     OPTION = 263, -     OUTPUT = 264, -     PARAM = 265, -     TEMP = 266, -     END = 267, -     BIN_OP = 268, -     BINSC_OP = 269, -     SAMPLE_OP = 270, -     SCALAR_OP = 271, -     TRI_OP = 272, -     VECTOR_OP = 273, -     ARL = 274, -     KIL = 275, -     SWZ = 276, -     INTEGER = 277, -     REAL = 278, -     AMBIENT = 279, -     ATTENUATION = 280, -     BACK = 281, -     CLIP = 282, -     COLOR = 283, -     DEPTH = 284, -     DIFFUSE = 285, -     DIRECTION = 286, -     EMISSION = 287, -     ENV = 288, -     EYE = 289, -     FOG = 290, -     FOGCOORD = 291, -     FRAGMENT = 292, -     FRONT = 293, -     HALF = 294, -     INVERSE = 295, -     INVTRANS = 296, -     LIGHT = 297, -     LIGHTMODEL = 298, -     LIGHTPROD = 299, -     LOCAL = 300, -     MATERIAL = 301, -     MAT_PROGRAM = 302, -     MATRIX = 303, -     MATRIXINDEX = 304, -     MODELVIEW = 305, -     MVP = 306, -     NORMAL = 307, -     OBJECT = 308, -     PALETTE = 309, -     PARAMS = 310, -     PLANE = 311, -     POINT_TOK = 312, -     POINTSIZE = 313, -     POSITION = 314, -     PRIMARY = 315, -     PROGRAM = 316, -     PROJECTION = 317, -     RANGE = 318, -     RESULT = 319, -     ROW = 320, -     SCENECOLOR = 321, -     SECONDARY = 322, -     SHININESS = 323, -     SIZE_TOK = 324, -     SPECULAR = 325, -     SPOT = 326, -     STATE = 327, -     TEXCOORD = 328, -     TEXENV = 329, -     TEXGEN = 330, -     TEXGEN_Q = 331, -     TEXGEN_R = 332, -     TEXGEN_S = 333, -     TEXGEN_T = 334, -     TEXTURE = 335, -     TRANSPOSE = 336, -     TEXTURE_UNIT = 337, -     TEX_1D = 338, -     TEX_2D = 339, -     TEX_3D = 340, -     TEX_CUBE = 341, -     TEX_RECT = 342, -     TEX_SHADOW1D = 343, -     TEX_SHADOW2D = 344, -     TEX_SHADOWRECT = 345, -     TEX_ARRAY1D = 346, -     TEX_ARRAY2D = 347, -     TEX_ARRAYSHADOW1D = 348, -     TEX_ARRAYSHADOW2D = 349, -     VERTEX = 350, -     VTXATTRIB = 351, -     WEIGHT = 352, -     IDENTIFIER = 353, -     MASK4 = 354, -     MASK3 = 355, -     MASK2 = 356, -     MASK1 = 357, -     SWIZZLE = 358, -     DOT_DOT = 359, -     DOT = 360 -   }; -#endif - - -  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED  typedef union YYSTYPE +#line 116 "program_parse.y"  { - -/* Line 214 of yacc.c  */ -#line 107 "program_parse.y" -     struct asm_instruction *inst;     struct asm_symbol *sym;     struct asm_symbol temp_sym; @@ -335,15 +439,13 @@ typedef union YYSTYPE        unsigned xyzw_valid:1;        unsigned negate:1;     } ext_swizzle; - - - -/* Line 214 of yacc.c  */ -#line 343 "program_parse.tab.c" -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 187 of yacc.c.  */ +#line 445 "program_parse.tab.c" +	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1  #endif  #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED @@ -361,16 +463,14 @@ typedef struct YYLTYPE  /* Copy the second part of user declarations.  */ - -/* Line 264 of yacc.c  */ -#line 249 "program_parse.y" +#line 261 "program_parse.y"  extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,      void *yyscanner); -/* Line 264 of yacc.c  */ -#line 374 "program_parse.tab.c" +/* Line 216 of yacc.c.  */ +#line 474 "program_parse.tab.c"  #ifdef short  # undef short @@ -445,14 +545,14 @@ typedef short int yytype_int16;  #if (defined __STDC__ || defined __C99__FUNC__ \       || defined __cplusplus || defined _MSC_VER)  static int -YYID (int yyi) +YYID (int i)  #else  static int -YYID (yyi) -    int yyi; +YYID (i) +    int i;  #endif  { -  return yyi; +  return i;  }  #endif @@ -534,9 +634,9 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */  /* A type that is properly aligned for any stack member.  */  union yyalloc  { -  yytype_int16 yyss_alloc; -  YYSTYPE yyvs_alloc; -  YYLTYPE yyls_alloc; +  yytype_int16 yyss; +  YYSTYPE yyvs; +    YYLTYPE yyls;  };  /* The size of the maximum gap between one aligned stack and the next.  */ @@ -571,12 +671,12 @@ union yyalloc     elements in the stack, and YYPTR gives the new location of the     stack.  Advance YYPTR to a properly aligned location for the next     stack.  */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack)				\ +# define YYSTACK_RELOCATE(Stack)					\      do									\        {									\  	YYSIZE_T yynewbytes;						\ -	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\ -	Stack = &yyptr->Stack_alloc;					\ +	YYCOPY (&yyptr->Stack, Stack, yysize);				\ +	Stack = &yyptr->Stack;						\  	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \  	yyptr += yynewbytes / sizeof (*yyptr);				\        }									\ @@ -587,20 +687,20 @@ union yyalloc  /* YYFINAL -- State number of the termination state.  */  #define YYFINAL  5  /* YYLAST -- Last index in YYTABLE.  */ -#define YYLAST   342 +#define YYLAST   396  /* YYNTOKENS -- Number of terminals.  */ -#define YYNTOKENS  115 +#define YYNTOKENS  120  /* YYNNTS -- Number of nonterminals.  */ -#define YYNNTS  134 +#define YYNNTS  143  /* YYNRULES -- Number of rules.  */ -#define YYNRULES  264 +#define YYNRULES  282  /* YYNRULES -- Number of states.  */ -#define YYNSTATES  436 +#define YYNSTATES  475  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */  #define YYUNDEFTOK  2 -#define YYMAXUTOK   360 +#define YYMAXUTOK   362  #define YYTRANSLATE(YYX)						\    ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -612,15 +712,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,   110,   107,   111,     2,     2,     2,     2, -       2,     2,     2,     2,     2,     2,     2,     2,     2,   106, -       2,   112,     2,     2,     2,     2,     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,   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,   108,     2,   109,     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,   113,     2,   114,     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, @@ -644,7 +744,7 @@ static const yytype_uint8 yytranslate[] =        75,    76,    77,    78,    79,    80,    81,    82,    83,    84,        85,    86,    87,    88,    89,    90,    91,    92,    93,    94,        95,    96,    97,    98,    99,   100,   101,   102,   103,   104, -     105 +     105,   106,   107  };  #if YYDEBUG @@ -654,142 +754,152 @@ static const yytype_uint16 yyprhs[] =  {         0,     0,     3,     8,    10,    12,    15,    16,    20,    23,        24,    27,    30,    32,    34,    36,    38,    40,    42,    44, -      46,    48,    50,    52,    57,    62,    67,    74,    81,    90, -      99,   102,   105,   107,   109,   111,   113,   115,   117,   119, -     121,   123,   125,   127,   129,   136,   140,   144,   147,   150, -     158,   161,   163,   165,   167,   169,   174,   176,   178,   180, -     182,   184,   186,   188,   192,   193,   196,   199,   201,   203, -     205,   207,   209,   211,   213,   215,   217,   218,   220,   222, -     224,   226,   227,   229,   231,   233,   235,   237,   239,   244, -     247,   250,   252,   255,   257,   260,   262,   265,   270,   275, -     277,   278,   282,   284,   286,   289,   291,   294,   296,   298, -     302,   309,   310,   312,   315,   320,   322,   326,   328,   330, -     332,   334,   336,   338,   340,   342,   344,   346,   349,   352, -     355,   358,   361,   364,   367,   370,   373,   376,   379,   382, -     386,   388,   390,   392,   398,   400,   402,   404,   407,   409, -     411,   414,   416,   419,   426,   428,   432,   434,   436,   438, -     440,   442,   447,   449,   451,   453,   455,   457,   459,   462, -     464,   466,   472,   474,   477,   479,   481,   487,   490,   491, -     498,   502,   503,   505,   507,   509,   511,   513,   516,   518, -     520,   523,   528,   533,   534,   538,   540,   542,   544,   547, -     549,   551,   553,   555,   561,   563,   567,   573,   579,   581, -     585,   591,   593,   595,   597,   599,   601,   603,   605,   607, -     609,   613,   619,   627,   637,   640,   643,   645,   647,   648, -     649,   653,   654,   658,   662,   664,   669,   672,   675,   678, -     681,   685,   688,   692,   693,   695,   697,   698,   700,   702, -     703,   705,   707,   708,   710,   712,   713,   717,   718,   722, -     723,   727,   729,   731,   733 +      46,    48,    50,    52,    54,    59,    64,    69,    76,    83, +      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,   591, +     593,   595,   597,   600,   602,   604,   606,   608,   614,   616, +     620,   626,   632,   634,   638,   644,   646,   648,   650,   652, +     654,   656,   658,   660,   662,   666,   672,   680,   690,   693, +     696,   698,   700,   701,   702,   707,   709,   710,   711,   715, +     719,   721,   727,   730,   733,   736,   739,   743,   746,   750, +     751,   753,   755,   756,   758,   760,   761,   763,   765,   766, +     768,   770,   771,   775,   776,   780,   781,   785,   787,   789, +     791,   796,   798  };  /* YYRHS -- A `-1'-separated list of the rules' RHS.  */  static const yytype_int16 yyrhs[] =  { -     116,     0,    -1,   117,   118,   120,    12,    -1,     3,    -1, -       4,    -1,   118,   119,    -1,    -1,     8,    98,   106,    -1, -     120,   121,    -1,    -1,   122,   106,    -1,   158,   106,    -1, -     123,    -1,   124,    -1,   125,    -1,   126,    -1,   127,    -1, -     128,    -1,   129,    -1,   130,    -1,   135,    -1,   131,    -1, -     132,    -1,    19,   139,   107,   136,    -1,    18,   138,   107, -     137,    -1,    16,   138,   107,   136,    -1,    14,   138,   107, -     136,   107,   136,    -1,    13,   138,   107,   137,   107,   137, -      -1,    17,   138,   107,   137,   107,   137,   107,   137,    -1, -      15,   138,   107,   137,   107,   133,   107,   134,    -1,    20, -     137,    -1,    82,   243,    -1,    83,    -1,    84,    -1,    85, -      -1,    86,    -1,    87,    -1,    88,    -1,    89,    -1,    90, -      -1,    91,    -1,    92,    -1,    93,    -1,    94,    -1,    21, -     138,   107,   143,   107,   140,    -1,   229,   143,   155,    -1, -     229,   143,   156,    -1,   144,   157,    -1,   152,   154,    -1, -     141,   107,   141,   107,   141,   107,   141,    -1,   229,   142, -      -1,    22,    -1,    98,    -1,    98,    -1,   160,    -1,   145, -     108,   146,   109,    -1,   174,    -1,   236,    -1,    98,    -1, -      98,    -1,   147,    -1,   148,    -1,    22,    -1,   152,   153, -     149,    -1,    -1,   110,   150,    -1,   111,   151,    -1,    22, -      -1,    22,    -1,    98,    -1,   102,    -1,   102,    -1,   102, -      -1,   102,    -1,    99,    -1,   103,    -1,    -1,    99,    -1, -     100,    -1,   101,    -1,   102,    -1,    -1,   159,    -1,   166, -      -1,   230,    -1,   232,    -1,   235,    -1,   248,    -1,     7, -      98,   112,   160,    -1,    95,   161,    -1,    37,   165,    -1, -      59,    -1,    97,   163,    -1,    52,    -1,    28,   241,    -1, -      36,    -1,    73,   242,    -1,    49,   108,   164,   109,    -1, -      96,   108,   162,   109,    -1,    22,    -1,    -1,   108,   164, -     109,    -1,    22,    -1,    59,    -1,    28,   241,    -1,    36, -      -1,    73,   242,    -1,   167,    -1,   168,    -1,    10,    98, -     170,    -1,    10,    98,   108,   169,   109,   171,    -1,    -1, -      22,    -1,   112,   173,    -1,   112,   113,   172,   114,    -1, -     175,    -1,   172,   107,   175,    -1,   177,    -1,   213,    -1, -     223,    -1,   177,    -1,   213,    -1,   224,    -1,   176,    -1, -     214,    -1,   223,    -1,   177,    -1,    72,   201,    -1,    72, -     178,    -1,    72,   180,    -1,    72,   183,    -1,    72,   185, -      -1,    72,   191,    -1,    72,   187,    -1,    72,   194,    -1, -      72,   196,    -1,    72,   198,    -1,    72,   200,    -1,    72, -     212,    -1,    46,   240,   179,    -1,   189,    -1,    32,    -1, -      68,    -1,    42,   108,   190,   109,   181,    -1,   189,    -1, -      59,    -1,    25,    -1,    71,   182,    -1,    39,    -1,    31, -      -1,    43,   184,    -1,    24,    -1,   240,    66,    -1,    44, -     108,   190,   109,   240,   186,    -1,   189,    -1,    74,   244, -     188,    -1,    28,    -1,    24,    -1,    30,    -1,    70,    -1, -      22,    -1,    75,   242,   192,   193,    -1,    34,    -1,    53, -      -1,    78,    -1,    79,    -1,    77,    -1,    76,    -1,    35, -     195,    -1,    28,    -1,    55,    -1,    27,   108,   197,   109, -      56,    -1,    22,    -1,    57,   199,    -1,    69,    -1,    25, -      -1,   203,    65,   108,   206,   109,    -1,   203,   202,    -1, -      -1,    65,   108,   206,   104,   206,   109,    -1,    48,   207, -     204,    -1,    -1,   205,    -1,    40,    -1,    81,    -1,    41, -      -1,    22,    -1,    50,   208,    -1,    62,    -1,    51,    -1, -      80,   242,    -1,    54,   108,   210,   109,    -1,    47,   108, -     211,   109,    -1,    -1,   108,   209,   109,    -1,    22,    -1, -      22,    -1,    22,    -1,    29,    63,    -1,   217,    -1,   220, -      -1,   215,    -1,   218,    -1,    61,    33,   108,   216,   109, -      -1,   221,    -1,   221,   104,   221,    -1,    61,    33,   108, -     221,   109,    -1,    61,    45,   108,   219,   109,    -1,   222, -      -1,   222,   104,   222,    -1,    61,    45,   108,   222,   109, -      -1,    22,    -1,    22,    -1,   225,    -1,   227,    -1,   226, -      -1,   227,    -1,   228,    -1,    23,    -1,    22,    -1,   113, -     228,   114,    -1,   113,   228,   107,   228,   114,    -1,   113, -     228,   107,   228,   107,   228,   114,    -1,   113,   228,   107, -     228,   107,   228,   107,   228,   114,    -1,   229,    23,    -1, -     229,    22,    -1,   110,    -1,   111,    -1,    -1,    -1,    11, -     231,   234,    -1,    -1,     5,   233,   234,    -1,   234,   107, -      98,    -1,    98,    -1,     9,    98,   112,   236,    -1,    64, -      59,    -1,    64,    36,    -1,    64,   237,    -1,    64,    58, -      -1,    64,    73,   242,    -1,    64,    29,    -1,    28,   238, -     239,    -1,    -1,    38,    -1,    26,    -1,    -1,    60,    -1, -      67,    -1,    -1,    38,    -1,    26,    -1,    -1,    60,    -1, -      67,    -1,    -1,   108,   245,   109,    -1,    -1,   108,   246, -     109,    -1,    -1,   108,   247,   109,    -1,    22,    -1,    22, -      -1,    22,    -1,     6,    98,   112,    98,    -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,   111,   221,   112, +      -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,   256,   256,   259,   267,   279,   280,   283,   305,   306, -     309,   324,   327,   332,   339,   340,   341,   342,   343,   344, -     345,   348,   349,   352,   358,   365,   372,   380,   387,   395, -     440,   447,   453,   454,   455,   456,   457,   458,   459,   460, -     461,   462,   463,   464,   467,   480,   493,   506,   528,   537, -     570,   577,   592,   642,   684,   695,   716,   726,   732,   763, -     780,   780,   782,   789,   801,   802,   803,   806,   818,   830, -     848,   859,   871,   873,   874,   875,   876,   879,   879,   879, -     879,   880,   883,   884,   885,   886,   887,   888,   891,   909, -     913,   919,   923,   927,   931,   940,   949,   953,   958,   964, -     975,   975,   976,   978,   982,   986,   990,   996,   996,   998, -    1014,  1037,  1040,  1051,  1057,  1063,  1064,  1071,  1077,  1083, -    1091,  1097,  1103,  1111,  1117,  1123,  1131,  1132,  1135,  1136, -    1137,  1138,  1139,  1140,  1141,  1142,  1143,  1144,  1145,  1148, -    1157,  1161,  1165,  1171,  1180,  1184,  1188,  1197,  1201,  1207, -    1213,  1220,  1225,  1233,  1243,  1245,  1253,  1259,  1263,  1267, -    1273,  1284,  1293,  1297,  1302,  1306,  1310,  1314,  1320,  1327, -    1331,  1337,  1345,  1356,  1363,  1367,  1373,  1383,  1394,  1398, -    1416,  1425,  1428,  1434,  1438,  1442,  1448,  1459,  1464,  1469, -    1474,  1479,  1484,  1492,  1495,  1500,  1513,  1521,  1532,  1540, -    1540,  1542,  1542,  1544,  1554,  1559,  1566,  1576,  1585,  1590, -    1597,  1607,  1617,  1629,  1629,  1630,  1630,  1632,  1642,  1650, -    1660,  1668,  1676,  1685,  1696,  1700,  1706,  1707,  1708,  1711, -    1711,  1714,  1714,  1717,  1723,  1731,  1744,  1753,  1762,  1766, -    1775,  1784,  1795,  1802,  1807,  1816,  1828,  1831,  1840,  1851, -    1852,  1853,  1856,  1857,  1858,  1861,  1862,  1865,  1866,  1869, -    1870,  1873,  1884,  1895,  1906 +       0,   268,   268,   271,   279,   291,   292,   295,   317,   318, +     321,   336,   339,   344,   351,   352,   353,   354,   355,   356, +     357,   360,   361,   362,   365,   371,   377,   383,   390,   396, +     403,   447,   452,   462,   506,   512,   513,   514,   515,   516, +     517,   518,   519,   520,   521,   522,   523,   526,   538,   546, +     563,   570,   589,   600,   620,   645,   654,   687,   694,   709, +     759,   801,   812,   833,   843,   849,   880,   897,   897,   899, +     906,   918,   919,   920,   923,   937,   951,   969,   980,   992, +     994,   995,   996,   997,  1000,  1000,  1000,  1000,  1001,  1004, +    1008,  1013,  1020,  1027,  1034,  1057,  1080,  1081,  1082,  1083, +    1084,  1085,  1088,  1106,  1110,  1116,  1120,  1124,  1128,  1137, +    1146,  1150,  1155,  1161,  1172,  1172,  1173,  1175,  1179,  1183, +    1187,  1193,  1193,  1195,  1211,  1234,  1237,  1248,  1254,  1260, +    1261,  1268,  1274,  1280,  1288,  1294,  1300,  1308,  1314,  1320, +    1328,  1329,  1332,  1333,  1334,  1335,  1336,  1337,  1338,  1339, +    1340,  1341,  1342,  1345,  1354,  1358,  1362,  1368,  1377,  1381, +    1385,  1394,  1398,  1404,  1410,  1417,  1422,  1430,  1440,  1442, +    1450,  1456,  1460,  1464,  1470,  1481,  1490,  1494,  1499,  1503, +    1507,  1511,  1517,  1524,  1528,  1534,  1542,  1553,  1560,  1564, +    1570,  1580,  1591,  1595,  1613,  1622,  1625,  1631,  1635,  1639, +    1645,  1656,  1661,  1666,  1671,  1676,  1681,  1689,  1692,  1697, +    1710,  1718,  1729,  1737,  1737,  1739,  1739,  1741,  1751,  1756, +    1763,  1773,  1782,  1787,  1794,  1804,  1814,  1826,  1826,  1827, +    1827,  1829,  1839,  1847,  1857,  1865,  1873,  1882,  1893,  1897, +    1903,  1904,  1905,  1908,  1908,  1911,  1946,  1950,  1950,  1953, +    1959,  1967,  1980,  1989,  1998,  2002,  2011,  2020,  2031,  2038, +    2043,  2052,  2064,  2067,  2076,  2087,  2088,  2089,  2092,  2093, +    2094,  2097,  2098,  2101,  2102,  2105,  2106,  2109,  2120,  2131, +    2142,  2163,  2164  };  #endif @@ -801,9 +911,9 @@ static const char *const yytname[] =    "$end", "error", "$undefined", "ARBvp_10", "ARBfp_10", "ADDRESS",    "ALIAS", "ATTRIB", "OPTION", "OUTPUT", "PARAM", "TEMP", "END", "BIN_OP",    "BINSC_OP", "SAMPLE_OP", "SCALAR_OP", "TRI_OP", "VECTOR_OP", "ARL", -  "KIL", "SWZ", "INTEGER", "REAL", "AMBIENT", "ATTENUATION", "BACK", -  "CLIP", "COLOR", "DEPTH", "DIFFUSE", "DIRECTION", "EMISSION", "ENV", -  "EYE", "FOG", "FOGCOORD", "FRAGMENT", "FRONT", "HALF", "INVERSE", +  "KIL", "SWZ", "TXD_OP", "INTEGER", "REAL", "AMBIENT", "ATTENUATION", +  "BACK", "CLIP", "COLOR", "DEPTH", "DIFFUSE", "DIRECTION", "EMISSION", +  "ENV", "EYE", "FOG", "FOGCOORD", "FRAGMENT", "FRONT", "HALF", "INVERSE",    "INVTRANS", "LIGHT", "LIGHTMODEL", "LIGHTPROD", "LOCAL", "MATERIAL",    "MAT_PROGRAM", "MATRIX", "MATRIXINDEX", "MODELVIEW", "MVP", "NORMAL",    "OBJECT", "PALETTE", "PARAMS", "PLANE", "POINT_TOK", "POINTSIZE", @@ -814,49 +924,51 @@ static const char *const yytname[] =    "TEX_2D", "TEX_3D", "TEX_CUBE", "TEX_RECT", "TEX_SHADOW1D",    "TEX_SHADOW2D", "TEX_SHADOWRECT", "TEX_ARRAY1D", "TEX_ARRAY2D",    "TEX_ARRAYSHADOW1D", "TEX_ARRAYSHADOW2D", "VERTEX", "VTXATTRIB", -  "WEIGHT", "IDENTIFIER", "MASK4", "MASK3", "MASK2", "MASK1", "SWIZZLE", -  "DOT_DOT", "DOT", "';'", "','", "'['", "']'", "'+'", "'-'", "'='", "'{'", -  "'}'", "$accept", "program", "language", "optionSequence", "option", -  "statementSequence", "statement", "instruction", "ALU_instruction", -  "TexInstruction", "ARL_instruction", "VECTORop_instruction", -  "SCALARop_instruction", "BINSCop_instruction", "BINop_instruction", -  "TRIop_instruction", "SAMPLE_instruction", "KIL_instruction", -  "texImageUnit", "texTarget", "SWZ_instruction", "scalarSrcReg", -  "swizzleSrcReg", "maskedDstReg", "maskedAddrReg", "extendedSwizzle", -  "extSwizComp", "extSwizSel", "srcReg", "dstReg", "progParamArray", -  "progParamArrayMem", "progParamArrayAbs", "progParamArrayRel", -  "addrRegRelOffset", "addrRegPosOffset", "addrRegNegOffset", "addrReg", -  "addrComponent", "addrWriteMask", "scalarSuffix", "swizzleSuffix", -  "optionalMask", "namingStatement", "ATTRIB_statement", "attribBinding", -  "vtxAttribItem", "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", -  "fragAttribItem", "PARAM_statement", "PARAM_singleStmt", -  "PARAM_multipleStmt", "optArraySize", "paramSingleInit", -  "paramMultipleInit", "paramMultInitList", "paramSingleItemDecl", -  "paramSingleItemUse", "paramMultipleItem", "stateMultipleItem", -  "stateSingleItem", "stateMaterialItem", "stateMatProperty", -  "stateLightItem", "stateLightProperty", "stateSpotProperty", -  "stateLightModelItem", "stateLModProperty", "stateLightProdItem", -  "stateLProdProperty", "stateTexEnvItem", "stateTexEnvProperty", -  "ambDiffSpecProperty", "stateLightNumber", "stateTexGenItem", -  "stateTexGenType", "stateTexGenCoord", "stateFogItem", -  "stateFogProperty", "stateClipPlaneItem", "stateClipPlaneNum", -  "statePointItem", "statePointProperty", "stateMatrixRow", -  "stateMatrixRows", "optMatrixRows", "stateMatrixItem", -  "stateOptMatModifier", "stateMatModifier", "stateMatrixRowNum", -  "stateMatrixName", "stateOptModMatNum", "stateModMatNum", -  "statePaletteMatNum", "stateProgramMatNum", "stateDepthItem", -  "programSingleItem", "programMultipleItem", "progEnvParams", -  "progEnvParamNums", "progEnvParam", "progLocalParams", -  "progLocalParamNums", "progLocalParam", "progEnvParamNum", -  "progLocalParamNum", "paramConstDecl", "paramConstUse", -  "paramConstScalarDecl", "paramConstScalarUse", "paramConstVector", -  "signedFloatConstant", "optionalSign", "TEMP_statement", "@1", +  "WEIGHT", "IDENTIFIER", "USED_IDENTIFIER", "MASK4", "MASK3", "MASK2", +  "MASK1", "SWIZZLE", "DOT_DOT", "DOT", "';'", "','", "'|'", "'['", "']'", +  "'+'", "'-'", "'('", "')'", "'='", "'{'", "'}'", "$accept", "program", +  "language", "optionSequence", "option", "statementSequence", "statement", +  "instruction", "ALU_instruction", "TexInstruction", "ARL_instruction", +  "VECTORop_instruction", "SCALARop_instruction", "BINSCop_instruction", +  "BINop_instruction", "TRIop_instruction", "SAMPLE_instruction", +  "KIL_instruction", "TXD_instruction", "texImageUnit", "texTarget", +  "SWZ_instruction", "scalarSrcReg", "scalarUse", "swizzleSrcReg", +  "maskedDstReg", "maskedAddrReg", "extendedSwizzle", "extSwizComp", +  "extSwizSel", "srcReg", "dstReg", "progParamArray", "progParamArrayMem", +  "progParamArrayAbs", "progParamArrayRel", "addrRegRelOffset", +  "addrRegPosOffset", "addrRegNegOffset", "addrReg", "addrComponent", +  "addrWriteMask", "scalarSuffix", "swizzleSuffix", "optionalMask", +  "optionalCcMask", "ccTest", "ccTest2", "ccMaskRule", "ccMaskRule2", +  "namingStatement", "ATTRIB_statement", "attribBinding", "vtxAttribItem", +  "vtxAttribNum", "vtxOptWeightNum", "vtxWeightNum", "fragAttribItem", +  "PARAM_statement", "PARAM_singleStmt", "PARAM_multipleStmt", +  "optArraySize", "paramSingleInit", "paramMultipleInit", +  "paramMultInitList", "paramSingleItemDecl", "paramSingleItemUse", +  "paramMultipleItem", "stateMultipleItem", "stateSingleItem", +  "stateMaterialItem", "stateMatProperty", "stateLightItem", +  "stateLightProperty", "stateSpotProperty", "stateLightModelItem", +  "stateLModProperty", "stateLightProdItem", "stateLProdProperty", +  "stateTexEnvItem", "stateTexEnvProperty", "ambDiffSpecProperty", +  "stateLightNumber", "stateTexGenItem", "stateTexGenType", +  "stateTexGenCoord", "stateFogItem", "stateFogProperty", +  "stateClipPlaneItem", "stateClipPlaneNum", "statePointItem", +  "statePointProperty", "stateMatrixRow", "stateMatrixRows", +  "optMatrixRows", "stateMatrixItem", "stateOptMatModifier", +  "stateMatModifier", "stateMatrixRowNum", "stateMatrixName", +  "stateOptModMatNum", "stateModMatNum", "statePaletteMatNum", +  "stateProgramMatNum", "stateDepthItem", "programSingleItem", +  "programMultipleItem", "progEnvParams", "progEnvParamNums", +  "progEnvParam", "progLocalParams", "progLocalParamNums", +  "progLocalParam", "progEnvParamNum", "progLocalParamNum", +  "paramConstDecl", "paramConstUse", "paramConstScalarDecl", +  "paramConstScalarUse", "paramConstVector", "signedFloatConstant", +  "optionalSign", "TEMP_statement", "@1", "optVarSize",    "ADDRESS_statement", "@2", "varNameList", "OUTPUT_statement",    "resultBinding", "resultColBinding", "optResultFaceType",    "optResultColorType", "optFaceType", "optColorType",    "optTexCoordUnitNum", "optTexImageUnitNum", "optLegacyTexUnitNum",    "texCoordUnitNum", "texImageUnitNum", "legacyTexUnitNum", -  "ALIAS_statement", 0 +  "ALIAS_statement", "string", 0  };  #endif @@ -875,41 +987,43 @@ static const yytype_uint16 yytoknum[] =       325,   326,   327,   328,   329,   330,   331,   332,   333,   334,       335,   336,   337,   338,   339,   340,   341,   342,   343,   344,       345,   346,   347,   348,   349,   350,   351,   352,   353,   354, -     355,   356,   357,   358,   359,   360,    59,    44,    91,    93, -      43,    45,    61,   123,   125 +     355,   356,   357,   358,   359,   360,   361,   362,    59,    44, +     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,   115,   116,   117,   117,   118,   118,   119,   120,   120, -     121,   121,   122,   122,   123,   123,   123,   123,   123,   123, -     123,   124,   124,   125,   126,   127,   128,   129,   130,   131, -     132,   133,   134,   134,   134,   134,   134,   134,   134,   134, -     134,   134,   134,   134,   135,   136,   137,   138,   139,   140, -     141,   142,   142,   143,   143,   143,   143,   144,   144,   145, -     146,   146,   147,   148,   149,   149,   149,   150,   151,   152, -     153,   154,   155,   156,   156,   156,   156,   157,   157,   157, -     157,   157,   158,   158,   158,   158,   158,   158,   159,   160, -     160,   161,   161,   161,   161,   161,   161,   161,   161,   162, -     163,   163,   164,   165,   165,   165,   165,   166,   166,   167, -     168,   169,   169,   170,   171,   172,   172,   173,   173,   173, -     174,   174,   174,   175,   175,   175,   176,   176,   177,   177, -     177,   177,   177,   177,   177,   177,   177,   177,   177,   178, -     179,   179,   179,   180,   181,   181,   181,   181,   181,   182, -     183,   184,   184,   185,   186,   187,   188,   189,   189,   189, -     190,   191,   192,   192,   193,   193,   193,   193,   194,   195, -     195,   196,   197,   198,   199,   199,   200,   201,   202,   202, -     203,   204,   204,   205,   205,   205,   206,   207,   207,   207, -     207,   207,   207,   208,   208,   209,   210,   211,   212,   213, -     213,   214,   214,   215,   216,   216,   217,   218,   219,   219, -     220,   221,   222,   223,   223,   224,   224,   225,   226,   226, -     227,   227,   227,   227,   228,   228,   229,   229,   229,   231, -     230,   233,   232,   234,   234,   235,   236,   236,   236,   236, -     236,   236,   237,   238,   238,   238,   239,   239,   239,   240, -     240,   240,   241,   241,   241,   242,   242,   243,   243,   244, -     244,   245,   246,   247,   248 +       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.  */ @@ -917,31 +1031,33 @@ static const yytype_uint8 yyr2[] =  {         0,     2,     4,     1,     1,     2,     0,     3,     2,     0,         2,     2,     1,     1,     1,     1,     1,     1,     1,     1, -       1,     1,     1,     4,     4,     4,     6,     6,     8,     8, -       2,     2,     1,     1,     1,     1,     1,     1,     1,     1, -       1,     1,     1,     1,     6,     3,     3,     2,     2,     7, -       2,     1,     1,     1,     1,     4,     1,     1,     1,     1, -       1,     1,     1,     3,     0,     2,     2,     1,     1,     1, -       1,     1,     1,     1,     1,     1,     0,     1,     1,     1, -       1,     0,     1,     1,     1,     1,     1,     1,     4,     2, -       2,     1,     2,     1,     2,     1,     2,     4,     4,     1, -       0,     3,     1,     1,     2,     1,     2,     1,     1,     3, -       6,     0,     1,     2,     4,     1,     3,     1,     1,     1, -       1,     1,     1,     1,     1,     1,     1,     2,     2,     2, -       2,     2,     2,     2,     2,     2,     2,     2,     2,     3, -       1,     1,     1,     5,     1,     1,     1,     2,     1,     1, -       2,     1,     2,     6,     1,     3,     1,     1,     1,     1, -       1,     4,     1,     1,     1,     1,     1,     1,     2,     1, -       1,     5,     1,     2,     1,     1,     5,     2,     0,     6, -       3,     0,     1,     1,     1,     1,     1,     2,     1,     1, -       2,     4,     4,     0,     3,     1,     1,     1,     2,     1, -       1,     1,     1,     5,     1,     3,     5,     5,     1,     3, -       5,     1,     1,     1,     1,     1,     1,     1,     1,     1, -       3,     5,     7,     9,     2,     2,     1,     1,     0,     0, -       3,     0,     3,     3,     1,     4,     2,     2,     2,     2, -       3,     2,     3,     0,     1,     1,     0,     1,     1,     0, -       1,     1,     0,     1,     1,     0,     3,     0,     3,     0, -       3,     1,     1,     1,     4 +       1,     1,     1,     1,     4,     4,     4,     6,     6,     8, +       8,     2,     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,     3,     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 @@ -949,272 +1065,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,     0, -       0,   231,     0,     0,     0,     0,   229,     2,     0,     0, -       0,     0,     0,     0,     0,   228,     0,     8,     0,    12, -      13,    14,    15,    16,    17,    18,    19,    21,    22,    20, -       0,    82,    83,   107,   108,    84,    85,    86,    87,     7, -       0,     0,     0,     0,     0,     0,     0,    58,     0,    81, -      57,     0,     0,     0,     0,     0,    69,     0,     0,   226, -     227,    30,     0,     0,    10,    11,   234,   232,     0,     0, -       0,   111,   228,   109,   230,   243,   241,   237,   239,   236, -     255,   238,   228,    77,    78,    79,    80,    47,   228,   228, -     228,   228,   228,   228,    71,    48,   219,   218,     0,     0, -       0,     0,    53,   228,    76,     0,    54,    56,   120,   121, -     199,   200,   122,   215,   216,     0,     0,   264,    88,   235, -     112,     0,   113,   117,   118,   119,   213,   214,   217,     0, -     245,   244,   246,     0,   240,     0,     0,     0,     0,    25, -       0,    24,    23,   252,   105,   103,   255,    90,     0,     0, -       0,     0,     0,     0,   249,     0,   249,     0,     0,   259, -     255,   128,   129,   130,   131,   133,   132,   134,   135,   136, -     137,     0,   138,   252,    95,     0,    93,    91,   255,     0, -     100,    89,     0,    74,    73,    75,    46,     0,     0,   233, -       0,   225,   224,   247,   248,   242,   261,     0,   228,   228, -       0,     0,   228,   253,   254,   104,   106,     0,     0,     0, -     198,   169,   170,   168,     0,   151,   251,   250,   150,     0, -       0,     0,     0,   193,   189,     0,   188,   255,   181,   175, -     174,   173,     0,     0,     0,     0,    94,     0,    96,     0, -       0,    92,   228,   220,    62,     0,    60,    61,     0,   228, -       0,   110,   256,    27,    26,    72,    45,   257,     0,     0, -     211,     0,   212,     0,   172,     0,   160,     0,   152,     0, -     157,   158,   141,   142,   159,   139,   140,     0,     0,   187, -       0,   190,   183,   185,   184,   180,   182,   263,     0,   156, -     155,   162,   163,     0,     0,   102,     0,    99,     0,     0, -       0,    55,    70,    64,    44,     0,     0,   228,     0,    31, -       0,   228,   206,   210,     0,     0,   249,   197,     0,   195, -       0,   196,     0,   260,   167,   166,   164,   165,   161,   186, -       0,    97,    98,   101,   228,   221,     0,     0,    63,   228, -      51,    52,    50,     0,     0,     0,   115,   123,   126,   124, -     201,   202,   125,   262,     0,    32,    33,    34,    35,    36, -      37,    38,    39,    40,    41,    42,    43,    29,    28,   171, -     146,   148,   145,     0,   143,   144,     0,   192,   194,   191, -     176,     0,    67,    65,    68,    66,     0,     0,     0,   127, -     178,   228,   114,   258,   149,   147,   153,   154,   228,   222, -     228,     0,     0,     0,   177,   116,     0,     0,     0,   204, -       0,   208,     0,   223,   228,   203,     0,   207,     0,     0, -      49,   205,   209,     0,     0,   179 +       0,     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,    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,     0,   201, +       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,   209,     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,   208,   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,    27,    28,    29,    30, -      31,    32,    33,    34,    35,    36,    37,    38,   268,   377, -      39,   146,    71,    58,    67,   314,   315,   352,   114,    59, -     115,   255,   256,   257,   348,   393,   395,    68,   313,   105, -     266,   196,    97,    40,    41,   116,   191,   308,   251,   306, -     157,    42,    43,    44,   131,    83,   261,   355,   132,   117, -     356,   357,   118,   171,   285,   172,   384,   405,   173,   228, -     174,   406,   175,   300,   286,   277,   176,   303,   338,   177, -     223,   178,   275,   179,   241,   180,   399,   414,   181,   295, -     296,   340,   238,   289,   330,   332,   328,   182,   119,   359, -     360,   418,   120,   361,   420,   121,   271,   273,   362,   122, -     136,   123,   124,   138,    72,    45,    55,    46,    50,    77, -      47,    60,    91,   142,   205,   229,   215,   144,   319,   243, -     207,   364,   298,    48 +      -1,     3,     4,     6,     8,     9,    28,    29,    30,    31, +      32,    33,    34,    35,    36,    37,    38,    39,    40,   298, +     411,    41,   161,   231,    74,    60,    69,   345,   346,   384, +     232,    61,   126,   279,   280,   281,   381,   427,   429,    70, +     344,   111,   296,   115,   103,   160,    75,   227,    76,   228, +      42,    43,   127,   206,   338,   274,   336,   172,    44,    45, +      46,   144,    90,   287,   389,   145,   128,   390,   391,   129, +     186,   315,   187,   418,   440,   188,   251,   189,   441,   190, +     330,   316,   307,   191,   333,   371,   192,   246,   193,   305, +     194,   264,   195,   434,   450,   196,   325,   326,   373,   261, +     319,   363,   365,   361,   197,   130,   393,   394,   455,   131, +     395,   457,   132,   301,   303,   396,   133,   149,   134,   135, +     151,    77,    47,   139,    48,    49,    54,    85,    50,    62, +      97,   155,   221,   252,   238,   157,   352,   266,   223,   398, +     328,    51,    12  };  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing     STATE-NUM.  */ -#define YYPACT_NINF -369 +#define YYPACT_NINF -401  static const yytype_int16 yypact[] =  { -     143,  -369,  -369,    36,  -369,  -369,    45,   -39,  -369,   169, -     -33,  -369,   -19,    -6,    -4,    12,  -369,  -369,   -34,   -34, -     -34,   -34,   -34,   -34,    15,    62,   -34,  -369,    26,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -      60,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -      20,    56,   107,   110,    37,    20,    -3,  -369,   111,   109, -    -369,   113,   114,   116,   117,   118,  -369,   119,   125,  -369, -    -369,  -369,   -15,   121,  -369,  -369,  -369,   122,   132,   -18, -     167,   210,   -11,  -369,   122,    63,  -369,  -369,  -369,  -369, -     130,  -369,    62,  -369,  -369,  -369,  -369,  -369,    62,    62, -      62,    62,    62,    62,  -369,  -369,  -369,  -369,     9,    72, -      87,    -1,   131,    62,   104,   134,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,  -369,   -15,   142,  -369,  -369,  -369, -    -369,   135,  -369,  -369,  -369,  -369,  -369,  -369,  -369,   182, -    -369,  -369,    52,   219,  -369,   138,   139,   -15,   140,  -369, -     141,  -369,  -369,    61,  -369,  -369,   130,  -369,   144,   145, -     146,   180,    11,   147,    85,   148,    99,    89,    -2,   149, -     130,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -    -369,   184,  -369,    61,  -369,   150,  -369,  -369,   130,   151, -     152,  -369,    27,  -369,  -369,  -369,  -369,   -10,   154,  -369, -     153,  -369,  -369,  -369,  -369,  -369,  -369,   155,    62,    62, -     161,   168,    62,  -369,  -369,  -369,  -369,   229,   244,   246, -    -369,  -369,  -369,  -369,   247,  -369,  -369,  -369,  -369,   204, -     247,    17,   163,   164,  -369,   165,  -369,   130,    67,  -369, -    -369,  -369,   252,   248,    18,   170,  -369,   253,  -369,   255, -     253,  -369,    62,  -369,  -369,   171,  -369,  -369,   177,    62, -     172,  -369,  -369,  -369,  -369,  -369,  -369,   173,   175,   176, -    -369,   178,  -369,   179,  -369,   181,  -369,   183,  -369,   185, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,   262,   264,  -369, -     267,  -369,  -369,  -369,  -369,  -369,  -369,  -369,   186,  -369, -    -369,  -369,  -369,   136,   269,  -369,   187,  -369,   188,   190, -      43,  -369,  -369,   106,  -369,   193,    -5,    -7,   271,  -369, -     108,    62,  -369,  -369,   245,     4,    99,  -369,   194,  -369, -     195,  -369,   196,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -     197,  -369,  -369,  -369,    62,  -369,   280,   285,  -369,    62, -    -369,  -369,  -369,    93,    87,    53,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,   199,  -369,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,   278,  -369,  -369,     8,  -369,  -369,  -369, -    -369,    57,  -369,  -369,  -369,  -369,   203,   205,   206,  -369, -     250,    -7,  -369,  -369,  -369,  -369,  -369,  -369,    62,  -369, -      62,   229,   244,   208,  -369,  -369,   198,   211,   202,   213, -     214,   218,   269,  -369,    62,  -369,   229,  -369,   244,    54, -    -369,  -369,  -369,   269,   215,  -369 +     193,  -401,  -401,    27,  -401,  -401,    62,   143,  -401,    24, +    -401,  -401,   -30,  -401,   -18,    12,    83,  -401,    15,    15, +      15,    15,    15,    15,    67,    61,    15,    15,  -401,   127, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401, +    -401,  -401,   144,  -401,  -401,  -401,  -401,  -401,   204,  -401, +    -401,  -401,  -401,  -401,   155,   136,   138,    34,   140,  -401, +     147,   108,  -401,   150,   156,   157,   158,   160,  -401,   162, +     159,  -401,  -401,  -401,  -401,  -401,   102,   -13,   163,   164, +    -401,  -401,   165,  -401,  -401,   166,   170,    10,   235,     0, +    -401,   141,  -401,  -401,  -401,  -401,   167,  -401,   131,  -401, +    -401,  -401,  -401,   168,   131,   131,   131,   131,   131,   131, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,   104,    97, +     114,    38,   169,    30,   131,   102,   171,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,    30,   131,   172,   155, +     175,  -401,  -401,  -401,   173,  -401,  -401,  -401,  -401,  -401, +    -401,  -401,   223,  -401,  -401,   123,   253,  -401,   177,   149, +    -401,   178,   -10,   181,  -401,   182,  -401,  -401,   134,  -401, +    -401,   167,  -401,   183,   184,   185,   213,    99,   186,   154, +     187,   146,   153,     7,   188,   167,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,   215,  -401,   134,  -401, +     190,  -401,  -401,   167,   191,   192,  -401,   102,   -48,  -401, +       1,   195,   196,   214,   166,  -401,   189,  -401,  -401,  -401, +    -401,  -401,  -401,   180,   131,  -401,   194,   197,   102,   131, +      30,  -401,   203,   205,   201,   131,  -401,  -401,  -401,  -401, +     285,   288,   289,  -401,  -401,  -401,  -401,   291,  -401,  -401, +    -401,  -401,   248,   291,    33,   206,   207,  -401,   208,  -401, +     167,    14,  -401,  -401,  -401,   293,   292,    92,   209,  -401, +     299,  -401,   301,   299,  -401,   216,   131,  -401,  -401,   217, +    -401,  -401,   221,   131,   131,  -401,   212,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,   218,  -401,  -401,   220,   224,   225, +    -401,   226,  -401,   227,  -401,   228,  -401,   230,  -401,   231, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,   304,   309,  -401, +     312,  -401,  -401,  -401,  -401,  -401,  -401,  -401,   232,  -401, +    -401,  -401,  -401,   161,   313,  -401,   233,  -401,   234,   238, +    -401,    13,  -401,  -401,   137,  -401,   242,   -15,   243,     3, +    -401,   314,  -401,   133,   131,  -401,  -401,   296,    94,   146, +    -401,   245,  -401,   246,  -401,   247,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,   249,  -401,  -401,  -401,   131,  -401,   332, +     337,  -401,   131,  -401,  -401,  -401,   131,   142,   114,    28, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,   250,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,   331,  -401,  -401, +      68,  -401,  -401,  -401,  -401,    43,  -401,  -401,  -401,  -401, +     255,   256,   257,   258,  -401,   300,     3,  -401,  -401,  -401, +    -401,  -401,  -401,   131,  -401,   131,   201,   285,   288,   259, +    -401,  -401,   252,   264,   265,   263,   261,   266,   270,   313, +    -401,   131,   133,  -401,   285,  -401,   288,    80,  -401,  -401, +    -401,  -401,   313,   267,  -401  };  /* YYPGOTO[NTERM-NUM].  */  static const yytype_int16 yypgoto[] =  { -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -    -369,   -94,   -88,   133,  -369,  -369,  -334,  -369,   -85,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,   128,  -369,  -369, -    -369,  -369,  -369,  -369,  -369,   251,  -369,  -369,  -369,    77, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -     -72,  -369,   -81,  -369,  -369,  -369,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,  -305,   101,  -369,  -369,  -369,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -369,  -369,   -22,  -369, -    -369,  -336,  -369,  -369,  -369,  -369,  -369,  -369,   254,  -369, -    -369,  -369,  -369,  -369,  -369,  -369,  -342,  -368,   256,  -369, -    -369,  -369,   -80,  -110,   -82,  -369,  -369,  -369,  -369,   279, -    -369,   257,  -369,  -369,  -369,  -161,   156,  -146,  -369,  -369, -    -369,  -369,  -369,  -369 +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,   -69, +     -82,  -401,  -100,   151,   -86,   210,  -401,  -401,  -366,  -401, +     -54,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,   174, +    -401,  -401,  -401,  -118,  -401,  -401,   229,  -401,  -401,  -401, +    -401,  -401,   295,  -401,  -401,  -401,   110,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,   -51,  -401,   -88, +    -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401,  -401, +    -401,  -311,   139,  -401,  -401,  -401,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,  -401,  -401,    -2,  -401,  -401,  -400,  -401, +    -401,  -401,  -401,  -401,  -401,   298,  -401,  -401,  -401,  -401, +    -401,  -401,  -401,  -390,  -295,   302,  -401,  -401,  -136,   -87, +    -120,   -89,  -401,  -401,  -401,  -401,  -401,   251,  -401,   176, +    -401,  -401,  -401,  -176,   198,  -153,  -401,  -401,  -401,  -401, +    -401,  -401,    -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 -60 +#define YYTABLE_NINF -230  static const yytype_int16 yytable[] =  { -     139,   133,   137,   192,   145,   231,   149,   106,   107,   152, -     216,   148,   254,   150,   151,   396,   147,   350,   147,   108, -     385,   147,   108,   239,   244,    85,    86,   183,   280,   380, -      56,   139,   280,    87,   281,   184,     5,   153,   281,   221, -     198,   280,   248,   381,   421,   154,   109,   281,   185,   282, -     109,   186,   301,     7,   353,    88,    89,   110,   187,    10, -     432,   110,   210,   382,    57,   354,   222,   240,   155,   419, -      90,   302,   188,    49,   284,   383,   417,   111,   284,    51, -     111,   407,   156,   112,   431,   283,   429,   284,    66,   140, -     430,   291,    52,   351,    53,   189,   190,   434,   113,    69, -      70,   141,   113,    69,    70,   158,   113,   292,   293,   225, -      54,   226,   203,    66,   160,   264,   161,   159,    76,   204, -     263,   213,   162,   227,   269,   226,   397,   147,   214,   163, -     164,   165,    74,   166,   252,   167,   232,   227,   398,   233, -     234,   253,   310,   235,   168,    81,     1,     2,   294,    82, -     344,   236,    61,    62,    63,    64,    65,   345,   433,    73, -     401,   169,   170,   390,   408,   386,    75,   402,    78,   237, -     139,   409,    69,    70,    11,    12,    13,   316,    14,    15, -      16,    17,    18,    19,    20,    21,    22,    23,    24,    25, -      26,   365,   366,   367,   368,   369,   370,   371,   372,   373, -     374,   375,   376,   193,   201,   202,   194,   195,    93,    94, -      95,    96,   334,   335,   336,   337,   346,   347,    92,    79, -      98,    99,    80,   100,   101,   102,   103,   104,   125,   126, -     127,    56,   130,   378,   391,   139,   358,   137,   143,   -59, -     199,   206,   197,   220,   200,   208,   209,   211,   212,   245, -     267,   270,   217,   218,   219,   224,   230,   242,   247,   249, -     250,   259,   139,   265,   262,   260,   272,   316,   274,   276, -     278,   287,   288,   290,   297,   305,   299,   307,   304,   312, -     311,   318,   320,   321,   327,   317,   329,   322,   323,   331, -     324,   339,   325,   363,   326,   333,   341,   342,   416,   343, -     349,   379,   392,   387,   388,   389,   390,   394,   403,   404, -     410,   425,   423,   411,   412,   413,   422,   426,   424,   139, -     358,   137,   428,   427,   435,   258,   139,   309,   316,   415, -     128,   279,   400,     0,    84,     0,   134,   129,   135,   246, -       0,     0,   316 +     152,   146,   150,    52,   208,   254,   164,   209,   383,   167, +     116,   117,   158,   116,   117,   162,   430,   162,   239,   163, +     162,   165,   166,   125,   278,   118,   233,     5,   118,    13, +      14,    15,   267,   262,    16,   152,    17,    18,    19,    20, +      21,    22,    23,    24,    25,    26,    27,   419,   118,   119, +     271,   212,   119,   116,   117,   322,   323,   456,   310,   467, +     120,   276,   119,   120,   311,   387,   312,   198,   118,   207, +       7,   277,   473,   120,   470,   199,   388,   263,    53,   453, +      58,    55,   211,   121,    10,    11,   121,   122,   200,   275, +     122,   201,   119,   310,   233,   468,   324,   123,   202,   311, +     230,    68,   313,   120,   314,   124,   121,   321,   124,   442, +     292,    56,   203,    72,    73,    59,    72,    73,   124,   310, +     414,   124,   377,    10,    11,   311,   121,   331,   244,   293, +     122,   173,   378,   168,   415,   204,   205,   436,   289,   314, +     162,   169,   175,   174,   176,    88,   332,   437,   124,   299, +     177,    89,   443,   458,   416,   245,   341,   178,   179,   180, +      71,   181,   444,   182,   170,   314,   417,    68,   153,    91, +      92,   471,   183,   249,    72,    73,   432,    93,   171,   248, +     154,   249,    57,   420,   219,   250,   472,   152,   433,   184, +     185,   220,   424,   250,   347,   236,     1,     2,   348,    94, +      95,   255,   237,   112,   256,   257,   113,   114,   258,    99, +     100,   101,   102,    82,    96,    83,   259,   399,   400,   401, +     402,   403,   404,   405,   406,   407,   408,   409,   410,    63, +      64,    65,    66,    67,   260,    80,    78,    79,   367,   368, +     369,   370,    10,    11,    72,    73,   217,   218,    71,   225, +     379,   380,    81,    86,    84,    87,    98,   425,   143,   104, +     152,   392,   150,   110,   138,   105,   106,   107,   412,   108, +     141,   109,   136,   137,   215,   140,   222,   243,   156,    58, +     -66,   268,   210,   159,   297,   216,   224,   229,   152,   213, +     234,   235,   288,   347,   240,   241,   242,   247,   253,   265, +     431,   270,   272,   273,   283,   284,   286,   295,   300,  -229, +     290,   302,   304,   291,   306,   308,   327,   317,   318,   320, +     334,   329,   335,   452,   337,   343,   340,   360,   350,   342, +     349,   351,   362,   353,   354,   364,   372,   397,   355,   356, +     357,   385,   358,   359,   366,   374,   375,   152,   392,   150, +     376,   382,   386,   413,   152,   426,   347,   421,   422,   423, +     428,   424,   438,   439,   445,   446,   449,   464,   447,   448, +     459,   460,   347,   461,   462,   463,   466,   454,   465,   474, +     469,   294,   142,   339,   282,   451,   435,   147,   226,   285, +     214,   148,   309,     0,     0,     0,   269  };  static const yytype_int16 yycheck[] =  { -      82,    82,    82,   113,    92,   166,   100,    22,    23,   103, -     156,    99,    22,   101,   102,   349,    98,    22,   100,    37, -     325,   103,    37,    25,   170,    28,    29,    28,    24,    25, -      64,   113,    24,    36,    30,    36,     0,    28,    30,    28, -     125,    24,   188,    39,   412,    36,    61,    30,    49,    32, -      61,    52,    34,     8,    61,    58,    59,    72,    59,    98, -     428,    72,   147,    59,    98,    72,    55,    69,    59,   411, -      73,    53,    73,   106,    70,    71,   410,    95,    70,    98, -      95,   386,    73,    98,   426,    68,   422,    70,    98,    26, -     424,   237,    98,    98,    98,    96,    97,   433,   113,   110, -     111,    38,   113,   110,   111,    33,   113,    40,    41,    24, -      98,    26,    60,    98,    27,   209,    29,    45,    98,    67, -     208,    60,    35,    38,   212,    26,    33,   209,    67,    42, -      43,    44,   106,    46,   107,    48,    47,    38,    45,    50, -      51,   114,   252,    54,    57,   108,     3,     4,    81,   112, -     107,    62,    19,    20,    21,    22,    23,   114,   104,    26, -     107,    74,    75,   109,   107,   326,   106,   114,   112,    80, -     252,   114,   110,   111,     5,     6,     7,   259,     9,    10, -      11,    12,    13,    14,    15,    16,    17,    18,    19,    20, -      21,    83,    84,    85,    86,    87,    88,    89,    90,    91, -      92,    93,    94,    99,    22,    23,   102,   103,    99,   100, -     101,   102,    76,    77,    78,    79,   110,   111,   107,   112, -     107,   107,   112,   107,   107,   107,   107,   102,   107,   107, -      98,    64,    22,   321,   344,   317,   317,   317,   108,   108, -      98,    22,   108,    63,   109,   107,   107,   107,   107,    65, -      82,    22,   108,   108,   108,   108,   108,   108,   108,   108, -     108,   107,   344,   102,   109,   112,    22,   349,    22,    22, -      66,   108,   108,   108,    22,    22,    28,    22,   108,   102, -     109,   108,   107,   107,    22,   113,    22,   109,   109,    22, -     109,    22,   109,    22,   109,   109,   109,   109,   408,   109, -     107,    56,    22,   109,   109,   109,   109,    22,   109,    31, -     107,   109,   114,   108,   108,    65,   108,   104,   107,   401, -     401,   401,   104,   109,   109,   197,   408,   250,   410,   401, -      79,   230,   354,    -1,    55,    -1,    82,    80,    82,   183, -      -1,    -1,   424 +      89,    89,    89,     9,   124,   181,   106,   125,    23,   109, +      23,    24,    98,    23,    24,   104,   382,   106,   171,   105, +     109,   107,   108,    77,    23,    38,   162,     0,    38,     5, +       6,     7,   185,    26,    10,   124,    12,    13,    14,    15, +      16,    17,    18,    19,    20,    21,    22,   358,    38,    62, +     203,   137,    62,    23,    24,    41,    42,   447,    25,   459, +      73,   109,    62,    73,    31,    62,    33,    29,    38,   123, +       8,   119,   472,    73,   464,    37,    73,    70,   108,   445, +      65,    99,   136,    96,    99,   100,    96,   100,    50,   207, +     100,    53,    62,    25,   230,   461,    82,   110,    60,    31, +     110,   100,    69,    73,    71,   118,    96,   260,   118,   420, +     228,    99,    74,   113,   114,   100,   113,   114,   118,    25, +      26,   118,   109,    99,   100,    31,    96,    35,    29,   229, +     100,    34,   119,    29,    40,    97,    98,   109,   224,    71, +     229,    37,    28,    46,    30,   111,    54,   119,   118,   235, +      36,   117,   109,   448,    60,    56,   276,    43,    44,    45, +      99,    47,   119,    49,    60,    71,    72,   100,    27,    29, +      30,   466,    58,    27,   113,   114,    34,    37,    74,    25, +      39,    27,    99,   359,    61,    39,   106,   276,    46,    75, +      76,    68,   112,    39,   283,    61,     3,     4,   284,    59, +      60,    48,    68,   101,    51,    52,   104,   105,    55,   101, +     102,   103,   104,     9,    74,    11,    63,    84,    85,    86, +      87,    88,    89,    90,    91,    92,    93,    94,    95,    19, +      20,    21,    22,    23,    81,   108,    26,    27,    77,    78, +      79,    80,    99,   100,   113,   114,    23,    24,    99,   100, +     113,   114,   108,   117,    99,   117,   109,   377,    23,   109, +     349,   349,   349,   104,    99,   109,   109,   109,   354,   109, +     100,   109,   109,   109,    99,   109,    23,    64,   111,    65, +     111,    66,   111,   115,    83,   112,   109,   109,   377,   117, +     109,   109,   112,   382,   111,   111,   111,   111,   111,   111, +     386,   111,   111,   111,   109,   109,   117,   104,    23,   104, +     116,    23,    23,   116,    23,    67,    23,   111,   111,   111, +     111,    29,    23,   443,    23,   104,   110,    23,   110,   112, +     118,   111,    23,   109,   109,    23,    23,    23,   112,   112, +     112,   347,   112,   112,   112,   112,   112,   436,   436,   436, +     112,   109,   109,    57,   443,    23,   445,   112,   112,   112, +      23,   112,   112,    32,   109,   109,    66,   106,   111,   111, +     111,   119,   461,   109,   109,   112,   106,   446,   112,   112, +     462,   230,    87,   273,   210,   436,   388,    89,   159,   213, +     139,    89,   253,    -1,    -1,    -1,   198  };  /* 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,   116,   117,     0,   118,     8,   119,   120, -      98,     5,     6,     7,     9,    10,    11,    12,    13,    14, -      15,    16,    17,    18,    19,    20,    21,   121,   122,   123, -     124,   125,   126,   127,   128,   129,   130,   131,   132,   135, -     158,   159,   166,   167,   168,   230,   232,   235,   248,   106, -     233,    98,    98,    98,    98,   231,    64,    98,   138,   144, -     236,   138,   138,   138,   138,   138,    98,   139,   152,   110, -     111,   137,   229,   138,   106,   106,    98,   234,   112,   112, -     112,   108,   112,   170,   234,    28,    29,    36,    58,    59, -      73,   237,   107,    99,   100,   101,   102,   157,   107,   107, -     107,   107,   107,   107,   102,   154,    22,    23,    37,    61, -      72,    95,    98,   113,   143,   145,   160,   174,   177,   213, -     217,   220,   224,   226,   227,   107,   107,    98,   160,   236, -      22,   169,   173,   177,   213,   223,   225,   227,   228,   229, -      26,    38,   238,   108,   242,   137,   136,   229,   137,   136, -     137,   137,   136,    28,    36,    59,    73,   165,    33,    45, -      27,    29,    35,    42,    43,    44,    46,    48,    57,    74, -      75,   178,   180,   183,   185,   187,   191,   194,   196,   198, -     200,   203,   212,    28,    36,    49,    52,    59,    73,    96, -      97,   161,   228,    99,   102,   103,   156,   108,   143,    98, -     109,    22,    23,    60,    67,   239,    22,   245,   107,   107, -     143,   107,   107,    60,    67,   241,   242,   108,   108,   108, -      63,    28,    55,   195,   108,    24,    26,    38,   184,   240, -     108,   240,    47,    50,    51,    54,    62,    80,   207,    25, -      69,   199,   108,   244,   242,    65,   241,   108,   242,   108, -     108,   163,   107,   114,    22,   146,   147,   148,   152,   107, -     112,   171,   109,   137,   136,   102,   155,    82,   133,   137, -      22,   221,    22,   222,    22,   197,    22,   190,    66,   190, -      24,    30,    32,    68,    70,   179,   189,   108,   108,   208, -     108,   242,    40,    41,    81,   204,   205,    22,   247,    28, -     188,    34,    53,   192,   108,    22,   164,    22,   162,   164, -     228,   109,   102,   153,   140,   141,   229,   113,   108,   243, -     107,   107,   109,   109,   109,   109,   109,    22,   211,    22, -     209,    22,   210,   109,    76,    77,    78,    79,   193,    22, -     206,   109,   109,   109,   107,   114,   110,   111,   149,   107, -      22,    98,   142,    61,    72,   172,   175,   176,   177,   214, -     215,   218,   223,    22,   246,    83,    84,    85,    86,    87, -      88,    89,    90,    91,    92,    93,    94,   134,   137,    56, -      25,    39,    59,    71,   181,   189,   240,   109,   109,   109, -     109,   228,    22,   150,    22,   151,   141,    33,    45,   201, -     203,   107,   114,   109,    31,   182,   186,   189,   107,   114, -     107,   108,   108,    65,   202,   175,   228,   141,   216,   221, -     219,   222,   108,   114,   107,   109,   104,   109,   104,   206, -     141,   221,   222,   104,   206,   109 +       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,   111,   220, +     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,   221,    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,   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) @@ -1407,20 +1547,17 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp, state)  #if (defined __STDC__ || defined __C99__FUNC__ \       || defined __cplusplus || defined _MSC_VER)  static void -yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top)  #else  static void -yy_stack_print (yybottom, yytop) -    yytype_int16 *yybottom; -    yytype_int16 *yytop; +yy_stack_print (bottom, top) +    yytype_int16 *bottom; +    yytype_int16 *top;  #endif  {    YYFPRINTF (stderr, "Stack now"); -  for (; yybottom <= yytop; yybottom++) -    { -      int yybot = *yybottom; -      YYFPRINTF (stderr, " %d", yybot); -    } +  for (; bottom <= top; ++bottom) +    YYFPRINTF (stderr, " %d", *bottom);    YYFPRINTF (stderr, "\n");  } @@ -1456,11 +1593,11 @@ yy_reduce_print (yyvsp, yylsp, yyrule, state)    /* The symbols being reduced.  */    for (yyi = 0; yyi < yynrhs; yyi++)      { -      YYFPRINTF (stderr, "   $%d = ", yyi + 1); +      fprintf (stderr, "   $%d = ", yyi + 1);        yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],  		       &(yyvsp[(yyi + 1) - (yynrhs)])  		       , &(yylsp[(yyi + 1) - (yynrhs)])		       , state); -      YYFPRINTF (stderr, "\n"); +      fprintf (stderr, "\n");      }  } @@ -1744,8 +1881,10 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp, state)  	break;      }  } +  /* Prevent warnings from -Wmissing-prototypes.  */ +  #ifdef YYPARSE_PARAM  #if defined __STDC__ || defined __cplusplus  int yyparse (void *YYPARSE_PARAM); @@ -1764,9 +1903,10 @@ int yyparse (); -/*-------------------------. -| yyparse or yypush_parse.  | -`-------------------------*/ + +/*----------. +| yyparse.  | +`----------*/  #ifdef YYPARSE_PARAM  #if (defined __STDC__ || defined __C99__FUNC__ \ @@ -1790,97 +1930,88 @@ yyparse (state)  #endif  #endif  { -/* The lookahead symbol.  */ +  /* The look-ahead symbol.  */  int yychar; -/* The semantic value of the lookahead symbol.  */ +/* The semantic value of the look-ahead symbol.  */  YYSTYPE yylval; -/* Location data for the lookahead symbol.  */ +/* Number of syntax errors so far.  */ +int yynerrs; +/* Location data for the look-ahead symbol.  */  YYLTYPE yylloc; -    /* Number of syntax errors so far.  */ -    int yynerrs; - -    int yystate; -    /* Number of tokens to shift before error messages enabled.  */ -    int yyerrstatus; +  int yystate; +  int yyn; +  int yyresult; +  /* Number of tokens to shift before error messages enabled.  */ +  int yyerrstatus; +  /* Look-ahead token as an internal (translated) token number.  */ +  int yytoken = 0; +#if YYERROR_VERBOSE +  /* Buffer for error messages, and its allocated size.  */ +  char yymsgbuf[128]; +  char *yymsg = yymsgbuf; +  YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif -    /* The stacks and their tools: -       `yyss': related to states. -       `yyvs': related to semantic values. -       `yyls': related to locations. +  /* Three stacks and their tools: +     `yyss': related to states, +     `yyvs': related to semantic values, +     `yyls': related to locations. -       Refer to the stacks thru separate pointers, to allow yyoverflow -       to reallocate them elsewhere.  */ +     Refer to the stacks thru separate pointers, to allow yyoverflow +     to reallocate them elsewhere.  */ -    /* The state stack.  */ -    yytype_int16 yyssa[YYINITDEPTH]; -    yytype_int16 *yyss; -    yytype_int16 *yyssp; +  /* The state stack.  */ +  yytype_int16 yyssa[YYINITDEPTH]; +  yytype_int16 *yyss = yyssa; +  yytype_int16 *yyssp; -    /* The semantic value stack.  */ -    YYSTYPE yyvsa[YYINITDEPTH]; -    YYSTYPE *yyvs; -    YYSTYPE *yyvsp; +  /* The semantic value stack.  */ +  YYSTYPE yyvsa[YYINITDEPTH]; +  YYSTYPE *yyvs = yyvsa; +  YYSTYPE *yyvsp; -    /* The location stack.  */ -    YYLTYPE yylsa[YYINITDEPTH]; -    YYLTYPE *yyls; -    YYLTYPE *yylsp; +  /* The location stack.  */ +  YYLTYPE yylsa[YYINITDEPTH]; +  YYLTYPE *yyls = yylsa; +  YYLTYPE *yylsp; +  /* The locations where the error started and ended.  */ +  YYLTYPE yyerror_range[2]; -    /* The locations where the error started and ended.  */ -    YYLTYPE yyerror_range[2]; +#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) -    YYSIZE_T yystacksize; +  YYSIZE_T yystacksize = YYINITDEPTH; -  int yyn; -  int yyresult; -  /* Lookahead token as an internal (translated) token number.  */ -  int yytoken;    /* The variables used to return semantic value and location from the       action routines.  */    YYSTYPE yyval;    YYLTYPE yyloc; -#if YYERROR_VERBOSE -  /* Buffer for error messages, and its allocated size.  */ -  char yymsgbuf[128]; -  char *yymsg = yymsgbuf; -  YYSIZE_T yymsg_alloc = sizeof yymsgbuf; -#endif - -#define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N)) -    /* The number of symbols on the RHS of the reduced rule.       Keep to zero when no symbol should be popped.  */    int yylen = 0; -  yytoken = 0; -  yyss = yyssa; -  yyvs = yyvsa; -  yyls = yylsa; -  yystacksize = YYINITDEPTH; -    YYDPRINTF ((stderr, "Starting parse\n"));    yystate = 0;    yyerrstatus = 0;    yynerrs = 0; -  yychar = YYEMPTY; /* Cause a token to be read.  */ +  yychar = YYEMPTY;		/* Cause a token to be read.  */    /* Initialize stack pointers.       Waste one element of value and location stack       so that they stay on the same level as the state stack.       The wasted elements are never initialized.  */ +    yyssp = yyss;    yyvsp = yyvs;    yylsp = yyls; -  #if YYLTYPE_IS_TRIVIAL    /* Initialize the default location before parsing starts.  */    yylloc.first_line   = yylloc.last_line   = 1; -  yylloc.first_column = yylloc.last_column = 1; +  yylloc.first_column = yylloc.last_column = 0;  #endif    goto yysetstate; @@ -1919,7 +2050,6 @@ YYLTYPE yylloc;  		    &yyvs1, yysize * sizeof (*yyvsp),  		    &yyls1, yysize * sizeof (*yylsp),  		    &yystacksize); -  	yyls = yyls1;  	yyss = yyss1;  	yyvs = yyvs1; @@ -1941,9 +2071,9 @@ YYLTYPE yylloc;  	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));  	if (! yyptr)  	  goto yyexhaustedlab; -	YYSTACK_RELOCATE (yyss_alloc, yyss); -	YYSTACK_RELOCATE (yyvs_alloc, yyvs); -	YYSTACK_RELOCATE (yyls_alloc, yyls); +	YYSTACK_RELOCATE (yyss); +	YYSTACK_RELOCATE (yyvs); +	YYSTACK_RELOCATE (yyls);  #  undef YYSTACK_RELOCATE  	if (yyss1 != yyssa)  	  YYSTACK_FREE (yyss1); @@ -1964,9 +2094,6 @@ YYLTYPE yylloc;    YYDPRINTF ((stderr, "Entering state %d\n", yystate)); -  if (yystate == YYFINAL) -    YYACCEPT; -    goto yybackup;  /*-----------. @@ -1975,16 +2102,16 @@ YYLTYPE yylloc;  yybackup:    /* Do appropriate processing given the current state.  Read a -     lookahead token if we need one and don't already have one.  */ +     look-ahead token if we need one and don't already have one.  */ -  /* First try to decide what to do without reference to lookahead token.  */ +  /* First try to decide what to do without reference to look-ahead token.  */    yyn = yypact[yystate];    if (yyn == YYPACT_NINF)      goto yydefault; -  /* Not known => get a lookahead token if don't already have one.  */ +  /* Not known => get a look-ahead token if don't already have one.  */ -  /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */ +  /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol.  */    if (yychar == YYEMPTY)      {        YYDPRINTF ((stderr, "Reading a token: ")); @@ -2016,16 +2143,20 @@ yybackup:        goto yyreduce;      } +  if (yyn == YYFINAL) +    YYACCEPT; +    /* Count tokens shifted since error; after three, turn off error       status.  */    if (yyerrstatus)      yyerrstatus--; -  /* Shift the lookahead token.  */ +  /* Shift the look-ahead token.  */    YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); -  /* Discard the shifted token.  */ -  yychar = YYEMPTY; +  /* Discard the shifted token unless it is eof.  */ +  if (yychar != YYEOF) +    yychar = YYEMPTY;    yystate = yyn;    *++yyvsp = yylval; @@ -2066,9 +2197,7 @@ yyreduce:    switch (yyn)      {          case 3: - -/* Line 1455 of yacc.c  */ -#line 260 "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"); @@ -2079,9 +2208,7 @@ yyreduce:      break;    case 4: - -/* Line 1455 of yacc.c  */ -#line 268 "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"); @@ -2094,9 +2221,7 @@ yyreduce:      break;    case 7: - -/* Line 1455 of yacc.c  */ -#line 284 "program_parse.y" +#line 296 "program_parse.y"      {  	   int valid = 0; @@ -2119,9 +2244,7 @@ yyreduce:      break;    case 10: - -/* Line 1455 of yacc.c  */ -#line 310 "program_parse.y" +#line 322 "program_parse.y"      {  	   if ((yyvsp[(1) - (2)].inst) != NULL) {  	      if (state->inst_tail == NULL) { @@ -2139,9 +2262,7 @@ yyreduce:      break;    case 12: - -/* Line 1455 of yacc.c  */ -#line 328 "program_parse.y" +#line 340 "program_parse.y"      {  	   (yyval.inst) = (yyvsp[(1) - (1)].inst);  	   state->prog->NumAluInstructions++; @@ -2149,87 +2270,65 @@ yyreduce:      break;    case 13: - -/* Line 1455 of yacc.c  */ -#line 333 "program_parse.y" +#line 345 "program_parse.y"      {  	   (yyval.inst) = (yyvsp[(1) - (1)].inst);  	   state->prog->NumTexInstructions++;  	;}      break; -  case 23: - -/* Line 1455 of yacc.c  */ -#line 353 "program_parse.y" -    { -	   (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); -	;} -    break; -    case 24: - -/* Line 1455 of yacc.c  */ -#line 359 "program_parse.y" +#line 366 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_ctor(OPCODE_ARL, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);  	;}      break;    case 25: - -/* Line 1455 of yacc.c  */ -#line 366 "program_parse.y" +#line 372 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (4)].temp_inst).Opcode, & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (4)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);  	;}      break;    case 26: - -/* Line 1455 of yacc.c  */ -#line 373 "program_parse.y" +#line 378 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (4)].temp_inst), & (yyvsp[(2) - (4)].dst_reg), & (yyvsp[(4) - (4)].src_reg), NULL, NULL);  	;}      break;    case 27: - -/* Line 1455 of yacc.c  */ -#line 381 "program_parse.y" +#line 384 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (6)].temp_inst).Opcode, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL);  	;}      break;    case 28: - -/* Line 1455 of yacc.c  */ -#line 389 "program_parse.y" +#line 391 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), & (yyvsp[(6) - (8)].src_reg), & (yyvsp[(8) - (8)].src_reg)); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), & (yyvsp[(6) - (6)].src_reg), NULL);  	;}      break;    case 29: +#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)); +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 396 "program_parse.y" +  case 30: +#line 404 "program_parse.y"      { -	   (yyval.inst) = asm_instruction_ctor((yyvsp[(1) - (8)].temp_inst).Opcode, & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL); +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (8)].temp_inst), & (yyvsp[(2) - (8)].dst_reg), & (yyvsp[(4) - (8)].src_reg), NULL, NULL);  	   if ((yyval.inst) != NULL) {  	      const GLbitfield tex_mask = (1U << (yyvsp[(6) - (8)].integer));  	      GLbitfield shadow_tex = 0;  	      GLbitfield target_mask = 0; -	      (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (8)].temp_inst).SaturateMode;  	      (yyval.inst)->Base.TexSrcUnit = (yyvsp[(6) - (8)].integer);  	      if ((yyvsp[(8) - (8)].integer) < 0) { @@ -2265,113 +2364,139 @@ yyreduce:  	;}      break; -  case 30: - -/* Line 1455 of yacc.c  */ -#line 441 "program_parse.y" +  case 31: +#line 448 "program_parse.y"      {  	   (yyval.inst) = asm_instruction_ctor(OPCODE_KIL, NULL, & (yyvsp[(2) - (2)].src_reg), NULL, NULL);  	   state->fragment.UsesKill = 1;  	;}      break; -  case 31: +  case 32: +#line 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; -/* Line 1455 of yacc.c  */ -#line 448 "program_parse.y" +  case 33: +#line 463 "program_parse.y"      { -	   (yyval.integer) = (yyvsp[(2) - (2)].integer); +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (12)].temp_inst), & (yyvsp[(2) - (12)].dst_reg), & (yyvsp[(4) - (12)].src_reg), & (yyvsp[(6) - (12)].src_reg), & (yyvsp[(8) - (12)].src_reg)); +	   if ((yyval.inst) != NULL) { +	      const GLbitfield tex_mask = (1U << (yyvsp[(10) - (12)].integer)); +	      GLbitfield shadow_tex = 0; +	      GLbitfield target_mask = 0; + + +	      (yyval.inst)->Base.TexSrcUnit = (yyvsp[(10) - (12)].integer); + +	      if ((yyvsp[(12) - (12)].integer) < 0) { +		 shadow_tex = tex_mask; + +		 (yyval.inst)->Base.TexSrcTarget = -(yyvsp[(12) - (12)].integer); +		 (yyval.inst)->Base.TexShadow = 1; +	      } else { +		 (yyval.inst)->Base.TexSrcTarget = (yyvsp[(12) - (12)].integer); +	      } + +	      target_mask = (1U << (yyval.inst)->Base.TexSrcTarget); + +	      /* If this texture unit was previously accessed and that access +	       * had a different texture target, generate an error. +	       * +	       * If this texture unit was previously accessed and that access +	       * had a different shadow mode, generate an error. +	       */ +	      if ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != 0) +		  && ((state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] != target_mask) +		      || ((state->prog->ShadowSamplers & tex_mask) +			  != shadow_tex))) { +		 yyerror(& (yylsp[(12) - (12)]), state, +			 "multiple targets used on one texture image unit"); +		 YYERROR; +	      } + + +	      state->prog->TexturesUsed[(yyvsp[(10) - (12)].integer)] |= target_mask; +	      state->prog->ShadowSamplers |= shadow_tex; +	   }  	;}      break; -  case 32: +  case 34: +#line 507 "program_parse.y" +    { +	   (yyval.integer) = (yyvsp[(2) - (2)].integer); +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 453 "program_parse.y" +  case 35: +#line 512 "program_parse.y"      { (yyval.integer) = TEXTURE_1D_INDEX; ;}      break; -  case 33: - -/* Line 1455 of yacc.c  */ -#line 454 "program_parse.y" +  case 36: +#line 513 "program_parse.y"      { (yyval.integer) = TEXTURE_2D_INDEX; ;}      break; -  case 34: - -/* Line 1455 of yacc.c  */ -#line 455 "program_parse.y" +  case 37: +#line 514 "program_parse.y"      { (yyval.integer) = TEXTURE_3D_INDEX; ;}      break; -  case 35: - -/* Line 1455 of yacc.c  */ -#line 456 "program_parse.y" +  case 38: +#line 515 "program_parse.y"      { (yyval.integer) = TEXTURE_CUBE_INDEX; ;}      break; -  case 36: - -/* Line 1455 of yacc.c  */ -#line 457 "program_parse.y" +  case 39: +#line 516 "program_parse.y"      { (yyval.integer) = TEXTURE_RECT_INDEX; ;}      break; -  case 37: - -/* Line 1455 of yacc.c  */ -#line 458 "program_parse.y" +  case 40: +#line 517 "program_parse.y"      { (yyval.integer) = -TEXTURE_1D_INDEX; ;}      break; -  case 38: - -/* Line 1455 of yacc.c  */ -#line 459 "program_parse.y" +  case 41: +#line 518 "program_parse.y"      { (yyval.integer) = -TEXTURE_2D_INDEX; ;}      break; -  case 39: - -/* Line 1455 of yacc.c  */ -#line 460 "program_parse.y" +  case 42: +#line 519 "program_parse.y"      { (yyval.integer) = -TEXTURE_RECT_INDEX; ;}      break; -  case 40: - -/* Line 1455 of yacc.c  */ -#line 461 "program_parse.y" +  case 43: +#line 520 "program_parse.y"      { (yyval.integer) = TEXTURE_1D_ARRAY_INDEX; ;}      break; -  case 41: - -/* Line 1455 of yacc.c  */ -#line 462 "program_parse.y" +  case 44: +#line 521 "program_parse.y"      { (yyval.integer) = TEXTURE_2D_ARRAY_INDEX; ;}      break; -  case 42: - -/* Line 1455 of yacc.c  */ -#line 463 "program_parse.y" +  case 45: +#line 522 "program_parse.y"      { (yyval.integer) = -TEXTURE_1D_ARRAY_INDEX; ;}      break; -  case 43: - -/* Line 1455 of yacc.c  */ -#line 464 "program_parse.y" +  case 46: +#line 523 "program_parse.y"      { (yyval.integer) = -TEXTURE_2D_ARRAY_INDEX; ;}      break; -  case 44: - -/* Line 1455 of yacc.c  */ -#line 468 "program_parse.y" +  case 47: +#line 527 "program_parse.y"      {  	   /* FIXME: Is this correct?  Should the extenedSwizzle be applied  	    * FIXME: to the existing swizzle? @@ -2379,31 +2504,71 @@ yyreduce:  	   (yyvsp[(4) - (6)].src_reg).Base.Swizzle = (yyvsp[(6) - (6)].swiz_mask).swizzle;  	   (yyvsp[(4) - (6)].src_reg).Base.Negate = (yyvsp[(6) - (6)].swiz_mask).mask; -	   (yyval.inst) = asm_instruction_ctor(OPCODE_SWZ, & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), NULL, NULL); -	   (yyval.inst)->Base.SaturateMode = (yyvsp[(1) - (6)].temp_inst).SaturateMode; +	   (yyval.inst) = asm_instruction_copy_ctor(& (yyvsp[(1) - (6)].temp_inst), & (yyvsp[(2) - (6)].dst_reg), & (yyvsp[(4) - (6)].src_reg), NULL, NULL);  	;}      break; -  case 45: +  case 48: +#line 539 "program_parse.y" +    { +	   (yyval.src_reg) = (yyvsp[(2) - (2)].src_reg); + +	   if ((yyvsp[(1) - (2)].negate)) { +	      (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; +	   } +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 481 "program_parse.y" +  case 49: +#line 547 "program_parse.y"      { -	   (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); +	   (yyval.src_reg) = (yyvsp[(3) - (4)].src_reg); -	   if ((yyvsp[(1) - (3)].negate)) { +	   if (!state->option.NV_fragment) { +	      yyerror(& (yylsp[(2) - (4)]), state, "unexpected character '|'"); +	      YYERROR; +	   } + +	   if ((yyvsp[(1) - (4)].negate)) {  	      (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate;  	   } +	   (yyval.src_reg).Base.Abs = 1; +	;} +    break; + +  case 50: +#line 564 "program_parse.y" +    { +	   (yyval.src_reg) = (yyvsp[(1) - (2)].src_reg); +  	   (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, -						    (yyvsp[(3) - (3)].swiz_mask).swizzle); +						    (yyvsp[(2) - (2)].swiz_mask).swizzle);  	;}      break; -  case 46: +  case 51: +#line 571 "program_parse.y" +    { +	   struct asm_symbol temp_sym; + +	   if (!state->option.NV_fragment) { +	      yyerror(& (yylsp[(1) - (1)]), state, "expected scalar suffix"); +	      YYERROR; +	   } + +	   memset(& temp_sym, 0, sizeof(temp_sym)); +	   temp_sym.param_binding_begin = ~0; +	   initialize_symbol_from_const(state->prog, & temp_sym, & (yyvsp[(1) - (1)].vector)); -/* Line 1455 of yacc.c  */ -#line 494 "program_parse.y" +	   init_src_reg(& (yyval.src_reg)); +	   (yyval.src_reg).Base.File = PROGRAM_CONSTANT; +	   (yyval.src_reg).Base.Index = temp_sym.param_binding_begin; +	;} +    break; + +  case 52: +#line 590 "program_parse.y"      {  	   (yyval.src_reg) = (yyvsp[(2) - (3)].src_reg); @@ -2416,13 +2581,34 @@ yyreduce:  	;}      break; -  case 47: +  case 53: +#line 601 "program_parse.y" +    { +	   (yyval.src_reg) = (yyvsp[(3) - (5)].src_reg); -/* Line 1455 of yacc.c  */ -#line 507 "program_parse.y" +	   if (!state->option.NV_fragment) { +	      yyerror(& (yylsp[(2) - (5)]), state, "unexpected character '|'"); +	      YYERROR; +	   } + +	   if ((yyvsp[(1) - (5)].negate)) { +	      (yyval.src_reg).Base.Negate = ~(yyval.src_reg).Base.Negate; +	   } + +	   (yyval.src_reg).Base.Abs = 1; +	   (yyval.src_reg).Base.Swizzle = _mesa_combine_swizzles((yyval.src_reg).Base.Swizzle, +						    (yyvsp[(4) - (5)].swiz_mask).swizzle); +	;} +    break; + +  case 54: +#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 @@ -2431,7 +2617,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;  	      } @@ -2441,10 +2627,8 @@ yyreduce:  	;}      break; -  case 48: - -/* Line 1455 of yacc.c  */ -#line 529 "program_parse.y" +  case 55: +#line 646 "program_parse.y"      {  	   init_dst_reg(& (yyval.dst_reg));  	   (yyval.dst_reg).File = PROGRAM_ADDRESS; @@ -2453,10 +2637,8 @@ yyreduce:  	;}      break; -  case 49: - -/* Line 1455 of yacc.c  */ -#line 538 "program_parse.y" +  case 56: +#line 655 "program_parse.y"      {  	   const unsigned xyzw_valid =  	      ((yyvsp[(1) - (7)].ext_swizzle).xyzw_valid << 0) @@ -2489,20 +2671,16 @@ yyreduce:  	;}      break; -  case 50: - -/* Line 1455 of yacc.c  */ -#line 571 "program_parse.y" +  case 57: +#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 51: - -/* Line 1455 of yacc.c  */ -#line 578 "program_parse.y" +  case 58: +#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"); @@ -2519,10 +2697,8 @@ yyreduce:  	;}      break; -  case 52: - -/* Line 1455 of yacc.c  */ -#line 593 "program_parse.y" +  case 59: +#line 710 "program_parse.y"      {  	   if (strlen((yyvsp[(1) - (1)].string)) > 1) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid extended swizzle selector"); @@ -2572,10 +2748,8 @@ yyreduce:  	;}      break; -  case 53: - -/* Line 1455 of yacc.c  */ -#line 643 "program_parse.y" +  case 60: +#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)); @@ -2619,10 +2793,8 @@ yyreduce:  	;}      break; -  case 54: - -/* Line 1455 of yacc.c  */ -#line 685 "program_parse.y" +  case 61: +#line 802 "program_parse.y"      {  	   init_src_reg(& (yyval.src_reg));  	   (yyval.src_reg).Base.File = PROGRAM_INPUT; @@ -2635,10 +2807,8 @@ yyreduce:  	;}      break; -  case 55: - -/* Line 1455 of yacc.c  */ -#line 696 "program_parse.y" +  case 62: +#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)) { @@ -2661,10 +2831,8 @@ yyreduce:  	;}      break; -  case 56: - -/* Line 1455 of yacc.c  */ -#line 717 "program_parse.y" +  case 63: +#line 834 "program_parse.y"      {  	   init_src_reg(& (yyval.src_reg));  	   (yyval.src_reg).Base.File = ((yyvsp[(1) - (1)].temp_sym).name != NULL)  @@ -2674,10 +2842,8 @@ yyreduce:  	;}      break; -  case 57: - -/* Line 1455 of yacc.c  */ -#line 727 "program_parse.y" +  case 64: +#line 844 "program_parse.y"      {  	   init_dst_reg(& (yyval.dst_reg));  	   (yyval.dst_reg).File = PROGRAM_OUTPUT; @@ -2685,10 +2851,8 @@ yyreduce:  	;}      break; -  case 58: - -/* Line 1455 of yacc.c  */ -#line 733 "program_parse.y" +  case 65: +#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)); @@ -2719,10 +2883,8 @@ yyreduce:  	;}      break; -  case 59: - -/* Line 1455 of yacc.c  */ -#line 764 "program_parse.y" +  case 66: +#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)); @@ -2739,20 +2901,16 @@ yyreduce:  	;}      break; -  case 62: - -/* Line 1455 of yacc.c  */ -#line 783 "program_parse.y" +  case 69: +#line 900 "program_parse.y"      {  	   init_src_reg(& (yyval.src_reg));  	   (yyval.src_reg).Base.Index = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 63: - -/* Line 1455 of yacc.c  */ -#line 790 "program_parse.y" +  case 70: +#line 907 "program_parse.y"      {  	   /* FINISHME: Add support for multiple address registers.  	    */ @@ -2764,35 +2922,29 @@ yyreduce:  	;}      break; -  case 64: - -/* Line 1455 of yacc.c  */ -#line 801 "program_parse.y" +  case 71: +#line 918 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 65: - -/* Line 1455 of yacc.c  */ -#line 802 "program_parse.y" +  case 72: +#line 919 "program_parse.y"      { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;}      break; -  case 66: - -/* Line 1455 of yacc.c  */ -#line 803 "program_parse.y" +  case 73: +#line 920 "program_parse.y"      { (yyval.integer) = -(yyvsp[(2) - (2)].integer); ;}      break; -  case 67: - -/* Line 1455 of yacc.c  */ -#line 807 "program_parse.y" +  case 74: +#line 924 "program_parse.y"      {  	   if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 63)) { -	      yyerror(& (yylsp[(1) - (1)]), state, -		      "relative address offset too large (positive)"); +              char s[100]; +              _mesa_snprintf(s, sizeof(s), +                             "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); +	      yyerror(& (yylsp[(1) - (1)]), state, s);  	      YYERROR;  	   } else {  	      (yyval.integer) = (yyvsp[(1) - (1)].integer); @@ -2800,14 +2952,14 @@ yyreduce:  	;}      break; -  case 68: - -/* Line 1455 of yacc.c  */ -#line 819 "program_parse.y" +  case 75: +#line 938 "program_parse.y"      {  	   if (((yyvsp[(1) - (1)].integer) < 0) || ((yyvsp[(1) - (1)].integer) > 64)) { -	      yyerror(& (yylsp[(1) - (1)]), state, -		      "relative address offset too large (negative)"); +              char s[100]; +              _mesa_snprintf(s, sizeof(s), +                             "relative address offset too large (%d)", (yyvsp[(1) - (1)].integer)); +	      yyerror(& (yylsp[(1) - (1)]), state, s);  	      YYERROR;  	   } else {  	      (yyval.integer) = (yyvsp[(1) - (1)].integer); @@ -2815,10 +2967,8 @@ yyreduce:  	;}      break; -  case 69: - -/* Line 1455 of yacc.c  */ -#line 831 "program_parse.y" +  case 76: +#line 952 "program_parse.y"      {  	   struct asm_symbol *const s = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(1) - (1)].string)); @@ -2836,10 +2986,8 @@ yyreduce:  	;}      break; -  case 70: - -/* Line 1455 of yacc.c  */ -#line 849 "program_parse.y" +  case 77: +#line 970 "program_parse.y"      {  	   if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid address component selector"); @@ -2850,10 +2998,8 @@ yyreduce:  	;}      break; -  case 71: - -/* Line 1455 of yacc.c  */ -#line 860 "program_parse.y" +  case 78: +#line 981 "program_parse.y"      {  	   if ((yyvsp[(1) - (1)].swiz_mask).mask != WRITEMASK_X) {  	      yyerror(& (yylsp[(1) - (1)]), state, @@ -2865,24 +3011,105 @@ yyreduce:  	;}      break; -  case 76: +  case 83: +#line 997 "program_parse.y" +    { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} +    break; -/* Line 1455 of yacc.c  */ -#line 876 "program_parse.y" +  case 88: +#line 1001 "program_parse.y"      { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;}      break; -  case 81: +  case 89: +#line 1005 "program_parse.y" +    { +	   (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 880 "program_parse.y" -    { (yyval.swiz_mask).swizzle = SWIZZLE_NOOP; (yyval.swiz_mask).mask = WRITEMASK_XYZW; ;} +  case 90: +#line 1009 "program_parse.y" +    { +	   (yyval.dst_reg) = (yyvsp[(2) - (3)].dst_reg); +	;}      break; -  case 88: +  case 91: +#line 1013 "program_parse.y" +    { +	   (yyval.dst_reg).CondMask = COND_TR; +	   (yyval.dst_reg).CondSwizzle = SWIZZLE_NOOP; +	   (yyval.dst_reg).CondSrc = 0; +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 892 "program_parse.y" +  case 92: +#line 1021 "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 1028 "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 1035 "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 1058 "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 1089 "program_parse.y"      {  	   struct asm_symbol *const s =  	      declare_variable(state, (yyvsp[(2) - (4)].string), at_attrib, & (yylsp[(2) - (4)])); @@ -2900,55 +3127,43 @@ yyreduce:  	;}      break; -  case 89: - -/* Line 1455 of yacc.c  */ -#line 910 "program_parse.y" +  case 103: +#line 1107 "program_parse.y"      {  	   (yyval.attrib) = (yyvsp[(2) - (2)].attrib);  	;}      break; -  case 90: - -/* Line 1455 of yacc.c  */ -#line 914 "program_parse.y" +  case 104: +#line 1111 "program_parse.y"      {  	   (yyval.attrib) = (yyvsp[(2) - (2)].attrib);  	;}      break; -  case 91: - -/* Line 1455 of yacc.c  */ -#line 920 "program_parse.y" +  case 105: +#line 1117 "program_parse.y"      {  	   (yyval.attrib) = VERT_ATTRIB_POS;  	;}      break; -  case 92: - -/* Line 1455 of yacc.c  */ -#line 924 "program_parse.y" +  case 106: +#line 1121 "program_parse.y"      {  	   (yyval.attrib) = VERT_ATTRIB_WEIGHT;  	;}      break; -  case 93: - -/* Line 1455 of yacc.c  */ -#line 928 "program_parse.y" +  case 107: +#line 1125 "program_parse.y"      {  	   (yyval.attrib) = VERT_ATTRIB_NORMAL;  	;}      break; -  case 94: - -/* Line 1455 of yacc.c  */ -#line 932 "program_parse.y" +  case 108: +#line 1129 "program_parse.y"      {  	   if (!state->ctx->Extensions.EXT_secondary_color) {  	      yyerror(& (yylsp[(2) - (2)]), state, "GL_EXT_secondary_color not supported"); @@ -2959,10 +3174,8 @@ yyreduce:  	;}      break; -  case 95: - -/* Line 1455 of yacc.c  */ -#line 941 "program_parse.y" +  case 109: +#line 1138 "program_parse.y"      {  	   if (!state->ctx->Extensions.EXT_fog_coord) {  	      yyerror(& (yylsp[(1) - (1)]), state, "GL_EXT_fog_coord not supported"); @@ -2973,38 +3186,30 @@ yyreduce:  	;}      break; -  case 96: - -/* Line 1455 of yacc.c  */ -#line 950 "program_parse.y" +  case 110: +#line 1147 "program_parse.y"      {  	   (yyval.attrib) = VERT_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);  	;}      break; -  case 97: - -/* Line 1455 of yacc.c  */ -#line 954 "program_parse.y" +  case 111: +#line 1151 "program_parse.y"      {  	   yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");  	   YYERROR;  	;}      break; -  case 98: - -/* Line 1455 of yacc.c  */ -#line 959 "program_parse.y" +  case 112: +#line 1156 "program_parse.y"      {  	   (yyval.attrib) = VERT_ATTRIB_GENERIC0 + (yyvsp[(3) - (4)].integer);  	;}      break; -  case 99: - -/* Line 1455 of yacc.c  */ -#line 965 "program_parse.y" +  case 113: +#line 1162 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxAttribs) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid vertex attribute reference"); @@ -3015,46 +3220,36 @@ yyreduce:  	;}      break; -  case 103: - -/* Line 1455 of yacc.c  */ -#line 979 "program_parse.y" +  case 117: +#line 1176 "program_parse.y"      {  	   (yyval.attrib) = FRAG_ATTRIB_WPOS;  	;}      break; -  case 104: - -/* Line 1455 of yacc.c  */ -#line 983 "program_parse.y" +  case 118: +#line 1180 "program_parse.y"      {  	   (yyval.attrib) = FRAG_ATTRIB_COL0 + (yyvsp[(2) - (2)].integer);  	;}      break; -  case 105: - -/* Line 1455 of yacc.c  */ -#line 987 "program_parse.y" +  case 119: +#line 1184 "program_parse.y"      {  	   (yyval.attrib) = FRAG_ATTRIB_FOGC;  	;}      break; -  case 106: - -/* Line 1455 of yacc.c  */ -#line 991 "program_parse.y" +  case 120: +#line 1188 "program_parse.y"      {  	   (yyval.attrib) = FRAG_ATTRIB_TEX0 + (yyvsp[(2) - (2)].integer);  	;}      break; -  case 109: - -/* Line 1455 of yacc.c  */ -#line 999 "program_parse.y" +  case 123: +#line 1196 "program_parse.y"      {  	   struct asm_symbol *const s =  	      declare_variable(state, (yyvsp[(2) - (3)].string), at_param, & (yylsp[(2) - (3)])); @@ -3070,10 +3265,8 @@ yyreduce:  	;}      break; -  case 110: - -/* Line 1455 of yacc.c  */ -#line 1015 "program_parse.y" +  case 124: +#line 1212 "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,  @@ -3095,19 +3288,15 @@ yyreduce:  	;}      break; -  case 111: - -/* Line 1455 of yacc.c  */ -#line 1037 "program_parse.y" +  case 125: +#line 1234 "program_parse.y"      {  	   (yyval.integer) = 0;  	;}      break; -  case 112: - -/* Line 1455 of yacc.c  */ -#line 1041 "program_parse.y" +  case 126: +#line 1238 "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"); @@ -3118,38 +3307,30 @@ yyreduce:  	;}      break; -  case 113: - -/* Line 1455 of yacc.c  */ -#line 1052 "program_parse.y" +  case 127: +#line 1249 "program_parse.y"      {  	   (yyval.temp_sym) = (yyvsp[(2) - (2)].temp_sym);  	;}      break; -  case 114: - -/* Line 1455 of yacc.c  */ -#line 1058 "program_parse.y" +  case 128: +#line 1255 "program_parse.y"      {  	   (yyval.temp_sym) = (yyvsp[(3) - (4)].temp_sym);  	;}      break; -  case 116: - -/* Line 1455 of yacc.c  */ -#line 1065 "program_parse.y" +  case 130: +#line 1262 "program_parse.y"      {  	   (yyvsp[(1) - (3)].temp_sym).param_binding_length += (yyvsp[(3) - (3)].temp_sym).param_binding_length;  	   (yyval.temp_sym) = (yyvsp[(1) - (3)].temp_sym);  	;}      break; -  case 117: - -/* Line 1455 of yacc.c  */ -#line 1072 "program_parse.y" +  case 131: +#line 1269 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3157,10 +3338,8 @@ yyreduce:  	;}      break; -  case 118: - -/* Line 1455 of yacc.c  */ -#line 1078 "program_parse.y" +  case 132: +#line 1275 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3168,10 +3347,8 @@ yyreduce:  	;}      break; -  case 119: - -/* Line 1455 of yacc.c  */ -#line 1084 "program_parse.y" +  case 133: +#line 1281 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3179,10 +3356,8 @@ yyreduce:  	;}      break; -  case 120: - -/* Line 1455 of yacc.c  */ -#line 1092 "program_parse.y" +  case 134: +#line 1289 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3190,10 +3365,8 @@ yyreduce:  	;}      break; -  case 121: - -/* Line 1455 of yacc.c  */ -#line 1098 "program_parse.y" +  case 135: +#line 1295 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3201,10 +3374,8 @@ yyreduce:  	;}      break; -  case 122: - -/* Line 1455 of yacc.c  */ -#line 1104 "program_parse.y" +  case 136: +#line 1301 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3212,10 +3383,8 @@ yyreduce:  	;}      break; -  case 123: - -/* Line 1455 of yacc.c  */ -#line 1112 "program_parse.y" +  case 137: +#line 1309 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3223,10 +3392,8 @@ yyreduce:  	;}      break; -  case 124: - -/* Line 1455 of yacc.c  */ -#line 1118 "program_parse.y" +  case 138: +#line 1315 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3234,10 +3401,8 @@ yyreduce:  	;}      break; -  case 125: - -/* Line 1455 of yacc.c  */ -#line 1124 "program_parse.y" +  case 139: +#line 1321 "program_parse.y"      {  	   memset(& (yyval.temp_sym), 0, sizeof((yyval.temp_sym)));  	   (yyval.temp_sym).param_binding_begin = ~0; @@ -3245,101 +3410,73 @@ yyreduce:  	;}      break; -  case 126: - -/* Line 1455 of yacc.c  */ -#line 1131 "program_parse.y" +  case 140: +#line 1328 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(1) - (1)].state), sizeof((yyval.state))); ;}      break; -  case 127: - -/* Line 1455 of yacc.c  */ -#line 1132 "program_parse.y" +  case 141: +#line 1329 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 128: - -/* Line 1455 of yacc.c  */ -#line 1135 "program_parse.y" +  case 142: +#line 1332 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 129: - -/* Line 1455 of yacc.c  */ -#line 1136 "program_parse.y" +  case 143: +#line 1333 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 130: - -/* Line 1455 of yacc.c  */ -#line 1137 "program_parse.y" +  case 144: +#line 1334 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 131: - -/* Line 1455 of yacc.c  */ -#line 1138 "program_parse.y" +  case 145: +#line 1335 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 132: - -/* Line 1455 of yacc.c  */ -#line 1139 "program_parse.y" +  case 146: +#line 1336 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 133: - -/* Line 1455 of yacc.c  */ -#line 1140 "program_parse.y" +  case 147: +#line 1337 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 134: - -/* Line 1455 of yacc.c  */ -#line 1141 "program_parse.y" +  case 148: +#line 1338 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 135: - -/* Line 1455 of yacc.c  */ -#line 1142 "program_parse.y" +  case 149: +#line 1339 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 136: - -/* Line 1455 of yacc.c  */ -#line 1143 "program_parse.y" +  case 150: +#line 1340 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 137: - -/* Line 1455 of yacc.c  */ -#line 1144 "program_parse.y" +  case 151: +#line 1341 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 138: - -/* Line 1455 of yacc.c  */ -#line 1145 "program_parse.y" +  case 152: +#line 1342 "program_parse.y"      { memcpy((yyval.state), (yyvsp[(2) - (2)].state), sizeof((yyval.state))); ;}      break; -  case 139: - -/* Line 1455 of yacc.c  */ -#line 1149 "program_parse.y" +  case 153: +#line 1346 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_MATERIAL; @@ -3348,37 +3485,29 @@ yyreduce:  	;}      break; -  case 140: - -/* Line 1455 of yacc.c  */ -#line 1158 "program_parse.y" +  case 154: +#line 1355 "program_parse.y"      {  	   (yyval.integer) = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 141: - -/* Line 1455 of yacc.c  */ -#line 1162 "program_parse.y" +  case 155: +#line 1359 "program_parse.y"      {  	   (yyval.integer) = STATE_EMISSION;  	;}      break; -  case 142: - -/* Line 1455 of yacc.c  */ -#line 1166 "program_parse.y" +  case 156: +#line 1363 "program_parse.y"      {  	   (yyval.integer) = STATE_SHININESS;  	;}      break; -  case 143: - -/* Line 1455 of yacc.c  */ -#line 1172 "program_parse.y" +  case 157: +#line 1369 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_LIGHT; @@ -3387,28 +3516,22 @@ yyreduce:  	;}      break; -  case 144: - -/* Line 1455 of yacc.c  */ -#line 1181 "program_parse.y" +  case 158: +#line 1378 "program_parse.y"      {  	   (yyval.integer) = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 145: - -/* Line 1455 of yacc.c  */ -#line 1185 "program_parse.y" +  case 159: +#line 1382 "program_parse.y"      {  	   (yyval.integer) = STATE_POSITION;  	;}      break; -  case 146: - -/* Line 1455 of yacc.c  */ -#line 1189 "program_parse.y" +  case 160: +#line 1386 "program_parse.y"      {  	   if (!state->ctx->Extensions.EXT_point_parameters) {  	      yyerror(& (yylsp[(1) - (1)]), state, "GL_ARB_point_parameters not supported"); @@ -3419,57 +3542,45 @@ yyreduce:  	;}      break; -  case 147: - -/* Line 1455 of yacc.c  */ -#line 1198 "program_parse.y" +  case 161: +#line 1395 "program_parse.y"      {  	   (yyval.integer) = (yyvsp[(2) - (2)].integer);  	;}      break; -  case 148: - -/* Line 1455 of yacc.c  */ -#line 1202 "program_parse.y" +  case 162: +#line 1399 "program_parse.y"      {  	   (yyval.integer) = STATE_HALF_VECTOR;  	;}      break; -  case 149: - -/* Line 1455 of yacc.c  */ -#line 1208 "program_parse.y" +  case 163: +#line 1405 "program_parse.y"      {  	   (yyval.integer) = STATE_SPOT_DIRECTION;  	;}      break; -  case 150: - -/* Line 1455 of yacc.c  */ -#line 1214 "program_parse.y" +  case 164: +#line 1411 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(2) - (2)].state)[0];  	   (yyval.state)[1] = (yyvsp[(2) - (2)].state)[1];  	;}      break; -  case 151: - -/* Line 1455 of yacc.c  */ -#line 1221 "program_parse.y" +  case 165: +#line 1418 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_LIGHTMODEL_AMBIENT;  	;}      break; -  case 152: - -/* Line 1455 of yacc.c  */ -#line 1226 "program_parse.y" +  case 166: +#line 1423 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_LIGHTMODEL_SCENECOLOR; @@ -3477,10 +3588,8 @@ yyreduce:  	;}      break; -  case 153: - -/* Line 1455 of yacc.c  */ -#line 1234 "program_parse.y" +  case 167: +#line 1431 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_LIGHTPROD; @@ -3490,10 +3599,8 @@ yyreduce:  	;}      break; -  case 155: - -/* Line 1455 of yacc.c  */ -#line 1246 "program_parse.y" +  case 169: +#line 1443 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = (yyvsp[(3) - (3)].integer); @@ -3501,46 +3608,36 @@ yyreduce:  	;}      break; -  case 156: - -/* Line 1455 of yacc.c  */ -#line 1254 "program_parse.y" +  case 170: +#line 1451 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXENV_COLOR;  	;}      break; -  case 157: - -/* Line 1455 of yacc.c  */ -#line 1260 "program_parse.y" +  case 171: +#line 1457 "program_parse.y"      {  	   (yyval.integer) = STATE_AMBIENT;  	;}      break; -  case 158: - -/* Line 1455 of yacc.c  */ -#line 1264 "program_parse.y" +  case 172: +#line 1461 "program_parse.y"      {  	   (yyval.integer) = STATE_DIFFUSE;  	;}      break; -  case 159: - -/* Line 1455 of yacc.c  */ -#line 1268 "program_parse.y" +  case 173: +#line 1465 "program_parse.y"      {  	   (yyval.integer) = STATE_SPECULAR;  	;}      break; -  case 160: - -/* Line 1455 of yacc.c  */ -#line 1274 "program_parse.y" +  case 174: +#line 1471 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxLights) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid light selector"); @@ -3551,10 +3648,8 @@ yyreduce:  	;}      break; -  case 161: - -/* Line 1455 of yacc.c  */ -#line 1285 "program_parse.y" +  case 175: +#line 1482 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_TEXGEN; @@ -3563,92 +3658,72 @@ yyreduce:  	;}      break; -  case 162: - -/* Line 1455 of yacc.c  */ -#line 1294 "program_parse.y" +  case 176: +#line 1491 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_EYE_S;  	;}      break; -  case 163: - -/* Line 1455 of yacc.c  */ -#line 1298 "program_parse.y" +  case 177: +#line 1495 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_OBJECT_S;  	;}      break; -  case 164: - -/* Line 1455 of yacc.c  */ -#line 1303 "program_parse.y" +  case 178: +#line 1500 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_EYE_S - STATE_TEXGEN_EYE_S;  	;}      break; -  case 165: - -/* Line 1455 of yacc.c  */ -#line 1307 "program_parse.y" +  case 179: +#line 1504 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_EYE_T - STATE_TEXGEN_EYE_S;  	;}      break; -  case 166: - -/* Line 1455 of yacc.c  */ -#line 1311 "program_parse.y" +  case 180: +#line 1508 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_EYE_R - STATE_TEXGEN_EYE_S;  	;}      break; -  case 167: - -/* Line 1455 of yacc.c  */ -#line 1315 "program_parse.y" +  case 181: +#line 1512 "program_parse.y"      {  	   (yyval.integer) = STATE_TEXGEN_EYE_Q - STATE_TEXGEN_EYE_S;  	;}      break; -  case 168: - -/* Line 1455 of yacc.c  */ -#line 1321 "program_parse.y" +  case 182: +#line 1518 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = (yyvsp[(2) - (2)].integer);  	;}      break; -  case 169: - -/* Line 1455 of yacc.c  */ -#line 1328 "program_parse.y" +  case 183: +#line 1525 "program_parse.y"      {  	   (yyval.integer) = STATE_FOG_COLOR;  	;}      break; -  case 170: - -/* Line 1455 of yacc.c  */ -#line 1332 "program_parse.y" +  case 184: +#line 1529 "program_parse.y"      {  	   (yyval.integer) = STATE_FOG_PARAMS;  	;}      break; -  case 171: - -/* Line 1455 of yacc.c  */ -#line 1338 "program_parse.y" +  case 185: +#line 1535 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_CLIPPLANE; @@ -3656,10 +3731,8 @@ yyreduce:  	;}      break; -  case 172: - -/* Line 1455 of yacc.c  */ -#line 1346 "program_parse.y" +  case 186: +#line 1543 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxClipPlanes) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid clip plane selector"); @@ -3670,38 +3743,30 @@ yyreduce:  	;}      break; -  case 173: - -/* Line 1455 of yacc.c  */ -#line 1357 "program_parse.y" +  case 187: +#line 1554 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = (yyvsp[(2) - (2)].integer);  	;}      break; -  case 174: - -/* Line 1455 of yacc.c  */ -#line 1364 "program_parse.y" +  case 188: +#line 1561 "program_parse.y"      {  	   (yyval.integer) = STATE_POINT_SIZE;  	;}      break; -  case 175: - -/* Line 1455 of yacc.c  */ -#line 1368 "program_parse.y" +  case 189: +#line 1565 "program_parse.y"      {  	   (yyval.integer) = STATE_POINT_ATTENUATION;  	;}      break; -  case 176: - -/* Line 1455 of yacc.c  */ -#line 1374 "program_parse.y" +  case 190: +#line 1571 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (5)].state)[0];  	   (yyval.state)[1] = (yyvsp[(1) - (5)].state)[1]; @@ -3711,10 +3776,8 @@ yyreduce:  	;}      break; -  case 177: - -/* Line 1455 of yacc.c  */ -#line 1384 "program_parse.y" +  case 191: +#line 1581 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (2)].state)[0];  	   (yyval.state)[1] = (yyvsp[(1) - (2)].state)[1]; @@ -3724,20 +3787,16 @@ yyreduce:  	;}      break; -  case 178: - -/* Line 1455 of yacc.c  */ -#line 1394 "program_parse.y" +  case 192: +#line 1591 "program_parse.y"      {  	   (yyval.state)[2] = 0;  	   (yyval.state)[3] = 3;  	;}      break; -  case 179: - -/* Line 1455 of yacc.c  */ -#line 1399 "program_parse.y" +  case 193: +#line 1596 "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). @@ -3755,10 +3814,8 @@ yyreduce:  	;}      break; -  case 180: - -/* Line 1455 of yacc.c  */ -#line 1417 "program_parse.y" +  case 194: +#line 1614 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(2) - (3)].state)[0];  	   (yyval.state)[1] = (yyvsp[(2) - (3)].state)[1]; @@ -3766,55 +3823,43 @@ yyreduce:  	;}      break; -  case 181: - -/* Line 1455 of yacc.c  */ -#line 1425 "program_parse.y" +  case 195: +#line 1622 "program_parse.y"      {  	   (yyval.integer) = 0;  	;}      break; -  case 182: - -/* Line 1455 of yacc.c  */ -#line 1429 "program_parse.y" +  case 196: +#line 1626 "program_parse.y"      {  	   (yyval.integer) = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 183: - -/* Line 1455 of yacc.c  */ -#line 1435 "program_parse.y" +  case 197: +#line 1632 "program_parse.y"      {  	   (yyval.integer) = STATE_MATRIX_INVERSE;  	;}      break; -  case 184: - -/* Line 1455 of yacc.c  */ -#line 1439 "program_parse.y" +  case 198: +#line 1636 "program_parse.y"      {  	   (yyval.integer) = STATE_MATRIX_TRANSPOSE;  	;}      break; -  case 185: - -/* Line 1455 of yacc.c  */ -#line 1443 "program_parse.y" +  case 199: +#line 1640 "program_parse.y"      {  	   (yyval.integer) = STATE_MATRIX_INVTRANS;  	;}      break; -  case 186: - -/* Line 1455 of yacc.c  */ -#line 1449 "program_parse.y" +  case 200: +#line 1646 "program_parse.y"      {  	   if ((yyvsp[(1) - (1)].integer) > 3) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid matrix row reference"); @@ -3825,88 +3870,70 @@ yyreduce:  	;}      break; -  case 187: - -/* Line 1455 of yacc.c  */ -#line 1460 "program_parse.y" +  case 201: +#line 1657 "program_parse.y"      {  	   (yyval.state)[0] = STATE_MODELVIEW_MATRIX;  	   (yyval.state)[1] = (yyvsp[(2) - (2)].integer);  	;}      break; -  case 188: - -/* Line 1455 of yacc.c  */ -#line 1465 "program_parse.y" +  case 202: +#line 1662 "program_parse.y"      {  	   (yyval.state)[0] = STATE_PROJECTION_MATRIX;  	   (yyval.state)[1] = 0;  	;}      break; -  case 189: - -/* Line 1455 of yacc.c  */ -#line 1470 "program_parse.y" +  case 203: +#line 1667 "program_parse.y"      {  	   (yyval.state)[0] = STATE_MVP_MATRIX;  	   (yyval.state)[1] = 0;  	;}      break; -  case 190: - -/* Line 1455 of yacc.c  */ -#line 1475 "program_parse.y" +  case 204: +#line 1672 "program_parse.y"      {  	   (yyval.state)[0] = STATE_TEXTURE_MATRIX;  	   (yyval.state)[1] = (yyvsp[(2) - (2)].integer);  	;}      break; -  case 191: - -/* Line 1455 of yacc.c  */ -#line 1480 "program_parse.y" +  case 205: +#line 1677 "program_parse.y"      {  	   yyerror(& (yylsp[(1) - (4)]), state, "GL_ARB_matrix_palette not supported");  	   YYERROR;  	;}      break; -  case 192: - -/* Line 1455 of yacc.c  */ -#line 1485 "program_parse.y" +  case 206: +#line 1682 "program_parse.y"      {  	   (yyval.state)[0] = STATE_PROGRAM_MATRIX;  	   (yyval.state)[1] = (yyvsp[(3) - (4)].integer);  	;}      break; -  case 193: - -/* Line 1455 of yacc.c  */ -#line 1492 "program_parse.y" +  case 207: +#line 1689 "program_parse.y"      {  	   (yyval.integer) = 0;  	;}      break; -  case 194: - -/* Line 1455 of yacc.c  */ -#line 1496 "program_parse.y" +  case 208: +#line 1693 "program_parse.y"      {  	   (yyval.integer) = (yyvsp[(2) - (3)].integer);  	;}      break; -  case 195: - -/* Line 1455 of yacc.c  */ -#line 1501 "program_parse.y" +  case 209: +#line 1698 "program_parse.y"      {  	   /* Since GL_ARB_vertex_blend isn't supported, only modelview matrix  	    * zero is valid. @@ -3920,10 +3947,8 @@ yyreduce:  	;}      break; -  case 196: - -/* Line 1455 of yacc.c  */ -#line 1514 "program_parse.y" +  case 210: +#line 1711 "program_parse.y"      {  	   /* Since GL_ARB_matrix_palette isn't supported, just let any value  	    * through here.  The error will be generated later. @@ -3932,10 +3957,8 @@ yyreduce:  	;}      break; -  case 197: - -/* Line 1455 of yacc.c  */ -#line 1522 "program_parse.y" +  case 211: +#line 1719 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxProgramMatrices) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid program matrix selector"); @@ -3946,20 +3969,16 @@ yyreduce:  	;}      break; -  case 198: - -/* Line 1455 of yacc.c  */ -#line 1533 "program_parse.y" +  case 212: +#line 1730 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = STATE_DEPTH_RANGE;  	;}      break; -  case 203: - -/* Line 1455 of yacc.c  */ -#line 1545 "program_parse.y" +  case 217: +#line 1742 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = state->state_param_enum; @@ -3969,30 +3988,24 @@ yyreduce:  	;}      break; -  case 204: - -/* Line 1455 of yacc.c  */ -#line 1555 "program_parse.y" +  case 218: +#line 1752 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (1)].integer);  	   (yyval.state)[1] = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 205: - -/* Line 1455 of yacc.c  */ -#line 1560 "program_parse.y" +  case 219: +#line 1757 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (3)].integer);  	   (yyval.state)[1] = (yyvsp[(3) - (3)].integer);  	;}      break; -  case 206: - -/* Line 1455 of yacc.c  */ -#line 1567 "program_parse.y" +  case 220: +#line 1764 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = state->state_param_enum; @@ -4002,10 +4015,8 @@ yyreduce:  	;}      break; -  case 207: - -/* Line 1455 of yacc.c  */ -#line 1577 "program_parse.y" +  case 221: +#line 1774 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = state->state_param_enum; @@ -4015,30 +4026,24 @@ yyreduce:  	;}      break; -  case 208: - -/* Line 1455 of yacc.c  */ -#line 1586 "program_parse.y" +  case 222: +#line 1783 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (1)].integer);  	   (yyval.state)[1] = (yyvsp[(1) - (1)].integer);  	;}      break; -  case 209: - -/* Line 1455 of yacc.c  */ -#line 1591 "program_parse.y" +  case 223: +#line 1788 "program_parse.y"      {  	   (yyval.state)[0] = (yyvsp[(1) - (3)].integer);  	   (yyval.state)[1] = (yyvsp[(3) - (3)].integer);  	;}      break; -  case 210: - -/* Line 1455 of yacc.c  */ -#line 1598 "program_parse.y" +  case 224: +#line 1795 "program_parse.y"      {  	   memset((yyval.state), 0, sizeof((yyval.state)));  	   (yyval.state)[0] = state->state_param_enum; @@ -4048,10 +4053,8 @@ yyreduce:  	;}      break; -  case 211: - -/* Line 1455 of yacc.c  */ -#line 1608 "program_parse.y" +  case 225: +#line 1805 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxEnvParams) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid environment parameter reference"); @@ -4061,10 +4064,8 @@ yyreduce:  	;}      break; -  case 212: - -/* Line 1455 of yacc.c  */ -#line 1618 "program_parse.y" +  case 226: +#line 1815 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->limits->MaxLocalParams) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid local parameter reference"); @@ -4074,10 +4075,8 @@ yyreduce:  	;}      break; -  case 217: - -/* Line 1455 of yacc.c  */ -#line 1633 "program_parse.y" +  case 231: +#line 1830 "program_parse.y"      {  	   (yyval.vector).count = 4;  	   (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4087,10 +4086,8 @@ yyreduce:  	;}      break; -  case 218: - -/* Line 1455 of yacc.c  */ -#line 1643 "program_parse.y" +  case 232: +#line 1840 "program_parse.y"      {  	   (yyval.vector).count = 1;  	   (yyval.vector).data[0] = (yyvsp[(1) - (1)].real); @@ -4100,10 +4097,8 @@ yyreduce:  	;}      break; -  case 219: - -/* Line 1455 of yacc.c  */ -#line 1651 "program_parse.y" +  case 233: +#line 1848 "program_parse.y"      {  	   (yyval.vector).count = 1;  	   (yyval.vector).data[0] = (float) (yyvsp[(1) - (1)].integer); @@ -4113,10 +4108,8 @@ yyreduce:  	;}      break; -  case 220: - -/* Line 1455 of yacc.c  */ -#line 1661 "program_parse.y" +  case 234: +#line 1858 "program_parse.y"      {  	   (yyval.vector).count = 4;  	   (yyval.vector).data[0] = (yyvsp[(2) - (3)].real); @@ -4126,10 +4119,8 @@ yyreduce:  	;}      break; -  case 221: - -/* Line 1455 of yacc.c  */ -#line 1669 "program_parse.y" +  case 235: +#line 1866 "program_parse.y"      {  	   (yyval.vector).count = 4;  	   (yyval.vector).data[0] = (yyvsp[(2) - (5)].real); @@ -4139,10 +4130,8 @@ yyreduce:  	;}      break; -  case 222: - -/* Line 1455 of yacc.c  */ -#line 1678 "program_parse.y" +  case 236: +#line 1875 "program_parse.y"      {  	   (yyval.vector).count = 4;  	   (yyval.vector).data[0] = (yyvsp[(2) - (7)].real); @@ -4152,10 +4141,8 @@ yyreduce:  	;}      break; -  case 223: - -/* Line 1455 of yacc.c  */ -#line 1687 "program_parse.y" +  case 237: +#line 1884 "program_parse.y"      {  	   (yyval.vector).count = 4;  	   (yyval.vector).data[0] = (yyvsp[(2) - (9)].real); @@ -4165,63 +4152,90 @@ yyreduce:  	;}      break; -  case 224: - -/* Line 1455 of yacc.c  */ -#line 1697 "program_parse.y" +  case 238: +#line 1894 "program_parse.y"      {  	   (yyval.real) = ((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].real) : (yyvsp[(2) - (2)].real);  	;}      break; -  case 225: - -/* Line 1455 of yacc.c  */ -#line 1701 "program_parse.y" +  case 239: +#line 1898 "program_parse.y"      {  	   (yyval.real) = (float)(((yyvsp[(1) - (2)].negate)) ? -(yyvsp[(2) - (2)].integer) : (yyvsp[(2) - (2)].integer));  	;}      break; -  case 226: - -/* Line 1455 of yacc.c  */ -#line 1706 "program_parse.y" +  case 240: +#line 1903 "program_parse.y"      { (yyval.negate) = FALSE; ;}      break; -  case 227: - -/* Line 1455 of yacc.c  */ -#line 1707 "program_parse.y" +  case 241: +#line 1904 "program_parse.y"      { (yyval.negate) = TRUE;  ;}      break; -  case 228: - -/* Line 1455 of yacc.c  */ -#line 1708 "program_parse.y" +  case 242: +#line 1905 "program_parse.y"      { (yyval.negate) = FALSE; ;}      break; -  case 229: +  case 243: +#line 1908 "program_parse.y" +    { (yyval.integer) = (yyvsp[(2) - (2)].integer); ;} +    break; -/* Line 1455 of yacc.c  */ -#line 1711 "program_parse.y" -    { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} +  case 245: +#line 1912 "program_parse.y" +    { +	   /* NV_fragment_program_option defines the size qualifiers in a +	    * fairly broken way.  "SHORT" or "LONG" can optionally be used +	    * before TEMP or OUTPUT.  However, neither is a reserved word! +	    * This means that we have to parse it as an identifier, then check +	    * to make sure it's one of the valid values.  *sigh* +	    * +	    * In addition, the grammar in the extension spec does *not* allow +	    * the size specifier to be optional, but all known implementations +	    * do. +	    */ +	   if (!state->option.NV_fragment) { +	      yyerror(& (yylsp[(1) - (1)]), state, "unexpected IDENTIFIER"); +	      YYERROR; +	   } + +	   if (strcmp("SHORT", (yyvsp[(1) - (1)].string)) == 0) { +	   } else if (strcmp("LONG", (yyvsp[(1) - (1)].string)) == 0) { +	   } else { +	      char *const err_str = +		 make_error_string("invalid storage size specifier \"%s\"", +				   (yyvsp[(1) - (1)].string)); + +	      yyerror(& (yylsp[(1) - (1)]), state, (err_str != NULL) +		      ? err_str : "invalid storage size specifier"); + +	      if (err_str != NULL) { +		 _mesa_free(err_str); +	      } + +	      YYERROR; +	   } +	;}      break; -  case 231: +  case 246: +#line 1946 "program_parse.y" +    { +	;} +    break; -/* Line 1455 of yacc.c  */ -#line 1714 "program_parse.y" +  case 247: +#line 1950 "program_parse.y"      { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;}      break; -  case 233: - -/* Line 1455 of yacc.c  */ -#line 1718 "program_parse.y" +  case 249: +#line 1954 "program_parse.y"      {  	   if (!declare_variable(state, (yyvsp[(3) - (3)].string), (yyvsp[(0) - (3)].integer), & (yylsp[(3) - (3)]))) {  	      YYERROR; @@ -4229,10 +4243,8 @@ yyreduce:  	;}      break; -  case 234: - -/* Line 1455 of yacc.c  */ -#line 1724 "program_parse.y" +  case 250: +#line 1960 "program_parse.y"      {  	   if (!declare_variable(state, (yyvsp[(1) - (1)].string), (yyvsp[(0) - (1)].integer), & (yylsp[(1) - (1)]))) {  	      YYERROR; @@ -4240,26 +4252,22 @@ yyreduce:  	;}      break; -  case 235: - -/* Line 1455 of yacc.c  */ -#line 1732 "program_parse.y" +  case 251: +#line 1968 "program_parse.y"      {  	   struct asm_symbol *const s = -	      declare_variable(state, (yyvsp[(2) - (4)].string), at_output, & (yylsp[(2) - (4)])); +	      declare_variable(state, (yyvsp[(3) - (5)].string), at_output, & (yylsp[(3) - (5)]));  	   if (s == NULL) {  	      YYERROR;  	   } else { -	      s->output_binding = (yyvsp[(4) - (4)].result); +	      s->output_binding = (yyvsp[(5) - (5)].result);  	   }  	;}      break; -  case 236: - -/* Line 1455 of yacc.c  */ -#line 1745 "program_parse.y" +  case 252: +#line 1981 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.result) = VERT_RESULT_HPOS; @@ -4270,10 +4278,8 @@ yyreduce:  	;}      break; -  case 237: - -/* Line 1455 of yacc.c  */ -#line 1754 "program_parse.y" +  case 253: +#line 1990 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.result) = VERT_RESULT_FOGC; @@ -4284,19 +4290,15 @@ yyreduce:  	;}      break; -  case 238: - -/* Line 1455 of yacc.c  */ -#line 1763 "program_parse.y" +  case 254: +#line 1999 "program_parse.y"      {  	   (yyval.result) = (yyvsp[(2) - (2)].result);  	;}      break; -  case 239: - -/* Line 1455 of yacc.c  */ -#line 1767 "program_parse.y" +  case 255: +#line 2003 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.result) = VERT_RESULT_PSIZ; @@ -4307,10 +4309,8 @@ yyreduce:  	;}      break; -  case 240: - -/* Line 1455 of yacc.c  */ -#line 1776 "program_parse.y" +  case 256: +#line 2012 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.result) = VERT_RESULT_TEX0 + (yyvsp[(3) - (3)].integer); @@ -4321,10 +4321,8 @@ yyreduce:  	;}      break; -  case 241: - -/* Line 1455 of yacc.c  */ -#line 1785 "program_parse.y" +  case 257: +#line 2021 "program_parse.y"      {  	   if (state->mode == ARB_fragment) {  	      (yyval.result) = FRAG_RESULT_DEPTH; @@ -4335,19 +4333,15 @@ yyreduce:  	;}      break; -  case 242: - -/* Line 1455 of yacc.c  */ -#line 1796 "program_parse.y" +  case 258: +#line 2032 "program_parse.y"      {  	   (yyval.result) = (yyvsp[(2) - (3)].integer) + (yyvsp[(3) - (3)].integer);  	;}      break; -  case 243: - -/* Line 1455 of yacc.c  */ -#line 1802 "program_parse.y" +  case 259: +#line 2038 "program_parse.y"      {  	   (yyval.integer) = (state->mode == ARB_vertex)  	      ? VERT_RESULT_COL0 @@ -4355,10 +4349,8 @@ yyreduce:  	;}      break; -  case 244: - -/* Line 1455 of yacc.c  */ -#line 1808 "program_parse.y" +  case 260: +#line 2044 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.integer) = VERT_RESULT_COL0; @@ -4369,10 +4361,8 @@ yyreduce:  	;}      break; -  case 245: - -/* Line 1455 of yacc.c  */ -#line 1817 "program_parse.y" +  case 261: +#line 2053 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.integer) = VERT_RESULT_BFC0; @@ -4383,19 +4373,15 @@ yyreduce:  	;}      break; -  case 246: - -/* Line 1455 of yacc.c  */ -#line 1828 "program_parse.y" +  case 262: +#line 2064 "program_parse.y"      {  	   (yyval.integer) = 0;   	;}      break; -  case 247: - -/* Line 1455 of yacc.c  */ -#line 1832 "program_parse.y" +  case 263: +#line 2068 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.integer) = 0; @@ -4406,10 +4392,8 @@ yyreduce:  	;}      break; -  case 248: - -/* Line 1455 of yacc.c  */ -#line 1841 "program_parse.y" +  case 264: +#line 2077 "program_parse.y"      {  	   if (state->mode == ARB_vertex) {  	      (yyval.integer) = 1; @@ -4420,94 +4404,68 @@ yyreduce:  	;}      break; -  case 249: - -/* Line 1455 of yacc.c  */ -#line 1851 "program_parse.y" +  case 265: +#line 2087 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 250: - -/* Line 1455 of yacc.c  */ -#line 1852 "program_parse.y" +  case 266: +#line 2088 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 251: - -/* Line 1455 of yacc.c  */ -#line 1853 "program_parse.y" +  case 267: +#line 2089 "program_parse.y"      { (yyval.integer) = 1; ;}      break; -  case 252: - -/* Line 1455 of yacc.c  */ -#line 1856 "program_parse.y" +  case 268: +#line 2092 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 253: - -/* Line 1455 of yacc.c  */ -#line 1857 "program_parse.y" +  case 269: +#line 2093 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 254: - -/* Line 1455 of yacc.c  */ -#line 1858 "program_parse.y" +  case 270: +#line 2094 "program_parse.y"      { (yyval.integer) = 1; ;}      break; -  case 255: - -/* Line 1455 of yacc.c  */ -#line 1861 "program_parse.y" +  case 271: +#line 2097 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 256: - -/* Line 1455 of yacc.c  */ -#line 1862 "program_parse.y" +  case 272: +#line 2098 "program_parse.y"      { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}      break; -  case 257: - -/* Line 1455 of yacc.c  */ -#line 1865 "program_parse.y" +  case 273: +#line 2101 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 258: - -/* Line 1455 of yacc.c  */ -#line 1866 "program_parse.y" +  case 274: +#line 2102 "program_parse.y"      { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}      break; -  case 259: - -/* Line 1455 of yacc.c  */ -#line 1869 "program_parse.y" +  case 275: +#line 2105 "program_parse.y"      { (yyval.integer) = 0; ;}      break; -  case 260: - -/* Line 1455 of yacc.c  */ -#line 1870 "program_parse.y" +  case 276: +#line 2106 "program_parse.y"      { (yyval.integer) = (yyvsp[(2) - (3)].integer); ;}      break; -  case 261: - -/* Line 1455 of yacc.c  */ -#line 1874 "program_parse.y" +  case 277: +#line 2110 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureCoordUnits) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture coordinate unit selector"); @@ -4518,10 +4476,8 @@ yyreduce:  	;}      break; -  case 262: - -/* Line 1455 of yacc.c  */ -#line 1885 "program_parse.y" +  case 278: +#line 2121 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureImageUnits) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture image unit selector"); @@ -4532,10 +4488,8 @@ yyreduce:  	;}      break; -  case 263: - -/* Line 1455 of yacc.c  */ -#line 1896 "program_parse.y" +  case 279: +#line 2132 "program_parse.y"      {  	   if ((unsigned) (yyvsp[(1) - (1)].integer) >= state->MaxTextureUnits) {  	      yyerror(& (yylsp[(1) - (1)]), state, "invalid texture unit selector"); @@ -4546,10 +4500,8 @@ yyreduce:  	;}      break; -  case 264: - -/* Line 1455 of yacc.c  */ -#line 1907 "program_parse.y" +  case 280: +#line 2143 "program_parse.y"      {  	   struct asm_symbol *exist = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, (yyvsp[(2) - (4)].string)); @@ -4571,9 +4523,8 @@ yyreduce:      break; - -/* Line 1455 of yacc.c  */ -#line 4577 "program_parse.tab.c" +/* Line 1267 of yacc.c.  */ +#line 4528 "program_parse.tab.c"        default: break;      }    YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4649,7 +4600,7 @@ yyerrlab:    if (yyerrstatus == 3)      { -      /* If just tried and failed to reuse lookahead token after an +      /* If just tried and failed to reuse look-ahead token after an  	 error, discard it.  */        if (yychar <= YYEOF) @@ -4666,7 +4617,7 @@ yyerrlab:  	}      } -  /* Else will try to reuse lookahead token after shifting the error +  /* Else will try to reuse look-ahead token after shifting the error       token.  */    goto yyerrlab1; @@ -4724,11 +4675,14 @@ yyerrlab1:        YY_STACK_PRINT (yyss, yyssp);      } +  if (yyn == YYFINAL) +    YYACCEPT; +    *++yyvsp = yylval;    yyerror_range[1] = yylloc;    /* Using YYLLOC is tempting, but would change the location of -     the lookahead.  YYLOC is available though.  */ +     the look-ahead.  YYLOC is available though.  */    YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);    *++yylsp = yyloc; @@ -4753,7 +4707,7 @@ yyabortlab:    yyresult = 1;    goto yyreturn; -#if !defined(yyoverflow) || YYERROR_VERBOSE +#ifndef yyoverflow  /*-------------------------------------------------.  | yyexhaustedlab -- memory exhaustion comes here.  |  `-------------------------------------------------*/ @@ -4764,7 +4718,7 @@ yyexhaustedlab:  #endif  yyreturn: -  if (yychar != YYEMPTY) +  if (yychar != YYEOF && yychar != YYEMPTY)       yydestruct ("Cleanup: discarding lookahead",  		 yytoken, &yylval, &yylloc, state);    /* Do not reclaim the symbols of the rule which action triggered @@ -4790,9 +4744,49 @@ yyreturn:  } +#line 2167 "program_parse.y" + + +void +asm_instruction_set_operands(struct asm_instruction *inst, +			     const struct prog_dst_register *dst, +			     const struct asm_src_register *src0, +			     const struct asm_src_register *src1, +			     const struct asm_src_register *src2) +{ +   /* In the core ARB extensions only the KIL instruction doesn't have a +    * destination register. +    */ +   if (dst == NULL) { +      init_dst_reg(& inst->Base.DstReg); +   } else { +      inst->Base.DstReg = *dst; +   } + +   /* 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; +      inst->SrcReg[1] = *src1; +   } else { +      init_src_reg(& inst->SrcReg[1]); +   } -/* Line 1675 of yacc.c  */ -#line 1927 "program_parse.y" +   if (src2 != NULL) { +      inst->Base.SrcReg[2] = src2->Base; +      inst->SrcReg[2] = *src2; +   } else { +      init_src_reg(& inst->SrcReg[2]); +   } +}  struct asm_instruction * @@ -4802,37 +4796,37 @@ asm_instruction_ctor(gl_inst_opcode op,  		     const struct asm_src_register *src1,  		     const struct asm_src_register *src2)  { -   struct asm_instruction *inst = calloc(1, sizeof(struct asm_instruction)); +   struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction);     if (inst) {        _mesa_init_instructions(& inst->Base, 1);        inst->Base.Opcode = op; -      /* In the core ARB extensions only the KIL instruction doesn't have a -       * destination register. -       */ -      if (dst == NULL) { -	 init_dst_reg(& inst->Base.DstReg); -      } else { -	 inst->Base.DstReg = *dst; -      } +      asm_instruction_set_operands(inst, dst, src0, src1, src2); +   } -      inst->Base.SrcReg[0] = src0->Base; -      inst->SrcReg[0] = *src0; +   return inst; +} -      if (src1 != NULL) { -	 inst->Base.SrcReg[1] = src1->Base; -	 inst->SrcReg[1] = *src1; -      } else { -	 init_src_reg(& inst->SrcReg[1]); -      } -      if (src2 != NULL) { -	 inst->Base.SrcReg[2] = src2->Base; -	 inst->SrcReg[2] = *src2; -      } else { -	 init_src_reg(& inst->SrcReg[2]); -      } +struct asm_instruction * +asm_instruction_copy_ctor(const struct prog_instruction *base, +			  const struct prog_dst_register *dst, +			  const struct asm_src_register *src0, +			  const struct asm_src_register *src1, +			  const struct asm_src_register *src2) +{ +   struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); + +   if (inst) { +      _mesa_init_instructions(& inst->Base, 1); +      inst->Base.Opcode = base->Opcode; +      inst->Base.CondUpdate = base->CondUpdate; +      inst->Base.CondDst = base->CondDst; +      inst->Base.SaturateMode = base->SaturateMode; +      inst->Base.Precision = base->Precision; + +      asm_instruction_set_operands(inst, dst, src0, src1, src2);     }     return inst; diff --git a/src/mesa/shader/program_parse.tab.h b/src/mesa/shader/program_parse.tab.h index dabb3bf1a3..ae6dd8c34e 100644 --- a/src/mesa/shader/program_parse.tab.h +++ b/src/mesa/shader/program_parse.tab.h @@ -1,23 +1,24 @@ - -/* A Bison parser, made by GNU Bison 2.4.1.  */ +/* A Bison parser, made by GNU Bison 2.3.  */  /* Skeleton interface for Bison's Yacc-like parsers in C -    -      Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + +   Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006     Free Software Foundation, Inc. -    -   This program is free software: you can redistribute it and/or modify + +   This program is free software; you can redistribute it and/or modify     it under the terms of the GNU General Public License as published by -   the Free Software Foundation, either version 3 of the License, or -   (at your option) any later version. -    +   the Free Software Foundation; either version 2, or (at your option) +   any later version. +     This program is distributed in the hope that it will be useful,     but WITHOUT ANY WARRANTY; without even the implied warranty of     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the     GNU General Public License for more details. -    +     You should have received a copy of the GNU General Public License -   along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ +   along with this program; if not, write to the Free Software +   Foundation, Inc., 51 Franklin Street, Fifth Floor, +   Boston, MA 02110-1301, USA.  */  /* As a special exception, you may create a larger work that contains     part or all of the Bison parser skeleton and distribute that work @@ -28,11 +29,10 @@     special exception, which will cause the skeleton and the resulting     Bison output files to be licensed under the GNU General Public     License without this special exception. -    +     This special exception was added by the Free Software Foundation in     version 2.2 of Bison.  */ -  /* Tokens.  */  #ifndef YYTOKENTYPE  # define YYTOKENTYPE @@ -58,102 +58,208 @@       ARL = 274,       KIL = 275,       SWZ = 276, -     INTEGER = 277, -     REAL = 278, -     AMBIENT = 279, -     ATTENUATION = 280, -     BACK = 281, -     CLIP = 282, -     COLOR = 283, -     DEPTH = 284, -     DIFFUSE = 285, -     DIRECTION = 286, -     EMISSION = 287, -     ENV = 288, -     EYE = 289, -     FOG = 290, -     FOGCOORD = 291, -     FRAGMENT = 292, -     FRONT = 293, -     HALF = 294, -     INVERSE = 295, -     INVTRANS = 296, -     LIGHT = 297, -     LIGHTMODEL = 298, -     LIGHTPROD = 299, -     LOCAL = 300, -     MATERIAL = 301, -     MAT_PROGRAM = 302, -     MATRIX = 303, -     MATRIXINDEX = 304, -     MODELVIEW = 305, -     MVP = 306, -     NORMAL = 307, -     OBJECT = 308, -     PALETTE = 309, -     PARAMS = 310, -     PLANE = 311, -     POINT_TOK = 312, -     POINTSIZE = 313, -     POSITION = 314, -     PRIMARY = 315, -     PROGRAM = 316, -     PROJECTION = 317, -     RANGE = 318, -     RESULT = 319, -     ROW = 320, -     SCENECOLOR = 321, -     SECONDARY = 322, -     SHININESS = 323, -     SIZE_TOK = 324, -     SPECULAR = 325, -     SPOT = 326, -     STATE = 327, -     TEXCOORD = 328, -     TEXENV = 329, -     TEXGEN = 330, -     TEXGEN_Q = 331, -     TEXGEN_R = 332, -     TEXGEN_S = 333, -     TEXGEN_T = 334, -     TEXTURE = 335, -     TRANSPOSE = 336, -     TEXTURE_UNIT = 337, -     TEX_1D = 338, -     TEX_2D = 339, -     TEX_3D = 340, -     TEX_CUBE = 341, -     TEX_RECT = 342, -     TEX_SHADOW1D = 343, -     TEX_SHADOW2D = 344, -     TEX_SHADOWRECT = 345, -     TEX_ARRAY1D = 346, -     TEX_ARRAY2D = 347, -     TEX_ARRAYSHADOW1D = 348, -     TEX_ARRAYSHADOW2D = 349, -     VERTEX = 350, -     VTXATTRIB = 351, -     WEIGHT = 352, -     IDENTIFIER = 353, -     MASK4 = 354, -     MASK3 = 355, -     MASK2 = 356, -     MASK1 = 357, -     SWIZZLE = 358, -     DOT_DOT = 359, -     DOT = 360 +     TXD_OP = 277, +     INTEGER = 278, +     REAL = 279, +     AMBIENT = 280, +     ATTENUATION = 281, +     BACK = 282, +     CLIP = 283, +     COLOR = 284, +     DEPTH = 285, +     DIFFUSE = 286, +     DIRECTION = 287, +     EMISSION = 288, +     ENV = 289, +     EYE = 290, +     FOG = 291, +     FOGCOORD = 292, +     FRAGMENT = 293, +     FRONT = 294, +     HALF = 295, +     INVERSE = 296, +     INVTRANS = 297, +     LIGHT = 298, +     LIGHTMODEL = 299, +     LIGHTPROD = 300, +     LOCAL = 301, +     MATERIAL = 302, +     MAT_PROGRAM = 303, +     MATRIX = 304, +     MATRIXINDEX = 305, +     MODELVIEW = 306, +     MVP = 307, +     NORMAL = 308, +     OBJECT = 309, +     PALETTE = 310, +     PARAMS = 311, +     PLANE = 312, +     POINT_TOK = 313, +     POINTSIZE = 314, +     POSITION = 315, +     PRIMARY = 316, +     PROGRAM = 317, +     PROJECTION = 318, +     RANGE = 319, +     RESULT = 320, +     ROW = 321, +     SCENECOLOR = 322, +     SECONDARY = 323, +     SHININESS = 324, +     SIZE_TOK = 325, +     SPECULAR = 326, +     SPOT = 327, +     STATE = 328, +     TEXCOORD = 329, +     TEXENV = 330, +     TEXGEN = 331, +     TEXGEN_Q = 332, +     TEXGEN_R = 333, +     TEXGEN_S = 334, +     TEXGEN_T = 335, +     TEXTURE = 336, +     TRANSPOSE = 337, +     TEXTURE_UNIT = 338, +     TEX_1D = 339, +     TEX_2D = 340, +     TEX_3D = 341, +     TEX_CUBE = 342, +     TEX_RECT = 343, +     TEX_SHADOW1D = 344, +     TEX_SHADOW2D = 345, +     TEX_SHADOWRECT = 346, +     TEX_ARRAY1D = 347, +     TEX_ARRAY2D = 348, +     TEX_ARRAYSHADOW1D = 349, +     TEX_ARRAYSHADOW2D = 350, +     VERTEX = 351, +     VTXATTRIB = 352, +     WEIGHT = 353, +     IDENTIFIER = 354, +     USED_IDENTIFIER = 355, +     MASK4 = 356, +     MASK3 = 357, +     MASK2 = 358, +     MASK1 = 359, +     SWIZZLE = 360, +     DOT_DOT = 361, +     DOT = 362     };  #endif +/* Tokens.  */ +#define ARBvp_10 258 +#define ARBfp_10 259 +#define ADDRESS 260 +#define ALIAS 261 +#define ATTRIB 262 +#define OPTION 263 +#define OUTPUT 264 +#define PARAM 265 +#define TEMP 266 +#define END 267 +#define BIN_OP 268 +#define BINSC_OP 269 +#define SAMPLE_OP 270 +#define SCALAR_OP 271 +#define TRI_OP 272 +#define VECTOR_OP 273 +#define ARL 274 +#define KIL 275 +#define SWZ 276 +#define TXD_OP 277 +#define INTEGER 278 +#define REAL 279 +#define AMBIENT 280 +#define ATTENUATION 281 +#define BACK 282 +#define CLIP 283 +#define COLOR 284 +#define DEPTH 285 +#define DIFFUSE 286 +#define DIRECTION 287 +#define EMISSION 288 +#define ENV 289 +#define EYE 290 +#define FOG 291 +#define FOGCOORD 292 +#define FRAGMENT 293 +#define FRONT 294 +#define HALF 295 +#define INVERSE 296 +#define INVTRANS 297 +#define LIGHT 298 +#define LIGHTMODEL 299 +#define LIGHTPROD 300 +#define LOCAL 301 +#define MATERIAL 302 +#define MAT_PROGRAM 303 +#define MATRIX 304 +#define MATRIXINDEX 305 +#define MODELVIEW 306 +#define MVP 307 +#define NORMAL 308 +#define OBJECT 309 +#define PALETTE 310 +#define PARAMS 311 +#define PLANE 312 +#define POINT_TOK 313 +#define POINTSIZE 314 +#define POSITION 315 +#define PRIMARY 316 +#define PROGRAM 317 +#define PROJECTION 318 +#define RANGE 319 +#define RESULT 320 +#define ROW 321 +#define SCENECOLOR 322 +#define SECONDARY 323 +#define SHININESS 324 +#define SIZE_TOK 325 +#define SPECULAR 326 +#define SPOT 327 +#define STATE 328 +#define TEXCOORD 329 +#define TEXENV 330 +#define TEXGEN 331 +#define TEXGEN_Q 332 +#define TEXGEN_R 333 +#define TEXGEN_S 334 +#define TEXGEN_T 335 +#define TEXTURE 336 +#define TRANSPOSE 337 +#define TEXTURE_UNIT 338 +#define TEX_1D 339 +#define TEX_2D 340 +#define TEX_3D 341 +#define TEX_CUBE 342 +#define TEX_RECT 343 +#define TEX_SHADOW1D 344 +#define TEX_SHADOW2D 345 +#define TEX_SHADOWRECT 346 +#define TEX_ARRAY1D 347 +#define TEX_ARRAY2D 348 +#define TEX_ARRAYSHADOW1D 349 +#define TEX_ARRAYSHADOW2D 350 +#define VERTEX 351 +#define VTXATTRIB 352 +#define WEIGHT 353 +#define IDENTIFIER 354 +#define USED_IDENTIFIER 355 +#define MASK4 356 +#define MASK3 357 +#define MASK2 358 +#define MASK1 359 +#define SWIZZLE 360 +#define DOT_DOT 361 +#define DOT 362 +  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED  typedef union YYSTYPE +#line 116 "program_parse.y"  { - -/* Line 1676 of yacc.c  */ -#line 107 "program_parse.y" -     struct asm_instruction *inst;     struct asm_symbol *sym;     struct asm_symbol temp_sym; @@ -177,15 +283,13 @@ typedef union YYSTYPE        unsigned xyzw_valid:1;        unsigned negate:1;     } ext_swizzle; - - - -/* Line 1676 of yacc.c  */ -#line 185 "program_parse.tab.h" -} YYSTYPE; -# define YYSTYPE_IS_TRIVIAL 1 +} +/* Line 1489 of yacc.c.  */ +#line 289 "program_parse.tab.h" +	YYSTYPE;  # define yystype YYSTYPE /* obsolescent; will be withdrawn */  # define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1  #endif @@ -204,4 +308,3 @@ typedef struct YYLTYPE  #endif - diff --git a/src/mesa/shader/program_parse.y b/src/mesa/shader/program_parse.y index a23625d3fb..20bde83af7 100644 --- a/src/mesa/shader/program_parse.y +++ b/src/mesa/shader/program_parse.y @@ -68,10 +68,19 @@ static void init_dst_reg(struct prog_dst_register *r);  static void init_src_reg(struct asm_src_register *r); +static void asm_instruction_set_operands(struct asm_instruction *inst, +    const struct prog_dst_register *dst, const struct asm_src_register *src0, +    const struct asm_src_register *src1, const struct asm_src_register *src2); +  static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,      const struct prog_dst_register *dst, const struct asm_src_register *src0,      const struct asm_src_register *src1, const struct asm_src_register *src2); +static struct asm_instruction *asm_instruction_copy_ctor( +    const struct prog_instruction *base, const struct prog_dst_register *dst, +    const struct asm_src_register *src0, const struct asm_src_register *src1, +    const struct asm_src_register *src2); +  #ifndef FALSE  #define FALSE 0  #define TRUE (!FALSE) @@ -142,7 +151,7 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,   /* Tokens for instructions */  %token <temp_inst> BIN_OP BINSC_OP SAMPLE_OP SCALAR_OP TRI_OP VECTOR_OP -%token <temp_inst> ARL KIL SWZ +%token <temp_inst> ARL KIL SWZ TXD_OP  %token <integer> INTEGER  %token <real> REAL @@ -169,7 +178,8 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,  %token VERTEX VTXATTRIB  %token WEIGHT -%token <string> IDENTIFIER +%token <string> IDENTIFIER USED_IDENTIFIER +%type <string> string  %token <swiz_mask> MASK4 MASK3 MASK2 MASK1 SWIZZLE  %token DOT_DOT  %token DOT @@ -177,11 +187,11 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,  %type <inst> instruction ALU_instruction TexInstruction  %type <inst> ARL_instruction VECTORop_instruction  %type <inst> SCALARop_instruction BINSCop_instruction BINop_instruction -%type <inst> TRIop_instruction SWZ_instruction SAMPLE_instruction +%type <inst> TRIop_instruction TXD_instruction SWZ_instruction SAMPLE_instruction  %type <inst> KIL_instruction  %type <dst_reg> dstReg maskedDstReg maskedAddrReg -%type <src_reg> srcReg scalarSrcReg swizzleSrcReg +%type <src_reg> srcReg scalarUse scalarSrcReg swizzleSrcReg  %type <swiz_mask> scalarSuffix swizzleSuffix extendedSwizzle  %type <ext_swizzle> extSwizComp extSwizSel  %type <swiz_mask> optionalMask @@ -192,6 +202,8 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,  %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 @@ -280,7 +292,7 @@ optionSequence: optionSequence option  	|  	; -option: OPTION IDENTIFIER ';' +option: OPTION string ';'  	{  	   int valid = 0; @@ -347,6 +359,7 @@ ALU_instruction: ARL_instruction  TexInstruction: SAMPLE_instruction  	| KIL_instruction +	| TXD_instruction  	;  ARL_instruction: ARL maskedAddrReg ',' scalarSrcReg @@ -357,51 +370,45 @@ ARL_instruction: ARL maskedAddrReg ',' scalarSrcReg  VECTORop_instruction: VECTOR_OP maskedDstReg ',' swizzleSrcReg  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL);  	}  	;  SCALARop_instruction: SCALAR_OP maskedDstReg ',' scalarSrcReg  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL);  	}  	;  BINSCop_instruction: BINSC_OP maskedDstReg ',' scalarSrcReg ',' scalarSrcReg  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, NULL); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, NULL);  	}  	;  BINop_instruction: BIN_OP maskedDstReg ',' swizzleSrcReg ',' swizzleSrcReg  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, NULL); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, NULL);  	}  	;  TRIop_instruction: TRI_OP maskedDstReg ','                     swizzleSrcReg ',' swizzleSrcReg ',' swizzleSrcReg  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, & $6, & $8); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, & $8);  	}  	;  SAMPLE_instruction: SAMPLE_OP maskedDstReg ',' swizzleSrcReg ',' texImageUnit ',' texTarget  	{ -	   $$ = asm_instruction_ctor($1.Opcode, & $2, & $4, NULL, NULL); +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL);  	   if ($$ != NULL) {  	      const GLbitfield tex_mask = (1U << $6);  	      GLbitfield shadow_tex = 0;  	      GLbitfield target_mask = 0; -	      $$->Base.SaturateMode = $1.SaturateMode;  	      $$->Base.TexSrcUnit = $6;  	      if ($8 < 0) { @@ -442,6 +449,58 @@ 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 +	{ +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, & $6, & $8); +	   if ($$ != NULL) { +	      const GLbitfield tex_mask = (1U << $10); +	      GLbitfield shadow_tex = 0; +	      GLbitfield target_mask = 0; + + +	      $$->Base.TexSrcUnit = $10; + +	      if ($12 < 0) { +		 shadow_tex = tex_mask; + +		 $$->Base.TexSrcTarget = -$12; +		 $$->Base.TexShadow = 1; +	      } else { +		 $$->Base.TexSrcTarget = $12; +	      } + +	      target_mask = (1U << $$->Base.TexSrcTarget); + +	      /* If this texture unit was previously accessed and that access +	       * had a different texture target, generate an error. +	       * +	       * If this texture unit was previously accessed and that access +	       * had a different shadow mode, generate an error. +	       */ +	      if ((state->prog->TexturesUsed[$10] != 0) +		  && ((state->prog->TexturesUsed[$10] != target_mask) +		      || ((state->prog->ShadowSamplers & tex_mask) +			  != shadow_tex))) { +		 yyerror(& @12, state, +			 "multiple targets used on one texture image unit"); +		 YYERROR; +	      } + + +	      state->prog->TexturesUsed[$10] |= target_mask; +	      state->prog->ShadowSamplers |= shadow_tex; +	   } +	}  	;  texImageUnit: TEXTURE_UNIT optTexImageUnitNum @@ -472,21 +531,58 @@ SWZ_instruction: SWZ maskedDstReg ',' srcReg ',' extendedSwizzle  	   $4.Base.Swizzle = $6.swizzle;  	   $4.Base.Negate = $6.mask; -	   $$ = asm_instruction_ctor(OPCODE_SWZ, & $2, & $4, NULL, NULL); -	   $$->Base.SaturateMode = $1.SaturateMode; +	   $$ = asm_instruction_copy_ctor(& $1, & $2, & $4, NULL, NULL);  	}  	; -scalarSrcReg: optionalSign srcReg scalarSuffix +scalarSrcReg: optionalSign scalarUse  	{  	   $$ = $2;  	   if ($1) {  	      $$.Base.Negate = ~$$.Base.Negate;  	   } +	} +	| optionalSign '|' scalarUse '|' +	{ +	   $$ = $3; + +	   if (!state->option.NV_fragment) { +	      yyerror(& @2, state, "unexpected character '|'"); +	      YYERROR; +	   } + +	   if ($1) { +	      $$.Base.Negate = ~$$.Base.Negate; +	   } + +	   $$.Base.Abs = 1; +	} +	; + +scalarUse:  srcReg scalarSuffix +	{ +	   $$ = $1;  	   $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, -						    $3.swizzle); +						    $2.swizzle); +	} +	| paramConstScalarUse +	{ +	   struct asm_symbol temp_sym; + +	   if (!state->option.NV_fragment) { +	      yyerror(& @1, state, "expected scalar suffix"); +	      YYERROR; +	   } + +	   memset(& temp_sym, 0, sizeof(temp_sym)); +	   temp_sym.param_binding_begin = ~0; +	   initialize_symbol_from_const(state->prog, & temp_sym, & $1); + +	   init_src_reg(& $$); +	   $$.Base.File = PROGRAM_CONSTANT; +	   $$.Base.Index = temp_sym.param_binding_begin;  	}  	; @@ -501,12 +597,33 @@ swizzleSrcReg: optionalSign srcReg swizzleSuffix  	   $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle,  						    $3.swizzle);  	} +	| optionalSign '|' srcReg swizzleSuffix '|' +	{ +	   $$ = $3; + +	   if (!state->option.NV_fragment) { +	      yyerror(& @2, state, "unexpected character '|'"); +	      YYERROR; +	   } + +	   if ($1) { +	      $$.Base.Negate = ~$$.Base.Negate; +	   } + +	   $$.Base.Abs = 1; +	   $$.Base.Swizzle = _mesa_combine_swizzles($$.Base.Swizzle, +						    $4.swizzle); +	} +  	; -maskedDstReg: dstReg optionalMask +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 @@ -589,7 +706,7 @@ extSwizSel: INTEGER  	   $$.xyzw_valid = 1;  	   $$.rgba_valid = 1;  	} -	| IDENTIFIER +	| string  	{  	   if (strlen($1) > 1) {  	      yyerror(& @1, state, "invalid extended swizzle selector"); @@ -639,7 +756,7 @@ extSwizSel: INTEGER  	}  	; -srcReg: IDENTIFIER /* temporaryReg | progParamSingle */ +srcReg: USED_IDENTIFIER /* temporaryReg | progParamSingle */  	{  	   struct asm_symbol *const s = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -729,7 +846,7 @@ dstReg: resultBinding  	   $$.File = PROGRAM_OUTPUT;  	   $$.Index = $1;  	} -	| IDENTIFIER /* temporaryReg | vertexResultReg */ +	| USED_IDENTIFIER /* temporaryReg | vertexResultReg */  	{  	   struct asm_symbol *const s = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -760,7 +877,7 @@ dstReg: resultBinding  	}  	; -progParamArray: IDENTIFIER +progParamArray: USED_IDENTIFIER  	{  	   struct asm_symbol *const s = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -806,8 +923,10 @@ addrRegRelOffset:              { $$ = 0; }  addrRegPosOffset: INTEGER  	{  	   if (($1 < 0) || ($1 > 63)) { -	      yyerror(& @1, state, -		      "relative address offset too large (positive)"); +              char s[100]; +              _mesa_snprintf(s, sizeof(s), +                             "relative address offset too large (%d)", $1); +	      yyerror(& @1, state, s);  	      YYERROR;  	   } else {  	      $$ = $1; @@ -818,8 +937,10 @@ addrRegPosOffset: INTEGER  addrRegNegOffset: INTEGER  	{  	   if (($1 < 0) || ($1 > 64)) { -	      yyerror(& @1, state, -		      "relative address offset too large (negative)"); +              char s[100]; +              _mesa_snprintf(s, sizeof(s), +                             "relative address offset too large (%d)", $1); +	      yyerror(& @1, state, s);  	      YYERROR;  	   } else {  	      $$ = $1; @@ -827,7 +948,7 @@ addrRegNegOffset: INTEGER  	}  	; -addrReg: IDENTIFIER +addrReg: USED_IDENTIFIER  	{  	   struct asm_symbol *const s = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, $1); @@ -880,6 +1001,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 @@ -1708,7 +1905,46 @@ optionalSign: '+'        { $$ = FALSE; }  	|                { $$ = FALSE; }  	; -TEMP_statement: TEMP { $<integer>$ = $1; } varNameList +TEMP_statement: optVarSize TEMP { $<integer>$ = $2; } varNameList +	; + +optVarSize: string +	{ +	   /* NV_fragment_program_option defines the size qualifiers in a +	    * fairly broken way.  "SHORT" or "LONG" can optionally be used +	    * before TEMP or OUTPUT.  However, neither is a reserved word! +	    * This means that we have to parse it as an identifier, then check +	    * to make sure it's one of the valid values.  *sigh* +	    * +	    * In addition, the grammar in the extension spec does *not* allow +	    * the size specifier to be optional, but all known implementations +	    * do. +	    */ +	   if (!state->option.NV_fragment) { +	      yyerror(& @1, state, "unexpected IDENTIFIER"); +	      YYERROR; +	   } + +	   if (strcmp("SHORT", $1) == 0) { +	   } else if (strcmp("LONG", $1) == 0) { +	   } else { +	      char *const err_str = +		 make_error_string("invalid storage size specifier \"%s\"", +				   $1); + +	      yyerror(& @1, state, (err_str != NULL) +		      ? err_str : "invalid storage size specifier"); + +	      if (err_str != NULL) { +		 _mesa_free(err_str); +	      } + +	      YYERROR; +	   } +	} +	| +	{ +	}  	;  ADDRESS_statement: ADDRESS { $<integer>$ = $1; } varNameList @@ -1728,15 +1964,15 @@ varNameList: varNameList ',' IDENTIFIER  	}  	; -OUTPUT_statement: OUTPUT IDENTIFIER '=' resultBinding +OUTPUT_statement: optVarSize OUTPUT IDENTIFIER '=' resultBinding  	{  	   struct asm_symbol *const s = -	      declare_variable(state, $2, at_output, & @2); +	      declare_variable(state, $3, at_output, & @3);  	   if (s == NULL) {  	      YYERROR;  	   } else { -	      s->output_binding = $4; +	      s->output_binding = $5;  	   }  	}  	; @@ -1903,7 +2139,7 @@ legacyTexUnitNum: INTEGER  	}  	; -ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER +ALIAS_statement: ALIAS IDENTIFIER '=' USED_IDENTIFIER  	{  	   struct asm_symbol *exist = (struct asm_symbol *)  	      _mesa_symbol_table_find_symbol(state->st, 0, $2); @@ -1924,8 +2160,54 @@ ALIAS_statement: ALIAS IDENTIFIER '=' IDENTIFIER  	}  	; +string: IDENTIFIER +	| USED_IDENTIFIER +	; +  %% +void +asm_instruction_set_operands(struct asm_instruction *inst, +			     const struct prog_dst_register *dst, +			     const struct asm_src_register *src0, +			     const struct asm_src_register *src1, +			     const struct asm_src_register *src2) +{ +   /* In the core ARB extensions only the KIL instruction doesn't have a +    * destination register. +    */ +   if (dst == NULL) { +      init_dst_reg(& inst->Base.DstReg); +   } else { +      inst->Base.DstReg = *dst; +   } + +   /* 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; +      inst->SrcReg[1] = *src1; +   } else { +      init_src_reg(& inst->SrcReg[1]); +   } + +   if (src2 != NULL) { +      inst->Base.SrcReg[2] = src2->Base; +      inst->SrcReg[2] = *src2; +   } else { +      init_src_reg(& inst->SrcReg[2]); +   } +} + +  struct asm_instruction *  asm_instruction_ctor(gl_inst_opcode op,  		     const struct prog_dst_register *dst, @@ -1933,37 +2215,37 @@ asm_instruction_ctor(gl_inst_opcode op,  		     const struct asm_src_register *src1,  		     const struct asm_src_register *src2)  { -   struct asm_instruction *inst = calloc(1, sizeof(struct asm_instruction)); +   struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction);     if (inst) {        _mesa_init_instructions(& inst->Base, 1);        inst->Base.Opcode = op; -      /* In the core ARB extensions only the KIL instruction doesn't have a -       * destination register. -       */ -      if (dst == NULL) { -	 init_dst_reg(& inst->Base.DstReg); -      } else { -	 inst->Base.DstReg = *dst; -      } +      asm_instruction_set_operands(inst, dst, src0, src1, src2); +   } -      inst->Base.SrcReg[0] = src0->Base; -      inst->SrcReg[0] = *src0; +   return inst; +} -      if (src1 != NULL) { -	 inst->Base.SrcReg[1] = src1->Base; -	 inst->SrcReg[1] = *src1; -      } else { -	 init_src_reg(& inst->SrcReg[1]); -      } -      if (src2 != NULL) { -	 inst->Base.SrcReg[2] = src2->Base; -	 inst->SrcReg[2] = *src2; -      } else { -	 init_src_reg(& inst->SrcReg[2]); -      } +struct asm_instruction * +asm_instruction_copy_ctor(const struct prog_instruction *base, +			  const struct prog_dst_register *dst, +			  const struct asm_src_register *src0, +			  const struct asm_src_register *src1, +			  const struct asm_src_register *src2) +{ +   struct asm_instruction *inst = CALLOC_STRUCT(asm_instruction); + +   if (inst) { +      _mesa_init_instructions(& inst->Base, 1); +      inst->Base.Opcode = base->Opcode; +      inst->Base.CondUpdate = base->CondUpdate; +      inst->Base.CondDst = base->CondDst; +      inst->Base.SaturateMode = base->SaturateMode; +      inst->Base.Precision = base->Precision; + +      asm_instruction_set_operands(inst, dst, src0, src1, src2);     }     return inst; diff --git a/src/mesa/shader/program_parse_extra.c b/src/mesa/shader/program_parse_extra.c index 8e4be606f1..0656c5eaa8 100644 --- a/src/mesa/shader/program_parse_extra.c +++ b/src/mesa/shader/program_parse_extra.c @@ -34,6 +34,121 @@   */  int +_mesa_parse_instruction_suffix(const struct asm_parser_state *state, +			       const char *suffix, +			       struct prog_instruction *inst) +{ +   inst->CondUpdate = 0; +   inst->CondDst = 0; +   inst->SaturateMode = SATURATE_OFF; +   inst->Precision = FLOAT32; + + +   /* The first possible suffix element is the precision specifier from +    * NV_fragment_program_option. +    */ +   if (state->option.NV_fragment) { +      switch (suffix[0]) { +      case 'H': +	 inst->Precision = FLOAT16; +	 suffix++; +	 break; +      case 'R': +	 inst->Precision = FLOAT32; +	 suffix++; +	 break; +      case 'X': +	 inst->Precision = FIXED12; +	 suffix++; +	 break; +      default: +	 break; +      } +   } + +   /* The next possible suffix element is the condition code modifier selection +    * from NV_fragment_program_option. +    */ +   if (state->option.NV_fragment) { +      if (suffix[0] == 'C') { +	 inst->CondUpdate = 1; +	 suffix++; +      } +   } + + +   /* The final possible suffix element is the saturation selector from +    * ARB_fragment_program. +    */ +   if (state->mode == ARB_fragment) { +      if (strcmp(suffix, "_SAT") == 0) { +	 inst->SaturateMode = SATURATE_ZERO_ONE; +	 suffix += 4; +      } +   } + + +   /* It is an error for all of the suffix string not to be consumed. +    */ +   return suffix[0] == '\0'; +} + + +int +_mesa_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) { @@ -102,6 +217,17 @@ _mesa_ARBfp_parse_option(struct asm_parser_state *state, const char *option)  	    return 1;  	 }        } +   } else if (strncmp(option, "NV_fragment_program", 19) == 0) { +      option += 19; + +      /* Other NV_fragment_program strings may be supported later. +       */ +      if (option[0] == '\0') { +	 if (state->ctx->Extensions.NV_fragment_program_option) { +	    state->option.NV_fragment = 1; +	    return 1; +	 } +      }     } else if (strncmp(option, "MESA_", 5) == 0) {        option += 5; diff --git a/src/mesa/shader/program_parser.h b/src/mesa/shader/program_parser.h index 8d8b4d89bc..25b413918a 100644 --- a/src/mesa/shader/program_parser.h +++ b/src/mesa/shader/program_parser.h @@ -218,6 +218,7 @@ struct asm_parser_state {        unsigned Shadow:1;        unsigned TexRect:1;        unsigned TexArray:1; +      unsigned NV_fragment:1;     } option;     struct { @@ -279,4 +280,31 @@ extern int _mesa_ARBvp_parse_option(struct asm_parser_state *state,  extern int _mesa_ARBfp_parse_option(struct asm_parser_state *state,      const char *option); +/** + * Parses and processes instruction suffixes + * + * Instruction suffixes, such as \c _SAT, are processed.  The relevant bits + * are set in \c inst.  If suffixes are encountered that are either not known + * or not supported by the modes and options set in \c state, zero will be + * returned. + * + * \return + * Non-zero on success, zero on failure. + */ +extern int _mesa_parse_instruction_suffix(const struct asm_parser_state *state, +    const char *suffix, struct prog_instruction *inst); + +/** + * 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); +  /*@}*/ diff --git a/src/mesa/shader/programopt.c b/src/mesa/shader/programopt.c index f70c75cec8..3b8529592d 100644 --- a/src/mesa/shader/programopt.c +++ b/src/mesa/shader/programopt.c @@ -573,3 +573,94 @@ _mesa_remove_output_reads(struct gl_program *prog, gl_register_file type)        }     }  } + + +/** + * Make the given fragment program into a "no-op" shader. + * Actually, just copy the incoming fragment color (or texcoord) + * to the output color. + * This is for debug/test purposes. + */ +void +_mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog) +{ +   struct prog_instruction *inst; +   GLuint inputAttr; + +   inst = _mesa_alloc_instructions(2); +   if (!inst) { +      _mesa_error(ctx, GL_OUT_OF_MEMORY, "_mesa_nop_fragment_program"); +      return; +   } + +   _mesa_init_instructions(inst, 2); + +   inst[0].Opcode = OPCODE_MOV; +   inst[0].DstReg.File = PROGRAM_OUTPUT; +   inst[0].DstReg.Index = FRAG_RESULT_COLOR; +   inst[0].SrcReg[0].File = PROGRAM_INPUT; +   if (prog->Base.InputsRead & FRAG_BIT_COL0) +      inputAttr = FRAG_ATTRIB_COL0; +   else +      inputAttr = FRAG_ATTRIB_TEX0; +   inst[0].SrcReg[0].Index = inputAttr; + +   inst[1].Opcode = OPCODE_END; + +   _mesa_free_instructions(prog->Base.Instructions, +                           prog->Base.NumInstructions); + +   prog->Base.Instructions = inst; +   prog->Base.NumInstructions = 2; +   prog->Base.InputsRead = 1 << inputAttr; +   prog->Base.OutputsWritten = 1 << FRAG_RESULT_COLOR; +} + + +/** + * \sa _mesa_nop_fragment_program + * Replace the given vertex program with a "no-op" program that just + * transforms vertex position and emits color. + */ +void +_mesa_nop_vertex_program(GLcontext *ctx, struct gl_vertex_program *prog) +{ +   struct prog_instruction *inst; +   GLuint inputAttr; + +   /* +    * Start with a simple vertex program that emits color. +    */ +   inst = _mesa_alloc_instructions(2); +   if (!inst) { +      _mesa_error(ctx, GL_OUT_OF_MEMORY, "_mesa_nop_vertex_program"); +      return; +   } + +   _mesa_init_instructions(inst, 2); + +   inst[0].Opcode = OPCODE_MOV; +   inst[0].DstReg.File = PROGRAM_OUTPUT; +   inst[0].DstReg.Index = VERT_RESULT_COL0; +   inst[0].SrcReg[0].File = PROGRAM_INPUT; +   if (prog->Base.InputsRead & VERT_BIT_COLOR0) +      inputAttr = VERT_ATTRIB_COLOR0; +   else +      inputAttr = VERT_ATTRIB_TEX0; +   inst[0].SrcReg[0].Index = inputAttr; + +   inst[1].Opcode = OPCODE_END; + +   _mesa_free_instructions(prog->Base.Instructions, +                           prog->Base.NumInstructions); + +   prog->Base.Instructions = inst; +   prog->Base.NumInstructions = 2; +   prog->Base.InputsRead = 1 << inputAttr; +   prog->Base.OutputsWritten = 1 << VERT_RESULT_COL0; + +   /* +    * Now insert code to do standard modelview/projection transformation. +    */ +   _mesa_insert_mvp_code(ctx, prog); +} diff --git a/src/mesa/shader/programopt.h b/src/mesa/shader/programopt.h index 96acaf9566..21fac07849 100644 --- a/src/mesa/shader/programopt.h +++ b/src/mesa/shader/programopt.h @@ -42,4 +42,11 @@ _mesa_count_texture_instructions(struct gl_program *prog);  extern void  _mesa_remove_output_reads(struct gl_program *prog, gl_register_file type); +extern void +_mesa_nop_fragment_program(GLcontext *ctx, struct gl_fragment_program *prog); + +extern void +_mesa_nop_vertex_program(GLcontext *ctx, struct gl_vertex_program *prog); + +  #endif /* PROGRAMOPT_H */ diff --git a/src/mesa/shader/shader_api.c b/src/mesa/shader/shader_api.c index b282d7af60..453cd3964a 100644 --- a/src/mesa/shader/shader_api.c +++ b/src/mesa/shader/shader_api.c @@ -380,12 +380,18 @@ get_shader_flags(void)           flags |= GLSL_DUMP;        if (_mesa_strstr(env, "log"))           flags |= GLSL_LOG; +      if (_mesa_strstr(env, "nopvert")) +         flags |= GLSL_NOP_VERT; +      if (_mesa_strstr(env, "nopfrag")) +         flags |= GLSL_NOP_FRAG;        if (_mesa_strstr(env, "nopt"))           flags |= GLSL_NO_OPT;        else if (_mesa_strstr(env, "opt"))           flags |= GLSL_OPT;        if (_mesa_strstr(env, "uniform"))           flags |= GLSL_UNIFORMS; +      if (_mesa_strstr(env, "useprog")) +         flags |= GLSL_USE_PROG;     }     return flags; @@ -1493,6 +1499,41 @@ _mesa_link_program(GLcontext *ctx, GLuint program)  /** + * Print basic shader info (for debug). + */ +static void +print_shader_info(const struct gl_shader_program *shProg) +{ +   GLuint i; + +   _mesa_printf("Mesa: glUseProgram(%u)\n", shProg->Name); +   for (i = 0; i < shProg->NumShaders; i++) { +      const char *s; +      switch (shProg->Shaders[i]->Type) { +      case GL_VERTEX_SHADER: +         s = "vertex"; +         break; +      case GL_FRAGMENT_SHADER: +         s = "fragment"; +         break; +      case GL_GEOMETRY_SHADER: +         s = "geometry"; +         break; +      default: +         s = ""; +      } +      _mesa_printf("  %s shader %u, checksum %u\n", s,  +                   shProg->Shaders[i]->Name, +                   shProg->Shaders[i]->SourceChecksum); +   } +   if (shProg->VertexProgram) +      _mesa_printf("  vert prog %u\n", shProg->VertexProgram->Base.Id); +   if (shProg->FragmentProgram) +      _mesa_printf("  frag prog %u\n", shProg->FragmentProgram->Base.Id); +} + + +/**   * Called via ctx->Driver.UseProgram()   */  void @@ -1506,8 +1547,6 @@ _mesa_use_program(GLcontext *ctx, GLuint program)        return;     } -   FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS); -     if (program) {        shProg = _mesa_lookup_shader_program_err(ctx, program, "glUseProgram");        if (!shProg) { @@ -1520,26 +1559,18 @@ _mesa_use_program(GLcontext *ctx, GLuint program)        }        /* debug code */ -      if (0) { -         GLuint i; -         _mesa_printf("Use Shader %u\n", shProg->Name); -         for (i = 0; i < shProg->NumShaders; i++) { -            _mesa_printf(" shader %u, type 0x%x, checksum %u\n", -                         shProg->Shaders[i]->Name, -                         shProg->Shaders[i]->Type, -                         shProg->Shaders[i]->SourceChecksum); -         } -         if (shProg->VertexProgram) -            printf(" vert prog %u\n", shProg->VertexProgram->Base.Id); -         if (shProg->FragmentProgram) -            printf(" frag prog %u\n", shProg->FragmentProgram->Base.Id); +      if (ctx->Shader.Flags & GLSL_USE_PROG) { +         print_shader_info(shProg);        }     }     else {        shProg = NULL;     } -   _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg); +   if (ctx->Shader.CurrentProgram != shProg) { +      FLUSH_VERTICES(ctx, _NEW_PROGRAM | _NEW_PROGRAM_CONSTANTS); +      _mesa_reference_shader_program(ctx, &ctx->Shader.CurrentProgram, shProg); +   }  } diff --git a/src/mesa/shader/slang/slang_compile.c b/src/mesa/shader/slang/slang_compile.c index c1b97c7cb7..a270888443 100644 --- a/src/mesa/shader/slang/slang_compile.c +++ b/src/mesa/shader/slang/slang_compile.c @@ -2814,6 +2814,16 @@ _slang_compile(GLcontext *ctx, struct gl_shader *shader)            (ctx->Shader.Flags & GLSL_NO_OPT) == 0) {           _mesa_optimize_program(ctx, shader->Program);        } +      if ((ctx->Shader.Flags & GLSL_NOP_VERT) && +          shader->Program->Target == GL_VERTEX_PROGRAM_ARB) { +         _mesa_nop_vertex_program(ctx, +                                  (struct gl_vertex_program *) shader->Program); +      } +      if ((ctx->Shader.Flags & GLSL_NOP_FRAG) && +          shader->Program->Target == GL_FRAGMENT_PROGRAM_ARB) { +         _mesa_nop_fragment_program(ctx, +                                (struct gl_fragment_program *) shader->Program); +      }     }     if (ctx->Shader.Flags & GLSL_LOG) { | 
