NV fp lexer: Add new opcodes
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 1 Sep 2009 00:00:31 +0000 (17:00 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Tue, 1 Sep 2009 00:00:31 +0000 (17:00 -0700)
src/mesa/shader/lex.yy.c
src/mesa/shader/program_lexer.l
src/mesa/shader/program_parse.tab.c
src/mesa/shader/program_parse.tab.h
src/mesa/shader/program_parse.y

index 6d661bd18744ec08b9085c6afcdd7c95435f0d77..5bde12a6b77bc9fbbe53eadc4583c7bf7736078b 100644 (file)
@@ -357,8 +357,8 @@ static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner );
        *yy_cp = '\0'; \
        yyg->yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 183
-#define YY_END_OF_BUFFER 184
+#define YY_NUM_RULES 217
+#define YY_END_OF_BUFFER 218
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -366,82 +366,93 @@ 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[776] =
     {   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,
-
-      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,
+        0,    0,  218,  216,  214,  213,  216,  216,  186,  212,
+      188,  188,  188,  188,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  214,    0,    0,  215,  186,
+        0,  187,  189,  209,  209,    0,    0,    0,    0,  209,
+        0,    0,    0,    0,    0,    0,    0,  166,  210,  167,
+      168,  200,  200,  200,  200,    0,  188,    0,  174,  175,
+      176,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  208,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  207,  207,    0,    0,    0,
         0,    0,    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,
-
-       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,
-
-      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,
+      206,  206,  206,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,  197,  197,  197,  198,  198,  199,  190,
+      189,  190,    0,  191,   11,   13,  186,   15,  186,  186,
+       16,   18,  186,   20,   22,   24,   26,   28,   30,    6,
+
+       32,   34,   35,   37,   39,   42,   40,   44,   45,   47,
+       49,   51,   53,   55,  186,  186,  186,  186,  186,   65,
+       67,  186,   69,   71,   73,   75,   77,   79,   81,  186,
+       83,   85,   87,   89,   91,   93,   95,  186,   97,   99,
+      101,  103,  186,  109,  111,  186,  186,  186,  186,  186,
+      186,    0,    0,    0,    0,  189,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,  127,  128,  130,    0,
+      205,    0,    0,    0,    0,    0,    0,  144,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,    0,  204,  203,
+      203,  156,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,    0,  194,  194,  195,  196,    0,  192,  186,  186,
+      186,  186,  186,  186,  186,  186,  177,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,   57,  186,   61,
+      186,  186,  186,  178,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,   10,
+      186,  186,  186,  186,  105,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,    0,  211,    0,    0,    0,  120,
+      121,    0,    0,    0,    0,    0,    0,    0,  132,    0,
         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,
-
-      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,
-
-      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,  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
+
+        0,    0,    0,    0,    0,    0,    0,  202,    0,    0,
+        0,  160,    0,  162,    0,    0,    0,    0,    0,    0,
+      201,  193,  186,  186,  186,    4,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,    9,
+      186,   59,  186,   63,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  107,  186,  186,  186,
+      186,  186,  116,  186,  186,    0,    0,    0,    0,    0,
+      122,  123,    0,    0,    0,    0,  131,    0,    0,  135,
+
+      138,    0,    0,    0,    0,    0,    0,    0,  149,  150,
+        0,    0,    0,    0,  155,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,  186,  186,  186,  186,  186,
+      186,    5,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,    7,    8,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  186,  186,  186,  186,  186,  186,
+      186,  186,  186,  186,  117,  186,  113,    0,    0,    0,
+        0,  171,    0,    0,    0,    0,    0,    0,    0,    0,
+
+        0,  141,    0,  145,  146,    0,  148,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,  164,  165,    0,
+        0,  172,   12,    3,   14,  182,  183,  186,   17,   19,
+       21,   23,   25,   27,   29,   31,   33,   36,   38,   43,
+       41,   46,   48,   50,   52,   54,   56,  186,  186,  186,
+      186,   66,   68,   70,   72,   74,   76,   78,   80,   82,
+      186,  186,  186,   84,   86,   88,   90,   92,   94,   96,
+       98,  100,  102,  104,  186,  186,  110,  112,  186,  115,
+      173,    0,    0,  118,    0,  124,    0,    0,    0,  133,
+        0,    0,    0,    0,    0,    0,  147,    0,    0,  153,
+
+      140,    0,    0,    0,    0,    0,    0,  169,    0,  186,
+       58,  186,   62,  186,  179,  180,  186,  106,  186,  114,
+        0,    0,    0,    0,  126,  129,  134,    0,    0,  139,
+        0,    0,    0,  152,    0,    0,    0,    0,  161,  163,
+        0,  186,   60,   64,  186,  108,    2,    1,    0,  125,
+        0,  137,    0,  143,  151,    0,    0,  158,  159,  170,
+      186,  181,    0,  136,    0,  154,  157,  186,  119,  142,
+      186,  186,  184,  185,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -487,280 +498,313 @@ 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[779] =
     {   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,
-
-      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,
-
-      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,
-
-      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,
-
-      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,
-
-      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,
+        0,    0, 1054, 1055,   66, 1055, 1048, 1049,    0,   69,
+       85,  128,  140,  152,  151,   58,   56,   63,   76, 1027,
+      158,  160,   39,  163,  173,  189,   52, 1020,   76,  990,
+      989, 1001,  985,  999,  998,  105, 1027, 1039, 1055,    0,
+      225, 1055,  218,  160,  157,   20,  123,   66,  119,  192,
+      999,  985,   54,  162,  983,  995,  194, 1055,  200,  195,
+       98,  227,  196,  231,  235,  293,  305,  316, 1055, 1055,
+     1055, 1004, 1017, 1011,  223, 1000, 1003,  999, 1014,  107,
+      298,  996, 1010,  246,  996, 1009, 1000, 1013,  990, 1001,
+      992,  182,  993,  984,  993,  984,  983,  984,  144,  978,
+
+      984,  995,  986,  980,  977,  978,  982,  289,  991,  978,
+      302,  985,  972,  986,  962,   65,  315,  989,  981,  980,
+      956,  941,  936,  953,  929,  934,  960,  279,  949,  293,
+      944,  342,  299,  946,  927,  317,  937,  933,  928,  207,
+      934,  920,  936,  933,  924,  320,  324,  926,  915,  929,
+      932,  914,  929,  916,  913,  920,  284,  928,  227,  288,
+      327,  342,  345,  905,  922,  923,  916,  898,  318,  899,
+      921,  912,  330,  341,  345,  349,  353,  357,  361, 1055,
+      419,  430,  436,  442,  920,  205,  944,    0,  943,  926,
+      916,  915,  935,  913,  912,  911,  910,  909,  908,    0,
+
+      907,    0,  906,  905,    0,  904,  903,    0,  902,  901,
+      900,  899,  898,  897,  913,  906,  919,  354,  356,  893,
+      892,  898,  890,  889,  888,  887,  886,  885,  884,  905,
+      882,  881,  880,  879,  878,  877,  876,  886,  874,  873,
+      872,  871,  357,  870,  869,  861,  860,  845,  845,  844,
+      843,  886,  858,  846,  448,  456,  430,  850,  418,  847,
+      841,  841,  835,  848,  848,  833, 1055, 1055,  848,  836,
+      432,  843,  135,  840,  846,  433,  841, 1055,  832,  839,
+      838,  841,  827,  826,  830,  825,  330,  830,  439,  442,
+      451, 1055,  822,  820,  820,  828,  829,  811,  456,  816,
+
+      822,  441,  447,  454,  458,  462,  520,  526,  836,  848,
+      834,  833,  826,  840,  830,  829,    0,  828,  827,  826,
+      825,  824,  823,  822,  821,  820,  819,  818,  817,  816,
+      815,  814,  813,  812,  815,  808,  815,  800,  807,  798,
+      821,  804,  803,    0,  802,  801,  800,  799,  798,  797,
+      796,  799,  794,  793,  792,  791,  790,  789,  788,    0,
+      787,  786,  785,  784,  775,  782,  781,  780,  758,  752,
+      757,  763,  746,  761,  495, 1055,  760,  750,  754, 1055,
+     1055,  744,  753,  739,  756,  739,  742,  736, 1055,  737,
+      736,  733,  740,  733,  741,  737,  747,  744,  726,  732,
+
+      739,  723,  722,  740,  722,  734,  733, 1055,  732,  722,
+      726, 1055,  713, 1055,  718,  718,  726,  709,  710,  720,
+     1055, 1055,  752,  734,  750,    0,  532,  748,  748,  747,
+      746,  745,  744,  743,  742,  741,  740,  739,  738,  737,
+      736,  735,  734,  733,  732,  731,  730,  717,  710,    0,
+      710,  701,  708,  699,  723,  722,  721,  720,  719,  718,
+      717,  716,  715,  693,  713,  712,  711,  710,  709,  708,
+      707,  706,  705,  704,  703,  685,  676,  700,  699,  668,
+      671,  651,    0,  652,  645,  652,  651,  652,  644,  662,
+     1055, 1055,  644,  642,  652,  645, 1055,  640,  657,  345,
+
+     1055,  648,  632,  633,  642,  633,  632,  632, 1055,  631,
+      640,  630,  646,  643, 1055,  642,  640,  629,  630,  626,
+      618,  625,  620,  621,  616,  642,  642,  640,  654,  653,
+      648,    0,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
+      618,    0,    0,  635,  617,  633,  615,  613,  612,  611,
+      610,  609,  608,  607,  606,  605,  484,  604,  603,  602,
+      601,  600,  599,  598,  597,  596,  595,  594,  611,  593,
+      591,  590,  568,  568,    0,  575,    0,  609,  608,  557,
+      575, 1055,  570,  565,  558,  554,  566,  556,  554,  550,
+
+      566,  557,  556, 1055, 1055,  559, 1055,  554,  547,  536,
+      547,  539,  543,  556,  551,  554,  536, 1055, 1055,  548,
+      537, 1055,    0,    0,    0,    0,    0,  576,    0,    0,
         0,    0,    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,
-
-      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
+        0,    0,    0,    0,    0,    0,    0,  557,  574,  555,
+      572,    0,    0,    0,    0,    0,    0,    0,    0,    0,
+      568,  567,  565,    0,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,  550,  567,    0,    0,  521,    0,
+        0,  572,  571, 1055,  518, 1055,  522,  522,  531, 1055,
+      515,  529,  517,  519,  516,  518, 1055,  496,  507, 1055,
+
+     1055,  511,  507,  500,  497,  497,  510, 1055,  494,  534,
+        0,  518,    0,  517,    0,    0,  532,    0,  515,    0,
+       67,  187,  172,  202, 1055, 1055, 1055,  219,  243, 1055,
+      245,  246,  300, 1055,  292,  315,  332,  340, 1055, 1055,
+      357,  406,    0,    0,  402,    0, 1055, 1055,  381, 1055,
+      423, 1055,  437, 1055, 1055,  431,  429, 1055, 1055, 1055,
+      460,    0,  448, 1055,  444, 1055, 1055,  534, 1055, 1055,
+      496,  528,    0,    0, 1055,  565,  546,  568
     } ;
 
-static yyconst flex_int16_t yy_def[678] =
+static yyconst flex_int16_t yy_def[779] =
     {   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,
-
-      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,
-
-      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,
-
-      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,
-
-      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,
-
-      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,
-
-      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
+      775,    1,  775,  775,  775,  775,  775,  776,  777,  775,
+      775,  775,  775,  775,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  775,  775,  776,  775,  777,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  778,  775,  775,  775,  775,
+      775,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      777,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  777,
+      777,  777,  777,  777,  777,  777,  777,  777,  777,  777,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  777,  777,  777,  777,  777,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      777,  777,  775,  775,  775,  775,  775,  777,  775,  775,
+      777,  777,  777,  777,    0,  775,  775,  775
     } ;
 
-static yyconst flex_int16_t yy_nxt[1023] =
+static yyconst flex_int16_t yy_nxt[1123] =
     {   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,
-
-       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,
-
-       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,
-
-      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,
-
-      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,
-
-      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,
+        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,  747,   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,
+      390,   89,   75,   93,   76,   68,   90,   99,   94,   91,
+      101,  100,  102,  103,   95,  391,  748,   68,  136,  133,
+
+      210,  133,  133,  152,  133,  104,  105,  133,  106,  107,
+      108,  109,  110,  134,  111,  133,  112,  153,  133,  211,
+      135,  749,  113,  114,  154,  115,   41,   43,   43,   43,
+       43,   43,   43,  146,  147,  157,  310,  132,  165,  133,
+      166,  161,  162,  167,  168,  311,  158,  163,  188,  159,
+      133,  169,  160,  264,  189,  164,  750,  201,  133,  174,
+      173,  175,  176,  132,  751,  265,  128,  129,   46,   47,
+       48,   49,  172,   51,   52,  202,  284,   53,   54,   55,
+       56,   57,   58,  130,   60,   61,  285,  752,  131,  753,
+      173,  173,  173,  173,  177,  173,  173,  178,  179,  173,
+
+      173,  173,  181,  181,  181,  181,  181,  181,  228,  754,
+      196,  197,  182,   66,   67,   67,   67,   67,   67,   67,
+      198,  232,  229,  183,   68,  184,  184,  184,  184,  184,
+      184,  240,  134,  241,  254,  233,  281,  286,  182,  135,
+      257,  257,  282,  287,  242,  755,  257,  756,  164,  255,
+       68,  256,  256,  256,  256,  256,  256,  257,  257,  257,
+      260,  257,  257,  297,  257,  271,  257,  257,  257,  257,
+      757,  257,  340,  298,  257,  257,  338,  405,  257,  365,
+      406,  288,  257,  289,  257,  257,  290,  291,  339,  257,
+      341,  366,  257,  302,  302,  302,  302,  758,  599,  759,
+
+      257,  600,  760,  257,  302,  302,  302,  302,  303,  302,
+      302,  304,  305,  302,  302,  302,  302,  302,  302,  302,
+      306,  302,  302,  302,  302,  302,  302,  302,   43,   43,
+       43,   43,   43,   43,  761,  762,  763,  307,  132,  308,
+      308,  308,  308,  308,  308,  184,  184,  184,  184,  184,
+      184,  184,  184,  184,  184,  184,  184,  256,  256,  256,
+      256,  256,  256,  378,  132,  256,  256,  256,  256,  256,
+      256,  376,  376,  376,  376,  764,  379,  376,  394,  376,
+      376,  376,  765,  376,  376,  766,  376,  767,  376,  376,
+      376,  395,  408,  376,  661,  662,  768,  376,  376,  415,
+
+      376,  416,  769,  417,  421,  421,  421,  421,  770,  376,
+      421,  421,  421,  421,  773,  663,  418,  422,  421,  421,
+      421,  421,  421,  421,  421,  421,  421,  421,  421,  308,
+      308,  308,  308,  308,  308,  308,  308,  308,  308,  308,
+      308,  486,  529,  530,  771,  772,  774,   40,  746,  745,
+      744,  743,  742,  741,  740,  739,  738,  487,  737,  736,
+      735,  734,  733,  732,  531,   38,   38,   38,  180,  180,
+      731,  730,  729,  728,  727,  726,  725,  724,  723,  722,
+      721,  720,  719,  718,  717,  716,  715,  714,  713,  712,
+      711,  710,  709,  708,  707,  706,  705,  704,  703,  702,
+
+      701,  700,  699,  698,  697,  696,  695,  694,  693,  692,
+      691,  690,  689,  688,  687,  686,  685,  684,  683,  682,
+      681,  680,  679,  678,  677,  676,  675,  674,  673,  672,
+      671,  670,  669,  668,  667,  666,  665,  664,  660,  659,
+      658,  657,  656,  655,  654,  653,  652,  651,  650,  649,
+      648,  647,  646,  645,  644,  643,  642,  641,  640,  639,
+      638,  637,  636,  635,  634,  633,  632,  631,  630,  629,
+      628,  627,  626,  625,  624,  623,  622,  621,  620,  619,
+      618,  617,  616,  615,  614,  613,  612,  611,  610,  609,
+      608,  607,  606,  605,  604,  603,  602,  601,  598,  597,
+
       596,  595,  594,  593,  592,  591,  590,  589,  588,  587,
-      586,  585,  584,  583,  582,  581,  580,  579,  575,  574,
-
-      573,  572,  571,  570,  569,  568,  567,  566,  565,  564,
-      563,  562,  561,  560,  559,  558,  557,  556,  555,  554,
-      553,  552,  551,  550,  549,  548,  547,  546,  545,  544,
-      543,  542,  541,  540,  539,  538,  537,  536,  535,  534,
-      533,  532,  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,
-
-      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,
-
-      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,
-
-      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,
-
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674
+      586,  585,  584,  583,  582,  581,  580,  579,  578,  577,
+      576,  575,  574,  573,  572,  571,  570,  569,  568,  567,
+      566,  565,  564,  563,  562,  561,  560,  559,  558,  557,
+      556,  555,  554,  553,  552,  551,  550,  549,  548,  547,
+      546,  545,  544,  543,  542,  541,  540,  539,  538,  537,
+      536,  535,  534,  533,  532,  528,  527,  526,  525,  524,
+      523,  522,  521,  520,  519,  518,  517,  516,  515,  514,
+      513,  512,  511,  510,  509,  508,  507,  506,  505,  504,
+      503,  502,  501,  500,  499,  498,  497,  496,  495,  494,
+
+      493,  492,  491,  490,  489,  488,  485,  484,  483,  482,
+      481,  480,  479,  478,  477,  476,  475,  474,  473,  472,
+      471,  470,  469,  468,  467,  466,  465,  464,  463,  462,
+      461,  460,  459,  458,  457,  456,  455,  454,  453,  452,
+      451,  450,  449,  448,  447,  446,  445,  444,  443,  442,
+      441,  440,  439,  438,  437,  436,  435,  434,  433,  432,
+      431,  430,  429,  428,  427,  426,  425,  424,  423,  420,
+      419,  414,  413,  412,  411,  410,  409,  407,  404,  403,
+      402,  401,  400,  399,  398,  397,  396,  393,  392,  389,
+      388,  387,  386,  385,  384,  383,  382,  381,  380,  377,
+
+      288,  260,  375,  374,  373,  372,  371,  370,  369,  368,
+      367,  364,  363,  362,  361,  360,  359,  358,  357,  356,
+      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
+      345,  344,  343,  342,  337,  336,  335,  334,  333,  332,
+      331,  330,  329,  328,  327,  326,  325,  324,  323,  322,
+      321,  320,  319,  318,  317,  316,  315,  314,  313,  312,
+      309,  301,  300,  299,  296,  295,  294,  293,  292,  283,
+      280,  279,  278,  277,  276,  275,  274,  273,  272,  270,
+      269,  268,  267,  266,  263,  262,  261,  259,  258,  172,
+      253,  252,  251,  250,  249,  248,  247,  246,  245,  244,
+
+      243,  237,  236,  235,  234,  231,  230,  227,  226,  225,
+      224,  223,  222,  221,  220,  217,  216,  215,  214,  213,
+      212,  209,  208,  207,  206,  205,  204,  203,  200,  199,
+      193,  192,  191,  190,  187,  186,  185,  156,  155,  149,
+      148,   39,  127,  126,  125,  124,  123,  122,  121,  118,
+       87,   39,   37,  775,    3,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775
     } ;
 
-static yyconst flex_int16_t yy_chk[1023] =
+static yyconst flex_int16_t yy_chk[1123] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -768,113 +812,124 @@ 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,
-
-       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,
-
-       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,
-
-      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,
-
-      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,
-
-      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,
-
-      496,  495,  494,  491,  490,  489,  488,  487,  486,  485,
-      484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
+        1,    1,    1,    1,    1,    1,    1,    5,   23,    5,
+       10,   27,   46,   23,   17,   46,  721,   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,
+      273,   21,   15,   22,   15,   13,   21,   24,   22,   21,
+       25,   24,   25,   25,   22,  273,  722,   14,   45,   45,
+
+       92,   44,   44,   54,   45,   25,   26,   44,   26,   26,
+       26,   26,   26,   44,   26,   45,   26,   54,   44,   92,
+       44,  723,   26,   26,   54,   26,   41,   43,   43,   43,
+       43,   43,   43,   50,   50,   57,  186,   43,   60,   50,
+       60,   59,   59,   60,   60,  186,   57,   59,   75,   57,
+       50,   60,   57,  140,   75,   59,  724,   84,   59,   63,
+       63,   63,   63,   43,  728,  140,   41,   41,   41,   41,
+       41,   41,   62,   41,   41,   84,  159,   41,   41,   41,
+       41,   41,   41,   41,   41,   41,  159,  729,   41,  731,
+       62,   62,   62,   62,   64,   64,   64,   64,   65,   65,
+
+       65,   65,   66,   66,   66,   66,   66,   66,  108,  732,
+       81,   81,   66,   67,   67,   67,   67,   67,   67,   67,
+       81,  111,  108,   68,   67,   68,   68,   68,   68,   68,
+       68,  117,  128,  117,  130,  111,  157,  160,   66,  128,
+      133,  133,  157,  160,  117,  733,  133,  735,  130,  132,
+       67,  132,  132,  132,  132,  132,  132,  133,  136,  136,
+      136,  146,  146,  169,  136,  147,  147,  146,  161,  161,
+      736,  147,  219,  169,  161,  136,  218,  287,  146,  243,
+      287,  161,  147,  162,  162,  161,  163,  163,  218,  162,
+      219,  243,  163,  173,  173,  173,  173,  737,  500,  738,
+
+      162,  500,  741,  163,  174,  174,  174,  174,  175,  175,
+      175,  175,  176,  176,  176,  176,  177,  177,  177,  177,
+      178,  178,  178,  178,  179,  179,  179,  179,  181,  181,
+      181,  181,  181,  181,  742,  745,  749,  182,  181,  182,
+      182,  182,  182,  182,  182,  183,  183,  183,  183,  183,
+      183,  184,  184,  184,  184,  184,  184,  255,  255,  255,
+      255,  255,  255,  259,  181,  256,  256,  256,  256,  256,
+      256,  257,  257,  271,  271,  751,  259,  257,  276,  271,
+      289,  289,  753,  290,  290,  756,  289,  757,  257,  290,
+      271,  276,  291,  291,  567,  567,  761,  289,  291,  299,
+
+      290,  299,  763,  299,  302,  302,  302,  302,  765,  291,
+      303,  303,  303,  303,  771,  567,  299,  304,  304,  304,
+      304,  305,  305,  305,  305,  306,  306,  306,  306,  307,
+      307,  307,  307,  307,  307,  308,  308,  308,  308,  308,
+      308,  375,  427,  427,  768,  768,  772,  777,  719,  717,
+      714,  712,  710,  709,  707,  706,  705,  375,  704,  703,
+      702,  699,  698,  696,  427,  776,  776,  776,  778,  778,
+      695,  694,  693,  692,  691,  689,  688,  687,  685,  683,
+      682,  679,  676,  675,  663,  662,  661,  651,  650,  649,
+      648,  628,  621,  620,  617,  616,  615,  614,  613,  612,
+
+      611,  610,  609,  608,  606,  603,  602,  601,  600,  599,
+      598,  597,  596,  595,  594,  593,  591,  590,  589,  588,
+      586,  584,  583,  582,  581,  580,  579,  578,  577,  576,
+      575,  574,  573,  572,  571,  570,  569,  568,  566,  565,
+      564,  563,  562,  561,  560,  559,  558,  557,  556,  555,
+      554,  551,  550,  549,  548,  547,  546,  545,  544,  543,
+      542,  541,  540,  539,  538,  537,  536,  535,  534,  533,
+      531,  530,  529,  528,  527,  526,  525,  524,  523,  522,
+      521,  520,  519,  518,  517,  516,  514,  513,  512,  511,
+      510,  508,  507,  506,  505,  504,  503,  502,  499,  498,
+
+      496,  495,  494,  493,  490,  489,  488,  487,  486,  485,
+      484,  482,  481,  480,  479,  478,  477,  476,  475,  474,
       473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
-      463,  462,  461,  460,  459,  458,  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,
-
-      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,
-
-      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,
-
-      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,
-
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674,  674,  674,  674,  674,  674,  674,  674,  674,
-      674,  674
+      463,  462,  461,  460,  459,  458,  457,  456,  455,  454,
+      453,  452,  451,  449,  448,  447,  446,  445,  444,  443,
+      442,  441,  440,  439,  438,  437,  436,  435,  434,  433,
+      432,  431,  430,  429,  428,  425,  424,  423,  420,  419,
+      418,  417,  416,  415,  413,  411,  410,  409,  407,  406,
+      405,  404,  403,  402,  401,  400,  399,  398,  397,  396,
+      395,  394,  393,  392,  391,  390,  388,  387,  386,  385,
+
+      384,  383,  382,  379,  378,  377,  374,  373,  372,  371,
+      370,  369,  368,  367,  366,  365,  364,  363,  362,  361,
+      359,  358,  357,  356,  355,  354,  353,  352,  351,  350,
+      349,  348,  347,  346,  345,  343,  342,  341,  340,  339,
+      338,  337,  336,  335,  334,  333,  332,  331,  330,  329,
+      328,  327,  326,  325,  324,  323,  322,  321,  320,  319,
+      318,  316,  315,  314,  313,  312,  311,  310,  309,  301,
+      300,  298,  297,  296,  295,  294,  293,  288,  286,  285,
+      284,  283,  282,  281,  280,  279,  277,  275,  274,  272,
+      270,  269,  266,  265,  264,  263,  262,  261,  260,  258,
+
+      254,  253,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  242,  241,  240,  239,  238,  237,  236,  235,  234,
+      233,  232,  231,  230,  229,  228,  227,  226,  225,  224,
+      223,  222,  221,  220,  217,  216,  215,  214,  213,  212,
+      211,  210,  209,  207,  206,  204,  203,  201,  199,  198,
+      197,  196,  195,  194,  193,  192,  191,  190,  189,  187,
+      185,  172,  171,  170,  168,  167,  166,  165,  164,  158,
+      156,  155,  154,  153,  152,  151,  150,  149,  148,  145,
+      144,  143,  142,  141,  139,  138,  137,  135,  134,  131,
+      129,  127,  126,  125,  124,  123,  122,  121,  120,  119,
+
+      118,  115,  114,  113,  112,  110,  109,  107,  106,  105,
+      104,  103,  102,  101,  100,   98,   97,   96,   95,   94,
+       93,   91,   90,   89,   88,   87,   86,   85,   83,   82,
+       79,   78,   77,   76,   74,   73,   72,   56,   55,   52,
+       51,   38,   37,   35,   34,   33,   32,   31,   30,   28,
+       20,    8,    7,    3,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775,  775,  775,  775,  775,  775,  775,  775,  775,
+      775,  775
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -916,6 +971,7 @@ static yyconst flex_int16_t yy_chk[1023] =
 
 #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)
@@ -1011,7 +1067,7 @@ swiz_from_char(char c)
    } while(0);
 
 #define YY_EXTRA_TYPE struct asm_parser_state *
