[D3DCOMPILER_43] Sync with Wine Staging 4.18. CORE-16441
authorAmine Khaldi <amine.khaldi@reactos.org>
Sat, 26 Oct 2019 12:00:33 +0000 (13:00 +0100)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sat, 26 Oct 2019 12:00:33 +0000 (13:00 +0100)
30 files changed:
dll/directx/wine/d3dcompiler_43/CMakeLists.txt
dll/directx/wine/d3dcompiler_43/asmparser.c
dll/directx/wine/d3dcompiler_43/asmshader.l
dll/directx/wine/d3dcompiler_43/asmshader.tab.c
dll/directx/wine/d3dcompiler_43/asmshader.tab.h
dll/directx/wine/d3dcompiler_43/asmshader.y
dll/directx/wine/d3dcompiler_43/asmshader.yy.c
dll/directx/wine/d3dcompiler_43/asmshader.yy.h [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/blob.c
dll/directx/wine/d3dcompiler_43/bytecodewriter.c
dll/directx/wine/d3dcompiler_43/compiler.c
dll/directx/wine/d3dcompiler_43/d3dcompiler_private.h
dll/directx/wine/d3dcompiler_43/hlsl.l
dll/directx/wine/d3dcompiler_43/hlsl.tab.c
dll/directx/wine/d3dcompiler_43/hlsl.tab.h
dll/directx/wine/d3dcompiler_43/hlsl.y
dll/directx/wine/d3dcompiler_43/hlsl.yy.c
dll/directx/wine/d3dcompiler_43/hlsl.yy.h [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/main.c
dll/directx/wine/d3dcompiler_43/ppl.l [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/ppl.yy.c [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/ppl.yy.h [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/ppy.tab.c [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/ppy.tab.h [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/ppy.y [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/preproc.c [new file with mode: 0644]
dll/directx/wine/d3dcompiler_43/reflection.c
dll/directx/wine/d3dcompiler_43/utils.c
dll/directx/wine/d3dcompiler_43/wpp_private.h [new file with mode: 0644]
media/doc/README.WINE

index 7c5cb42..a036c7e 100644 (file)
@@ -8,14 +8,11 @@ spec2def(d3dcompiler_43.dll d3dcompiler_43.spec ADD_IMPORTLIB)
 
 list(APPEND SOURCE
     asmparser.c
-    asmshader.tab.c
-    asmshader.yy.c
     blob.c
     bytecodewriter.c
     compiler.c
-    hlsl.tab.c
-    hlsl.yy.c
     main.c
+    preproc.c
     reflection.c
     utils.c
     precomp.h
@@ -23,6 +20,12 @@ list(APPEND SOURCE
 
 add_library(d3dcompiler_43 MODULE
     ${SOURCE}
+    asmshader.tab.c
+    asmshader.yy.c
+    hlsl.tab.c
+    hlsl.yy.c
+    ppy.tab.c
+    ppl.yy.c
     version.rc
     ${CMAKE_CURRENT_BINARY_DIR}/d3dcompiler_43.def)
 
@@ -32,11 +35,13 @@ set_source_files_properties(
     asmshader.yy.c
     hlsl.tab.c
     hlsl.yy.c
+    ppy.tab.c
+    ppl.yy.c
     PROPERTIES COMPILE_FLAGS "-UREACTOS_SOURCE_DIR -DREACTOS_SOURCE_DIR=\"\\\".\\\"\"")
 
 set_module_type(d3dcompiler_43 win32dll)
 target_link_libraries(d3dcompiler_43 dx10guid uuid wine wpp)
 add_importlibs(d3dcompiler_43 msvcrt kernel32 ntdll)
 add_dependencies(d3dcompiler_43 d3d_idl_headers)
-#add_pch(d3dcompiler_43 precomp.h SOURCE)
+add_pch(d3dcompiler_43 precomp.h SOURCE)
 add_cd_file(TARGET d3dcompiler_43 DESTINATION reactos/system32 FOR all)
index 2d167de..16e86d9 100644 (file)
@@ -20,8 +20,6 @@
  *
  */
 
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #include "d3dcompiler_private.h"
index 35a4048..63ecddd 100644 (file)
@@ -20,8 +20,6 @@
  */
 
 %{
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #include "d3dcompiler_private.h"
index 53e79a2..4ac2b9d 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.4.1.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0.2"
+#define YYBISON_VERSION "3.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 #define yylval          asmshader_lval
 #define yychar          asmshader_char
 
-/* Copy the first part of user declarations.  */
-#line 22 "asmshader.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 22 "asmshader.y"
+
+#include "wine/debug.h"
 
 #include "d3dcompiler_private.h"
 
@@ -78,13 +84,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
 
 struct asm_parser asm_ctx;
 
-void asmparser_message(struct asm_parser *ctx, const char *fmt, ...)
+void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt, ...)
 {
-    va_list args;
+    __ms_va_list args;
 
-    va_start(args, fmt);
+    __ms_va_start(args, fmt);
     compilation_message(&ctx->messages, fmt, args);
-    va_end(args);
+    __ms_va_end(args);
 }
 
 static void asmshader_error(char const *s) {
@@ -114,13 +120,17 @@ int asmshader_lex(void);
 
 
 
-#line 122 "asmshader.tab.c" /* yacc.c:339  */
+#line 124 "asmshader.tab.c"
 
 # ifndef YY_NULLPTR
-#  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULLPTR nullptr
+#  if defined __cplusplus
+#   if 201103L <= __cplusplus
+#    define YY_NULLPTR nullptr
+#   else
+#    define YY_NULLPTR 0
+#   endif
 #  else
-#   define YY_NULLPTR 0
+#   define YY_NULLPTR ((void*)0)
 #  endif
 # endif
 
@@ -132,7 +142,10 @@ int asmshader_lex(void);
 # define YYERROR_VERBOSE 0
 #endif
 
-
+/* Use api.header.include to #include this header
+   instead of duplicating it here.  */
+#ifndef YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED
+# define YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -311,10 +324,9 @@ extern int asmshader_debug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 70 "asmshader.y" /* yacc.c:355  */
+#line 68 "asmshader.y"
 
     struct {
         float           val;
@@ -349,8 +361,10 @@ union YYSTYPE
     struct rel_reg      rel_reg;
     struct src_regs     sregs;
 
-#line 357 "asmshader.tab.c" /* yacc.c:355  */
+#line 365 "asmshader.tab.c"
+
 };
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -360,11 +374,9 @@ extern YYSTYPE asmshader_lval;
 
 int asmshader_parse (void);
 
+#endif /* !YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED  */
 
 
-/* Copy the second part of user declarations.  */
-
-#line 372 "asmshader.tab.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -385,13 +397,13 @@ typedef signed char yytype_int8;
 #ifdef YYTYPE_UINT16
 typedef YYTYPE_UINT16 yytype_uint16;
 #else
-typedef unsigned short int yytype_uint16;
+typedef unsigned short yytype_uint16;
 #endif
 
 #ifdef YYTYPE_INT16
 typedef YYTYPE_INT16 yytype_int16;
 #else
-typedef short int yytype_int16;
+typedef short yytype_int16;
 #endif
 
 #ifndef YYSIZE_T
@@ -403,7 +415,7 @@ typedef short int yytype_int16;
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
-#  define YYSIZE_T unsigned int
+#  define YYSIZE_T unsigned
 # endif
 #endif
 
@@ -439,15 +451,6 @@ typedef short int yytype_int16;
 # define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
 #endif
 
-#if !defined _Noreturn \
-     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
-# if defined _MSC_VER && 1200 <= _MSC_VER
-#  define _Noreturn __declspec (noreturn)
-# else
-#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
-# endif
-#endif
-
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
 # define YYUSE(E) ((void) (E))
@@ -455,7 +458,7 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
 /* Suppress an incorrect diagnostic about yylval being uninitialized.  */
 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
     _Pragma ("GCC diagnostic push") \
@@ -475,6 +478,8 @@ typedef short int yytype_int16;
 #endif
 
 
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
 /* The parser invokes alloca or malloc; define the necessary symbols.  */
@@ -617,16 +622,16 @@ union yyalloc
 /* YYNSTATES -- Number of states.  */
 #define YYNSTATES  552
 
-/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
-   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   417
 
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, with out-of-bounds checking.  */
 #define YYTRANSLATE(YYX)                                                \
-  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+  ((unsigned) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
-   as returned by yylex, without out-of-bounds checking.  */
+   as returned by yylex.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -677,29 +682,29 @@ static const yytype_uint8 yytranslate[] =
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   311,   311,   316,   321,   326,   331,   336,   341,   346,
-     351,   356,   361,   366,   371,   376,   382,   383,   388,   392,
-     397,   403,   408,   413,   418,   423,   428,   433,   438,   443,
-     448,   453,   458,   463,   468,   473,   478,   483,   488,   493,
-     498,   503,   508,   513,   518,   523,   528,   533,   538,   543,
-     548,   553,   558,   563,   575,   587,   610,   633,   655,   677,
-     687,   702,   709,   716,   720,   724,   728,   733,   738,   743,
-     748,   753,   758,   763,   768,   773,   778,   783,   788,   793,
-     798,   803,   808,   813,   818,   823,   828,   833,   838,   843,
-     849,   854,   859,   864,   875,   880,   885,   890,   895,   900,
-     905,   910,   915,   920,   925,   930,   935,   940,   945,   950,
-     955,   960,   965,   970,   975,   980,   987,   995,  1004,  1008,
-    1012,  1016,  1022,  1028,  1034,  1038,  1042,  1048,  1052,  1056,
-    1060,  1064,  1068,  1072,  1076,  1082,  1088,  1093,  1100,  1115,
-    1121,  1137,  1141,  1163,  1168,  1182,  1186,  1199,  1204,  1209,
-    1214,  1219,  1224,  1229,  1234,  1239,  1245,  1250,  1261,  1269,
-    1277,  1285,  1310,  1324,  1338,  1348,  1352,  1357,  1365,  1373,
-    1381,  1390,  1399,  1409,  1413,  1417,  1421,  1425,  1429,  1434,
-    1438,  1443,  1447,  1453,  1457,  1461,  1465,  1469,  1473,  1479,
-    1483,  1489,  1495,  1501,  1507,  1513,  1517,  1521,  1525,  1529,
-    1533,  1538,  1539,  1540,  1541,  1542,  1543,  1545,  1551,  1557,
-    1563,  1569,  1575,  1581,  1587,  1593,  1599,  1605,  1611,  1617,
-    1623,  1630,  1634,  1639,  1643,  1647,  1651,  1656,  1664
+       0,   309,   309,   314,   319,   324,   329,   334,   339,   344,
+     349,   354,   359,   364,   369,   374,   380,   381,   386,   390,
+     395,   401,   406,   411,   416,   421,   426,   431,   436,   441,
+     446,   451,   456,   461,   466,   471,   476,   481,   486,   491,
+     496,   501,   506,   511,   516,   521,   526,   531,   536,   541,
+     546,   551,   556,   561,   573,   585,   608,   631,   653,   675,
+     685,   700,   707,   714,   718,   722,   726,   731,   736,   741,
+     746,   751,   756,   761,   766,   771,   776,   781,   786,   791,
+     796,   801,   806,   811,   816,   821,   826,   831,   836,   841,
+     847,   852,   857,   862,   873,   878,   883,   888,   893,   898,
+     903,   908,   913,   918,   923,   928,   933,   938,   943,   948,
+     953,   958,   963,   968,   973,   978,   985,   993,  1002,  1006,
+    1010,  1014,  1020,  1026,  1032,  1036,  1040,  1046,  1050,  1054,
+    1058,  1062,  1066,  1070,  1074,  1080,  1086,  1091,  1098,  1113,
+    1119,  1135,  1139,  1161,  1166,  1180,  1184,  1197,  1202,  1207,
+    1212,  1217,  1222,  1227,  1232,  1237,  1243,  1248,  1259,  1267,
+    1275,  1283,  1308,  1322,  1336,  1346,  1350,  1355,  1363,  1371,
+    1379,  1388,  1397,  1407,  1411,  1415,  1419,  1423,  1427,  1432,
+    1436,  1441,  1445,  1451,  1455,  1459,  1463,  1467,  1471,  1477,
+    1481,  1487,  1493,  1499,  1505,  1511,  1515,  1519,  1523,  1527,
+    1531,  1536,  1537,  1538,  1539,  1540,  1541,  1543,  1549,  1555,
+    1561,  1567,  1573,  1579,  1585,  1591,  1597,  1603,  1609,  1615,
+    1621,  1628,  1632,  1637,  1641,  1645,  1649,  1654,  1662
 };
 #endif
 
@@ -1218,22 +1223,22 @@ static const yytype_uint8 yyr2[] =
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
-#define YYBACKUP(Token, Value)                                  \
-do                                                              \
-  if (yychar == YYEMPTY)                                        \
-    {                                                           \
-      yychar = (Token);                                         \
-      yylval = (Value);                                         \
-      YYPOPSTACK (yylen);                                       \
-      yystate = *yyssp;                                         \
-      goto yybackup;                                            \
-    }                                                           \
-  else                                                          \
-    {                                                           \
-      yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                  \
-    }                                                           \
-while (0)
+#define YYBACKUP(Token, Value)                                    \
+  do                                                              \
+    if (yychar == YYEMPTY)                                        \
+      {                                                           \
+        yychar = (Token);                                         \
+        yylval = (Value);                                         \
+        YYPOPSTACK (yylen);                                       \
+        yystate = *yyssp;                                         \
+        goto yybackup;                                            \
+      }                                                           \
+    else                                                          \
+      {                                                           \
+        yyerror (YY_("syntax error: cannot back up")); \
+        YYERROR;                                                  \
+      }                                                           \
+  while (0)
 
 /* Error token number */
 #define YYTERROR        1
@@ -1273,37 +1278,37 @@ do {                                                                      \
 } while (0)
 
 
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT.  |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO.  |
+`-----------------------------------*/
 
 static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  FILE *yyo = yyoutput;
-  YYUSE (yyo);
+  FILE *yyoutput = yyo;
+  YYUSE (yyoutput);
   if (!yyvaluep)
     return;
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
-    YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+    YYPRINT (yyo, yytoknum[yytype], *yyvaluep);
 # endif
   YYUSE (yytype);
 }
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO.  |
+`---------------------------*/
 
 static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo, int yytype, YYSTYPE const * const yyvaluep)
 {
-  YYFPRINTF (yyoutput, "%s %s (",
+  YYFPRINTF (yyo, "%s %s (",
              yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
-  yy_symbol_value_print (yyoutput, yytype, yyvaluep);
-  YYFPRINTF (yyoutput, ")");
+  yy_symbol_value_print (yyo, yytype, yyvaluep);
+  YYFPRINTF (yyo, ")");
 }
 
 /*------------------------------------------------------------------.
@@ -1337,7 +1342,7 @@ do {                                                            \
 static void
 yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
-  unsigned long int yylno = yyrline[yyrule];
+  unsigned long yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
@@ -1348,7 +1353,7 @@ yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
       yy_symbol_print (stderr,
                        yystos[yyssp[yyi + 1 - yynrhs]],
-                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                       &yyvsp[(yyi + 1) - (yynrhs)]
                                               );
       YYFPRINTF (stderr, "\n");
     }
@@ -1452,7 +1457,10 @@ yytnamerr (char *yyres, const char *yystr)
           case '\\':
             if (*++yyp != '\\')
               goto do_not_strip_quotes;
-            /* Fall through.  */
+            else
+              goto append;
+
+          append:
           default:
             if (yyres)
               yyres[yyn] = *yyp;
@@ -1470,7 +1478,7 @@ yytnamerr (char *yyres, const char *yystr)
   if (! yyres)
     return yystrlen (yystr);
 
-  return yystpcpy (yyres, yystr) - yyres;
+  return (YYSIZE_T) (yystpcpy (yyres, yystr) - yyres);
 }
 # endif
 
@@ -1548,10 +1556,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yyarg[yycount++] = yytname[yyx];
                 {
                   YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]);
-                  if (! (yysize <= yysize1
-                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                  if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+                    yysize = yysize1;
+                  else
                     return 2;
-                  yysize = yysize1;
                 }
               }
         }
@@ -1563,6 +1571,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
       case N:                               \
         yyformat = S;                       \
       break
+    default: /* Avoid compiler warnings. */
       YYCASE_(0, YY_("syntax error"));
       YYCASE_(1, YY_("syntax error, unexpected %s"));
       YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
@@ -1574,9 +1583,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 
   {
     YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
-    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+    if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
+      yysize = yysize1;
+    else
       return 2;
-    yysize = yysize1;
   }
 
   if (*yymsg_alloc < yysize)
@@ -1702,23 +1712,33 @@ yyparse (void)
   yychar = YYEMPTY; /* Cause a token to be read.  */
   goto yysetstate;
 
+
 /*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate.  |
+| yynewstate -- push a new state, which is found in yystate.  |
 `------------------------------------------------------------*/
- yynewstate:
+yynewstate:
   /* In all cases, when you get here, the value and location stacks
      have just been pushed.  So pushing a state here evens the stacks.  */
   yyssp++;
 
- yysetstate:
-  *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yynewstate -- set current state (the top of the stack) to yystate.  |
+`--------------------------------------------------------------------*/
+yysetstate:
+  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+  YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+  *yyssp = (yytype_int16) yystate;
 
   if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+    goto yyexhaustedlab;
+#else
     {
       /* Get the current used size of the three stacks, in elements.  */
-      YYSIZE_T yysize = yyssp - yyss + 1;
+      YYSIZE_T yysize = (YYSIZE_T) (yyssp - yyss + 1);
 
-#ifdef yyoverflow
+# if defined yyoverflow
       {
         /* Give user a chance to reallocate the stack.  Use copies of
            these so that the &'s don't force the real ones into
@@ -1734,14 +1754,10 @@ yyparse (void)
                     &yyss1, yysize * sizeof (*yyssp),
                     &yyvs1, yysize * sizeof (*yyvsp),
                     &yystacksize);
-
         yyss = yyss1;
         yyvs = yyvs1;
       }
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
-      goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
         goto yyexhaustedlab;
@@ -1757,35 +1773,33 @@ yyparse (void)
           goto yyexhaustedlab;
         YYSTACK_RELOCATE (yyss_alloc, yyss);
         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
-#  undef YYSTACK_RELOCATE
+# undef YYSTACK_RELOCATE
         if (yyss1 != yyssa)
           YYSTACK_FREE (yyss1);
       }
 # endif
-#endif /* no yyoverflow */
 
       yyssp = yyss + yysize - 1;
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                  (unsigned long int) yystacksize));
+                  (unsigned long) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
         YYABORT;
     }
-
-  YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
 
   if (yystate == YYFINAL)
     YYACCEPT;
 
   goto yybackup;
 
+
 /*-----------.
 | yybackup.  |
 `-----------*/
 yybackup:
-
   /* Do appropriate processing given the current state.  Read a
      lookahead token if we need one and don't already have one.  */
 
@@ -1843,7 +1857,6 @@ yybackup:
   YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
   YY_IGNORE_MAYBE_UNINITIALIZED_END
-
   goto yynewstate;
 
 
@@ -1858,7 +1871,7 @@ yydefault:
 
 
 /*-----------------------------.
-| yyreduce -- Do a reduction.  |
+| yyreduce -- do a reduction.  |
 `-----------------------------*/
 yyreduce:
   /* yyn is the number of a rule to reduce with.  */
@@ -1878,455 +1891,455 @@ yyreduce:
   YY_REDUCE_PRINT (yyn);
   switch (yyn)
     {
-        case 2:
-#line 312 "asmshader.y" /* yacc.c:1646  */
+  case 2:
+#line 310 "asmshader.y"
     {
                             asm_ctx.funcs->end(&asm_ctx);
                         }
-#line 1891 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1900 "asmshader.tab.c"
     break;
 
   case 3:
-#line 317 "asmshader.y" /* yacc.c:1646  */
+#line 315 "asmshader.y"
     {
                             TRACE("Vertex shader 1.0\n");
                             create_vs10_parser(&asm_ctx);
                         }
-#line 1900 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1909 "asmshader.tab.c"
     break;
 
   case 4:
-#line 322 "asmshader.y" /* yacc.c:1646  */
+#line 320 "asmshader.y"
     {
                             TRACE("Vertex shader 1.1\n");
                             create_vs11_parser(&asm_ctx);
                         }
-#line 1909 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1918 "asmshader.tab.c"
     break;
 
   case 5:
-#line 327 "asmshader.y" /* yacc.c:1646  */
+#line 325 "asmshader.y"
     {
                             TRACE("Vertex shader 2.0\n");
                             create_vs20_parser(&asm_ctx);
                         }
-#line 1918 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1927 "asmshader.tab.c"
     break;
 
   case 6:
-#line 332 "asmshader.y" /* yacc.c:1646  */
+#line 330 "asmshader.y"
     {
                             TRACE("Vertex shader 2.x\n");
                             create_vs2x_parser(&asm_ctx);
                         }
-#line 1927 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1936 "asmshader.tab.c"
     break;
 
   case 7:
-#line 337 "asmshader.y" /* yacc.c:1646  */
+#line 335 "asmshader.y"
     {
                             TRACE("Vertex shader 3.0\n");
                             create_vs30_parser(&asm_ctx);
                         }
-#line 1936 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1945 "asmshader.tab.c"
     break;
 
   case 8:
-#line 342 "asmshader.y" /* yacc.c:1646  */
+#line 340 "asmshader.y"
     {
                             TRACE("Pixel  shader 1.0\n");
                             create_ps10_parser(&asm_ctx);
                         }
-#line 1945 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1954 "asmshader.tab.c"
     break;
 
   case 9:
-#line 347 "asmshader.y" /* yacc.c:1646  */
+#line 345 "asmshader.y"
     {
                             TRACE("Pixel  shader 1.1\n");
                             create_ps11_parser(&asm_ctx);
                         }
-#line 1954 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1963 "asmshader.tab.c"
     break;
 
   case 10:
-#line 352 "asmshader.y" /* yacc.c:1646  */
+#line 350 "asmshader.y"
     {
                             TRACE("Pixel  shader 1.2\n");
                             create_ps12_parser(&asm_ctx);
                         }
-#line 1963 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1972 "asmshader.tab.c"
     break;
 
   case 11:
-#line 357 "asmshader.y" /* yacc.c:1646  */
+#line 355 "asmshader.y"
     {
                             TRACE("Pixel  shader 1.3\n");
                             create_ps13_parser(&asm_ctx);
                         }
-#line 1972 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1981 "asmshader.tab.c"
     break;
 
   case 12:
-#line 362 "asmshader.y" /* yacc.c:1646  */
+#line 360 "asmshader.y"
     {
                             TRACE("Pixel  shader 1.4\n");
                             create_ps14_parser(&asm_ctx);
                         }
-#line 1981 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1990 "asmshader.tab.c"
     break;
 
   case 13:
-#line 367 "asmshader.y" /* yacc.c:1646  */
+#line 365 "asmshader.y"
     {
                             TRACE("Pixel  shader 2.0\n");
                             create_ps20_parser(&asm_ctx);
                         }
-#line 1990 "asmshader.tab.c" /* yacc.c:1646  */
+#line 1999 "asmshader.tab.c"
     break;
 
   case 14:
-#line 372 "asmshader.y" /* yacc.c:1646  */
+#line 370 "asmshader.y"
     {
                             TRACE("Pixel  shader 2.x\n");
                             create_ps2x_parser(&asm_ctx);
                         }
-#line 1999 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2008 "asmshader.tab.c"
     break;
 
   case 15:
-#line 377 "asmshader.y" /* yacc.c:1646  */
+#line 375 "asmshader.y"
     {
                             TRACE("Pixel  shader 3.0\n");
                             create_ps30_parser(&asm_ctx);
                         }
-#line 2008 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2017 "asmshader.tab.c"
     break;
 
   case 17:
-#line 384 "asmshader.y" /* yacc.c:1646  */
+#line 382 "asmshader.y"
     {
                                 /* Nothing to do */
                             }
-#line 2016 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2025 "asmshader.tab.c"
     break;
 
   case 18:
-#line 389 "asmshader.y" /* yacc.c:1646  */
+#line 387 "asmshader.y"
     {
 
                             }
-#line 2024 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2033 "asmshader.tab.c"
     break;
 
   case 19:
-#line 393 "asmshader.y" /* yacc.c:1646  */
+#line 391 "asmshader.y"
     {
                                 TRACE("predicate\n");
                                 asm_ctx.funcs->predicate(&asm_ctx, &(yyvsp[-1].reg));
                             }
-#line 2033 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2042 "asmshader.tab.c"
     break;
 
   case 20:
-#line 398 "asmshader.y" /* yacc.c:1646  */
+#line 396 "asmshader.y"
     {
                                 TRACE("coissue\n");
                                 asm_ctx.funcs->coissue(&asm_ctx);
                             }
-#line 2042 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2051 "asmshader.tab.c"
     break;
 
   case 21:
-#line 404 "asmshader.y" /* yacc.c:1646  */
+#line 402 "asmshader.y"
     {
                                 TRACE("ADD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ADD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2051 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2060 "asmshader.tab.c"
     break;
 
   case 22:
-#line 409 "asmshader.y" /* yacc.c:1646  */
+#line 407 "asmshader.y"
     {
                                 TRACE("NOP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_NOP, 0, 0, 0, 0, 0, 0);
                             }
-#line 2060 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2069 "asmshader.tab.c"
     break;
 
   case 23:
-#line 414 "asmshader.y" /* yacc.c:1646  */
+#line 412 "asmshader.y"
     {
                                 TRACE("MOV\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MOV, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2069 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2078 "asmshader.tab.c"
     break;
 
   case 24:
-#line 419 "asmshader.y" /* yacc.c:1646  */
+#line 417 "asmshader.y"
     {
                                 TRACE("SUB\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SUB, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2078 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2087 "asmshader.tab.c"
     break;
 
   case 25:
-#line 424 "asmshader.y" /* yacc.c:1646  */
+#line 422 "asmshader.y"
     {
                                 TRACE("MAD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MAD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2087 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2096 "asmshader.tab.c"
     break;
 
   case 26:
-#line 429 "asmshader.y" /* yacc.c:1646  */
+#line 427 "asmshader.y"
     {
                                 TRACE("MUL\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MUL, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2096 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2105 "asmshader.tab.c"
     break;
 
   case 27:
-#line 434 "asmshader.y" /* yacc.c:1646  */
+#line 432 "asmshader.y"
     {
                                 TRACE("RCP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_RCP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2105 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2114 "asmshader.tab.c"
     break;
 
   case 28:
-#line 439 "asmshader.y" /* yacc.c:1646  */
+#line 437 "asmshader.y"
     {
                                 TRACE("RSQ\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_RSQ, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2114 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2123 "asmshader.tab.c"
     break;
 
   case 29:
-#line 444 "asmshader.y" /* yacc.c:1646  */
+#line 442 "asmshader.y"
     {
                                 TRACE("DP3\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DP3, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2123 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2132 "asmshader.tab.c"
     break;
 
   case 30:
-#line 449 "asmshader.y" /* yacc.c:1646  */
+#line 447 "asmshader.y"
     {
                                 TRACE("DP4\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DP4, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2132 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2141 "asmshader.tab.c"
     break;
 
   case 31:
-#line 454 "asmshader.y" /* yacc.c:1646  */
+#line 452 "asmshader.y"
     {
                                 TRACE("MIN\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MIN, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2141 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2150 "asmshader.tab.c"
     break;
 
   case 32:
-#line 459 "asmshader.y" /* yacc.c:1646  */
+#line 457 "asmshader.y"
     {
                                 TRACE("MAX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MAX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2150 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2159 "asmshader.tab.c"
     break;
 
   case 33:
-#line 464 "asmshader.y" /* yacc.c:1646  */
+#line 462 "asmshader.y"
     {
                                 TRACE("SLT\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SLT, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2159 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2168 "asmshader.tab.c"
     break;
 
   case 34:
-#line 469 "asmshader.y" /* yacc.c:1646  */
+#line 467 "asmshader.y"
     {
                                 TRACE("SGE\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SGE, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2168 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2177 "asmshader.tab.c"
     break;
 
   case 35:
-#line 474 "asmshader.y" /* yacc.c:1646  */
+#line 472 "asmshader.y"
     {
                                 TRACE("ABS\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ABS, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2177 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2186 "asmshader.tab.c"
     break;
 
   case 36:
-#line 479 "asmshader.y" /* yacc.c:1646  */
+#line 477 "asmshader.y"
     {
                                 TRACE("EXP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_EXP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2186 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2195 "asmshader.tab.c"
     break;
 
   case 37:
-#line 484 "asmshader.y" /* yacc.c:1646  */
+#line 482 "asmshader.y"
     {
                                 TRACE("LOG\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LOG, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2195 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2204 "asmshader.tab.c"
     break;
 
   case 38:
-#line 489 "asmshader.y" /* yacc.c:1646  */
+#line 487 "asmshader.y"
     {
                                 TRACE("LOGP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LOGP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2204 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2213 "asmshader.tab.c"
     break;
 
   case 39:
-#line 494 "asmshader.y" /* yacc.c:1646  */
+#line 492 "asmshader.y"
     {
                                 TRACE("EXPP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_EXPP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2213 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2222 "asmshader.tab.c"
     break;
 
   case 40:
-#line 499 "asmshader.y" /* yacc.c:1646  */
+#line 497 "asmshader.y"
     {
                                 TRACE("DST\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DST, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2222 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2231 "asmshader.tab.c"
     break;
 
   case 41:
-#line 504 "asmshader.y" /* yacc.c:1646  */
+#line 502 "asmshader.y"
     {
                                 TRACE("LRP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LRP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2231 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2240 "asmshader.tab.c"
     break;
 
   case 42:
-#line 509 "asmshader.y" /* yacc.c:1646  */
+#line 507 "asmshader.y"
     {
                                 TRACE("FRC\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_FRC, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2240 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2249 "asmshader.tab.c"
     break;
 
   case 43:
-#line 514 "asmshader.y" /* yacc.c:1646  */
+#line 512 "asmshader.y"
     {
                                 TRACE("POW\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_POW, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2249 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2258 "asmshader.tab.c"
     break;
 
   case 44:
-#line 519 "asmshader.y" /* yacc.c:1646  */
+#line 517 "asmshader.y"
     {
                                 TRACE("CRS\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_CRS, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2258 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2267 "asmshader.tab.c"
     break;
 
   case 45:
-#line 524 "asmshader.y" /* yacc.c:1646  */
+#line 522 "asmshader.y"
     {
                                 TRACE("SGN\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SGN, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2267 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2276 "asmshader.tab.c"
     break;
 
   case 46:
-#line 529 "asmshader.y" /* yacc.c:1646  */
+#line 527 "asmshader.y"
     {
                                 TRACE("NRM\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_NRM, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2276 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2285 "asmshader.tab.c"
     break;
 
   case 47:
-#line 534 "asmshader.y" /* yacc.c:1646  */
+#line 532 "asmshader.y"
     {
                                 TRACE("SINCOS\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SINCOS, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2285 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2294 "asmshader.tab.c"
     break;
 
   case 48:
-#line 539 "asmshader.y" /* yacc.c:1646  */
+#line 537 "asmshader.y"
     {
                                 TRACE("M4x4\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_M4x4, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2294 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2303 "asmshader.tab.c"
     break;
 
   case 49:
-#line 544 "asmshader.y" /* yacc.c:1646  */
+#line 542 "asmshader.y"
     {
                                 TRACE("M4x3\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_M4x3, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2303 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2312 "asmshader.tab.c"
     break;
 
   case 50:
-#line 549 "asmshader.y" /* yacc.c:1646  */
+#line 547 "asmshader.y"
     {
                                 TRACE("M3x4\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_M3x4, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2312 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2321 "asmshader.tab.c"
     break;
 
   case 51:
-#line 554 "asmshader.y" /* yacc.c:1646  */
+#line 552 "asmshader.y"
     {
                                 TRACE("M3x3\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_M3x3, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2321 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2330 "asmshader.tab.c"
     break;
 
   case 52:
-#line 559 "asmshader.y" /* yacc.c:1646  */
+#line 557 "asmshader.y"
     {
                                 TRACE("M3x2\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_M3x2, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2330 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2339 "asmshader.tab.c"
     break;
 
   case 53:
-#line 564 "asmshader.y" /* yacc.c:1646  */
+#line 562 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Output reg declaration\n");
@@ -2338,11 +2351,11 @@ yyreduce:
                                 reg.u.writemask = BWRITERSP_WRITEMASK_ALL;
                                 asm_ctx.funcs->dcl_output(&asm_ctx, (yyvsp[-1].declaration).dclusage, (yyvsp[-1].declaration).regnum, &reg);
                             }
-#line 2346 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2355 "asmshader.tab.c"
     break;
 
   case 54:
-#line 576 "asmshader.y" /* yacc.c:1646  */
+#line 574 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Output reg declaration\n");
@@ -2354,11 +2367,11 @@ yyreduce:
                                 reg.u.writemask = (yyvsp[0].writemask);
                                 asm_ctx.funcs->dcl_output(&asm_ctx, (yyvsp[-2].declaration).dclusage, (yyvsp[-2].declaration).regnum, &reg);
                             }
-#line 2362 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2371 "asmshader.tab.c"
     break;
 
   case 55:
-#line 588 "asmshader.y" /* yacc.c:1646  */
+#line 586 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Input reg declaration\n");
@@ -2381,11 +2394,11 @@ yyreduce:
                                 reg.u.writemask = BWRITERSP_WRITEMASK_ALL;
                                 asm_ctx.funcs->dcl_input(&asm_ctx, (yyvsp[-2].declaration).dclusage, (yyvsp[-2].declaration).regnum, (yyvsp[-1].modshift).mod, &reg);
                             }
-#line 2389 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2398 "asmshader.tab.c"
     break;
 
   case 56:
-#line 611 "asmshader.y" /* yacc.c:1646  */
+#line 609 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Input reg declaration\n");
@@ -2408,11 +2421,11 @@ yyreduce:
                                 reg.u.writemask = (yyvsp[0].writemask);
                                 asm_ctx.funcs->dcl_input(&asm_ctx, (yyvsp[-3].declaration).dclusage, (yyvsp[-3].declaration).regnum, (yyvsp[-2].modshift).mod, &reg);
                             }
-#line 2416 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2425 "asmshader.tab.c"
     break;
 
   case 57:
-#line 634 "asmshader.y" /* yacc.c:1646  */
+#line 632 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Input reg declaration\n");
@@ -2434,11 +2447,11 @@ yyreduce:
                                 reg.u.writemask = BWRITERSP_WRITEMASK_ALL;
                                 asm_ctx.funcs->dcl_input(&asm_ctx, 0, 0, (yyvsp[-1].modshift).mod, &reg);
                             }
-#line 2442 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2451 "asmshader.tab.c"
     break;
 
   case 58:
-#line 656 "asmshader.y" /* yacc.c:1646  */
+#line 654 "asmshader.y"
     {
                                 struct shader_reg reg;
                                 TRACE("Input reg declaration\n");
@@ -2460,11 +2473,11 @@ yyreduce:
                                 reg.u.writemask = (yyvsp[0].writemask);
                                 asm_ctx.funcs->dcl_input(&asm_ctx, 0, 0, (yyvsp[-2].modshift).mod, &reg);
                             }
-#line 2468 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2477 "asmshader.tab.c"
     break;
 
   case 59:
-#line 678 "asmshader.y" /* yacc.c:1646  */
+#line 676 "asmshader.y"
     {
                                 TRACE("Sampler declared\n");
                                 if((yyvsp[-1].modshift).shift != 0) {
@@ -2474,11 +2487,11 @@ yyreduce:
                                 }
                                 asm_ctx.funcs->dcl_sampler(&asm_ctx, (yyvsp[-2].samplertype), (yyvsp[-1].modshift).mod, (yyvsp[0].regnum), asm_ctx.line_no);
                             }
-#line 2482 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2491 "asmshader.tab.c"
     break;
 
   case 60:
-#line 688 "asmshader.y" /* yacc.c:1646  */
+#line 686 "asmshader.y"
     {
                                 TRACE("Sampler declared\n");
                                 if((yyvsp[-1].modshift).shift != 0) {
@@ -2493,301 +2506,301 @@ yyreduce:
                                 }
                                 asm_ctx.funcs->dcl_sampler(&asm_ctx, BWRITERSTT_UNKNOWN, (yyvsp[-1].modshift).mod, (yyvsp[0].regnum), asm_ctx.line_no);
                             }
-#line 2501 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2510 "asmshader.tab.c"
     break;
 
   case 61:
-#line 703 "asmshader.y" /* yacc.c:1646  */
+#line 701 "asmshader.y"
     {
                                 TRACE("Error rule: sampler decl of input reg\n");
                                 asmparser_message(&asm_ctx, "Line %u: Sampler declarations of input regs is not valid\n",
                                                   asm_ctx.line_no);
                                 set_parse_status(&asm_ctx.status,  PARSE_WARN);
                             }
-#line 2512 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2521 "asmshader.tab.c"
     break;
 
   case 62:
-#line 710 "asmshader.y" /* yacc.c:1646  */
+#line 708 "asmshader.y"
     {
                                 TRACE("Error rule: sampler decl of output reg\n");
                                 asmparser_message(&asm_ctx, "Line %u: Sampler declarations of output regs is not valid\n",
                                                   asm_ctx.line_no);
                                 set_parse_status(&asm_ctx.status,  PARSE_WARN);
                             }
-#line 2523 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2532 "asmshader.tab.c"
     break;
 
   case 63:
-#line 717 "asmshader.y" /* yacc.c:1646  */
+#line 715 "asmshader.y"
     {
                                 asm_ctx.funcs->constF(&asm_ctx, (yyvsp[-8].regnum), (yyvsp[-6].immval).val, (yyvsp[-4].immval).val, (yyvsp[-2].immval).val, (yyvsp[0].immval).val);
                             }
-#line 2531 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2540 "asmshader.tab.c"
     break;
 
   case 64:
-#line 721 "asmshader.y" /* yacc.c:1646  */
+#line 719 "asmshader.y"
     {
                                 asm_ctx.funcs->constI(&asm_ctx, (yyvsp[-8].regnum), (yyvsp[-6].immval).val, (yyvsp[-4].immval).val, (yyvsp[-2].immval).val, (yyvsp[0].immval).val);
                             }
-#line 2539 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2548 "asmshader.tab.c"
     break;
 
   case 65:
-#line 725 "asmshader.y" /* yacc.c:1646  */
+#line 723 "asmshader.y"
     {
                                 asm_ctx.funcs->constB(&asm_ctx, (yyvsp[-2].regnum), (yyvsp[0].immbool));
                             }
-#line 2547 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2556 "asmshader.tab.c"
     break;
 
   case 66:
-#line 729 "asmshader.y" /* yacc.c:1646  */
+#line 727 "asmshader.y"
     {
                                 TRACE("REP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_REP, 0, 0, 0, 0, &(yyvsp[0].sregs), 1);
                             }
-#line 2556 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2565 "asmshader.tab.c"
     break;
 
   case 67:
-#line 734 "asmshader.y" /* yacc.c:1646  */
+#line 732 "asmshader.y"
     {
                                 TRACE("ENDREP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ENDREP, 0, 0, 0, 0, 0, 0);
                             }
-#line 2565 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2574 "asmshader.tab.c"
     break;
 
   case 68:
-#line 739 "asmshader.y" /* yacc.c:1646  */
+#line 737 "asmshader.y"
     {
                                 TRACE("IF\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_IF, 0, 0, 0, 0, &(yyvsp[0].sregs), 1);
                             }
-#line 2574 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2583 "asmshader.tab.c"
     break;
 
   case 69:
-#line 744 "asmshader.y" /* yacc.c:1646  */
+#line 742 "asmshader.y"
     {
                                 TRACE("IFC\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_IFC, 0, 0, (yyvsp[-1].comptype), 0, &(yyvsp[0].sregs), 2);
                             }
-#line 2583 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2592 "asmshader.tab.c"
     break;
 
   case 70:
-#line 749 "asmshader.y" /* yacc.c:1646  */
+#line 747 "asmshader.y"
     {
                                 TRACE("ELSE\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ELSE, 0, 0, 0, 0, 0, 0);
                             }
-#line 2592 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2601 "asmshader.tab.c"
     break;
 
   case 71:
-#line 754 "asmshader.y" /* yacc.c:1646  */
+#line 752 "asmshader.y"
     {
                                 TRACE("ENDIF\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ENDIF, 0, 0, 0, 0, 0, 0);
                             }
-#line 2601 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2610 "asmshader.tab.c"
     break;
 
   case 72:
-#line 759 "asmshader.y" /* yacc.c:1646  */
+#line 757 "asmshader.y"
     {
                                 TRACE("BREAK\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_BREAK, 0, 0, 0, 0, 0, 0);
                             }
-#line 2610 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2619 "asmshader.tab.c"
     break;
 
   case 73:
-#line 764 "asmshader.y" /* yacc.c:1646  */
+#line 762 "asmshader.y"
     {
                                 TRACE("BREAKC\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_BREAKC, 0, 0, (yyvsp[-1].comptype), 0, &(yyvsp[0].sregs), 2);
                             }
-#line 2619 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2628 "asmshader.tab.c"
     break;
 
   case 74:
-#line 769 "asmshader.y" /* yacc.c:1646  */
+#line 767 "asmshader.y"
     {
                                 TRACE("BREAKP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_BREAKP, 0, 0, 0, 0, &(yyvsp[0].sregs), 1);
                             }
-#line 2628 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2637 "asmshader.tab.c"
     break;
 
   case 75:
-#line 774 "asmshader.y" /* yacc.c:1646  */
+#line 772 "asmshader.y"
     {
                                 TRACE("CALL\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_CALL, 0, 0, 0, 0, &(yyvsp[0].sregs), 1);
                             }
-#line 2637 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2646 "asmshader.tab.c"
     break;
 
   case 76:
-#line 779 "asmshader.y" /* yacc.c:1646  */
+#line 777 "asmshader.y"
     {
                                 TRACE("CALLNZ\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_CALLNZ, 0, 0, 0, 0, &(yyvsp[0].sregs), 2);
                             }
-#line 2646 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2655 "asmshader.tab.c"
     break;
 
   case 77:
-#line 784 "asmshader.y" /* yacc.c:1646  */
+#line 782 "asmshader.y"
     {
                                 TRACE("LOOP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LOOP, 0, 0, 0, 0, &(yyvsp[0].sregs), 2);
                             }
-#line 2655 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2664 "asmshader.tab.c"
     break;
 
   case 78:
-#line 789 "asmshader.y" /* yacc.c:1646  */
+#line 787 "asmshader.y"
     {
                                 TRACE("RET\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_RET, 0, 0, 0, 0, 0, 0);
                             }
-#line 2664 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2673 "asmshader.tab.c"
     break;
 
   case 79:
-#line 794 "asmshader.y" /* yacc.c:1646  */
+#line 792 "asmshader.y"
     {
                                 TRACE("ENDLOOP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_ENDLOOP, 0, 0, 0, 0, 0, 0);
                             }
-#line 2673 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2682 "asmshader.tab.c"
     break;
 
   case 80:
-#line 799 "asmshader.y" /* yacc.c:1646  */
+#line 797 "asmshader.y"
     {
                                 TRACE("LABEL\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LABEL, 0, 0, 0, 0, &(yyvsp[0].sregs), 1);
                             }
-#line 2682 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2691 "asmshader.tab.c"
     break;
 
   case 81:
-#line 804 "asmshader.y" /* yacc.c:1646  */
+#line 802 "asmshader.y"
     {
                                 TRACE("SETP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_SETP, 0, 0, (yyvsp[-3].comptype), &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2691 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2700 "asmshader.tab.c"
     break;
 
   case 82:
-#line 809 "asmshader.y" /* yacc.c:1646  */
+#line 807 "asmshader.y"
     {
                                 TRACE("TEXLDL\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDL, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2700 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2709 "asmshader.tab.c"
     break;
 
   case 83:
-#line 814 "asmshader.y" /* yacc.c:1646  */
+#line 812 "asmshader.y"
     {
                                 TRACE("LIT\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_LIT, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2709 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2718 "asmshader.tab.c"
     break;
 
   case 84:
-#line 819 "asmshader.y" /* yacc.c:1646  */
+#line 817 "asmshader.y"
     {
                                 TRACE("MOVA\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_MOVA, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2718 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2727 "asmshader.tab.c"
     break;
 
   case 85:
-#line 824 "asmshader.y" /* yacc.c:1646  */
+#line 822 "asmshader.y"
     {
                                 TRACE("CND\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_CND, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2727 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2736 "asmshader.tab.c"
     break;
 
   case 86:
-#line 829 "asmshader.y" /* yacc.c:1646  */
+#line 827 "asmshader.y"
     {
                                 TRACE("CMP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_CMP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2736 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2745 "asmshader.tab.c"
     break;
 
   case 87:
-#line 834 "asmshader.y" /* yacc.c:1646  */
+#line 832 "asmshader.y"
     {
                                 TRACE("DP2ADD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DP2ADD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 3);
                             }
-#line 2745 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2754 "asmshader.tab.c"
     break;
 
   case 88:
-#line 839 "asmshader.y" /* yacc.c:1646  */
+#line 837 "asmshader.y"
     {
                                 TRACE("TEXCOORD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXCOORD, (yyvsp[-1].modshift).mod, (yyvsp[-1].modshift).shift, 0, &(yyvsp[0].reg), 0, 0);
                             }
-#line 2754 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2763 "asmshader.tab.c"
     break;
 
   case 89:
-#line 844 "asmshader.y" /* yacc.c:1646  */
+#line 842 "asmshader.y"
     {
                                 TRACE("TEXCRD\n");
                                 /* texcoord and texcrd share the same opcode */
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXCOORD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2764 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2773 "asmshader.tab.c"
     break;
 
   case 90:
-#line 850 "asmshader.y" /* yacc.c:1646  */
+#line 848 "asmshader.y"
     {
                                 TRACE("TEXKILL\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXKILL, 0, 0, 0, &(yyvsp[0].reg), 0, 0);
                             }
-#line 2773 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2782 "asmshader.tab.c"
     break;
 
   case 91:
-#line 855 "asmshader.y" /* yacc.c:1646  */
+#line 853 "asmshader.y"
     {
                                 TRACE("TEX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEX, (yyvsp[-1].modshift).mod, (yyvsp[-1].modshift).shift, 0, &(yyvsp[0].reg), 0, 0);
                             }
-#line 2782 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2791 "asmshader.tab.c"
     break;
 
   case 92:
-#line 860 "asmshader.y" /* yacc.c:1646  */
+#line 858 "asmshader.y"
     {
                                 TRACE("TEXDEPTH\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXDEPTH, (yyvsp[-1].modshift).mod, (yyvsp[-1].modshift).shift, 0, &(yyvsp[0].reg), 0, 0);
                             }
-#line 2791 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2800 "asmshader.tab.c"
     break;
 
   case 93:
-#line 865 "asmshader.y" /* yacc.c:1646  */
+#line 863 "asmshader.y"
     {
                                 TRACE("TEXLD\n");
                                 /* There is more than one acceptable syntax for texld:
@@ -2798,209 +2811,209 @@ yyreduce:
                                    These variations are handled in asmparser.c */
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2806 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2815 "asmshader.tab.c"
     break;
 
   case 94:
-#line 876 "asmshader.y" /* yacc.c:1646  */
+#line 874 "asmshader.y"
     {
                                 TRACE("TEXLDP\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDP, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2815 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2824 "asmshader.tab.c"
     break;
 
   case 95:
-#line 881 "asmshader.y" /* yacc.c:1646  */
+#line 879 "asmshader.y"
     {
                                 TRACE("TEXLDB\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDB, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2824 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2833 "asmshader.tab.c"
     break;
 
   case 96:
-#line 886 "asmshader.y" /* yacc.c:1646  */
+#line 884 "asmshader.y"
     {
                                 TRACE("TEXBEM\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXBEM, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2833 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2842 "asmshader.tab.c"
     break;
 
   case 97:
-#line 891 "asmshader.y" /* yacc.c:1646  */
+#line 889 "asmshader.y"
     {
                                 TRACE("TEXBEML\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXBEML, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2842 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2851 "asmshader.tab.c"
     break;
 
   case 98:
-#line 896 "asmshader.y" /* yacc.c:1646  */
+#line 894 "asmshader.y"
     {
                                 TRACE("TEXREG2AR\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXREG2AR, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2851 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2860 "asmshader.tab.c"
     break;
 
   case 99:
-#line 901 "asmshader.y" /* yacc.c:1646  */
+#line 899 "asmshader.y"
     {
                                 TRACE("TEXREG2GB\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXREG2GB, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2860 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2869 "asmshader.tab.c"
     break;
 
   case 100:
-#line 906 "asmshader.y" /* yacc.c:1646  */
+#line 904 "asmshader.y"
     {
                                 TRACE("TEXREG2RGB\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXREG2RGB, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2869 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2878 "asmshader.tab.c"
     break;
 
   case 101:
-#line 911 "asmshader.y" /* yacc.c:1646  */
+#line 909 "asmshader.y"
     {
                                 TRACE("TEXM3x2PAD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x2PAD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2878 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2887 "asmshader.tab.c"
     break;
 
   case 102:
-#line 916 "asmshader.y" /* yacc.c:1646  */
+#line 914 "asmshader.y"
     {
                                 TRACE("INSTR_TEXM3x3PAD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x3PAD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2887 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2896 "asmshader.tab.c"
     break;
 
   case 103:
-#line 921 "asmshader.y" /* yacc.c:1646  */
+#line 919 "asmshader.y"
     {
                                 TRACE("TEXM3x3SPEC\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x3SPEC, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2896 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2905 "asmshader.tab.c"
     break;
 
   case 104:
-#line 926 "asmshader.y" /* yacc.c:1646  */
+#line 924 "asmshader.y"
     {
                                 TRACE("TEXM3x3VSPEC\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x3VSPEC, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2905 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2914 "asmshader.tab.c"
     break;
 
   case 105:
-#line 931 "asmshader.y" /* yacc.c:1646  */
+#line 929 "asmshader.y"
     {
                                 TRACE("TEXM3x3TEX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x3TEX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2914 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2923 "asmshader.tab.c"
     break;
 
   case 106:
-#line 936 "asmshader.y" /* yacc.c:1646  */
+#line 934 "asmshader.y"
     {
                                 TRACE("TEXDP3TEX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXDP3TEX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2923 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2932 "asmshader.tab.c"
     break;
 
   case 107:
-#line 941 "asmshader.y" /* yacc.c:1646  */
+#line 939 "asmshader.y"
     {
                                 TRACE("TEXM3x2DEPTH\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x2DEPTH, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2932 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2941 "asmshader.tab.c"
     break;
 
   case 108:
-#line 946 "asmshader.y" /* yacc.c:1646  */
+#line 944 "asmshader.y"
     {
                                 TRACE("TEXM3x2TEX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x2TEX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2941 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2950 "asmshader.tab.c"
     break;
 
   case 109:
-#line 951 "asmshader.y" /* yacc.c:1646  */
+#line 949 "asmshader.y"
     {
                                 TRACE("TEXDP3\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXDP3, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2950 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2959 "asmshader.tab.c"
     break;
 
   case 110:
-#line 956 "asmshader.y" /* yacc.c:1646  */
+#line 954 "asmshader.y"
     {
                                 TRACE("TEXM3x3\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXM3x3, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2959 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2968 "asmshader.tab.c"
     break;
 
   case 111:
-#line 961 "asmshader.y" /* yacc.c:1646  */
+#line 959 "asmshader.y"
     {
                                 TRACE("BEM\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_BEM, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 2);
                             }
-#line 2968 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2977 "asmshader.tab.c"
     break;
 
   case 112:
-#line 966 "asmshader.y" /* yacc.c:1646  */
+#line 964 "asmshader.y"
     {
                                 TRACE("DSX\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DSX, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2977 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2986 "asmshader.tab.c"
     break;
 
   case 113:
-#line 971 "asmshader.y" /* yacc.c:1646  */
+#line 969 "asmshader.y"
     {
                                 TRACE("DSY\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_DSY, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 1);
                             }
-#line 2986 "asmshader.tab.c" /* yacc.c:1646  */
+#line 2995 "asmshader.tab.c"
     break;
 
   case 114:
-#line 976 "asmshader.y" /* yacc.c:1646  */
+#line 974 "asmshader.y"
     {
                                 TRACE("TEXLDD\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_TEXLDD, (yyvsp[-3].modshift).mod, (yyvsp[-3].modshift).shift, 0, &(yyvsp[-2].reg), &(yyvsp[0].sregs), 4);
                             }
-#line 2995 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3004 "asmshader.tab.c"
     break;
 
   case 115:
-#line 981 "asmshader.y" /* yacc.c:1646  */
+#line 979 "asmshader.y"
     {
                                 TRACE("PHASE\n");
                                 asm_ctx.funcs->instr(&asm_ctx, BWRITERSIO_PHASE, 0, 0, 0, 0, 0, 0);
                             }
-#line 3004 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3013 "asmshader.tab.c"
     break;
 
   case 116:
-#line 988 "asmshader.y" /* yacc.c:1646  */
+#line 986 "asmshader.y"
     {
                                 (yyval.reg).regnum = (yyvsp[-1].reg).regnum;
                                 (yyval.reg).type = (yyvsp[-1].reg).type;
@@ -3008,11 +3021,11 @@ yyreduce:
                                 (yyval.reg).srcmod = BWRITERSPSM_NONE;
                                 set_rel_reg(&(yyval.reg), &(yyvsp[0].rel_reg));
                             }
-#line 3016 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3025 "asmshader.tab.c"
     break;
 
   case 117:
-#line 996 "asmshader.y" /* yacc.c:1646  */
+#line 994 "asmshader.y"
     {
                                 (yyval.reg).regnum = (yyvsp[-1].reg).regnum;
                                 (yyval.reg).type = (yyvsp[-1].reg).type;
@@ -3020,186 +3033,186 @@ yyreduce:
                                 (yyval.reg).srcmod = BWRITERSPSM_NONE;
                                 (yyval.reg).rel_reg = NULL;
                             }
-#line 3028 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3037 "asmshader.tab.c"
     break;
 
   case 118:
-#line 1005 "asmshader.y" /* yacc.c:1646  */
+#line 1003 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEMP;
                         }
-#line 3036 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3045 "asmshader.tab.c"
     break;
 
   case 119:
-#line 1009 "asmshader.y" /* yacc.c:1646  */
+#line 1007 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_OUTPUT;
                         }
-#line 3044 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3053 "asmshader.tab.c"
     break;
 
   case 120:
-#line 1013 "asmshader.y" /* yacc.c:1646  */
+#line 1011 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_INPUT;
                         }
-#line 3052 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3061 "asmshader.tab.c"
     break;
 
   case 121:
-#line 1017 "asmshader.y" /* yacc.c:1646  */
+#line 1015 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register c%u is not a valid destination register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3062 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3071 "asmshader.tab.c"
     break;
 
   case 122:
-#line 1023 "asmshader.y" /* yacc.c:1646  */
+#line 1021 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register i%u is not a valid destination register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3072 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3081 "asmshader.tab.c"
     break;
 
   case 123:
-#line 1029 "asmshader.y" /* yacc.c:1646  */
+#line 1027 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register b%u is not a valid destination register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3082 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3091 "asmshader.tab.c"
     break;
 
   case 124:
-#line 1035 "asmshader.y" /* yacc.c:1646  */
+#line 1033 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEXTURE;
                         }
-#line 3090 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3099 "asmshader.tab.c"
     break;
 
   case 125:
-#line 1039 "asmshader.y" /* yacc.c:1646  */
+#line 1037 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEXCRDOUT;
                         }
-#line 3098 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3107 "asmshader.tab.c"
     break;
 
   case 126:
-#line 1043 "asmshader.y" /* yacc.c:1646  */
+#line 1041 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register s%u is not a valid destination register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3108 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3117 "asmshader.tab.c"
     break;
 
   case 127:
-#line 1049 "asmshader.y" /* yacc.c:1646  */
+#line 1047 "asmshader.y"
     {
                             (yyval.reg).regnum = BWRITERSRO_POSITION; (yyval.reg).type = BWRITERSPR_RASTOUT;
                         }
-#line 3116 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3125 "asmshader.tab.c"
     break;
 
   case 128:
-#line 1053 "asmshader.y" /* yacc.c:1646  */
+#line 1051 "asmshader.y"
     {
                             (yyval.reg).regnum = BWRITERSRO_POINT_SIZE; (yyval.reg).type = BWRITERSPR_RASTOUT;
                         }
-#line 3124 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3133 "asmshader.tab.c"
     break;
 
   case 129:
-#line 1057 "asmshader.y" /* yacc.c:1646  */
+#line 1055 "asmshader.y"
     {
                             (yyval.reg).regnum = BWRITERSRO_FOG; (yyval.reg).type = BWRITERSPR_RASTOUT;
                         }
-#line 3132 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3141 "asmshader.tab.c"
     break;
 
   case 130:
-#line 1061 "asmshader.y" /* yacc.c:1646  */
+#line 1059 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_ATTROUT;
                         }
-#line 3140 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3149 "asmshader.tab.c"
     break;
 
   case 131:
-#line 1065 "asmshader.y" /* yacc.c:1646  */
+#line 1063 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_COLOROUT;
                         }
-#line 3148 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3157 "asmshader.tab.c"
     break;
 
   case 132:
-#line 1069 "asmshader.y" /* yacc.c:1646  */
+#line 1067 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_DEPTHOUT;
                         }
-#line 3156 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3165 "asmshader.tab.c"
     break;
 
   case 133:
-#line 1073 "asmshader.y" /* yacc.c:1646  */
+#line 1071 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_PREDICATE;
                         }
-#line 3164 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3173 "asmshader.tab.c"
     break;
 
   case 134:
-#line 1077 "asmshader.y" /* yacc.c:1646  */
+#line 1075 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register vPos is not a valid destination register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3174 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3183 "asmshader.tab.c"
     break;
 
   case 135:
-#line 1083 "asmshader.y" /* yacc.c:1646  */
+#line 1081 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register vFace is not a valid destination register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3184 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3193 "asmshader.tab.c"
     break;
 
   case 136:
-#line 1089 "asmshader.y" /* yacc.c:1646  */
+#line 1087 "asmshader.y"
     {
                             /* index 0 is hardcoded for the addr register */
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_ADDR;
                         }
-#line 3193 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3202 "asmshader.tab.c"
     break;
 
   case 137:
-#line 1094 "asmshader.y" /* yacc.c:1646  */
+#line 1092 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register aL is not a valid destination register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3203 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3212 "asmshader.tab.c"
     break;
 
   case 138:
-#line 1101 "asmshader.y" /* yacc.c:1646  */
+#line 1099 "asmshader.y"
     {
                             if((yyvsp[0].wm_components).writemask == SWIZZLE_ERR) {
                                 asmparser_message(&asm_ctx, "Line %u: Invalid writemask specified\n",
@@ -3213,21 +3226,21 @@ yyreduce:
                                 TRACE("Writemask: %x\n", (yyval.writemask));
                             }
                         }
-#line 3221 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3230 "asmshader.tab.c"
     break;
 
   case 139:
-#line 1116 "asmshader.y" /* yacc.c:1646  */
+#line 1114 "asmshader.y"
     {
                             (yyval.wm_components).writemask = 1 << (yyvsp[0].component);
                             (yyval.wm_components).last = (yyvsp[0].component);
                             (yyval.wm_components).idx = 1;
                         }
-#line 3231 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3240 "asmshader.tab.c"
     break;
 
   case 140:
-#line 1122 "asmshader.y" /* yacc.c:1646  */
+#line 1120 "asmshader.y"
     {
                             if((yyvsp[-1].wm_components).writemask == SWIZZLE_ERR || (yyvsp[-1].wm_components).idx == 4)
                                 /* Wrong writemask */
@@ -3241,20 +3254,20 @@ yyreduce:
                                 }
                             }
                         }
-#line 3249 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3258 "asmshader.tab.c"
     break;
 
   case 141:
-#line 1137 "asmshader.y" /* yacc.c:1646  */
+#line 1135 "asmshader.y"
     {
                             (yyval.swizzle) = BWRITERVS_NOSWIZZLE;
                             TRACE("Default swizzle: %08x\n", (yyval.swizzle));
                         }
-#line 3258 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3267 "asmshader.tab.c"
     break;
 
   case 142:
-#line 1142 "asmshader.y" /* yacc.c:1646  */
+#line 1140 "asmshader.y"
     {
                             if((yyvsp[0].sw_components).swizzle == SWIZZLE_ERR) {
                                 asmparser_message(&asm_ctx, "Line %u: Invalid swizzle\n",
@@ -3275,20 +3288,20 @@ yyreduce:
                                 TRACE("Got a swizzle: %08x\n", (yyval.swizzle));
                             }
                         }
-#line 3283 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3292 "asmshader.tab.c"
     break;
 
   case 143:
-#line 1164 "asmshader.y" /* yacc.c:1646  */
+#line 1162 "asmshader.y"
     {
                             (yyval.sw_components).swizzle = (yyvsp[0].component);
                             (yyval.sw_components).idx = 1;
                         }
-#line 3292 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3301 "asmshader.tab.c"
     break;
 
   case 144:
-#line 1169 "asmshader.y" /* yacc.c:1646  */
+#line 1167 "asmshader.y"
     {
                             if((yyvsp[-1].sw_components).idx == 4) {
                                 /* Too many sw_components */
@@ -3300,20 +3313,20 @@ yyreduce:
                                 (yyval.sw_components).idx = (yyvsp[-1].sw_components).idx + 1;
                             }
                         }
-#line 3308 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3317 "asmshader.tab.c"
     break;
 
   case 145:
-#line 1182 "asmshader.y" /* yacc.c:1646  */
+#line 1180 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 0;
                         }
-#line 3317 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3326 "asmshader.tab.c"
     break;
 
   case 146:
-#line 1187 "asmshader.y" /* yacc.c:1646  */
+#line 1185 "asmshader.y"
     {
                             (yyval.modshift).mod = (yyvsp[-1].modshift).mod | (yyvsp[0].modshift).mod;
                             if((yyvsp[-1].modshift).shift && (yyvsp[0].modshift).shift) {
@@ -3325,101 +3338,101 @@ yyreduce:
                                 (yyval.modshift).shift = (yyvsp[-1].modshift).shift | (yyvsp[0].modshift).shift;
                             }
                         }
-#line 3333 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3342 "asmshader.tab.c"
     break;
 
   case 147:
-#line 1200 "asmshader.y" /* yacc.c:1646  */
+#line 1198 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 1;
                         }
-#line 3342 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3351 "asmshader.tab.c"
     break;
 
   case 148:
-#line 1205 "asmshader.y" /* yacc.c:1646  */
+#line 1203 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 2;
                         }
-#line 3351 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3360 "asmshader.tab.c"
     break;
 
   case 149:
-#line 1210 "asmshader.y" /* yacc.c:1646  */
+#line 1208 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 3;
                         }
-#line 3360 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3369 "asmshader.tab.c"
     break;
 
   case 150:
-#line 1215 "asmshader.y" /* yacc.c:1646  */
+#line 1213 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 15;
                         }
-#line 3369 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3378 "asmshader.tab.c"
     break;
 
   case 151:
-#line 1220 "asmshader.y" /* yacc.c:1646  */
+#line 1218 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 14;
                         }
-#line 3378 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3387 "asmshader.tab.c"
     break;
 
   case 152:
-#line 1225 "asmshader.y" /* yacc.c:1646  */
+#line 1223 "asmshader.y"
     {
                             (yyval.modshift).mod = 0;
                             (yyval.modshift).shift = 13;
                         }
-#line 3387 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3396 "asmshader.tab.c"
     break;
 
   case 153:
-#line 1230 "asmshader.y" /* yacc.c:1646  */
+#line 1228 "asmshader.y"
     {
                             (yyval.modshift).mod = BWRITERSPDM_SATURATE;
                             (yyval.modshift).shift = 0;
                         }
-#line 3396 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3405 "asmshader.tab.c"
     break;
 
   case 154:
-#line 1235 "asmshader.y" /* yacc.c:1646  */
+#line 1233 "asmshader.y"
     {
                             (yyval.modshift).mod = BWRITERSPDM_PARTIALPRECISION;
                             (yyval.modshift).shift = 0;
                         }
-#line 3405 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3414 "asmshader.tab.c"
     break;
 
   case 155:
-#line 1240 "asmshader.y" /* yacc.c:1646  */
+#line 1238 "asmshader.y"
     {
                             (yyval.modshift).mod = BWRITERSPDM_MSAMPCENTROID;
                             (yyval.modshift).shift = 0;
                         }
-#line 3414 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3423 "asmshader.tab.c"
     break;
 
   case 156:
-#line 1246 "asmshader.y" /* yacc.c:1646  */
+#line 1244 "asmshader.y"
     {
                             (yyval.sregs).reg[0] = (yyvsp[0].reg);
                             (yyval.sregs).count = 1;
                         }
-#line 3423 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3432 "asmshader.tab.c"
     break;
 
   case 157:
-#line 1251 "asmshader.y" /* yacc.c:1646  */
+#line 1249 "asmshader.y"
     {
                             if((yyval.sregs).count == MAX_SRC_REGS){
                                 asmparser_message(&asm_ctx, "Line %u: Too many source registers in this instruction\n",
@@ -3429,11 +3442,11 @@ yyreduce:
                             else
                                 (yyval.sregs).reg[(yyval.sregs).count++] = (yyvsp[0].reg);
                         }
-#line 3437 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3446 "asmshader.tab.c"
     break;
 
   case 158:
-#line 1262 "asmshader.y" /* yacc.c:1646  */
+#line 1260 "asmshader.y"
     {
                             (yyval.reg).type = (yyvsp[-2].reg).type;
                             (yyval.reg).regnum = (yyvsp[-2].reg).regnum;
@@ -3441,11 +3454,11 @@ yyreduce:
                             (yyval.reg).srcmod = BWRITERSPSM_NONE;
                             set_rel_reg(&(yyval.reg), &(yyvsp[-1].rel_reg));
                         }
-#line 3449 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3458 "asmshader.tab.c"
     break;
 
   case 159:
-#line 1270 "asmshader.y" /* yacc.c:1646  */
+#line 1268 "asmshader.y"
     {
                             (yyval.reg).type = (yyvsp[-3].reg).type;
                             (yyval.reg).regnum = (yyvsp[-3].reg).regnum;
@@ -3453,11 +3466,11 @@ yyreduce:
                             (yyval.reg).srcmod = (yyvsp[-1].srcmod);
                             (yyval.reg).u.swizzle = (yyvsp[0].swizzle);
                         }
-#line 3461 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3470 "asmshader.tab.c"
     break;
 
   case 160:
-#line 1278 "asmshader.y" /* yacc.c:1646  */
+#line 1276 "asmshader.y"
     {
                             (yyval.reg).type = (yyvsp[-2].reg).type;
                             (yyval.reg).regnum = (yyvsp[-2].reg).regnum;
@@ -3465,11 +3478,11 @@ yyreduce:
                             set_rel_reg(&(yyval.reg), &(yyvsp[-1].rel_reg));
                             (yyval.reg).u.swizzle = (yyvsp[0].swizzle);
                         }
-#line 3473 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3482 "asmshader.tab.c"
     break;
 
   case 161:
-#line 1286 "asmshader.y" /* yacc.c:1646  */
+#line 1284 "asmshader.y"
     {
                             (yyval.reg).type = (yyvsp[-3].reg).type;
                             (yyval.reg).regnum = (yyvsp[-3].reg).regnum;
@@ -3494,11 +3507,11 @@ yyreduce:
                             }
                             (yyval.reg).u.swizzle = (yyvsp[0].swizzle);
                         }
-#line 3502 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3511 "asmshader.tab.c"
     break;
 
   case 162:
-#line 1311 "asmshader.y" /* yacc.c:1646  */
+#line 1309 "asmshader.y"
     {
                             if((yyvsp[-4].immval).val != 1.0 || (!(yyvsp[-4].immval).integer)) {
                                 asmparser_message(&asm_ctx, "Line %u: Only \"1 - reg\" is valid for D3DSPSM_COMP, "
@@ -3512,11 +3525,11 @@ yyreduce:
                             set_rel_reg(&(yyval.reg), &(yyvsp[-1].rel_reg));
                             (yyval.reg).u.swizzle = (yyvsp[0].swizzle);
                         }
-#line 3520 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3529 "asmshader.tab.c"
     break;
 
   case 163:
-#line 1325 "asmshader.y" /* yacc.c:1646  */
+#line 1323 "asmshader.y"
     {
                             /* For nicer error reporting */
                             if((yyvsp[-5].immval).val != 1.0 || (!(yyvsp[-5].immval).integer)) {
@@ -3530,11 +3543,11 @@ yyreduce:
                                 set_parse_status(&asm_ctx.status,  PARSE_ERR);
                             }
                         }
-#line 3538 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3547 "asmshader.tab.c"
     break;
 
   case 164:
-#line 1339 "asmshader.y" /* yacc.c:1646  */
+#line 1337 "asmshader.y"
     {
                             (yyval.reg).type = (yyvsp[-1].reg).type;
                             (yyval.reg).regnum = (yyvsp[-1].reg).regnum;
@@ -3542,29 +3555,29 @@ yyreduce:
                             (yyval.reg).srcmod = BWRITERSPSM_NOT;
                             (yyval.reg).u.swizzle = (yyvsp[0].swizzle);
                         }
-#line 3550 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3559 "asmshader.tab.c"
     break;
 
   case 165:
-#line 1348 "asmshader.y" /* yacc.c:1646  */
+#line 1346 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = FALSE;
                             (yyval.rel_reg).additional_offset = 0;
                         }
-#line 3559 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3568 "asmshader.tab.c"
     break;
 
   case 166:
-#line 1353 "asmshader.y" /* yacc.c:1646  */
+#line 1351 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = FALSE;
                             (yyval.rel_reg).additional_offset = (yyvsp[-1].immval).val;
                         }
-#line 3568 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3577 "asmshader.tab.c"
     break;
 
   case 167:
-#line 1358 "asmshader.y" /* yacc.c:1646  */
+#line 1356 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = TRUE;
                             (yyval.rel_reg).type = (yyvsp[-2].reg).type;
@@ -3572,11 +3585,11 @@ yyreduce:
                             (yyval.rel_reg).rel_regnum = (yyvsp[-2].reg).regnum;
                             (yyval.rel_reg).swizzle = (yyvsp[-1].swizzle);
                         }
-#line 3580 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3589 "asmshader.tab.c"
     break;
 
   case 168:
-#line 1366 "asmshader.y" /* yacc.c:1646  */
+#line 1364 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = TRUE;
                             (yyval.rel_reg).type = (yyvsp[-2].reg).type;
@@ -3584,11 +3597,11 @@ yyreduce:
                             (yyval.rel_reg).rel_regnum = (yyvsp[-2].reg).regnum;
                             (yyval.rel_reg).swizzle = (yyvsp[-1].swizzle);
                         }
-#line 3592 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3601 "asmshader.tab.c"
     break;
 
   case 169:
-#line 1374 "asmshader.y" /* yacc.c:1646  */
+#line 1372 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = TRUE;
                             (yyval.rel_reg).type = (yyvsp[-4].reg).type;
@@ -3596,11 +3609,11 @@ yyreduce:
                             (yyval.rel_reg).rel_regnum = (yyvsp[-4].reg).regnum;
                             (yyval.rel_reg).swizzle = (yyvsp[-3].swizzle);
                         }
-#line 3604 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3613 "asmshader.tab.c"
     break;
 
   case 170:
-#line 1382 "asmshader.y" /* yacc.c:1646  */
+#line 1380 "asmshader.y"
     {
                             (yyval.rel_reg).has_rel_reg = TRUE;
                             (yyval.rel_reg).type = (yyvsp[-4].reg).type;
@@ -3608,11 +3621,11 @@ yyreduce:
                             (yyval.rel_reg).rel_regnum = (yyvsp[-4].reg).regnum;
                             (yyval.rel_reg).swizzle = (yyvsp[-3].swizzle);
                         }
-#line 3616 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3625 "asmshader.tab.c"
     break;
 
   case 171:
-#line 1391 "asmshader.y" /* yacc.c:1646  */
+#line 1389 "asmshader.y"
     {
                             if(!(yyvsp[0].immval).integer) {
                                 asmparser_message(&asm_ctx, "Line %u: Unexpected float %f\n",
@@ -3621,11 +3634,11 @@ yyreduce:
                             }
                             (yyval.immval).val = (yyvsp[0].immval).val;
                         }
-#line 3629 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3638 "asmshader.tab.c"
     break;
 
   case 172:
-#line 1400 "asmshader.y" /* yacc.c:1646  */
+#line 1398 "asmshader.y"
     {
                             if(!(yyvsp[0].immval).integer) {
                                 asmparser_message(&asm_ctx, "Line %u: Unexpected float %f\n",
@@ -3634,473 +3647,473 @@ yyreduce:
                             }
                             (yyval.immval).val = (yyvsp[-2].immval).val + (yyvsp[0].immval).val;
                         }
-#line 3642 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3651 "asmshader.tab.c"
     break;
 
   case 173:
-#line 1410 "asmshader.y" /* yacc.c:1646  */
+#line 1408 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_BIAS;
                         }
-#line 3650 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3659 "asmshader.tab.c"
     break;
 
   case 174:
-#line 1414 "asmshader.y" /* yacc.c:1646  */
+#line 1412 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_X2;
                         }
-#line 3658 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3667 "asmshader.tab.c"
     break;
 
   case 175:
-#line 1418 "asmshader.y" /* yacc.c:1646  */
+#line 1416 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_SIGN;
                         }
-#line 3666 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3675 "asmshader.tab.c"
     break;
 
   case 176:
-#line 1422 "asmshader.y" /* yacc.c:1646  */
+#line 1420 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_DZ;
                         }
-#line 3674 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3683 "asmshader.tab.c"
     break;
 
   case 177:
-#line 1426 "asmshader.y" /* yacc.c:1646  */
+#line 1424 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_DW;
                         }
-#line 3682 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3691 "asmshader.tab.c"
     break;
 
   case 178:
-#line 1430 "asmshader.y" /* yacc.c:1646  */
+#line 1428 "asmshader.y"
     {
                             (yyval.srcmod) = BWRITERSPSM_ABS;
                         }
-#line 3690 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3699 "asmshader.tab.c"
     break;
 
   case 179:
-#line 1435 "asmshader.y" /* yacc.c:1646  */
+#line 1433 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_ADDR;
                         }
-#line 3698 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3707 "asmshader.tab.c"
     break;
 
   case 180:
-#line 1439 "asmshader.y" /* yacc.c:1646  */
+#line 1437 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_LOOP;
                         }
-#line 3706 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3715 "asmshader.tab.c"
     break;
 
   case 181:
-#line 1444 "asmshader.y" /* yacc.c:1646  */
+#line 1442 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEMP;
                         }
-#line 3714 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3723 "asmshader.tab.c"
     break;
 
   case 182:
-#line 1448 "asmshader.y" /* yacc.c:1646  */
+#line 1446 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register o%u is not a valid source register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3724 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3733 "asmshader.tab.c"
     break;
 
   case 183:
-#line 1454 "asmshader.y" /* yacc.c:1646  */
+#line 1452 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_INPUT;
                         }
-#line 3732 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3741 "asmshader.tab.c"
     break;
 
   case 184:
-#line 1458 "asmshader.y" /* yacc.c:1646  */
+#line 1456 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_CONST;
                         }
-#line 3740 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3749 "asmshader.tab.c"
     break;
 
   case 185:
-#line 1462 "asmshader.y" /* yacc.c:1646  */
+#line 1460 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_CONSTINT;
                         }
-#line 3748 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3757 "asmshader.tab.c"
     break;
 
   case 186:
-#line 1466 "asmshader.y" /* yacc.c:1646  */
+#line 1464 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_CONSTBOOL;
                         }
-#line 3756 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3765 "asmshader.tab.c"
     break;
 
   case 187:
-#line 1470 "asmshader.y" /* yacc.c:1646  */
+#line 1468 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEXTURE;
                         }
-#line 3764 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3773 "asmshader.tab.c"
     break;
 
   case 188:
-#line 1474 "asmshader.y" /* yacc.c:1646  */
+#line 1472 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oT%u is not a valid source register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3774 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3783 "asmshader.tab.c"
     break;
 
   case 189:
-#line 1480 "asmshader.y" /* yacc.c:1646  */
+#line 1478 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_SAMPLER;
                         }
-#line 3782 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3791 "asmshader.tab.c"
     break;
 
   case 190:
-#line 1484 "asmshader.y" /* yacc.c:1646  */
+#line 1482 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oPos is not a valid source register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3792 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3801 "asmshader.tab.c"
     break;
 
   case 191:
-#line 1490 "asmshader.y" /* yacc.c:1646  */
+#line 1488 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oFog is not a valid source register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3802 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3811 "asmshader.tab.c"
     break;
 
   case 192:
-#line 1496 "asmshader.y" /* yacc.c:1646  */
+#line 1494 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oD%u is not a valid source register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3812 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3821 "asmshader.tab.c"
     break;
 
   case 193:
-#line 1502 "asmshader.y" /* yacc.c:1646  */
+#line 1500 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oC%u is not a valid source register\n",
                                               asm_ctx.line_no, (yyvsp[0].regnum));
                             set_parse_status(&asm_ctx.status,  PARSE_WARN);
                         }
-#line 3822 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3831 "asmshader.tab.c"
     break;
 
   case 194:
-#line 1508 "asmshader.y" /* yacc.c:1646  */
+#line 1506 "asmshader.y"
     {
                             asmparser_message(&asm_ctx, "Line %u: Register oDepth is not a valid source register\n",
                                               asm_ctx.line_no);
                             set_parse_status(&asm_ctx.status, PARSE_WARN);
                         }
-#line 3832 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3841 "asmshader.tab.c"
     break;
 
   case 195:
-#line 1514 "asmshader.y" /* yacc.c:1646  */
+#line 1512 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_PREDICATE;
                         }
-#line 3840 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3849 "asmshader.tab.c"
     break;
 
   case 196:
-#line 1518 "asmshader.y" /* yacc.c:1646  */
+#line 1516 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_MISCTYPE;
                         }
-#line 3848 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3857 "asmshader.tab.c"
     break;
 
   case 197:
-#line 1522 "asmshader.y" /* yacc.c:1646  */
+#line 1520 "asmshader.y"
     {
                             (yyval.reg).regnum = 1; (yyval.reg).type = BWRITERSPR_MISCTYPE;
                         }
-#line 3856 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3865 "asmshader.tab.c"
     break;
 
   case 198:
-#line 1526 "asmshader.y" /* yacc.c:1646  */
+#line 1524 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_ADDR;
                         }
-#line 3864 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3873 "asmshader.tab.c"
     break;
 
   case 199:
-#line 1530 "asmshader.y" /* yacc.c:1646  */
+#line 1528 "asmshader.y"
     {
                             (yyval.reg).regnum = 0; (yyval.reg).type = BWRITERSPR_LOOP;
                         }
-#line 3872 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3881 "asmshader.tab.c"
     break;
 
   case 200:
-#line 1534 "asmshader.y" /* yacc.c:1646  */
+#line 1532 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_LABEL;
                         }
-#line 3880 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3889 "asmshader.tab.c"
     break;
 
   case 201:
-#line 1538 "asmshader.y" /* yacc.c:1646  */
+#line 1536 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_GT;       }
-#line 3886 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3895 "asmshader.tab.c"
     break;
 
   case 202:
-#line 1539 "asmshader.y" /* yacc.c:1646  */
+#line 1537 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_LT;       }
-#line 3892 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3901 "asmshader.tab.c"
     break;
 
   case 203:
-#line 1540 "asmshader.y" /* yacc.c:1646  */
+#line 1538 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_GE;       }
-#line 3898 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3907 "asmshader.tab.c"
     break;
 
   case 204:
-#line 1541 "asmshader.y" /* yacc.c:1646  */
+#line 1539 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_LE;       }
-#line 3904 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3913 "asmshader.tab.c"
     break;
 
   case 205:
-#line 1542 "asmshader.y" /* yacc.c:1646  */
+#line 1540 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_EQ;       }
-#line 3910 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3919 "asmshader.tab.c"
     break;
 
   case 206:
-#line 1543 "asmshader.y" /* yacc.c:1646  */
+#line 1541 "asmshader.y"
     { (yyval.comptype) = BWRITER_COMPARISON_NE;       }
-#line 3916 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3925 "asmshader.tab.c"
     break;
 
   case 207:
-#line 1546 "asmshader.y" /* yacc.c:1646  */
+#line 1544 "asmshader.y"
     {
                             TRACE("dcl_position%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_POSITION;
                         }
-#line 3926 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3935 "asmshader.tab.c"
     break;
 
   case 208:
-#line 1552 "asmshader.y" /* yacc.c:1646  */
+#line 1550 "asmshader.y"
     {
                             TRACE("dcl_blendweight%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_BLENDWEIGHT;
                         }
-#line 3936 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3945 "asmshader.tab.c"
     break;
 
   case 209:
-#line 1558 "asmshader.y" /* yacc.c:1646  */
+#line 1556 "asmshader.y"
     {
                             TRACE("dcl_blendindices%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_BLENDINDICES;
                         }
-#line 3946 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3955 "asmshader.tab.c"
     break;
 
   case 210:
-#line 1564 "asmshader.y" /* yacc.c:1646  */
+#line 1562 "asmshader.y"
     {
                             TRACE("dcl_normal%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_NORMAL;
                         }
-#line 3956 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3965 "asmshader.tab.c"
     break;
 
   case 211:
-#line 1570 "asmshader.y" /* yacc.c:1646  */
+#line 1568 "asmshader.y"
     {
                             TRACE("dcl_psize%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_PSIZE;
                         }
-#line 3966 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3975 "asmshader.tab.c"
     break;
 
   case 212:
-#line 1576 "asmshader.y" /* yacc.c:1646  */
+#line 1574 "asmshader.y"
     {
                             TRACE("dcl_texcoord%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_TEXCOORD;
                         }
-#line 3976 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3985 "asmshader.tab.c"
     break;
 
   case 213:
-#line 1582 "asmshader.y" /* yacc.c:1646  */
+#line 1580 "asmshader.y"
     {
                             TRACE("dcl_tangent%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_TANGENT;
                         }
-#line 3986 "asmshader.tab.c" /* yacc.c:1646  */
+#line 3995 "asmshader.tab.c"
     break;
 
   case 214:
-#line 1588 "asmshader.y" /* yacc.c:1646  */
+#line 1586 "asmshader.y"
     {
                             TRACE("dcl_binormal%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_BINORMAL;
                         }
-#line 3996 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4005 "asmshader.tab.c"
     break;
 
   case 215:
-#line 1594 "asmshader.y" /* yacc.c:1646  */
+#line 1592 "asmshader.y"
     {
                             TRACE("dcl_tessfactor%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_TESSFACTOR;
                         }
-#line 4006 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4015 "asmshader.tab.c"
     break;
 
   case 216:
-#line 1600 "asmshader.y" /* yacc.c:1646  */
+#line 1598 "asmshader.y"
     {
                             TRACE("dcl_positiont%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_POSITIONT;
                         }
-#line 4016 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4025 "asmshader.tab.c"
     break;
 
   case 217:
-#line 1606 "asmshader.y" /* yacc.c:1646  */
+#line 1604 "asmshader.y"
     {
                             TRACE("dcl_color%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_COLOR;
                         }
-#line 4026 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4035 "asmshader.tab.c"
     break;
 
   case 218:
-#line 1612 "asmshader.y" /* yacc.c:1646  */
+#line 1610 "asmshader.y"
     {
                             TRACE("dcl_fog%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_FOG;
                         }
-#line 4036 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4045 "asmshader.tab.c"
     break;
 
   case 219:
-#line 1618 "asmshader.y" /* yacc.c:1646  */
+#line 1616 "asmshader.y"
     {
                             TRACE("dcl_depth%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_DEPTH;
                         }
-#line 4046 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4055 "asmshader.tab.c"
     break;
 
   case 220:
-#line 1624 "asmshader.y" /* yacc.c:1646  */
+#line 1622 "asmshader.y"
     {
                             TRACE("dcl_sample%u\n", (yyvsp[0].regnum));
                             (yyval.declaration).regnum = (yyvsp[0].regnum);
                             (yyval.declaration).dclusage = BWRITERDECLUSAGE_SAMPLE;
                         }
-#line 4056 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4065 "asmshader.tab.c"
     break;
 
   case 221:
-#line 1631 "asmshader.y" /* yacc.c:1646  */
+#line 1629 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_INPUT;
                         }
-#line 4064 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4073 "asmshader.tab.c"
     break;
 
   case 222:
-#line 1635 "asmshader.y" /* yacc.c:1646  */
+#line 1633 "asmshader.y"
     {
                             (yyval.reg).regnum = (yyvsp[0].regnum); (yyval.reg).type = BWRITERSPR_TEXTURE;
                         }
-#line 4072 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4081 "asmshader.tab.c"
     break;
 
   case 223:
-#line 1640 "asmshader.y" /* yacc.c:1646  */
+#line 1638 "asmshader.y"
     {
                             (yyval.samplertype) = BWRITERSTT_1D;
                         }
-#line 4080 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4089 "asmshader.tab.c"
     break;
 
   case 224:
-#line 1644 "asmshader.y" /* yacc.c:1646  */
+#line 1642 "asmshader.y"
     {
                             (yyval.samplertype) = BWRITERSTT_2D;
                         }
-#line 4088 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4097 "asmshader.tab.c"
     break;
 
   case 225:
-#line 1648 "asmshader.y" /* yacc.c:1646  */
+#line 1646 "asmshader.y"
     {
                             (yyval.samplertype) = BWRITERSTT_CUBE;
                         }
-#line 4096 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4105 "asmshader.tab.c"
     break;
 
   case 226:
-#line 1652 "asmshader.y" /* yacc.c:1646  */
+#line 1650 "asmshader.y"
     {
                             (yyval.samplertype) = BWRITERSTT_VOLUME;
                         }
-#line 4104 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4113 "asmshader.tab.c"
     break;
 
   case 227:
-#line 1657 "asmshader.y" /* yacc.c:1646  */
+#line 1655 "asmshader.y"
     {
                             (yyval.reg).type = BWRITERSPR_PREDICATE;
                             (yyval.reg).regnum = 0;
@@ -4108,11 +4121,11 @@ yyreduce:
                             (yyval.reg).srcmod = BWRITERSPSM_NONE;
                             (yyval.reg).u.swizzle = (yyvsp[-1].swizzle);
                         }
-#line 4116 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4125 "asmshader.tab.c"
     break;
 
   case 228:
-#line 1665 "asmshader.y" /* yacc.c:1646  */
+#line 1663 "asmshader.y"
     {
                             (yyval.reg).type = BWRITERSPR_PREDICATE;
                             (yyval.reg).regnum = 0;
@@ -4120,11 +4133,12 @@ yyreduce:
                             (yyval.reg).srcmod = BWRITERSPSM_NOT;
                             (yyval.reg).u.swizzle = (yyvsp[-1].swizzle);
                         }
-#line 4128 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4137 "asmshader.tab.c"
     break;
 
 
-#line 4132 "asmshader.tab.c" /* yacc.c:1646  */
+#line 4141 "asmshader.tab.c"
+
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4149,14 +4163,13 @@ yyreduce:
   /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
-
-  yyn = yyr1[yyn];
-
-  yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
-  if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-    yystate = yytable[yystate];
-  else
-    yystate = yydefgoto[yyn - YYNTOKENS];
+  {
+    const int yylhs = yyr1[yyn] - YYNTOKENS;
+    const int yyi = yypgoto[yylhs] + *yyssp;
+    yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+               ? yytable[yyi]
+               : yydefgoto[yylhs]);
+  }
 
   goto yynewstate;
 
@@ -4239,12 +4252,10 @@ yyerrlab:
 | yyerrorlab -- error raised explicitly by YYERROR.  |
 `---------------------------------------------------*/
 yyerrorlab:
-
-  /* Pacify compilers like GCC when the user code never invokes
-     YYERROR and the label yyerrorlab therefore never appears in user
-     code.  */
-  if (/*CONSTCOND*/ 0)
-     goto yyerrorlab;
+  /* Pacify compilers when the user code never invokes YYERROR and the
+     label yyerrorlab therefore never appears in user code.  */
+  if (0)
+    YYERROR;
 
   /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
@@ -4306,6 +4317,7 @@ yyacceptlab:
   yyresult = 0;
   goto yyreturn;
 
+
 /*-----------------------------------.
 | yyabortlab -- YYABORT comes here.  |
 `-----------------------------------*/
@@ -4313,6 +4325,7 @@ yyabortlab:
   yyresult = 1;
   goto yyreturn;
 
+
 #if !defined yyoverflow || YYERROR_VERBOSE
 /*-------------------------------------------------.
 | yyexhaustedlab -- memory exhaustion comes here.  |
@@ -4323,6 +4336,10 @@ yyexhaustedlab:
   /* Fall through.  */
 #endif
 
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result.  |
+`-----------------------------------------------------*/
 yyreturn:
   if (yychar != YYEMPTY)
     {
@@ -4352,7 +4369,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 1673 "asmshader.y" /* yacc.c:1906  */
+#line 1671 "asmshader.y"
 
 
 struct bwriter_shader *parse_asm_shader(char **messages)
index 3f76060..58408c9 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.2.  */
+/* A Bison parser, made by GNU Bison 3.4.1.  */
 
 /* Bison interface for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED
-# define YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
+#ifndef YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED
+# define YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
@@ -210,10 +214,9 @@ extern int asmshader_debug;
 
 /* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 70 "asmshader.y" /* yacc.c:1909  */
+#line 68 "asmshader.y"
 
     struct {
         float           val;
@@ -248,8 +251,10 @@ union YYSTYPE
     struct rel_reg      rel_reg;
     struct src_regs     sregs;
 
-#line 252 "asmshader.tab.h" /* yacc.c:1909  */
+#line 255 "asmshader.tab.h"
+
 };
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
 #endif
@@ -259,4 +264,4 @@ extern YYSTYPE asmshader_lval;
 
 int asmshader_parse (void);
 
-#endif /* !YY_ASMSHADER_ASMSHADER_TAB_H_INCLUDED  */
+#endif /* !YY_ASMSHADER_E_REACTOSSYNC_GCC_DLL_DIRECTX_WINE_D3DCOMPILER_43_ASMSHADER_TAB_H_INCLUDED  */
index 5948d57..32b37d0 100644 (file)
@@ -20,8 +20,6 @@
  */
 
 %{
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #include "d3dcompiler_private.h"
@@ -30,13 +28,13 @@ WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
 
 struct asm_parser asm_ctx;
 
-void asmparser_message(struct asm_parser *ctx, const char *fmt, ...)
+void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt, ...)
 {
-    va_list args;
+    __ms_va_list args;
 
-    va_start(args, fmt);
+    __ms_va_start(args, fmt);
     compilation_message(&ctx->messages, fmt, args);
-    va_end(args);
+    __ms_va_end(args);
 }
 
 static void asmshader_error(char const *s) {
index 1b31cec..bf9ca37 100644 (file)
@@ -1,6 +1,6 @@
-#line 2 "asmshader.yy.c"
+#line 1 "asmshader.yy.c"
 
-#line 4 "asmshader.yy.c"
+#line 3 "asmshader.yy.c"
 
 #define  YY_INT_ALIGNED short int
 
@@ -8,11 +8,17 @@
 
 #define yy_create_buffer asmshader__create_buffer
 #define yy_delete_buffer asmshader__delete_buffer
-#define yy_flex_debug asmshader__flex_debug
+#define yy_scan_buffer asmshader__scan_buffer
+#define yy_scan_string asmshader__scan_string
+#define yy_scan_bytes asmshader__scan_bytes
 #define yy_init_buffer asmshader__init_buffer
 #define yy_flush_buffer asmshader__flush_buffer
 #define yy_load_buffer_state asmshader__load_buffer_state
 #define yy_switch_to_buffer asmshader__switch_to_buffer
+#define yypush_buffer_state asmshader_push_buffer_state
+#define yypop_buffer_state asmshader_pop_buffer_state
+#define yyensure_buffer_stack asmshader_ensure_buffer_stack
+#define yy_flex_debug asmshader__flex_debug
 #define yyin asmshader_in
 #define yyleng asmshader_leng
 #define yylex asmshader_lex
 
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
-#define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
 
+#ifdef yy_create_buffer
+#define asmshader__create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer asmshader__create_buffer
+#endif
+
+#ifdef yy_delete_buffer
+#define asmshader__delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer asmshader__delete_buffer
+#endif
+
+#ifdef yy_scan_buffer
+#define asmshader__scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer asmshader__scan_buffer
+#endif
+
+#ifdef yy_scan_string
+#define asmshader__scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string asmshader__scan_string
+#endif
+
+#ifdef yy_scan_bytes
+#define asmshader__scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes asmshader__scan_bytes
+#endif
+
+#ifdef yy_init_buffer
+#define asmshader__init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer asmshader__init_buffer
+#endif
+
+#ifdef yy_flush_buffer
+#define asmshader__flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer asmshader__flush_buffer
+#endif
+
+#ifdef yy_load_buffer_state
+#define asmshader__load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state asmshader__load_buffer_state
+#endif
+
+#ifdef yy_switch_to_buffer
+#define asmshader__switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer asmshader__switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define asmshader_push_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state asmshader_push_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define asmshader_pop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state asmshader_pop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define asmshader_ensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack asmshader_ensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define asmshader_lex_ALREADY_DEFINED
+#else
+#define yylex asmshader_lex
+#endif
+
+#ifdef yyrestart
+#define asmshader_restart_ALREADY_DEFINED
+#else
+#define yyrestart asmshader_restart
+#endif
+
+#ifdef yylex_init
+#define asmshader_lex_init_ALREADY_DEFINED
+#else
+#define yylex_init asmshader_lex_init
+#endif
+
+#ifdef yylex_init_extra
+#define asmshader_lex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra asmshader_lex_init_extra
+#endif
+
+#ifdef yylex_destroy
+#define asmshader_lex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy asmshader_lex_destroy
+#endif
+
+#ifdef yyget_debug
+#define asmshader_get_debug_ALREADY_DEFINED
+#else
+#define yyget_debug asmshader_get_debug
+#endif
+
+#ifdef yyset_debug
+#define asmshader_set_debug_ALREADY_DEFINED
+#else
+#define yyset_debug asmshader_set_debug
+#endif
+
+#ifdef yyget_extra
+#define asmshader_get_extra_ALREADY_DEFINED
+#else
+#define yyget_extra asmshader_get_extra
+#endif
+
+#ifdef yyset_extra
+#define asmshader_set_extra_ALREADY_DEFINED
+#else
+#define yyset_extra asmshader_set_extra
+#endif
+
+#ifdef yyget_in
+#define asmshader_get_in_ALREADY_DEFINED
+#else
+#define yyget_in asmshader_get_in
+#endif
+
+#ifdef yyset_in
+#define asmshader_set_in_ALREADY_DEFINED
+#else
+#define yyset_in asmshader_set_in
+#endif
+
+#ifdef yyget_out
+#define asmshader_get_out_ALREADY_DEFINED
+#else
+#define yyget_out asmshader_get_out
+#endif
+
+#ifdef yyset_out
+#define asmshader_set_out_ALREADY_DEFINED
+#else
+#define yyset_out asmshader_set_out
+#endif
+
+#ifdef yyget_leng
+#define asmshader_get_leng_ALREADY_DEFINED
+#else
+#define yyget_leng asmshader_get_leng
+#endif
+
+#ifdef yyget_text
+#define asmshader_get_text_ALREADY_DEFINED
+#else
+#define yyget_text asmshader_get_text
+#endif
+
+#ifdef yyget_lineno
+#define asmshader_get_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno asmshader_get_lineno
+#endif
+
+#ifdef yyset_lineno
+#define asmshader_set_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno asmshader_set_lineno
+#endif
+
+#ifdef yywrap
+#define asmshader_wrap_ALREADY_DEFINED
+#else
+#define yywrap asmshader_wrap
+#endif
+
+#ifdef yyalloc
+#define asmshader_alloc_ALREADY_DEFINED
+#else
+#define yyalloc asmshader_alloc
+#endif
+
+#ifdef yyrealloc
+#define asmshader_realloc_ALREADY_DEFINED
+#else
+#define yyrealloc asmshader_realloc
+#endif
+
+#ifdef yyfree
+#define asmshader_free_ALREADY_DEFINED
+#else
+#define yyfree asmshader_free
+#endif
+
+#ifdef yytext
+#define asmshader_text_ALREADY_DEFINED
+#else
+#define yytext asmshader_text
+#endif
+
+#ifdef yyleng
+#define asmshader_leng_ALREADY_DEFINED
+#else
+#define yyleng asmshader_leng
+#endif
+
+#ifdef yyin
+#define asmshader_in_ALREADY_DEFINED
+#else
+#define yyin asmshader_in
+#endif
+
+#ifdef yyout
+#define asmshader_out_ALREADY_DEFINED
+#else
+#define yyout asmshader_out
+#endif
+
+#ifdef yy_flex_debug
+#define asmshader__flex_debug_ALREADY_DEFINED
+#else
+#define yy_flex_debug asmshader__flex_debug
+#endif
+
+#ifdef yylineno
+#define asmshader_lineno_ALREADY_DEFINED
+#else
+#define yylineno asmshader_lineno
+#endif
+
 /* First, we deal with  platform-specific or compiler-specific issues. */
 
 /* begin standard C headers. */
@@ -103,60 +343,48 @@ typedef unsigned int flex_uint32_t;
 #define UINT32_MAX             (4294967295U)
 #endif
 
+#ifndef SIZE_MAX
+#define SIZE_MAX               (~(size_t)0)
+#endif
+
 #endif /* ! C99 */
 
 #endif /* ! FLEXINT_H */
 
-#ifdef __cplusplus
-
-/* The "const" storage-class-modifier is valid. */
-#define YY_USE_CONST
-
-#else  /* ! __cplusplus */
-
-/* C99 requires __STDC__ to be defined as 1. */
-#if defined (__STDC__)
+/* begin standard C++ headers. */
 
-#define YY_USE_CONST
-
-#endif /* defined (__STDC__) */
-#endif /* ! __cplusplus */
-
-#ifdef YY_USE_CONST
+/* TODO: this is always defined, so inline it */
 #define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
 #else
-#define yyconst
+#define yynoreturn
 #endif
 
 /* Returned upon end-of-file. */
 #define YY_NULL 0
 
-/* Promotes a possibly negative, possibly signed char to an unsigned
- * integer for use as an array index.  If the signed char is negative,
- * we want to instead treat it as an 8-bit unsigned char, hence the
- * double cast.
+/* Promotes a possibly negative, possibly signed char to an
+ *   integer in range [0..255] for use as an array index.
  */
-#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
+#define YY_SC_TO_UI(c) ((YY_CHAR) (c))
 
 /* Enter a start condition.  This macro really ought to take a parameter,
  * but we do it the disgusting crufty way forced on us by the ()-less
  * definition of BEGIN.
  */
 #define BEGIN (yy_start) = 1 + 2 *
-
 /* Translate the current start state into a value that can be later handed
  * to BEGIN to return to the state.  The YYSTATE alias is for lex
  * compatibility.
  */
 #define YY_START (((yy_start) - 1) / 2)
 #define YYSTATE YY_START
-
 /* Action number for EOF rule of a given start state. */
 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
-
 /* Special action meaning "start processing a new file". */
-#define YY_NEW_FILE asmshader_restart(asmshader_in  )
-
+#define YY_NEW_FILE yyrestart( yyin  )
 #define YY_END_OF_BUFFER_CHAR 0
 
 /* Size of default input buffer. */
@@ -181,37 +409,37 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-extern int asmshader_leng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern int yyleng;
 
-extern FILE *asmshader_in, *asmshader_out;
+extern FILE *yyin, *yyout;
 
 #define EOB_ACT_CONTINUE_SCAN 0
 #define EOB_ACT_END_OF_FILE 1
 #define EOB_ACT_LAST_MATCH 2
-
+    
     #define YY_LESS_LINENO(n)
+    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up asmshader_text. */ \
+               /* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
                *yy_cp = (yy_hold_char); \
                YY_RESTORE_YY_MORE_OFFSET \
                (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
-               YY_DO_BEFORE_ACTION; /* set up asmshader_text again */ \
+               YY_DO_BEFORE_ACTION; /* set up yytext again */ \
                } \
        while ( 0 )
-
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -224,7 +452,7 @@ struct yy_buffer_state
        /* Size of input buffer in bytes, not including room for EOB
         * characters.
         */
-       yy_size_t yy_buf_size;
+       int yy_buf_size;
 
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
@@ -252,7 +480,7 @@ struct yy_buffer_state
 
     int yy_bs_lineno; /**< The line count. */
     int yy_bs_column; /**< The column count. */
-    
+
        /* Whether to try to fill the input buffer when we reach the
         * end of it.
         */
@@ -269,8 +497,8 @@ struct yy_buffer_state
         * possible backing-up.
         *
         * When we actually see the EOF, we change the status to "new"
-        * (via asmshader_restart()), so that the user can continue scanning by
-        * just pointing asmshader_in at a new input file.
+        * (via yyrestart()), so that the user can continue scanning by
+        * just pointing yyin at a new input file.
         */
 #define YY_BUFFER_EOF_PENDING 2
 
@@ -280,7 +508,7 @@ struct yy_buffer_state
 /* Stack of input buffers. */
 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
-static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
+static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */
 
 /* We provide macros for accessing buffer states in case in the
  * future we want to put the buffer states in a more general
@@ -291,106 +519,101 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
                           : NULL)
-
 /* Same as previous macro, but useful when we know that the buffer stack is not
  * NULL or when we need an lvalue. For internal use only.
  */
 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
 
-/* yy_hold_char holds the character lost when asmshader_text is formed. */
+/* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
 static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int asmshader_leng;
+int yyleng;
 
 /* Points to current character in buffer. */
-static char *yy_c_buf_p = (char *) 0;
+static char *yy_c_buf_p = NULL;
 static int yy_init = 0;                /* whether we need to initialize */
 static int yy_start = 0;       /* start state number */
 
-/* Flag which is used to allow asmshader_wrap()'s to do buffer switches
- * instead of setting up a fresh asmshader_in.  A bit of a hack ...
+/* Flag which is used to allow yywrap()'s to do buffer switches
+ * instead of setting up a fresh yyin.  A bit of a hack ...
  */
 static int yy_did_buffer_switch_on_eof;
 
-void asmshader_restart (FILE *input_file  );
-void asmshader__switch_to_buffer (YY_BUFFER_STATE new_buffer  );
-YY_BUFFER_STATE asmshader__create_buffer (FILE *file,int size  );
-void asmshader__delete_buffer (YY_BUFFER_STATE b  );
-void asmshader__flush_buffer (YY_BUFFER_STATE b  );
-void asmshader_push_buffer_state (YY_BUFFER_STATE new_buffer  );
-void asmshader_pop_buffer_state (void );
-
-static void asmshader_ensure_buffer_stack (void );
-static void asmshader__load_buffer_state (void );
-static void asmshader__init_buffer (YY_BUFFER_STATE b,FILE *file  );
+void yyrestart ( FILE *input_file  );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
+void yy_delete_buffer ( YY_BUFFER_STATE b  );
+void yy_flush_buffer ( YY_BUFFER_STATE b  );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state ( void );
 
-#define YY_FLUSH_BUFFER asmshader__flush_buffer(YY_CURRENT_BUFFER )
+static void yyensure_buffer_stack ( void );
+static void yy_load_buffer_state ( void );
+static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file  );
+#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER )
 
-YY_BUFFER_STATE asmshader__scan_buffer (char *base,yy_size_t size  );
-YY_BUFFER_STATE asmshader__scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE asmshader__scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
 
-void *asmshader_alloc (yy_size_t  );
-void *asmshader_realloc (void *,yy_size_t  );
-void asmshader_free (void *  );
-
-#define yy_new_buffer asmshader__create_buffer
+void *yyalloc ( yy_size_t  );
+void *yyrealloc ( void *, yy_size_t  );
+void yyfree ( void *  );
 
+#define yy_new_buffer yy_create_buffer
 #define yy_set_interactive(is_interactive) \
        { \
        if ( ! YY_CURRENT_BUFFER ){ \
-        asmshader_ensure_buffer_stack (); \
+        yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            asmshader__create_buffer(asmshader_in,YY_BUF_SIZE ); \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
        }
-
 #define yy_set_bol(at_bol) \
        { \
        if ( ! YY_CURRENT_BUFFER ){\
-        asmshader_ensure_buffer_stack (); \
+        yyensure_buffer_stack (); \
                YY_CURRENT_BUFFER_LVALUE =    \
-            asmshader__create_buffer(asmshader_in,YY_BUF_SIZE ); \
+            yy_create_buffer( yyin, YY_BUF_SIZE ); \
        } \
        YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
        }
-
 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
 
 /* Begin user sect3 */
 
-#define asmshader_wrap(n) 1
+#define asmshader_wrap() (/*CONSTCOND*/1)
 #define YY_SKIP_YYWRAP
+typedef flex_uint8_t YY_CHAR;
 
-typedef unsigned char YY_CHAR;
-
-FILE *asmshader_in = (FILE *) 0, *asmshader_out = (FILE *) 0;
+FILE *yyin = NULL, *yyout = NULL;
 
 typedef int yy_state_type;
 
-extern int asmshader_lineno;
+extern int yylineno;
+int yylineno = 1;
 
-int asmshader_lineno = 1;
-
-extern char *asmshader_text;
-#define yytext_ptr asmshader_text
+extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
+#define yytext_ptr yytext
 
-static yy_state_type yy_get_previous_state (void );
-static yy_state_type yy_try_NUL_trans (yy_state_type current_state  );
-static int yy_get_next_buffer (void );
-static void yy_fatal_error (yyconst char msg[]  );
+static yy_state_type yy_get_previous_state ( void );
+static yy_state_type yy_try_NUL_trans ( yy_state_type current_state  );
+static int yy_get_next_buffer ( void );
+static void yynoreturn yy_fatal_error ( const char* msg  );
 
 /* Done after the current pattern has been matched and before the
- * corresponding action - sets up asmshader_text.
+ * corresponding action - sets up yytext.
  */
 #define YY_DO_BEFORE_ACTION \
        (yytext_ptr) = yy_bp; \
-       asmshader_leng = (size_t) (yy_cp - yy_bp); \
+       yyleng = (int) (yy_cp - yy_bp); \
        (yy_hold_char) = *yy_cp; \
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
-
 #define YY_NUM_RULES 174
 #define YY_END_OF_BUFFER 175
 /* This struct is not used in this scanner,
@@ -400,7 +623,7 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[481] =
+static const flex_int16_t yy_accept[481] =
     {   0,
         0,    0,  175,  173,  171,  172,  173,  149,  173,  141,
       142,  143,  139,  140,  119,  173,  136,  170,  173,  120,
@@ -456,7 +679,7 @@ static yyconst flex_int16_t yy_accept[481] =
         0,    0,  151,  158,   74,   71,  152,  151,  152,    0
     } ;
 
-static yyconst flex_int32_t yy_ec[256] =
+static const YY_CHAR yy_ec[256] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
@@ -488,7 +711,7 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[56] =
+static const YY_CHAR yy_meta[56] =
     {   0,
         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
         1,    3,    1,    4,    4,    4,    4,    4,    4,    4,
@@ -498,7 +721,7 @@ static yyconst flex_int32_t yy_meta[56] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[491] =
+static const flex_int16_t yy_base[491] =
     {   0,
         0,    0,  889,  890,  886,  890,  884,  890,  883,  890,
       890,  890,  890,   44,   51,  872,   45,    0,   67,   59,
@@ -555,7 +778,7 @@ static yyconst flex_int16_t yy_base[491] =
       635,  645,  649,  658,  666,  674,  682,  691,  699,  711
     } ;
 
-static yyconst flex_int16_t yy_def[491] =
+static const flex_int16_t yy_def[491] =
     {   0,
       480,    1,  480,  480,  480,  480,  480,  480,  481,  480,
       480,  480,  480,  480,  480,  480,  482,  483,  480,  480,
@@ -612,7 +835,7 @@ static yyconst flex_int16_t yy_def[491] =
       480,  480,  480,  480,  480,  480,  480,  480,  480,  480
     } ;
 
-static yyconst flex_int16_t yy_nxt[946] =
+static const flex_int16_t yy_nxt[946] =
     {   0,
         4,    5,    6,    7,    8,    9,   10,   11,   12,   13,
        14,   15,   16,   17,   17,   17,   17,   17,   17,   17,
@@ -720,7 +943,7 @@ static yyconst flex_int16_t yy_nxt[946] =
       480,  480,  480,  480,  480
     } ;
 
-static yyconst flex_int16_t yy_chk[946] =
+static const flex_int16_t yy_chk[946] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -831,8 +1054,8 @@ static yyconst flex_int16_t yy_chk[946] =
 static yy_state_type yy_last_accepting_state;
 static char *yy_last_accepting_cpos;
 
-extern int asmshader__flex_debug;
-int asmshader__flex_debug = 0;
+extern int yy_flex_debug;
+int yy_flex_debug = 0;
 
 /* The intent behind this definition is that it'll catch
  * any uses of REJECT which flex missed.
@@ -841,7 +1064,7 @@ int asmshader__flex_debug = 0;
 #define yymore() yymore_used_but_not_detected
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
-char *asmshader_text;
+char *yytext;
 #line 1 "asmshader.l"
 /*
  * Direct3D shader assembler
@@ -864,14 +1087,13 @@ char *asmshader_text;
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  */
 #line 23 "asmshader.l"
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #include "d3dcompiler_private.h"
 #include "asmshader.tab.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
+#line 1096 "asmshader.yy.c"
 #define YY_NO_INPUT 1
 /* Swizzles and writemasks consist of a dot and up to 4 x, y, z or w characters,
  * or up to 4 a, r, g, b characters. There are different rules for swizzles and
@@ -882,7 +1104,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
 /* Not really a register, but it is considered as such */
 /* Comments */
 /* Whitespaces are spaces, tabs and newlines */
-#line 886 "asmshader.yy.c"
+#line 1107 "asmshader.yy.c"
 
 #define INITIAL 0
 
@@ -893,41 +1115,41 @@ WINE_DEFAULT_DEBUG_CHANNEL(asmshader);
  */
 #include <unistd.h>
 #endif
-
+    
 #ifndef YY_EXTRA_TYPE
 #define YY_EXTRA_TYPE void *
 #endif
 
-static int yy_init_globals (void );
+static int yy_init_globals ( void );
 
 /* Accessor methods to globals.
    These are made visible to non-reentrant scanners for convenience. */
 
-int asmshader_lex_destroy (void );
+int yylex_destroy ( void );
 
-int asmshader_get_debug (void );
+int yyget_debug ( void );
 
-void asmshader_set_debug (int debug_flag  );
+void yyset_debug ( int debug_flag  );
 
-YY_EXTRA_TYPE asmshader_get_extra (void );
+YY_EXTRA_TYPE yyget_extra ( void );
 
-void asmshader_set_extra (YY_EXTRA_TYPE user_defined  );
+void yyset_extra ( YY_EXTRA_TYPE user_defined  );
 
-FILE *asmshader_get_in (void );
+FILE *yyget_in ( void );
 
-void asmshader_set_in  (FILE * in_str  );
+void yyset_in  ( FILE * _in_str  );
 
-FILE *asmshader_get_out (void );
+FILE *yyget_out ( void );
 
-void asmshader_set_out  (FILE * out_str  );
+void yyset_out  ( FILE * _out_str  );
 
-int asmshader_get_leng (void );
+                       int yyget_leng ( void );
 
-char *asmshader_get_text (void );
+char *yyget_text ( void );
 
-int asmshader_get_lineno (void );
+int yyget_lineno ( void );
 
-void asmshader_set_lineno (int line_number  );
+void yyset_lineno ( int _line_number  );
 
 /* Macros after this point can all be overridden by user definitions in
  * section 1.
@@ -935,26 +1157,29 @@ void asmshader_set_lineno (int line_number  );
 
 #ifndef YY_SKIP_YYWRAP
 #ifdef __cplusplus
-extern "C" int asmshader_wrap (void );
+extern "C" int yywrap ( void );
 #else
-extern int asmshader_wrap (void );
+extern int yywrap ( void );
 #endif
 #endif
 
+#ifndef YY_NO_UNPUT
+    
+#endif
+
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char *,yyconst char *,int );
+static void yy_flex_strncpy ( char *, const char *, int );
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * );
+static int yy_flex_strlen ( const char * );
 #endif
 
 #ifndef YY_NO_INPUT
-
 #ifdef __cplusplus
-static int yyinput (void );
+static int yyinput ( void );
 #else
-static int input (void );
+static int input ( void );
 #endif
 
 #endif
@@ -974,7 +1199,7 @@ static int input (void );
 /* This used to be an fputs(), but since the string might contain NUL's,
  * we now use fwrite().
  */
-#define ECHO do { if (fwrite( asmshader_text, asmshader_leng, 1, asmshader_out )) {} } while (0)
+#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0)
 #endif
 
 /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
@@ -985,20 +1210,20 @@ static int input (void );
        if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
                { \
                int c = '*'; \
-               size_t n; \
+               int n; \
                for ( n = 0; n < max_size && \
-                            (c = getc( asmshader_in )) != EOF && c != '\n'; ++n ) \
+                            (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
                        buf[n] = (char) c; \
                if ( c == '\n' ) \
                        buf[n++] = (char) c; \
-               if ( c == EOF && ferror( asmshader_in ) ) \
+               if ( c == EOF && ferror( yyin ) ) \
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
                result = n; \
                } \
        else \
                { \
                errno=0; \
-               while ( (result = fread(buf, 1, max_size, asmshader_in))==0 && ferror(asmshader_in)) \
+               while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \
                        { \
                        if( errno != EINTR) \
                                { \
@@ -1006,7 +1231,7 @@ static int input (void );
                                break; \
                                } \
                        errno=0; \
-                       clearerr(asmshader_in); \
+                       clearerr(yyin); \
                        } \
                }\
 \
@@ -1039,12 +1264,12 @@ static int input (void );
 #ifndef YY_DECL
 #define YY_DECL_IS_OURS 1
 
-extern int asmshader_lex (void);
+extern int yylex (void);
 
-#define YY_DECL int asmshader_lex (void)
+#define YY_DECL int yylex (void)
 #endif /* !YY_DECL */
 
-/* Code executed at the beginning of each rule, after asmshader_text and asmshader_leng
+/* Code executed at the beginning of each rule, after yytext and yyleng
  * have been set up.
  */
 #ifndef YY_USER_ACTION
@@ -1053,7 +1278,7 @@ extern int asmshader_lex (void);
 
 /* Code executed at the end of each rule. */
 #ifndef YY_BREAK
-#define YY_BREAK break;
+#define YY_BREAK /*LINTED*/break;
 #endif
 
 #define YY_RULE_SETUP \
@@ -1063,16 +1288,10 @@ extern int asmshader_lex (void);
  */
 YY_DECL
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp, *yy_bp;
-       register int yy_act;
+       yy_state_type yy_current_state;
+       char *yy_cp, *yy_bp;
+       int yy_act;
     
-#line 105 "asmshader.l"
-
-
-    /* Common instructions(vertex and pixel shaders) */
-#line 1075 "asmshader.yy.c"
-
        if ( !(yy_init) )
                {
                (yy_init) = 1;
@@ -1084,26 +1303,34 @@ YY_DECL
                if ( ! (yy_start) )
                        (yy_start) = 1; /* first start state */
 
-               if ( ! asmshader_in )
-                       asmshader_in = stdin;
+               if ( ! yyin )
+                       yyin = stdin;
 
-               if ( ! asmshader_out )
-                       asmshader_out = stdout;
+               if ( ! yyout )
+                       yyout = stdout;
 
                if ( ! YY_CURRENT_BUFFER ) {
-                       asmshader_ensure_buffer_stack ();
+                       yyensure_buffer_stack ();
                        YY_CURRENT_BUFFER_LVALUE =
-                               asmshader__create_buffer(asmshader_in,YY_BUF_SIZE );
+                               yy_create_buffer( yyin, YY_BUF_SIZE );
                }
 
-               asmshader__load_buffer_state( );
+               yy_load_buffer_state(  );
                }
 
-       while ( 1 )             /* loops until end-of-file is reached */
+       {
+#line 103 "asmshader.l"
+
+
+#line 106 "asmshader.l"
+    /* Common instructions(vertex and pixel shaders) */
+#line 1327 "asmshader.yy.c"
+
+       while ( /*CONSTCOND*/1 )                /* loops until end-of-file is reached */
                {
                yy_cp = (yy_c_buf_p);
 
-               /* Support of asmshader_text. */
+               /* Support of yytext. */
                *yy_cp = (yy_hold_char);
 
                /* yy_bp points to the position in yy_ch_buf of the start of
@@ -1115,7 +1342,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
                        if ( yy_accept[yy_current_state] )
                                {
                                (yy_last_accepting_state) = yy_current_state;
@@ -1125,9 +1352,9 @@ yy_match:
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
                                if ( yy_current_state >= 481 )
-                                       yy_c = yy_meta[(unsigned int) yy_c];
+                                       yy_c = yy_meta[yy_c];
                                }
-                       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+                       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                        ++yy_cp;
                        }
                while ( yy_current_state != 480 );
@@ -1152,564 +1379,564 @@ do_action:    /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 108 "asmshader.l"
+#line 107 "asmshader.l"
 {return INSTR_ADD;          }
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 109 "asmshader.l"
+#line 108 "asmshader.l"
 {return INSTR_NOP;          }
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 110 "asmshader.l"
+#line 109 "asmshader.l"
 {return INSTR_MOV;          }
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 111 "asmshader.l"
+#line 110 "asmshader.l"
 {return INSTR_SUB;          }
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 112 "asmshader.l"
+#line 111 "asmshader.l"
 {return INSTR_MAD;          }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 113 "asmshader.l"
+#line 112 "asmshader.l"
 {return INSTR_MUL;          }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 114 "asmshader.l"
+#line 113 "asmshader.l"
 {return INSTR_RCP;          }
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 115 "asmshader.l"
+#line 114 "asmshader.l"
 {return INSTR_RSQ;          }
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 116 "asmshader.l"
+#line 115 "asmshader.l"
 {return INSTR_DP3;          }
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 117 "asmshader.l"
+#line 116 "asmshader.l"
 {return INSTR_DP4;          }
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 118 "asmshader.l"
+#line 117 "asmshader.l"
 {return INSTR_MIN;          }
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 119 "asmshader.l"
+#line 118 "asmshader.l"
 {return INSTR_MAX;          }
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 120 "asmshader.l"
+#line 119 "asmshader.l"
 {return INSTR_SLT;          }
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 121 "asmshader.l"
+#line 120 "asmshader.l"
 {return INSTR_SGE;          }
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 122 "asmshader.l"
+#line 121 "asmshader.l"
 {return INSTR_ABS;          }
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 123 "asmshader.l"
+#line 122 "asmshader.l"
 {return INSTR_EXP;          }
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 124 "asmshader.l"
+#line 123 "asmshader.l"
 {return INSTR_LOG;          }
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 125 "asmshader.l"
+#line 124 "asmshader.l"
 {return INSTR_EXPP;         }
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 126 "asmshader.l"
+#line 125 "asmshader.l"
 {return INSTR_LOGP;         }
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 127 "asmshader.l"
+#line 126 "asmshader.l"
 {return INSTR_DST;          }
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 128 "asmshader.l"
+#line 127 "asmshader.l"
 {return INSTR_LRP;          }
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 129 "asmshader.l"
+#line 128 "asmshader.l"
 {return INSTR_FRC;          }
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 130 "asmshader.l"
+#line 129 "asmshader.l"
 {return INSTR_POW;          }
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 131 "asmshader.l"
+#line 130 "asmshader.l"
 {return INSTR_CRS;          }
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 132 "asmshader.l"
+#line 131 "asmshader.l"
 {return INSTR_SGN;          }
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 133 "asmshader.l"
+#line 132 "asmshader.l"
 {return INSTR_NRM;          }
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 134 "asmshader.l"
+#line 133 "asmshader.l"
 {return INSTR_SINCOS;       }
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 135 "asmshader.l"
+#line 134 "asmshader.l"
 {return INSTR_M4x4;         }
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 136 "asmshader.l"
+#line 135 "asmshader.l"
 {return INSTR_M4x3;         }
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 137 "asmshader.l"
+#line 136 "asmshader.l"
 {return INSTR_M3x4;         }
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 138 "asmshader.l"
+#line 137 "asmshader.l"
 {return INSTR_M3x3;         }
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 139 "asmshader.l"
+#line 138 "asmshader.l"
 {return INSTR_M3x2;         }
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 140 "asmshader.l"
+#line 139 "asmshader.l"
 {return INSTR_DCL;          }
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 141 "asmshader.l"
+#line 140 "asmshader.l"
 {return INSTR_DEF;          }
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 142 "asmshader.l"
+#line 141 "asmshader.l"
 {return INSTR_DEFB;         }
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 143 "asmshader.l"
+#line 142 "asmshader.l"
 {return INSTR_DEFI;         }
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 144 "asmshader.l"
+#line 143 "asmshader.l"
 {return INSTR_REP;          }
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 145 "asmshader.l"
+#line 144 "asmshader.l"
 {return INSTR_ENDREP;       }
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 146 "asmshader.l"
+#line 145 "asmshader.l"
 {return INSTR_IF;           }
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 147 "asmshader.l"
+#line 146 "asmshader.l"
 {return INSTR_ELSE;         }
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 148 "asmshader.l"
+#line 147 "asmshader.l"
 {return INSTR_ENDIF;        }
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 149 "asmshader.l"
+#line 148 "asmshader.l"
 {return INSTR_BREAK;        }
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 150 "asmshader.l"
+#line 149 "asmshader.l"
 {return INSTR_BREAKP;       }
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 151 "asmshader.l"
+#line 150 "asmshader.l"
 {return INSTR_CALL;         }
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 152 "asmshader.l"
+#line 151 "asmshader.l"
 {return INSTR_CALLNZ;       }
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 153 "asmshader.l"
+#line 152 "asmshader.l"
 {return INSTR_LOOP;         }
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 154 "asmshader.l"
+#line 153 "asmshader.l"
 {return INSTR_RET;          }
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 155 "asmshader.l"
+#line 154 "asmshader.l"
 {return INSTR_ENDLOOP;      }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 156 "asmshader.l"
+#line 155 "asmshader.l"
 {return INSTR_LABEL;        }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 157 "asmshader.l"
+#line 156 "asmshader.l"
 {return INSTR_SETP;         }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 158 "asmshader.l"
+#line 157 "asmshader.l"
 {return INSTR_TEXLDL;       }
        YY_BREAK
 /* Vertex shader only instructions  */
 case 52:
 YY_RULE_SETUP
-#line 161 "asmshader.l"
+#line 160 "asmshader.l"
 {return INSTR_LIT;          }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 162 "asmshader.l"
+#line 161 "asmshader.l"
 {return INSTR_MOVA;         }
        YY_BREAK
 /* Pixel shader only instructions   */
 case 54:
 YY_RULE_SETUP
-#line 165 "asmshader.l"
+#line 164 "asmshader.l"
 {return INSTR_CND;          }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 166 "asmshader.l"
+#line 165 "asmshader.l"
 {return INSTR_CMP;          }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 167 "asmshader.l"
+#line 166 "asmshader.l"
 {return INSTR_DP2ADD;       }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 168 "asmshader.l"
+#line 167 "asmshader.l"
 {return INSTR_TEXCOORD;     }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 169 "asmshader.l"
+#line 168 "asmshader.l"
 {return INSTR_TEXCRD;       }
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 170 "asmshader.l"
+#line 169 "asmshader.l"
 {return INSTR_TEXKILL;      }
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 171 "asmshader.l"
+#line 170 "asmshader.l"
 {return INSTR_TEX;          }
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 172 "asmshader.l"
+#line 171 "asmshader.l"
 {return INSTR_TEXLD;        }
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 173 "asmshader.l"
+#line 172 "asmshader.l"
 {return INSTR_TEXBEM;       }
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 174 "asmshader.l"
+#line 173 "asmshader.l"
 {return INSTR_TEXBEML;      }
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 175 "asmshader.l"
+#line 174 "asmshader.l"
 {return INSTR_TEXREG2AR;    }
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 176 "asmshader.l"
+#line 175 "asmshader.l"
 {return INSTR_TEXREG2GB;    }
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 177 "asmshader.l"
+#line 176 "asmshader.l"
 {return INSTR_TEXREG2RGB;   }
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 178 "asmshader.l"
+#line 177 "asmshader.l"
 {return INSTR_TEXM3x2PAD;   }
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 179 "asmshader.l"
+#line 178 "asmshader.l"
 {return INSTR_TEXM3x2TEX;   }
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 180 "asmshader.l"
+#line 179 "asmshader.l"
 {return INSTR_TEXM3x3PAD;   }
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 181 "asmshader.l"
+#line 180 "asmshader.l"
 {return INSTR_TEXM3x3SPEC;  }
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 182 "asmshader.l"
+#line 181 "asmshader.l"
 {return INSTR_TEXM3x3VSPEC; }
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 183 "asmshader.l"
+#line 182 "asmshader.l"
 {return INSTR_TEXM3x3TEX;   }
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 184 "asmshader.l"
+#line 183 "asmshader.l"
 {return INSTR_TEXDP3TEX;    }
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 185 "asmshader.l"
+#line 184 "asmshader.l"
 {return INSTR_TEXM3x2DEPTH; }
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 186 "asmshader.l"
+#line 185 "asmshader.l"
 {return INSTR_TEXDP3;       }
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 187 "asmshader.l"
+#line 186 "asmshader.l"
 {return INSTR_TEXM3x3;      }
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 188 "asmshader.l"
+#line 187 "asmshader.l"
 {return INSTR_TEXDEPTH;     }
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 189 "asmshader.l"
+#line 188 "asmshader.l"
 {return INSTR_BEM;          }
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 190 "asmshader.l"
+#line 189 "asmshader.l"
 {return INSTR_DSX;          }
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 191 "asmshader.l"
+#line 190 "asmshader.l"
 {return INSTR_DSY;          }
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 192 "asmshader.l"
+#line 191 "asmshader.l"
 {return INSTR_TEXLDP;       }
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 193 "asmshader.l"
+#line 192 "asmshader.l"
 {return INSTR_TEXLDB;       }
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 194 "asmshader.l"
+#line 193 "asmshader.l"
 {return INSTR_TEXLDD;       }
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 195 "asmshader.l"
+#line 194 "asmshader.l"
 {return INSTR_PHASE;        }
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 197 "asmshader.l"
+#line 196 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_TEMP;
                         }
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 201 "asmshader.l"
+#line 200 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_OUTPUT;
                         }
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 205 "asmshader.l"
+#line 204 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_INPUT;
                         }
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 209 "asmshader.l"
+#line 208 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_CONSTFLOAT;
                         }
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 213 "asmshader.l"
+#line 212 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_CONSTINT;
                         }
        YY_BREAK
 case 90:
 YY_RULE_SETUP
-#line 217 "asmshader.l"
+#line 216 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_CONSTBOOL;
                         }
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 221 "asmshader.l"
+#line 220 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_TEXTURE;
                         }
        YY_BREAK
 case 92:
 YY_RULE_SETUP
-#line 225 "asmshader.l"
+#line 224 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 2);
+                            asmshader_lval.regnum = atoi(yytext + 2);
                             return REG_TEXCRDOUT;
                         }
        YY_BREAK
 case 93:
 YY_RULE_SETUP
-#line 229 "asmshader.l"
+#line 228 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_SAMPLER;
                         }
        YY_BREAK
 case 94:
 YY_RULE_SETUP
-#line 233 "asmshader.l"
+#line 232 "asmshader.l"
 {return REG_OPOS;           }
        YY_BREAK
 case 95:
 YY_RULE_SETUP
-#line 234 "asmshader.l"
+#line 233 "asmshader.l"
 {return REG_OFOG;           }
        YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 235 "asmshader.l"
+#line 234 "asmshader.l"
 {return REG_OPTS;           }
        YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 236 "asmshader.l"
+#line 235 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 2);
+                            asmshader_lval.regnum = atoi(yytext + 2);
                             return REG_VERTEXCOLOR;
                         }
        YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 240 "asmshader.l"
+#line 239 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 2);
+                            asmshader_lval.regnum = atoi(yytext + 2);
                             return REG_FRAGCOLOR;
                         }
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 244 "asmshader.l"
+#line 243 "asmshader.l"
 {return REG_FRAGDEPTH;      }
        YY_BREAK
 case 100:
 YY_RULE_SETUP
-#line 245 "asmshader.l"
+#line 244 "asmshader.l"
 {return REG_VPOS;           }
        YY_BREAK
 case 101:
 YY_RULE_SETUP
-#line 246 "asmshader.l"
+#line 245 "asmshader.l"
 {return REG_VFACE;          }
        YY_BREAK
 case 102:
 YY_RULE_SETUP
-#line 247 "asmshader.l"
+#line 246 "asmshader.l"
 {return REG_ADDRESS;        }
        YY_BREAK
 case 103:
 YY_RULE_SETUP
-#line 248 "asmshader.l"
+#line 247 "asmshader.l"
 {return REG_LOOP;           }
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 249 "asmshader.l"
+#line 248 "asmshader.l"
 {return REG_PREDICATE;      }
        YY_BREAK
 case 105:
 YY_RULE_SETUP
-#line 251 "asmshader.l"
+#line 250 "asmshader.l"
 {
-                            asmshader_lval.regnum = atoi(asmshader_text + 1);
+                            asmshader_lval.regnum = atoi(yytext + 1);
                             return REG_LABEL;
                         }
        YY_BREAK
@@ -1718,79 +1945,79 @@ YY_RULE_SETUP
      */
 case 106:
 YY_RULE_SETUP
-#line 259 "asmshader.l"
+#line 258 "asmshader.l"
 {return VER_VS10;       }
        YY_BREAK
 case 107:
 YY_RULE_SETUP
-#line 260 "asmshader.l"
+#line 259 "asmshader.l"
 {return VER_VS11;       }
        YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 262 "asmshader.l"
+#line 261 "asmshader.l"
 {return VER_VS20;       }
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 263 "asmshader.l"
+#line 262 "asmshader.l"
 {return VER_VS2X;       }
        YY_BREAK
 case 110:
 YY_RULE_SETUP
-#line 264 "asmshader.l"
+#line 263 "asmshader.l"
 {return VER_VS30;       }
        YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 266 "asmshader.l"
+#line 265 "asmshader.l"
 {return VER_PS10;       }
        YY_BREAK
 case 112:
 YY_RULE_SETUP
-#line 267 "asmshader.l"
+#line 266 "asmshader.l"
 {return VER_PS11;       }
        YY_BREAK
 case 113:
 YY_RULE_SETUP
-#line 268 "asmshader.l"
+#line 267 "asmshader.l"
 {return VER_PS12;       }
        YY_BREAK
 case 114:
 YY_RULE_SETUP
-#line 269 "asmshader.l"
+#line 268 "asmshader.l"
 {return VER_PS13;       }
        YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 270 "asmshader.l"
+#line 269 "asmshader.l"
 {return VER_PS14;       }
        YY_BREAK
 case 116:
 YY_RULE_SETUP
-#line 272 "asmshader.l"
+#line 271 "asmshader.l"
 {return VER_PS20;       }
        YY_BREAK
 case 117:
 YY_RULE_SETUP
-#line 273 "asmshader.l"
+#line 272 "asmshader.l"
 {return VER_PS2X;       }
        YY_BREAK
 case 118:
 YY_RULE_SETUP
-#line 274 "asmshader.l"
+#line 273 "asmshader.l"
 {return VER_PS30;       }
        YY_BREAK
 case 119:
 YY_RULE_SETUP
-#line 276 "asmshader.l"
-{return asmshader_text[0];      }
+#line 275 "asmshader.l"
+{return yytext[0];      }
        YY_BREAK
 case 120:
 YY_RULE_SETUP
-#line 277 "asmshader.l"
+#line 276 "asmshader.l"
 {
-                            switch(asmshader_text[0]) {
+                            switch(yytext[0]) {
                                 case 'x':
                                 case 'r':
                                     asmshader_lval.component = 0;
@@ -1814,92 +2041,92 @@ YY_RULE_SETUP
 /* Output modifiers */
 case 121:
 YY_RULE_SETUP
-#line 300 "asmshader.l"
+#line 299 "asmshader.l"
 {return SHIFT_X2;           }
        YY_BREAK
 case 122:
 YY_RULE_SETUP
-#line 301 "asmshader.l"
+#line 300 "asmshader.l"
 {return SHIFT_X4;           }
        YY_BREAK
 case 123:
 YY_RULE_SETUP
-#line 302 "asmshader.l"
+#line 301 "asmshader.l"
 {return SHIFT_X8;           }
        YY_BREAK
 case 124:
 YY_RULE_SETUP
-#line 303 "asmshader.l"
+#line 302 "asmshader.l"
 {return SHIFT_D2;           }
        YY_BREAK
 case 125:
 YY_RULE_SETUP
-#line 304 "asmshader.l"
+#line 303 "asmshader.l"
 {return SHIFT_D4;           }
        YY_BREAK
 case 126:
 YY_RULE_SETUP
-#line 305 "asmshader.l"
+#line 304 "asmshader.l"
 {return SHIFT_D8;           }
        YY_BREAK
 case 127:
 YY_RULE_SETUP
-#line 306 "asmshader.l"
+#line 305 "asmshader.l"
 {return MOD_SAT;            }
        YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 307 "asmshader.l"
+#line 306 "asmshader.l"
 {return MOD_PP;             }
        YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 308 "asmshader.l"
+#line 307 "asmshader.l"
 {return MOD_CENTROID;       }
        YY_BREAK
 /* compare params */
 case 130:
 YY_RULE_SETUP
-#line 311 "asmshader.l"
+#line 310 "asmshader.l"
 {return COMP_GT;            }
        YY_BREAK
 case 131:
 YY_RULE_SETUP
-#line 312 "asmshader.l"
+#line 311 "asmshader.l"
 {return COMP_LT;            }
        YY_BREAK
 case 132:
 YY_RULE_SETUP
-#line 313 "asmshader.l"
+#line 312 "asmshader.l"
 {return COMP_GE;            }
        YY_BREAK
 case 133:
 YY_RULE_SETUP
-#line 314 "asmshader.l"
+#line 313 "asmshader.l"
 {return COMP_LE;            }
        YY_BREAK
 case 134:
 YY_RULE_SETUP
-#line 315 "asmshader.l"
+#line 314 "asmshader.l"
 {return COMP_EQ;            }
        YY_BREAK
 case 135:
 YY_RULE_SETUP
-#line 316 "asmshader.l"
+#line 315 "asmshader.l"
 {return COMP_NE;            }
        YY_BREAK
 case 136:
 YY_RULE_SETUP
-#line 318 "asmshader.l"
+#line 317 "asmshader.l"
 {
-                            asmshader_lval.immval.val = atof(asmshader_text);
-                            asmshader_lval.immval.integer = ((strstr(asmshader_text, ".") == NULL) && (strstr(asmshader_text, "f") == NULL));
+                            asmshader_lval.immval.val = atof(yytext);
+                            asmshader_lval.immval.integer = ((strstr(yytext, ".") == NULL) && (strstr(yytext, "f") == NULL));
                             return IMMVAL;
                         }
        YY_BREAK
 case 137:
 YY_RULE_SETUP
-#line 323 "asmshader.l"
+#line 322 "asmshader.l"
 {
                             asmshader_lval.immbool = TRUE;
                             return IMMBOOL;
@@ -1907,7 +2134,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 138:
 YY_RULE_SETUP
-#line 327 "asmshader.l"
+#line 326 "asmshader.l"
 {
                             asmshader_lval.immbool = FALSE;
                             return IMMBOOL;
@@ -1915,296 +2142,296 @@ YY_RULE_SETUP
        YY_BREAK
 case 139:
 YY_RULE_SETUP
-#line 332 "asmshader.l"
-{return asmshader_text[0];          }
+#line 331 "asmshader.l"
+{return yytext[0];          }
        YY_BREAK
 case 140:
 YY_RULE_SETUP
-#line 333 "asmshader.l"
-{return asmshader_text[0];          }
+#line 332 "asmshader.l"
+{return yytext[0];          }
        YY_BREAK
 case 141:
 YY_RULE_SETUP
-#line 334 "asmshader.l"
-{return asmshader_text[0];          }
+#line 333 "asmshader.l"
+{return yytext[0];          }
        YY_BREAK
 case 142:
 YY_RULE_SETUP
-#line 335 "asmshader.l"
-{return asmshader_text[0];          }
+#line 334 "asmshader.l"
+{return yytext[0];          }
        YY_BREAK
 /* for relative addressing */
 case 143:
 YY_RULE_SETUP
-#line 338 "asmshader.l"
-{return asmshader_text[0];          }
+#line 337 "asmshader.l"
+{return yytext[0];          }
        YY_BREAK
 case 144:
 YY_RULE_SETUP
-#line 340 "asmshader.l"
+#line 339 "asmshader.l"
 {return SMOD_BIAS;          }
        YY_BREAK
 /* No _x2 here; it is identical to MOD_X2 */
 case 145:
 YY_RULE_SETUP
-#line 342 "asmshader.l"
+#line 341 "asmshader.l"
 {return SMOD_SCALEBIAS;     }
        YY_BREAK
 case 146:
 YY_RULE_SETUP
-#line 343 "asmshader.l"
+#line 342 "asmshader.l"
 {return SMOD_DZ;            }
        YY_BREAK
 case 147:
 YY_RULE_SETUP
-#line 344 "asmshader.l"
+#line 343 "asmshader.l"
 {return SMOD_DW;            }
        YY_BREAK
 case 148:
 YY_RULE_SETUP
-#line 345 "asmshader.l"
+#line 344 "asmshader.l"
 {return SMOD_ABS;           }
        YY_BREAK
 case 149:
 YY_RULE_SETUP
-#line 347 "asmshader.l"
+#line 346 "asmshader.l"
 {return SMOD_NOT;           }
        YY_BREAK
 case 150:
 YY_RULE_SETUP
-#line 349 "asmshader.l"
+#line 348 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_position")] == '\0') {
+                            if(yytext[strlen("_position")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_position"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_position"));
                             }
                             return USAGE_POSITION;
                         }
        YY_BREAK
 case 151:
 YY_RULE_SETUP
-#line 357 "asmshader.l"
+#line 356 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_blendweight")] == '\0') {
+                            if(yytext[strlen("_blendweight")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_blendweight"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_blendweight"));
                             }
                             return USAGE_BLENDWEIGHT;
                         }
        YY_BREAK
 case 152:
 YY_RULE_SETUP
-#line 365 "asmshader.l"
+#line 364 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_blendindices")] == '\0') {
+                            if(yytext[strlen("_blendindices")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_blendindices"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_blendindices"));
                             }
                             return USAGE_BLENDINDICES;
                         }
        YY_BREAK
 case 153:
 YY_RULE_SETUP
-#line 373 "asmshader.l"
+#line 372 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_normal")] == '\0') {
+                            if(yytext[strlen("_normal")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_normal"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_normal"));
                             }
                             return USAGE_NORMAL;
                         }
        YY_BREAK
 case 154:
 YY_RULE_SETUP
-#line 381 "asmshader.l"
+#line 380 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_psize")] == '\0') {
+                            if(yytext[strlen("_psize")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_psize"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_psize"));
                             }
                             return USAGE_PSIZE;
                         }
        YY_BREAK
 case 155:
 YY_RULE_SETUP
-#line 389 "asmshader.l"
+#line 388 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_texcoord")] == '\0') {
+                            if(yytext[strlen("_texcoord")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_texcoord"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_texcoord"));
                             }
                             return USAGE_TEXCOORD;
                         }
        YY_BREAK
 case 156:
 YY_RULE_SETUP
-#line 397 "asmshader.l"
+#line 396 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_tangent")] == '\0') {
+                            if(yytext[strlen("_tangent")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_tangent"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_tangent"));
                             }
                             return USAGE_TANGENT;
                         }
        YY_BREAK
 case 157:
 YY_RULE_SETUP
-#line 405 "asmshader.l"
+#line 404 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_binormal")] == '\0') {
+                            if(yytext[strlen("_binormal")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_binormal"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_binormal"));
                             }
                             return USAGE_BINORMAL;
                         }
        YY_BREAK
 case 158:
 YY_RULE_SETUP
-#line 413 "asmshader.l"
+#line 412 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_tessfactor")] == '\0') {
+                            if(yytext[strlen("_tessfactor")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_tessfactor"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_tessfactor"));
                             }
                             return USAGE_TESSFACTOR;
                         }
        YY_BREAK
 case 159:
 YY_RULE_SETUP
-#line 421 "asmshader.l"
+#line 420 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_positiont")] == '\0') {
+                            if(yytext[strlen("_positiont")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_positiont"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_positiont"));
                             }
                             return USAGE_POSITIONT;
                         }
        YY_BREAK
 case 160:
 YY_RULE_SETUP
-#line 429 "asmshader.l"
+#line 428 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_color")] == '\0') {
+                            if(yytext[strlen("_color")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_color"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_color"));
                             }
                             return USAGE_COLOR;
                         }
        YY_BREAK
 case 161:
 YY_RULE_SETUP
-#line 437 "asmshader.l"
+#line 436 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_fog")] == '\0') {
+                            if(yytext[strlen("_fog")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_fog"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_fog"));
                             }
                             return USAGE_FOG;
                         }
        YY_BREAK
 case 162:
 YY_RULE_SETUP
-#line 445 "asmshader.l"
+#line 444 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_depth")] == '\0') {
+                            if(yytext[strlen("_depth")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_depth"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_depth"));
                             }
                             return USAGE_DEPTH;
                         }
        YY_BREAK
 case 163:
 YY_RULE_SETUP
-#line 453 "asmshader.l"
+#line 452 "asmshader.l"
 {
-                            if(asmshader_text[strlen("_sample")] == '\0') {
+                            if(yytext[strlen("_sample")] == '\0') {
                                 asmshader_lval.regnum = 0;
                             } else {
-                                asmshader_lval.regnum = atoi(asmshader_text + strlen("_sample"));
+                                asmshader_lval.regnum = atoi(yytext + strlen("_sample"));
                             }
                             return USAGE_SAMPLE;
                         }
        YY_BREAK
 case 164:
 YY_RULE_SETUP
-#line 462 "asmshader.l"
+#line 461 "asmshader.l"
 { return SAMPTYPE_1D;       }
        YY_BREAK
 case 165:
 YY_RULE_SETUP
-#line 463 "asmshader.l"
+#line 462 "asmshader.l"
 { return SAMPTYPE_2D;       }
        YY_BREAK
 case 166:
 YY_RULE_SETUP
-#line 464 "asmshader.l"
+#line 463 "asmshader.l"
 { return SAMPTYPE_CUBE;     }
        YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 465 "asmshader.l"
+#line 464 "asmshader.l"
 { return SAMPTYPE_VOLUME;   }
        YY_BREAK
 case 168:
 /* rule 168 can match eol */
 YY_RULE_SETUP
-#line 467 "asmshader.l"
+#line 466 "asmshader.l"
 {
                             /* TODO: update current line information */
-                            TRACE("line info update: %s", asmshader_text);
+                            TRACE("line info update: %s", yytext);
                         }
        YY_BREAK
 /* Skip comments */
 case 169:
 YY_RULE_SETUP
-#line 473 "asmshader.l"
+#line 472 "asmshader.l"
 {                           }
        YY_BREAK
 case 170:
 YY_RULE_SETUP
-#line 474 "asmshader.l"
+#line 473 "asmshader.l"
 {                           }
        YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 476 "asmshader.l"
+#line 475 "asmshader.l"
 { /* Do nothing */          }
        YY_BREAK
 case 172:
 /* rule 172 can match eol */
 YY_RULE_SETUP
-#line 477 "asmshader.l"
+#line 476 "asmshader.l"
 {
                             asm_ctx.line_no++;
                         }
        YY_BREAK
 case 173:
 YY_RULE_SETUP
-#line 481 "asmshader.l"
+#line 480 "asmshader.l"
 {
-                            asmparser_message(&asm_ctx, "Line %u: Unexpected input %s\n", asm_ctx.line_no, asmshader_text);
+                            asmparser_message(&asm_ctx, "Line %u: Unexpected input %s\n", asm_ctx.line_no, yytext);
                             set_parse_status(&asm_ctx.status, PARSE_ERR);
                         }
        YY_BREAK
 case 174:
 YY_RULE_SETUP
-#line 486 "asmshader.l"
+#line 485 "asmshader.l"
 ECHO;
        YY_BREAK
-#line 2208 "asmshader.yy.c"
+#line 2434 "asmshader.yy.c"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2221,15 +2448,15 @@ case YY_STATE_EOF(INITIAL):
                        {
                        /* We're scanning a new file or input source.  It's
                         * possible that this happened because the user
-                        * just pointed asmshader_in at a new source and called
-                        * asmshader_lex().  If so, then we have to assure
+                        * just pointed yyin at a new source and called
+                        * yylex().  If so, then we have to assure
                         * consistency between YY_CURRENT_BUFFER and our
                         * globals.  Here is the right place to do so, because
                         * this is the first action (other than possibly a
                         * back-up) that will match for the new input source.
                         */
                        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
-                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = asmshader_in;
+                       YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
                        YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
                        }
 
@@ -2283,11 +2510,11 @@ case YY_STATE_EOF(INITIAL):
                                {
                                (yy_did_buffer_switch_on_eof) = 0;
 
-                               if ( asmshader_wrap( ) )
+                               if ( yywrap(  ) )
                                        {
                                        /* Note: because we've taken care in
                                         * yy_get_next_buffer() to have set up
-                                        * asmshader_text, we can now set up
+                                        * yytext, we can now set up
                                         * yy_c_buf_p so that if some total
                                         * hoser (like flex itself) wants to
                                         * call the scanner after we return the
@@ -2336,7 +2563,8 @@ case YY_STATE_EOF(INITIAL):
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
-} /* end of asmshader_lex */
+       } /* end of user's declarations */
+} /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
  *
@@ -2347,9 +2575,9 @@ case YY_STATE_EOF(INITIAL):
  */
 static int yy_get_next_buffer (void)
 {
-       register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
-       register char *source = (yytext_ptr);
-       register int number_to_move, i;
+       char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
+       char *source = (yytext_ptr);
+       int number_to_move, i;
        int ret_val;
 
        if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
@@ -2378,7 +2606,7 @@ static int yy_get_next_buffer (void)
        /* Try to read more data. */
 
        /* First move last chars to start of buffer. */
-       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
+       number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1);
 
        for ( i = 0; i < number_to_move; ++i )
                *(dest++) = *(source++);
@@ -2398,7 +2626,7 @@ static int yy_get_next_buffer (void)
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
@@ -2414,11 +2642,12 @@ static int yy_get_next_buffer (void)
 
                                b->yy_ch_buf = (char *)
                                        /* Include room in for 2 EOB chars. */
-                                       asmshader_realloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
+                                       yyrealloc( (void *) b->yy_ch_buf,
+                                                        (yy_size_t) (b->yy_buf_size + 2)  );
                                }
                        else
                                /* Can't grow it, we don't own it. */
-                               b->yy_ch_buf = 0;
+                               b->yy_ch_buf = NULL;
 
                        if ( ! b->yy_ch_buf )
                                YY_FATAL_ERROR(
@@ -2436,7 +2665,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -2446,7 +2675,7 @@ static int yy_get_next_buffer (void)
                if ( number_to_move == YY_MORE_ADJ )
                        {
                        ret_val = EOB_ACT_END_OF_FILE;
-                       asmshader_restart(asmshader_in  );
+                       yyrestart( yyin  );
                        }
 
                else
@@ -2460,12 +2689,15 @@ static int yy_get_next_buffer (void)
        else
                ret_val = EOB_ACT_CONTINUE_SCAN;
 
-       if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
+       if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
                /* Extend the array by 50%, plus the number we really need. */
-               yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
-               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) asmshader_realloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
+               int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
+               YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc(
+                       (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size  );
                if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
                        YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
+               /* "- 2" to take care of EOB's */
+               YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2);
        }
 
        (yy_n_chars) += number_to_move;
@@ -2481,14 +2713,14 @@ static int yy_get_next_buffer (void)
 
     static yy_state_type yy_get_previous_state (void)
 {
-       register yy_state_type yy_current_state;
-       register char *yy_cp;
+       yy_state_type yy_current_state;
+       char *yy_cp;
     
        yy_current_state = (yy_start);
 
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
                {
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
+               YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
                if ( yy_accept[yy_current_state] )
                        {
                        (yy_last_accepting_state) = yy_current_state;
@@ -2498,9 +2730,9 @@ static int yy_get_next_buffer (void)
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
                        if ( yy_current_state >= 481 )
-                               yy_c = yy_meta[(unsigned int) yy_c];
+                               yy_c = yy_meta[yy_c];
                        }
-               yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+               yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
                }
 
        return yy_current_state;
@@ -2513,10 +2745,10 @@ static int yy_get_next_buffer (void)
  */
     static yy_state_type yy_try_NUL_trans  (yy_state_type yy_current_state )
 {
-       register int yy_is_jam;
-       register char *yy_cp = (yy_c_buf_p);
+       int yy_is_jam;
+       char *yy_cp = (yy_c_buf_p);
 
-       register YY_CHAR yy_c = 1;
+       YY_CHAR yy_c = 1;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -2526,14 +2758,18 @@ static int yy_get_next_buffer (void)
                {
                yy_current_state = (int) yy_def[yy_current_state];
                if ( yy_current_state >= 481 )
-                       yy_c = yy_meta[(unsigned int) yy_c];
+                       yy_c = yy_meta[yy_c];
                }
-       yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
+       yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
        yy_is_jam = (yy_current_state == 480);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
+#ifndef YY_NO_UNPUT
+
+#endif
+
 #ifndef YY_NO_INPUT
 #ifdef __cplusplus
     static int yyinput (void)
@@ -2558,7 +2794,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       int offset = (int) ((yy_c_buf_p) - (yytext_ptr));
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -2575,14 +2811,14 @@ static int yy_get_next_buffer (void)
                                         */
 
                                        /* Reset buffer status. */
-                                       asmshader_restart(asmshader_in );
+                                       yyrestart( yyin );
 
                                        /*FALLTHROUGH*/
 
                                case EOB_ACT_END_OF_FILE:
                                        {
-                                       if ( asmshader_wrap( ) )
-                                               return EOF;
+                                       if ( yywrap(  ) )
+                                               return 0;
 
                                        if ( ! (yy_did_buffer_switch_on_eof) )
                                                YY_NEW_FILE;
@@ -2601,7 +2837,7 @@ static int yy_get_next_buffer (void)
                }
 
        c = *(unsigned char *) (yy_c_buf_p);    /* cast for 8-bit char's */
-       *(yy_c_buf_p) = '\0';   /* preserve asmshader_text */
+       *(yy_c_buf_p) = '\0';   /* preserve yytext */
        (yy_hold_char) = *++(yy_c_buf_p);
 
        return c;
@@ -2613,32 +2849,32 @@ static int yy_get_next_buffer (void)
  * 
  * @note This function does not reset the start condition to @c INITIAL .
  */
-    void asmshader_restart  (FILE * input_file )
+    void yyrestart  (FILE * input_file )
 {
     
        if ( ! YY_CURRENT_BUFFER ){
-        asmshader_ensure_buffer_stack ();
+        yyensure_buffer_stack ();
                YY_CURRENT_BUFFER_LVALUE =
-            asmshader__create_buffer(asmshader_in,YY_BUF_SIZE );
+            yy_create_buffer( yyin, YY_BUF_SIZE );
        }
 
-       asmshader__init_buffer(YY_CURRENT_BUFFER,input_file );
-       asmshader__load_buffer_state( );
+       yy_init_buffer( YY_CURRENT_BUFFER, input_file );
+       yy_load_buffer_state(  );
 }
 
 /** Switch to a different input buffer.
  * @param new_buffer The new input buffer.
  * 
  */
-    void asmshader__switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
+    void yy_switch_to_buffer  (YY_BUFFER_STATE  new_buffer )
 {
     
        /* TODO. We should be able to replace this entire function body
         * with
-        *              asmshader_pop_buffer_state();
-        *              asmshader_push_buffer_state(new_buffer);
+        *              yypop_buffer_state();
+        *              yypush_buffer_state(new_buffer);
      */
-       asmshader_ensure_buffer_stack ();
+       yyensure_buffer_stack ();
        if ( YY_CURRENT_BUFFER == new_buffer )
                return;
 
@@ -2651,21 +2887,21 @@ static int yy_get_next_buffer (void)
                }
 
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
-       asmshader__load_buffer_state( );
+       yy_load_buffer_state(  );
 
        /* We don't actually know whether we did this switch during
-        * EOF (asmshader_wrap()) processing, but the only time this flag
-        * is looked at is after asmshader_wrap() is called, so it's safe
+        * EOF (yywrap()) processing, but the only time this flag
+        * is looked at is after yywrap() is called, so it's safe
         * to go ahead and always set it.
         */
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
-static void asmshader__load_buffer_state  (void)
+static void yy_load_buffer_state  (void)
 {
        (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
        (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
-       asmshader_in = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
+       yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
        (yy_hold_char) = *(yy_c_buf_p);
 }
 
@@ -2675,35 +2911,35 @@ static void asmshader__load_buffer_state  (void)
  * 
  * @return the allocated buffer state.
  */
-    YY_BUFFER_STATE asmshader__create_buffer  (FILE * file, int  size )
+    YY_BUFFER_STATE yy_create_buffer  (FILE * file, int  size )
 {
        YY_BUFFER_STATE b;
     
-       b = (YY_BUFFER_STATE) asmshader_alloc(sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in asmshader__create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
        b->yy_buf_size = size;
 
        /* yy_ch_buf has to be 2 characters longer than the size given because
         * we need to put in 2 end-of-buffer characters.
         */
-       b->yy_ch_buf = (char *) asmshader_alloc(b->yy_buf_size + 2  );
+       b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2)  );
        if ( ! b->yy_ch_buf )
-               YY_FATAL_ERROR( "out of dynamic memory in asmshader__create_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
 
        b->yy_is_our_buffer = 1;
 
-       asmshader__init_buffer(b,file );
+       yy_init_buffer( b, file );
 
        return b;
 }
 
 /** Destroy the buffer.
- * @param b a buffer created with asmshader__create_buffer()
+ * @param b a buffer created with yy_create_buffer()
  * 
  */
-    void asmshader__delete_buffer (YY_BUFFER_STATE  b )
+    void yy_delete_buffer (YY_BUFFER_STATE  b )
 {
     
        if ( ! b )
@@ -2713,27 +2949,27 @@ static void asmshader__load_buffer_state  (void)
                YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
 
        if ( b->yy_is_our_buffer )
-               asmshader_free((void *) b->yy_ch_buf  );
+               yyfree( (void *) b->yy_ch_buf  );
 
-       asmshader_free((void *) b  );
+       yyfree( (void *) b  );
 }
 
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
- * such as during a asmshader_restart() or at EOF.
+ * such as during a yyrestart() or at EOF.
  */
-    static void asmshader__init_buffer  (YY_BUFFER_STATE  b, FILE * file )
+    static void yy_init_buffer  (YY_BUFFER_STATE  b, FILE * file )
 
 {
        int oerrno = errno;
     
-       asmshader__flush_buffer(b );
+       yy_flush_buffer( b );
 
        b->yy_input_file = file;
        b->yy_fill_buffer = 1;
 
-    /* If b is the current buffer, then asmshader__init_buffer was _probably_
-     * called from asmshader_restart() or through yy_get_next_buffer.
+    /* If b is the current buffer, then yy_init_buffer was _probably_
+     * called from yyrestart() or through yy_get_next_buffer.
      * In that case, we don't want to reset the lineno or column.
      */
     if (b != YY_CURRENT_BUFFER){
@@ -2750,7 +2986,7 @@ static void asmshader__load_buffer_state  (void)
  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
  * 
  */
-    void asmshader__flush_buffer (YY_BUFFER_STATE  b )
+    void yy_flush_buffer (YY_BUFFER_STATE  b )
 {
        if ( ! b )
                return;
@@ -2770,7 +3006,7 @@ static void asmshader__load_buffer_state  (void)
        b->yy_buffer_status = YY_BUFFER_NEW;
 
        if ( b == YY_CURRENT_BUFFER )
-               asmshader__load_buffer_state( );
+               yy_load_buffer_state(  );
 }
 
 /** Pushes the new state onto the stack. The new state becomes
@@ -2779,14 +3015,14 @@ static void asmshader__load_buffer_state  (void)
  *  @param new_buffer The new state.
  *  
  */
-void asmshader_push_buffer_state (YY_BUFFER_STATE new_buffer )
+void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
 {
        if (new_buffer == NULL)
                return;
 
-       asmshader_ensure_buffer_stack();
+       yyensure_buffer_stack();
 
-       /* This block is copied from asmshader__switch_to_buffer. */
+       /* This block is copied from yy_switch_to_buffer. */
        if ( YY_CURRENT_BUFFER )
                {
                /* Flush out information for old buffer. */
@@ -2800,8 +3036,8 @@ void asmshader_push_buffer_state (YY_BUFFER_STATE new_buffer )
                (yy_buffer_stack_top)++;
        YY_CURRENT_BUFFER_LVALUE = new_buffer;
 
-       /* copied from asmshader__switch_to_buffer. */
-       asmshader__load_buffer_state( );
+       /* copied from yy_switch_to_buffer. */
+       yy_load_buffer_state(  );
        (yy_did_buffer_switch_on_eof) = 1;
 }
 
@@ -2809,18 +3045,18 @@ void asmshader_push_buffer_state (YY_BUFFER_STATE new_buffer )
  *  The next element becomes the new top.
  *  
  */
-void asmshader_pop_buffer_state (void)
+void yypop_buffer_state (void)
 {
        if (!YY_CURRENT_BUFFER)
                return;
 
-       asmshader__delete_buffer(YY_CURRENT_BUFFER );
+       yy_delete_buffer(YY_CURRENT_BUFFER );
        YY_CURRENT_BUFFER_LVALUE = NULL;
        if ((yy_buffer_stack_top) > 0)
                --(yy_buffer_stack_top);
 
        if (YY_CURRENT_BUFFER) {
-               asmshader__load_buffer_state( );
+               yy_load_buffer_state(  );
                (yy_did_buffer_switch_on_eof) = 1;
        }
 }
@@ -2828,9 +3064,9 @@ void asmshader_pop_buffer_state (void)
 /* Allocates the stack if it does not exist.
  *  Guarantees space for at least one push.
  */
-static void asmshader_ensure_buffer_stack (void)
+static void yyensure_buffer_stack (void)
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -2838,15 +3074,15 @@ static void asmshader_ensure_buffer_stack (void)
                 * scanner will even need a stack. We use 2 instead of 1 to avoid an
                 * immediate realloc on the next call.
          */
-               num_to_alloc = 1;
-               (yy_buffer_stack) = (struct yy_buffer_state**)asmshader_alloc
+      num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
                                                                (num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in asmshader_ensure_buffer_stack()" );
-                                                                 
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
+
                memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
-                               
+
                (yy_buffer_stack_max) = num_to_alloc;
                (yy_buffer_stack_top) = 0;
                return;
@@ -2855,15 +3091,15 @@ static void asmshader_ensure_buffer_stack (void)
        if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
 
                /* Increase the buffer to prepare for a possible push. */
-               int grow_size = 8 /* arbitrary grow size */;
+               yy_size_t grow_size = 8 /* arbitrary grow size */;
 
                num_to_alloc = (yy_buffer_stack_max) + grow_size;
-               (yy_buffer_stack) = (struct yy_buffer_state**)asmshader_realloc
+               (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
                                                                ((yy_buffer_stack),
                                                                num_to_alloc * sizeof(struct yy_buffer_state*)
                                                                );
                if ( ! (yy_buffer_stack) )
-                       YY_FATAL_ERROR( "out of dynamic memory in asmshader_ensure_buffer_stack()" );
+                       YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
 
                /* zero only the new slots.*/
                memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
@@ -2875,9 +3111,9 @@ static void asmshader_ensure_buffer_stack (void)
  * @param base the character buffer
  * @param size the size in bytes of the character buffer
  * 
- * @return the newly allocated buffer state object. 
+ * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE asmshader__scan_buffer  (char * base, yy_size_t  size )
+YY_BUFFER_STATE yy_scan_buffer  (char * base, yy_size_t  size )
 {
        YY_BUFFER_STATE b;
     
@@ -2885,49 +3121,49 @@ YY_BUFFER_STATE asmshader__scan_buffer  (char * base, yy_size_t  size )
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
             base[size-1] != YY_END_OF_BUFFER_CHAR )
                /* They forgot to leave room for the EOB's. */
-               return 0;
+               return NULL;
 
-       b = (YY_BUFFER_STATE) asmshader_alloc(sizeof( struct yy_buffer_state )  );
+       b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state )  );
        if ( ! b )
-               YY_FATAL_ERROR( "out of dynamic memory in asmshader__scan_buffer()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
 
-       b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
+       b->yy_buf_size = (int) (size - 2);      /* "- 2" to take care of EOB's */
        b->yy_buf_pos = b->yy_ch_buf = base;
        b->yy_is_our_buffer = 0;
-       b->yy_input_file = 0;
+       b->yy_input_file = NULL;
        b->yy_n_chars = b->yy_buf_size;
        b->yy_is_interactive = 0;
        b->yy_at_bol = 1;
        b->yy_fill_buffer = 0;
        b->yy_buffer_status = YY_BUFFER_NEW;
 
-       asmshader__switch_to_buffer(b  );
+       yy_switch_to_buffer( b  );
 
        return b;
 }
 
-/** Setup the input buffer state to scan a string. The next call to asmshader_lex() will
+/** Setup the input buffer state to scan a string. The next call to yylex() will
  * scan from a @e copy of @a str.
  * @param yystr a NUL-terminated string to scan
  * 
  * @return the newly allocated buffer state object.
  * @note If you want to scan bytes that may contain NUL values, then use
- *       asmshader__scan_bytes() instead.
+ *       yy_scan_bytes() instead.
  */
-YY_BUFFER_STATE asmshader__scan_string (yyconst char * yystr )
+YY_BUFFER_STATE yy_scan_string (const char * yystr )
 {
     
-       return asmshader__scan_bytes(yystr,strlen(yystr) );
+       return yy_scan_bytes( yystr, (int) strlen(yystr) );
 }
 
-/** Setup the input buffer state to scan the given bytes. The next call to asmshader_lex() will
+/** Setup the input buffer state to scan the given bytes. The next call to yylex() will
  * scan from a @e copy of @a bytes.
  * @param yybytes the byte buffer to scan
  * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE asmshader__scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (const char * yybytes, int  _yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
@@ -2935,19 +3171,19 @@ YY_BUFFER_STATE asmshader__scan_bytes  (yyconst char * yybytes, int  _yybytes_le
        int i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
-       n = _yybytes_len + 2;
-       buf = (char *) asmshader_alloc(n  );
+       n = (yy_size_t) (_yybytes_len + 2);
+       buf = (char *) yyalloc( n  );
        if ( ! buf )
-               YY_FATAL_ERROR( "out of dynamic memory in asmshader__scan_bytes()" );
+               YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
 
        for ( i = 0; i < _yybytes_len; ++i )
                buf[i] = yybytes[i];
 
        buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
 
-       b = asmshader__scan_buffer(buf,n );
+       b = yy_scan_buffer( buf, n );
        if ( ! b )
-               YY_FATAL_ERROR( "bad buffer in asmshader__scan_bytes()" );
+               YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
 
        /* It's okay to grow etc. this buffer, and we should throw it
         * away when we're done.
@@ -2961,9 +3197,9 @@ YY_BUFFER_STATE asmshader__scan_bytes  (yyconst char * yybytes, int  _yybytes_le
 #define YY_EXIT_FAILURE 2
 #endif
 
-static void yy_fatal_error (yyconst char* msg )
+static void yynoreturn yy_fatal_error (const char* msg )
 {
-       (void) fprintf( stderr, "%s\n", msg );
+                       fprintf( stderr, "%s\n", msg );
        exit( YY_EXIT_FAILURE );
 }
 
@@ -2973,14 +3209,14 @@ static void yy_fatal_error (yyconst char* msg )
 #define yyless(n) \
        do \
                { \
-               /* Undo effects of setting up asmshader_text. */ \
+               /* Undo effects of setting up yytext. */ \
         int yyless_macro_arg = (n); \
         YY_LESS_LINENO(yyless_macro_arg);\
-               asmshader_text[asmshader_leng] = (yy_hold_char); \
-               (yy_c_buf_p) = asmshader_text + yyless_macro_arg; \
+               yytext[yyleng] = (yy_hold_char); \
+               (yy_c_buf_p) = yytext + yyless_macro_arg; \
                (yy_hold_char) = *(yy_c_buf_p); \
                *(yy_c_buf_p) = '\0'; \
-               asmshader_leng = yyless_macro_arg; \
+               yyleng = yyless_macro_arg; \
                } \
        while ( 0 )
 
@@ -2989,126 +3225,126 @@ static void yy_fatal_error (yyconst char* msg )
 /** Get the current line number.
  * 
  */
-int asmshader_get_lineno  (void)
+int yyget_lineno  (void)
 {
-        
-    return asmshader_lineno;
+    
+    return yylineno;
 }
 
 /** Get the input stream.
  * 
  */
-FILE *asmshader_get_in  (void)
+FILE *yyget_in  (void)
 {
-        return asmshader_in;
+        return yyin;
 }
 
 /** Get the output stream.
  * 
  */
-FILE *asmshader_get_out  (void)
+FILE *yyget_out  (void)
 {
-        return asmshader_out;
+        return yyout;
 }
 
 /** Get the length of the current token.
  * 
  */
-int asmshader_get_leng  (void)
+int yyget_leng  (void)
 {
-        return asmshader_leng;
+        return yyleng;
 }
 
 /** Get the current token.
  * 
  */
 
-char *asmshader_get_text  (void)
+char *yyget_text  (void)
 {
-        return asmshader_text;
+        return yytext;
 }
 
 /** Set the current line number.
- * @param line_number
+ * @param _line_number line number
  * 
  */
-void asmshader_set_lineno (int  line_number )
+void yyset_lineno (int  _line_number )
 {
     
-    asmshader_lineno = line_number;
+    yylineno = _line_number;
 }
 
 /** Set the input stream. This does not discard the current
  * input buffer.
- * @param in_str A readable stream.
+ * @param _in_str A readable stream.
  * 
- * @see asmshader__switch_to_buffer
+ * @see yy_switch_to_buffer
  */
-void asmshader_set_in (FILE *  in_str )
+void yyset_in (FILE *  _in_str )
 {
-        asmshader_in = in_str ;
+        yyin = _in_str ;
 }
 
-void asmshader_set_out (FILE *  out_str )
+void yyset_out (FILE *  _out_str )
 {
-        asmshader_out = out_str ;
+        yyout = _out_str ;
 }
 
-int asmshader_get_debug  (void)
+int yyget_debug  (void)
 {
-        return asmshader__flex_debug;
+        return yy_flex_debug;
 }
 
-void asmshader_set_debug (int  bdebug )
+void yyset_debug (int  _bdebug )
 {
-        asmshader__flex_debug = bdebug ;
+        yy_flex_debug = _bdebug ;
 }
 
 static int yy_init_globals (void)
 {
         /* Initialization is the same as for the non-reentrant scanner.
-     * This function is called from asmshader_lex_destroy(), so don't allocate here.
+     * This function is called from yylex_destroy(), so don't allocate here.
      */
 
-    (yy_buffer_stack) = 0;
+    (yy_buffer_stack) = NULL;
     (yy_buffer_stack_top) = 0;
     (yy_buffer_stack_max) = 0;
-    (yy_c_buf_p) = (char *) 0;
+    (yy_c_buf_p) = NULL;
     (yy_init) = 0;
     (yy_start) = 0;
 
 /* Defined in main.c */
 #ifdef YY_STDINIT
-    asmshader_in = stdin;
-    asmshader_out = stdout;
+    yyin = stdin;
+    yyout = stdout;
 #else
-    asmshader_in = (FILE *) 0;
-    asmshader_out = (FILE *) 0;
+    yyin = NULL;
+    yyout = NULL;
 #endif
 
     /* For future reference: Set errno on error, since we are called by
-     * asmshader_lex_init()
+     * yylex_init()
      */
     return 0;
 }
 
-/* asmshader_lex_destroy is for both reentrant and non-reentrant scanners. */
-int asmshader_lex_destroy  (void)
+/* yylex_destroy is for both reentrant and non-reentrant scanners. */
+int yylex_destroy  (void)
 {
     
     /* Pop the buffer stack, destroying each element. */
        while(YY_CURRENT_BUFFER){
-               asmshader__delete_buffer(YY_CURRENT_BUFFER  );
+               yy_delete_buffer( YY_CURRENT_BUFFER  );
                YY_CURRENT_BUFFER_LVALUE = NULL;
-               asmshader_pop_buffer_state();
+               yypop_buffer_state();
        }
 
        /* Destroy the stack itself. */
-       asmshader_free((yy_buffer_stack) );
+       yyfree((yy_buffer_stack) );
        (yy_buffer_stack) = NULL;
 
     /* Reset the globals. This is important in a non-reentrant scanner so the next time
-     * asmshader_lex() is called, initialization will occur. */
+     * yylex() is called, initialization will occur. */
     yy_init_globals( );
 
     return 0;
@@ -3119,18 +3355,19 @@ int asmshader_lex_destroy  (void)
  */
 
 #ifndef yytext_ptr
-static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
+static void yy_flex_strncpy (char* s1, const char * s2, int n )
 {
-       register int i;
+               
+       int i;
        for ( i = 0; i < n; ++i )
                s1[i] = s2[i];
 }
 #endif
 
 #ifdef YY_NEED_STRLEN
-static int yy_flex_strlen (yyconst char * s )
+static int yy_flex_strlen (const char * s )
 {
-       register int n;
+       int n;
        for ( n = 0; s[n]; ++n )
                ;
 
@@ -3138,13 +3375,14 @@ static int yy_flex_strlen (yyconst char * s )
 }
 #endif
 
-void *asmshader_alloc (yy_size_t  size )
+void *yyalloc (yy_size_t  size )
 {
-       return (void *) malloc( size );
+                       return malloc(size);
 }
 
-void *asmshader_realloc  (void * ptr, yy_size_t  size )
+void *yyrealloc  (void * ptr, yy_size_t  size )
 {
+               
        /* The cast to (char *) in the following accommodates both
         * implementations that use char* generic pointers, and those
         * that use void* generic pointers.  It works with the latter
@@ -3152,18 +3390,17 @@ void *asmshader_realloc  (void * ptr, yy_size_t  size )
         * any pointer type to void*, and deal with argument conversions
         * as though doing an assignment.
         */
-       return (void *) realloc( (char *) ptr, size );
+       return realloc(ptr, size);
 }
 
-void asmshader_free (void * ptr )
+void yyfree (void * ptr )
 {
-       free( (char *) ptr );   /* see asmshader_realloc() for (char *) cast */
+                       free( (char *) ptr );   /* see yyrealloc() for (char *) cast */
 }
 
 #define YYTABLES_NAME "yytables"
 
-#line 486 "asmshader.l"
-
+#line 485 "asmshader.l"
 
 
 struct bwriter_shader *SlAssembleShader(const char *text, char **messages) {
diff --git a/dll/directx/wine/d3dcompiler_43/asmshader.yy.h b/dll/directx/wine/d3dcompiler_43/asmshader.yy.h
new file mode 100644 (file)
index 0000000..4a5a5f7
--- /dev/null
@@ -0,0 +1,711 @@
+#ifndef asmshader_HEADER_H
+#define asmshader_HEADER_H 1
+#define asmshader_IN_HEADER 1
+
+#line 5 "asmshader.yy.h"
+
+#line 7 "asmshader.yy.h"
+
+#define  YY_INT_ALIGNED short int
+
+/* A lexical scanner generated by flex */
+
+#define FLEX_SCANNER
+#define YY_FLEX_MAJOR_VERSION 2
+#define YY_FLEX_MINOR_VERSION 6
+#define YY_FLEX_SUBMINOR_VERSION 4
+#if YY_FLEX_SUBMINOR_VERSION > 0
+#define FLEX_BETA
+#endif
+
+#ifdef yy_create_buffer
+#define asmshader__create_buffer_ALREADY_DEFINED
+#else
+#define yy_create_buffer asmshader__create_buffer
+#endif
+
+#ifdef yy_delete_buffer
+#define asmshader__delete_buffer_ALREADY_DEFINED
+#else
+#define yy_delete_buffer asmshader__delete_buffer
+#endif
+
+#ifdef yy_scan_buffer
+#define asmshader__scan_buffer_ALREADY_DEFINED
+#else
+#define yy_scan_buffer asmshader__scan_buffer
+#endif
+
+#ifdef yy_scan_string
+#define asmshader__scan_string_ALREADY_DEFINED
+#else
+#define yy_scan_string asmshader__scan_string
+#endif
+
+#ifdef yy_scan_bytes
+#define asmshader__scan_bytes_ALREADY_DEFINED
+#else
+#define yy_scan_bytes asmshader__scan_bytes
+#endif
+
+#ifdef yy_init_buffer
+#define asmshader__init_buffer_ALREADY_DEFINED
+#else
+#define yy_init_buffer asmshader__init_buffer
+#endif
+
+#ifdef yy_flush_buffer
+#define asmshader__flush_buffer_ALREADY_DEFINED
+#else
+#define yy_flush_buffer asmshader__flush_buffer
+#endif
+
+#ifdef yy_load_buffer_state
+#define asmshader__load_buffer_state_ALREADY_DEFINED
+#else
+#define yy_load_buffer_state asmshader__load_buffer_state
+#endif
+
+#ifdef yy_switch_to_buffer
+#define asmshader__switch_to_buffer_ALREADY_DEFINED
+#else
+#define yy_switch_to_buffer asmshader__switch_to_buffer
+#endif
+
+#ifdef yypush_buffer_state
+#define asmshader_push_buffer_state_ALREADY_DEFINED
+#else
+#define yypush_buffer_state asmshader_push_buffer_state
+#endif
+
+#ifdef yypop_buffer_state
+#define asmshader_pop_buffer_state_ALREADY_DEFINED
+#else
+#define yypop_buffer_state asmshader_pop_buffer_state
+#endif
+
+#ifdef yyensure_buffer_stack
+#define asmshader_ensure_buffer_stack_ALREADY_DEFINED
+#else
+#define yyensure_buffer_stack asmshader_ensure_buffer_stack
+#endif
+
+#ifdef yylex
+#define asmshader_lex_ALREADY_DEFINED
+#else
+#define yylex asmshader_lex
+#endif
+
+#ifdef yyrestart
+#define asmshader_restart_ALREADY_DEFINED
+#else
+#define yyrestart asmshader_restart
+#endif
+
+#ifdef yylex_init
+#define asmshader_lex_init_ALREADY_DEFINED
+#else
+#define yylex_init asmshader_lex_init
+#endif
+
+#ifdef yylex_init_extra
+#define asmshader_lex_init_extra_ALREADY_DEFINED
+#else
+#define yylex_init_extra asmshader_lex_init_extra
+#endif
+
+#ifdef yylex_destroy
+#define asmshader_lex_destroy_ALREADY_DEFINED
+#else
+#define yylex_destroy asmshader_lex_destroy
+#endif
+
+#ifdef yyget_debug
+#define asmshader_get_debug_ALREADY_DEFINED
+#else
+#define yyget_debug asmshader_get_debug
+#endif
+
+#ifdef yyset_debug
+#define asmshader_set_debug_ALREADY_DEFINED
+#else
+#define yyset_debug asmshader_set_debug
+#endif
+
+#ifdef yyget_extra
+#define asmshader_get_extra_ALREADY_DEFINED
+#else
+#define yyget_extra asmshader_get_extra
+#endif
+
+#ifdef yyset_extra
+#define asmshader_set_extra_ALREADY_DEFINED
+#else
+#define yyset_extra asmshader_set_extra
+#endif
+
+#ifdef yyget_in
+#define asmshader_get_in_ALREADY_DEFINED
+#else
+#define yyget_in asmshader_get_in
+#endif
+
+#ifdef yyset_in
+#define asmshader_set_in_ALREADY_DEFINED
+#else
+#define yyset_in asmshader_set_in
+#endif
+
+#ifdef yyget_out
+#define asmshader_get_out_ALREADY_DEFINED
+#else
+#define yyget_out asmshader_get_out
+#endif
+
+#ifdef yyset_out
+#define asmshader_set_out_ALREADY_DEFINED
+#else
+#define yyset_out asmshader_set_out
+#endif
+
+#ifdef yyget_leng
+#define asmshader_get_leng_ALREADY_DEFINED
+#else
+#define yyget_leng asmshader_get_leng
+#endif
+
+#ifdef yyget_text
+#define asmshader_get_text_ALREADY_DEFINED
+#else
+#define yyget_text asmshader_get_text
+#endif
+
+#ifdef yyget_lineno
+#define asmshader_get_lineno_ALREADY_DEFINED
+#else
+#define yyget_lineno asmshader_get_lineno
+#endif
+
+#ifdef yyset_lineno
+#define asmshader_set_lineno_ALREADY_DEFINED
+#else
+#define yyset_lineno asmshader_set_lineno
+#endif
+
+#ifdef yywrap
+#define asmshader_wrap_ALREADY_DEFINED
+#else
+#define yywrap asmshader_wrap
+#endif
+
+#ifdef yyalloc
+#define asmshader_alloc_ALREADY_DEFINED
+#else
+#define yyalloc asmshader_alloc
+#endif
+
+#ifdef yyrealloc
+#define asmshader_realloc_ALREADY_DEFINED
+#else
+#define yyrealloc asmshader_realloc
+#endif
+
+#ifdef yyfree
+#define asmshader_free_ALREADY_DEFINED
+#else
+#define yyfree asmshader_free
+#endif
+
+#ifdef yytext
+#define asmshader_text_ALREADY_DEFINED
+#else
+#define yytext asmshader_text
+#endif
+
+#ifdef yyleng
+#define asmshader_leng_ALREADY_DEFINED
+#else
+#define yyleng asmshader_leng
+#endif
+
+#ifdef yyin
+#define asmshader_in_ALREADY_DEFINED
+#else
+#define yyin asmshader_in
+#endif
+
+#ifdef yyout
+#define asmshader_out_ALREADY_DEFINED
+#else
+#define yyout asmshader_out
+#endif
+
+#ifdef yy_flex_debug
+#define asmshader__flex_debug_ALREADY_DEFINED
+#else
+#define yy_flex_debug asmshader__flex_debug
+#endif
+
+#ifdef yylineno
+#define asmshader_lineno_ALREADY_DEFINED
+#else
+#define yylineno asmshader_lineno
+#endif
+
+/* First, we deal with  platform-specific or compiler-specific issues. */
+
+/* begin standard C headers. */
+#include <stdio.h>
+#include <string.h>
+#include <errno.h>
+#include <stdlib.h>
+
+/* end standard C headers. */
+
+/* flex integer type definitions */
+
+#ifndef FLEXINT_H
+#define FLEXINT_H
+
+/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
+
+#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+
+/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
+ * if you want the limit (max/min) macros for int types. 
+ */
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS 1
+#endif
+
+#include <inttypes.h>
+typedef int8_t flex_int8_t;
+typedef uint8_t flex_uint8_t;
+typedef int16_t flex_int16_t;
+typedef uint16_t flex_uint16_t;
+typedef int32_t flex_int32_t;
+typedef uint32_t flex_uint32_t;
+#else
+typedef signed char flex_int8_t;
+typedef short int flex_int16_t;
+typedef int flex_int32_t;
+typedef unsigned char flex_uint8_t; 
+typedef unsigned short int flex_uint16_t;
+typedef unsigned int flex_uint32_t;
+
+/* Limits of integral types. */
+#ifndef INT8_MIN
+#define INT8_MIN               (-128)
+#endif
+#ifndef INT16_MIN
+#define INT16_MIN              (-32767-1)
+#endif
+#ifndef INT32_MIN
+#define INT32_MIN              (-2147483647-1)
+#endif
+#ifndef INT8_MAX
+#define INT8_MAX               (127)
+#endif
+#ifndef INT16_MAX
+#define INT16_MAX              (32767)
+#endif
+#ifndef INT32_MAX
+#define INT32_MAX              (2147483647)
+#endif
+#ifndef UINT8_MAX
+#define UINT8_MAX              (255U)
+#endif
+#ifndef UINT16_MAX
+#define UINT16_MAX             (65535U)
+#endif
+#ifndef UINT32_MAX
+#define UINT32_MAX             (4294967295U)
+#endif
+
+#ifndef SIZE_MAX
+#define SIZE_MAX               (~(size_t)0)
+#endif
+
+#endif /* ! C99 */
+
+#endif /* ! FLEXINT_H */
+
+/* begin standard C++ headers. */
+
+/* TODO: this is always defined, so inline it */
+#define yyconst const
+
+#if defined(__GNUC__) && __GNUC__ >= 3
+#define yynoreturn __attribute__((__noreturn__))
+#else
+#define yynoreturn
+#endif
+
+/* Size of default input buffer. */
+#ifndef YY_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k.
+ * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
+ * Ditto for the __ia64__ case accordingly.
+ */
+#define YY_BUF_SIZE 32768
+#else
+#define YY_BUF_SIZE 16384
+#endif /* __ia64__ */
+#endif
+
+#ifndef YY_TYPEDEF_YY_BUFFER_STATE
+#define YY_TYPEDEF_YY_BUFFER_STATE
+typedef struct yy_buffer_state *YY_BUFFER_STATE;
+#endif
+
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern int yyleng;
+
+extern FILE *yyin, *yyout;
+
+#ifndef YY_STRUCT_YY_BUFFER_STATE
+#define YY_STRUCT_YY_BUFFER_STATE
+struct yy_buffer_state
+       {
+       FILE *yy_input_file;
+
+       char *yy_ch_buf;                /* input buffer */
+       char *yy_buf_pos;               /* current position in input buffer */
+
+       /* Size of input buffer in bytes, not including room for EOB
+        * characters.
+        */
+       int yy_buf_size;
+
+       /* Number of characters read into yy_ch_buf, not including EOB
+        * characters.
+        */
+       int yy_n_chars;
+
+       /* Whether we "own" the buffer - i.e., we know we created it,
+        * and can realloc() it to grow it, and should free() it to
+        * delete it.
+        */
+       int yy_is_our_buffer;
+
+       /* Whether this is an "interactive" input source; if so, and
+        * if we're using stdio for input, then we want to use getc()
+        * instead of fread(), to make sure we stop fetching input after
+        * each newline.
+        */
+       int yy_is_interactive;
+
+       /* Whether we're considered to be at the beginning of a line.
+        * If so, '^' rules will be active on the next match, otherwise
+        * not.
+        */
+       int yy_at_bol;
+
+    int yy_bs_lineno; /**< The line count. */
+    int yy_bs_column; /**< The column count. */
+
+       /* Whether to try to fill the input buffer when we reach the
+        * end of it.
+        */
+       int yy_fill_buffer;
+
+       int yy_buffer_status;
+
+       };
+#endif /* !YY_STRUCT_YY_BUFFER_STATE */
+
+void yyrestart ( FILE *input_file  );
+void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer  );
+YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size  );
+void yy_delete_buffer ( YY_BUFFER_STATE b  );
+void yy_flush_buffer ( YY_BUFFER_STATE b  );
+void yypush_buffer_state ( YY_BUFFER_STATE new_buffer  );
+void yypop_buffer_state ( void );
+
+YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size  );
+YY_BUFFER_STATE yy_scan_string ( const char *yy_str  );
+YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len  );
+
+void *yyalloc ( yy_size_t  );
+void *yyrealloc ( void *, yy_size_t  );
+void yyfree ( void *  );
+
+/* Begin user sect3 */
+
+#define asmshader_wrap() (/*CONSTCOND*/1)
+#define YY_SKIP_YYWRAP
+
+extern int yylineno;
+
+extern char *yytext;
+#ifdef yytext_ptr
+#undef yytext_ptr
+#endif
+#define yytext_ptr yytext
+
+#ifdef YY_HEADER_EXPORT_START_CONDITIONS
+#define INITIAL 0
+
+#endif
+
+#ifndef YY_NO_UNISTD_H
+/* Special case for "unistd.h", since it is non-ANSI. We include it way
+ * down here because we want the user's section 1 to have been scanned first.
+ * The user has a chance to override it with an option.
+ */
+#include <unistd.h>
+#endif
+    
+#ifndef YY_EXTRA_TYPE
+#define YY_EXTRA_TYPE void *
+#endif
+
+/* Accessor methods to globals.
+   These are made visible to non-reentrant scanners for convenience. */
+
+int yylex_destroy ( void );
+
+int yyget_debug ( void );
+
+void yyset_debug ( int debug_flag  );
+
+YY_EXTRA_TYPE yyget_extra ( void );
+
+void yyset_extra ( YY_EXTRA_TYPE user_defined  );
+
+FILE *yyget_in ( void );
+
+void yyset_in  ( FILE * _in_str  );
+
+FILE *yyget_out ( void );
+
+void yyset_out  ( FILE * _out_str  );
+
+                       int yyget_leng ( void );
+
+char *yyget_text ( void );
+
+int yyget_lineno ( void );
+
+void yyset_lineno ( int _line_number  );
+
+/* Macros after this point can all be overridden by user definitions in
+ * section 1.
+ */
+
+#ifndef YY_SKIP_YYWRAP
+#ifdef __cplusplus
+extern "C" int yywrap ( void );
+#else
+extern int yywrap ( void );
+#endif
+#endif
+
+#ifndef yytext_ptr
+static void yy_flex_strncpy ( char *, const char *, int );
+#endif
+
+#ifdef YY_NEED_STRLEN
+static int yy_flex_strlen ( const char * );
+#endif
+
+#ifndef YY_NO_INPUT
+
+#endif
+
+/* Amount of stuff to slurp up with each read. */
+#ifndef YY_READ_BUF_SIZE
+#ifdef __ia64__
+/* On IA-64, the buffer size is 16k, not 8k */
+#define YY_READ_BUF_SIZE 16384
+#else
+#define YY_READ_BUF_SIZE 8192
+#endif /* __ia64__ */
+#endif
+
+/* Number of entries by which start-condition stack grows. */
+#ifndef YY_START_STACK_INCR
+#define YY_START_STACK_INCR 25
+#endif
+
+/* Default declaration of generated scanner - a define so the user can
+ * easily add parameters.
+ */
+#ifndef YY_DECL
+#define YY_DECL_IS_OURS 1
+
+extern int yylex (void);
+
+#define YY_DECL int yylex (void)
+#endif /* !YY_DECL */
+
+/* yy_get_previous_state - get the state just before the EOB char was reached */
+
+#undef YY_NEW_FILE
+#undef YY_FLUSH_BUFFER
+#undef yy_set_bol
+#undef yy_new_buffer
+#undef yy_set_interactive
+#undef YY_DO_BEFORE_ACTION
+
+#ifdef YY_DECL_IS_OURS
+#undef YY_DECL_IS_OURS
+#undef YY_DECL
+#endif
+
+#ifndef asmshader__create_buffer_ALREADY_DEFINED
+#undef yy_create_buffer
+#endif
+#ifndef asmshader__delete_buffer_ALREADY_DEFINED
+#undef yy_delete_buffer
+#endif
+#ifndef asmshader__scan_buffer_ALREADY_DEFINED
+#undef yy_scan_buffer
+#endif
+#ifndef asmshader__scan_string_ALREADY_DEFINED
+#undef yy_scan_string
+#endif
+#ifndef asmshader__scan_bytes_ALREADY_DEFINED
+#undef yy_scan_bytes
+#endif
+#ifndef asmshader__init_buffer_ALREADY_DEFINED
+#undef yy_init_buffer
+#endif
+#ifndef asmshader__flush_buffer_ALREADY_DEFINED
+#undef yy_flush_buffer
+#endif
+#ifndef asmshader__load_buffer_state_ALREADY_DEFINED
+#undef yy_load_buffer_state
+#endif
+#ifndef asmshader__switch_to_buffer_ALREADY_DEFINED
+#undef yy_switch_to_buffer
+#endif
+#ifndef asmshader_push_buffer_state_ALREADY_DEFINED
+#undef yypush_buffer_state
+#endif
+#ifndef asmshader_pop_buffer_state_ALREADY_DEFINED
+#undef yypop_buffer_state
+#endif
+#ifndef asmshader_ensure_buffer_stack_ALREADY_DEFINED
+#undef yyensure_buffer_stack
+#endif
+#ifndef asmshader_lex_ALREADY_DEFINED
+#undef yylex
+#endif
+#ifndef asmshader_restart_ALREADY_DEFINED
+#undef yyrestart
+#endif
+#ifndef asmshader_lex_init_ALREADY_DEFINED
+#undef yylex_init
+#endif
+#ifndef asmshader_lex_init_extra_ALREADY_DEFINED
+#undef yylex_init_extra
+#endif
+#ifndef asmshader_lex_destroy_ALREADY_DEFINED
+#undef yylex_destroy
+#endif
+#ifndef asmshader_get_debug_ALREADY_DEFINED
+#undef yyget_debug
+#endif
+#ifndef asmshader_set_debug_ALREADY_DEFINED
+#undef yyset_debug
+#endif
+#ifndef asmshader_get_extra_ALREADY_DEFINED
+#undef yyget_extra
+#endif
+#ifndef asmshader_set_extra_ALREADY_DEFINED
+#undef yyset_extra
+#endif
+#ifndef asmshader_get_in_ALREADY_DEFINED
+#undef yyget_in
+#endif
+#ifndef asmshader_set_in_ALREADY_DEFINED
+#undef yyset_in
+#endif
+#ifndef asmshader_get_out_ALREADY_DEFINED
+#undef yyget_out
+#endif
+#ifndef asmshader_set_out_ALREADY_DEFINED
+#undef yyset_out
+#endif
+#ifndef asmshader_get_leng_ALREADY_DEFINED
+#undef yyget_leng
+#endif
+#ifndef asmshader_get_text_ALREADY_DEFINED
+#undef yyget_text
+#endif
+#ifndef asmshader_get_lineno_ALREADY_DEFINED
+#undef yyget_lineno
+#endif
+#ifndef asmshader_set_lineno_ALREADY_DEFINED
+#undef yyset_lineno
+#endif
+#ifndef asmshader_get_column_ALREADY_DEFINED
+#undef yyget_column
+#endif
+#ifndef asmshader_set_column_ALREADY_DEFINED
+#undef yyset_column
+#endif
+#ifndef asmshader_wrap_ALREADY_DEFINED
+#undef yywrap
+#endif
+#ifndef asmshader_get_lval_ALREADY_DEFINED
+#undef yyget_lval
+#endif
+#ifndef asmshader_set_lval_ALREADY_DEFINED
+#undef yyset_lval
+#endif
+#ifndef asmshader_get_lloc_ALREADY_DEFINED
+#undef yyget_lloc
+#endif
+#ifndef asmshader_set_lloc_ALREADY_DEFINED
+#undef yyset_lloc
+#endif
+#ifndef asmshader_alloc_ALREADY_DEFINED
+#undef yyalloc
+#endif
+#ifndef asmshader_realloc_ALREADY_DEFINED
+#undef yyrealloc
+#endif
+#ifndef asmshader_free_ALREADY_DEFINED
+#undef yyfree
+#endif
+#ifndef asmshader_text_ALREADY_DEFINED
+#undef yytext
+#endif
+#ifndef asmshader_leng_ALREADY_DEFINED
+#undef yyleng
+#endif
+#ifndef asmshader_in_ALREADY_DEFINED
+#undef yyin
+#endif
+#ifndef asmshader_out_ALREADY_DEFINED
+#undef yyout
+#endif
+#ifndef asmshader__flex_debug_ALREADY_DEFINED
+#undef yy_flex_debug
+#endif
+#ifndef asmshader_lineno_ALREADY_DEFINED
+#undef yylineno
+#endif
+#ifndef asmshader_tables_fload_ALREADY_DEFINED
+#undef yytables_fload
+#endif
+#ifndef asmshader_tables_destroy_ALREADY_DEFINED
+#undef yytables_destroy
+#endif
+#ifndef asmshader_TABLES_NAME_ALREADY_DEFINED
+#undef yyTABLES_NAME
+#endif
+
+#line 485 "asmshader.l"
+
+
+#line 709 "asmshader.yy.h"
+#undef asmshader_IN_HEADER
+#endif /* asmshader_HEADER_H */
index f22dc71..5cc49fe 100644 (file)
@@ -19,9 +19,6 @@
  *
  */
 
-#include "config.h"
-#include "wine/port.h"
-
 #include "d3dcompiler_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dcompiler);
@@ -466,9 +463,55 @@ HRESULT WINAPI D3DStripShader(const void *data, SIZE_T data_size, UINT flags, ID
 
 HRESULT WINAPI D3DReadFileToBlob(const WCHAR *filename, ID3DBlob **contents)
 {
-    FIXME("filename %s, contents %p\n", debugstr_w(filename), contents);
+    struct d3dcompiler_blob *object;
+    SIZE_T data_size;
+    DWORD read_size;
+    HANDLE file;
+    HRESULT hr;
 
-    return E_NOTIMPL;
+    TRACE("filename %s, contents %p.\n", debugstr_w(filename), contents);
+
+    file = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
+    if (file == INVALID_HANDLE_VALUE)
+        return HRESULT_FROM_WIN32(GetLastError());
+
+    data_size = GetFileSize(file, NULL);
+    if (data_size == INVALID_FILE_SIZE)
+    {
+        CloseHandle(file);
+        return HRESULT_FROM_WIN32(GetLastError());
+    }
+
+    if (!(object = heap_alloc_zero(sizeof(*object))))
+    {
+        CloseHandle(file);
+        return E_OUTOFMEMORY;
+    }
+
+    if (FAILED(hr = d3dcompiler_blob_init(object, data_size)))
+    {
+        WARN("Failed to initialize blob, hr %#x.\n", hr);
+        CloseHandle(file);
+        heap_free(object);
+        return hr;
+    }
+
+    if (!ReadFile(file, object->data, data_size, &read_size, NULL) || (read_size != data_size))
+    {
+        WARN("Failed to read file contents.\n");
+        CloseHandle(file);
+        heap_free(object->data);
+        heap_free(object);
+        return E_FAIL;
+    }
+    CloseHandle(file);
+    object->size = read_size;
+
+    *contents = &object->ID3DBlob_iface;
+
+    TRACE("Returning ID3DBlob %p.\n", *contents);
+
+    return S_OK;
 }
 
 HRESULT WINAPI D3DWriteBlobToFile(ID3DBlob* blob, const WCHAR *filename, BOOL overwrite)
index a3e6f63..14162ab 100644 (file)
@@ -20,8 +20,6 @@
  *
  */
 
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #include "d3d9types.h"
index 53d2a43..990df0d 100644 (file)
  */
 
 #define COBJMACROS
-#include "config.h"
-#include "wine/port.h"
+#include <stdarg.h>
+#include <time.h>
 #include "wine/debug.h"
-#include "wine/unicode.h"
 
 #include "d3dcompiler_private.h"
-#include "wine/wpp.h"
+#include "wpp_private.h"
 
 WINE_DEFAULT_DEBUG_CHANNEL(d3dcompiler);
 
@@ -61,6 +60,15 @@ static int wpp_output_capacity, wpp_output_size;
 static char *wpp_messages;
 static int wpp_messages_capacity, wpp_messages_size;
 
+struct define
+{
+    struct define *next;
+    char          *name;
+    char          *value;
+};
+
+static struct define *cmdline_defines;
+
 /* Mutex used to guarantee a single invocation
    of the D3DXAssembleShader function (or its variants) at a time.
    This is needed as wpp isn't thread-safe */
@@ -75,7 +83,7 @@ static CRITICAL_SECTION_DEBUG wpp_mutex_debug =
 static CRITICAL_SECTION wpp_mutex = { &wpp_mutex_debug, -1, 0, 0, 0, 0 };
 
 /* Preprocessor error reporting functions */
-static void wpp_write_message(const char *fmt, va_list args)
+static void wpp_write_message(const char *fmt, __ms_va_list args)
 {
     char* newbuffer;
     int rc, newsize;
@@ -115,35 +123,43 @@ static void wpp_write_message(const char *fmt, va_list args)
     }
 }
 
-static void PRINTF_ATTR(1,2) wpp_write_message_var(const char *fmt, ...)
+static void WINAPIV PRINTF_ATTR(1,2) wpp_write_message_var(const char *fmt, ...)
 {
-    va_list args;
+    __ms_va_list args;
 
-    va_start(args, fmt);
+    __ms_va_start(args, fmt);
     wpp_write_message(fmt, args);
-    va_end(args);
+    __ms_va_end(args);
 }
 
-static void wpp_error(const char *file, int line, int col, const char *_near,
-                      const char *msg, va_list ap)
+int WINAPIV ppy_error(const char *msg, ...)
 {
-    wpp_write_message_var("%s:%d:%d: %s: ", file ? file : "'main file'",
-                          line, col, "Error");
+    __ms_va_list ap;
+    __ms_va_start(ap, msg);
+    wpp_write_message_var("%s:%d:%d: %s: ",
+                          pp_status.input ? pp_status.input : "'main file'",
+                          pp_status.line_number, pp_status.char_number, "Error");
     wpp_write_message(msg, ap);
     wpp_write_message_var("\n");
+    __ms_va_end(ap);
+    pp_status.state = 1;
+    return 1;
 }
 
-static void wpp_warning(const char *file, int line, int col, const char *_near,
-                        const char *msg, va_list ap)
+int WINAPIV ppy_warning(const char *msg, ...)
 {
-    wpp_write_message_var("%s:%d:%d: %s: ", file ? file : "'main file'",
-                          line, col, "Warning");
+    __ms_va_list ap;
+    __ms_va_start(ap, msg);
+    wpp_write_message_var("%s:%d:%d: %s: ",
+                          pp_status.input ? pp_status.input : "'main file'",
+                          pp_status.line_number, pp_status.char_number, "Warning");
     wpp_write_message(msg, ap);
     wpp_write_message_var("\n");
+    __ms_va_end(ap);
+    return 0;
 }
 
-static char *wpp_lookup_mem(const char *filename, int type, const char *parent_name,
-                            char **include_path, int include_path_count)
+char *wpp_lookup(const char *filename, int type, const char *parent_name)
 {
     /* We don't check for file existence here. We will potentially fail on
      * the following wpp_open_mem(). */
@@ -176,7 +192,7 @@ static char *wpp_lookup_mem(const char *filename, int type, const char *parent_n
     return path;
 }
 
-static void *wpp_open_mem(const char *filename, int type)
+void *wpp_open(const char *filename, int type)
 {
     struct mem_file_desc *desc;
     HRESULT hr;
@@ -239,7 +255,7 @@ error:
     return NULL;
 }
 
-static void wpp_close_mem(void *file)
+void wpp_close(void *file)
 {
     struct mem_file_desc *desc = file;
 
@@ -255,7 +271,7 @@ static void wpp_close_mem(void *file)
     }
 }
 
-static int wpp_read_mem(void *file, char *buffer, unsigned int len)
+int wpp_read(void *file, char *buffer, unsigned int len)
 {
     struct mem_file_desc *desc = file;
 
@@ -265,7 +281,7 @@ static int wpp_read_mem(void *file, char *buffer, unsigned int len)
     return len;
 }
 
-static void wpp_write_mem(const char *buffer, unsigned int len)
+void wpp_write(const char *buffer, unsigned int len)
 {
     char *new_wpp_output;
 
@@ -307,6 +323,164 @@ static int wpp_close_output(void)
     return 1;
 }
 
+static void add_cmdline_defines(void)
+{
+    struct define *def;
+
+    for (def = cmdline_defines; def; def = def->next)
+    {
+        if (def->value) pp_add_define( def->name, def->value );
+    }
+}
+
+static void del_cmdline_defines(void)
+{
+    struct define *def;
+
+    for (def = cmdline_defines; def; def = def->next)
+    {
+        if (def->value) pp_del_define( def->name );
+    }
+}
+
+static void add_special_defines(void)
+{
+    time_t now = time(NULL);
+    pp_entry_t *ppp;
+    char buf[32];
+
+    strftime(buf, sizeof(buf), "\"%b %d %Y\"", localtime(&now));
+    pp_add_define( "__DATE__", buf );
+
+    strftime(buf, sizeof(buf), "\"%H:%M:%S\"", localtime(&now));
+    pp_add_define( "__TIME__", buf );
+
+    ppp = pp_add_define( "__FILE__", "" );
+    if(ppp)
+        ppp->type = def_special;
+
+    ppp = pp_add_define( "__LINE__", "" );
+    if(ppp)
+        ppp->type = def_special;
+}
+
+static void del_special_defines(void)
+{
+    pp_del_define( "__DATE__" );
+    pp_del_define( "__TIME__" );
+    pp_del_define( "__FILE__" );
+    pp_del_define( "__LINE__" );
+}
+
+
+/* add a define to the preprocessor list */
+int wpp_add_define( const char *name, const char *value )
+{
+    struct define *def;
+
+    if (!value) value = "";
+
+    for (def = cmdline_defines; def; def = def->next)
+    {
+        if (!strcmp( def->name, name ))
+        {
+            char *new_value = pp_xstrdup(value);
+            if(!new_value)
+                return 1;
+            free( def->value );
+            def->value = new_value;
+
+            return 0;
+        }
+    }
+
+    def = pp_xmalloc( sizeof(*def) );
+    if(!def)
+        return 1;
+    def->next  = cmdline_defines;
+    def->name  = pp_xstrdup(name);
+    if(!def->name)
+    {
+        free(def);
+        return 1;
+    }
+    def->value = pp_xstrdup(value);
+    if(!def->value)
+    {
+        free(def->name);
+        free(def);
+        return 1;
+    }
+    cmdline_defines = def;
+    return 0;
+}
+
+
+/* undefine a previously added definition */
+void wpp_del_define( const char *name )
+{
+    struct define *def;
+
+    for (def = cmdline_defines; def; def = def->next)
+    {
+        if (!strcmp( def->name, name ))
+        {
+            free( def->value );
+            def->value = NULL;
+            return;
+        }
+    }
+}
+
+
+/* the main preprocessor parsing loop */
+int wpp_parse( const char *input, FILE *output )
+{
+    int ret;
+
+    pp_status.input = NULL;
+    pp_status.line_number = 1;
+    pp_status.char_number = 1;
+    pp_status.state = 0;
+
+    ret = pp_push_define_state();
+    if(ret)
+        return ret;
+    add_cmdline_defines();
+    add_special_defines();
+
+    if (!input) pp_status.file = stdin;
+    else if (!(pp_status.file = wpp_open(input, 1)))
+    {
+        ppy_error("Could not open %s\n", input);
+        del_special_defines();
+        del_cmdline_defines();
+        pp_pop_define_state();
+        return 2;
+    }
+
+    pp_status.input = input ? pp_xstrdup(input) : NULL;
+
+    ppy_out = output;
+    pp_writestring("# 1 \"%s\" 1\n", input ? input : "");
+
+    ret = ppy_parse();
+    /* If there were errors during processing, return an error code */
+    if (!ret && pp_status.state) ret = pp_status.state;
+
+    if (input)
+    {
+       wpp_close(pp_status.file);
+       free(pp_status.input);
+    }
+    /* Clean if_stack, it could remain dirty on errors */
+    while (pp_get_if_depth()) pp_pop_if();
+    del_special_defines();
+    del_cmdline_defines();
+    pp_pop_define_state();
+    return ret;
+}
+
 static HRESULT preprocess_shader(const void *data, SIZE_T data_size, const char *filename,
         const D3D_SHADER_MACRO *defines, ID3DInclude *include, ID3DBlob **error_messages)
 {
@@ -314,17 +488,6 @@ static HRESULT preprocess_shader(const void *data, SIZE_T data_size, const char
     HRESULT hr = S_OK;
     const D3D_SHADER_MACRO *def = defines;
 
-    static const struct wpp_callbacks wpp_callbacks =
-    {
-        wpp_lookup_mem,
-        wpp_open_mem,
-        wpp_close_mem,
-        wpp_read_mem,
-        wpp_write_mem,
-        wpp_error,
-        wpp_warning,
-    };
-
     if (def != NULL)
     {
         while (def->Name != NULL)
@@ -339,7 +502,6 @@ static HRESULT preprocess_shader(const void *data, SIZE_T data_size, const char
     wpp_output_size = wpp_output_capacity = 0;
     wpp_output = NULL;
 
-    wpp_set_callbacks(&wpp_callbacks);
     wpp_messages_size = wpp_messages_capacity = 0;
     wpp_messages = NULL;
     current_shader.buffer = data;
index 68ff962..45dbff7 100644 (file)
@@ -25,6 +25,7 @@
 #include "wine/debug.h"
 #include "wine/list.h"
 #include "wine/rbtree.h"
+#include "wine/heap.h"
 
 #define COBJMACROS
 #include "windef.h"
@@ -284,8 +285,8 @@ struct bwriter_shader *parse_asm_shader(char **messages) DECLSPEC_HIDDEN;
 #define PRINTF_ATTR(fmt,args)
 #endif
 
-void compilation_message(struct compilation_messages *msg, const char *fmt, va_list args) DECLSPEC_HIDDEN;
-void asmparser_message(struct asm_parser *ctx, const char *fmt, ...) PRINTF_ATTR(2,3) DECLSPEC_HIDDEN;
+void compilation_message(struct compilation_messages *msg, const char *fmt, __ms_va_list args) DECLSPEC_HIDDEN;
+void WINAPIV asmparser_message(struct asm_parser *ctx, const char *fmt, ...) PRINTF_ATTR(2,3) DECLSPEC_HIDDEN;
 static inline void set_parse_status(enum parse_status *current, enum parse_status update)
 {
     if (update == PARSE_ERR)
@@ -705,13 +706,11 @@ struct source_location
 
 enum hlsl_ir_node_type
 {
-    HLSL_IR_VAR = 0,
-    HLSL_IR_ASSIGNMENT,
+    HLSL_IR_ASSIGNMENT = 0,
     HLSL_IR_CONSTANT,
     HLSL_IR_CONSTRUCTOR,
     HLSL_IR_DEREF,
     HLSL_IR_EXPR,
-    HLSL_IR_FUNCTION_DECL,
     HLSL_IR_IF,
     HLSL_IR_LOOP,
     HLSL_IR_JUMP,
@@ -755,12 +754,13 @@ struct reg_reservation
 
 struct hlsl_ir_var
 {
-    struct hlsl_ir_node node;
+    struct hlsl_type *data_type;
+    struct source_location loc;
     const char *name;
     const char *semantic;
     unsigned int modifiers;
     const struct reg_reservation *reg_reservation;
-    struct list scope_entry;
+    struct list scope_entry, param_entry;
 
     struct hlsl_var_allocation *allocation;
 };
@@ -775,7 +775,8 @@ struct hlsl_ir_function
 
 struct hlsl_ir_function_decl
 {
-    struct hlsl_ir_node node;
+    struct hlsl_type *return_type;
+    struct source_location loc;
     struct wine_rb_entry entry;
     struct hlsl_ir_function *func;
     const char *semantic;
@@ -951,7 +952,8 @@ struct hlsl_ir_constant
 struct hlsl_ir_constructor
 {
     struct hlsl_ir_node node;
-    struct list *arguments;
+    struct hlsl_ir_node *args[16];
+    unsigned int args_count;
 };
 
 struct hlsl_scope
@@ -978,6 +980,12 @@ struct parse_colon_attribute
     struct reg_reservation *reg_reservation;
 };
 
+struct parse_initializer
+{
+    struct hlsl_ir_node **args;
+    unsigned int args_count;
+};
+
 struct parse_variable_def
 {
     struct list entry;
@@ -987,7 +995,7 @@ struct parse_variable_def
     unsigned int array_size;
     const char *semantic;
     struct reg_reservation *reg_reservation;
-    struct list *initializer;
+    struct parse_initializer initializer;
 };
 
 struct parse_function
@@ -1054,16 +1062,10 @@ enum hlsl_error_level
     HLSL_LEVEL_NOTE,
 };
 
-void hlsl_message(const char *fmt, ...) PRINTF_ATTR(1,2) DECLSPEC_HIDDEN;
-void hlsl_report_message(const char *filename, DWORD line, DWORD column,
+void WINAPIV hlsl_message(const char *fmt, ...) PRINTF_ATTR(1,2) DECLSPEC_HIDDEN;
+void WINAPIV hlsl_report_message(const char *filename, DWORD line, DWORD column,
         enum hlsl_error_level level, const char *fmt, ...) PRINTF_ATTR(5,6) DECLSPEC_HIDDEN;
 
-static inline struct hlsl_ir_var *var_from_node(const struct hlsl_ir_node *node)
-{
-    assert(node->type == HLSL_IR_VAR);
-    return CONTAINING_RECORD(node, struct hlsl_ir_var, node);
-}
-
 static inline struct hlsl_ir_expr *expr_from_node(const struct hlsl_ir_node *node)
 {
     assert(node->type == HLSL_IR_EXPR);
@@ -1134,28 +1136,6 @@ struct hlsl_ir_expr *new_expr(enum hlsl_ir_expr_op op, struct hlsl_ir_node **ope
         struct source_location *loc) DECLSPEC_HIDDEN;
 struct hlsl_ir_expr *new_cast(struct hlsl_ir_node *node, struct hlsl_type *type,
        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_mul(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_div(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_mod(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_add(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_sub(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_lt(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_gt(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_le(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_ge(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_eq(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
-struct hlsl_ir_expr *hlsl_ne(struct hlsl_ir_node *op1, struct hlsl_ir_node *op2,
-        struct source_location *loc) DECLSPEC_HIDDEN;
 struct hlsl_ir_deref *new_var_deref(struct hlsl_ir_var *var) DECLSPEC_HIDDEN;
 struct hlsl_ir_deref *new_record_deref(struct hlsl_ir_node *record, struct hlsl_struct_field *field) DECLSPEC_HIDDEN;
 struct hlsl_ir_node *make_assignment(struct hlsl_ir_node *left, enum parse_assign_op assign_op,
@@ -1178,6 +1158,19 @@ void free_instr(struct hlsl_ir_node *node) DECLSPEC_HIDDEN;
 void free_instr_list(struct list *list) DECLSPEC_HIDDEN;
 void free_function_rb(struct wine_rb_entry *entry, void *context) DECLSPEC_HIDDEN;
 
+static inline struct hlsl_ir_node *new_unary_expr(enum hlsl_ir_expr_op op,
+        struct hlsl_ir_node *op1, struct source_location loc)
+{
+    struct hlsl_ir_node *operands[3] = {op1};
+    return &new_expr(op, operands, &loc)->node;
+}
+
+static inline struct hlsl_ir_node *new_binary_expr(enum hlsl_ir_expr_op op,
+        struct hlsl_ir_node *op1, struct hlsl_ir_node *op2, struct source_location loc)
+{
+    struct hlsl_ir_node *operands[3] = {op1, op2};
+    return &new_expr(op, operands, &loc)->node;
+}
 
 #define MAKE_TAG(ch0, ch1, ch2, ch3) \
     ((DWORD)(ch0) | ((DWORD)(ch1) << 8) | \
index f40e3c9..2994c7d 100644 (file)
@@ -20,8 +20,6 @@
  */
 
 %{
-#include "config.h"
-#include "wine/port.h"
 #include "wine/debug.h"
 
 #define YY_NO_UNISTD_H
index 465416c..d84de23 100644 (file)
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.  */
+/* A Bison parser, made by GNU Bison 3.4.1.  */
 
 /* Bison implementation for Yacc-like parsers in C
 
-   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+   Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2019 Free Software Foundation,
+   Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    define necessary library symbols; they are noted "INFRINGES ON
    USER NAME SPACE" below.  */
 
+/* Undocumented macros, especially those whose name start with YY_,
+   are private implementation details.  Do not rely on them.  */
+
 /* Identify Bison output.  */
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "3.0"
+#define YYBISON_VERSION "3.4.1"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
 #define yychar          hlsl_char
 #define yylloc          hlsl_lloc
 
-/* Copy the first part of user declarations.  */
-#line 21 "hlsl.y" /* yacc.c:339  */
+/* First part of user prologue.  */
+#line 21 "hlsl.y"
 
-#include "config.h"
 #include "wine/debug.h"
 
 #include <stdio.h>
@@ -89,13 +92,13 @@ struct hlsl_parse_ctx hlsl_ctx;
 struct YYLTYPE;
 static void set_location(struct source_location *loc, const struct YYLTYPE *l);
 
-void hlsl_message(const char *fmt, ...)
+void WINAPIV hlsl_message(const char *fmt, ...)
 {
-    va_list args;
+    __ms_va_list args;
 
-    va_start(args, fmt);
+    __ms_va_start(args, fmt);
     compilation_message(&hlsl_ctx.messages, fmt, args);
-    va_end(args);
+    __ms_va_end(args);
 }
 
 static const char *hlsl_get_error_level_name(enum hlsl_error_level level)
@@ -109,18 +112,18 @@ static const char *hlsl_get_error_level_name(enum hlsl_error_level level)
     return names[level];
 }
 
-void hlsl_report_message(const char *filename, DWORD line, DWORD column,
+void WINAPIV hlsl_report_message(const char *filename, DWORD line, DWORD column,
         enum hlsl_error_level level, const char *fmt, ...)
 {
-    va_list args;
+    __ms_va_list args;
     char *string = NULL;
     int rc, size = 0;
 
     while (1)
     {
-        va_start(args, fmt);
+        __ms_va_start(args, fmt);
         rc = vsnprintf(string, size, fmt, args);
-        va_end(args);
+        __ms_va_end(args);
 
         if (rc >= 0 && rc < size)
             break;
@@ -177,7 +180,7 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
     BOOL ret;
 
     TRACE("Declaring variable %s.\n", decl->name);
-    if (decl->node.data_type->type == HLSL_CLASS_MATRIX)
+    if (decl->data_type->type == HLSL_CLASS_MATRIX)
     {
         if (!(decl->modifiers & (HLSL_MODIFIER_ROW_MAJOR | HLSL_MODIFIER_COLUMN_MAJOR)))
         {
@@ -186,7 +189,7 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
         }
     }
     else
-        check_invalid_matrix_modifiers(decl->modifiers, &decl->node.loc);
+        check_invalid_matrix_modifiers(decl->modifiers, &decl->loc);
 
     if (local)
     {
@@ -194,12 +197,12 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
                 | HLSL_STORAGE_GROUPSHARED | HLSL_STORAGE_UNIFORM);
         if (invalid)
         {
-            hlsl_report_message(decl->node.loc.file, decl->node.loc.line, decl->node.loc.col, HLSL_LEVEL_ERROR,
+            hlsl_report_message(decl->loc.file, decl->loc.line, decl->loc.col, HLSL_LEVEL_ERROR,
                     "modifier '%s' invalid for local variables", debug_modifiers(invalid));
         }
         if (decl->semantic)
         {
-            hlsl_report_message(decl->node.loc.file, decl->node.loc.line, decl->node.loc.col, HLSL_LEVEL_ERROR,
+            hlsl_report_message(decl->loc.file, decl->loc.line, decl->loc.col, HLSL_LEVEL_ERROR,
                     "semantics are not allowed on local variables");
             return FALSE;
         }
@@ -208,7 +211,7 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
     {
         if (find_function(decl->name))
         {
-            hlsl_report_message(decl->node.loc.file, decl->node.loc.line, decl->node.loc.col, HLSL_LEVEL_ERROR,
+            hlsl_report_message(decl->loc.file, decl->loc.line, decl->loc.col, HLSL_LEVEL_ERROR,
                     "redefinition of '%s'", decl->name);
             return FALSE;
         }
@@ -218,9 +221,9 @@ static BOOL declare_variable(struct hlsl_ir_var *decl, BOOL local)
     {
         struct hlsl_ir_var *old = get_variable(hlsl_ctx.cur_scope, decl->name);
 
-        hlsl_report_message(decl->node.loc.file, decl->node.loc.line, decl->node.loc.col, HLSL_LEVEL_ERROR,
+        hlsl_report_message(decl->loc.file, decl->loc.line, decl->loc.col, HLSL_LEVEL_ERROR,
                 "\"%s\" already declared", decl->name);
-        hlsl_report_message(old->node.loc.file, old->node.loc.line, old->node.loc.col, HLSL_LEVEL_NOTE,
+        hlsl_report_message(old->loc.file, old->loc.line, old->loc.col, HLSL_LEVEL_NOTE,
                 "\"%s\" was previously declared here", old->name);
         return FALSE;
     }
@@ -312,9 +315,8 @@ static void declare_predefined_types(struct hlsl_scope *scope)
 
 static struct hlsl_ir_if *loop_condition(struct list *cond_list)
 {
+    struct hlsl_ir_node *cond, *not_cond;
     struct hlsl_ir_if *out_cond;
-    struct hlsl_ir_expr *not_cond;
-    struct hlsl_ir_node *cond, *operands[3];
     struct hlsl_ir_jump *jump;
     unsigned int count = list_count(cond_list);
 
@@ -331,16 +333,13 @@ static struct hlsl_ir_if *loop_condition(struct list *cond_list)
         return NULL;
     }
     out_cond->node.type = HLSL_IR_IF;
-    operands[0] = cond;
-    operands[1] = operands[2] = NULL;
-    not_cond = new_expr(HLSL_IR_UNOP_LOGIC_NOT, operands, &cond->loc);
-    if (!not_cond)
+    if (!(not_cond = new_unary_expr(HLSL_IR_UNOP_LOGIC_NOT, cond, cond->loc)))
     {
         ERR("Out of memory.\n");
         d3dcompiler_free(out_cond);
         return NULL;
     }
-    out_cond->condition = &not_cond->node;
+    out_cond->condition = not_cond;
     jump = d3dcompiler_alloc(sizeof(*jump));
     if (!jump)
     {
@@ -433,29 +432,24 @@ oom:
     return NULL;
 }
 
-static unsigned int initializer_size(struct list *initializer)
+static unsigned int initializer_size(const struct parse_initializer *initializer)
 {
-    unsigned int count = 0;
-    struct hlsl_ir_node *node;
+    unsigned int count = 0, i;
 
-    LIST_FOR_EACH_ENTRY(node, initializer, struct hlsl_ir_node, entry)
+    for (i = 0; i < initializer->args_count; ++i)
     {
-        count += components_count_type(node->data_type);
+        count += components_count_type(initializer->args[i]->data_type);
     }
-    TRACE("Initializer size = %u\n", count);
+    TRACE("Initializer size = %u.\n", count);
     return count;
 }
 
-static unsigned int components_count_expr_list(struct list *list)
+static void free_parse_initializer(struct parse_initializer *initializer)
 {
-    struct hlsl_ir_node *node;
-    unsigned int count = 0;
-
-    LIST_FOR_EACH_ENTRY(node, list, struct hlsl_ir_node, entry)
-    {
-        count += components_count_type(node->data_type);
-    }
-    return count;
+    unsigned int i;
+    for (i = 0; i < initializer->args_count; ++i)
+        free_instr(initializer->args[i]);
+    d3dcompiler_free(initializer->args);
 }
 
 static struct hlsl_ir_swizzle *new_swizzle(DWORD s, unsigned int components,
@@ -555,35 +549,35 @@ static struct hlsl_ir_swizzle *get_swizzle(struct hlsl_ir_node *value, const cha
     return NULL;
 }
 
-static void struct_var_initializer(struct list *list, struct hlsl_ir_var *var, struct list *initializer)
+static void struct_var_initializer(struct list *list, struct hlsl_ir_var *var,
+        struct parse_initializer *initializer)
 {
-    struct hlsl_type *type = var->node.data_type;
-    struct hlsl_ir_node *node;
+    struct hlsl_type *type = var->data_type;
     struct hlsl_struct_field *field;
-    struct list *cur_node;
     struct hlsl_ir_node *assignment;
     struct hlsl_ir_deref *deref;
+    unsigned int i = 0;
 
     if (initializer_size(initializer) != components_count_type(type))
     {
-        hlsl_report_message(var->node.loc.file, var->node.loc.line, var->node.loc.col, HLSL_LEVEL_ERROR,
+        hlsl_report_message(var->loc.file, var->loc.line, var->loc.col, HLSL_LEVEL_ERROR,
                 "structure initializer mismatch");
-        free_instr_list(initializer);
+        free_parse_initializer(initializer);
         return;
     }
-    cur_node = list_head(initializer);
-    assert(cur_node);
-    node = LIST_ENTRY(cur_node, struct hlsl_ir_node, entry);
+
     LIST_FOR_EACH_ENTRY(field, type->e.elements, struct hlsl_struct_field, entry)
     {
-        if (!cur_node)
+        struct hlsl_ir_node *node = initializer->args[i];
+
+        if (i++ >= initializer->args_count)
         {
-            d3dcompiler_free(initializer);
+            d3dcompiler_free(initializer->args);
             return;
         }
         if (components_count_type(field->type) == components_count_type(node->data_type))
         {
-            deref = new_record_deref(&var->node, field);
+            deref = new_record_deref(&new_var_deref(var)->node, field);
             if (!deref)
             {
                 ERR("Out of memory.\n");
@@ -595,19 +589,12 @@ static void struct_var_initializer(struct list *list, struct hlsl_ir_var *var, s
         }
         else
             FIXME("Initializing with \"mismatched\" fields is not supported yet.\n");
-        cur_node = list_next(initializer, cur_node);
-        node = LIST_ENTRY(cur_node, struct hlsl_ir_node, entry);
     }
 
     /* Free initializer elements in excess. */
-    while (cur_node)
-    {
-        struct list *next = list_next(initializer, cur_node);
-        free_instr(node);
-        cur_node = next;
-        node = LIST_ENTRY(cur_node, struct hlsl_ir_node, entry);
-    }
-    d3dcompiler_free(initializer);
+    for (; i < initializer->args_count; ++i)
+        free_instr(initializer->args[i]);
+    d3dcompiler_free(initializer->args);
 }
 
 static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers, struct list *var_list)
@@ -641,13 +628,12 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
             d3dcompiler_free(v);
             continue;
         }
-        var->node.type = HLSL_IR_VAR;
         if (v->array_size)
             type = new_array_type(basic_type, v->array_size);
         else
             type = basic_type;
-        var->node.data_type = type;
-        var->node.loc = v->loc;
+        var->data_type = type;
+        var->loc = v->loc;
         var->name = v->name;
         var->modifiers = modifiers;
         var->semantic = v->semantic;
@@ -660,7 +646,7 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
             local = FALSE;
         }
 
-        if (var->modifiers & HLSL_MODIFIER_CONST && !(var->modifiers & HLSL_STORAGE_UNIFORM) && !v->initializer)
+        if (var->modifiers & HLSL_MODIFIER_CONST && !(var->modifiers & HLSL_STORAGE_UNIFORM) && !v->initializer.args_count)
         {
             hlsl_report_message(v->loc.file, v->loc.line, v->loc.col,
                     HLSL_LEVEL_ERROR, "const variable without initializer");
@@ -678,10 +664,9 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
         }
         TRACE("Declared variable %s.\n", var->name);
 
-        if (v->initializer)
+        if (v->initializer.args_count)
         {
-            unsigned int size = initializer_size(v->initializer);
-            struct hlsl_ir_node *node;
+            unsigned int size = initializer_size(&v->initializer);
 
             TRACE("Variable with initializer.\n");
             if (type->type <= HLSL_CLASS_LAST_NUMERIC
@@ -691,7 +676,7 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
                 {
                     hlsl_report_message(v->loc.file, v->loc.line, v->loc.col, HLSL_LEVEL_ERROR,
                             "'%s' initializer does not match", v->name);
-                    free_instr_list(v->initializer);
+                    free_parse_initializer(&v->initializer);
                     d3dcompiler_free(v);
                     continue;
                 }
@@ -701,43 +686,43 @@ static struct list *declare_vars(struct hlsl_type *basic_type, DWORD modifiers,
             {
                 hlsl_report_message(v->loc.file, v->loc.line, v->loc.col, HLSL_LEVEL_ERROR,
                         "'%s' initializer does not match", v->name);
-                free_instr_list(v->initializer);
+                free_parse_initializer(&v->initializer);
                 d3dcompiler_free(v);
                 continue;
             }
 
             if (type->type == HLSL_CLASS_STRUCT)
             {
-                struct_var_initializer(statements_list, var, v->initializer);
+                struct_var_initializer(statements_list, var, &v->initializer);
                 d3dcompiler_free(v);
                 continue;
             }
             if (type->type > HLSL_CLASS_LAST_NUMERIC)
             {
                 FIXME("Initializers for non scalar/struct variables not supported yet.\n");
-                free_instr_list(v->initializer);
+                free_parse_initializer(&v->initializer);
                 d3dcompiler_free(v);
                 continue;
             }
             if (v->array_size > 0)
             {
                 FIXME("Initializing arrays is not supported yet.\n");
-                free_instr_list(v->initializer);
+                free_parse_initializer(&v->initializer);
                 d3dcompiler_free(v);
                 continue;
             }
-            if (list_count(v->initializer) > 1)
+            if (v->initializer.args_count > 1)
             {
                 FIXME("Complex initializers are not supported yet.\n");
-                free_instr_list(v->initializer);
+                free_parse_initializer(&v->initializer);
                 d3dcompiler_free(v);
                 continue;
             }
-            node = LIST_ENTRY(list_head(v->initializer), struct hlsl_ir_node, entry);
-            assignment = make_assignment(&var->node, ASSIGN_OP_ASSIGN,
-                    BWRITERSP_WRITEMASK_ALL, node);
+
+            assignment = make_assignment(&new_var_deref(var)->node, ASSIGN_OP_ASSIGN,
+                    BWRITERSP_WRITEMASK_ALL, v->initializer.args[0]);
+            d3dcompiler_free(v->initializer.args);
             list_add_tail(statements_list, &assignment->entry);
-            d3dcompiler_free(v->initializer);
         }
         d3dcompiler_free(v);
     }
@@ -785,11 +770,11 @@ static struct list *gen_struct_fields(struct hlsl_type *type, DWORD modifiers, s
         field->name = v->name;
         field->modifiers = modifiers;
         field->semantic = v->semantic;
-        if (v->initializer)
+        if (v->initializer.args_count)
         {
             hlsl_report_message(v->loc.file, v->loc.line, v->loc.col, HLSL_LEVEL_ERROR,
                     "struct field with an initializer.\n");
-            free_instr_list(v->initializer);
+            free_parse_initializer(&v->initializer);
         }
         list_add_tail(list, &field->entry);
         d3dcompiler_free(v);
@@ -872,9 +857,8 @@ static BOOL add_func_parameter(struct list *list, struct parse_parameter *param,
         ERR("Out of memory.\n");
         return FALSE;
     }
-    decl->node.type = HLSL_IR_VAR;
-    decl->node.data_type = param->type;
-    decl->node.loc = *loc;
+    decl->data_type = param->type;
+ &n