Add support for negate and abs to source operands.
authorEric Anholt <eric@anholt.net>
Tue, 22 Aug 2006 21:42:45 +0000 (14:42 -0700)
committerDamien Lespiau <damien.lespiau@intel.com>
Mon, 4 Mar 2013 15:54:21 +0000 (15:54 +0000)
assembler/gram.y
assembler/lex.c
assembler/lex.l
assembler/packed_yuv_wm.g4a

index fdbd8c1..0ac75c1 100644 (file)
@@ -56,6 +56,7 @@
 %token LCURLY RCURLY
 %token COMMA
 %token DOT
+%token MINUS ABS
 
 %token TYPE_UD, TYPE_D, TYPE_UW, TYPE_W, TYPE_UB, TYPE_B,
 %token TYPE_VF, TYPE_HF, TYPE_V, TYPE_F
@@ -86,7 +87,7 @@
 %type <program> instrseq
 %type <integer> instoption
 %type <integer> unaryop binaryop binaryaccop
-%type <integer> conditionalmodifier saturate
+%type <integer> conditionalmodifier saturate negate abs
 %type <integer> regtype srcimmtype execsize dstregion
 %type <integer> subregnum msgtarget
 %type <region> region
@@ -324,19 +325,22 @@ directsrcaccoperand:      directsrcoperand
 src:           directsrcoperand
 ;
 
-/* XXX: srcmodifier, swizzle srcaccoperandex */
-directsrcoperand:      directgenreg region regtype
+/* XXX: srcaccoperandex */
+directsrcoperand:
+               negate abs directgenreg region regtype
                {
                  /* Returns a source operand in the src0 fields of an
                   * instruction.
                   */
-                 $$.bits1.da1.src0_reg_file = $1.reg_file;
-                 $$.bits1.da1.src0_reg_type = $3;
-                 $$.bits2.da1.src0_subreg_nr = $1.subreg_nr;
-                 $$.bits2.da1.src0_reg_nr = $1.reg_nr;
-                 $$.bits2.da1.src0_vert_stride = $2.vert_stride;
-                 $$.bits2.da1.src0_width = $2.width;
-                 $$.bits2.da1.src0_horiz_stride = $2.horiz_stride;
+                 $$.bits1.da1.src0_reg_file = $3.reg_file;
+                 $$.bits1.da1.src0_reg_type = $5;
+                 $$.bits2.da1.src0_subreg_nr = $3.subreg_nr;
+                 $$.bits2.da1.src0_reg_nr = $3.reg_nr;
+                 $$.bits2.da1.src0_vert_stride = $4.vert_stride;
+                 $$.bits2.da1.src0_width = $4.width;
+                 $$.bits2.da1.src0_horiz_stride = $4.horiz_stride;
+                 $$.bits2.da1.src0_negate = $1;
+                 $$.bits2.da1.src0_abs = $2;
                }
 ;
 
@@ -447,6 +451,13 @@ imm32:             INTEGER { $$ = $1; }
 /* 1.4.12: Predication and modifiers */
 /* XXX: do the predicate */
 predicate:
+;
+
+negate:                /* empty */ { $$ = 0; }
+               | MINUS { $$ = 1; }
+
+abs:           /* empty */ { $$ = 0; }
+               | ABS { $$ = 1; }
 
 execsize:      LPAREN INTEGER RPAREN
                {
@@ -542,6 +553,8 @@ void set_instruction_src0(struct brw_instruction *instr,
                instr->bits2.da1.src0_width = src->bits2.da1.src0_width;
                instr->bits2.da1.src0_horiz_stride =
                        src->bits2.da1.src0_horiz_stride;
+               instr->bits2.da1.src0_negate = src->bits2.da1.src0_negate;
+               instr->bits2.da1.src0_abs = src->bits2.da1.src0_abs;
        }
 }
 
@@ -561,6 +574,8 @@ void set_instruction_src1(struct brw_instruction *instr,
                instr->bits3.da1.src1_width = src->bits2.da1.src0_width;
                instr->bits3.da1.src1_horiz_stride =
                        src->bits2.da1.src0_horiz_stride;
+               instr->bits3.da1.src1_negate = src->bits2.da1.src0_negate;
+               instr->bits3.da1.src1_abs = src->bits2.da1.src0_abs;
        }
 }
 