-#line 1015 "lex.yy.c"
+#line 1071 "lex.yy.c"
 
 #define INITIAL 0
 
@@ -1257,10 +1313,10 @@ YY_DECL
        register int yy_act;
     struct yyguts_t * yyg = (struct yyguts_t*)yyscanner;
 
-#line 135 "program_lexer.l"
+#line 136 "program_lexer.l"
 
 
-#line 1264 "lex.yy.c"
+#line 1320 "lex.yy.c"
 
     yylval = yylval_param;
 
@@ -1317,13 +1373,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 >= 776 )
                                        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] != 1055 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1349,17 +1405,17 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 137 "program_lexer.l"
+#line 138 "program_lexer.l"
 { return ARBvp_10; }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 138 "program_lexer.l"
+#line 139 "program_lexer.l"
 { return ARBfp_10; }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 139 "program_lexer.l"
+#line 140 "program_lexer.l"
 {
    yylval->integer = at_address;
    return_token_or_IDENTIFIER(require_ARB_vp, ADDRESS);
@@ -1367,813 +1423,983 @@ YY_RULE_SETUP
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 143 "program_lexer.l"
+#line 144 "program_lexer.l"
 { return ALIAS; }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 144 "program_lexer.l"
+#line 145 "program_lexer.l"
 { return ATTRIB; }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 145 "program_lexer.l"
+#line 146 "program_lexer.l"
 { return END; }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 146 "program_lexer.l"
+#line 147 "program_lexer.l"
 { return OPTION; }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 147 "program_lexer.l"
+#line 148 "program_lexer.l"
 { return OUTPUT; }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 148 "program_lexer.l"
+#line 149 "program_lexer.l"
 { return PARAM; }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 149 "program_lexer.l"
+#line 150 "program_lexer.l"
 { yylval->integer = at_temp; return TEMP; }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 151 "program_lexer.l"
+#line 152 "program_lexer.l"
 { return_opcode(             1, VECTOR_OP, ABS, OFF); }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 152 "program_lexer.l"
+#line 153 "program_lexer.l"
 { return_opcode(require_ARB_fp, VECTOR_OP, ABS, ZERO_ONE); }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 153 "program_lexer.l"
+#line 154 "program_lexer.l"
 { return_opcode(             1, BIN_OP, ADD, OFF); }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 154 "program_lexer.l"
+#line 155 "program_lexer.l"
 { return_opcode(require_ARB_fp, BIN_OP, ADD, ZERO_ONE); }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 155 "program_lexer.l"
+#line 156 "program_lexer.l"
 { return_opcode(require_ARB_vp, ARL, ARL, OFF); }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 157 "program_lexer.l"
+#line 158 "program_lexer.l"
 { return_opcode(require_ARB_fp, TRI_OP, CMP, OFF); }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 158 "program_lexer.l"
+#line 159 "program_lexer.l"
 { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 159 "program_lexer.l"
+#line 160 "program_lexer.l"
 { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 160 "program_lexer.l"
+#line 161 "program_lexer.l"
 { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 162 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, DP3, OFF); }
+#line 163 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, DDX, OFF); }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 163 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); }
+#line 164 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, DDX, ZERO_ONE); }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 164 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, DP4, OFF); }
+#line 165 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, DDY, OFF); }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 165 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); }
+#line 166 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, DDY, ZERO_ONE); }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 166 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, DPH, OFF); }
+#line 167 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, DP3, OFF); }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 167 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); }
+#line 168 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 168 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, DST, OFF); }
+#line 169 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, DP4, OFF); }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 169 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); }
+#line 170 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, DP4, ZERO_ONE); }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
 #line 171 "program_lexer.l"
-{ return_opcode(             1, SCALAR_OP, EX2, OFF); }
+{ return_opcode(             1, BIN_OP, DPH, OFF); }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
 #line 172 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, BIN_OP, DPH, ZERO_ONE); }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
 #line 173 "program_lexer.l"
-{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); }
+{ return_opcode(             1, BIN_OP, DST, OFF); }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 175 "program_lexer.l"
-{ return_opcode(             1, VECTOR_OP, FLR, OFF); }
+#line 174 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, DST, ZERO_ONE); }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
 #line 176 "program_lexer.l"
-{ return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); }
+{ return_opcode(             1, SCALAR_OP, EX2, OFF); }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
 #line 177 "program_lexer.l"