index bb00f36..fd3c704 100644 (file)
@@ -293,47 +293,49 @@ static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
        *yy_cp = '\0'; \
        yy_c_buf_p = yy_cp;
 
-#define YY_NUM_RULES 62
-#define YY_END_OF_BUFFER 63
-static yyconst short int yy_acclist[151] =
+#define YY_NUM_RULES 64
+#define YY_END_OF_BUFFER 65
+static yyconst short int yy_acclist[156] =
     {   0,
-       58,   58,   58,   58,   63,   61,   62,   60,   61,   62,
-       60,   62,   31,   61,   62,   32,   61,   62,   37,   61,
-       62,   61,   62,   38,   61,   62,   61,   62,   58,   61,
-       62,   30,   61,   62,   33,   61,   62,   34,   61,   62,
-       51,   61,   62,   47,   61,   62,   61,   62,   52,   61,
-       62,   61,   62,   49,   61,   62,   40,   61,   62,   61,
-       62,   61,   62,   42,   61,   62,   43,   61,   62,   61,
-       62,   61,   62,   41,   61,   62,   61,   62,   43,   61,
-       62,   61,   62,   61,   62,   61,   62,   61,   62,   35,
-       61,   62,   36,   61,   62,   58,   61,   62,    4,   62,
-
-        5,   62,    4,    5,   62,    4,   62,   60,    2,   58,
-       50,   46,   48,   44,   45,   58,    3,    1,    1,   59,
-       57,   39,   18,   17,   16,   14,   15,    9,    7,    8,
-       19,   53,   28,   11,   10,   23,   21,    6,   26,   22,
-       12,   20,   13,   27,   54,   55,   25,   24,   56,   29
+       60,   60,   60,   60,   65,   63,   64,   62,   63,   64,
+       62,   64,   31,   63,   64,   32,   63,   64,   37,   63,
+       64,   39,   63,   64,   38,   63,   64,   63,   64,   60,
+       63,   64,   30,   63,   64,   33,   63,   64,   34,   63,
+       64,   53,   63,   64,   49,   63,   64,   63,   64,   54,
+       63,   64,   63,   64,   51,   63,   64,   42,   63,   64,
+       63,   64,   63,   64,   44,   63,   64,   45,   63,   64,
+       63,   64,   63,   64,   43,   63,   64,   63,   64,   45,
+       63,   64,   63,   64,   63,   64,   63,   64,   63,   64,
+       35,   63,   64,   36,   63,   64,   39,   63,   64,   60,
+
+       63,   64,    4,   64,    5,   64,    4,    5,   64,    4,
+       64,   62,    2,   60,   52,   48,   50,   46,   47,   60,
+        3,    1,    1,   61,   59,   41,   18,   17,   16,   14,
+       15,    9,    7,    8,   19,   55,   28,   11,   10,   23,
+       21,    6,   26,   22,   12,   20,   40,   13,   27,   56,
+       57,   25,   24,   58,   29
     } ;
 
-static yyconst short int yy_accept[159] =
+static yyconst short int yy_accept[164] =
     {   0,
         1,    2,    3,    4,    5,    5,    5,    6,    8,   11,
-       13,   16,   19,   22,   24,   27,   29,   32,   35,   38,
-       41,   44,   47,   49,   52,   54,   57,   60,   62,   64,
-       67,   70,   72,   74,   77,   79,   82,   84,   86,   88,
-       90,   93,   96,   99,  101,  103,  106,  108,  109,  109,
-      110,  110,  110,  111,  111,  112,  113,  114,  114,  114,
-      114,  115,  115,  115,  116,  116,  116,  116,  116,  116,
-      116,  116,  116,  116,  116,  116,  116,  116,  116,  117,
-      118,  118,  119,  120,  121,  122,  123,  124,  124,  125,
-      126,  127,  128,  128,  128,  129,  129,  129,  129,  130,
-
-      131,  132,  132,  132,  132,  132,  132,  133,  133,  133,
-      134,  134,  134,  134,  135,  136,  136,  137,  138,  139,
-      140,  141,  142,  142,  142,  143,  143,  143,  143,  143,
-      143,  144,  144,  144,  145,  146,  146,  146,  146,  146,
-      147,  148,  148,  149,  149,  149,  149,  149,  149,  149,
-      149,  149,  149,  150,  150,  150,  151,  151
+       13,   16,   19,   22,   25,   28,   30,   33,   36,   39,
+       42,   45,   48,   50,   53,   55,   58,   61,   63,   65,
+       68,   71,   73,   75,   78,   80,   83,   85,   87,   89,
+       91,   94,   97,  100,  103,  105,  107,  110,  112,  113,
+      113,  113,  114,  114,  114,  115,  115,  116,  117,  118,
+      118,  118,  118,  119,  119,  119,  120,  120,  120,  120,
+      120,  120,  120,  120,  120,  120,  120,  120,  120,  120,
+      120,  121,  122,  122,  122,  123,  124,  125,  126,  127,
+      128,  128,  129,  130,  131,  132,  132,  132,  133,  133,
+
+      133,  133,  134,  135,  136,  136,  136,  136,  136,  136,
+      137,  137,  137,  138,  138,  138,  138,  138,  139,  140,
+      140,  141,  142,  143,  144,  145,  146,  146,  146,  147,
+      147,  147,  148,  148,  148,  148,  149,  149,  149,  150,
+      151,  151,  151,  151,  151,  152,  153,  153,  154,  154,
+      154,  154,  154,  154,  154,  154,  154,  154,  155,  155,
+      155,  156,  156
     } ;
 
 static yyconst int yy_ec[256] =
@@ -378,86 +380,88 @@ static yyconst int yy_meta[54] =
         1,    1,    1
     } ;
 
-static yyconst short int yy_base[160] =
+static yyconst short int yy_base[165] =
     {   0,
-        0,    0,   45,   54,   69,   71,  239,  240,   53,   62,
-      240,  240,  240,   67,  240,   78,   78,  240,  240,  240,
-      240,  240,  213,  240,   75,  240,   66,  192,  192,  240,
-      205,  190,  195,   70,   59,   71,   74,  195,  186,  185,
-      240,  240,  107,  240,  240,  240,  218,   84,  115,  240,
-      111,  121,  129,  202,  240,  240,  240,  195,  193,  187,
-      240,  133,  177,  240,  181,  108,  188,  172,  180,  175,
-      178,  187,  182,  117,  173,  169,  182,  174,  159,  240,
-      113,  240,  148,  165,  240,  240,  240,  175,  240,  240,
-      240,  240,  176,  175,  171,  168,  169,  163,  240,  240,
-
-      240,  164,  170,  160,  139,  157,  240,  167,  165,  240,
-      151,  155,  146,  240,  240,  166,  240,  240,  240,  240,
-      240,  240,  180,  153,  240,  162,  157,  177,  159,  155,
-      240,  153,  153,  240,  168,  133,  145,  123,  138,  240,
-      240,  120,  240,  119,  133,  118,  130,  130,  119,  107,
-      122,   84,  240,   78,   64,  240,  240,  100,   76
+        0,    0,   45,   54,   69,   71,  243,  244,   53,   62,
+      212,  244,  244,   67,  244,   78,   78,  244,  244,  244,
+      244,  244,  216,  244,   75,  244,   66,  195,  195,  244,
+      208,  193,  198,   70,   59,   71,   74,  198,  189,  188,
+      244,  244,  244,  107,  244,  244,  244,  221,   84,  200,
+      115,  244,  111,  121,  129,  204,  244,  244,  244,  197,
+      195,  189,  244,  133,  179,  244,  183,  108,  190,  174,
+      182,  177,  180,  189,  184,  117,  175,  171,  184,  176,
+      159,  244,  167,  113,  244,  148,  165,  244,  244,  244,
+      176,  244,  244,  244,  244,  177,  176,  172,  169,  170,
+
+      164,  244,  244,  244,  165,  171,  161,  139,  158,  244,
+      168,  166,  244,  152,  192,  155,  146,  244,  244,  166,
+      244,  244,  244,  244,  244,  244,  180,  153,  244,  162,
+      157,  244,  177,  159,  155,  244,  153,  153,  244,  168,
+      133,  145,  123,  138,  244,  244,  120,  244,  119,  133,
+      118,  130,  130,  119,  107,  122,   84,  244,   78,   64,
+      244,  244,  100,   76
     } ;
 