-{ return_opcode(             1, VECTOR_OP, FRC, OFF); }
+{ return_opcode(require_ARB_fp, SCALAR_OP, EX2, ZERO_ONE); }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
 #line 178 "program_lexer.l"
-{ return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); }
+{ return_opcode(require_ARB_vp, SCALAR_OP, EXP, OFF); }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
 #line 180 "program_lexer.l"
-{ return_opcode(require_ARB_fp, KIL, KIL, OFF); }
+{ return_opcode(             1, VECTOR_OP, FLR, OFF); }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 182 "program_lexer.l"
-{ return_opcode(             1, VECTOR_OP, LIT, OFF); }
+#line 181 "program_lexer.l"
+{ return_opcode(require_ARB_fp, VECTOR_OP, FLR, ZERO_ONE); }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 183 "program_lexer.l"
-{ return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); }
+#line 182 "program_lexer.l"
+{ return_opcode(             1, VECTOR_OP, FRC, OFF); }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 184 "program_lexer.l"
-{ return_opcode(             1, SCALAR_OP, LG2, OFF); }
+#line 183 "program_lexer.l"
+{ return_opcode(require_ARB_fp, VECTOR_OP, FRC, ZERO_ONE); }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
 #line 185 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, KIL, KIL, OFF); }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 186 "program_lexer.l"
-{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); }
+#line 187 "program_lexer.l"
+{ return_opcode(             1, VECTOR_OP, LIT, OFF); }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 187 "program_lexer.l"
-{ return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); }
+#line 188 "program_lexer.l"
+{ return_opcode(require_ARB_fp, VECTOR_OP, LIT, ZERO_ONE); }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 188 "program_lexer.l"
-{ return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); }
+#line 189 "program_lexer.l"
+{ return_opcode(             1, SCALAR_OP, LG2, OFF); }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
 #line 190 "program_lexer.l"
-{ return_opcode(             1, TRI_OP, MAD, OFF); }
+{ return_opcode(require_ARB_fp, SCALAR_OP, LG2, ZERO_ONE); }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
 #line 191 "program_lexer.l"
-{ return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); }
+{ return_opcode(require_ARB_vp, SCALAR_OP, LOG, OFF); }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
 #line 192 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, MAX, OFF); }
+{ return_opcode(require_ARB_fp, TRI_OP, LRP, OFF); }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
 #line 193 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, TRI_OP, LRP, ZERO_ONE); }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 194 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, MIN, OFF); }
+#line 195 "program_lexer.l"
+{ return_opcode(             1, TRI_OP, MAD, OFF); }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 195 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); }
+#line 196 "program_lexer.l"
+{ return_opcode(require_ARB_fp, TRI_OP, MAD, ZERO_ONE); }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 196 "program_lexer.l"
-{ return_opcode(             1, VECTOR_OP, MOV, OFF); }
+#line 197 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, MAX, OFF); }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 197 "program_lexer.l"
-{ return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); }
+#line 198 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, MAX, ZERO_ONE); }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 198 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, MUL, OFF); }
+#line 199 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, MIN, OFF); }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 199 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); }
+#line 200 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, MIN, ZERO_ONE); }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
 #line 201 "program_lexer.l"
-{ return_opcode(             1, BINSC_OP, POW, OFF); }
+{ return_opcode(             1, VECTOR_OP, MOV, OFF); }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
 #line 202 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 204 "program_lexer.l"
-{ return_opcode(             1, SCALAR_OP, RCP, OFF); }
+#line 203 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, MUL, OFF); }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 205 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); }
+#line 204 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 206 "program_lexer.l"
-{ return_opcode(             1, SCALAR_OP, RSQ, OFF); }
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK2H, OFF); }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
 #line 207 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); }
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK2H, ZERO_ONE); }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 209 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); }
+#line 208 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK2US, OFF); }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 210 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); }
+#line 209 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK2US, ZERO_ONE); }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 211 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, SGE, OFF); }
+#line 210 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK4B, OFF); }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 212 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); }
+#line 211 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK4B, ZERO_ONE); }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 213 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); }
+#line 212 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, OFF); }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 214 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); }
+#line 213 "program_lexer.l"
+{ return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, ZERO_ONE); }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 215 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, SLT, OFF); }
+#line 214 "program_lexer.l"
+{ return_opcode(             1, BINSC_OP, POW, OFF); }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 216 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); }
+#line 215 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
 #line 217 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, SUB, OFF); }
+{ return_opcode(             1, SCALAR_OP, RCP, OFF); }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
 #line 218 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
 #line 219 "program_lexer.l"
-{ return_opcode(             1, SWZ, SWZ, OFF); }
+{ return_opcode(require_NV_fp,  BIN_OP,    RFL, OFF); }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
 #line 220 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); }
+{ return_opcode(require_NV_fp,  BIN_OP,    RFL, ZERO_ONE); }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 222 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); }
+#line 221 "program_lexer.l"
+{ return_opcode(             1, SCALAR_OP, RSQ, OFF); }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 223 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); }
+#line 222 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
 #line 224 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); }