-static yyconst short int yy_def[160] =
+static yyconst short int yy_def[165] =
     {   0,
-      157,    1,    1,    1,  158,  158,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      159,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      159,  157,  159,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,    0,  157,  157
+      162,    1,    1,    1,  163,  163,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  164,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  164,  162,  164,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,    0,  162,  162
     } ;
 
-static yyconst short int yy_nxt[294] =
+static yyconst short int yy_nxt[298] =
     {   0,
         8,    9,   10,    8,   11,   12,    8,   13,   14,   15,
        16,   17,   17,   17,   17,   17,   17,   18,   19,   20,
        21,   22,   23,   24,    8,    8,   25,   26,    8,   27,
         8,   28,   29,    8,   30,   31,    8,   32,    8,   33,
        34,   35,    8,    8,   36,   37,   38,   39,    8,   40,
-        8,   41,   42,    8,   48,   48,   43,   43,   43,   43,
-       43,   43,    8,   48,   48,   43,   43,   43,   43,   43,
-       43,   45,   46,   45,   46,   47,   81,   47,   49,   49,
-       49,   49,   49,   49,   50,   48,   48,   52,   51,   53,
-       53,   53,   53,   53,   53,   55,   56,   58,   59,   66,
-
-       44,   70,   57,   74,   72,   60,   71,   75,  156,   67,
-       73,  155,   68,   82,   83,   82,   83,   69,   79,   79,
-       79,   79,   79,   79,   52,  154,   49,   49,   49,   49,
-       49,   49,   84,   84,   84,   84,   84,   84,   52,   95,
-       53,   53,   53,   53,   53,   53,   89,   90,   91,  105,
-       82,   83,  122,   96,   97,  153,  152,  106,  151,  150,
-      149,  148,  147,  107,  146,  145,  144,  143,  123,   92,
-       79,   79,   79,   79,   79,   79,   84,   84,   84,   84,
-       84,   84,  142,  141,  140,  139,  138,  137,  136,  135,
-      134,  133,  132,  131,  130,  129,  128,  127,  126,  125,
-
-      124,  121,  120,  119,  118,  117,  116,  115,  114,  113,
-      112,  111,  110,  109,  108,  104,  103,  102,  101,  100,
-       99,   98,   94,   93,   88,   87,   86,   85,   80,   78,
-       77,   76,   65,   64,   63,   62,   61,   54,  157,    7,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157
+        8,   41,   42,   43,   49,   49,   44,   44,   44,   44,
+       44,   44,   43,   49,   49,   44,   44,   44,   44,   44,
+       44,   46,   47,   46,   47,   48,   84,   48,   51,   51,
+       51,   51,   51,   51,   52,   49,   49,   54,   53,   55,
+       55,   55,   55,   55,   55,   57,   58,   60,   61,   68,
+
+       45,   72,   59,   76,   74,   62,   73,   77,  161,   69,
+       75,  160,   70,   85,   86,   85,   86,   71,   81,   81,
+       81,   81,   81,   81,   54,  159,   51,   51,   51,   51,
+       51,   51,   87,   87,   87,   87,   87,   87,   54,   98,
+       55,   55,   55,   55,   55,   55,   92,   93,   94,  108,
+       85,   86,  126,   99,  100,  158,  157,  109,  156,  155,
+      154,  153,  152,  110,  151,  150,  149,  148,  127,   95,
+       81,   81,   81,   81,   81,   81,   87,   87,   87,   87,
+       87,   87,  147,  146,  145,  144,  143,  142,  141,  140,
+      139,  138,  137,  136,  135,  134,  133,  132,  131,  130,
+
+      129,  128,  125,  124,  123,  122,  121,  120,  119,  118,
+      117,  116,  115,  114,  113,  112,  111,  107,  106,  105,
+      104,  103,  102,  101,   97,   96,   91,   90,   89,   88,
+       83,   82,   80,   79,   78,   67,   66,   65,   64,   63,
+       56,   50,  162,    7,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162
 
     } ;
 
-static yyconst short int yy_chk[294] =
+static yyconst short int yy_chk[298] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -466,31 +470,31 @@ static yyconst short int yy_chk[294] =
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    3,    9,    9,    3,    3,    3,    3,
         3,    3,    4,   10,   10,    4,    4,    4,    4,    4,
-        4,    5,    5,    6,    6,    5,  159,    6,   14,   14,
-       14,   14,   14,   14,   16,   48,   48,   17,   16,   17,
+        4,    5,    5,    6,    6,    5,  164,    6,   14,   14,
+       14,   14,   14,   14,   16,   49,   49,   17,   16,   17,
        17,   17,   17,   17,   17,   25,   25,   27,   27,   34,
 
-      158,   35,   25,   37,   36,   27,   35,   37,  155,   34,
-       36,  154,   34,   51,   51,   81,   81,   34,   43,   43,
-       43,   43,   43,   43,   49,  152,   49,   49,   49,   49,
-       49,   49,   52,   52,   52,   52,   52,   52,   53,   66,
-       53,   53,   53,   53,   53,   53,   62,   62,   62,   74,
-       83,   83,  105,   66,   66,  151,  150,   74,  149,  148,
-      147,  146,  145,   74,  144,  142,  139,  138,  105,   62,
-       79,   79,   79,   79,   79,   79,   84,   84,   84,   84,
-       84,   84,  137,  136,  135,  133,  132,  130,  129,  128,
-      127,  126,  124,  123,  116,  113,  112,  111,  109,  108,
-
-      106,  104,  103,  102,   98,   97,   96,   95,   94,   93,
-       88,   78,   77,   76,   75,   73,   72,   71,   70,   69,
-       68,   67,   65,   63,   60,   59,   58,   54,   47,   40,
-       39,   38,   33,   32,   31,   29,   28,   23,    7,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157,  157,  157,  157,  157,  157,  157,  157,
-      157,  157,  157
+      163,   35,   25,   37,   36,   27,   35,   37,  160,   34,
+       36,  159,   34,   53,   53,   84,   84,   34,   44,   44,
+       44,   44,   44,   44,   51,  157,   51,   51,   51,   51,
+       51,   51,   54,   54,   54,   54,   54,   54,   55,   68,
+       55,   55,   55,   55,   55,   55,   64,   64,   64,   76,
+       86,   86,  108,   68,   68,  156,  155,   76,  154,  153,
+      152,  151,  150,   76,  149,  147,  144,  143,  108,   64,
+       81,   81,   81,   81,   81,   81,   87,   87,   87,   87,
+       87,   87,  142,  141,  140,  138,  137,  135,  134,  133,
+      131,  130,  128,  127,  120,  117,  116,  115,  114,  112,
+
+      111,  109,  107,  106,  105,  101,  100,   99,   98,   97,
+       96,   91,   83,   80,   79,   78,   77,   75,   74,   73,
+       72,   71,   70,   69,   67,   65,   62,   61,   60,   56,
+       50,   48,   40,   39,   38,   33,   32,   31,   29,   28,
+       23,   11,    7,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162,  162,  162,  162,
+      162,  162,  162,  162,  162,  162,  162
 
     } ;
 
@@ -719,14 +723,14 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 158 )
+                               if ( yy_current_state >= 163 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        *yy_state_ptr++ = yy_current_state;
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 240 );
+               while ( yy_base[yy_current_state] != 244 );
 
 yy_find_action:
                yy_current_state = *--yy_state_ptr;
@@ -961,58 +965,68 @@ YY_RULE_SETUP
 #line 66 "lex.l"
 { return DOT; }
        YY_BREAK
-/* XXX: this lexing of register files is shady */
 case 39:
 YY_RULE_SETUP
-#line 69 "lex.l"
+#line 67 "lex.l"
+{ return MINUS; }
+       YY_BREAK
+case 40:
+YY_RULE_SETUP
+#line 68 "lex.l"
+{ return ABS; }
+       YY_BREAK
+/* XXX: this lexing of register files is shady */
+case 41:
+YY_RULE_SETUP
+#line 71 "lex.l"
 {
        BEGIN(IN_REG);
        return ACCREG;
 }
        YY_BREAK