+{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
 #line 225 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); }
+{ return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
 #line 226 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); }
+{ return_opcode(require_NV_fp,  BIN_OP, SEQ, OFF); }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
 #line 227 "program_lexer.l"
-{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); }
+{ return_opcode(require_NV_fp,  BIN_OP, SEQ, ZERO_ONE); }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 229 "program_lexer.l"
-{ return_opcode(             1, BIN_OP, XPD, OFF); }
+#line 228 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SFL, OFF); }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 230 "program_lexer.l"
-{ return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); }
+#line 229 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SFL, ZERO_ONE); }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 232 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
+#line 230 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, SGE, OFF); }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 233 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
+#line 231 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 234 "program_lexer.l"
-{ return PROGRAM; }
+#line 232 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SGT, OFF); }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 235 "program_lexer.l"
-{ return STATE; }
+#line 233 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SGT, ZERO_ONE); }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 236 "program_lexer.l"
-{ return RESULT; }
+#line 234 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 238 "program_lexer.l"
-{ return AMBIENT; }
+#line 235 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 239 "program_lexer.l"
-{ return ATTENUATION; }
+#line 236 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SLE, OFF); }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 240 "program_lexer.l"
-{ return BACK; }
+#line 237 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SLE, ZERO_ONE); }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 241 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, CLIP); }
+#line 238 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, SLT, OFF); }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 242 "program_lexer.l"
-{ return COLOR; }
+#line 239 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 243 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_fp, DEPTH); }
+#line 240 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SNE, OFF); }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 244 "program_lexer.l"
-{ return DIFFUSE; }
+#line 241 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, SNE, ZERO_ONE); }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 245 "program_lexer.l"
-{ return DIRECTION; }
+#line 242 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, STR, OFF); }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 246 "program_lexer.l"
-{ return EMISSION; }
+#line 243 "program_lexer.l"
+{ return_opcode(require_NV_fp,  BIN_OP, STR, ZERO_ONE); }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 247 "program_lexer.l"
-{ return ENV; }
+#line 244 "program_lexer.l"
+{ return_opcode(             1, BIN_OP, SUB, OFF); }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 248 "program_lexer.l"
-{ return EYE; }
+#line 245 "program_lexer.l"
+{ return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 249 "program_lexer.l"
-{ return FOGCOORD; }
+#line 246 "program_lexer.l"
+{ return_opcode(             1, SWZ, SWZ, OFF); }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 250 "program_lexer.l"
-{ return FOG; }
+#line 247 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SWZ, SWZ, ZERO_ONE); }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 251 "program_lexer.l"
-{ return FRONT; }
+#line 249 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 252 "program_lexer.l"
-{ return HALF; }
+#line 250 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 253 "program_lexer.l"
-{ return INVERSE; }
+#line 251 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 254 "program_lexer.l"
-{ return INVTRANS; }
+#line 252 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 255 "program_lexer.l"
-{ return LIGHT; }
+#line 253 "program_lexer.l"
+{ return_opcode(require_NV_fp,  TXD_OP, TXD, OFF); }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 256 "program_lexer.l"
-{ return LIGHTMODEL; }
+#line 254 "program_lexer.l"
+{ return_opcode(require_NV_fp,  TXD_OP, TXD, ZERO_ONE); }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 257 "program_lexer.l"
-{ return LIGHTPROD; }
+#line 255 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 258 "program_lexer.l"
-{ return LOCAL; }
+#line 256 "program_lexer.l"
+{ return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 259 "program_lexer.l"
-{ return MATERIAL; }
+#line 258 "program_lexer.l"
+{ return_opcode(require_NV_fp,  SCALAR_OP, UP2H, OFF); }
        YY_BREAK
 case 106:
 YY_RULE_SETUP
-#line 260 "program_lexer.l"
-{ return MAT_PROGRAM; }
+#line 259 "program_lexer.l"
+{ return_opcode(require_NV_fp,  SCALAR_OP, UP2H, ZERO_ONE); }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 261 "program_lexer.l"
-{ return MATRIX; }
+#line 260 "program_lexer.l"
+{ return_opcode(require_NV_fp,  SCALAR_OP, UP2US, OFF); }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 262 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
+#line 261 "program_lexer.l"
+{ return_opcode(require_NV_fp,  SCALAR_OP, UP2US, ZERO_ONE); }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
 #line 263 "program_lexer.l"
-{ return MODELVIEW; }
+{ return_opcode(require_NV_fp,  TRI_OP, X2D, OFF); }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
 #line 264 "program_lexer.l"
-{ return MVP; }
+{ return_opcode(require_NV_fp,  TRI_OP, X2D, ZERO_ONE); }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
 #line 265 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, NORMAL); }
+{ return_opcode(             1, BIN_OP, XPD, OFF); }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
 #line 266 "program_lexer.l"
-{ return OBJECT; }
+{ return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 267 "program_lexer.l"
-{ return PALETTE; }
+#line 268 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_vp, VERTEX); }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 268 "program_lexer.l"
-{ return PARAMS; }
+#line 269 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, FRAGMENT); }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 269 "program_lexer.l"
-{ return PLANE; }
+#line 270 "program_lexer.l"
+{ return PROGRAM; }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 270 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, POINT); }
+#line 271 "program_lexer.l"
+{ return STATE; }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 271 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, POINTSIZE); }
+#line 272 "program_lexer.l"
+{ return RESULT; }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 272 "program_lexer.l"
-{ return POSITION; }
+#line 274 "program_lexer.l"
+{ return AMBIENT; }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 273 "program_lexer.l"
-{ return PRIMARY; }
+#line 275 "program_lexer.l"
+{ return ATTENUATION; }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 274 "program_lexer.l"
-{ return PROJECTION; }
+#line 276 "program_lexer.l"
+{ return BACK; }
        YY_BREAK
 case 121:
 YY_RULE_SETUP
-#line 275 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_fp, RANGE); }
+#line 277 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, CLIP); }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 276 "program_lexer.l"
-{ return ROW; }
+#line 278 "program_lexer.l"
+{ return COLOR; }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 277 "program_lexer.l"
-{ return SCENECOLOR; }
+#line 279 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_fp, DEPTH); }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 278 "program_lexer.l"
-{ return SECONDARY; }
+#line 280 "program_lexer.l"
+{ return DIFFUSE; }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 279 "program_lexer.l"
-{ return SHININESS; }
+#line 281 "program_lexer.l"
+{ return DIRECTION; }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 280 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, SIZE); }
+#line 282 "program_lexer.l"
+{ return EMISSION; }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 281 "program_lexer.l"
-{ return SPECULAR; }
+#line 283 "program_lexer.l"
+{ return ENV; }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 282 "program_lexer.l"
-{ return SPOT; }
+#line 284 "program_lexer.l"
+{ return EYE; }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 283 "program_lexer.l"
-{ return TEXCOORD; }
+#line 285 "program_lexer.l"
+{ return FOGCOORD; }
        YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 284 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_fp, TEXENV); }
+#line 286 "program_lexer.l"
+{ return FOG; }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 285 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, TEXGEN); }
+#line 287 "program_lexer.l"
+{ return FRONT; }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 286 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
+#line 288 "program_lexer.l"
+{ return HALF; }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 287 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
+#line 289 "program_lexer.l"
+{ return INVERSE; }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 288 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
+#line 290 "program_lexer.l"
+{ return INVTRANS; }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 289 "program_lexer.l"
-{ return TEXTURE; }
+#line 291 "program_lexer.l"
+{ return LIGHT; }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 290 "program_lexer.l"
-{ return TRANSPOSE; }
+#line 292 "program_lexer.l"
+{ return LIGHTMODEL; }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 291 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
+#line 293 "program_lexer.l"
+{ return LIGHTPROD; }
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 292 "program_lexer.l"
-{ return_token_or_DOT(require_ARB_vp, WEIGHT); }
+#line 294 "program_lexer.l"
+{ return LOCAL; }
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 294 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
+#line 295 "program_lexer.l"
+{ return MATERIAL; }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 295 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
+#line 296 "program_lexer.l"
+{ return MAT_PROGRAM; }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 296 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
+#line 297 "program_lexer.l"
+{ return MATRIX; }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 297 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
+#line 298 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, MATRIXINDEX); }
        YY_BREAK
 case 143:
 YY_RULE_SETUP
-#line 298 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
+#line 299 "program_lexer.l"
+{ return MODELVIEW; }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 299 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
+#line 300 "program_lexer.l"
+{ return MVP; }
        YY_BREAK
 case 145:
 YY_RULE_SETUP
-#line 300 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
+#line 301 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, NORMAL); }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 301 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
+#line 302 "program_lexer.l"
+{ return OBJECT; }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 302 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
+#line 303 "program_lexer.l"
+{ return PALETTE; }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 303 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
+#line 304 "program_lexer.l"
+{ return PARAMS; }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 304 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
+#line 305 "program_lexer.l"
+{ return PLANE; }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 305 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
+#line 306 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, POINT); }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 306 "program_lexer.l"
-{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
+#line 307 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, POINTSIZE); }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
 #line 308 "program_lexer.l"
+{ return POSITION; }
+       YY_BREAK
+case 153:
+YY_RULE_SETUP
+#line 309 "program_lexer.l"
+{ return PRIMARY; }
+       YY_BREAK
+case 154:
+YY_RULE_SETUP
+#line 310 "program_lexer.l"
+{ return PROJECTION; }
+       YY_BREAK
+case 155:
+YY_RULE_SETUP
+#line 311 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_fp, RANGE); }
+       YY_BREAK
+case 156:
+YY_RULE_SETUP
+#line 312 "program_lexer.l"
+{ return ROW; }
+       YY_BREAK
+case 157:
+YY_RULE_SETUP
+#line 313 "program_lexer.l"
+{ return SCENECOLOR; }
+       YY_BREAK
+case 158:
+YY_RULE_SETUP
+#line 314 "program_lexer.l"
+{ return SECONDARY; }
+       YY_BREAK
+case 159:
+YY_RULE_SETUP
+#line 315 "program_lexer.l"
+{ return SHININESS; }
+       YY_BREAK
+case 160:
+YY_RULE_SETUP
+#line 316 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, SIZE); }
+       YY_BREAK
+case 161:
+YY_RULE_SETUP
+#line 317 "program_lexer.l"
+{ return SPECULAR; }
+       YY_BREAK
+case 162:
+YY_RULE_SETUP
+#line 318 "program_lexer.l"
+{ return SPOT; }
+       YY_BREAK
+case 163:
+YY_RULE_SETUP
+#line 319 "program_lexer.l"
+{ return TEXCOORD; }
+       YY_BREAK
+case 164:
+YY_RULE_SETUP
+#line 320 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_fp, TEXENV); }
+       YY_BREAK
+case 165:
+YY_RULE_SETUP
+#line 321 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, TEXGEN); }
+       YY_BREAK
+case 166:
+YY_RULE_SETUP
+#line 322 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, TEXGEN_Q); }
+       YY_BREAK
+case 167:
+YY_RULE_SETUP
+#line 323 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, TEXGEN_S); }
+       YY_BREAK
+case 168:
+YY_RULE_SETUP
+#line 324 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, TEXGEN_T); }
+       YY_BREAK
+case 169:
+YY_RULE_SETUP
+#line 325 "program_lexer.l"
+{ return TEXTURE; }
+       YY_BREAK
+case 170:
+YY_RULE_SETUP
+#line 326 "program_lexer.l"
+{ return TRANSPOSE; }
+       YY_BREAK
+case 171:
+YY_RULE_SETUP
+#line 327 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, VTXATTRIB); }
+       YY_BREAK
+case 172:
+YY_RULE_SETUP
+#line 328 "program_lexer.l"
+{ return_token_or_DOT(require_ARB_vp, WEIGHT); }
+       YY_BREAK
+case 173:
+YY_RULE_SETUP
+#line 330 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, TEXTURE_UNIT); }
+       YY_BREAK
+case 174:
+YY_RULE_SETUP
+#line 331 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_1D); }
+       YY_BREAK
+case 175:
+YY_RULE_SETUP
+#line 332 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_2D); }
+       YY_BREAK
+case 176:
+YY_RULE_SETUP
+#line 333 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_3D); }
+       YY_BREAK
+case 177:
+YY_RULE_SETUP
+#line 334 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp, TEX_CUBE); }
+       YY_BREAK
+case 178:
+YY_RULE_SETUP
+#line 335 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_rect, TEX_RECT); }
+       YY_BREAK
+case 179:
+YY_RULE_SETUP
+#line 336 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW1D); }
+       YY_BREAK
+case 180:
+YY_RULE_SETUP
+#line 337 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow, TEX_SHADOW2D); }
+       YY_BREAK
+case 181:
+YY_RULE_SETUP
+#line 338 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_rect, TEX_SHADOWRECT); }
+       YY_BREAK
+case 182:
+YY_RULE_SETUP
+#line 339 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY1D); }
+       YY_BREAK
+case 183:
+YY_RULE_SETUP
+#line 340 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_texarray, TEX_ARRAY2D); }
+       YY_BREAK
+case 184:
+YY_RULE_SETUP
+#line 341 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW1D); }
+       YY_BREAK
+case 185:
+YY_RULE_SETUP
+#line 342 "program_lexer.l"
+{ return_token_or_IDENTIFIER(require_ARB_fp && require_shadow && require_texarray, TEX_ARRAYSHADOW2D); }
+       YY_BREAK
+case 186:
+YY_RULE_SETUP
+#line 344 "program_lexer.l"
 {
    yylval->string = strdup(yytext);
    return IDENTIFIER;
 }
        YY_BREAK
-case 153:
+case 187:
 YY_RULE_SETUP
-#line 313 "program_lexer.l"
+#line 349 "program_lexer.l"
 { return DOT_DOT; }
        YY_BREAK
-case 154:
+case 188:
 YY_RULE_SETUP
-#line 315 "program_lexer.l"
+#line 351 "program_lexer.l"
 {
    yylval->integer = strtol(yytext, NULL, 10);
    return INTEGER;
 }
        YY_BREAK
-case 155:
+case 189:
 YY_RULE_SETUP
-#line 319 "program_lexer.l"
+#line 355 "program_lexer.l"
 {
    yylval->real = strtod(yytext, NULL);
    return REAL;
 }
        YY_BREAK
-case 156:
-/* rule 156 can match eol */
+case 190:
+/* rule 190 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 323 "program_lexer.l"
+#line 359 "program_lexer.l"
 {
    yylval->real = strtod(yytext, NULL);
    return REAL;
 }
        YY_BREAK
-case 157:
+case 191:
 YY_RULE_SETUP
-#line 327 "program_lexer.l"
+#line 363 "program_lexer.l"
 {
    yylval->real = strtod(yytext, NULL);
    return REAL;
 }
        YY_BREAK
-case 158:
+case 192:
 YY_RULE_SETUP
-#line 331 "program_lexer.l"
+#line 367 "program_lexer.l"
 {
    yylval->real = strtod(yytext, NULL);
    return REAL;
 }
        YY_BREAK
-case 159:
+case 193:
 YY_RULE_SETUP
-#line 336 "program_lexer.l"
+#line 372 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_NOOP;
    yylval->swiz_mask.mask = WRITEMASK_XYZW;
    return MASK4;
 }
        YY_BREAK
-case 160:
+case 194:
 YY_RULE_SETUP
-#line 342 "program_lexer.l"
+#line 378 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_XY
@@ -2181,27 +2407,27 @@ YY_RULE_SETUP
    return MASK3;
 }
        YY_BREAK
-case 161:
+case 195:
 YY_RULE_SETUP
-#line 348 "program_lexer.l"
+#line 384 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_XZW;
    return MASK3;
 }
        YY_BREAK
-case 162:
+case 196:
 YY_RULE_SETUP
-#line 353 "program_lexer.l"
+#line 389 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_YZW;
    return MASK3;
 }
        YY_BREAK
-case 163:
+case 197:
 YY_RULE_SETUP
-#line 359 "program_lexer.l"
+#line 395 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_X
@@ -2209,9 +2435,9 @@ YY_RULE_SETUP
    return MASK2;
 }
        YY_BREAK
-case 164:
+case 198:
 YY_RULE_SETUP
-#line 365 "program_lexer.l"
+#line 401 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_Y
@@ -2219,18 +2445,18 @@ YY_RULE_SETUP
    return MASK2;
 }
        YY_BREAK
-case 165:
+case 199:
 YY_RULE_SETUP
-#line 371 "program_lexer.l"
+#line 407 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_ZW;
    return MASK2;
 }
        YY_BREAK
-case 166:
+case 200:
 YY_RULE_SETUP
-#line 377 "program_lexer.l"
+#line 413 "program_lexer.l"
 {
    const unsigned s = swiz_from_char(yytext[1]);
    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
@@ -2238,9 +2464,9 @@ YY_RULE_SETUP
    return MASK1; 
 }
        YY_BREAK
-case 167:
+case 201:
 YY_RULE_SETUP
-#line 384 "program_lexer.l"
+#line 420 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
                                            swiz_from_char(yytext[2]),
@@ -2250,18 +2476,18 @@ YY_RULE_SETUP
    return SWIZZLE;
 }
        YY_BREAK
-case 168:
+case 202:
 YY_RULE_SETUP
-#line 393 "program_lexer.l"
+#line 429 "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 203:
 YY_RULE_SETUP
-#line 399 "program_lexer.l"
+#line 435 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_XY
@@ -2269,27 +2495,27 @@ YY_RULE_SETUP
    return_token_or_DOT(require_ARB_fp, MASK3);
 }
        YY_BREAK
-case 170:
+case 204:
 YY_RULE_SETUP
-#line 405 "program_lexer.l"
+#line 441 "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 205:
 YY_RULE_SETUP
-#line 410 "program_lexer.l"
+#line 446 "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 206:
 YY_RULE_SETUP
-#line 416 "program_lexer.l"
+#line 452 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_X
@@ -2297,9 +2523,9 @@ YY_RULE_SETUP
    return_token_or_DOT(require_ARB_fp, MASK2);
 }
        YY_BREAK
-case 173:
+case 207:
 YY_RULE_SETUP
-#line 422 "program_lexer.l"
+#line 458 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = SWIZZLE_INVAL;
    yylval->swiz_mask.mask = WRITEMASK_Y
@@ -2307,18 +2533,18 @@ YY_RULE_SETUP
    return_token_or_DOT(require_ARB_fp, MASK2);
 }
        YY_BREAK
-case 174:
+case 208:
 YY_RULE_SETUP
-#line 428 "program_lexer.l"
+#line 464 "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 209:
 YY_RULE_SETUP
-#line 434 "program_lexer.l"
+#line 470 "program_lexer.l"
 {
    const unsigned s = swiz_from_char(yytext[1]);
    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(s, s, s, s);
@@ -2326,9 +2552,9 @@ YY_RULE_SETUP
    return_token_or_DOT(require_ARB_fp, MASK1);
 }
        YY_BREAK
-case 176:
+case 210:
 YY_RULE_SETUP
-#line 442 "program_lexer.l"
+#line 478 "program_lexer.l"
 {
    if (require_ARB_vp) {
       return TEXGEN_R;
@@ -2340,9 +2566,9 @@ YY_RULE_SETUP
    }
 }
        YY_BREAK
-case 177:
+case 211:
 YY_RULE_SETUP
-#line 453 "program_lexer.l"
+#line 489 "program_lexer.l"
 {
    yylval->swiz_mask.swizzle = MAKE_SWIZZLE4(swiz_from_char(yytext[1]),
                                            swiz_from_char(yytext[2]),
@@ -2352,15 +2578,15 @@ YY_RULE_SETUP
    return_token_or_DOT(require_ARB_fp, SWIZZLE);
 }
        YY_BREAK
-case 178:
+case 212:
 YY_RULE_SETUP
-#line 462 "program_lexer.l"
+#line 498 "program_lexer.l"
 { return DOT; }
        YY_BREAK
-case 179:
-/* rule 179 can match eol */
+case 213:
+/* rule 213 can match eol */
 YY_RULE_SETUP
-#line 464 "program_lexer.l"
+#line 500 "program_lexer.l"
 {
    yylloc->first_line++;
    yylloc->first_column = 1;
@@ -2369,30 +2595,30 @@ YY_RULE_SETUP
    yylloc->position++;
 }
        YY_BREAK
-case 180:
+case 214:
 YY_RULE_SETUP
-#line 471 "program_lexer.l"
+#line 507 "program_lexer.l"
 /* eat whitespace */ ;
        YY_BREAK
-case 181:
+case 215:
 *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 472 "program_lexer.l"
+#line 508 "program_lexer.l"
 /* eat comments */ ;
        YY_BREAK
-case 182:
+case 216:
 YY_RULE_SETUP
-#line 473 "program_lexer.l"
+#line 509 "program_lexer.l"
 { return yytext[0]; }
        YY_BREAK
-case 183:
+case 217:
 YY_RULE_SETUP
-#line 474 "program_lexer.l"
+#line 510 "program_lexer.l"
 ECHO;
        YY_BREAK
-#line 2396 "lex.yy.c"
+#line 2622 "lex.yy.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2686,7 +2912,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 >= 776 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2715,11 +2941,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 >= 776 )
                        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 == 775);
 
        return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3567,7 +3793,7 @@ void yyfree (void * ptr , yyscan_t yyscanner)
 
 #define YYTABLES_NAME "yytables"
 
-#line 474 "program_lexer.l"
+#line 510 "program_lexer.l"
 
 
 
index c50c7c57399c18c36511e5c89afdad5562c33ed0..62ca9b6db6a48a917518da0366a4287a11909e84 100644 (file)
@@ -29,6 +29,7 @@
 
 #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)
@@ -159,6 +160,10 @@ CMP_SAT   { return_opcode(require_ARB_fp, TRI_OP, CMP, ZERO_ONE); }
 COS       { return_opcode(require_ARB_fp, SCALAR_OP, COS, OFF); }
 COS_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, COS, ZERO_ONE); }
 
+DDX       { return_opcode(require_NV_fp,  VECTOR_OP, DDX, OFF); }
+DDX_SAT   { return_opcode(require_NV_fp,  VECTOR_OP, DDX, ZERO_ONE); }
+DDY       { return_opcode(require_NV_fp,  VECTOR_OP, DDY, OFF); }
+DDY_SAT   { return_opcode(require_NV_fp,  VECTOR_OP, DDY, ZERO_ONE); }
 DP3       { return_opcode(             1, BIN_OP, DP3, OFF); }
 DP3_SAT   { return_opcode(require_ARB_fp, BIN_OP, DP3, ZERO_ONE); }
 DP4       { return_opcode(             1, BIN_OP, DP4, OFF); }
@@ -198,22 +203,44 @@ MOV_SAT   { return_opcode(require_ARB_fp, VECTOR_OP, MOV, ZERO_ONE); }
 MUL       { return_opcode(             1, BIN_OP, MUL, OFF); }
 MUL_SAT   { return_opcode(require_ARB_fp, BIN_OP, MUL, ZERO_ONE); }
 
+PK2H      { return_opcode(require_NV_fp,  VECTOR_OP, PK2H, OFF); }
+PK2H_SAT  { return_opcode(require_NV_fp,  VECTOR_OP, PK2H, ZERO_ONE); }
+PK2US     { return_opcode(require_NV_fp,  VECTOR_OP, PK2US, OFF); }
+PK2US_SAT { return_opcode(require_NV_fp,  VECTOR_OP, PK2US, ZERO_ONE); }
+PK4B      { return_opcode(require_NV_fp,  VECTOR_OP, PK4B, OFF); }
+PK4B_SAT  { return_opcode(require_NV_fp,  VECTOR_OP, PK4B, ZERO_ONE); }
+PK4UB     { return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, OFF); }
+PK4UB_SAT { return_opcode(require_NV_fp,  VECTOR_OP, PK4UB, ZERO_ONE); }
 POW       { return_opcode(             1, BINSC_OP, POW, OFF); }
 POW_SAT   { return_opcode(require_ARB_fp, BINSC_OP, POW, ZERO_ONE); }
 
 RCP       { return_opcode(             1, SCALAR_OP, RCP, OFF); }
 RCP_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, RCP, ZERO_ONE); }
+RFL       { return_opcode(require_NV_fp,  BIN_OP,    RFL, OFF); }
+RFL_SAT   { return_opcode(require_NV_fp,  BIN_OP,    RFL, ZERO_ONE); }
 RSQ       { return_opcode(             1, SCALAR_OP, RSQ, OFF); }
 RSQ_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, RSQ, ZERO_ONE); }
 
 SCS       { return_opcode(require_ARB_fp, SCALAR_OP, SCS, OFF); }
 SCS_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, SCS, ZERO_ONE); }