-case 40:
+case 42:
 YY_RULE_SETUP
-#line 73 "lex.l"
+#line 75 "lex.l"
 {
        BEGIN(IN_REG);
        return ADDRESSREG;
 }
        YY_BREAK
-case 41:
+case 43:
 YY_RULE_SETUP
-#line 77 "lex.l"
+#line 79 "lex.l"
 {
        BEGIN(IN_REG);
        return MSGREG;
 }
        YY_BREAK
-case 42:
+case 44:
 YY_RULE_SETUP
-#line 81 "lex.l"
+#line 83 "lex.l"
 {
        BEGIN(IN_REG);
        return FLAGREG;
 }
        YY_BREAK
-case 43:
+case 45:
 YY_RULE_SETUP
-#line 85 "lex.l"
+#line 87 "lex.l"
 {
        BEGIN(IN_REG);
        return GENREG;
 }
        YY_BREAK
-case 44:
+case 46:
 YY_RULE_SETUP
-#line 89 "lex.l"
+#line 91 "lex.l"
 {
        BEGIN(IN_REG);
        return CONTROLREG;
 }
        YY_BREAK
-case 45:
+case 47:
 YY_RULE_SETUP
-#line 93 "lex.l"
+#line 95 "lex.l"
 {
        BEGIN(IN_REG);
        return IPREG;
@@ -1022,99 +1036,99 @@ YY_RULE_SETUP
   * Lexing of register types should probably require the ":" symbol specified
   * in the BNF of the assembly, but our existing source didn't use that syntax.
   */
-case 46:
-YY_RULE_SETUP
-#line 102 "lex.l"
-{ BEGIN(INITIAL); return TYPE_UD; }
-       YY_BREAK
-case 47:
-YY_RULE_SETUP
-#line 103 "lex.l"
-{ BEGIN(INITIAL); return TYPE_D; }
-       YY_BREAK
 case 48:
 YY_RULE_SETUP
 #line 104 "lex.l"
-{ BEGIN(INITIAL); return TYPE_UW; }
+{ BEGIN(INITIAL); return TYPE_UD; }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
 #line 105 "lex.l"
-{ BEGIN(INITIAL); return TYPE_W; }
+{ BEGIN(INITIAL); return TYPE_D; }
        YY_BREAK
 case 50:
 YY_RULE_SETUP
 #line 106 "lex.l"
-{ BEGIN(INITIAL); return TYPE_UB; }
+{ BEGIN(INITIAL); return TYPE_UW; }
        YY_BREAK
 case 51:
 YY_RULE_SETUP
 #line 107 "lex.l"
-{ BEGIN(INITIAL); return TYPE_B; }
+{ BEGIN(INITIAL); return TYPE_W; }
        YY_BREAK
 case 52:
 YY_RULE_SETUP
 #line 108 "lex.l"
-{ BEGIN(INITIAL); return TYPE_F; }
+{ BEGIN(INITIAL); return TYPE_UB; }
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 110 "lex.l"
-{ return SATURATE; }
+#line 109 "lex.l"
+{ BEGIN(INITIAL); return TYPE_B; }
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 111 "lex.l"
-{ return ALIGN1; }
+#line 110 "lex.l"
+{ BEGIN(INITIAL); return TYPE_F; }
        YY_BREAK
 case 55:
 YY_RULE_SETUP
 #line 112 "lex.l"
-{ return ALIGN16; }
+{ return SATURATE; }
        YY_BREAK
 case 56:
 YY_RULE_SETUP
 #line 113 "lex.l"
-{ return MASK_DISABLE; }
+{ return ALIGN1; }
        YY_BREAK
 case 57:
 YY_RULE_SETUP
 #line 114 "lex.l"
-{ return EOT; }
+{ return ALIGN16; }
        YY_BREAK
 case 58:
 YY_RULE_SETUP
+#line 115 "lex.l"
+{ return MASK_DISABLE; }
+       YY_BREAK
+case 59:
+YY_RULE_SETUP
 #line 116 "lex.l"
+{ return EOT; }
+       YY_BREAK
+case 60:
+YY_RULE_SETUP
+#line 118 "lex.l"
 {
        yylval.integer = atoi(yytext);
        return INTEGER;
 }
        YY_BREAK
-case 59:
+case 61:
 YY_RULE_SETUP
-#line 121 "lex.l"
+#line 123 "lex.l"
 {
        yylval.number = strtod(yytext, NULL);
        return NUMBER;
 }
        YY_BREAK
-case 60:
+case 62:
 YY_RULE_SETUP
-#line 126 "lex.l"
+#line 128 "lex.l"
 { } /* eat up whitespace */
        YY_BREAK
-case 61:
+case 63:
 YY_RULE_SETUP
-#line 128 "lex.l"
+#line 130 "lex.l"
 {
        printf("parse error at line %d: unexpected \"%s\"\n",
               yylineno, yytext);
        exit(1);
 }
        YY_BREAK
-case 62:
+case 64:
 YY_RULE_SETUP
-#line 133 "lex.l"
+#line 135 "lex.l"
 ECHO;
        YY_BREAK
                        case YY_STATE_EOF(INITIAL):
@@ -1407,7 +1421,7 @@ static yy_state_type yy_get_previous_state()
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 158 )
+                       if ( yy_current_state >= 163 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -1437,11 +1451,11 @@ yy_state_type yy_current_state;
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 158 )
+               if ( yy_current_state >= 163 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 157);
+       yy_is_jam = (yy_current_state == 162);
        if ( ! yy_is_jam )
                *yy_state_ptr++ = yy_current_state;
 
@@ -2002,7 +2016,7 @@ int main()
        return 0;
        }
 #endif
-#line 133 "lex.l"
+#line 135 "lex.l"
 
 
 char *
index b1a96bc..1e58b6a 100644 (file)
@@ -64,6 +64,8 @@ int saved_state = INITIAL;
 "}" { return RCURLY; }
 "," { return COMMA; }
 "." { return DOT; }
+"-" { return MINUS; }
+"(abs)" { return ABS; }
 
  /* XXX: this lexing of register files is shady */
 "acc" {
index d6f1ba5..9affda9 100644 (file)
@@ -62,8 +62,8 @@ add (1) g7.28<1>F g1.22<0,1,0>UW 1UB { align1 };
 
     /* Now, map these screen space coordinates into texture coordinates. */
     /* subtract screen-space X origin of vertex 0. */
-add (8) g4<1>F g4<8,8,1>F g1<0,1,0>F { align1 };
-add (8) g5<1>F g5<8,8,1>F g1<0,1,0>F { align1 };
+add (8) g4<1>F g4<8,8,1>F -g1<0,1,0>F { align1 };
+add (8) g5<1>F g5<8,8,1>F -g1<0,1,0>F { align1 };
     /* scale by texture X increment */
 mul (8) g4<1>F g4<8,8,1>F g3<0,1,0>F { align1 };
 mul (8) g5<1>F g5<8,8,1>F g3<0,1,0>F { align1 };
@@ -71,8 +71,8 @@ mul (8) g5<1>F g5<8,8,1>F g3<0,1,0>F { align1 };
 add (8) g4<1>F g4<8,8,1>F g3.12<0,1,0>F { align1 };
 add (8) g5<1>F g5<8,8,1>F g3.12<0,1,0>F { align1 };
     /* subtract screen-space Y origin of vertex 0. */
-add (8) g6<1>F g6<8,8,1>F g1.4<0,1,0>F { align1 };
-add (8) g7<1>F g7<8,8,1>F g1.4<0,1,0>F { align1 };
+add (8) g6<1>F g6<8,8,1>F -g1.4<0,1,0>F { align1 };
+add (8) g7<1>F g7<8,8,1>F -g1.4<0,1,0>F { align1 };
     /* scale by texture Y increment */
 mul (8) g6<1>F g6<8,8,1>F g3.20<0,1,0>F { align1 };
 mul (8) g7<1>F g7<8,8,1>F g3.20<0,1,0>F { align1 };