+SEQ       { return_opcode(require_NV_fp,  BIN_OP, SEQ, OFF); }
+SEQ_SAT   { return_opcode(require_NV_fp,  BIN_OP, SEQ, ZERO_ONE); }
+SFL       { return_opcode(require_NV_fp,  BIN_OP, SFL, OFF); }
+SFL_SAT   { return_opcode(require_NV_fp,  BIN_OP, SFL, ZERO_ONE); }
 SGE       { return_opcode(             1, BIN_OP, SGE, OFF); }
 SGE_SAT   { return_opcode(require_ARB_fp, BIN_OP, SGE, ZERO_ONE); }
+SGT       { return_opcode(require_NV_fp,  BIN_OP, SGT, OFF); }
+SGT_SAT   { return_opcode(require_NV_fp,  BIN_OP, SGT, ZERO_ONE); }
 SIN       { return_opcode(require_ARB_fp, SCALAR_OP, SIN, OFF); }
 SIN_SAT   { return_opcode(require_ARB_fp, SCALAR_OP, SIN, ZERO_ONE); }
+SLE       { return_opcode(require_NV_fp,  BIN_OP, SLE, OFF); }
+SLE_SAT   { return_opcode(require_NV_fp,  BIN_OP, SLE, ZERO_ONE); }
 SLT       { return_opcode(             1, BIN_OP, SLT, OFF); }
 SLT_SAT   { return_opcode(require_ARB_fp, BIN_OP, SLT, ZERO_ONE); }
+SNE       { return_opcode(require_NV_fp,  BIN_OP, SNE, OFF); }
+SNE_SAT   { return_opcode(require_NV_fp,  BIN_OP, SNE, ZERO_ONE); }
+STR       { return_opcode(require_NV_fp,  BIN_OP, STR, OFF); }
+STR_SAT   { return_opcode(require_NV_fp,  BIN_OP, STR, ZERO_ONE); }
 SUB       { return_opcode(             1, BIN_OP, SUB, OFF); }
 SUB_SAT   { return_opcode(require_ARB_fp, BIN_OP, SUB, ZERO_ONE); }
 SWZ       { return_opcode(             1, SWZ, SWZ, OFF); }
@@ -223,9 +250,18 @@ TEX       { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, OFF); }
 TEX_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TEX, ZERO_ONE); }
 TXB       { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, OFF); }
 TXB_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TXB, ZERO_ONE); }
+TXD       { return_opcode(require_NV_fp,  TXD_OP, TXD, OFF); }
+TXD_SAT   { return_opcode(require_NV_fp,  TXD_OP, TXD, ZERO_ONE); }
 TXP       { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, OFF); }
 TXP_SAT   { return_opcode(require_ARB_fp, SAMPLE_OP, TXP, ZERO_ONE); }
 
+UP2H      { return_opcode(require_NV_fp,  SCALAR_OP, UP2H, OFF); }
+UP2H_SAT  { return_opcode(require_NV_fp,  SCALAR_OP, UP2H, ZERO_ONE); }
+UP2US     { return_opcode(require_NV_fp,  SCALAR_OP, UP2US, OFF); }
+UP2US_SAT { return_opcode(require_NV_fp,  SCALAR_OP, UP2US, ZERO_ONE); }
+
+X2D       { return_opcode(require_NV_fp,  TRI_OP, X2D, OFF); }
+X2D_SAT   { return_opcode(require_NV_fp,  TRI_OP, X2D, ZERO_ONE); }
 XPD       { return_opcode(             1, BIN_OP, XPD, OFF); }
 XPD_SAT   { return_opcode(require_ARB_fp, BIN_OP, XPD, ZERO_ONE); }
 
index 5c604c2fd1f06d8aebad9f4b46b8185c0025684d..4108374652e052bcc3ece416cfd206b59007bd99 100644 (file)
@@ -216,90 +216,91 @@ static struct asm_instruction *asm_instruction_ctor(gl_inst_opcode op,
      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 = 312,
-     POINTSIZE = 313,
-     POSITION = 314,
-     PRIMARY = 315,
-     PROGRAM = 316,
-     PROJECTION = 317,
-     RANGE = 318,
-     RESULT = 319,
-     ROW = 320,
-     SCENECOLOR = 321,
-     SECONDARY = 322,
-     SHININESS = 323,
-     SIZE = 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 = 313,
+     POINTSIZE = 314,
+     POSITION = 315,
+     PRIMARY = 316,
+     PROGRAM = 317,
+     PROJECTION = 318,
+     RANGE = 319,
+     RESULT = 320,
+     ROW = 321,
+     SCENECOLOR = 322,
+     SECONDARY = 323,
+     SHININESS = 324,
+     SIZE = 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,
+     MASK4 = 355,
+     MASK3 = 356,
+     MASK2 = 357,
+     MASK1 = 358,
+     SWIZZLE = 359,
+     DOT_DOT = 360,
+     DOT = 361
    };
 #endif
 
@@ -339,7 +340,7 @@ typedef union YYSTYPE
 
 
 /* Line 214 of yacc.c  */
-#line 343 "program_parse.tab.c"
+#line 344 "program_parse.tab.c"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
@@ -370,7 +371,7 @@ extern int yylex(YYSTYPE *yylval_param, YYLTYPE *yylloc_param,
 
 
 /* Line 264 of yacc.c  */
-#line 374 "program_parse.tab.c"
+#line 375 "program_parse.tab.c"
 
 #ifdef short
 # undef short
@@ -590,7 +591,7 @@ union yyalloc
 #define YYLAST   340
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  115
+#define YYNTOKENS  116
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  134
 /* YYNRULES -- Number of rules.  */
@@ -600,7 +601,7 @@ union yyalloc
 
 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   360
+#define YYMAXUTOK   361
 
 #define YYTRANSLATE(YYX)                                               \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -612,15 +613,15 @@ static const yytype_uint8 yytranslate[] =
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,   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,
+       2,     2,     2,   111,   108,   112,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     2,     2,     2,     2,   107,
+       2,   113,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     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,   109,     2,   110,     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,   114,     2,   115,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -644,7 +645,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
 };
 
 #if YYDEBUG
@@ -684,80 +685,80 @@ static const yytype_uint16 yyprhs[] =
 /* 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,   209,    -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
+     117,     0,    -1,   118,   119,   121,    12,    -1,     3,    -1,
+       4,    -1,   119,   120,    -1,    -1,     8,    99,   107,    -1,
+     121,   122,    -1,    -1,   123,   107,    -1,   159,   107,    -1,
+     124,    -1,   125,    -1,   126,    -1,   127,    -1,   128,    -1,
+     129,    -1,   130,    -1,   131,    -1,   136,    -1,   132,    -1,
+     133,    -1,    19,   140,   108,   137,    -1,    18,   139,   108,
+     138,    -1,    16,   139,   108,   137,    -1,    14,   139,   108,
+     137,   108,   137,    -1,    13,   139,   108,   138,   108,   138,
+      -1,    17,   139,   108,   138,   108,   138,   108,   138,    -1,
+      15,   139,   108,   138,   108,   134,   108,   135,    -1,    20,
+     138,    -1,    83,   244,    -1,    84,    -1,    85,    -1,    86,
+      -1,    87,    -1,    88,    -1,    89,    -1,    90,    -1,    91,
+      -1,    92,    -1,    93,    -1,    94,    -1,    95,    -1,    21,
+     139,   108,   144,   108,   141,    -1,   230,   144,   156,    -1,
+     230,   144,   157,    -1,   145,   158,    -1,   153,   155,    -1,
+     142,   108,   142,   108,   142,   108,   142,    -1,   230,   143,
+      -1,    23,    -1,    99,    -1,    99,    -1,   161,    -1,   146,
+     109,   147,   110,    -1,   175,    -1,   237,    -1,    99,    -1,
+      99,    -1,   148,    -1,   149,    -1,    23,    -1,   153,   154,
+     150,    -1,    -1,   111,   151,    -1,   112,   152,    -1,    23,
+      -1,    23,    -1,    99,    -1,   103,    -1,   103,    -1,   103,
+      -1,   103,    -1,   100,    -1,   104,    -1,    -1,   100,    -1,
+     101,    -1,   102,    -1,   103,    -1,    -1,   160,    -1,   167,
+      -1,   231,    -1,   233,    -1,   236,    -1,   249,    -1,     7,
+      99,   113,   161,    -1,    96,   162,    -1,    38,   166,    -1,
+      60,    -1,    98,   164,    -1,    53,    -1,    29,   242,    -1,
+      37,    -1,    74,   243,    -1,    50,   109,   165,   110,    -1,
+      97,   109,   163,   110,    -1,    23,    -1,    -1,   109,   165,
+     110,    -1,    23,    -1,    60,    -1,    29,   242,    -1,    37,
+      -1,    74,   243,    -1,   168,    -1,   169,    -1,    10,    99,
+     171,    -1,    10,    99,   109,   170,   110,   172,    -1,    -1,
+      23,    -1,   113,   174,    -1,   113,   114,   173,   115,    -1,
+     176,    -1,   173,   108,   176,    -1,   178,    -1,   214,    -1,
+     224,    -1,   178,    -1,   214,    -1,   225,    -1,   177,    -1,
+     215,    -1,   224,    -1,   178,    -1,    73,   202,    -1,    73,
+     179,    -1,    73,   181,    -1,    73,   184,    -1,    73,   186,
+      -1,    73,   192,    -1,    73,   188,    -1,    73,   195,    -1,
+      73,   197,    -1,    73,   199,    -1,    73,   201,    -1,    73,
+     213,    -1,    47,   241,   180,    -1,   190,    -1,    33,    -1,
+      69,    -1,    43,   109,   191,   110,   182,    -1,   190,    -1,
+      60,    -1,    26,    -1,    72,   183,    -1,    40,    -1,    32,
+      -1,    44,   185,    -1,    25,    -1,   241,    67,    -1,    45,
+     109,   191,   110,   241,   187,    -1,   190,    -1,    75,   245,
+     189,    -1,    29,    -1,    25,    -1,    31,    -1,    71,    -1,
+      23,    -1,    76,   243,   193,   194,    -1,    35,    -1,    54,
+      -1,    79,    -1,    80,    -1,    78,    -1,    77,    -1,    36,
+     196,    -1,    29,    -1,    56,    -1,    28,   109,   198,   110,
+      57,    -1,    23,    -1,    58,   200,    -1,    70,    -1,    26,
+      -1,   204,    66,   109,   207,   110,    -1,   204,   203,    -1,
+      -1,    66,   109,   207,   105,   207,   110,    -1,    49,   208,
+     205,    -1,    -1,   206,    -1,    41,    -1,    82,    -1,    42,
+      -1,    23,    -1,    51,   209,    -1,    63,    -1,    52,    -1,
+      81,   243,    -1,    55,   109,   211,   110,    -1,    48,   109,
+     212,   110,    -1,    -1,   210,    -1,    23,    -1,    23,    -1,
+      23,    -1,    30,    64,    -1,   218,    -1,   221,    -1,   216,
+      -1,   219,    -1,    62,    34,   109,   217,   110,    -1,   222,
+      -1,   222,   105,   222,    -1,    62,    34,   109,   222,   110,
+      -1,    62,    46,   109,   220,   110,    -1,   223,    -1,   223,
+     105,   223,    -1,    62,    46,   109,   223,   110,    -1,    23,
+      -1,    23,    -1,   226,    -1,   228,    -1,   227,    -1,   228,
+      -1,   229,    -1,    24,    -1,    23,    -1,   114,   229,   115,
+      -1,   114,   229,   108,   229,   115,    -1,   114,   229,   108,
+     229,   108,   229,   115,    -1,   114,   229,   108,   229,   108,
+     229,   108,   229,   115,    -1,   230,    24,    -1,   230,    23,
+      -1,   111,    -1,   112,    -1,    -1,    -1,    11,   232,   235,
+      -1,    -1,     5,   234,   235,    -1,   235,   108,    99,    -1,
+      99,    -1,     9,    99,   113,   237,    -1,    65,    60,    -1,
+      65,    37,    -1,    65,   238,    -1,    65,    59,    -1,    65,
+      74,   243,    -1,    65,    30,    -1,    29,   239,   240,    -1,
+      -1,    39,    -1,    27,    -1,    -1,    61,    -1,    68,    -1,
+      -1,    39,    -1,    27,    -1,    -1,    61,    -1,    68,    -1,
+      -1,   109,   246,   110,    -1,    -1,   109,   247,   110,    -1,
+      -1,   109,   248,   110,    -1,    23,    -1,    23,    -1,    23,
+      -1,     6,    99,   113,    99,    -1
 };
 
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
@@ -801,9 +802,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", "POINTSIZE", "POSITION",
@@ -875,41 +876,41 @@ 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,    59,    44,    91,
+      93,    43,    45,    61,   123,   125
 };
 # endif
 
 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_uint8 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,   116,   117,   118,   118,   119,   119,   120,   121,   121,
+     122,   122,   123,   123,   124,   124,   124,   124,   124,   124,
+     124,   125,   125,   126,   127,   128,   129,   130,   131,   132,
+     133,   134,   135,   135,   135,   135,   135,   135,   135,   135,
+     135,   135,   135,   135,   136,   137,   138,   139,   140,   141,
+     142,   143,   143,   144,   144,   144,   144,   145,   145,   146,
+     147,   147,   148,   149,   150,   150,   150,   151,   152,   153,
+     154,   155,   156,   157,   157,   157,   157,   158,   158,   158,
+     158,   158,   159,   159,   159,   159,   159,   159,   160,   161,
+     161,   162,   162,   162,   162,   162,   162,   162,   162,   163,
+     164,   164,   165,   166,   166,   166,   166,   167,   167,   168,
+     169,   170,   170,   171,   172,   173,   173,   174,   174,   174,
+     175,   175,   175,   176,   176,   176,   177,   177,   178,   178,
+     178,   178,   178,   178,   178,   178,   178,   178,   178,   179,
+     180,   180,   180,   181,   182,   182,   182,   182,   182,   183,
+     184,   185,   185,   186,   187,   188,   189,   190,   190,   190,
+     191,   192,   193,   193,   194,   194,   194,   194,   195,   196,
+     196,   197,   198,   199,   200,   200,   201,   202,   203,   203,
+     204,   205,   205,   206,   206,   206,   207,   208,   208,   208,
+     208,   208,   208,   209,   209,   210,   211,   212,   213,   214,
+     214,   215,   215,   216,   217,   217,   218,   219,   220,   220,
+     221,   222,   223,   224,   224,   225,   225,   226,   227,   227,
+     228,   228,   228,   228,   229,   229,   230,   230,   230,   232,
+     231,   234,   233,   235,   235,   236,   237,   237,   237,   237,
+     237,   237,   238,   239,   239,   239,   240,   240,   240,   241,
+     241,   241,   242,   242,   242,   243,   243,   244,   244,   245,
+     245,   246,   247,   248,   249
 };
 
 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
@@ -1019,50 +1020,50 @@ static const yytype_int16 yydefgoto[] =
 #define YYPACT_NINF -334
 static const yytype_int16 yypact[] =
 {
-     134,  -334,  -334,    41,  -334,  -334,    47,   -49,  -334,   169,
-      20,  -334,    34,    61,    75,   115,  -334,  -334,   -19,   -19,
-     -19,   -19,   -19,   -19,   116,    44,   -19,  -334,   109,  -334,
+     134,  -334,  -334,    41,  -334,  -334,    47,   -50,  -334,   169,
+      19,  -334,    33,    60,    74,   114,  -334,  -334,   -20,   -20,
+     -20,   -20,   -20,   -20,   115,    43,   -20,  -334,   108,  -334,
     -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
-     110,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
-     119,   106,   107,   111,   -22,   119,     4,  -334,     5,   104,
-    -334,   113,   114,   117,   118,   120,  -334,   121,   124,  -334,
-    -334,  -334,   -15,   122,  -334,  -334,  -334,   123,   133,   -14,
-     158,   210,   -11,  -334,   123,    21,  -334,  -334,  -334,  -334,
-     127,  -334,    44,  -334,  -334,  -334,  -334,  -334,    44,    44,
-      44,    44,    44,    44,  -334,  -334,  -334,  -334,     1,    68,
-      87,    -1,   132,    44,    65,   135,  -334,  -334,  -334,  -334,
-    -334,  -334,  -334,  -334,  -334,   -15,   141,  -334,  -334,  -334,
-    -334,   136,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   149,
-    -334,  -334,    58,   219,  -334,   137,   139,   -15,   140,  -334,
-     142,  -334,  -334,    74,  -334,  -334,   127,  -334,   143,   144,
-     145,   179,    15,   146,    81,   147,    83,    89,     0,   148,
-     127,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
-    -334,   183,  -334,    74,  -334,   150,  -334,  -334,   127,   151,
-     152,  -334,    43,  -334,  -334,  -334,  -334,   -10,   155,  -334,
-     138,  -334,  -334,  -334,  -334,  -334,  -334,   154,    44,    44,
-     162,   175,    44,  -334,  -334,  -334,  -334,   243,   245,   246,
-    -334,  -334,  -334,  -334,   247,  -334,  -334,  -334,  -334,   204,
-     247,    -4,   163,   250,  -334,   165,  -334,   127,    27,  -334,
-    -334,  -334,   252,   248,    18,   167,  -334,   255,  -334,   256,
-     255,  -334,    44,  -334,  -334,   170,  -334,  -334,   178,    44,
-     168,  -334,  -334,  -334,  -334,  -334,  -334,   174,   176,   177,
-    -334,   180,  -334,   181,  -334,   182,  -334,   184,  -334,   185,
+     109,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
+     118,   105,   106,   110,   -23,   118,     3,  -334,     4,   103,
+    -334,   112,   113,   116,   117,   119,  -334,   120,   123,  -334,
+    -334,  -334,   -16,   121,  -334,  -334,  -334,   122,   132,   -15,
+     157,   209,   -12,  -334,   122,    20,  -334,  -334,  -334,  -334,
+     131,  -334,    43,  -334,  -334,  -334,  -334,  -334,    43,    43,
+      43,    43,    43,    43,  -334,  -334,  -334,  -334,     0,    67,
+      86,    -2,   133,    43,    64,   135,  -334,  -334,  -334,  -334,
+    -334,  -334,  -334,  -334,  -334,   -16,   136,  -334,  -334,  -334,
+    -334,   129,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   148,
+    -334,  -334,    57,   218,  -334,   137,   138,   -16,   139,  -334,
+     140,  -334,  -334,    73,  -334,  -334,   131,  -334,   141,   142,
+     143,   179,    14,   144,    80,   145,    82,    88,    -1,   146,
+     131,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
+    -334,   183,  -334,    73,  -334,   147,  -334,  -334,   131,   149,
+     150,  -334,    42,  -334,  -334,  -334,  -334,   -11,   152,  -334,
+     151,  -334,  -334,  -334,  -334,  -334,  -334,   153,    43,    43,
+     154,   182,    43,  -334,  -334,  -334,  -334,   239,   244,   245,
+    -334,  -334,  -334,  -334,   246,  -334,  -334,  -334,  -334,   203,
+     246,    -5,   162,   249,  -334,   164,  -334,   131,    26,  -334,
+    -334,  -334,   251,   247,    17,   166,  -334,   254,  -334,   255,
+     254,  -334,    43,  -334,  -334,   170,  -334,  -334,   176,    43,
+     167,  -334,  -334,  -334,  -334,  -334,  -334,   173,   175,   177,
+    -334,   174,  -334,   178,  -334,   180,  -334,   181,  -334,   184,
     -334,  -334,  -334,  -334,  -334,  -334,  -334,   263,  -334,  -334,
-    -334,   264,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   186,
-    -334,  -334,  -334,  -334,   131,   265,  -334,   188,  -334,   189,
-     190,    46,  -334,  -334,   101,  -334,   193,    -5,    -7,   266,
-    -334,   108,    44,  -334,  -334,   236,    14,    83,  -334,   192,
-    -334,   194,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   195,
-    -334,  -334,  -334,    44,  -334,   280,   283,  -334,    44,  -334,
-    -334,  -334,    78,    87,    49,  -334,  -334,  -334,  -334,  -334,
-    -334,  -334,  -334,   197,  -334,  -334,  -334,  -334,  -334,  -334,
+    -334,   264,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   185,
+    -334,  -334,  -334,  -334,   130,   266,  -334,   187,  -334,   188,
+     189,    45,  -334,  -334,   100,  -334,   192,    -6,    -8,   269,
+    -334,   107,    43,  -334,  -334,   236,    13,    82,  -334,   191,
+    -334,   193,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   194,
+    -334,  -334,  -334,    43,  -334,   279,   282,  -334,    43,  -334,
+    -334,  -334,    77,    86,    48,  -334,  -334,  -334,  -334,  -334,
+    -334,  -334,  -334,   196,  -334,  -334,  -334,  -334,  -334,  -334,
     -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
-    -334,  -334,   276,  -334,  -334,     6,  -334,  -334,  -334,    51,
-    -334,  -334,  -334,  -334,   201,   202,   203,  -334,   244,    -7,
-    -334,  -334,  -334,  -334,  -334,  -334,    44,  -334,    44,   243,
-     245,   205,  -334,  -334,   198,   207,   206,   212,   211,   217,
-     265,  -334,    44,  -334,   243,  -334,   245,   -17,  -334,  -334,
-    -334,   265,   213,  -334
+    -334,  -334,   275,  -334,  -334,     5,  -334,  -334,  -334,    50,
+    -334,  -334,  -334,  -334,   200,   201,   202,  -334,   243,    -8,
+    -334,  -334,  -334,  -334,  -334,  -334,    43,  -334,    43,   239,
+     244,   204,  -334,  -334,   197,   206,   205,   211,   210,   216,
+     266,  -334,    43,  -334,   239,  -334,   244,   -18,  -334,  -334,
+    -334,   266,   212,  -334
 };
 
 /* YYPGOTO[NTERM-NUM].  */
@@ -1072,15 +1073,15 @@ static const yytype_int16 yypgoto[] =
     -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
     -334,   -94,   -88,   126,  -334,  -334,  -333,  -334,   -91,  -334,
     -334,  -334,  -334,  -334,  -334,  -334,  -334,   128,  -334,  -334,
-    -334,  -334,  -334,  -334,  -334,   249,  -334,  -334,  -334,    73,
+    -334,  -334,  -334,  -334,  -334,   248,  -334,  -334,  -334,    78,
     -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
-     -72,  -334,   -81,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
+     -76,  -334,   -81,  -334,  -334,  -334,  -334,  -334,  -334,  -334,
     -334,  -334,  -334,  -334,  -307,    99,  -334,  -334,  -334,  -334,
-    -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   -23,  -334,
-    -334,  -303,  -334,  -334,  -334,  -334,  -334,  -334,   251,  -334,
-    -334,  -334,  -334,  -334,  -334,  -334,  -327,  -316,   253,  -334,
-    -334,  -334,   -80,  -110,   -82,  -334,  -334,  -334,  -334,   277,
-    -334,   254,  -334,  -334,  -334,  -161,   153,  -146,  -334,  -334,
+    -334,  -334,  -334,  -334,  -334,  -334,  -334,  -334,   -22,  -334,
+    -334,  -303,  -334,  -334,  -334,  -334,  -334,  -334,   250,  -334,
+    -334,  -334,  -334,  -334,  -334,  -334,  -327,  -316,   252,  -334,
+    -334,  -334,   -80,  -110,   -82,  -334,  -334,  -334,  -334,   278,
+    -334,   256,  -334,  -334,  -334,  -161,   155,  -146,  -334,  -334,
     -334,  -334,  -334,  -334
 };
 
@@ -1114,56 +1115,56 @@ static const yytype_int16 yytable[] =
      373,   374,   375,    93,    94,    95,    96,   333,   334,   335,
      336,   345,   346,    54,    66,    74,    75,    76,    78,    79,
       98,    99,    56,    80,   100,   101,   104,   102,   103,   125,
-     126,   127,   130,   389,   377,   143,   139,   357,   137,   199,
-     -59,   206,   220,   197,   208,   200,   209,   211,   245,   212,
-     260,   217,   218,   219,   224,   230,   242,   267,   247,   249,
-     250,   139,   259,   262,   265,   270,   317,   272,   274,   276,
-     278,   287,   288,   291,   298,   305,   300,   306,   308,   312,
-     313,   318,   319,   321,   322,   328,   330,   338,   362,   323,
-     324,   325,   378,   326,   327,   332,   414,   340,   341,   342,
+     126,   127,   130,   389,   377,   199,   139,   357,   137,   200,
+     143,   206,   -59,   220,   197,   208,   209,   211,   212,   245,
+     217,   218,   219,   224,   230,   242,   247,   265,   249,   250,
+     259,   139,   270,   262,   260,   267,   317,   272,   274,   276,
+     278,   287,   288,   291,   298,   305,   300,   306,   308,   313,
+     312,   318,   319,   321,   323,   322,   328,   330,   324,   338,
+     325,   326,   362,   378,   327,   332,   414,   340,   341,   342,
      348,   386,   390,   387,   388,   392,   401,   402,   408,   411,
      409,   410,   421,   420,   422,   423,   424,   139,   357,   137,
-     425,   426,   433,   310,   139,   258,   317,   413,   128,   279,
-     398,     0,    84,   134,   129,   135,   246,     0,     0,     0,
+     425,   426,   433,   413,   139,   258,   317,   128,   310,   279,
+       0,   398,   134,    84,   135,     0,   129,     0,   246,     0,
      317
 };
 
 static const yytype_int16 yycheck[] =
 {
-      82,    82,    82,   113,    92,   166,   100,    22,    23,   103,
-     156,    99,    22,   101,   102,   348,    98,    22,   100,   326,
-      24,   103,    37,    37,   170,    25,    30,    28,    32,    28,
-      24,   113,    28,    29,   125,    36,    30,    36,    24,    25,
-      36,     0,   188,    28,    30,    64,    61,    26,    49,    98,
-      61,    52,    34,    39,    61,     8,   147,    72,    59,    38,
-      59,    72,    58,    59,    68,    72,    70,    40,    41,    69,
-      55,    53,    73,    59,    73,   408,    70,    73,   385,    98,
-      95,    95,   409,    98,    70,    71,   108,   104,    98,   422,
-     112,   237,   109,    98,   410,    96,    97,   424,   113,   110,
-     111,    33,   113,   110,   111,    24,   113,    26,    81,    26,
-     426,    33,   107,    45,    27,   209,    29,   420,    60,    38,
-     208,    38,    35,    45,   212,    67,   106,   209,   431,    42,
-      43,    44,    98,    46,    60,    48,    47,     3,     4,    50,
-      51,    67,   252,    54,    57,    19,    20,    21,    22,    23,
-     107,    62,    26,   107,   110,   111,   107,   114,   107,    98,
-     114,    74,    75,   114,    99,   114,   327,   102,   103,    80,
-     252,    22,    23,    98,     5,     6,     7,   259,     9,    10,
+      82,    82,    82,   113,    92,   166,   100,    23,    24,   103,
+     156,    99,    23,   101,   102,   348,    98,    23,   100,   326,
+      25,   103,    38,    38,   170,    26,    31,    29,    33,    29,
+      25,   113,    29,    30,   125,    37,    31,    37,    25,    26,
+      37,     0,   188,    29,    31,    65,    62,    27,    50,    99,
+      62,    53,    35,    40,    62,     8,   147,    73,    60,    39,
+      60,    73,    59,    60,    69,    73,    71,    41,    42,    70,
+      56,    54,    74,    60,    74,   408,    71,    74,   385,    99,
+      96,    96,   409,    99,    71,    72,   109,   105,    99,   422,
+     113,   237,   110,    99,   410,    97,    98,   424,   114,   111,
+     112,    34,   114,   111,   112,    25,   114,    27,    82,    27,
+     426,    34,   108,    46,    28,   209,    30,   420,    61,    39,
+     208,    39,    36,    46,   212,    68,   107,   209,   431,    43,
+      44,    45,    99,    47,    61,    49,    48,     3,     4,    51,
+      52,    68,   252,    55,    58,    19,    20,    21,    22,    23,
+     108,    63,    26,   108,   111,   112,   108,   115,   108,    99,
+     115,    75,    76,   115,   100,   115,   327,   103,   104,    81,
+     252,    23,    24,    99,     5,     6,     7,   259,     9,    10,
       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    83,    84,    85,    86,    87,    88,    89,    90,    91,
-      92,    93,    94,    99,   100,   101,   102,    76,    77,    78,
-      79,   110,   111,    98,    98,   106,   106,    98,   112,   112,
-     107,   107,    64,   112,   107,   107,   102,   107,   107,   107,
-     107,    98,    22,   343,   322,   108,   318,   318,   318,    98,
-     108,    22,    63,   108,   107,   109,   107,   107,    65,   107,
-     112,   108,   108,   108,   108,   108,   108,    82,   108,   108,
-     108,   343,   107,   109,   102,    22,   348,    22,    22,    22,
-      66,   108,    22,   108,    22,   108,    28,    22,    22,   109,
-     102,   113,   108,   107,   107,    22,    22,    22,    22,   109,
-     109,   109,    56,   109,   109,   109,   406,   109,   109,   109,
-     107,   109,    22,   109,   109,    22,   109,    31,   107,    65,
-     108,   108,   114,   108,   107,   109,   104,   399,   399,   399,
-     109,   104,   109,   250,   406,   197,   408,   399,    79,   230,
-     353,    -1,    55,    82,    80,    82,   183,    -1,    -1,    -1,
+      21,    84,    85,    86,    87,    88,    89,    90,    91,    92,
+      93,    94,    95,   100,   101,   102,   103,    77,    78,    79,
+      80,   111,   112,    99,    99,   107,   107,    99,   113,   113,
+     108,   108,    65,   113,   108,   108,   103,   108,   108,   108,
+     108,    99,    23,   343,   322,    99,   318,   318,   318,   110,
+     109,    23,   109,    64,   109,   108,   108,   108,   108,    66,
+     109,   109,   109,   109,   109,   109,   109,   103,   109,   109,
+     108,   343,    23,   110,   113,    83,   348,    23,    23,    23,
+      67,   109,    23,   109,    23,   109,    29,    23,    23,   103,
+     110,   114,   109,   108,   110,   108,    23,    23,   110,    23,
+     110,   110,    23,    57,   110,   110,   406,   110,   110,   110,
+     108,   110,    23,   110,   110,    23,   110,    32,   108,    66,
+     109,   109,   115,   109,   108,   110,   105,   399,   399,   399,
+     110,   105,   110,   399,   406,   197,   408,    79,   250,   230,
+      -1,   353,    82,    55,    82,    -1,    80,    -1,   183,    -1,
      422
 };
 
@@ -1171,50 +1172,50 @@ static const yytype_int16 yycheck[] =
    symbol of state STATE-NUM.  */
 static const yytype_uint8 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,    22,   208,
-     209,   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,   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,   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,   117,   118,     0,   119,     8,   120,   121,
+      99,     5,     6,     7,     9,    10,    11,    12,    13,    14,
+      15,    16,    17,    18,    19,    20,    21,   122,   123,   124,
+     125,   126,   127,   128,   129,   130,   131,   132,   133,   136,
+     159,   160,   167,   168,   169,   231,   233,   236,   249,   107,
+     234,    99,    99,    99,    99,   232,    65,    99,   139,   145,
+     237,   139,   139,   139,   139,   139,    99,   140,   153,   111,
+     112,   138,   230,   139,   107,   107,    99,   235,   113,   113,
+     113,   109,   113,   171,   235,    29,    30,    37,    59,    60,
+      74,   238,   108,   100,   101,   102,   103,   158,   108,   108,
+     108,   108,   108,   108,   103,   155,    23,    24,    38,    62,
+      73,    96,    99,   114,   144,   146,   161,   175,   178,   214,
+     218,   221,   225,   227,   228,   108,   108,    99,   161,   237,
+      23,   170,   174,   178,   214,   224,   226,   228,   229,   230,
+      27,    39,   239,   109,   243,   138,   137,   230,   138,   137,
+     138,   138,   137,    29,    37,    60,    74,   166,    34,    46,
+      28,    30,    36,    43,    44,    45,    47,    49,    58,    75,
+      76,   179,   181,   184,   186,   188,   192,   195,   197,   199,
+     201,   204,   213,    29,    37,    50,    53,    60,    74,    97,
+      98,   162,   229,   100,   103,   104,   157,   109,   144,    99,
+     110,    23,    24,    61,    68,   240,    23,   246,   108,   108,
+     144,   108,   108,    61,    68,   242,   243,   109,   109,   109,
+      64,    29,    56,   196,   109,    25,    27,    39,   185,   241,
+     109,   241,    48,    51,    52,    55,    63,    81,   208,    26,
+      70,   200,   109,   245,   243,    66,   242,   109,   243,   109,
+     109,   164,   108,   115,    23,   147,   148,   149,   153,   108,
+     113,   172,   110,   138,   137,   103,   156,    83,   134,   138,
+      23,   222,    23,   223,    23,   198,    23,   191,    67,   191,
+      25,    31,    33,    69,    71,   180,   190,   109,    23,   209,
+     210,   109,   243,    41,    42,    82,   205,   206,    23,   248,
+      29,   189,    35,    54,   193,   109,    23,   165,    23,   163,
+     165,   229,   110,   103,   154,   141,   142,   230,   114,   109,
+     244,   108,   108,   110,   110,   110,   110,   110,    23,   212,
+      23,   211,   110,    77,    78,    79,    80,   194,    23,   207,
+     110,   110,   110,   108,   115,   111,   112,   150,   108,    23,
+      99,   143,    62,    73,   173,   176,   177,   178,   215,   216,
+     219,   224,    23,   247,    84,    85,    86,    87,    88,    89,
+      90,    91,    92,    93,    94,    95,   135,   138,    57,    26,
+      40,    60,    72,   182,   190,   241,   110,   110,   110,   229,
+      23,   151,    23,   152,   142,    34,    46,   202,   204,   108,
+     115,   110,    32,   183,   187,   190,   108,   115,   108,   109,
+     109,    66,   203,   176,   229,   142,   217,   222,   220,   223,
+     109,   115,   108,   110,   105,   110,   105,   207,   142,   222,
+     223,   105,   207,   110
 };
 
 #define yyerrok                (yyerrstatus = 0)
@@ -4573,7 +4574,7 @@ yyreduce:
 
 
 /* Line 1455 of yacc.c  */
-#line 4577 "program_parse.tab.c"
+#line 4578 "program_parse.tab.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
index de08fb747f23f680db6b2b47cb2debb46868c59d..7ab6f6b23efe568712226fbe78f8618925980fac 100644 (file)
      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 = 312,
-     POINTSIZE = 313,
-     POSITION = 314,
-     PRIMARY = 315,
-     PROGRAM = 316,
-     PROJECTION = 317,
-     RANGE = 318,
-     RESULT = 319,
-     ROW = 320,
-     SCENECOLOR = 321,
-     SECONDARY = 322,
-     SHININESS = 323,
-     SIZE = 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 = 313,
+     POINTSIZE = 314,
+     POSITION = 315,
+     PRIMARY = 316,
+     PROGRAM = 317,
+     PROJECTION = 318,
+     RANGE = 319,
+     RESULT = 320,
+     ROW = 321,
+     SCENECOLOR = 322,
+     SECONDARY = 323,
+     SHININESS = 324,
+     SIZE = 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,
+     MASK4 = 355,
+     MASK3 = 356,
+     MASK2 = 357,
+     MASK1 = 358,
+     SWIZZLE = 359,
+     DOT_DOT = 360,
+     DOT = 361
    };
 #endif
 
@@ -181,7 +182,7 @@ typedef union YYSTYPE
 
 
 /* Line 1676 of yacc.c  */
-#line 185 "program_parse.tab.h"
+#line 186 "program_parse.tab.h"
 } YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
index e2e83e484f5e8cfea92347b232f6ed19c67facf4..9dab00c3856819e2617e7b9fd8a8c3d0c0d953b0 100644 (file)
@@ -142,7 +142,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