]> Cypherpunks repositories - gostls13.git/commitdiff
cmd: delete old[5689]a
authorRob Pike <r@golang.org>
Wed, 29 Jul 2015 03:06:28 +0000 (13:06 +1000)
committerRob Pike <r@golang.org>
Wed, 29 Jul 2015 03:45:26 +0000 (03:45 +0000)
These are the old assemblers written in C, and now they are
not needed.

Fixes #10510.

Change-Id: Id9337ffc8eccfd93c84b2e23f427fb1a576b543d
Reviewed-on: https://go-review.googlesource.com/12784
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
15 files changed:
src/cmd/dist/buildtool.go
src/cmd/go/build.go
src/cmd/go/pkg.go
src/cmd/old5a/a.y [deleted file]
src/cmd/old5a/lex.go [deleted file]
src/cmd/old5a/y.go [deleted file]
src/cmd/old6a/a.y [deleted file]
src/cmd/old6a/lex.go [deleted file]
src/cmd/old6a/y.go [deleted file]
src/cmd/old8a/a.y [deleted file]
src/cmd/old8a/lex.go [deleted file]
src/cmd/old8a/y.go [deleted file]
src/cmd/old9a/a.y [deleted file]
src/cmd/old9a/lex.go [deleted file]
src/cmd/old9a/y.go [deleted file]

index be54ac46de528fa8d908f058558cc1a6c0432e81..8a55b5da7011368853999fd4232d9fa5e74c3755 100644 (file)
@@ -36,7 +36,6 @@ var bootstrapDirs = []string{
        "compile/internal/gc",
        "compile/internal/ppc64",
        "compile/internal/x86",
-       "internal/asm",
        "internal/gcprog",
        "internal/obj",
        "internal/obj/arm",
@@ -50,10 +49,6 @@ var bootstrapDirs = []string{
        "link/internal/ld",
        "link/internal/ppc64",
        "link/internal/x86",
-       "old5a",
-       "old6a",
-       "old8a",
-       "old9a",
 }
 
 func bootstrapBuildTools() {
index 54fbe351052a0f3e60d5d157db8e3ea691f51309..a669da9997f7e6771c09b7cde60835f5ccdb6546 100644 (file)
@@ -2180,11 +2180,6 @@ func (gcToolchain) gc(b *builder, p *Package, archive, obj string, asmhdr bool,
        return ofile, output, err
 }
 
-// verifyAsm specifies whether to check the assemblers written in Go
-// against the assemblers written in C. If set, asm will run both asm and (say) 6a
-// and fail if the two produce different output files.
-const verifyAsm = true
-
 func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error {
        // Add -I pkg/GOOS_GOARCH so #include "textflag.h" works in .s files.
        inc := filepath.Join(goroot, "pkg", "include")
@@ -2193,31 +2188,12 @@ func (gcToolchain) asm(b *builder, p *Package, obj, ofile, sfile string) error {
        if err := b.run(p.Dir, p.ImportPath, nil, args...); err != nil {
                return err
        }
-       // Disable checks when additional flags are passed, as the old assemblers
-       // don't implement some of them (e.g., -shared).
-       if verifyAsm && len(buildAsmflags) == 0 {
-               old := ""
-               switch goarch {
-               case "arm":
-                       old = "old5a"
-               case "amd64", "amd64p32":
-                       old = "old6a"
-               case "386":
-                       old = "old8a"
-               case "ppc64", "ppc64le":
-                       old = "old9a"
-               }
-               if old != "" {
-                       if err := toolVerify(b, p, old, ofile, args); err != nil {
-                               return err
-                       }
-               }
-       }
        return nil
 }
 
 // toolVerify checks that the command line args writes the same output file
 // if run using newTool instead.
+// Unused now but kept around for future use.
 func toolVerify(b *builder, p *Package, newTool string, ofile string, args []interface{}) error {
        newArgs := make([]interface{}, len(args))
        copy(newArgs, args)
index d04b52a6755b01ecccab66117debfc6ef9e9776d..98c9594d2e1bd14298af7184f79a3bb90bc470d4 100644 (file)
@@ -646,10 +646,6 @@ var goTools = map[string]targetDir{
        "cmd/newlink":                          toTool,
        "cmd/nm":                               toTool,
        "cmd/objdump":                          toTool,
-       "cmd/old5a":                            toTool,
-       "cmd/old6a":                            toTool,
-       "cmd/old8a":                            toTool,
-       "cmd/old9a":                            toTool,
        "cmd/pack":                             toTool,
        "cmd/pprof":                            toTool,
        "cmd/trace":                            toTool,
diff --git a/src/cmd/old5a/a.y b/src/cmd/old5a/a.y
deleted file mode 100644 (file)
index c224875..0000000
+++ /dev/null
@@ -1,804 +0,0 @@
-// Inferno utils/5a/a.y
-// http://code.google.com/p/inferno-os/source/browse/utils/5a/a.y
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-%{
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/arm"
-)
-%}
-
-%union {
-       sym *asm.Sym
-       lval int32
-       dval float64
-       sval string
-       addr obj.Addr
-}
-
-%left  '|'
-%left  '^'
-%left  '&'
-%left  '<' '>'
-%left  '+' '-'
-%left  '*' '/' '%'
-%token <lval>  LTYPE1 LTYPE2 LTYPE3 LTYPE4 LTYPE5
-%token <lval>  LTYPE6 LTYPE7 LTYPE8 LTYPE9 LTYPEA
-%token <lval>  LTYPEB LTYPEC LTYPED LTYPEE
-%token <lval>  LTYPEG LTYPEH LTYPEI LTYPEJ LTYPEK
-%token <lval>  LTYPEL LTYPEM LTYPEN LTYPEBX LTYPEPLD
-%token <lval>  LCONST LSP LSB LFP LPC
-%token <lval>  LTYPEX LTYPEPC LTYPEF LR LREG LF LFREG LC LCREG LPSR LFCR
-%token <lval>  LCOND LS LAT LGLOBL
-%token <dval>  LFCONST
-%token <sval>  LSCONST
-%token <sym>   LNAME LLAB LVAR
-%type  <lval>  con expr oexpr pointer offset sreg spreg creg
-%type  <lval>  rcon cond reglist
-%type  <addr>  gen rel reg regreg freg shift fcon frcon textsize
-%type  <addr>  imm ximm name oreg ireg nireg ioreg imsr
-%%
-prog:
-|      prog
-       {
-               stmtline = asm.Lineno;
-       }
-       line
-
-line:
-       LNAME ':'
-       {
-               $1 = asm.LabelLookup($1);
-               if $1.Type == LLAB && $1.Value != int64(asm.PC) {
-                       yyerror("redeclaration of %s", $1.Labelname)
-               }
-               $1.Type = LLAB;
-               $1.Value = int64(asm.PC)
-       }
-       line
-|      LNAME '=' expr ';'
-       {
-               $1.Type = LVAR;
-               $1.Value = int64($3);
-       }
-|      LVAR '=' expr ';'
-       {
-               if $1.Value != int64($3) {
-                       yyerror("redeclaration of %s", $1.Name)
-               }
-               $1.Value = int64($3);
-       }
-|      ';'
-|      inst ';'
-|      error ';'
-
-inst:
-/*
- * ADD
- */
-       LTYPE1 cond imsr ',' spreg ',' reg
-       {
-               outcode($1, $2, &$3, $5, &$7);
-       }
-|      LTYPE1 cond imsr ',' spreg ','
-       {
-               outcode($1, $2, &$3, $5, &nullgen);
-       }
-|      LTYPE1 cond imsr ',' reg
-       {
-               outcode($1, $2, &$3, 0, &$5);
-       }
-/*
- * MVN
- */
-|      LTYPE2 cond imsr ',' reg
-       {
-               outcode($1, $2, &$3, 0, &$5);
-       }
-/*
- * MOVW
- */
-|      LTYPE3 cond gen ',' gen
-       {
-               outcode($1, $2, &$3, 0, &$5);
-       }
-/*
- * B/BL
- */
-|      LTYPE4 cond comma rel
-       {
-               outcode($1, $2, &nullgen, 0, &$4);
-       }
-|      LTYPE4 cond comma nireg
-       {
-               outcode($1, $2, &nullgen, 0, &$4);
-       }
-/*
- * BX
- */
-|      LTYPEBX comma ireg
-       {
-               outcode($1, Always, &nullgen, 0, &$3);
-       }
-/*
- * BEQ
- */
-|      LTYPE5 comma rel
-       {
-               outcode($1, Always, &nullgen, 0, &$3);
-       }
-/*
- * SWI
- */
-|      LTYPE6 cond comma gen
-       {
-               outcode($1, $2, &nullgen, 0, &$4);
-       }
-/*
- * CMP
- */
-|      LTYPE7 cond imsr ',' spreg comma
-       {
-               outcode($1, $2, &$3, $5, &nullgen);
-       }
-/*
- * MOVM
- */
-|      LTYPE8 cond ioreg ',' '[' reglist ']'
-       {
-               var g obj.Addr
-
-               g = nullgen;
-               g.Type = obj.TYPE_REGLIST;
-               g.Offset = int64($6);
-               outcode($1, $2, &$3, 0, &g);
-       }
-|      LTYPE8 cond '[' reglist ']' ',' ioreg
-       {
-               var g obj.Addr
-
-               g = nullgen;
-               g.Type = obj.TYPE_REGLIST;
-               g.Offset = int64($4);
-               outcode($1, $2, &g, 0, &$7);
-       }
-/*
- * SWAP
- */
-|      LTYPE9 cond reg ',' ireg ',' reg
-       {
-               outcode($1, $2, &$5, int32($3.Reg), &$7);
-       }
-|      LTYPE9 cond reg ',' ireg comma
-       {
-               outcode($1, $2, &$5, int32($3.Reg), &$3);
-       }
-|      LTYPE9 cond comma ireg ',' reg
-       {
-               outcode($1, $2, &$4, int32($6.Reg), &$6);
-       }
-/*
- * RET
- */
-|      LTYPEA cond comma
-       {
-               outcode($1, $2, &nullgen, 0, &nullgen);
-       }
-/*
- * TEXT
- */
-|      LTYPEB name ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode($1, Always, &$2, 0, &$5);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LTYPEB name ',' con ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode($1, Always, &$2, 0, &$7);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST;
-                       lastpc.From3.Offset = int64($4)
-               }
-       }
-/*
- * GLOBL
- */
-|      LGLOBL name ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode($1, Always, &$2, 0, &$4)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LGLOBL name ',' con ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode($1, Always, &$2, 0, &$6)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = int64($4)
-               }
-       }
-
-/*
- * DATA
- */
-|      LTYPEC name '/' con ',' ximm
-       {
-               outcode($1, Always, &$2, 0, &$6)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = int64($4)
-               }
-       }
-/*
- * CASE
- */
-|      LTYPED cond reg comma
-       {
-               outcode($1, $2, &$3, 0, &nullgen);
-       }
-/*
- * word
- */
-|      LTYPEH comma ximm
-       {
-               outcode($1, Always, &nullgen, 0, &$3);
-       }
-/*
- * floating-point coprocessor
- */
-|      LTYPEI cond freg ',' freg
-       {
-               outcode($1, $2, &$3, 0, &$5);
-       }
-|      LTYPEK cond frcon ',' freg
-       {
-               outcode($1, $2, &$3, 0, &$5);
-       }
-|      LTYPEK cond frcon ',' LFREG ',' freg
-       {
-               outcode($1, $2, &$3, $5, &$7);
-       }
-|      LTYPEL cond freg ',' freg comma
-       {
-               outcode($1, $2, &$3, int32($5.Reg), &nullgen);
-       }
-/*
- * MCR MRC
- */
-|      LTYPEJ cond con ',' expr ',' spreg ',' creg ',' creg oexpr
-       {
-               var g obj.Addr
-
-               g = nullgen;
-               g.Type = obj.TYPE_CONST;
-               g.Offset = int64(
-                       (0xe << 24) |           /* opcode */
-                       ($1 << 20) |            /* MCR/MRC */
-                       (($2^C_SCOND_XOR) << 28) |              /* scond */
-                       (($3 & 15) << 8) |      /* coprocessor number */
-                       (($5 & 7) << 21) |      /* coprocessor operation */
-                       (($7 & 15) << 12) |     /* arm register */
-                       (($9 & 15) << 16) |     /* Crn */
-                       (($11 & 15) << 0) |     /* Crm */
-                       (($12 & 7) << 5) |      /* coprocessor information */
-                       (1<<4));                        /* must be set */
-               outcode(AMRC, Always, &nullgen, 0, &g);
-       }
-/*
- * MULL r1,r2,(hi,lo)
- */
-|      LTYPEM cond reg ',' reg ',' regreg
-       {
-               outcode($1, $2, &$3, int32($5.Reg), &$7);
-       }
-/*
- * MULA r1,r2,r3,r4: (r1*r2+r3) & 0xffffffff . r4
- * MULAW{T,B} r1,r2,r3,r4
- */
-|      LTYPEN cond reg ',' reg ',' reg ',' spreg
-       {
-               $7.Type = obj.TYPE_REGREG2;
-               $7.Offset = int64($9);
-               outcode($1, $2, &$3, int32($5.Reg), &$7);
-       }
-/*
- * PLD
- */
-|      LTYPEPLD oreg
-       {
-               outcode($1, Always, &$2, 0, &nullgen);
-       }
-/*
- * PCDATA
- */
-|      LTYPEPC gen ',' gen
-       {
-               if $2.Type != obj.TYPE_CONST || $4.Type != obj.TYPE_CONST {
-                       yyerror("arguments to PCDATA must be integer constants")
-               }
-               outcode($1, Always, &$2, 0, &$4);
-       }
-/*
- * FUNCDATA
- */
-|      LTYPEF gen ',' gen
-       {
-               if $2.Type != obj.TYPE_CONST {
-                       yyerror("index for FUNCDATA must be integer constant")
-               }
-               if $4.Type != obj.NAME_EXTERN && $4.Type != obj.NAME_STATIC && $4.Type != obj.TYPE_MEM {
-                       yyerror("value for FUNCDATA must be symbol reference")
-               }
-               outcode($1, Always, &$2, 0, &$4);
-       }
-/*
- * END
- */
-|      LTYPEE comma
-       {
-               outcode($1, Always, &nullgen, 0, &nullgen);
-       }
-
-textsize:
-       LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = int64($1)
-               $$.Val = int32(obj.ArgsSizeUnknown)
-       }
-|      '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -int64($2)
-               $$.Val = int32(obj.ArgsSizeUnknown)
-       }
-|      LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = int64($1)
-               $$.Val = int32($3);
-       }
-|      '-' LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -int64($2)
-               $$.Val = int32($4);
-       }
-
-cond:
-       {
-               $$ = Always;
-       }
-|      cond LCOND
-       {
-               $$ = ($1 & ^ C_SCOND) | $2;
-       }
-|      cond LS
-       {
-               $$ = $1 | $2;
-       }
-
-comma:
-|      ',' comma
-
-rel:
-       con '(' LPC ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = int64($1) + int64(asm.PC);
-       }
-|      LNAME offset
-       {
-               $1 = asm.LabelLookup($1);
-               $$ = nullgen;
-               if asm.Pass == 2 && $1.Type != LLAB {
-                       yyerror("undefined label: %s", $1.Labelname)
-               }
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1.Value + int64($2);
-       }
-
-ximm:  '$' con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               $$.Offset = int64($2);
-       }
-|      '$' oreg
-       {
-               $$ = $2;
-               $$.Type = obj.TYPE_ADDR;
-       }
-|      '$' LSCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SCONST;
-               $$.Val = $2
-       }
-|      fcon
-
-fcon:
-       '$' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $2;
-       }
-|      '$' '-' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$3;
-       }
-
-reglist:
-       spreg
-       {
-               $$ = 1 << uint($1&15);
-       }
-|      spreg '-' spreg
-       {
-               $$=0;
-               for i:=$1; i<=$3; i++ {
-                       $$ |= 1<<uint(i&15)
-               }
-               for i:=$3; i<=$1; i++ {
-                       $$ |= 1<<uint(i&15)
-               }
-       }
-|      spreg comma reglist
-       {
-               $$ = (1<<uint($1&15)) | $3;
-       }
-
-gen:
-       reg
-|      ximm
-|      shift
-|      shift '(' spreg ')'
-       {
-               $$ = $1;
-               $$.Reg = int16($3);
-       }
-|      LPSR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LFCR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Offset = int64($1);
-       }
-|      oreg
-|      freg
-
-nireg:
-       ireg
-|      name
-       {
-               $$ = $1;
-               if($1.Name != obj.NAME_EXTERN && $1.Name != obj.NAME_STATIC) {
-               }
-       }
-
-ireg:
-       '(' spreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($2);
-               $$.Offset = 0;
-       }
-
-ioreg:
-       ireg
-|      con '(' sreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($3);
-               $$.Offset = int64($1);
-       }
-
-oreg:
-       name
-|      name '(' sreg ')'
-       {
-               $$ = $1;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($3);
-       }
-|      ioreg
-
-imsr:
-       reg
-|      imm
-|      shift
-
-imm:   '$' con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               $$.Offset = int64($2);
-       }
-
-reg:
-       spreg
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-regreg:
-       '(' spreg ',' spreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REGREG;
-               $$.Reg = int16($2);
-               $$.Offset = int64($4);
-       }
-
-shift:
-       spreg '<' '<' rcon
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SHIFT;
-               $$.Offset = int64($1&15) | int64($4) | (0 << 5);
-       }
-|      spreg '>' '>' rcon
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SHIFT;
-               $$.Offset = int64($1&15) | int64($4) | (1 << 5);
-       }
-|      spreg '-' '>' rcon
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SHIFT;
-               $$.Offset = int64($1&15) | int64($4) | (2 << 5);
-       }
-|      spreg LAT '>' rcon
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SHIFT;
-               $$.Offset = int64($1&15) | int64($4) | (3 << 5);
-       }
-
-rcon:
-       spreg
-       {
-               if $$ < REG_R0 || $$ > REG_R15 {
-                       print("register value out of range\n")
-               }
-               $$ = (($1&15) << 8) | (1 << 4);
-       }
-|      con
-       {
-               if $$ < 0 || $$ >= 32 {
-                       print("shift value out of range\n")
-               }
-               $$ = ($1&31) << 7;
-       }
-
-sreg:
-       LREG
-|      LPC
-       {
-               $$ = REGPC;
-       }
-|      LR '(' expr ')'
-       {
-               if $3 < 0 || $3 >= NREG {
-                       print("register value out of range\n")
-               }
-               $$ = REG_R0 + $3;
-       }
-
-spreg:
-       sreg
-|      LSP
-       {
-               $$ = REGSP;
-       }
-
-creg:
-       LCREG
-|      LC '(' expr ')'
-       {
-               if $3 < 0 || $3 >= NREG {
-                       print("register value out of range\n")
-               }
-               $$ = $3; // TODO(rsc): REG_C0+$3
-       }
-
-frcon:
-       freg
-|      fcon
-
-freg:
-       LFREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-|      LF '(' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16(REG_F0 + $3);
-       }
-
-name:
-       con '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = int8($3);
-               $$.Sym = nil;
-               $$.Offset = int64($1);
-       }
-|      LNAME offset '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = int8($4);
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 0);
-               $$.Offset = int64($2);
-       }
-|      LNAME '<' '>' offset '(' LSB ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = obj.NAME_STATIC;
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 1);
-               $$.Offset = int64($4);
-       }
-
-offset:
-       {
-               $$ = 0;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-
-pointer:
-       LSB
-|      LSP
-|      LFP
-
-con:
-       LCONST
-|      LVAR
-       {
-               $$ = int32($1.Value);
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '~' con
-       {
-               $$ = ^$2;
-       }
-|      '(' expr ')'
-       {
-               $$ = $2;
-       }
-
-oexpr:
-       {
-               $$ = 0;
-       }
-|      ',' expr
-       {
-               $$ = $2;
-       }
-
-expr:
-       con
-|      expr '+' expr
-       {
-               $$ = $1 + $3;
-       }
-|      expr '-' expr
-       {
-               $$ = $1 - $3;
-       }
-|      expr '*' expr
-       {
-               $$ = $1 * $3;
-       }
-|      expr '/' expr
-       {
-               $$ = $1 / $3;
-       }
-|      expr '%' expr
-       {
-               $$ = $1 % $3;
-       }
-|      expr '<' '<' expr
-       {
-               $$ = $1 << uint($4);
-       }
-|      expr '>' '>' expr
-       {
-               $$ = $1 >> uint($4);
-       }
-|      expr '&' expr
-       {
-               $$ = $1 & $3;
-       }
-|      expr '^' expr
-       {
-               $$ = $1 ^ $3;
-       }
-|      expr '|' expr
-       {
-               $$ = $1 | $3;
-       }
diff --git a/src/cmd/old5a/lex.go b/src/cmd/old5a/lex.go
deleted file mode 100644 (file)
index 1f538ea..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-// Inferno utils/5a/lex.c
-// http://code.google.com/p/inferno-os/source/browse/utils/5a/lex.c
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:generate go tool yacc a.y
-
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/arm"
-)
-
-var (
-       yyerror  = asm.Yyerror
-       nullgen  obj.Addr
-       stmtline int32
-)
-
-const Always = arm.C_SCOND_NONE
-
-func main() {
-       cinit()
-
-       asm.LSCONST = LSCONST
-       asm.LCONST = LCONST
-       asm.LFCONST = LFCONST
-       asm.LNAME = LNAME
-       asm.LVAR = LVAR
-       asm.LLAB = LLAB
-
-       asm.Lexinit = lexinit
-       asm.Cclean = cclean
-       asm.Yyparse = yyparse
-
-       asm.Thechar = '5'
-       asm.Thestring = "arm"
-       asm.Thelinkarch = &arm.Linkarm
-
-       asm.Main()
-}
-
-type yy struct{}
-
-func (yy) Lex(v *yySymType) int {
-       var av asm.Yylval
-       tok := asm.Yylex(&av)
-       v.sym = av.Sym
-       v.lval = int32(av.Lval)
-       v.sval = av.Sval
-       v.dval = av.Dval
-       return tok
-}
-
-func (yy) Error(msg string) {
-       asm.Yyerror("%s", msg)
-}
-
-func yyparse() {
-       yyParse(yy{})
-}
-
-var lexinit = []asm.Lextab{
-       {"SP", LSP, obj.NAME_AUTO},
-       {"SB", LSB, obj.NAME_EXTERN},
-       {"FP", LFP, obj.NAME_PARAM},
-       {"PC", LPC, obj.TYPE_BRANCH},
-
-       {"R", LR, 0},
-
-       {"R0", LREG, arm.REG_R0},
-       {"R1", LREG, arm.REG_R1},
-       {"R2", LREG, arm.REG_R2},
-       {"R3", LREG, arm.REG_R3},
-       {"R4", LREG, arm.REG_R4},
-       {"R5", LREG, arm.REG_R5},
-       {"R6", LREG, arm.REG_R6},
-       {"R7", LREG, arm.REG_R7},
-       {"R8", LREG, arm.REG_R8},
-       {"R9", LREG, arm.REG_R9},
-       {"g", LREG, arm.REG_R10}, // avoid unintentionally clobber g using R10
-       {"R11", LREG, arm.REG_R11},
-       {"R12", LREG, arm.REG_R12},
-       {"R13", LREG, arm.REG_R13},
-       {"R14", LREG, arm.REG_R14},
-       {"R15", LREG, arm.REG_R15},
-       {"F", LF, 0},
-       {"F0", LFREG, arm.REG_F0},
-       {"F1", LFREG, arm.REG_F1},
-       {"F2", LFREG, arm.REG_F2},
-       {"F3", LFREG, arm.REG_F3},
-       {"F4", LFREG, arm.REG_F4},
-       {"F5", LFREG, arm.REG_F5},
-       {"F6", LFREG, arm.REG_F6},
-       {"F7", LFREG, arm.REG_F7},
-       {"F8", LFREG, arm.REG_F8},
-       {"F9", LFREG, arm.REG_F9},
-       {"F10", LFREG, arm.REG_F10},
-       {"F11", LFREG, arm.REG_F11},
-       {"F12", LFREG, arm.REG_F12},
-       {"F13", LFREG, arm.REG_F13},
-       {"F14", LFREG, arm.REG_F14},
-       {"F15", LFREG, arm.REG_F15},
-       {"C", LC, 0},
-       {"C0", LCREG, 0},
-       {"C1", LCREG, 1},
-       {"C2", LCREG, 2},
-       {"C3", LCREG, 3},
-       {"C4", LCREG, 4},
-       {"C5", LCREG, 5},
-       {"C6", LCREG, 6},
-       {"C7", LCREG, 7},
-       {"C8", LCREG, 8},
-       {"C9", LCREG, 9},
-       {"C10", LCREG, 10},
-       {"C11", LCREG, 11},
-       {"C12", LCREG, 12},
-       {"C13", LCREG, 13},
-       {"C14", LCREG, 14},
-       {"C15", LCREG, 15},
-       {"CPSR", LPSR, arm.REG_CPSR},
-       {"SPSR", LPSR, arm.REG_SPSR},
-       {"FPSR", LFCR, arm.REG_FPSR},
-       {"FPCR", LFCR, arm.REG_FPCR},
-       {".EQ", LCOND, arm.C_SCOND_EQ},
-       {".NE", LCOND, arm.C_SCOND_NE},
-       {".CS", LCOND, arm.C_SCOND_HS},
-       {".HS", LCOND, arm.C_SCOND_HS},
-       {".CC", LCOND, arm.C_SCOND_LO},
-       {".LO", LCOND, arm.C_SCOND_LO},
-       {".MI", LCOND, arm.C_SCOND_MI},
-       {".PL", LCOND, arm.C_SCOND_PL},
-       {".VS", LCOND, arm.C_SCOND_VS},
-       {".VC", LCOND, arm.C_SCOND_VC},
-       {".HI", LCOND, arm.C_SCOND_HI},
-       {".LS", LCOND, arm.C_SCOND_LS},
-       {".GE", LCOND, arm.C_SCOND_GE},
-       {".LT", LCOND, arm.C_SCOND_LT},
-       {".GT", LCOND, arm.C_SCOND_GT},
-       {".LE", LCOND, arm.C_SCOND_LE},
-       {".AL", LCOND, arm.C_SCOND_NONE},
-       {".U", LS, arm.C_UBIT},
-       {".S", LS, arm.C_SBIT},
-       {".W", LS, arm.C_WBIT},
-       {".P", LS, arm.C_PBIT},
-       {".PW", LS, arm.C_WBIT | arm.C_PBIT},
-       {".WP", LS, arm.C_WBIT | arm.C_PBIT},
-       {".F", LS, arm.C_FBIT},
-       {".IBW", LS, arm.C_WBIT | arm.C_PBIT | arm.C_UBIT},
-       {".IAW", LS, arm.C_WBIT | arm.C_UBIT},
-       {".DBW", LS, arm.C_WBIT | arm.C_PBIT},
-       {".DAW", LS, arm.C_WBIT},
-       {".IB", LS, arm.C_PBIT | arm.C_UBIT},
-       {".IA", LS, arm.C_UBIT},
-       {".DB", LS, arm.C_PBIT},
-       {".DA", LS, 0},
-       {"@", LAT, 0},
-       {"AND", LTYPE1, arm.AAND},
-       {"EOR", LTYPE1, arm.AEOR},
-       {"SUB", LTYPE1, arm.ASUB},
-       {"RSB", LTYPE1, arm.ARSB},
-       {"ADD", LTYPE1, arm.AADD},
-       {"ADC", LTYPE1, arm.AADC},
-       {"SBC", LTYPE1, arm.ASBC},
-       {"RSC", LTYPE1, arm.ARSC},
-       {"ORR", LTYPE1, arm.AORR},
-       {"BIC", LTYPE1, arm.ABIC},
-       {"SLL", LTYPE1, arm.ASLL},
-       {"SRL", LTYPE1, arm.ASRL},
-       {"SRA", LTYPE1, arm.ASRA},
-       {"MUL", LTYPE1, arm.AMUL},
-       {"MULA", LTYPEN, arm.AMULA},
-       {"DIV", LTYPE1, arm.ADIV},
-       {"MOD", LTYPE1, arm.AMOD},
-       {"MULL", LTYPEM, arm.AMULL},
-       {"MULAL", LTYPEM, arm.AMULAL},
-       {"MULLU", LTYPEM, arm.AMULLU},
-       {"MULALU", LTYPEM, arm.AMULALU},
-       {"MVN", LTYPE2, arm.AMVN}, /* op2 ignored */
-       {"MOVB", LTYPE3, arm.AMOVB},
-       {"MOVBU", LTYPE3, arm.AMOVBU},
-       {"MOVH", LTYPE3, arm.AMOVH},
-       {"MOVHU", LTYPE3, arm.AMOVHU},
-       {"MOVW", LTYPE3, arm.AMOVW},
-       {"MOVD", LTYPE3, arm.AMOVD},
-       {"MOVDF", LTYPE3, arm.AMOVDF},
-       {"MOVDW", LTYPE3, arm.AMOVDW},
-       {"MOVF", LTYPE3, arm.AMOVF},
-       {"MOVFD", LTYPE3, arm.AMOVFD},
-       {"MOVFW", LTYPE3, arm.AMOVFW},
-       {"MOVWD", LTYPE3, arm.AMOVWD},
-       {"MOVWF", LTYPE3, arm.AMOVWF},
-       {"LDREX", LTYPE3, arm.ALDREX},
-       {"LDREXD", LTYPE3, arm.ALDREXD},
-       {"STREX", LTYPE9, arm.ASTREX},
-       {"STREXD", LTYPE9, arm.ASTREXD},
-
-       /*
-               {"NEGF",                LTYPEI, ANEGF},
-               {"NEGD",                LTYPEI, ANEGD},
-               {"SQTF",                LTYPEI, ASQTF},
-               {"SQTD",                LTYPEI, ASQTD},
-               {"RNDF",                LTYPEI, ARNDF},
-               {"RNDD",                LTYPEI, ARNDD},
-               {"URDF",                LTYPEI, AURDF},
-               {"URDD",                LTYPEI, AURDD},
-               {"NRMF",                LTYPEI, ANRMF},
-               {"NRMD",                LTYPEI, ANRMD},
-       */
-       {"ABSF", LTYPEI, arm.AABSF},
-       {"ABSD", LTYPEI, arm.AABSD},
-       {"SQRTF", LTYPEI, arm.ASQRTF},
-       {"SQRTD", LTYPEI, arm.ASQRTD},
-       {"CMPF", LTYPEL, arm.ACMPF},
-       {"CMPD", LTYPEL, arm.ACMPD},
-       {"ADDF", LTYPEK, arm.AADDF},
-       {"ADDD", LTYPEK, arm.AADDD},
-       {"SUBF", LTYPEK, arm.ASUBF},
-       {"SUBD", LTYPEK, arm.ASUBD},
-       {"MULF", LTYPEK, arm.AMULF},
-       {"MULD", LTYPEK, arm.AMULD},
-       {"DIVF", LTYPEK, arm.ADIVF},
-       {"DIVD", LTYPEK, arm.ADIVD},
-       {"B", LTYPE4, arm.AB},
-       {"JMP", LTYPE4, arm.AB},
-       {"BL", LTYPE4, arm.ABL},
-       {"CALL", LTYPE4, arm.ABL},
-       {"BX", LTYPEBX, arm.ABX},
-       {"BEQ", LTYPE5, arm.ABEQ},
-       {"BNE", LTYPE5, arm.ABNE},
-       {"BCS", LTYPE5, arm.ABCS},
-       {"BHS", LTYPE5, arm.ABHS},
-       {"BCC", LTYPE5, arm.ABCC},
-       {"BLO", LTYPE5, arm.ABLO},
-       {"BMI", LTYPE5, arm.ABMI},
-       {"BPL", LTYPE5, arm.ABPL},
-       {"BVS", LTYPE5, arm.ABVS},
-       {"BVC", LTYPE5, arm.ABVC},
-       {"BHI", LTYPE5, arm.ABHI},
-       {"BLS", LTYPE5, arm.ABLS},
-       {"BGE", LTYPE5, arm.ABGE},
-       {"BLT", LTYPE5, arm.ABLT},
-       {"BGT", LTYPE5, arm.ABGT},
-       {"BLE", LTYPE5, arm.ABLE},
-       {"BCASE", LTYPE5, arm.ABCASE},
-       {"SWI", LTYPE6, arm.ASWI},
-       {"CMP", LTYPE7, arm.ACMP},
-       {"TST", LTYPE7, arm.ATST},
-       {"TEQ", LTYPE7, arm.ATEQ},
-       {"CMN", LTYPE7, arm.ACMN},
-       {"MOVM", LTYPE8, arm.AMOVM},
-       {"SWPBU", LTYPE9, arm.ASWPBU},
-       {"SWPW", LTYPE9, arm.ASWPW},
-       {"RET", LTYPEA, obj.ARET},
-       {"RFE", LTYPEA, arm.ARFE},
-       {"TEXT", LTYPEB, obj.ATEXT},
-       {"GLOBL", LGLOBL, obj.AGLOBL},
-       {"DATA", LTYPEC, obj.ADATA},
-       {"CASE", LTYPED, arm.ACASE},
-       {"END", LTYPEE, obj.AEND},
-       {"WORD", LTYPEH, arm.AWORD},
-       {"NOP", LTYPEI, obj.ANOP},
-       {"MCR", LTYPEJ, 0},
-       {"MRC", LTYPEJ, 1},
-       {"PLD", LTYPEPLD, arm.APLD},
-       {"UNDEF", LTYPEE, obj.AUNDEF},
-       {"CLZ", LTYPE2, arm.ACLZ},
-       {"MULWT", LTYPE1, arm.AMULWT},
-       {"MULWB", LTYPE1, arm.AMULWB},
-       {"MULAWT", LTYPEN, arm.AMULAWT},
-       {"MULAWB", LTYPEN, arm.AMULAWB},
-       {"USEFIELD", LTYPEN, obj.AUSEFIELD},
-       {"PCDATA", LTYPEPC, obj.APCDATA},
-       {"FUNCDATA", LTYPEF, obj.AFUNCDATA},
-}
-
-func cinit() {
-}
-
-func isreg(g *obj.Addr) bool {
-       return true
-}
-
-func cclean() {
-       outcode(obj.AEND, Always, &nullgen, 0, &nullgen)
-}
-
-var bcode = []int{
-       arm.ABEQ,
-       arm.ABNE,
-       arm.ABCS,
-       arm.ABCC,
-       arm.ABMI,
-       arm.ABPL,
-       arm.ABVS,
-       arm.ABVC,
-       arm.ABHI,
-       arm.ABLS,
-       arm.ABGE,
-       arm.ABLT,
-       arm.ABGT,
-       arm.ABLE,
-       arm.AB,
-       obj.ANOP,
-}
-
-var lastpc *obj.Prog
-
-func outcode(a, scond int32, g1 *obj.Addr, reg int32, g2 *obj.Addr) {
-       var p *obj.Prog
-       var pl *obj.Plist
-
-       /* hack to make B.NE etc. work: turn it into the corresponding conditional */
-       if a == arm.AB {
-               a = int32(bcode[(scond^arm.C_SCOND_XOR)&0xf])
-               scond = (scond &^ 0xf) | Always
-       }
-
-       if asm.Pass == 1 {
-               goto out
-       }
-
-       p = new(obj.Prog)
-       *p = obj.Prog{}
-       p.Ctxt = asm.Ctxt
-       p.As = int16(a)
-       p.Lineno = stmtline
-       p.Scond = uint8(scond)
-       p.From = *g1
-       p.Reg = int16(reg)
-       p.To = *g2
-       p.Pc = int64(asm.PC)
-
-       if lastpc == nil {
-               pl = obj.Linknewplist(asm.Ctxt)
-               pl.Firstpc = p
-       } else {
-               lastpc.Link = p
-       }
-       lastpc = p
-
-out:
-       if a != obj.AGLOBL && a != obj.ADATA {
-               asm.PC++
-       }
-}
diff --git a/src/cmd/old5a/y.go b/src/cmd/old5a/y.go
deleted file mode 100644 (file)
index 218ccf1..0000000
+++ /dev/null
@@ -1,1547 +0,0 @@
-//line a.y:32
-package main
-
-import __yyfmt__ "fmt"
-
-//line a.y:32
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/arm"
-)
-
-//line a.y:41
-type yySymType struct {
-       yys  int
-       sym  *asm.Sym
-       lval int32
-       dval float64
-       sval string
-       addr obj.Addr
-}
-
-const LTYPE1 = 57346
-const LTYPE2 = 57347
-const LTYPE3 = 57348
-const LTYPE4 = 57349
-const LTYPE5 = 57350
-const LTYPE6 = 57351
-const LTYPE7 = 57352
-const LTYPE8 = 57353
-const LTYPE9 = 57354
-const LTYPEA = 57355
-const LTYPEB = 57356
-const LTYPEC = 57357
-const LTYPED = 57358
-const LTYPEE = 57359
-const LTYPEG = 57360
-const LTYPEH = 57361
-const LTYPEI = 57362
-const LTYPEJ = 57363
-const LTYPEK = 57364
-const LTYPEL = 57365
-const LTYPEM = 57366
-const LTYPEN = 57367
-const LTYPEBX = 57368
-const LTYPEPLD = 57369
-const LCONST = 57370
-const LSP = 57371
-const LSB = 57372
-const LFP = 57373
-const LPC = 57374
-const LTYPEX = 57375
-const LTYPEPC = 57376
-const LTYPEF = 57377
-const LR = 57378
-const LREG = 57379
-const LF = 57380
-const LFREG = 57381
-const LC = 57382
-const LCREG = 57383
-const LPSR = 57384
-const LFCR = 57385
-const LCOND = 57386
-const LS = 57387
-const LAT = 57388
-const LGLOBL = 57389
-const LFCONST = 57390
-const LSCONST = 57391
-const LNAME = 57392
-const LLAB = 57393
-const LVAR = 57394
-
-var yyToknames = [...]string{
-       "$end",
-       "error",
-       "$unk",
-       "'|'",
-       "'^'",
-       "'&'",
-       "'<'",
-       "'>'",
-       "'+'",
-       "'-'",
-       "'*'",
-       "'/'",
-       "'%'",
-       "LTYPE1",
-       "LTYPE2",
-       "LTYPE3",
-       "LTYPE4",
-       "LTYPE5",
-       "LTYPE6",
-       "LTYPE7",
-       "LTYPE8",
-       "LTYPE9",
-       "LTYPEA",
-       "LTYPEB",
-       "LTYPEC",
-       "LTYPED",
-       "LTYPEE",
-       "LTYPEG",
-       "LTYPEH",
-       "LTYPEI",
-       "LTYPEJ",
-       "LTYPEK",
-       "LTYPEL",
-       "LTYPEM",
-       "LTYPEN",
-       "LTYPEBX",
-       "LTYPEPLD",
-       "LCONST",
-       "LSP",
-       "LSB",
-       "LFP",
-       "LPC",
-       "LTYPEX",
-       "LTYPEPC",
-       "LTYPEF",
-       "LR",
-       "LREG",
-       "LF",
-       "LFREG",
-       "LC",
-       "LCREG",
-       "LPSR",
-       "LFCR",
-       "LCOND",
-       "LS",
-       "LAT",
-       "LGLOBL",
-       "LFCONST",
-       "LSCONST",
-       "LNAME",
-       "LLAB",
-       "LVAR",
-       "':'",
-       "'='",
-       "';'",
-       "','",
-       "'['",
-       "']'",
-       "'$'",
-       "'('",
-       "')'",
-       "'~'",
-}
-var yyStatenames = [...]string{}
-
-const yyEofCode = 1
-const yyErrCode = 2
-const yyMaxDepth = 200
-
-//line yacctab:1
-var yyExca = [...]int{
-       -1, 1,
-       1, -1,
-       -2, 2,
-       -1, 196,
-       68, 63,
-       -2, 53,
-}
-
-const yyNprod = 134
-const yyPrivate = 57344
-
-var yyTokenNames []string
-var yyStates []string
-
-const yyLast = 708
-
-var yyAct = [...]int{
-
-       125, 328, 259, 73, 202, 79, 85, 106, 91, 195,
-       3, 129, 84, 115, 75, 72, 338, 324, 278, 136,
-       78, 77, 178, 177, 176, 174, 175, 169, 170, 171,
-       172, 173, 301, 86, 86, 289, 52, 61, 62, 90,
-       89, 86, 86, 86, 71, 103, 104, 284, 277, 86,
-       58, 57, 276, 120, 275, 96, 99, 101, 263, 112,
-       145, 105, 105, 224, 110, 334, 321, 302, 206, 105,
-       140, 123, 141, 143, 146, 113, 249, 152, 151, 55,
-       114, 58, 57, 197, 139, 92, 190, 165, 94, 341,
-       148, 149, 95, 93, 44, 46, 164, 154, 150, 231,
-       160, 128, 87, 56, 108, 64, 300, 311, 254, 167,
-       55, 60, 45, 59, 152, 97, 253, 58, 57, 86,
-       88, 255, 196, 340, 111, 184, 188, 189, 118, 191,
-       333, 124, 126, 331, 56, 327, 325, 309, 39, 199,
-       192, 108, 60, 308, 59, 211, 55, 58, 57, 92,
-       45, 305, 94, 295, 86, 226, 95, 93, 292, 222,
-       223, 288, 103, 104, 103, 104, 267, 86, 266, 262,
-       56, 103, 104, 258, 38, 225, 55, 45, 60, 108,
-       59, 245, 221, 45, 86, 233, 220, 144, 234, 235,
-       236, 237, 238, 239, 252, 219, 242, 243, 244, 250,
-       56, 246, 218, 247, 37, 248, 223, 200, 60, 216,
-       59, 264, 100, 257, 215, 198, 194, 193, 183, 265,
-       214, 182, 268, 269, 180, 271, 166, 153, 279, 279,
-       279, 279, 137, 53, 53, 53, 127, 35, 36, 272,
-       231, 273, 274, 317, 74, 83, 83, 281, 282, 283,
-       217, 330, 329, 251, 196, 83, 293, 196, 323, 116,
-       286, 287, 122, 291, 58, 57, 294, 90, 89, 314,
-       133, 134, 135, 304, 303, 90, 270, 256, 261, 297,
-       299, 147, 178, 177, 176, 174, 175, 169, 170, 171,
-       172, 173, 138, 55, 92, 315, 312, 94, 162, 298,
-       159, 95, 93, 316, 155, 156, 260, 157, 319, 310,
-       58, 57, 318, 90, 89, 240, 313, 56, 241, 103,
-       104, 181, 326, 80, 186, 60, 230, 59, 332, 229,
-       322, 83, 335, 290, 92, 336, 228, 94, 296, 55,
-       201, 95, 93, 207, 208, 209, 204, 203, 205, 285,
-       212, 213, 306, 158, 337, 103, 104, 94, 131, 132,
-       342, 95, 93, 56, 107, 107, 83, 227, 121, 102,
-       8, 76, 107, 59, 7, 98, 133, 232, 130, 83,
-       131, 132, 9, 10, 11, 12, 14, 15, 16, 17,
-       18, 19, 20, 22, 23, 34, 83, 24, 25, 28,
-       26, 27, 29, 30, 13, 31, 171, 172, 173, 58,
-       57, 109, 32, 33, 2, 58, 57, 1, 119, 92,
-       185, 142, 94, 320, 339, 21, 95, 93, 4, 0,
-       5, 0, 0, 6, 103, 104, 0, 0, 55, 0,
-       280, 280, 280, 280, 55, 92, 45, 0, 94, 0,
-       58, 57, 95, 93, 90, 89, 0, 0, 81, 82,
-       103, 104, 56, 0, 0, 0, 54, 0, 56, 0,
-       60, 0, 59, 0, 0, 87, 76, 0, 59, 55,
-       92, 0, 0, 94, 0, 0, 0, 95, 93, 90,
-       89, 0, 0, 81, 82, 58, 163, 0, 58, 57,
-       0, 54, 0, 56, 0, 122, 204, 203, 205, 251,
-       87, 76, 0, 59, 178, 177, 176, 174, 175, 169,
-       170, 171, 172, 173, 55, 58, 57, 55, 0, 0,
-       0, 58, 57, 0, 58, 57, 0, 58, 57, 169,
-       170, 171, 172, 173, 162, 161, 54, 0, 56, 187,
-       0, 56, 0, 0, 55, 0, 76, 0, 59, 76,
-       55, 59, 0, 55, 0, 0, 55, 0, 0, 0,
-       0, 0, 204, 203, 205, 94, 117, 0, 56, 95,
-       93, 210, 54, 0, 56, 54, 60, 56, 59, 0,
-       56, 0, 76, 0, 59, 60, 0, 59, 76, 0,
-       59, 178, 177, 176, 174, 175, 169, 170, 171, 172,
-       173, 178, 177, 176, 174, 175, 169, 170, 171, 172,
-       173, 178, 177, 176, 174, 175, 169, 170, 171, 172,
-       173, 92, 0, 0, 94, 0, 0, 0, 95, 93,
-       40, 0, 0, 0, 0, 0, 103, 104, 0, 0,
-       0, 41, 42, 43, 0, 0, 47, 48, 49, 50,
-       51, 0, 0, 307, 63, 0, 65, 66, 67, 68,
-       69, 70, 179, 177, 176, 174, 175, 169, 170, 171,
-       172, 173, 168, 178, 177, 176, 174, 175, 169, 170,
-       171, 172, 173, 176, 174, 175, 169, 170, 171, 172,
-       173, 174, 175, 169, 170, 171, 172, 173,
-}
-var yyPact = [...]int{
-
-       -1000, -1000, 368, -1000, 174, 140, -1000, 109, 73, -1000,
-       -1000, -1000, -1000, 84, 84, -1000, -1000, -1000, -1000, -1000,
-       525, 525, 525, -1000, 84, -1000, -1000, -1000, -1000, -1000,
-       -1000, 522, 441, 441, 84, -1000, 400, 400, -1000, -1000,
-       110, 110, 406, 117, 5, 84, 516, 117, 110, 301,
-       380, 117, 170, 31, 371, -1000, -1000, 400, 400, 400,
-       400, 166, 280, 592, 33, 265, -9, 265, 108, 592,
-       592, -1000, 28, -1000, 8, -1000, 255, 161, -1000, -1000,
-       27, -1000, -1000, 8, -1000, -1000, 297, 486, -1000, -1000,
-       26, -1000, -1000, -1000, -1000, 17, 160, -1000, 368, 617,
-       -1000, 607, 158, -1000, -1000, -1000, -1000, -1000, 400, 155,
-       152, 489, -1000, 295, -1000, -1000, 16, 349, 441, 151,
-       150, 295, 13, 149, 5, -1000, -1000, 138, 307, -2,
-       335, 400, 400, -1000, -1000, -1000, 510, 72, 400, 84,
-       -1000, 148, 143, -1000, -1000, 240, 136, 129, 120, 116,
-       315, 533, -8, 441, 295, 360, 328, 321, 318, 8,
-       -1000, -1000, -1000, 41, 400, 400, 441, -1000, -1000, 400,
-       400, 400, 400, 400, 308, 310, 400, 400, 400, -1000,
-       295, -1000, 295, 441, -1000, -1000, 6, 371, -1000, -1000,
-       211, -1000, -1000, 295, 49, 40, 111, 315, 5, 107,
-       268, 103, -13, -1000, -1000, -1000, 307, 349, -1000, -1000,
-       -1000, -1000, 102, 100, -1000, 219, 227, 182, 219, 400,
-       295, 295, -17, -19, -1000, -1000, -23, 255, 255, 255,
-       255, -1000, -24, 278, -1000, 395, 395, -1000, -1000, -1000,
-       400, 400, 694, 687, 668, 95, -1000, -1000, -1000, 467,
-       -2, -36, 84, 295, 92, 295, 295, 87, 295, -1000,
-       289, 242, 37, -1000, -39, -3, 35, 33, -1000, -1000,
-       85, 84, 597, 77, 71, -1000, -1000, -1000, -1000, -1000,
-       -1000, -1000, -1000, -1000, -1000, -1000, 530, 530, 295, -1000,
-       -1000, 39, 528, -1000, -1000, 46, -1000, -1000, 231, 285,
-       268, -1000, 203, -1000, -1000, 219, -1000, 295, -4, 295,
-       -1000, -1000, -1000, -1000, -1000, 220, -1000, -54, -1000, 70,
-       -1000, 295, 69, -1000, -1000, 201, 67, 295, 64, -1000,
-       -5, 295, -1000, 201, 400, -55, 57, 18, -1000, -1000,
-       400, -1000, 679,
-}
-var yyPgo = [...]int{
-
-       0, 212, 19, 424, 4, 11, 8, 0, 1, 18,
-       640, 9, 21, 13, 20, 423, 6, 323, 120, 421,
-       2, 7, 5, 15, 12, 14, 420, 3, 369, 417,
-       414, 10, 375, 374, 80,
-}
-var yyR1 = [...]int{
-
-       0, 29, 30, 29, 32, 31, 31, 31, 31, 31,
-       31, 33, 33, 33, 33, 33, 33, 33, 33, 33,
-       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
-       33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
-       33, 33, 33, 33, 33, 33, 20, 20, 20, 20,
-       10, 10, 10, 34, 34, 13, 13, 22, 22, 22,
-       22, 18, 18, 11, 11, 11, 12, 12, 12, 12,
-       12, 12, 12, 12, 12, 26, 26, 25, 27, 27,
-       24, 24, 24, 28, 28, 28, 21, 14, 15, 17,
-       17, 17, 17, 9, 9, 6, 6, 6, 7, 7,
-       8, 8, 19, 19, 16, 16, 23, 23, 23, 5,
-       5, 5, 4, 4, 4, 1, 1, 1, 1, 1,
-       1, 3, 3, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2, 2,
-}
-var yyR2 = [...]int{
-
-       0, 0, 0, 3, 0, 4, 4, 4, 1, 2,
-       2, 7, 6, 5, 5, 5, 4, 4, 3, 3,
-       4, 6, 7, 7, 7, 6, 6, 3, 5, 7,
-       4, 6, 6, 4, 3, 5, 5, 7, 6, 12,
-       7, 9, 2, 4, 4, 2, 1, 2, 3, 4,
-       0, 2, 2, 0, 2, 4, 2, 2, 2, 2,
-       1, 2, 3, 1, 3, 3, 1, 1, 1, 4,
-       1, 1, 1, 1, 1, 1, 1, 3, 1, 4,
-       1, 4, 1, 1, 1, 1, 2, 1, 5, 4,
-       4, 4, 4, 1, 1, 1, 1, 4, 1, 1,
-       1, 4, 1, 1, 1, 4, 4, 5, 7, 0,
-       2, 2, 1, 1, 1, 1, 1, 2, 2, 2,
-       3, 0, 2, 1, 3, 3, 3, 3, 3, 4,
-       4, 3, 3, 3,
-}
-var yyChk = [...]int{
-
-       -1000, -29, -30, -31, 60, 62, 65, -33, 2, 14,
-       15, 16, 17, 36, 18, 19, 20, 21, 22, 23,
-       24, 57, 25, 26, 29, 30, 32, 33, 31, 34,
-       35, 37, 44, 45, 27, 63, 64, 64, 65, 65,
-       -10, -10, -10, -10, -34, 66, -34, -10, -10, -10,
-       -10, -10, -23, -1, 60, 38, 62, 10, 9, 72,
-       70, -23, -23, -10, -34, -10, -10, -10, -10, -10,
-       -10, -24, -23, -27, -1, -25, 70, -12, -14, -22,
-       -17, 52, 53, -1, -24, -16, -7, 69, -18, 49,
-       48, -6, 39, 47, 42, 46, -12, -34, -32, -2,
-       -1, -2, -28, 54, 55, -14, -21, -17, 69, -28,
-       -12, -34, -25, 70, -34, -13, -1, 60, -34, -28,
-       -27, 67, -1, -14, -34, -7, -34, 66, 70, -5,
-       7, 9, 10, -1, -1, -1, -2, 66, 12, -14,
-       -22, -16, -19, -16, -18, 69, -16, -1, -14, -14,
-       70, 70, -7, 66, 70, 7, 8, 10, 56, -1,
-       -24, 59, 58, 10, 70, 70, 66, -31, 65, 9,
-       10, 11, 12, 13, 7, 8, 6, 5, 4, 65,
-       66, -1, 66, 66, -13, -26, -1, 60, -25, -23,
-       70, -5, -12, 66, 66, -11, -7, 70, 66, -25,
-       69, -1, -4, 40, 39, 41, 70, 8, -1, -1,
-       71, -21, -1, -1, -34, 66, 66, 10, 66, 66,
-       66, 66, -6, -6, 71, -12, -7, 7, 8, 8,
-       8, 58, -1, -2, -12, -2, -2, -2, -2, -2,
-       7, 8, -2, -2, -2, -7, -14, -14, -12, 70,
-       -5, 42, -7, 67, 68, 10, -34, -25, 66, -20,
-       38, 10, 66, 71, -4, -5, 66, 66, -16, -16,
-       49, -16, -2, -14, -14, 71, 71, 71, -9, -7,
-       -1, -9, -9, -9, 71, 71, -2, -2, 66, 71,
-       -34, -11, 66, -7, -11, 66, -34, -14, 10, 38,
-       69, 71, 70, -21, -22, 66, -34, 66, 66, 66,
-       -14, 68, -27, -14, 38, 10, -20, 40, -16, -7,
-       -15, 70, -14, 38, 71, 66, -7, 66, -8, 51,
-       50, 66, -7, 66, 70, -7, -8, -2, 71, -3,
-       66, 71, -2,
-}
-var yyDef = [...]int{
-
-       1, -2, 0, 3, 0, 0, 8, 0, 0, 50,
-       50, 50, 50, 53, 53, 50, 50, 50, 50, 50,
-       0, 0, 0, 50, 53, 50, 50, 50, 50, 50,
-       50, 0, 0, 0, 53, 4, 0, 0, 9, 10,
-       0, 0, 0, 53, 0, 53, 0, 53, 0, 0,
-       53, 53, 0, 0, 109, 115, 116, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 42, 80, 82, 0, 78, 0, 0, 66, 67,
-       68, 70, 71, 72, 73, 74, 87, 0, 60, 104,
-       0, 98, 99, 95, 96, 0, 0, 45, 0, 0,
-       123, 0, 0, 51, 52, 83, 84, 85, 0, 0,
-       0, 0, 18, 0, 54, 19, 0, 109, 0, 0,
-       0, 0, 0, 0, 0, 87, 27, 0, 0, 0,
-       0, 0, 0, 117, 118, 119, 0, 0, 0, 53,
-       34, 0, 0, 102, 103, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 57,
-       58, 59, 61, 0, 0, 0, 0, 5, 6, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 7,
-       0, 86, 0, 0, 16, 17, 0, 109, 75, 76,
-       0, 56, 20, 0, 0, 0, -2, 0, 0, 0,
-       0, 0, 0, 112, 113, 114, 0, 109, 110, 111,
-       120, 30, 0, 0, 33, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 77, 43, 0, 0, 0, 0,
-       0, 62, 0, 0, 44, 124, 125, 126, 127, 128,
-       0, 0, 131, 132, 133, 87, 13, 14, 15, 0,
-       56, 0, 53, 0, 0, 0, 0, 53, 0, 28,
-       46, 0, 0, 106, 0, 0, 0, 0, 35, 36,
-       104, 53, 0, 0, 0, 81, 79, 69, 89, 93,
-       94, 90, 91, 92, 105, 97, 129, 130, 12, 55,
-       21, 0, 0, 64, 65, 53, 25, 26, 0, 47,
-       0, 107, 0, 31, 32, 0, 38, 0, 0, 0,
-       11, 22, 23, 24, 48, 0, 29, 0, 37, 0,
-       40, 0, 0, 49, 108, 0, 0, 0, 0, 100,
-       0, 0, 41, 0, 0, 0, 121, 0, 88, 39,
-       0, 101, 122,
-}
-var yyTok1 = [...]int{
-
-       1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 69, 13, 6, 3,
-       70, 71, 11, 9, 66, 10, 3, 12, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 63, 65,
-       7, 64, 8, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 67, 3, 68, 5, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 4, 3, 72,
-}
-var yyTok2 = [...]int{
-
-       2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
-       22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-       32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-       42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
-       52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
-       62,
-}
-var yyTok3 = [...]int{
-       0,
-}
-
-var yyErrorMessages = [...]struct {
-       state int
-       token int
-       msg   string
-}{}
-
-//line yaccpar:1
-
-/*     parser for yacc output  */
-
-var (
-       yyDebug        = 0
-       yyErrorVerbose = false
-)
-
-type yyLexer interface {
-       Lex(lval *yySymType) int
-       Error(s string)
-}
-
-type yyParser interface {
-       Parse(yyLexer) int
-       Lookahead() int
-}
-
-type yyParserImpl struct {
-       lookahead func() int
-}
-
-func (p *yyParserImpl) Lookahead() int {
-       return p.lookahead()
-}
-
-func yyNewParser() yyParser {
-       p := &yyParserImpl{
-               lookahead: func() int { return -1 },
-       }
-       return p
-}
-
-const yyFlag = -1000
-
-func yyTokname(c int) string {
-       if c >= 1 && c-1 < len(yyToknames) {
-               if yyToknames[c-1] != "" {
-                       return yyToknames[c-1]
-               }
-       }
-       return __yyfmt__.Sprintf("tok-%v", c)
-}
-
-func yyStatname(s int) string {
-       if s >= 0 && s < len(yyStatenames) {
-               if yyStatenames[s] != "" {
-                       return yyStatenames[s]
-               }
-       }
-       return __yyfmt__.Sprintf("state-%v", s)
-}
-
-func yyErrorMessage(state, lookAhead int) string {
-       const TOKSTART = 4
-
-       if !yyErrorVerbose {
-               return "syntax error"
-       }
-
-       for _, e := range yyErrorMessages {
-               if e.state == state && e.token == lookAhead {
-                       return "syntax error: " + e.msg
-               }
-       }
-
-       res := "syntax error: unexpected " + yyTokname(lookAhead)
-
-       // To match Bison, suggest at most four expected tokens.
-       expected := make([]int, 0, 4)
-
-       // Look for shiftable tokens.
-       base := yyPact[state]
-       for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
-               if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-       }
-
-       if yyDef[state] == -2 {
-               i := 0
-               for yyExca[i] != -1 || yyExca[i+1] != state {
-                       i += 2
-               }
-
-               // Look for tokens that we accept or reduce.
-               for i += 2; yyExca[i] >= 0; i += 2 {
-                       tok := yyExca[i]
-                       if tok < TOKSTART || yyExca[i+1] == 0 {
-                               continue
-                       }
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-
-               // If the default action is to accept or reduce, give up.
-               if yyExca[i+1] != 0 {
-                       return res
-               }
-       }
-
-       for i, tok := range expected {
-               if i == 0 {
-                       res += ", expecting "
-               } else {
-                       res += " or "
-               }
-               res += yyTokname(tok)
-       }
-       return res
-}
-
-func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
-       token = 0
-       char = lex.Lex(lval)
-       if char <= 0 {
-               token = yyTok1[0]
-               goto out
-       }
-       if char < len(yyTok1) {
-               token = yyTok1[char]
-               goto out
-       }
-       if char >= yyPrivate {
-               if char < yyPrivate+len(yyTok2) {
-                       token = yyTok2[char-yyPrivate]
-                       goto out
-               }
-       }
-       for i := 0; i < len(yyTok3); i += 2 {
-               token = yyTok3[i+0]
-               if token == char {
-                       token = yyTok3[i+1]
-                       goto out
-               }
-       }
-
-out:
-       if token == 0 {
-               token = yyTok2[1] /* unknown char */
-       }
-       if yyDebug >= 3 {
-               __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
-       }
-       return char, token
-}
-
-func yyParse(yylex yyLexer) int {
-       return yyNewParser().Parse(yylex)
-}
-
-func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
-       var yyn int
-       var yylval yySymType
-       var yyVAL yySymType
-       var yyDollar []yySymType
-       yyS := make([]yySymType, yyMaxDepth)
-
-       Nerrs := 0   /* number of errors */
-       Errflag := 0 /* error recovery flag */
-       yystate := 0
-       yychar := -1
-       yytoken := -1 // yychar translated into internal numbering
-       yyrcvr.lookahead = func() int { return yychar }
-       defer func() {
-               // Make sure we report no lookahead when not parsing.
-               yystate = -1
-               yychar = -1
-               yytoken = -1
-       }()
-       yyp := -1
-       goto yystack
-
-ret0:
-       return 0
-
-ret1:
-       return 1
-
-yystack:
-       /* put a state and value onto the stack */
-       if yyDebug >= 4 {
-               __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
-       }
-
-       yyp++
-       if yyp >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyS[yyp] = yyVAL
-       yyS[yyp].yys = yystate
-
-yynewstate:
-       yyn = yyPact[yystate]
-       if yyn <= yyFlag {
-               goto yydefault /* simple state */
-       }
-       if yychar < 0 {
-               yychar, yytoken = yylex1(yylex, &yylval)
-       }
-       yyn += yytoken
-       if yyn < 0 || yyn >= yyLast {
-               goto yydefault
-       }
-       yyn = yyAct[yyn]
-       if yyChk[yyn] == yytoken { /* valid shift */
-               yychar = -1
-               yytoken = -1
-               yyVAL = yylval
-               yystate = yyn
-               if Errflag > 0 {
-                       Errflag--
-               }
-               goto yystack
-       }
-
-yydefault:
-       /* default state action */
-       yyn = yyDef[yystate]
-       if yyn == -2 {
-               if yychar < 0 {
-                       yychar, yytoken = yylex1(yylex, &yylval)
-               }
-
-               /* look through exception table */
-               xi := 0
-               for {
-                       if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
-                               break
-                       }
-                       xi += 2
-               }
-               for xi += 2; ; xi += 2 {
-                       yyn = yyExca[xi+0]
-                       if yyn < 0 || yyn == yytoken {
-                               break
-                       }
-               }
-               yyn = yyExca[xi+1]
-               if yyn < 0 {
-                       goto ret0
-               }
-       }
-       if yyn == 0 {
-               /* error ... attempt to resume parsing */
-               switch Errflag {
-               case 0: /* brand new error */
-                       yylex.Error(yyErrorMessage(yystate, yytoken))
-                       Nerrs++
-                       if yyDebug >= 1 {
-                               __yyfmt__.Printf("%s", yyStatname(yystate))
-                               __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
-                       }
-                       fallthrough
-
-               case 1, 2: /* incompletely recovered error ... try again */
-                       Errflag = 3
-
-                       /* find a state where "error" is a legal shift action */
-                       for yyp >= 0 {
-                               yyn = yyPact[yyS[yyp].yys] + yyErrCode
-                               if yyn >= 0 && yyn < yyLast {
-                                       yystate = yyAct[yyn] /* simulate a shift of "error" */
-                                       if yyChk[yystate] == yyErrCode {
-                                               goto yystack
-                                       }
-                               }
-
-                               /* the current p has no shift on "error", pop stack */
-                               if yyDebug >= 2 {
-                                       __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
-                               }
-                               yyp--
-                       }
-                       /* there is no state on the stack with an error shift ... abort */
-                       goto ret1
-
-               case 3: /* no shift yet; clobber input char */
-                       if yyDebug >= 2 {
-                               __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
-                       }
-                       if yytoken == yyEofCode {
-                               goto ret1
-                       }
-                       yychar = -1
-                       yytoken = -1
-                       goto yynewstate /* try again in the same state */
-               }
-       }
-
-       /* reduction by production yyn */
-       if yyDebug >= 2 {
-               __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
-       }
-
-       yynt := yyn
-       yypt := yyp
-       _ = yypt // guard against "declared and not used"
-
-       yyp -= yyR2[yyn]
-       // yyp is now the index of $0. Perform the default action. Iff the
-       // reduced production is ε, $1 is possibly out of range.
-       if yyp+1 >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyVAL = yyS[yyp+1]
-
-       /* consult goto table to find next state */
-       yyn = yyR1[yyn]
-       yyg := yyPgo[yyn]
-       yyj := yyg + yyS[yyp].yys + 1
-
-       if yyj >= yyLast {
-               yystate = yyAct[yyg]
-       } else {
-               yystate = yyAct[yyj]
-               if yyChk[yystate] != -yyn {
-                       yystate = yyAct[yyg]
-               }
-       }
-       // dummy call; replaced with literal code
-       switch yynt {
-
-       case 2:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:73
-               {
-                       stmtline = asm.Lineno
-               }
-       case 4:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:80
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyDollar[1].sym.Type = LLAB
-                       yyDollar[1].sym.Value = int64(asm.PC)
-               }
-       case 6:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:90
-               {
-                       yyDollar[1].sym.Type = LVAR
-                       yyDollar[1].sym.Value = int64(yyDollar[3].lval)
-               }
-       case 7:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:95
-               {
-                       if yyDollar[1].sym.Value != int64(yyDollar[3].lval) {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Name)
-                       }
-                       yyDollar[1].sym.Value = int64(yyDollar[3].lval)
-               }
-       case 11:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:110
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, yyDollar[5].lval, &yyDollar[7].addr)
-               }
-       case 12:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:114
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, yyDollar[5].lval, &nullgen)
-               }
-       case 13:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:118
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &yyDollar[5].addr)
-               }
-       case 14:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:125
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &yyDollar[5].addr)
-               }
-       case 15:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:132
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &yyDollar[5].addr)
-               }
-       case 16:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:139
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &nullgen, 0, &yyDollar[4].addr)
-               }
-       case 17:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:143
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &nullgen, 0, &yyDollar[4].addr)
-               }
-       case 18:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:150
-               {
-                       outcode(yyDollar[1].lval, Always, &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 19:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:157
-               {
-                       outcode(yyDollar[1].lval, Always, &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 20:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:164
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &nullgen, 0, &yyDollar[4].addr)
-               }
-       case 21:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:171
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, yyDollar[5].lval, &nullgen)
-               }
-       case 22:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:178
-               {
-                       var g obj.Addr
-
-                       g = nullgen
-                       g.Type = obj.TYPE_REGLIST
-                       g.Offset = int64(yyDollar[6].lval)
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &g)
-               }
-       case 23:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:187
-               {
-                       var g obj.Addr
-
-                       g = nullgen
-                       g.Type = obj.TYPE_REGLIST
-                       g.Offset = int64(yyDollar[4].lval)
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &g, 0, &yyDollar[7].addr)
-               }
-       case 24:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:199
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[5].addr, int32(yyDollar[3].addr.Reg), &yyDollar[7].addr)
-               }
-       case 25:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:203
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[5].addr, int32(yyDollar[3].addr.Reg), &yyDollar[3].addr)
-               }
-       case 26:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:207
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[4].addr, int32(yyDollar[6].addr.Reg), &yyDollar[6].addr)
-               }
-       case 27:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:214
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &nullgen, 0, &nullgen)
-               }
-       case 28:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:221
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[5].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 29:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:229
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[7].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = int64(yyDollar[4].lval)
-                       }
-               }
-       case 30:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:242
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[4].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 31:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:250
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = int64(yyDollar[4].lval)
-                       }
-               }
-       case 32:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:264
-               {
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = int64(yyDollar[4].lval)
-                       }
-               }
-       case 33:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:276
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &nullgen)
-               }
-       case 34:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:283
-               {
-                       outcode(yyDollar[1].lval, Always, &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 35:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:290
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &yyDollar[5].addr)
-               }
-       case 36:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:294
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, 0, &yyDollar[5].addr)
-               }
-       case 37:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:298
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, yyDollar[5].lval, &yyDollar[7].addr)
-               }
-       case 38:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:302
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, int32(yyDollar[5].addr.Reg), &nullgen)
-               }
-       case 39:
-               yyDollar = yyS[yypt-12 : yypt+1]
-               //line a.y:309
-               {
-                       var g obj.Addr
-
-                       g = nullgen
-                       g.Type = obj.TYPE_CONST
-                       g.Offset = int64(
-                               (0xe << 24) | /* opcode */
-                                       (yyDollar[1].lval << 20) | /* MCR/MRC */
-                                       ((yyDollar[2].lval ^ C_SCOND_XOR) << 28) | /* scond */
-                                       ((yyDollar[3].lval & 15) << 8) | /* coprocessor number */
-                                       ((yyDollar[5].lval & 7) << 21) | /* coprocessor operation */
-                                       ((yyDollar[7].lval & 15) << 12) | /* arm register */
-                                       ((yyDollar[9].lval & 15) << 16) | /* Crn */
-                                       ((yyDollar[11].lval & 15) << 0) | /* Crm */
-                                       ((yyDollar[12].lval & 7) << 5) | /* coprocessor information */
-                                       (1 << 4)) /* must be set */
-                       outcode(AMRC, Always, &nullgen, 0, &g)
-               }
-       case 40:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:321
-               {
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, int32(yyDollar[5].addr.Reg), &yyDollar[7].addr)
-               }
-       case 41:
-               yyDollar = yyS[yypt-9 : yypt+1]
-               //line a.y:329
-               {
-                       yyDollar[7].addr.Type = obj.TYPE_REGREG2
-                       yyDollar[7].addr.Offset = int64(yyDollar[9].lval)
-                       outcode(yyDollar[1].lval, yyDollar[2].lval, &yyDollar[3].addr, int32(yyDollar[5].addr.Reg), &yyDollar[7].addr)
-               }
-       case 42:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:338
-               {
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 43:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:345
-               {
-                       if yyDollar[2].addr.Type != obj.TYPE_CONST || yyDollar[4].addr.Type != obj.TYPE_CONST {
-                               yyerror("arguments to PCDATA must be integer constants")
-                       }
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 44:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:355
-               {
-                       if yyDollar[2].addr.Type != obj.TYPE_CONST {
-                               yyerror("index for FUNCDATA must be integer constant")
-                       }
-                       if yyDollar[4].addr.Type != obj.NAME_EXTERN && yyDollar[4].addr.Type != obj.NAME_STATIC && yyDollar[4].addr.Type != obj.TYPE_MEM {
-                               yyerror("value for FUNCDATA must be symbol reference")
-                       }
-                       outcode(yyDollar[1].lval, Always, &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 45:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:368
-               {
-                       outcode(yyDollar[1].lval, Always, &nullgen, 0, &nullgen)
-               }
-       case 46:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:374
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 47:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:381
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -int64(yyDollar[2].lval)
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 48:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:388
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-                       yyVAL.addr.Val = int32(yyDollar[3].lval)
-               }
-       case 49:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:395
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -int64(yyDollar[2].lval)
-                       yyVAL.addr.Val = int32(yyDollar[4].lval)
-               }
-       case 50:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:403
-               {
-                       yyVAL.lval = Always
-               }
-       case 51:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:407
-               {
-                       yyVAL.lval = (yyDollar[1].lval & ^C_SCOND) | yyDollar[2].lval
-               }
-       case 52:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:411
-               {
-                       yyVAL.lval = yyDollar[1].lval | yyDollar[2].lval
-               }
-       case 55:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:420
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval) + int64(asm.PC)
-               }
-       case 56:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:426
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       yyVAL.addr = nullgen
-                       if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
-                               yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].sym.Value + int64(yyDollar[2].lval)
-               }
-       case 57:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:437
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       yyVAL.addr.Offset = int64(yyDollar[2].lval)
-               }
-       case 58:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:443
-               {
-                       yyVAL.addr = yyDollar[2].addr
-                       yyVAL.addr.Type = obj.TYPE_ADDR
-               }
-       case 59:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:448
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SCONST
-                       yyVAL.addr.Val = yyDollar[2].sval
-               }
-       case 61:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:457
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[2].dval
-               }
-       case 62:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:463
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[3].dval
-               }
-       case 63:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:471
-               {
-                       yyVAL.lval = 1 << uint(yyDollar[1].lval&15)
-               }
-       case 64:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:475
-               {
-                       yyVAL.lval = 0
-                       for i := yyDollar[1].lval; i <= yyDollar[3].lval; i++ {
-                               yyVAL.lval |= 1 << uint(i&15)
-                       }
-                       for i := yyDollar[3].lval; i <= yyDollar[1].lval; i++ {
-                               yyVAL.lval |= 1 << uint(i&15)
-                       }
-               }
-       case 65:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:485
-               {
-                       yyVAL.lval = (1 << uint(yyDollar[1].lval&15)) | yyDollar[3].lval
-               }
-       case 69:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:494
-               {
-                       yyVAL.addr = yyDollar[1].addr
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-               }
-       case 70:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:499
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 71:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:505
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 72:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:511
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-               }
-       case 76:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:522
-               {
-                       yyVAL.addr = yyDollar[1].addr
-                       if yyDollar[1].addr.Name != obj.NAME_EXTERN && yyDollar[1].addr.Name != obj.NAME_STATIC {
-                       }
-               }
-       case 77:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:530
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Offset = 0
-               }
-       case 79:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:540
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-               }
-       case 81:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:550
-               {
-                       yyVAL.addr = yyDollar[1].addr
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-               }
-       case 86:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:563
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       yyVAL.addr.Offset = int64(yyDollar[2].lval)
-               }
-       case 87:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:571
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 88:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:579
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REGREG
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Offset = int64(yyDollar[4].lval)
-               }
-       case 89:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:588
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SHIFT
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval&15) | int64(yyDollar[4].lval) | (0 << 5)
-               }
-       case 90:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:594
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SHIFT
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval&15) | int64(yyDollar[4].lval) | (1 << 5)
-               }
-       case 91:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:600
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SHIFT
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval&15) | int64(yyDollar[4].lval) | (2 << 5)
-               }
-       case 92:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:606
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SHIFT
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval&15) | int64(yyDollar[4].lval) | (3 << 5)
-               }
-       case 93:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:614
-               {
-                       if yyVAL.lval < REG_R0 || yyVAL.lval > REG_R15 {
-                               print("register value out of range\n")
-                       }
-                       yyVAL.lval = ((yyDollar[1].lval & 15) << 8) | (1 << 4)
-               }
-       case 94:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:621
-               {
-                       if yyVAL.lval < 0 || yyVAL.lval >= 32 {
-                               print("shift value out of range\n")
-                       }
-                       yyVAL.lval = (yyDollar[1].lval & 31) << 7
-               }
-       case 96:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:631
-               {
-                       yyVAL.lval = REGPC
-               }
-       case 97:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:635
-               {
-                       if yyDollar[3].lval < 0 || yyDollar[3].lval >= NREG {
-                               print("register value out of range\n")
-                       }
-                       yyVAL.lval = REG_R0 + yyDollar[3].lval
-               }
-       case 99:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:645
-               {
-                       yyVAL.lval = REGSP
-               }
-       case 101:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:652
-               {
-                       if yyDollar[3].lval < 0 || yyDollar[3].lval >= NREG {
-                               print("register value out of range\n")
-                       }
-                       yyVAL.lval = yyDollar[3].lval // TODO(rsc): REG_C0+$3
-               }
-       case 104:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:665
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 105:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:671
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(REG_F0 + yyDollar[3].lval)
-               }
-       case 106:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:679
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[3].lval)
-                       yyVAL.addr.Sym = nil
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-               }
-       case 107:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:687
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[4].lval)
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
-                       yyVAL.addr.Offset = int64(yyDollar[2].lval)
-               }
-       case 108:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:695
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = obj.NAME_STATIC
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
-                       yyVAL.addr.Offset = int64(yyDollar[4].lval)
-               }
-       case 109:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:704
-               {
-                       yyVAL.lval = 0
-               }
-       case 110:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:708
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 111:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:712
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 116:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:724
-               {
-                       yyVAL.lval = int32(yyDollar[1].sym.Value)
-               }
-       case 117:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:728
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 118:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:732
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 119:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:736
-               {
-                       yyVAL.lval = ^yyDollar[2].lval
-               }
-       case 120:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:740
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 121:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:745
-               {
-                       yyVAL.lval = 0
-               }
-       case 122:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:749
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 124:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:756
-               {
-                       yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
-               }
-       case 125:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:760
-               {
-                       yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
-               }
-       case 126:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:764
-               {
-                       yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
-               }
-       case 127:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:768
-               {
-                       yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
-               }
-       case 128:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:772
-               {
-                       yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
-               }
-       case 129:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:776
-               {
-                       yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
-               }
-       case 130:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:780
-               {
-                       yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
-               }
-       case 131:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:784
-               {
-                       yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
-               }
-       case 132:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:788
-               {
-                       yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
-               }
-       case 133:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:792
-               {
-                       yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
-               }
-       }
-       goto yystack /* stack new state and value */
-}
diff --git a/src/cmd/old6a/a.y b/src/cmd/old6a/a.y
deleted file mode 100644 (file)
index 93944f9..0000000
+++ /dev/null
@@ -1,730 +0,0 @@
-// Inferno utils/6a/a.y
-// http://code.google.com/p/inferno-os/source/browse/utils/6a/a.y
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-%{
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/x86"
-)
-%}
-
-%union {
-       sym *asm.Sym
-       lval int64
-       dval float64
-       sval string
-       addr obj.Addr
-       addr2 Addr2
-}
-
-%left  '|'
-%left  '^'
-%left  '&'
-%left  '<' '>'
-%left  '+' '-'
-%left  '*' '/' '%'
-%token <lval>  LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4
-%token <lval>  LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPEG LTYPEPC
-%token <lval>  LTYPES LTYPEM LTYPEI LTYPEXC LTYPEX LTYPERT LTYPEF
-%token <lval>  LCONST LFP LPC LSB
-%token <lval>  LBREG LLREG LSREG LFREG LMREG LXREG
-%token <dval>  LFCONST
-%token <sval>  LSCONST LSP
-%token <sym>   LNAME LLAB LVAR
-%type  <lval>  con expr pointer offset
-%type  <addr>  mem imm textsize reg nam rel rem rim rom omem nmem
-%type  <addr2> nonnon nonrel nonrem rimnon rimrem remrim
-%type  <addr2> spec3 spec4 spec5 spec6 spec7 spec8 spec9
-%type  <addr2> spec10 spec12 spec13
-%%
-prog:
-|      prog 
-       {
-               stmtline = asm.Lineno;
-       }
-       line
-
-line:
-       LNAME ':'
-       {
-               $1 = asm.LabelLookup($1);
-               if $1.Type == LLAB && $1.Value != int64(asm.PC) {
-                       yyerror("redeclaration of %s (%s)", $1.Labelname, $1.Name);
-               }
-               $1.Type = LLAB;
-               $1.Value = int64(asm.PC)
-       }
-       line
-|      ';'
-|      inst ';'
-|      error ';'
-
-inst:
-       LNAME '=' expr
-       {
-               $1.Type = LVAR;
-               $1.Value = $3;
-       }
-|      LVAR '=' expr
-       {
-               if $1.Value != $3 {
-                       yyerror("redeclaration of %s", $1.Name);
-               }
-               $1.Value = $3;
-       }
-|      LTYPE0 nonnon   { outcode(int($1), &$2); }
-|      LTYPE1 nonrem   { outcode(int($1), &$2); }
-|      LTYPE2 rimnon   { outcode(int($1), &$2); }
-|      LTYPE3 rimrem   { outcode(int($1), &$2); }
-|      LTYPE4 remrim   { outcode(int($1), &$2); }
-|      LTYPER nonrel   { outcode(int($1), &$2); }
-|      spec1
-|      spec2
-|      LTYPEC spec3    { outcode(int($1), &$2); }
-|      LTYPEN spec4    { outcode(int($1), &$2); }
-|      LTYPES spec5    { outcode(int($1), &$2); }
-|      LTYPEM spec6    { outcode(int($1), &$2); }
-|      LTYPEI spec7    { outcode(int($1), &$2); }
-|      LTYPEXC spec8   { outcode(int($1), &$2); }
-|      LTYPEX spec9    { outcode(int($1), &$2); }
-|      LTYPERT spec10  { outcode(int($1), &$2); }
-|      spec11
-|      LTYPEPC spec12  { outcode(int($1), &$2); }
-|      LTYPEF spec13   { outcode(int($1), &$2); }
-
-nonnon:
-       {
-               $$.from = nullgen;
-               $$.to = nullgen;
-       }
-|      ','
-       {
-               $$.from = nullgen;
-               $$.to = nullgen;
-       }
-
-rimrem:
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-remrim:
-       rem ',' rim
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-rimnon:
-       rim ','
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-
-nonrem:
-       ',' rem
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rem
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-
-nonrel:
-       ',' rel
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rel
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-|      imm ',' rel
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec1: /* DATA */
-       LTYPED nam '/' con ',' imm
-       {
-               var a Addr2
-               a.from = $2
-               a.to = $6
-               outcode(obj.ADATA, &a)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-spec2: /* TEXT */
-       LTYPET mem ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.ATEXT, &Addr2{from: $2, to: $5})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }       
-       }
-|      LTYPET mem ',' con ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.ATEXT, &Addr2{from: $2, to: $7})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-spec11:        /* GLOBL */
-       LTYPEG mem ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode(obj.AGLOBL, &Addr2{from: $2, to: $4})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }       
-       }
-|      LTYPEG mem ',' con ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode(obj.AGLOBL, &Addr2{from: $2, to: $6})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-spec3: /* JMP/CALL */
-       ',' rom
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rom
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-
-spec4: /* NOP */
-       nonnon
-|      nonrem
-
-spec5: /* SHL/SHR */
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-|      rim ',' rem ':' LLREG
-       {
-               $$.from = $1;
-               $$.to = $3;
-               if $$.from.Index != obj.TYPE_NONE {
-                       yyerror("dp shift with lhs index");
-               }
-               $$.from.Index = int16($5);
-       }
-
-spec6: /* MOVW/MOVL */
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-|      rim ',' rem ':' LSREG
-       {
-               $$.from = $1;
-               $$.to = $3;
-               if $$.to.Index != obj.TYPE_NONE {
-                       yyerror("dp move with lhs index");
-               }
-               $$.to.Index = int16($5);
-       }
-
-spec7:
-       rim ','
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec8: /* CMPPS/CMPPD */
-       rem ',' reg ',' con
-       {
-               $$.from = $1;
-               $$.from3 = $3;
-               $$.to.Type = obj.TYPE_MEM; // to give library something to do
-               $$.to.Offset = $5;
-       }
-
-spec9: /* shufl */
-       imm ',' rem ',' reg
-       {
-               $$.from = $1;
-               $$.from3 = $3;
-               $$.to = $5;
-       }
-
-spec10:        /* RET/RETF */
-       {
-               $$.from = nullgen;
-               $$.to = nullgen;
-       }
-|      imm
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-
-spec12:        /* asm.PCDATA */
-       rim ',' rim
-       {
-               if $1.Type != obj.TYPE_CONST || $3.Type != obj.TYPE_CONST {
-                       yyerror("arguments to asm.PCDATA must be integer constants");
-               }
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec13:        /* FUNCDATA */
-       rim ',' rim
-       {
-               if $1.Type != obj.TYPE_CONST {
-                       yyerror("index for FUNCDATA must be integer constant");
-               }
-               if $3.Type != obj.TYPE_MEM || ($3.Name != obj.NAME_EXTERN && $3.Name != obj.NAME_STATIC) {
-                       yyerror("value for FUNCDATA must be symbol reference");
-               }
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-rem:
-       reg
-|      mem
-
-rom:
-       rel
-|      nmem
-|      '*' reg
-       {
-               $$ = $2;
-       }
-|      '*' omem
-       {
-               $$ = $2;
-       }
-|      reg
-|      omem
-
-rim:
-       rem
-|      imm
-
-rel:
-       con '(' LPC ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1 + int64(asm.PC);
-       }
-|      LNAME offset
-       {
-               $1 = asm.LabelLookup($1);
-               $$ = nullgen;
-               if asm.Pass == 2 && $1.Type != LLAB {
-                       yyerror("undefined label: %s", $1.Labelname);
-               }
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1.Value + $2;
-       }
-
-reg:
-       LBREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LFREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LLREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LMREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LSP
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = x86.REG_SP;
-       }
-|      LSREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LXREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-
-imm:
-       '$' con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               $$.Offset = $2;
-       }
-|      '$' nam
-       {
-               $$ = $2;
-               $$.Type = obj.TYPE_ADDR;
-               /*
-               if($2.Type == x86.D_AUTO || $2.Type == x86.D_PARAM)
-                       yyerror("constant cannot be automatic: %s",
-                               $2.sym.Name);
-                */
-       }
-|      '$' LSCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SCONST;
-               $$.Val = ($2+"\x00\x00\x00\x00\x00\x00\x00\x00")[:8]
-       }
-|      '$' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $2;
-       }
-|      '$' '(' LFCONST ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $3;
-       }
-|      '$' '(' '-' LFCONST ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$4;
-       }
-|      '$' '-' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$3;
-       }
-
-mem:
-       omem
-|      nmem
-
-omem:
-       con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Offset = $1;
-       }
-|      con '(' LLREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-       }
-|      con '(' LSP ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = x86.REG_SP
-               $$.Offset = $1;
-       }
-|      con '(' LSREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-       }
-|      con '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Offset = $1;
-               $$.Index = int16($3);
-               $$.Scale = int16($5);
-               checkscale($$.Scale);
-       }
-|      con '(' LLREG ')' '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-               $$.Index = int16($6);
-               $$.Scale = int16($8);
-               checkscale($$.Scale);
-       }
-|      con '(' LLREG ')' '(' LSREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-               $$.Index = int16($6);
-               $$.Scale = int16($8);
-               checkscale($$.Scale);
-       }
-|      '(' LLREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($2)
-       }
-|      '(' LSP ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = x86.REG_SP
-       }
-|      '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Index = int16($2);
-               $$.Scale = int16($4);
-               checkscale($$.Scale);
-       }
-|      '(' LLREG ')' '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($2)
-               $$.Index = int16($5);
-               $$.Scale = int16($7);
-               checkscale($$.Scale);
-       }
-
-nmem:
-       nam
-       {
-               $$ = $1;
-       }
-|      nam '(' LLREG '*' con ')'
-       {
-               $$ = $1;
-               $$.Index = int16($3);
-               $$.Scale = int16($5);
-               checkscale($$.Scale);
-       }
-
-nam:
-       LNAME offset '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Name = int8($4)
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 0);
-               $$.Offset = $2;
-       }
-|      LNAME '<' '>' offset '(' LSB ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Name = obj.NAME_STATIC
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 1);
-               $$.Offset = $4;
-       }
-
-offset:
-       {
-               $$ = 0;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-
-pointer:
-       LSB
-|      LSP
-       {
-               $$ = obj.NAME_AUTO;
-       }
-|      LFP
-
-con:
-       LCONST
-|      LVAR
-       {
-               $$ = $1.Value;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '~' con
-       {
-               $$ = ^$2;
-       }
-|      '(' expr ')'
-       {
-               $$ = $2;
-       }
-
-textsize:
-       LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = $1;
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -$2;
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = $1;
-               $$.Val = int32($3);
-       }
-|      '-' LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -$2;
-               $$.Val = int32($4);
-       }
-
-expr:
-       con
-|      expr '+' expr
-       {
-               $$ = $1 + $3;
-       }
-|      expr '-' expr
-       {
-               $$ = $1 - $3;
-       }
-|      expr '*' expr
-       {
-               $$ = $1 * $3;
-       }
-|      expr '/' expr
-       {
-               $$ = $1 / $3;
-       }
-|      expr '%' expr
-       {
-               $$ = $1 % $3;
-       }
-|      expr '<' '<' expr
-       {
-               $$ = $1 << uint($4);
-       }
-|      expr '>' '>' expr
-       {
-               $$ = $1 >> uint($4);
-       }
-|      expr '&' expr
-       {
-               $$ = $1 & $3;
-       }
-|      expr '^' expr
-       {
-               $$ = $1 ^ $3;
-       }
-|      expr '|' expr
-       {
-               $$ = $1 | $3;
-       }
diff --git a/src/cmd/old6a/lex.go b/src/cmd/old6a/lex.go
deleted file mode 100644 (file)
index 94312ae..0000000
+++ /dev/null
@@ -1,983 +0,0 @@
-// Inferno utils/6a/lex.c
-// http://code.google.com/p/inferno-os/source/browse/utils/6a/lex.c
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:generate go tool yacc a.y
-
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/x86"
-)
-
-var (
-       yyerror  = asm.Yyerror
-       nullgen  obj.Addr
-       stmtline int32
-)
-
-func main() {
-       cinit()
-
-       asm.LSCONST = LSCONST
-       asm.LCONST = LCONST
-       asm.LFCONST = LFCONST
-       asm.LNAME = LNAME
-       asm.LVAR = LVAR
-       asm.LLAB = LLAB
-
-       asm.Thechar = '6'
-       asm.Thestring = "amd64"
-       asm.Thelinkarch = &x86.Linkamd64
-       asm.Arches = map[string]*obj.LinkArch{
-               "amd64p32": &x86.Linkamd64p32,
-       }
-
-       asm.Lexinit = lexinit
-       asm.Cclean = cclean
-       asm.Yyparse = yyparse
-
-       asm.Main()
-}
-
-type yy struct{}
-
-func (yy) Lex(v *yySymType) int {
-       var av asm.Yylval
-       tok := asm.Yylex(&av)
-       v.sym = av.Sym
-       v.lval = av.Lval
-       v.sval = av.Sval
-       v.dval = av.Dval
-       return tok
-}
-
-func (yy) Error(msg string) {
-       asm.Yyerror("%s", msg)
-}
-
-func yyparse() {
-       yyParse(yy{})
-}
-
-var lexinit = []asm.Lextab{
-       {"SP", LSP, obj.NAME_AUTO},
-       {"SB", LSB, obj.NAME_EXTERN},
-       {"FP", LFP, obj.NAME_PARAM},
-       {"PC", LPC, obj.TYPE_BRANCH},
-
-       {"AL", LBREG, x86.REG_AL},
-       {"CL", LBREG, x86.REG_CL},
-       {"DL", LBREG, x86.REG_DL},
-       {"BL", LBREG, x86.REG_BL},
-       /*      "SPB",          LBREG,  REG_SPB,        */
-       {"SIB", LBREG, x86.REG_SIB},
-       {"DIB", LBREG, x86.REG_DIB},
-       {"BPB", LBREG, x86.REG_BPB},
-       {"R8B", LBREG, x86.REG_R8B},
-       {"R9B", LBREG, x86.REG_R9B},
-       {"R10B", LBREG, x86.REG_R10B},
-       {"R11B", LBREG, x86.REG_R11B},
-       {"R12B", LBREG, x86.REG_R12B},
-       {"R13B", LBREG, x86.REG_R13B},
-       {"R14B", LBREG, x86.REG_R14B},
-       {"R15B", LBREG, x86.REG_R15B},
-       {"AH", LBREG, x86.REG_AH},
-       {"CH", LBREG, x86.REG_CH},
-       {"DH", LBREG, x86.REG_DH},
-       {"BH", LBREG, x86.REG_BH},
-       {"AX", LLREG, x86.REG_AX},
-       {"CX", LLREG, x86.REG_CX},
-       {"DX", LLREG, x86.REG_DX},
-       {"BX", LLREG, x86.REG_BX},
-
-       /*      "SP",           LLREG,  REG_SP, */
-       {"BP", LLREG, x86.REG_BP},
-       {"SI", LLREG, x86.REG_SI},
-       {"DI", LLREG, x86.REG_DI},
-       {"R8", LLREG, x86.REG_R8},
-       {"R9", LLREG, x86.REG_R9},
-       {"R10", LLREG, x86.REG_R10},
-       {"R11", LLREG, x86.REG_R11},
-       {"R12", LLREG, x86.REG_R12},
-       {"R13", LLREG, x86.REG_R13},
-       {"R14", LLREG, x86.REG_R14},
-       {"R15", LLREG, x86.REG_R15},
-       {"RARG", LLREG, x86.REGARG},
-       {"F0", LFREG, x86.REG_F0 + 0},
-       {"F1", LFREG, x86.REG_F0 + 1},
-       {"F2", LFREG, x86.REG_F0 + 2},
-       {"F3", LFREG, x86.REG_F0 + 3},
-       {"F4", LFREG, x86.REG_F0 + 4},
-       {"F5", LFREG, x86.REG_F0 + 5},
-       {"F6", LFREG, x86.REG_F0 + 6},
-       {"F7", LFREG, x86.REG_F0 + 7},
-       {"M0", LMREG, x86.REG_M0 + 0},
-       {"M1", LMREG, x86.REG_M0 + 1},
-       {"M2", LMREG, x86.REG_M0 + 2},
-       {"M3", LMREG, x86.REG_M0 + 3},
-       {"M4", LMREG, x86.REG_M0 + 4},
-       {"M5", LMREG, x86.REG_M0 + 5},
-       {"M6", LMREG, x86.REG_M0 + 6},
-       {"M7", LMREG, x86.REG_M0 + 7},
-       {"X0", LXREG, x86.REG_X0 + 0},
-       {"X1", LXREG, x86.REG_X0 + 1},
-       {"X2", LXREG, x86.REG_X0 + 2},
-       {"X3", LXREG, x86.REG_X0 + 3},
-       {"X4", LXREG, x86.REG_X0 + 4},
-       {"X5", LXREG, x86.REG_X0 + 5},
-       {"X6", LXREG, x86.REG_X0 + 6},
-       {"X7", LXREG, x86.REG_X0 + 7},
-       {"X8", LXREG, x86.REG_X0 + 8},
-       {"X9", LXREG, x86.REG_X0 + 9},
-       {"X10", LXREG, x86.REG_X0 + 10},
-       {"X11", LXREG, x86.REG_X0 + 11},
-       {"X12", LXREG, x86.REG_X0 + 12},
-       {"X13", LXREG, x86.REG_X0 + 13},
-       {"X14", LXREG, x86.REG_X0 + 14},
-       {"X15", LXREG, x86.REG_X0 + 15},
-       {"CS", LSREG, x86.REG_CS},
-       {"SS", LSREG, x86.REG_SS},
-       {"DS", LSREG, x86.REG_DS},
-       {"ES", LSREG, x86.REG_ES},
-       {"FS", LSREG, x86.REG_FS},
-       {"GS", LSREG, x86.REG_GS},
-       {"GDTR", LBREG, x86.REG_GDTR},
-       {"IDTR", LBREG, x86.REG_IDTR},
-       {"LDTR", LBREG, x86.REG_LDTR},
-       {"MSW", LBREG, x86.REG_MSW},
-       {"TASK", LBREG, x86.REG_TASK},
-       {"CR0", LBREG, x86.REG_CR + 0},
-       {"CR1", LBREG, x86.REG_CR + 1},
-       {"CR2", LBREG, x86.REG_CR + 2},
-       {"CR3", LBREG, x86.REG_CR + 3},
-       {"CR4", LBREG, x86.REG_CR + 4},
-       {"CR5", LBREG, x86.REG_CR + 5},
-       {"CR6", LBREG, x86.REG_CR + 6},
-       {"CR7", LBREG, x86.REG_CR + 7},
-       {"CR8", LBREG, x86.REG_CR + 8},
-       {"CR9", LBREG, x86.REG_CR + 9},
-       {"CR10", LBREG, x86.REG_CR + 10},
-       {"CR11", LBREG, x86.REG_CR + 11},
-       {"CR12", LBREG, x86.REG_CR + 12},
-       {"CR13", LBREG, x86.REG_CR + 13},
-       {"CR14", LBREG, x86.REG_CR + 14},
-       {"CR15", LBREG, x86.REG_CR + 15},
-       {"DR0", LBREG, x86.REG_DR + 0},
-       {"DR1", LBREG, x86.REG_DR + 1},
-       {"DR2", LBREG, x86.REG_DR + 2},
-       {"DR3", LBREG, x86.REG_DR + 3},
-       {"DR4", LBREG, x86.REG_DR + 4},
-       {"DR5", LBREG, x86.REG_DR + 5},
-       {"DR6", LBREG, x86.REG_DR + 6},
-       {"DR7", LBREG, x86.REG_DR + 7},
-       {"TR0", LBREG, x86.REG_TR + 0},
-       {"TR1", LBREG, x86.REG_TR + 1},
-       {"TR2", LBREG, x86.REG_TR + 2},
-       {"TR3", LBREG, x86.REG_TR + 3},
-       {"TR4", LBREG, x86.REG_TR + 4},
-       {"TR5", LBREG, x86.REG_TR + 5},
-       {"TR6", LBREG, x86.REG_TR + 6},
-       {"TR7", LBREG, x86.REG_TR + 7},
-       {"TLS", LSREG, x86.REG_TLS},
-       {"AAA", LTYPE0, x86.AAAA},
-       {"AAD", LTYPE0, x86.AAAD},
-       {"AAM", LTYPE0, x86.AAAM},
-       {"AAS", LTYPE0, x86.AAAS},
-       {"ADCB", LTYPE3, x86.AADCB},
-       {"ADCL", LTYPE3, x86.AADCL},
-       {"ADCQ", LTYPE3, x86.AADCQ},
-       {"ADCW", LTYPE3, x86.AADCW},
-       {"ADDB", LTYPE3, x86.AADDB},
-       {"ADDL", LTYPE3, x86.AADDL},
-       {"ADDQ", LTYPE3, x86.AADDQ},
-       {"ADDW", LTYPE3, x86.AADDW},
-       {"ADJSP", LTYPE2, x86.AADJSP},
-       {"ANDB", LTYPE3, x86.AANDB},
-       {"ANDL", LTYPE3, x86.AANDL},
-       {"ANDQ", LTYPE3, x86.AANDQ},
-       {"ANDW", LTYPE3, x86.AANDW},
-       {"ARPL", LTYPE3, x86.AARPL},
-       {"BOUNDL", LTYPE3, x86.ABOUNDL},
-       {"BOUNDW", LTYPE3, x86.ABOUNDW},
-       {"BSFL", LTYPE3, x86.ABSFL},
-       {"BSFQ", LTYPE3, x86.ABSFQ},
-       {"BSFW", LTYPE3, x86.ABSFW},
-       {"BSRL", LTYPE3, x86.ABSRL},
-       {"BSRQ", LTYPE3, x86.ABSRQ},
-       {"BSRW", LTYPE3, x86.ABSRW},
-       {"BSWAPL", LTYPE1, x86.ABSWAPL},
-       {"BSWAPQ", LTYPE1, x86.ABSWAPQ},
-       {"BTCL", LTYPE3, x86.ABTCL},
-       {"BTCQ", LTYPE3, x86.ABTCQ},
-       {"BTCW", LTYPE3, x86.ABTCW},
-       {"BTL", LTYPE3, x86.ABTL},
-       {"BTQ", LTYPE3, x86.ABTQ},
-       {"BTRL", LTYPE3, x86.ABTRL},
-       {"BTRQ", LTYPE3, x86.ABTRQ},
-       {"BTRW", LTYPE3, x86.ABTRW},
-       {"BTSL", LTYPE3, x86.ABTSL},
-       {"BTSQ", LTYPE3, x86.ABTSQ},
-       {"BTSW", LTYPE3, x86.ABTSW},
-       {"BTW", LTYPE3, x86.ABTW},
-       {"BYTE", LTYPE2, x86.ABYTE},
-       {"CALL", LTYPEC, obj.ACALL},
-       {"CLC", LTYPE0, x86.ACLC},
-       {"CLD", LTYPE0, x86.ACLD},
-       {"CLI", LTYPE0, x86.ACLI},
-       {"CLTS", LTYPE0, x86.ACLTS},
-       {"CMC", LTYPE0, x86.ACMC},
-       {"CMPB", LTYPE4, x86.ACMPB},
-       {"CMPL", LTYPE4, x86.ACMPL},
-       {"CMPQ", LTYPE4, x86.ACMPQ},
-       {"CMPW", LTYPE4, x86.ACMPW},
-       {"CMPSB", LTYPE0, x86.ACMPSB},
-       {"CMPSL", LTYPE0, x86.ACMPSL},
-       {"CMPSQ", LTYPE0, x86.ACMPSQ},
-       {"CMPSW", LTYPE0, x86.ACMPSW},
-       {"CMPXCHG8B", LTYPE1, x86.ACMPXCHG8B},
-       {"CMPXCHGB", LTYPE3, x86.ACMPXCHGB}, /* LTYPE3? */
-       {"CMPXCHGL", LTYPE3, x86.ACMPXCHGL},
-       {"CMPXCHGQ", LTYPE3, x86.ACMPXCHGQ},
-       {"CMPXCHGW", LTYPE3, x86.ACMPXCHGW},
-       {"CPUID", LTYPE0, x86.ACPUID},
-       {"DAA", LTYPE0, x86.ADAA},
-       {"DAS", LTYPE0, x86.ADAS},
-       {"DATA", LTYPED, obj.ADATA},
-       {"DECB", LTYPE1, x86.ADECB},
-       {"DECL", LTYPE1, x86.ADECL},
-       {"DECQ", LTYPE1, x86.ADECQ},
-       {"DECW", LTYPE1, x86.ADECW},
-       {"DIVB", LTYPE2, x86.ADIVB},
-       {"DIVL", LTYPE2, x86.ADIVL},
-       {"DIVQ", LTYPE2, x86.ADIVQ},
-       {"DIVW", LTYPE2, x86.ADIVW},
-       {"EMMS", LTYPE0, x86.AEMMS},
-       {"END", LTYPE0, obj.AEND},
-       {"ENTER", LTYPE2, x86.AENTER},
-       {"GLOBL", LTYPEG, obj.AGLOBL},
-       {"HLT", LTYPE0, x86.AHLT},
-       {"IDIVB", LTYPE2, x86.AIDIVB},
-       {"IDIVL", LTYPE2, x86.AIDIVL},
-       {"IDIVQ", LTYPE2, x86.AIDIVQ},
-       {"IDIVW", LTYPE2, x86.AIDIVW},
-       {"IMULB", LTYPEI, x86.AIMULB},
-       {"IMULL", LTYPEI, x86.AIMULL},
-       {"IMULQ", LTYPEI, x86.AIMULQ},
-       {"IMUL3Q", LTYPEX, x86.AIMUL3Q},
-       {"IMULW", LTYPEI, x86.AIMULW},
-       {"INB", LTYPE0, x86.AINB},
-       {"INL", LTYPE0, x86.AINL},
-       {"INW", LTYPE0, x86.AINW},
-       {"INCB", LTYPE1, x86.AINCB},
-       {"INCL", LTYPE1, x86.AINCL},
-       {"INCQ", LTYPE1, x86.AINCQ},
-       {"INCW", LTYPE1, x86.AINCW},
-       {"INSB", LTYPE0, x86.AINSB},
-       {"INSL", LTYPE0, x86.AINSL},
-       {"INSW", LTYPE0, x86.AINSW},
-       {"INT", LTYPE2, x86.AINT},
-       {"INTO", LTYPE0, x86.AINTO},
-       {"INVD", LTYPE0, x86.AINVD},
-       {"INVLPG", LTYPE2, x86.AINVLPG},
-       {"IRETL", LTYPE0, x86.AIRETL},
-       {"IRETQ", LTYPE0, x86.AIRETQ},
-       {"IRETW", LTYPE0, x86.AIRETW},
-       {"JOS", LTYPER, x86.AJOS},  /* overflow set (OF = 1) */
-       {"JO", LTYPER, x86.AJOS},   /* alternate */
-       {"JOC", LTYPER, x86.AJOC},  /* overflow clear (OF = 0) */
-       {"JNO", LTYPER, x86.AJOC},  /* alternate */
-       {"JCS", LTYPER, x86.AJCS},  /* carry set (CF = 1) */
-       {"JB", LTYPER, x86.AJCS},   /* alternate */
-       {"JC", LTYPER, x86.AJCS},   /* alternate */
-       {"JNAE", LTYPER, x86.AJCS}, /* alternate */
-       {"JLO", LTYPER, x86.AJCS},  /* alternate */
-       {"JCC", LTYPER, x86.AJCC},  /* carry clear (CF = 0) */
-       {"JAE", LTYPER, x86.AJCC},  /* alternate */
-       {"JNB", LTYPER, x86.AJCC},  /* alternate */
-       {"JNC", LTYPER, x86.AJCC},  /* alternate */
-       {"JHS", LTYPER, x86.AJCC},  /* alternate */
-       {"JEQ", LTYPER, x86.AJEQ},  /* equal (ZF = 1) */
-       {"JE", LTYPER, x86.AJEQ},   /* alternate */
-       {"JZ", LTYPER, x86.AJEQ},   /* alternate */
-       {"JNE", LTYPER, x86.AJNE},  /* not equal (ZF = 0) */
-       {"JNZ", LTYPER, x86.AJNE},  /* alternate */
-       {"JLS", LTYPER, x86.AJLS},  /* lower or same (unsigned) (CF = 1 || ZF = 1) */
-       {"JBE", LTYPER, x86.AJLS},  /* alternate */
-       {"JNA", LTYPER, x86.AJLS},  /* alternate */
-       {"JHI", LTYPER, x86.AJHI},  /* higher (unsigned) (CF = 0 && ZF = 0) */
-       {"JA", LTYPER, x86.AJHI},   /* alternate */
-       {"JNBE", LTYPER, x86.AJHI}, /* alternate */
-       {"JMI", LTYPER, x86.AJMI},  /* negative (minus) (SF = 1) */
-       {"JS", LTYPER, x86.AJMI},   /* alternate */
-       {"JPL", LTYPER, x86.AJPL},  /* non-negative (plus) (SF = 0) */
-       {"JNS", LTYPER, x86.AJPL},  /* alternate */
-       {"JPS", LTYPER, x86.AJPS},  /* parity set (PF = 1) */
-       {"JP", LTYPER, x86.AJPS},   /* alternate */
-       {"JPE", LTYPER, x86.AJPS},  /* alternate */
-       {"JPC", LTYPER, x86.AJPC},  /* parity clear (PF = 0) */
-       {"JNP", LTYPER, x86.AJPC},  /* alternate */
-       {"JPO", LTYPER, x86.AJPC},  /* alternate */
-       {"JLT", LTYPER, x86.AJLT},  /* less than (signed) (SF != OF) */
-       {"JL", LTYPER, x86.AJLT},   /* alternate */
-       {"JNGE", LTYPER, x86.AJLT}, /* alternate */
-       {"JGE", LTYPER, x86.AJGE},  /* greater than or equal (signed) (SF = OF) */
-       {"JNL", LTYPER, x86.AJGE},  /* alternate */
-       {"JLE", LTYPER, x86.AJLE},  /* less than or equal (signed) (ZF = 1 || SF != OF) */
-       {"JNG", LTYPER, x86.AJLE},  /* alternate */
-       {"JGT", LTYPER, x86.AJGT},  /* greater than (signed) (ZF = 0 && SF = OF) */
-       {"JG", LTYPER, x86.AJGT},   /* alternate */
-       {"JNLE", LTYPER, x86.AJGT}, /* alternate */
-       {"JCXZL", LTYPER, x86.AJCXZL},
-       {"JCXZQ", LTYPER, x86.AJCXZQ},
-       {"JMP", LTYPEC, obj.AJMP},
-       {"LAHF", LTYPE0, x86.ALAHF},
-       {"LARL", LTYPE3, x86.ALARL},
-       {"LARW", LTYPE3, x86.ALARW},
-       {"LEAL", LTYPE3, x86.ALEAL},
-       {"LEAQ", LTYPE3, x86.ALEAQ},
-       {"LEAW", LTYPE3, x86.ALEAW},
-       {"LEAVEL", LTYPE0, x86.ALEAVEL},
-       {"LEAVEQ", LTYPE0, x86.ALEAVEQ},
-       {"LEAVEW", LTYPE0, x86.ALEAVEW},
-       {"LFENCE", LTYPE0, x86.ALFENCE},
-       {"LOCK", LTYPE0, x86.ALOCK},
-       {"LODSB", LTYPE0, x86.ALODSB},
-       {"LODSL", LTYPE0, x86.ALODSL},
-       {"LODSQ", LTYPE0, x86.ALODSQ},
-       {"LODSW", LTYPE0, x86.ALODSW},
-       {"LONG", LTYPE2, x86.ALONG},
-       {"LOOP", LTYPER, x86.ALOOP},
-       {"LOOPEQ", LTYPER, x86.ALOOPEQ},
-       {"LOOPNE", LTYPER, x86.ALOOPNE},
-       {"LSLL", LTYPE3, x86.ALSLL},
-       {"LSLW", LTYPE3, x86.ALSLW},
-       {"MFENCE", LTYPE0, x86.AMFENCE},
-       {"MODE", LTYPE2, x86.AMODE},
-       {"MOVB", LTYPE3, x86.AMOVB},
-       {"MOVL", LTYPEM, x86.AMOVL},
-       {"MOVQ", LTYPEM, x86.AMOVQ},
-       {"MOVW", LTYPEM, x86.AMOVW},
-       {"MOVBLSX", LTYPE3, x86.AMOVBLSX},
-       {"MOVBLZX", LTYPE3, x86.AMOVBLZX},
-       {"MOVBQSX", LTYPE3, x86.AMOVBQSX},
-       {"MOVBQZX", LTYPE3, x86.AMOVBQZX},
-       {"MOVBWSX", LTYPE3, x86.AMOVBWSX},
-       {"MOVBWZX", LTYPE3, x86.AMOVBWZX},
-       {"MOVLQSX", LTYPE3, x86.AMOVLQSX},
-       {"MOVLQZX", LTYPE3, x86.AMOVLQZX},
-       {"MOVNTIL", LTYPE3, x86.AMOVNTIL},
-       {"MOVNTIQ", LTYPE3, x86.AMOVNTIQ},
-       {"MOVQL", LTYPE3, x86.AMOVQL},
-       {"MOVWLSX", LTYPE3, x86.AMOVWLSX},
-       {"MOVWLZX", LTYPE3, x86.AMOVWLZX},
-       {"MOVWQSX", LTYPE3, x86.AMOVWQSX},
-       {"MOVWQZX", LTYPE3, x86.AMOVWQZX},
-       {"MOVSB", LTYPE0, x86.AMOVSB},
-       {"MOVSL", LTYPE0, x86.AMOVSL},
-       {"MOVSQ", LTYPE0, x86.AMOVSQ},
-       {"MOVSW", LTYPE0, x86.AMOVSW},
-       {"MULB", LTYPE2, x86.AMULB},
-       {"MULL", LTYPE2, x86.AMULL},
-       {"MULQ", LTYPE2, x86.AMULQ},
-       {"MULW", LTYPE2, x86.AMULW},
-       {"NEGB", LTYPE1, x86.ANEGB},
-       {"NEGL", LTYPE1, x86.ANEGL},
-       {"NEGQ", LTYPE1, x86.ANEGQ},
-       {"NEGW", LTYPE1, x86.ANEGW},
-       {"NOP", LTYPEN, obj.ANOP},
-       {"NOTB", LTYPE1, x86.ANOTB},
-       {"NOTL", LTYPE1, x86.ANOTL},
-       {"NOTQ", LTYPE1, x86.ANOTQ},
-       {"NOTW", LTYPE1, x86.ANOTW},
-       {"ORB", LTYPE3, x86.AORB},
-       {"ORL", LTYPE3, x86.AORL},
-       {"ORQ", LTYPE3, x86.AORQ},
-       {"ORW", LTYPE3, x86.AORW},
-       {"OUTB", LTYPE0, x86.AOUTB},
-       {"OUTL", LTYPE0, x86.AOUTL},
-       {"OUTW", LTYPE0, x86.AOUTW},
-       {"OUTSB", LTYPE0, x86.AOUTSB},
-       {"OUTSL", LTYPE0, x86.AOUTSL},
-       {"OUTSW", LTYPE0, x86.AOUTSW},
-       {"PAUSE", LTYPEN, x86.APAUSE},
-       {"POPAL", LTYPE0, x86.APOPAL},
-       {"POPAW", LTYPE0, x86.APOPAW},
-       {"POPFL", LTYPE0, x86.APOPFL},
-       {"POPFQ", LTYPE0, x86.APOPFQ},
-       {"POPFW", LTYPE0, x86.APOPFW},
-       {"POPL", LTYPE1, x86.APOPL},
-       {"POPQ", LTYPE1, x86.APOPQ},
-       {"POPW", LTYPE1, x86.APOPW},
-       {"PUSHAL", LTYPE0, x86.APUSHAL},
-       {"PUSHAW", LTYPE0, x86.APUSHAW},
-       {"PUSHFL", LTYPE0, x86.APUSHFL},
-       {"PUSHFQ", LTYPE0, x86.APUSHFQ},
-       {"PUSHFW", LTYPE0, x86.APUSHFW},
-       {"PUSHL", LTYPE2, x86.APUSHL},
-       {"PUSHQ", LTYPE2, x86.APUSHQ},
-       {"PUSHW", LTYPE2, x86.APUSHW},
-       {"RCLB", LTYPE3, x86.ARCLB},
-       {"RCLL", LTYPE3, x86.ARCLL},
-       {"RCLQ", LTYPE3, x86.ARCLQ},
-       {"RCLW", LTYPE3, x86.ARCLW},
-       {"RCRB", LTYPE3, x86.ARCRB},
-       {"RCRL", LTYPE3, x86.ARCRL},
-       {"RCRQ", LTYPE3, x86.ARCRQ},
-       {"RCRW", LTYPE3, x86.ARCRW},
-       {"RDMSR", LTYPE0, x86.ARDMSR},
-       {"RDPMC", LTYPE0, x86.ARDPMC},
-       {"RDTSC", LTYPE0, x86.ARDTSC},
-       {"REP", LTYPE0, x86.AREP},
-       {"REPN", LTYPE0, x86.AREPN},
-       {"RET", LTYPE0, obj.ARET},
-       {"RETFL", LTYPERT, x86.ARETFL},
-       {"RETFW", LTYPERT, x86.ARETFW},
-       {"RETFQ", LTYPERT, x86.ARETFQ},
-       {"ROLB", LTYPE3, x86.AROLB},
-       {"ROLL", LTYPE3, x86.AROLL},
-       {"ROLQ", LTYPE3, x86.AROLQ},
-       {"ROLW", LTYPE3, x86.AROLW},
-       {"RORB", LTYPE3, x86.ARORB},
-       {"RORL", LTYPE3, x86.ARORL},
-       {"RORQ", LTYPE3, x86.ARORQ},
-       {"RORW", LTYPE3, x86.ARORW},
-       {"RSM", LTYPE0, x86.ARSM},
-       {"SAHF", LTYPE0, x86.ASAHF},
-       {"SALB", LTYPE3, x86.ASALB},
-       {"SALL", LTYPE3, x86.ASALL},
-       {"SALQ", LTYPE3, x86.ASALQ},
-       {"SALW", LTYPE3, x86.ASALW},
-       {"SARB", LTYPE3, x86.ASARB},
-       {"SARL", LTYPE3, x86.ASARL},
-       {"SARQ", LTYPE3, x86.ASARQ},
-       {"SARW", LTYPE3, x86.ASARW},
-       {"SBBB", LTYPE3, x86.ASBBB},
-       {"SBBL", LTYPE3, x86.ASBBL},
-       {"SBBQ", LTYPE3, x86.ASBBQ},
-       {"SBBW", LTYPE3, x86.ASBBW},
-       {"SCASB", LTYPE0, x86.ASCASB},
-       {"SCASL", LTYPE0, x86.ASCASL},
-       {"SCASQ", LTYPE0, x86.ASCASQ},
-       {"SCASW", LTYPE0, x86.ASCASW},
-       {"SETCC", LTYPE1, x86.ASETCC}, /* see JCC etc above for condition codes */
-       {"SETCS", LTYPE1, x86.ASETCS},
-       {"SETEQ", LTYPE1, x86.ASETEQ},
-       {"SETGE", LTYPE1, x86.ASETGE},
-       {"SETGT", LTYPE1, x86.ASETGT},
-       {"SETHI", LTYPE1, x86.ASETHI},
-       {"SETLE", LTYPE1, x86.ASETLE},
-       {"SETLS", LTYPE1, x86.ASETLS},
-       {"SETLT", LTYPE1, x86.ASETLT},
-       {"SETMI", LTYPE1, x86.ASETMI},
-       {"SETNE", LTYPE1, x86.ASETNE},
-       {"SETOC", LTYPE1, x86.ASETOC},
-       {"SETOS", LTYPE1, x86.ASETOS},
-       {"SETPC", LTYPE1, x86.ASETPC},
-       {"SETPL", LTYPE1, x86.ASETPL},
-       {"SETPS", LTYPE1, x86.ASETPS},
-       {"SFENCE", LTYPE0, x86.ASFENCE},
-       {"CDQ", LTYPE0, x86.ACDQ},
-       {"CWD", LTYPE0, x86.ACWD},
-       {"CQO", LTYPE0, x86.ACQO},
-       {"SHLB", LTYPE3, x86.ASHLB},
-       {"SHLL", LTYPES, x86.ASHLL},
-       {"SHLQ", LTYPES, x86.ASHLQ},
-       {"SHLW", LTYPES, x86.ASHLW},
-       {"SHRB", LTYPE3, x86.ASHRB},
-       {"SHRL", LTYPES, x86.ASHRL},
-       {"SHRQ", LTYPES, x86.ASHRQ},
-       {"SHRW", LTYPES, x86.ASHRW},
-       {"STC", LTYPE0, x86.ASTC},
-       {"STD", LTYPE0, x86.ASTD},
-       {"STI", LTYPE0, x86.ASTI},
-       {"STOSB", LTYPE0, x86.ASTOSB},
-       {"STOSL", LTYPE0, x86.ASTOSL},
-       {"STOSQ", LTYPE0, x86.ASTOSQ},
-       {"STOSW", LTYPE0, x86.ASTOSW},
-       {"SUBB", LTYPE3, x86.ASUBB},
-       {"SUBL", LTYPE3, x86.ASUBL},
-       {"SUBQ", LTYPE3, x86.ASUBQ},
-       {"SUBW", LTYPE3, x86.ASUBW},
-       {"SYSCALL", LTYPE0, x86.ASYSCALL},
-       {"SYSRET", LTYPE0, x86.ASYSRET},
-       {"SWAPGS", LTYPE0, x86.ASWAPGS},
-       {"TESTB", LTYPE3, x86.ATESTB},
-       {"TESTL", LTYPE3, x86.ATESTL},
-       {"TESTQ", LTYPE3, x86.ATESTQ},
-       {"TESTW", LTYPE3, x86.ATESTW},
-       {"TEXT", LTYPET, obj.ATEXT},
-       {"VERR", LTYPE2, x86.AVERR},
-       {"VERW", LTYPE2, x86.AVERW},
-       {"QUAD", LTYPE2, x86.AQUAD},
-       {"WAIT", LTYPE0, x86.AWAIT},
-       {"WBINVD", LTYPE0, x86.AWBINVD},
-       {"WRMSR", LTYPE0, x86.AWRMSR},
-       {"WORD", LTYPE2, x86.AWORD},
-       {"XADDB", LTYPE3, x86.AXADDB},
-       {"XADDL", LTYPE3, x86.AXADDL},
-       {"XADDQ", LTYPE3, x86.AXADDQ},
-       {"XADDW", LTYPE3, x86.AXADDW},
-       {"XCHGB", LTYPE3, x86.AXCHGB},
-       {"XCHGL", LTYPE3, x86.AXCHGL},
-       {"XCHGQ", LTYPE3, x86.AXCHGQ},
-       {"XCHGW", LTYPE3, x86.AXCHGW},
-       {"XLAT", LTYPE2, x86.AXLAT},
-       {"XORB", LTYPE3, x86.AXORB},
-       {"XORL", LTYPE3, x86.AXORL},
-       {"XORQ", LTYPE3, x86.AXORQ},
-       {"XORW", LTYPE3, x86.AXORW},
-       {"CMOVLCC", LTYPE3, x86.ACMOVLCC},
-       {"CMOVLCS", LTYPE3, x86.ACMOVLCS},
-       {"CMOVLEQ", LTYPE3, x86.ACMOVLEQ},
-       {"CMOVLGE", LTYPE3, x86.ACMOVLGE},
-       {"CMOVLGT", LTYPE3, x86.ACMOVLGT},
-       {"CMOVLHI", LTYPE3, x86.ACMOVLHI},
-       {"CMOVLLE", LTYPE3, x86.ACMOVLLE},
-       {"CMOVLLS", LTYPE3, x86.ACMOVLLS},
-       {"CMOVLLT", LTYPE3, x86.ACMOVLLT},
-       {"CMOVLMI", LTYPE3, x86.ACMOVLMI},
-       {"CMOVLNE", LTYPE3, x86.ACMOVLNE},
-       {"CMOVLOC", LTYPE3, x86.ACMOVLOC},
-       {"CMOVLOS", LTYPE3, x86.ACMOVLOS},
-       {"CMOVLPC", LTYPE3, x86.ACMOVLPC},
-       {"CMOVLPL", LTYPE3, x86.ACMOVLPL},
-       {"CMOVLPS", LTYPE3, x86.ACMOVLPS},
-       {"CMOVQCC", LTYPE3, x86.ACMOVQCC},
-       {"CMOVQCS", LTYPE3, x86.ACMOVQCS},
-       {"CMOVQEQ", LTYPE3, x86.ACMOVQEQ},
-       {"CMOVQGE", LTYPE3, x86.ACMOVQGE},
-       {"CMOVQGT", LTYPE3, x86.ACMOVQGT},
-       {"CMOVQHI", LTYPE3, x86.ACMOVQHI},
-       {"CMOVQLE", LTYPE3, x86.ACMOVQLE},
-       {"CMOVQLS", LTYPE3, x86.ACMOVQLS},
-       {"CMOVQLT", LTYPE3, x86.ACMOVQLT},
-       {"CMOVQMI", LTYPE3, x86.ACMOVQMI},
-       {"CMOVQNE", LTYPE3, x86.ACMOVQNE},
-       {"CMOVQOC", LTYPE3, x86.ACMOVQOC},
-       {"CMOVQOS", LTYPE3, x86.ACMOVQOS},
-       {"CMOVQPC", LTYPE3, x86.ACMOVQPC},
-       {"CMOVQPL", LTYPE3, x86.ACMOVQPL},
-       {"CMOVQPS", LTYPE3, x86.ACMOVQPS},
-       {"CMOVWCC", LTYPE3, x86.ACMOVWCC},
-       {"CMOVWCS", LTYPE3, x86.ACMOVWCS},
-       {"CMOVWEQ", LTYPE3, x86.ACMOVWEQ},
-       {"CMOVWGE", LTYPE3, x86.ACMOVWGE},
-       {"CMOVWGT", LTYPE3, x86.ACMOVWGT},
-       {"CMOVWHI", LTYPE3, x86.ACMOVWHI},
-       {"CMOVWLE", LTYPE3, x86.ACMOVWLE},
-       {"CMOVWLS", LTYPE3, x86.ACMOVWLS},
-       {"CMOVWLT", LTYPE3, x86.ACMOVWLT},
-       {"CMOVWMI", LTYPE3, x86.ACMOVWMI},
-       {"CMOVWNE", LTYPE3, x86.ACMOVWNE},
-       {"CMOVWOC", LTYPE3, x86.ACMOVWOC},
-       {"CMOVWOS", LTYPE3, x86.ACMOVWOS},
-       {"CMOVWPC", LTYPE3, x86.ACMOVWPC},
-       {"CMOVWPL", LTYPE3, x86.ACMOVWPL},
-       {"CMOVWPS", LTYPE3, x86.ACMOVWPS},
-       {"FMOVB", LTYPE3, x86.AFMOVB},
-       {"FMOVBP", LTYPE3, x86.AFMOVBP},
-       {"FMOVD", LTYPE3, x86.AFMOVD},
-       {"FMOVDP", LTYPE3, x86.AFMOVDP},
-       {"FMOVF", LTYPE3, x86.AFMOVF},
-       {"FMOVFP", LTYPE3, x86.AFMOVFP},
-       {"FMOVL", LTYPE3, x86.AFMOVL},
-       {"FMOVLP", LTYPE3, x86.AFMOVLP},
-       {"FMOVV", LTYPE3, x86.AFMOVV},
-       {"FMOVVP", LTYPE3, x86.AFMOVVP},
-       {"FMOVW", LTYPE3, x86.AFMOVW},
-       {"FMOVWP", LTYPE3, x86.AFMOVWP},
-       {"FMOVX", LTYPE3, x86.AFMOVX},
-       {"FMOVXP", LTYPE3, x86.AFMOVXP},
-       {"FCOMB", LTYPE3, x86.AFCOMB},
-       {"FCOMBP", LTYPE3, x86.AFCOMBP},
-       {"FCOMD", LTYPE3, x86.AFCOMD},
-       {"FCOMDP", LTYPE3, x86.AFCOMDP},
-       {"FCOMDPP", LTYPE3, x86.AFCOMDPP},
-       {"FCOMF", LTYPE3, x86.AFCOMF},
-       {"FCOMFP", LTYPE3, x86.AFCOMFP},
-       {"FCOML", LTYPE3, x86.AFCOML},
-       {"FCOMLP", LTYPE3, x86.AFCOMLP},
-       {"FCOMW", LTYPE3, x86.AFCOMW},
-       {"FCOMWP", LTYPE3, x86.AFCOMWP},
-       {"FUCOM", LTYPE3, x86.AFUCOM},
-       {"FUCOMP", LTYPE3, x86.AFUCOMP},
-       {"FUCOMPP", LTYPE3, x86.AFUCOMPP},
-       {"FADDW", LTYPE3, x86.AFADDW},
-       {"FADDL", LTYPE3, x86.AFADDL},
-       {"FADDF", LTYPE3, x86.AFADDF},
-       {"FADDD", LTYPE3, x86.AFADDD},
-       {"FADDDP", LTYPE3, x86.AFADDDP},
-       {"FSUBDP", LTYPE3, x86.AFSUBDP},
-       {"FSUBW", LTYPE3, x86.AFSUBW},
-       {"FSUBL", LTYPE3, x86.AFSUBL},
-       {"FSUBF", LTYPE3, x86.AFSUBF},
-       {"FSUBD", LTYPE3, x86.AFSUBD},
-       {"FSUBRDP", LTYPE3, x86.AFSUBRDP},
-       {"FSUBRW", LTYPE3, x86.AFSUBRW},
-       {"FSUBRL", LTYPE3, x86.AFSUBRL},
-       {"FSUBRF", LTYPE3, x86.AFSUBRF},
-       {"FSUBRD", LTYPE3, x86.AFSUBRD},
-       {"FMULDP", LTYPE3, x86.AFMULDP},
-       {"FMULW", LTYPE3, x86.AFMULW},
-       {"FMULL", LTYPE3, x86.AFMULL},
-       {"FMULF", LTYPE3, x86.AFMULF},
-       {"FMULD", LTYPE3, x86.AFMULD},
-       {"FDIVDP", LTYPE3, x86.AFDIVDP},
-       {"FDIVW", LTYPE3, x86.AFDIVW},
-       {"FDIVL", LTYPE3, x86.AFDIVL},
-       {"FDIVF", LTYPE3, x86.AFDIVF},
-       {"FDIVD", LTYPE3, x86.AFDIVD},
-       {"FDIVRDP", LTYPE3, x86.AFDIVRDP},
-       {"FDIVRW", LTYPE3, x86.AFDIVRW},
-       {"FDIVRL", LTYPE3, x86.AFDIVRL},
-       {"FDIVRF", LTYPE3, x86.AFDIVRF},
-       {"FDIVRD", LTYPE3, x86.AFDIVRD},
-       {"FXCHD", LTYPE3, x86.AFXCHD},
-       {"FFREE", LTYPE1, x86.AFFREE},
-       {"FLDCW", LTYPE2, x86.AFLDCW},
-       {"FLDENV", LTYPE1, x86.AFLDENV},
-       {"FRSTOR", LTYPE2, x86.AFRSTOR},
-       {"FSAVE", LTYPE1, x86.AFSAVE},
-       {"FSTCW", LTYPE1, x86.AFSTCW},
-       {"FSTENV", LTYPE1, x86.AFSTENV},
-       {"FSTSW", LTYPE1, x86.AFSTSW},
-       {"F2XM1", LTYPE0, x86.AF2XM1},
-       {"FABS", LTYPE0, x86.AFABS},
-       {"FCHS", LTYPE0, x86.AFCHS},
-       {"FCLEX", LTYPE0, x86.AFCLEX},
-       {"FCOS", LTYPE0, x86.AFCOS},
-       {"FDECSTP", LTYPE0, x86.AFDECSTP},
-       {"FINCSTP", LTYPE0, x86.AFINCSTP},
-       {"FINIT", LTYPE0, x86.AFINIT},
-       {"FLD1", LTYPE0, x86.AFLD1},
-       {"FLDL2E", LTYPE0, x86.AFLDL2E},
-       {"FLDL2T", LTYPE0, x86.AFLDL2T},
-       {"FLDLG2", LTYPE0, x86.AFLDLG2},
-       {"FLDLN2", LTYPE0, x86.AFLDLN2},
-       {"FLDPI", LTYPE0, x86.AFLDPI},
-       {"FLDZ", LTYPE0, x86.AFLDZ},
-       {"FNOP", LTYPE0, x86.AFNOP},
-       {"FPATAN", LTYPE0, x86.AFPATAN},
-       {"FPREM", LTYPE0, x86.AFPREM},
-       {"FPREM1", LTYPE0, x86.AFPREM1},
-       {"FPTAN", LTYPE0, x86.AFPTAN},
-       {"FRNDINT", LTYPE0, x86.AFRNDINT},
-       {"FSCALE", LTYPE0, x86.AFSCALE},
-       {"FSIN", LTYPE0, x86.AFSIN},
-       {"FSINCOS", LTYPE0, x86.AFSINCOS},
-       {"FSQRT", LTYPE0, x86.AFSQRT},
-       {"FTST", LTYPE0, x86.AFTST},
-       {"FXAM", LTYPE0, x86.AFXAM},
-       {"FXTRACT", LTYPE0, x86.AFXTRACT},
-       {"FYL2X", LTYPE0, x86.AFYL2X},
-       {"FYL2XP1", LTYPE0, x86.AFYL2XP1},
-       {"ADDPD", LTYPE3, x86.AADDPD},
-       {"ADDPS", LTYPE3, x86.AADDPS},
-       {"ADDSD", LTYPE3, x86.AADDSD},
-       {"ADDSS", LTYPE3, x86.AADDSS},
-       {"ANDNPD", LTYPE3, x86.AANDNPD},
-       {"ANDNPS", LTYPE3, x86.AANDNPS},
-       {"ANDPD", LTYPE3, x86.AANDPD},
-       {"ANDPS", LTYPE3, x86.AANDPS},
-       {"CMPPD", LTYPEXC, x86.ACMPPD},
-       {"CMPPS", LTYPEXC, x86.ACMPPS},
-       {"CMPSD", LTYPEXC, x86.ACMPSD},
-       {"CMPSS", LTYPEXC, x86.ACMPSS},
-       {"COMISD", LTYPE3, x86.ACOMISD},
-       {"COMISS", LTYPE3, x86.ACOMISS},
-       {"CVTPL2PD", LTYPE3, x86.ACVTPL2PD},
-       {"CVTPL2PS", LTYPE3, x86.ACVTPL2PS},
-       {"CVTPD2PL", LTYPE3, x86.ACVTPD2PL},
-       {"CVTPD2PS", LTYPE3, x86.ACVTPD2PS},
-       {"CVTPS2PL", LTYPE3, x86.ACVTPS2PL},
-       {"PF2IW", LTYPE3, x86.APF2IW},
-       {"PF2IL", LTYPE3, x86.APF2IL},
-       {"PF2ID", LTYPE3, x86.APF2IL}, /* syn */
-       {"PI2FL", LTYPE3, x86.API2FL},
-       {"PI2FD", LTYPE3, x86.API2FL}, /* syn */
-       {"PI2FW", LTYPE3, x86.API2FW},
-       {"CVTPS2PD", LTYPE3, x86.ACVTPS2PD},
-       {"CVTSD2SL", LTYPE3, x86.ACVTSD2SL},
-       {"CVTSD2SQ", LTYPE3, x86.ACVTSD2SQ},
-       {"CVTSD2SS", LTYPE3, x86.ACVTSD2SS},
-       {"CVTSL2SD", LTYPE3, x86.ACVTSL2SD},
-       {"CVTSQ2SD", LTYPE3, x86.ACVTSQ2SD},
-       {"CVTSL2SS", LTYPE3, x86.ACVTSL2SS},
-       {"CVTSQ2SS", LTYPE3, x86.ACVTSQ2SS},
-       {"CVTSS2SD", LTYPE3, x86.ACVTSS2SD},
-       {"CVTSS2SL", LTYPE3, x86.ACVTSS2SL},
-       {"CVTSS2SQ", LTYPE3, x86.ACVTSS2SQ},
-       {"CVTTPD2PL", LTYPE3, x86.ACVTTPD2PL},
-       {"CVTTPS2PL", LTYPE3, x86.ACVTTPS2PL},
-       {"CVTTSD2SL", LTYPE3, x86.ACVTTSD2SL},
-       {"CVTTSD2SQ", LTYPE3, x86.ACVTTSD2SQ},
-       {"CVTTSS2SL", LTYPE3, x86.ACVTTSS2SL},
-       {"CVTTSS2SQ", LTYPE3, x86.ACVTTSS2SQ},
-       {"DIVPD", LTYPE3, x86.ADIVPD},
-       {"DIVPS", LTYPE3, x86.ADIVPS},
-       {"DIVSD", LTYPE3, x86.ADIVSD},
-       {"DIVSS", LTYPE3, x86.ADIVSS},
-       {"FXRSTOR", LTYPE2, x86.AFXRSTOR},
-       {"FXRSTOR64", LTYPE2, x86.AFXRSTOR64},
-       {"FXSAVE", LTYPE1, x86.AFXSAVE},
-       {"FXSAVE64", LTYPE1, x86.AFXSAVE64},
-       {"LDMXCSR", LTYPE2, x86.ALDMXCSR},
-       {"MASKMOVOU", LTYPE3, x86.AMASKMOVOU},
-       {"MASKMOVDQU", LTYPE3, x86.AMASKMOVOU}, /* syn */
-       {"MASKMOVQ", LTYPE3, x86.AMASKMOVQ},
-       {"MAXPD", LTYPE3, x86.AMAXPD},
-       {"MAXPS", LTYPE3, x86.AMAXPS},
-       {"MAXSD", LTYPE3, x86.AMAXSD},
-       {"MAXSS", LTYPE3, x86.AMAXSS},
-       {"MINPD", LTYPE3, x86.AMINPD},
-       {"MINPS", LTYPE3, x86.AMINPS},
-       {"MINSD", LTYPE3, x86.AMINSD},
-       {"MINSS", LTYPE3, x86.AMINSS},
-       {"MOVAPD", LTYPE3, x86.AMOVAPD},
-       {"MOVAPS", LTYPE3, x86.AMOVAPS},
-       {"MOVD", LTYPE3, x86.AMOVQ},    /* syn */
-       {"MOVDQ2Q", LTYPE3, x86.AMOVQ}, /* syn */
-       {"MOVO", LTYPE3, x86.AMOVO},
-       {"MOVOA", LTYPE3, x86.AMOVO}, /* syn */
-       {"MOVOU", LTYPE3, x86.AMOVOU},
-       {"MOVHLPS", LTYPE3, x86.AMOVHLPS},
-       {"MOVHPD", LTYPE3, x86.AMOVHPD},
-       {"MOVHPS", LTYPE3, x86.AMOVHPS},
-       {"MOVLHPS", LTYPE3, x86.AMOVLHPS},
-       {"MOVLPD", LTYPE3, x86.AMOVLPD},
-       {"MOVLPS", LTYPE3, x86.AMOVLPS},
-       {"MOVMSKPD", LTYPE3, x86.AMOVMSKPD},
-       {"MOVMSKPS", LTYPE3, x86.AMOVMSKPS},
-       {"MOVNTO", LTYPE3, x86.AMOVNTO},
-       {"MOVNTDQ", LTYPE3, x86.AMOVNTO}, /* syn */
-       {"MOVNTPD", LTYPE3, x86.AMOVNTPD},
-       {"MOVNTPS", LTYPE3, x86.AMOVNTPS},
-       {"MOVNTQ", LTYPE3, x86.AMOVNTQ},
-       {"MOVQOZX", LTYPE3, x86.AMOVQOZX},
-       {"MOVSD", LTYPE3, x86.AMOVSD},
-       {"MOVSS", LTYPE3, x86.AMOVSS},
-       {"MOVUPD", LTYPE3, x86.AMOVUPD},
-       {"MOVUPS", LTYPE3, x86.AMOVUPS},
-       {"MULPD", LTYPE3, x86.AMULPD},
-       {"MULPS", LTYPE3, x86.AMULPS},
-       {"MULSD", LTYPE3, x86.AMULSD},
-       {"MULSS", LTYPE3, x86.AMULSS},
-       {"ORPD", LTYPE3, x86.AORPD},
-       {"ORPS", LTYPE3, x86.AORPS},
-       {"PACKSSLW", LTYPE3, x86.APACKSSLW},
-       {"PACKSSWB", LTYPE3, x86.APACKSSWB},
-       {"PACKUSWB", LTYPE3, x86.APACKUSWB},
-       {"PADDB", LTYPE3, x86.APADDB},
-       {"PADDL", LTYPE3, x86.APADDL},
-       {"PADDQ", LTYPE3, x86.APADDQ},
-       {"PADDSB", LTYPE3, x86.APADDSB},
-       {"PADDSW", LTYPE3, x86.APADDSW},
-       {"PADDUSB", LTYPE3, x86.APADDUSB},
-       {"PADDUSW", LTYPE3, x86.APADDUSW},
-       {"PADDW", LTYPE3, x86.APADDW},
-       {"PAND", LTYPE3, x86.APAND},
-       {"PANDB", LTYPE3, x86.APANDB},
-       {"PANDL", LTYPE3, x86.APANDL},
-       {"PANDSB", LTYPE3, x86.APANDSB},
-       {"PANDSW", LTYPE3, x86.APANDSW},
-       {"PANDUSB", LTYPE3, x86.APANDUSB},
-       {"PANDUSW", LTYPE3, x86.APANDUSW},
-       {"PANDW", LTYPE3, x86.APANDW},
-       {"PANDN", LTYPE3, x86.APANDN},
-       {"PAVGB", LTYPE3, x86.APAVGB},
-       {"PAVGW", LTYPE3, x86.APAVGW},
-       {"PCMPEQB", LTYPE3, x86.APCMPEQB},
-       {"PCMPEQL", LTYPE3, x86.APCMPEQL},
-       {"PCMPEQW", LTYPE3, x86.APCMPEQW},
-       {"PCMPGTB", LTYPE3, x86.APCMPGTB},
-       {"PCMPGTL", LTYPE3, x86.APCMPGTL},
-       {"PCMPGTW", LTYPE3, x86.APCMPGTW},
-       {"PEXTRW", LTYPEX, x86.APEXTRW},
-       {"PINSRW", LTYPEX, x86.APINSRW},
-       {"PINSRD", LTYPEX, x86.APINSRD},
-       {"PINSRQ", LTYPEX, x86.APINSRQ},
-       {"PMADDWL", LTYPE3, x86.APMADDWL},
-       {"PMAXSW", LTYPE3, x86.APMAXSW},
-       {"PMAXUB", LTYPE3, x86.APMAXUB},
-       {"PMINSW", LTYPE3, x86.APMINSW},
-       {"PMINUB", LTYPE3, x86.APMINUB},
-       {"PMOVMSKB", LTYPE3, x86.APMOVMSKB},
-       {"PMULHRW", LTYPE3, x86.APMULHRW},
-       {"PMULHUW", LTYPE3, x86.APMULHUW},
-       {"PMULHW", LTYPE3, x86.APMULHW},
-       {"PMULLW", LTYPE3, x86.APMULLW},
-       {"PMULULQ", LTYPE3, x86.APMULULQ},
-       {"POR", LTYPE3, x86.APOR},
-       {"PSADBW", LTYPE3, x86.APSADBW},
-       {"PSHUFHW", LTYPEX, x86.APSHUFHW},
-       {"PSHUFL", LTYPEX, x86.APSHUFL},
-       {"PSHUFLW", LTYPEX, x86.APSHUFLW},
-       {"PSHUFW", LTYPEX, x86.APSHUFW},
-       {"PSHUFB", LTYPEM, x86.APSHUFB},
-       {"PSLLO", LTYPE3, x86.APSLLO},
-       {"PSLLDQ", LTYPE3, x86.APSLLO}, /* syn */
-       {"PSLLL", LTYPE3, x86.APSLLL},
-       {"PSLLQ", LTYPE3, x86.APSLLQ},
-       {"PSLLW", LTYPE3, x86.APSLLW},
-       {"PSRAL", LTYPE3, x86.APSRAL},
-       {"PSRAW", LTYPE3, x86.APSRAW},
-       {"PSRLO", LTYPE3, x86.APSRLO},
-       {"PSRLDQ", LTYPE3, x86.APSRLO}, /* syn */
-       {"PSRLL", LTYPE3, x86.APSRLL},
-       {"PSRLQ", LTYPE3, x86.APSRLQ},
-       {"PSRLW", LTYPE3, x86.APSRLW},
-       {"PSUBB", LTYPE3, x86.APSUBB},
-       {"PSUBL", LTYPE3, x86.APSUBL},
-       {"PSUBQ", LTYPE3, x86.APSUBQ},
-       {"PSUBSB", LTYPE3, x86.APSUBSB},
-       {"PSUBSW", LTYPE3, x86.APSUBSW},
-       {"PSUBUSB", LTYPE3, x86.APSUBUSB},
-       {"PSUBUSW", LTYPE3, x86.APSUBUSW},
-       {"PSUBW", LTYPE3, x86.APSUBW},
-       {"PUNPCKHBW", LTYPE3, x86.APUNPCKHBW},
-       {"PUNPCKHLQ", LTYPE3, x86.APUNPCKHLQ},
-       {"PUNPCKHQDQ", LTYPE3, x86.APUNPCKHQDQ},
-       {"PUNPCKHWL", LTYPE3, x86.APUNPCKHWL},
-       {"PUNPCKLBW", LTYPE3, x86.APUNPCKLBW},
-       {"PUNPCKLLQ", LTYPE3, x86.APUNPCKLLQ},
-       {"PUNPCKLQDQ", LTYPE3, x86.APUNPCKLQDQ},
-       {"PUNPCKLWL", LTYPE3, x86.APUNPCKLWL},
-       {"PXOR", LTYPE3, x86.APXOR},
-       {"RCPPS", LTYPE3, x86.ARCPPS},
-       {"RCPSS", LTYPE3, x86.ARCPSS},
-       {"RSQRTPS", LTYPE3, x86.ARSQRTPS},
-       {"RSQRTSS", LTYPE3, x86.ARSQRTSS},
-       {"SHUFPD", LTYPEX, x86.ASHUFPD},
-       {"SHUFPS", LTYPEX, x86.ASHUFPS},
-       {"SQRTPD", LTYPE3, x86.ASQRTPD},
-       {"SQRTPS", LTYPE3, x86.ASQRTPS},
-       {"SQRTSD", LTYPE3, x86.ASQRTSD},
-       {"SQRTSS", LTYPE3, x86.ASQRTSS},
-       {"STMXCSR", LTYPE1, x86.ASTMXCSR},
-       {"SUBPD", LTYPE3, x86.ASUBPD},
-       {"SUBPS", LTYPE3, x86.ASUBPS},
-       {"SUBSD", LTYPE3, x86.ASUBSD},
-       {"SUBSS", LTYPE3, x86.ASUBSS},
-       {"UCOMISD", LTYPE3, x86.AUCOMISD},
-       {"UCOMISS", LTYPE3, x86.AUCOMISS},
-       {"UNPCKHPD", LTYPE3, x86.AUNPCKHPD},
-       {"UNPCKHPS", LTYPE3, x86.AUNPCKHPS},
-       {"UNPCKLPD", LTYPE3, x86.AUNPCKLPD},
-       {"UNPCKLPS", LTYPE3, x86.AUNPCKLPS},
-       {"XORPD", LTYPE3, x86.AXORPD},
-       {"XORPS", LTYPE3, x86.AXORPS},
-       {"CRC32B", LTYPE4, x86.ACRC32B},
-       {"CRC32Q", LTYPE4, x86.ACRC32Q},
-       {"PREFETCHT0", LTYPE2, x86.APREFETCHT0},
-       {"PREFETCHT1", LTYPE2, x86.APREFETCHT1},
-       {"PREFETCHT2", LTYPE2, x86.APREFETCHT2},
-       {"PREFETCHNTA", LTYPE2, x86.APREFETCHNTA},
-       {"UNDEF", LTYPE0, obj.AUNDEF},
-       {"AESENC", LTYPE3, x86.AAESENC},
-       {"AESENCLAST", LTYPE3, x86.AAESENCLAST},
-       {"AESDEC", LTYPE3, x86.AAESDEC},
-       {"AESDECLAST", LTYPE3, x86.AAESDECLAST},
-       {"AESIMC", LTYPE3, x86.AAESIMC},
-       {"AESKEYGENASSIST", LTYPEX, x86.AAESKEYGENASSIST},
-       {"PSHUFD", LTYPEX, x86.APSHUFD},
-       {"USEFIELD", LTYPEN, obj.AUSEFIELD},
-       {"PCLMULQDQ", LTYPEX, x86.APCLMULQDQ},
-       {"PCDATA", LTYPEPC, obj.APCDATA},
-       {"FUNCDATA", LTYPEF, obj.AFUNCDATA},
-}
-
-func cinit() {
-}
-
-func checkscale(scale int16) {
-       switch scale {
-       case 1,
-               2,
-               4,
-               8:
-               return
-       }
-
-       yyerror("scale must be 1248: %d", scale)
-}
-
-func cclean() {
-       var g2 Addr2
-
-       g2.from = nullgen
-       g2.to = nullgen
-       outcode(obj.AEND, &g2)
-}
-
-var lastpc *obj.Prog
-
-type Addr2 struct {
-       from  obj.Addr
-       from3 obj.Addr
-       to    obj.Addr
-}
-
-func outcode(a int, g2 *Addr2) {
-       var p *obj.Prog
-       var pl *obj.Plist
-
-       if asm.Pass == 1 {
-               goto out
-       }
-
-       p = new(obj.Prog)
-       *p = obj.Prog{}
-       p.Ctxt = asm.Ctxt
-       p.As = int16(a)
-       p.Lineno = stmtline
-       p.From = g2.from
-       if g2.from3.Type != 0 {
-               p.From3 = new(obj.Addr)
-               *p.From3 = g2.from3
-       }
-       p.To = g2.to
-       p.Pc = int64(asm.PC)
-
-       if lastpc == nil {
-               pl = obj.Linknewplist(asm.Ctxt)
-               pl.Firstpc = p
-       } else {
-
-               lastpc.Link = p
-       }
-       lastpc = p
-
-out:
-       if a != obj.AGLOBL && a != obj.ADATA {
-               asm.PC++
-       }
-}
diff --git a/src/cmd/old6a/y.go b/src/cmd/old6a/y.go
deleted file mode 100644 (file)
index 9a3cf6a..0000000
+++ /dev/null
@@ -1,1530 +0,0 @@
-//line a.y:32
-package main
-
-import __yyfmt__ "fmt"
-
-//line a.y:32
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/x86"
-)
-
-//line a.y:41
-type yySymType struct {
-       yys   int
-       sym   *asm.Sym
-       lval  int64
-       dval  float64
-       sval  string
-       addr  obj.Addr
-       addr2 Addr2
-}
-
-const LTYPE0 = 57346
-const LTYPE1 = 57347
-const LTYPE2 = 57348
-const LTYPE3 = 57349
-const LTYPE4 = 57350
-const LTYPEC = 57351
-const LTYPED = 57352
-const LTYPEN = 57353
-const LTYPER = 57354
-const LTYPET = 57355
-const LTYPEG = 57356
-const LTYPEPC = 57357
-const LTYPES = 57358
-const LTYPEM = 57359
-const LTYPEI = 57360
-const LTYPEXC = 57361
-const LTYPEX = 57362
-const LTYPERT = 57363
-const LTYPEF = 57364
-const LCONST = 57365
-const LFP = 57366
-const LPC = 57367
-const LSB = 57368
-const LBREG = 57369
-const LLREG = 57370
-const LSREG = 57371
-const LFREG = 57372
-const LMREG = 57373
-const LXREG = 57374
-const LFCONST = 57375
-const LSCONST = 57376
-const LSP = 57377
-const LNAME = 57378
-const LLAB = 57379
-const LVAR = 57380
-
-var yyToknames = [...]string{
-       "$end",
-       "error",
-       "$unk",
-       "'|'",
-       "'^'",
-       "'&'",
-       "'<'",
-       "'>'",
-       "'+'",
-       "'-'",
-       "'*'",
-       "'/'",
-       "'%'",
-       "LTYPE0",
-       "LTYPE1",
-       "LTYPE2",
-       "LTYPE3",
-       "LTYPE4",
-       "LTYPEC",
-       "LTYPED",
-       "LTYPEN",
-       "LTYPER",
-       "LTYPET",
-       "LTYPEG",
-       "LTYPEPC",
-       "LTYPES",
-       "LTYPEM",
-       "LTYPEI",
-       "LTYPEXC",
-       "LTYPEX",
-       "LTYPERT",
-       "LTYPEF",
-       "LCONST",
-       "LFP",
-       "LPC",
-       "LSB",
-       "LBREG",
-       "LLREG",
-       "LSREG",
-       "LFREG",
-       "LMREG",
-       "LXREG",
-       "LFCONST",
-       "LSCONST",
-       "LSP",
-       "LNAME",
-       "LLAB",
-       "LVAR",
-       "':'",
-       "';'",
-       "'='",
-       "','",
-       "'$'",
-       "'('",
-       "')'",
-       "'~'",
-}
-var yyStatenames = [...]string{}
-
-const yyEofCode = 1
-const yyErrCode = 2
-const yyMaxDepth = 200
-
-//line yacctab:1
-var yyExca = [...]int{
-       -1, 1,
-       1, -1,
-       -2, 2,
-}
-
-const yyNprod = 133
-const yyPrivate = 57344
-
-var yyTokenNames []string
-var yyStates []string
-
-const yyLast = 593
-
-var yyAct = [...]int{
-
-       52, 227, 41, 3, 80, 208, 269, 64, 123, 50,
-       51, 79, 54, 170, 268, 74, 267, 118, 85, 72,
-       83, 263, 73, 255, 253, 241, 239, 84, 81, 237,
-       221, 100, 102, 112, 219, 210, 112, 209, 171, 240,
-       234, 107, 211, 62, 174, 143, 138, 119, 65, 207,
-       111, 115, 249, 113, 112, 231, 67, 169, 120, 121,
-       122, 230, 226, 92, 94, 96, 128, 225, 224, 154,
-       104, 106, 74, 58, 57, 153, 136, 112, 129, 85,
-       151, 83, 150, 149, 139, 141, 148, 147, 84, 81,
-       140, 146, 142, 145, 137, 144, 63, 55, 58, 57,
-       135, 43, 45, 48, 44, 46, 49, 40, 134, 47,
-       69, 127, 56, 37, 155, 40, 35, 34, 53, 98,
-       59, 31, 55, 32, 33, 223, 176, 177, 222, 217,
-       60, 215, 220, 112, 120, 243, 114, 56, 74, 242,
-       216, 236, 183, 76, 173, 59, 58, 57, 256, 166,
-       168, 188, 184, 192, 194, 196, 167, 112, 112, 112,
-       112, 112, 195, 229, 112, 112, 112, 258, 58, 57,
-       55, 212, 251, 252, 197, 198, 199, 200, 201, 182,
-       120, 204, 205, 206, 218, 56, 228, 114, 264, 257,
-       65, 76, 55, 59, 190, 191, 184, 248, 38, 166,
-       168, 152, 42, 112, 112, 75, 167, 56, 36, 235,
-       261, 71, 65, 76, 238, 59, 124, 89, 125, 126,
-       232, 233, 158, 159, 160, 244, 260, 88, 245, 254,
-       213, 181, 108, 109, 246, 125, 126, 247, 203, 250,
-       175, 202, 185, 186, 187, 25, 189, 16, 15, 6,
-       110, 259, 7, 2, 1, 262, 156, 157, 158, 159,
-       160, 265, 266, 105, 9, 10, 11, 12, 13, 17,
-       28, 18, 14, 29, 30, 26, 19, 20, 21, 22,
-       23, 24, 27, 58, 57, 82, 165, 164, 163, 161,
-       162, 156, 157, 158, 159, 160, 4, 103, 8, 101,
-       5, 99, 97, 58, 57, 95, 93, 55, 91, 87,
-       77, 43, 45, 48, 44, 46, 49, 68, 66, 47,
-       86, 61, 56, 70, 214, 0, 78, 55, 53, 0,
-       59, 43, 45, 48, 44, 46, 49, 172, 0, 47,
-       60, 0, 56, 58, 57, 82, 0, 65, 53, 0,
-       59, 43, 45, 48, 44, 46, 49, 0, 0, 47,
-       0, 0, 0, 58, 57, 0, 0, 55, 0, 0,
-       0, 43, 45, 48, 44, 46, 49, 0, 0, 47,
-       86, 0, 56, 58, 57, 0, 0, 55, 53, 0,
-       59, 43, 45, 48, 44, 46, 49, 0, 0, 47,
-       60, 0, 56, 58, 57, 0, 90, 55, 53, 0,
-       59, 43, 45, 48, 44, 46, 49, 58, 133, 47,
-       60, 0, 56, 0, 0, 0, 39, 55, 53, 0,
-       59, 43, 45, 48, 44, 46, 49, 58, 57, 47,
-       60, 55, 56, 0, 58, 57, 0, 0, 53, 0,
-       59, 131, 130, 0, 60, 0, 56, 58, 57, 0,
-       0, 55, 132, 0, 59, 0, 116, 0, 55, 58,
-       57, 0, 0, 117, 0, 0, 56, 0, 0, 0,
-       0, 55, 76, 56, 59, 58, 179, 0, 193, 76,
-       0, 59, 0, 55, 75, 0, 56, 58, 57, 0,
-       0, 0, 76, 180, 59, 0, 0, 0, 56, 55,
-       0, 58, 57, 0, 76, 0, 59, 0, 0, 178,
-       0, 55, 0, 0, 56, 0, 0, 0, 0, 0,
-       76, 0, 59, 0, 60, 55, 56, 0, 0, 0,
-       0, 0, 53, 0, 59, 0, 0, 0, 0, 0,
-       56, 0, 0, 0, 0, 0, 76, 0, 59, 165,
-       164, 163, 161, 162, 156, 157, 158, 159, 160, 164,
-       163, 161, 162, 156, 157, 158, 159, 160, 163, 161,
-       162, 156, 157, 158, 159, 160, 161, 162, 156, 157,
-       158, 159, 160,
-}
-var yyPact = [...]int{
-
-       -1000, -1000, 250, -1000, 72, -1000, 74, 67, 65, 61,
-       374, 294, 294, 394, 159, -1000, -1000, 274, 354, 294,
-       294, 294, 394, -5, -5, -1000, 294, 294, 84, 488,
-       488, -1000, 502, -1000, -1000, 502, -1000, -1000, -1000, 394,
-       -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       -1000, -1000, -3, 428, -7, -1000, -1000, 502, 502, 502,
-       209, -1000, 59, -1000, -1000, 408, -1000, 56, -1000, 48,
-       -1000, 448, -1000, 42, -8, 226, 502, -1000, 334, -1000,
-       -1000, -1000, 64, -1000, -1000, -9, 209, -1000, -1000, -1000,
-       394, -1000, 41, -1000, 39, -1000, 35, -1000, 34, -1000,
-       31, -1000, -1000, -1000, 30, -1000, 28, 189, 23, 17,
-       250, 555, -1000, 555, -1000, 111, 2, -17, 282, 106,
-       -1000, -1000, -1000, -10, 232, 502, 502, -1000, -1000, -1000,
-       -1000, -1000, 476, 460, 394, 294, -1000, 448, 117, -1000,
-       -1000, -1000, -1000, 161, -10, 394, 394, 394, 314, 394,
-       294, 294, 502, 435, 137, -1000, 502, 502, 502, 502,
-       502, 234, 230, 502, 502, 502, -6, -18, -20, -12,
-       502, -1000, -1000, 219, 95, 226, -1000, -1000, -21, 89,
-       -1000, -1000, -1000, -1000, -25, 79, 76, -1000, 16, 15,
-       -1000, -1000, 10, 153, 9, -1000, 3, 211, 211, -1000,
-       -1000, -1000, 502, 502, 579, 572, 564, -14, 502, -1000,
-       -1000, 103, -26, 502, -29, -1000, -1000, -1000, -15, -1000,
-       -30, -1000, 101, 96, 502, 314, -5, -1000, 227, 164,
-       -1, -5, 247, 247, 134, -31, 218, -1000, -32, -1000,
-       112, -1000, -1000, -1000, -1000, -1000, -1000, 156, 157, 153,
-       -1000, 215, 199, -1000, 502, -1000, -34, -1000, 155, -1000,
-       502, 502, -39, -1000, -1000, -41, -49, -1000, -1000, -1000,
-}
-var yyPgo = [...]int{
-
-       0, 0, 17, 324, 8, 202, 7, 1, 2, 12,
-       4, 96, 43, 11, 9, 10, 208, 323, 198, 321,
-       318, 317, 310, 309, 308, 306, 305, 302, 301, 299,
-       297, 263, 254, 253, 3, 250, 249, 248, 247, 245,
-}
-var yyR1 = [...]int{
-
-       0, 32, 33, 32, 35, 34, 34, 34, 34, 36,
-       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-       36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
-       16, 16, 20, 21, 19, 19, 18, 18, 17, 17,
-       17, 37, 38, 38, 39, 39, 22, 22, 23, 23,
-       24, 24, 25, 25, 26, 26, 26, 27, 28, 29,
-       29, 30, 31, 11, 11, 13, 13, 13, 13, 13,
-       13, 12, 12, 10, 10, 8, 8, 8, 8, 8,
-       8, 8, 6, 6, 6, 6, 6, 6, 6, 5,
-       5, 14, 14, 14, 14, 14, 14, 14, 14, 14,
-       14, 14, 15, 15, 9, 9, 4, 4, 4, 3,
-       3, 3, 1, 1, 1, 1, 1, 1, 7, 7,
-       7, 7, 2, 2, 2, 2, 2, 2, 2, 2,
-       2, 2, 2,
-}
-var yyR2 = [...]int{
-
-       0, 0, 0, 3, 0, 4, 1, 2, 2, 3,
-       3, 2, 2, 2, 2, 2, 2, 1, 1, 2,
-       2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
-       0, 1, 3, 3, 2, 1, 2, 1, 2, 1,
-       3, 6, 5, 7, 4, 6, 2, 1, 1, 1,
-       3, 5, 3, 5, 2, 1, 3, 5, 5, 0,
-       1, 3, 3, 1, 1, 1, 1, 2, 2, 1,
-       1, 1, 1, 4, 2, 1, 1, 1, 1, 1,
-       1, 1, 2, 2, 2, 2, 4, 5, 3, 1,
-       1, 1, 4, 4, 4, 6, 9, 9, 3, 3,
-       5, 8, 1, 6, 5, 7, 0, 2, 2, 1,
-       1, 1, 1, 1, 2, 2, 2, 3, 1, 2,
-       3, 4, 1, 3, 3, 3, 3, 3, 4, 4,
-       3, 3, 3,
-}
-var yyChk = [...]int{
-
-       -1000, -32, -33, -34, 46, 50, -36, 2, 48, 14,
-       15, 16, 17, 18, 22, -37, -38, 19, 21, 26,
-       27, 28, 29, 30, 31, -39, 25, 32, 20, 23,
-       24, 49, 51, 50, 50, 51, -16, 52, -18, 52,
-       -11, -8, -5, 37, 40, 38, 41, 45, 39, 42,
-       -14, -15, -1, 54, -9, 33, 48, 10, 9, 56,
-       46, -19, -12, -11, -6, 53, -20, -12, -21, -11,
-       -17, 52, -10, -6, -1, 46, 54, -22, 52, -13,
-       -10, -15, 11, -8, -14, -1, 46, -23, -16, -18,
-       52, -24, -12, -25, -12, -26, -12, -27, -11, -28,
-       -6, -29, -6, -30, -12, -31, -12, -9, -5, -5,
-       -35, -2, -1, -2, -11, 54, 38, 45, -2, 54,
-       -1, -1, -1, -4, 7, 9, 10, 52, -1, -9,
-       44, 43, 54, 10, 52, 52, -10, 52, 54, -4,
-       -13, -8, -14, 54, -4, 52, 52, 52, 52, 52,
-       52, 52, 12, 52, 52, -34, 9, 10, 11, 12,
-       13, 7, 8, 6, 5, 4, 38, 45, 39, 55,
-       11, 55, 55, 38, 54, 8, -1, -1, 43, 10,
-       43, -11, -12, -10, 35, -11, -11, -11, -8, -11,
-       -12, -12, -1, 53, -1, -6, -1, -2, -2, -2,
-       -2, -2, 7, 8, -2, -2, -2, 55, 11, 55,
-       55, 54, -1, 11, -3, 36, 45, 34, -4, 55,
-       43, 55, 49, 49, 52, 52, 52, -7, 33, 10,
-       52, 52, -2, -2, 54, -1, 38, 55, -1, 55,
-       54, 55, 38, 39, -1, -8, -6, 10, 33, 53,
-       -6, 38, 39, 55, 11, 55, 36, 33, 10, -7,
-       11, 11, -1, 55, 33, -1, -1, 55, 55, 55,
-}
-var yyDef = [...]int{
-
-       1, -2, 0, 3, 0, 6, 0, 0, 0, 30,
-       0, 0, 0, 0, 0, 17, 18, 0, 30, 0,
-       0, 0, 0, 0, 59, 27, 0, 0, 0, 0,
-       0, 4, 0, 7, 8, 0, 11, 31, 12, 0,
-       37, 63, 64, 75, 76, 77, 78, 79, 80, 81,
-       89, 90, 91, 0, 102, 112, 113, 0, 0, 0,
-       106, 13, 35, 71, 72, 0, 14, 0, 15, 0,
-       16, 0, 39, 0, 0, 106, 0, 19, 0, 47,
-       65, 66, 0, 69, 70, 91, 106, 20, 48, 49,
-       31, 21, 0, 22, 0, 23, 55, 24, 0, 25,
-       0, 26, 60, 28, 0, 29, 0, 0, 0, 0,
-       0, 9, 122, 10, 36, 0, 0, 0, 0, 0,
-       114, 115, 116, 0, 0, 0, 0, 34, 82, 83,
-       84, 85, 0, 0, 0, 0, 38, 0, 0, 74,
-       46, 67, 68, 0, 74, 0, 0, 54, 0, 0,
-       0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
-       0, 99, 117, 0, 0, 106, 107, 108, 0, 0,
-       88, 32, 33, 40, 0, 50, 52, 56, 0, 0,
-       61, 62, 0, 0, 0, 44, 0, 123, 124, 125,
-       126, 127, 0, 0, 130, 131, 132, 92, 0, 93,
-       94, 0, 0, 0, 0, 109, 110, 111, 0, 86,
-       0, 73, 0, 0, 0, 0, 0, 42, 118, 0,
-       0, 0, 128, 129, 0, 0, 0, 100, 0, 104,
-       0, 87, 51, 53, 57, 58, 41, 0, 119, 0,
-       45, 0, 0, 95, 0, 103, 0, 120, 0, 43,
-       0, 0, 0, 105, 121, 0, 0, 101, 96, 97,
-}
-var yyTok1 = [...]int{
-
-       1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 53, 13, 6, 3,
-       54, 55, 11, 9, 52, 10, 3, 12, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 49, 50,
-       7, 51, 8, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 4, 3, 56,
-}
-var yyTok2 = [...]int{
-
-       2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
-       22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-       32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-       42, 43, 44, 45, 46, 47, 48,
-}
-var yyTok3 = [...]int{
-       0,
-}
-
-var yyErrorMessages = [...]struct {
-       state int
-       token int
-       msg   string
-}{}
-
-//line yaccpar:1
-
-/*     parser for yacc output  */
-
-var (
-       yyDebug        = 0
-       yyErrorVerbose = false
-)
-
-type yyLexer interface {
-       Lex(lval *yySymType) int
-       Error(s string)
-}
-
-type yyParser interface {
-       Parse(yyLexer) int
-       Lookahead() int
-}
-
-type yyParserImpl struct {
-       lookahead func() int
-}
-
-func (p *yyParserImpl) Lookahead() int {
-       return p.lookahead()
-}
-
-func yyNewParser() yyParser {
-       p := &yyParserImpl{
-               lookahead: func() int { return -1 },
-       }
-       return p
-}
-
-const yyFlag = -1000
-
-func yyTokname(c int) string {
-       if c >= 1 && c-1 < len(yyToknames) {
-               if yyToknames[c-1] != "" {
-                       return yyToknames[c-1]
-               }
-       }
-       return __yyfmt__.Sprintf("tok-%v", c)
-}
-
-func yyStatname(s int) string {
-       if s >= 0 && s < len(yyStatenames) {
-               if yyStatenames[s] != "" {
-                       return yyStatenames[s]
-               }
-       }
-       return __yyfmt__.Sprintf("state-%v", s)
-}
-
-func yyErrorMessage(state, lookAhead int) string {
-       const TOKSTART = 4
-
-       if !yyErrorVerbose {
-               return "syntax error"
-       }
-
-       for _, e := range yyErrorMessages {
-               if e.state == state && e.token == lookAhead {
-                       return "syntax error: " + e.msg
-               }
-       }
-
-       res := "syntax error: unexpected " + yyTokname(lookAhead)
-
-       // To match Bison, suggest at most four expected tokens.
-       expected := make([]int, 0, 4)
-
-       // Look for shiftable tokens.
-       base := yyPact[state]
-       for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
-               if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-       }
-
-       if yyDef[state] == -2 {
-               i := 0
-               for yyExca[i] != -1 || yyExca[i+1] != state {
-                       i += 2
-               }
-
-               // Look for tokens that we accept or reduce.
-               for i += 2; yyExca[i] >= 0; i += 2 {
-                       tok := yyExca[i]
-                       if tok < TOKSTART || yyExca[i+1] == 0 {
-                               continue
-                       }
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-
-               // If the default action is to accept or reduce, give up.
-               if yyExca[i+1] != 0 {
-                       return res
-               }
-       }
-
-       for i, tok := range expected {
-               if i == 0 {
-                       res += ", expecting "
-               } else {
-                       res += " or "
-               }
-               res += yyTokname(tok)
-       }
-       return res
-}
-
-func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
-       token = 0
-       char = lex.Lex(lval)
-       if char <= 0 {
-               token = yyTok1[0]
-               goto out
-       }
-       if char < len(yyTok1) {
-               token = yyTok1[char]
-               goto out
-       }
-       if char >= yyPrivate {
-               if char < yyPrivate+len(yyTok2) {
-                       token = yyTok2[char-yyPrivate]
-                       goto out
-               }
-       }
-       for i := 0; i < len(yyTok3); i += 2 {
-               token = yyTok3[i+0]
-               if token == char {
-                       token = yyTok3[i+1]
-                       goto out
-               }
-       }
-
-out:
-       if token == 0 {
-               token = yyTok2[1] /* unknown char */
-       }
-       if yyDebug >= 3 {
-               __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
-       }
-       return char, token
-}
-
-func yyParse(yylex yyLexer) int {
-       return yyNewParser().Parse(yylex)
-}
-
-func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
-       var yyn int
-       var yylval yySymType
-       var yyVAL yySymType
-       var yyDollar []yySymType
-       yyS := make([]yySymType, yyMaxDepth)
-
-       Nerrs := 0   /* number of errors */
-       Errflag := 0 /* error recovery flag */
-       yystate := 0
-       yychar := -1
-       yytoken := -1 // yychar translated into internal numbering
-       yyrcvr.lookahead = func() int { return yychar }
-       defer func() {
-               // Make sure we report no lookahead when not parsing.
-               yystate = -1
-               yychar = -1
-               yytoken = -1
-       }()
-       yyp := -1
-       goto yystack
-
-ret0:
-       return 0
-
-ret1:
-       return 1
-
-yystack:
-       /* put a state and value onto the stack */
-       if yyDebug >= 4 {
-               __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
-       }
-
-       yyp++
-       if yyp >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyS[yyp] = yyVAL
-       yyS[yyp].yys = yystate
-
-yynewstate:
-       yyn = yyPact[yystate]
-       if yyn <= yyFlag {
-               goto yydefault /* simple state */
-       }
-       if yychar < 0 {
-               yychar, yytoken = yylex1(yylex, &yylval)
-       }
-       yyn += yytoken
-       if yyn < 0 || yyn >= yyLast {
-               goto yydefault
-       }
-       yyn = yyAct[yyn]
-       if yyChk[yyn] == yytoken { /* valid shift */
-               yychar = -1
-               yytoken = -1
-               yyVAL = yylval
-               yystate = yyn
-               if Errflag > 0 {
-                       Errflag--
-               }
-               goto yystack
-       }
-
-yydefault:
-       /* default state action */
-       yyn = yyDef[yystate]
-       if yyn == -2 {
-               if yychar < 0 {
-                       yychar, yytoken = yylex1(yylex, &yylval)
-               }
-
-               /* look through exception table */
-               xi := 0
-               for {
-                       if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
-                               break
-                       }
-                       xi += 2
-               }
-               for xi += 2; ; xi += 2 {
-                       yyn = yyExca[xi+0]
-                       if yyn < 0 || yyn == yytoken {
-                               break
-                       }
-               }
-               yyn = yyExca[xi+1]
-               if yyn < 0 {
-                       goto ret0
-               }
-       }
-       if yyn == 0 {
-               /* error ... attempt to resume parsing */
-               switch Errflag {
-               case 0: /* brand new error */
-                       yylex.Error(yyErrorMessage(yystate, yytoken))
-                       Nerrs++
-                       if yyDebug >= 1 {
-                               __yyfmt__.Printf("%s", yyStatname(yystate))
-                               __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
-                       }
-                       fallthrough
-
-               case 1, 2: /* incompletely recovered error ... try again */
-                       Errflag = 3
-
-                       /* find a state where "error" is a legal shift action */
-                       for yyp >= 0 {
-                               yyn = yyPact[yyS[yyp].yys] + yyErrCode
-                               if yyn >= 0 && yyn < yyLast {
-                                       yystate = yyAct[yyn] /* simulate a shift of "error" */
-                                       if yyChk[yystate] == yyErrCode {
-                                               goto yystack
-                                       }
-                               }
-
-                               /* the current p has no shift on "error", pop stack */
-                               if yyDebug >= 2 {
-                                       __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
-                               }
-                               yyp--
-                       }
-                       /* there is no state on the stack with an error shift ... abort */
-                       goto ret1
-
-               case 3: /* no shift yet; clobber input char */
-                       if yyDebug >= 2 {
-                               __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
-                       }
-                       if yytoken == yyEofCode {
-                               goto ret1
-                       }
-                       yychar = -1
-                       yytoken = -1
-                       goto yynewstate /* try again in the same state */
-               }
-       }
-
-       /* reduction by production yyn */
-       if yyDebug >= 2 {
-               __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
-       }
-
-       yynt := yyn
-       yypt := yyp
-       _ = yypt // guard against "declared and not used"
-
-       yyp -= yyR2[yyn]
-       // yyp is now the index of $0. Perform the default action. Iff the
-       // reduced production is ε, $1 is possibly out of range.
-       if yyp+1 >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyVAL = yyS[yyp+1]
-
-       /* consult goto table to find next state */
-       yyn = yyR1[yyn]
-       yyg := yyPgo[yyn]
-       yyj := yyg + yyS[yyp].yys + 1
-
-       if yyj >= yyLast {
-               yystate = yyAct[yyg]
-       } else {
-               yystate = yyAct[yyj]
-               if yyChk[yystate] != -yyn {
-                       yystate = yyAct[yyg]
-               }
-       }
-       // dummy call; replaced with literal code
-       switch yynt {
-
-       case 2:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:72
-               {
-                       stmtline = asm.Lineno
-               }
-       case 4:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:79
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
-                               yyerror("redeclaration of %s (%s)", yyDollar[1].sym.Labelname, yyDollar[1].sym.Name)
-                       }
-                       yyDollar[1].sym.Type = LLAB
-                       yyDollar[1].sym.Value = int64(asm.PC)
-               }
-       case 9:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:94
-               {
-                       yyDollar[1].sym.Type = LVAR
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 10:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:99
-               {
-                       if yyDollar[1].sym.Value != yyDollar[3].lval {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Name)
-                       }
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 11:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:105
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 12:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:106
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 13:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:107
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 14:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:108
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 15:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:109
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 16:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:110
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 19:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:113
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 20:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:114
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 21:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:115
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 22:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:116
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 23:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:117
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 24:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:118
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 25:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:119
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 26:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:120
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 28:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:122
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 29:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:123
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 30:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:126
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = nullgen
-               }
-       case 31:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:131
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = nullgen
-               }
-       case 32:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:138
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 33:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:145
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 34:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:152
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 35:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:157
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 36:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:164
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 37:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:169
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 38:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:176
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 39:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:181
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 40:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:186
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 41:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:193
-               {
-                       var a Addr2
-                       a.from = yyDollar[2].addr
-                       a.to = yyDollar[6].addr
-                       outcode(obj.ADATA, &a)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 42:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:207
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[5].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 43:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:215
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[7].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 44:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:227
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[4].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 45:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:235
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[6].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 46:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:247
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 47:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:252
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 50:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:263
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 51:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:268
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-                       if yyVAL.addr2.from.Index != obj.TYPE_NONE {
-                               yyerror("dp shift with lhs index")
-                       }
-                       yyVAL.addr2.from.Index = int16(yyDollar[5].lval)
-               }
-       case 52:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:279
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 53:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:284
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-                       if yyVAL.addr2.to.Index != obj.TYPE_NONE {
-                               yyerror("dp move with lhs index")
-                       }
-                       yyVAL.addr2.to.Index = int16(yyDollar[5].lval)
-               }
-       case 54:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:295
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 55:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:300
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 56:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:305
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 57:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:312
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.from3 = yyDollar[3].addr
-                       yyVAL.addr2.to.Type = obj.TYPE_MEM // to give library something to do
-                       yyVAL.addr2.to.Offset = yyDollar[5].lval
-               }
-       case 58:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:321
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.from3 = yyDollar[3].addr
-                       yyVAL.addr2.to = yyDollar[5].addr
-               }
-       case 59:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:328
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = nullgen
-               }
-       case 60:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:333
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 61:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:340
-               {
-                       if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST {
-                               yyerror("arguments to asm.PCDATA must be integer constants")
-                       }
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 62:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:350
-               {
-                       if yyDollar[1].addr.Type != obj.TYPE_CONST {
-                               yyerror("index for FUNCDATA must be integer constant")
-                       }
-                       if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) {
-                               yyerror("value for FUNCDATA must be symbol reference")
-                       }
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 67:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:369
-               {
-                       yyVAL.addr = yyDollar[2].addr
-               }
-       case 68:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:373
-               {
-                       yyVAL.addr = yyDollar[2].addr
-               }
-       case 73:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:385
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
-               }
-       case 74:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:391
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       yyVAL.addr = nullgen
-                       if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
-                               yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
-               }
-       case 75:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:403
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 76:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:409
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 77:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:415
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 78:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:421
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 79:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:427
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = x86.REG_SP
-               }
-       case 80:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:433
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 81:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:439
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 82:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:447
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 83:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:453
-               {
-                       yyVAL.addr = yyDollar[2].addr
-                       yyVAL.addr.Type = obj.TYPE_ADDR
-                       /*
-                               if($2.Type == x86.D_AUTO || $2.Type == x86.D_PARAM)
-                                       yyerror("constant cannot be automatic: %s",
-                                               $2.sym.Name);
-                       */
-               }
-       case 84:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:462
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SCONST
-                       yyVAL.addr.Val = (yyDollar[2].sval + "\x00\x00\x00\x00\x00\x00\x00\x00")[:8]
-               }
-       case 85:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:468
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[2].dval
-               }
-       case 86:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:474
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[3].dval
-               }
-       case 87:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:480
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[4].dval
-               }
-       case 88:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:486
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[3].dval
-               }
-       case 91:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:498
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 92:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:504
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 93:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:511
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = x86.REG_SP
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 94:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:518
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 95:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:525
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[3].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[5].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 96:
-               yyDollar = yyS[yypt-9 : yypt+1]
-               //line a.y:534
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[6].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[8].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 97:
-               yyDollar = yyS[yypt-9 : yypt+1]
-               //line a.y:544
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[6].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[8].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 98:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:554
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-               }
-       case 99:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:560
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = x86.REG_SP
-               }
-       case 100:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:566
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Index = int16(yyDollar[2].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[4].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 101:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:574
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Index = int16(yyDollar[5].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[7].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 102:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:585
-               {
-                       yyVAL.addr = yyDollar[1].addr
-               }
-       case 103:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:589
-               {
-                       yyVAL.addr = yyDollar[1].addr
-                       yyVAL.addr.Index = int16(yyDollar[3].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[5].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 104:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:598
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[4].lval)
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 105:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:606
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = obj.NAME_STATIC
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
-                       yyVAL.addr.Offset = yyDollar[4].lval
-               }
-       case 106:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:615
-               {
-                       yyVAL.lval = 0
-               }
-       case 107:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:619
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 108:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:623
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 110:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:630
-               {
-                       yyVAL.lval = obj.NAME_AUTO
-               }
-       case 113:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:638
-               {
-                       yyVAL.lval = yyDollar[1].sym.Value
-               }
-       case 114:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:642
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 115:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:646
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 116:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:650
-               {
-                       yyVAL.lval = ^yyDollar[2].lval
-               }
-       case 117:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:654
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 118:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:660
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 119:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:667
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -yyDollar[2].lval
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 120:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:674
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Val = int32(yyDollar[3].lval)
-               }
-       case 121:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:681
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -yyDollar[2].lval
-                       yyVAL.addr.Val = int32(yyDollar[4].lval)
-               }
-       case 123:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:691
-               {
-                       yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
-               }
-       case 124:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:695
-               {
-                       yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
-               }
-       case 125:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:699
-               {
-                       yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
-               }
-       case 126:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:703
-               {
-                       yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
-               }
-       case 127:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:707
-               {
-                       yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
-               }
-       case 128:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:711
-               {
-                       yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
-               }
-       case 129:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:715
-               {
-                       yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
-               }
-       case 130:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:719
-               {
-                       yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
-               }
-       case 131:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:723
-               {
-                       yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
-               }
-       case 132:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:727
-               {
-                       yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
-               }
-       }
-       goto yystack /* stack new state and value */
-}
diff --git a/src/cmd/old8a/a.y b/src/cmd/old8a/a.y
deleted file mode 100644 (file)
index fae3b81..0000000
+++ /dev/null
@@ -1,722 +0,0 @@
-// Inferno utils/8a/a.y
-// http://code.google.com/p/inferno-os/source/browse/utils/8a/a.y
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-%{
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/x86"
-)
-%}
-
-%union {
-       sym *asm.Sym
-       lval int64
-       con2 struct {
-               v1 int32
-               v2 int32
-       }
-       dval float64
-       sval string
-       addr obj.Addr
-       addr2 Addr2
-}
-
-%left  '|'
-%left  '^'
-%left  '&'
-%left  '<' '>'
-%left  '+' '-'
-%left  '*' '/' '%'
-%token <lval>  LTYPE0 LTYPE1 LTYPE2 LTYPE3 LTYPE4
-%token <lval>  LTYPEC LTYPED LTYPEN LTYPER LTYPET LTYPES LTYPEM LTYPEI LTYPEG LTYPEXC
-%token <lval>  LTYPEX LTYPEPC LTYPEF LCONST LFP LPC LSB
-%token <lval>  LBREG LLREG LSREG LFREG LXREG
-%token <dval>  LFCONST
-%token <sval>  LSCONST LSP
-%token <sym>   LNAME LLAB LVAR
-%type  <lval>  con expr pointer offset
-%type  <addr>  mem imm reg nam rel rem rim rom omem nmem textsize
-%type  <addr2> nonnon nonrel nonrem rimnon rimrem remrim
-%type  <addr2> spec3 spec4 spec5 spec6 spec7 spec9 spec10 spec11 spec12
-%%
-prog:
-|      prog
-       {
-               stmtline = asm.Lineno;
-       }
-       line
-
-line:
-       LNAME ':'
-       {
-               $1 = asm.LabelLookup($1);
-               if $1.Type == LLAB && $1.Value != int64(asm.PC) {
-                       yyerror("redeclaration of %s", $1.Labelname)
-               }
-               $1.Type = LLAB;
-               $1.Value = int64(asm.PC)
-       }
-       line
-|      ';'
-|      inst ';'
-|      error ';'
-
-inst:
-       LNAME '=' expr
-       {
-               $1.Type = LVAR;
-               $1.Value = $3;
-       }
-|      LVAR '=' expr
-       {
-               if $1.Value != int64($3) {
-                       yyerror("redeclaration of %s", $1.Name);
-               }
-               $1.Value = $3;
-       }
-|      LTYPE0 nonnon   { outcode(int($1), &$2); }
-|      LTYPE1 nonrem   { outcode(int($1), &$2); }
-|      LTYPE2 rimnon   { outcode(int($1), &$2); }
-|      LTYPE3 rimrem   { outcode(int($1), &$2); }
-|      LTYPE4 remrim   { outcode(int($1), &$2); }
-|      LTYPER nonrel   { outcode(int($1), &$2); }
-|      spec1
-|      spec2
-|      LTYPEC spec3    { outcode(int($1), &$2); }
-|      LTYPEN spec4    { outcode(int($1), &$2); }
-|      LTYPES spec5    { outcode(int($1), &$2); }
-|      LTYPEM spec6    { outcode(int($1), &$2); }
-|      LTYPEI spec7    { outcode(int($1), &$2); }
-|      spec8
-|      LTYPEXC spec9   { outcode(int($1), &$2); }
-|      LTYPEX spec10   { outcode(int($1), &$2); }
-|      LTYPEPC spec11  { outcode(int($1), &$2); }
-|      LTYPEF spec12   { outcode(int($1), &$2); }
-
-nonnon:
-       {
-               $$.from = nullgen;
-               $$.to = nullgen;
-       }
-|      ','
-       {
-               $$.from = nullgen;
-               $$.to = nullgen;
-       }
-
-rimrem:
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-remrim:
-       rem ',' rim
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-rimnon:
-       rim ','
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-
-nonrem:
-       ',' rem
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rem
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-
-nonrel:
-       ',' rel
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rel
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-|      imm ',' rel
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec1: /* DATA */
-       LTYPED nam '/' con ',' imm
-       {
-               outcode(obj.ADATA, &Addr2{$2, $6})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-spec2: /* TEXT */
-       LTYPET mem ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.ATEXT, &Addr2{$2, $5})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LTYPET mem ',' con ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.ATEXT, &Addr2{$2, $7})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-spec8: /* GLOBL */
-       LTYPEG mem ',' imm
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.AGLOBL, &Addr2{$2, $4})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LTYPEG mem ',' con ',' imm
-       {
-               asm.Settext($2.Sym);
-               outcode(obj.AGLOBL, &Addr2{$2, $6})
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-
-spec3: /* JMP/CALL */
-       ',' rom
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-       }
-|      rom
-       {
-               $$.from = nullgen;
-               $$.to = $1;
-       }
-|      '*' nam
-       {
-               $$.from = nullgen;
-               $$.to = $2;
-               $$.to.Type = obj.TYPE_INDIR
-       }
-
-spec4: /* NOP */
-       nonnon
-|      nonrem
-
-spec5: /* SHL/SHR */
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-|      rim ',' rem ':' LLREG
-       {
-               $$.from = $1;
-               $$.to = $3;
-               if $$.from.Index != obj.TYPE_NONE {
-                       yyerror("dp shift with lhs index");
-               }
-               $$.from.Index = int16($5);
-       }
-
-spec6: /* MOVW/MOVL */
-       rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-|      rim ',' rem ':' LSREG
-       {
-               $$.from = $1;
-               $$.to = $3;
-               if $$.to.Index != obj.TYPE_NONE {
-                       yyerror("dp move with lhs index");
-               }
-               $$.to.Index = int16($5);
-       }
-
-spec7:
-       rim ','
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim
-       {
-               $$.from = $1;
-               $$.to = nullgen;
-       }
-|      rim ',' rem
-       {
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec9: /* CMPPS/CMPPD */
-       rem ',' reg ',' con
-       {
-               $$.from = $1;
-               $$.to = $3;
-               $$.to.Offset = $5;
-       }
-
-spec10:        /* PINSRD */
-       imm ',' rem ',' reg
-       {
-               $$.from = $3;
-               $$.to = $5;
-               if $1.Type != obj.TYPE_CONST {
-                       yyerror("illegal constant")
-               }
-               $$.to.Offset = $1.Offset;
-       }
-
-spec11:        /* PCDATA */
-       rim ',' rim
-       {
-               if $1.Type != obj.TYPE_CONST || $3.Type != obj.TYPE_CONST {
-                       yyerror("arguments to PCDATA must be integer constants");
-               }
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-spec12:        /* FUNCDATA */
-       rim ',' rim
-       {
-               if $1.Type != obj.TYPE_CONST {
-                       yyerror("index for FUNCDATA must be integer constant");
-               }
-               if $3.Type != obj.TYPE_MEM || ($3.Name != obj.NAME_EXTERN && $3.Name != obj.NAME_STATIC) {
-                       yyerror("value for FUNCDATA must be symbol reference");
-               }
-               $$.from = $1;
-               $$.to = $3;
-       }
-
-rem:
-       reg
-|      mem
-
-rom:
-       rel
-|      nmem
-|      '*' reg
-       {
-               $$ = $2;
-       }
-|      '*' omem
-       {
-               $$ = $2;
-       }
-|      reg
-|      omem
-|      imm
-
-rim:
-       rem
-|      imm
-
-rel:
-       con '(' LPC ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1 + int64(asm.PC);
-       }
-|      LNAME offset
-       {
-               $1 = asm.LabelLookup($1);
-               $$ = nullgen;
-               if asm.Pass == 2 && $1.Type != LLAB {
-                       yyerror("undefined label: %s", $1.Labelname);
-               }
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1.Value + $2;
-       }
-
-reg:
-       LBREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LFREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LLREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LXREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-|      LSP
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = REG_SP;
-       }
-|      LSREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1);
-       }
-
-imm:
-       '$' con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               $$.Offset = $2;
-       }
-|      '$' nam
-       {
-               $$ = $2;
-               $$.Type = obj.TYPE_ADDR
-               /*
-               if($2.Type == D_AUTO || $2.Type == D_PARAM)
-                       yyerror("constant cannot be automatic: %s",
-                               $2.Sym.name);
-                */
-       }
-|      '$' LSCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SCONST;
-               $$.Val = $2
-       }
-|      '$' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $2;
-       }
-|      '$' '(' LFCONST ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $3;
-       }
-|      '$' '(' '-' LFCONST ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$4;
-       }
-|      '$' '-' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$3;
-       }
-
-textsize:
-       LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = $1;
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -$2;
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = $1;
-               $$.Val = int32($3);
-       }
-|      '-' LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -$2;
-               $$.Val = int32($4);
-       }
-
-
-mem:
-       omem
-|      nmem
-
-omem:
-       con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Offset = $1;
-       }
-|      con '(' LLREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-       }
-|      con '(' LSP ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = REG_SP
-               $$.Offset = $1;
-       }
-|      con '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Offset = $1;
-               $$.Index = int16($3);
-               $$.Scale = int16($5);
-               checkscale($$.Scale);
-       }
-|      con '(' LLREG ')' '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-               $$.Index = int16($6);
-               $$.Scale = int16($8);
-               checkscale($$.Scale);
-       }
-|      con '(' LLREG ')' '(' LSREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-               $$.Index = int16($6);
-               $$.Scale = int16($8);
-               checkscale($$.Scale);
-       }
-|      '(' LLREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($2);
-       }
-|      '(' LSP ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = REG_SP
-       }
-|      con '(' LSREG ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($3)
-               $$.Offset = $1;
-       }
-|      '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Index = int16($2);
-               $$.Scale = int16($4);
-               checkscale($$.Scale);
-       }
-|      '(' LLREG ')' '(' LLREG '*' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Reg = int16($2)
-               $$.Index = int16($5);
-               $$.Scale = int16($7);
-               checkscale($$.Scale);
-       }
-
-nmem:
-       nam
-       {
-               $$ = $1;
-       }
-|      nam '(' LLREG '*' con ')'
-       {
-               $$ = $1;
-               $$.Index = int16($3);
-               $$.Scale = int16($5);
-               checkscale($$.Scale);
-       }
-
-nam:
-       LNAME offset '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Name = int8($4);
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 0);
-               $$.Offset = $2;
-       }
-|      LNAME '<' '>' offset '(' LSB ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM
-               $$.Name = obj.NAME_STATIC
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 1);
-               $$.Offset = $4;
-       }
-
-offset:
-       {
-               $$ = 0;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-
-pointer:
-       LSB
-|      LSP
-       {
-               $$ = obj.NAME_AUTO;
-       }
-|      LFP
-
-con:
-       LCONST
-|      LVAR
-       {
-               $$ = $1.Value;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '~' con
-       {
-               $$ = ^$2;
-       }
-|      '(' expr ')'
-       {
-               $$ = $2;
-       }
-
-expr:
-       con
-|      expr '+' expr
-       {
-               $$ = $1 + $3;
-       }
-|      expr '-' expr
-       {
-               $$ = $1 - $3;
-       }
-|      expr '*' expr
-       {
-               $$ = $1 * $3;
-       }
-|      expr '/' expr
-       {
-               $$ = $1 / $3;
-       }
-|      expr '%' expr
-       {
-               $$ = $1 % $3;
-       }
-|      expr '<' '<' expr
-       {
-               $$ = $1 << uint($4);
-       }
-|      expr '>' '>' expr
-       {
-               $$ = $1 >> uint($4);
-       }
-|      expr '&' expr
-       {
-               $$ = $1 & $3;
-       }
-|      expr '^' expr
-       {
-               $$ = $1 ^ $3;
-       }
-|      expr '|' expr
-       {
-               $$ = $1 | $3;
-       }
diff --git a/src/cmd/old8a/lex.go b/src/cmd/old8a/lex.go
deleted file mode 100644 (file)
index 73b633b..0000000
+++ /dev/null
@@ -1,771 +0,0 @@
-// Inferno utils/8a/lex.c
-// http://code.google.com/p/inferno-os/source/browse/utils/8a/lex.c
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:generate go tool yacc a.y
-
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/x86"
-)
-
-var (
-       yyerror  = asm.Yyerror
-       nullgen  obj.Addr
-       stmtline int32
-)
-
-func main() {
-       cinit()
-
-       asm.LSCONST = LSCONST
-       asm.LCONST = LCONST
-       asm.LFCONST = LFCONST
-       asm.LNAME = LNAME
-       asm.LVAR = LVAR
-       asm.LLAB = LLAB
-
-       asm.Lexinit = lexinit
-       asm.Cclean = cclean
-       asm.Yyparse = yyparse
-
-       asm.Thechar = '8'
-       asm.Thestring = "386"
-       asm.Thelinkarch = &x86.Link386
-
-       asm.Main()
-}
-
-type yy struct{}
-
-func (yy) Lex(v *yySymType) int {
-       var av asm.Yylval
-       tok := asm.Yylex(&av)
-       v.sym = av.Sym
-       v.lval = av.Lval
-       v.sval = av.Sval
-       v.dval = av.Dval
-       return tok
-}
-
-func (yy) Error(msg string) {
-       asm.Yyerror("%s", msg)
-}
-
-func yyparse() {
-       yyParse(yy{})
-}
-
-var lexinit = []asm.Lextab{
-       {"SP", LSP, obj.NAME_AUTO},
-       {"SB", LSB, obj.NAME_EXTERN},
-       {"FP", LFP, obj.NAME_PARAM},
-       {"PC", LPC, obj.TYPE_BRANCH},
-       {"AL", LBREG, x86.REG_AL},
-       {"CL", LBREG, x86.REG_CL},
-       {"DL", LBREG, x86.REG_DL},
-       {"BL", LBREG, x86.REG_BL},
-       {"AH", LBREG, x86.REG_AH},
-       {"CH", LBREG, x86.REG_CH},
-       {"DH", LBREG, x86.REG_DH},
-       {"BH", LBREG, x86.REG_BH},
-       {"AX", LLREG, x86.REG_AX},
-       {"CX", LLREG, x86.REG_CX},
-       {"DX", LLREG, x86.REG_DX},
-       {"BX", LLREG, x86.REG_BX},
-       /*      "SP",           LLREG,  REG_SP, */
-       {"BP", LLREG, x86.REG_BP},
-       {"SI", LLREG, x86.REG_SI},
-       {"DI", LLREG, x86.REG_DI},
-       {"F0", LFREG, x86.REG_F0 + 0},
-       {"F1", LFREG, x86.REG_F0 + 1},
-       {"F2", LFREG, x86.REG_F0 + 2},
-       {"F3", LFREG, x86.REG_F0 + 3},
-       {"F4", LFREG, x86.REG_F0 + 4},
-       {"F5", LFREG, x86.REG_F0 + 5},
-       {"F6", LFREG, x86.REG_F0 + 6},
-       {"F7", LFREG, x86.REG_F0 + 7},
-       {"X0", LXREG, x86.REG_X0 + 0},
-       {"X1", LXREG, x86.REG_X0 + 1},
-       {"X2", LXREG, x86.REG_X0 + 2},
-       {"X3", LXREG, x86.REG_X0 + 3},
-       {"X4", LXREG, x86.REG_X0 + 4},
-       {"X5", LXREG, x86.REG_X0 + 5},
-       {"X6", LXREG, x86.REG_X0 + 6},
-       {"X7", LXREG, x86.REG_X0 + 7},
-       {"CS", LSREG, x86.REG_CS},
-       {"SS", LSREG, x86.REG_SS},
-       {"DS", LSREG, x86.REG_DS},
-       {"ES", LSREG, x86.REG_ES},
-       {"FS", LSREG, x86.REG_FS},
-       {"GS", LSREG, x86.REG_GS},
-       {"TLS", LSREG, x86.REG_TLS},
-       {"GDTR", LBREG, x86.REG_GDTR},
-       {"IDTR", LBREG, x86.REG_IDTR},
-       {"LDTR", LBREG, x86.REG_LDTR},
-       {"MSW", LBREG, x86.REG_MSW},
-       {"TASK", LBREG, x86.REG_TASK},
-       {"CR0", LBREG, x86.REG_CR + 0},
-       {"CR1", LBREG, x86.REG_CR + 1},
-       {"CR2", LBREG, x86.REG_CR + 2},
-       {"CR3", LBREG, x86.REG_CR + 3},
-       {"CR4", LBREG, x86.REG_CR + 4},
-       {"CR5", LBREG, x86.REG_CR + 5},
-       {"CR6", LBREG, x86.REG_CR + 6},
-       {"CR7", LBREG, x86.REG_CR + 7},
-       {"DR0", LBREG, x86.REG_DR + 0},
-       {"DR1", LBREG, x86.REG_DR + 1},
-       {"DR2", LBREG, x86.REG_DR + 2},
-       {"DR3", LBREG, x86.REG_DR + 3},
-       {"DR4", LBREG, x86.REG_DR + 4},
-       {"DR5", LBREG, x86.REG_DR + 5},
-       {"DR6", LBREG, x86.REG_DR + 6},
-       {"DR7", LBREG, x86.REG_DR + 7},
-       {"TR0", LBREG, x86.REG_TR + 0},
-       {"TR1", LBREG, x86.REG_TR + 1},
-       {"TR2", LBREG, x86.REG_TR + 2},
-       {"TR3", LBREG, x86.REG_TR + 3},
-       {"TR4", LBREG, x86.REG_TR + 4},
-       {"TR5", LBREG, x86.REG_TR + 5},
-       {"TR6", LBREG, x86.REG_TR + 6},
-       {"TR7", LBREG, x86.REG_TR + 7},
-       {"AAA", LTYPE0, x86.AAAA},
-       {"AAD", LTYPE0, x86.AAAD},
-       {"AAM", LTYPE0, x86.AAAM},
-       {"AAS", LTYPE0, x86.AAAS},
-       {"ADCB", LTYPE3, x86.AADCB},
-       {"ADCL", LTYPE3, x86.AADCL},
-       {"ADCW", LTYPE3, x86.AADCW},
-       {"ADDB", LTYPE3, x86.AADDB},
-       {"ADDL", LTYPE3, x86.AADDL},
-       {"ADDW", LTYPE3, x86.AADDW},
-       {"ADJSP", LTYPE2, x86.AADJSP},
-       {"ANDB", LTYPE3, x86.AANDB},
-       {"ANDL", LTYPE3, x86.AANDL},
-       {"ANDW", LTYPE3, x86.AANDW},
-       {"ARPL", LTYPE3, x86.AARPL},
-       {"BOUNDL", LTYPE3, x86.ABOUNDL},
-       {"BOUNDW", LTYPE3, x86.ABOUNDW},
-       {"BSFL", LTYPE3, x86.ABSFL},
-       {"BSFW", LTYPE3, x86.ABSFW},
-       {"BSRL", LTYPE3, x86.ABSRL},
-       {"BSRW", LTYPE3, x86.ABSRW},
-       {"BSWAPL", LTYPE1, x86.ABSWAPL},
-       {"BTCL", LTYPE3, x86.ABTCL},
-       {"BTCW", LTYPE3, x86.ABTCW},
-       {"BTL", LTYPE3, x86.ABTL},
-       {"BTRL", LTYPE3, x86.ABTRL},
-       {"BTRW", LTYPE3, x86.ABTRW},
-       {"BTSL", LTYPE3, x86.ABTSL},
-       {"BTSW", LTYPE3, x86.ABTSW},
-       {"BTW", LTYPE3, x86.ABTW},
-       {"BYTE", LTYPE2, x86.ABYTE},
-       {"CALL", LTYPEC, obj.ACALL},
-       {"CLC", LTYPE0, x86.ACLC},
-       {"CLD", LTYPE0, x86.ACLD},
-       {"CLI", LTYPE0, x86.ACLI},
-       {"CLTS", LTYPE0, x86.ACLTS},
-       {"CMC", LTYPE0, x86.ACMC},
-       {"CMPB", LTYPE4, x86.ACMPB},
-       {"CMPL", LTYPE4, x86.ACMPL},
-       {"CMPW", LTYPE4, x86.ACMPW},
-       {"CMPSB", LTYPE0, x86.ACMPSB},
-       {"CMPSL", LTYPE0, x86.ACMPSL},
-       {"CMPSW", LTYPE0, x86.ACMPSW},
-       {"CMPXCHG8B", LTYPE1, x86.ACMPXCHG8B},
-       {"CMPXCHGB", LTYPE3, x86.ACMPXCHGB},
-       {"CMPXCHGL", LTYPE3, x86.ACMPXCHGL},
-       {"CMPXCHGW", LTYPE3, x86.ACMPXCHGW},
-       {"CPUID", LTYPE0, x86.ACPUID},
-       {"DAA", LTYPE0, x86.ADAA},
-       {"DAS", LTYPE0, x86.ADAS},
-       {"DATA", LTYPED, obj.ADATA},
-       {"DECB", LTYPE1, x86.ADECB},
-       {"DECL", LTYPE1, x86.ADECL},
-       {"DECW", LTYPE1, x86.ADECW},
-       {"DIVB", LTYPE2, x86.ADIVB},
-       {"DIVL", LTYPE2, x86.ADIVL},
-       {"DIVW", LTYPE2, x86.ADIVW},
-       {"END", LTYPE0, obj.AEND},
-       {"ENTER", LTYPE2, x86.AENTER},
-       {"GLOBL", LTYPEG, obj.AGLOBL},
-       {"HLT", LTYPE0, x86.AHLT},
-       {"IDIVB", LTYPE2, x86.AIDIVB},
-       {"IDIVL", LTYPE2, x86.AIDIVL},
-       {"IDIVW", LTYPE2, x86.AIDIVW},
-       {"IMULB", LTYPE2, x86.AIMULB},
-       {"IMULL", LTYPEI, x86.AIMULL},
-       {"IMULW", LTYPEI, x86.AIMULW},
-       {"INB", LTYPE0, x86.AINB},
-       {"INL", LTYPE0, x86.AINL},
-       {"INW", LTYPE0, x86.AINW},
-       {"INCB", LTYPE1, x86.AINCB},
-       {"INCL", LTYPE1, x86.AINCL},
-       {"INCW", LTYPE1, x86.AINCW},
-       {"INSB", LTYPE0, x86.AINSB},
-       {"INSL", LTYPE0, x86.AINSL},
-       {"INSW", LTYPE0, x86.AINSW},
-       {"INT", LTYPE2, x86.AINT},
-       {"INTO", LTYPE0, x86.AINTO},
-       {"IRETL", LTYPE0, x86.AIRETL},
-       {"IRETW", LTYPE0, x86.AIRETW},
-       {"JOS", LTYPER, x86.AJOS},  /* overflow set (OF = 1) */
-       {"JO", LTYPER, x86.AJOS},   /* alternate */
-       {"JOC", LTYPER, x86.AJOC},  /* overflow clear (OF = 0) */
-       {"JNO", LTYPER, x86.AJOC},  /* alternate */
-       {"JCS", LTYPER, x86.AJCS},  /* carry set (CF = 1) */
-       {"JB", LTYPER, x86.AJCS},   /* alternate */
-       {"JC", LTYPER, x86.AJCS},   /* alternate */
-       {"JNAE", LTYPER, x86.AJCS}, /* alternate */
-       {"JLO", LTYPER, x86.AJCS},  /* alternate */
-       {"JCC", LTYPER, x86.AJCC},  /* carry clear (CF = 0) */
-       {"JAE", LTYPER, x86.AJCC},  /* alternate */
-       {"JNB", LTYPER, x86.AJCC},  /* alternate */
-       {"JNC", LTYPER, x86.AJCC},  /* alternate */
-       {"JHS", LTYPER, x86.AJCC},  /* alternate */
-       {"JEQ", LTYPER, x86.AJEQ},  /* equal (ZF = 1) */
-       {"JE", LTYPER, x86.AJEQ},   /* alternate */
-       {"JZ", LTYPER, x86.AJEQ},   /* alternate */
-       {"JNE", LTYPER, x86.AJNE},  /* not equal (ZF = 0) */
-       {"JNZ", LTYPER, x86.AJNE},  /* alternate */
-       {"JLS", LTYPER, x86.AJLS},  /* lower or same (unsigned) (CF = 1 || ZF = 1) */
-       {"JBE", LTYPER, x86.AJLS},  /* alternate */
-       {"JNA", LTYPER, x86.AJLS},  /* alternate */
-       {"JHI", LTYPER, x86.AJHI},  /* higher (unsigned) (CF = 0 && ZF = 0) */
-       {"JA", LTYPER, x86.AJHI},   /* alternate */
-       {"JNBE", LTYPER, x86.AJHI}, /* alternate */
-       {"JMI", LTYPER, x86.AJMI},  /* negative (minus) (SF = 1) */
-       {"JS", LTYPER, x86.AJMI},   /* alternate */
-       {"JPL", LTYPER, x86.AJPL},  /* non-negative (plus) (SF = 0) */
-       {"JNS", LTYPER, x86.AJPL},  /* alternate */
-       {"JPS", LTYPER, x86.AJPS},  /* parity set (PF = 1) */
-       {"JP", LTYPER, x86.AJPS},   /* alternate */
-       {"JPE", LTYPER, x86.AJPS},  /* alternate */
-       {"JPC", LTYPER, x86.AJPC},  /* parity clear (PF = 0) */
-       {"JNP", LTYPER, x86.AJPC},  /* alternate */
-       {"JPO", LTYPER, x86.AJPC},  /* alternate */
-       {"JLT", LTYPER, x86.AJLT},  /* less than (signed) (SF != OF) */
-       {"JL", LTYPER, x86.AJLT},   /* alternate */
-       {"JNGE", LTYPER, x86.AJLT}, /* alternate */
-       {"JGE", LTYPER, x86.AJGE},  /* greater than or equal (signed) (SF = OF) */
-       {"JNL", LTYPER, x86.AJGE},  /* alternate */
-       {"JLE", LTYPER, x86.AJLE},  /* less than or equal (signed) (ZF = 1 || SF != OF) */
-       {"JNG", LTYPER, x86.AJLE},  /* alternate */
-       {"JGT", LTYPER, x86.AJGT},  /* greater than (signed) (ZF = 0 && SF = OF) */
-       {"JG", LTYPER, x86.AJGT},   /* alternate */
-       {"JNLE", LTYPER, x86.AJGT}, /* alternate */
-       {"JCXZL", LTYPER, x86.AJCXZL},
-       {"JCXZW", LTYPER, x86.AJCXZW},
-       {"JMP", LTYPEC, obj.AJMP},
-       {"LAHF", LTYPE0, x86.ALAHF},
-       {"LARL", LTYPE3, x86.ALARL},
-       {"LARW", LTYPE3, x86.ALARW},
-       {"LEAL", LTYPE3, x86.ALEAL},
-       {"LEAW", LTYPE3, x86.ALEAW},
-       {"LEAVEL", LTYPE0, x86.ALEAVEL},
-       {"LEAVEW", LTYPE0, x86.ALEAVEW},
-       {"LOCK", LTYPE0, x86.ALOCK},
-       {"LODSB", LTYPE0, x86.ALODSB},
-       {"LODSL", LTYPE0, x86.ALODSL},
-       {"LODSW", LTYPE0, x86.ALODSW},
-       {"LONG", LTYPE2, x86.ALONG},
-       {"LOOP", LTYPER, x86.ALOOP},
-       {"LOOPEQ", LTYPER, x86.ALOOPEQ},
-       {"LOOPNE", LTYPER, x86.ALOOPNE},
-       {"LSLL", LTYPE3, x86.ALSLL},
-       {"LSLW", LTYPE3, x86.ALSLW},
-       {"MOVB", LTYPE3, x86.AMOVB},
-       {"MOVL", LTYPEM, x86.AMOVL},
-       {"MOVW", LTYPEM, x86.AMOVW},
-       {"MOVQ", LTYPEM, x86.AMOVQ},
-       {"MOVBLSX", LTYPE3, x86.AMOVBLSX},
-       {"MOVBLZX", LTYPE3, x86.AMOVBLZX},
-       {"MOVBWSX", LTYPE3, x86.AMOVBWSX},
-       {"MOVBWZX", LTYPE3, x86.AMOVBWZX},
-       {"MOVWLSX", LTYPE3, x86.AMOVWLSX},
-       {"MOVWLZX", LTYPE3, x86.AMOVWLZX},
-       {"MOVSB", LTYPE0, x86.AMOVSB},
-       {"MOVSL", LTYPE0, x86.AMOVSL},
-       {"MOVSW", LTYPE0, x86.AMOVSW},
-       {"MULB", LTYPE2, x86.AMULB},
-       {"MULL", LTYPE2, x86.AMULL},
-       {"MULW", LTYPE2, x86.AMULW},
-       {"NEGB", LTYPE1, x86.ANEGB},
-       {"NEGL", LTYPE1, x86.ANEGL},
-       {"NEGW", LTYPE1, x86.ANEGW},
-       {"NOP", LTYPEN, obj.ANOP},
-       {"NOTB", LTYPE1, x86.ANOTB},
-       {"NOTL", LTYPE1, x86.ANOTL},
-       {"NOTW", LTYPE1, x86.ANOTW},
-       {"ORB", LTYPE3, x86.AORB},
-       {"ORL", LTYPE3, x86.AORL},
-       {"ORW", LTYPE3, x86.AORW},
-       {"OUTB", LTYPE0, x86.AOUTB},
-       {"OUTL", LTYPE0, x86.AOUTL},
-       {"OUTW", LTYPE0, x86.AOUTW},
-       {"OUTSB", LTYPE0, x86.AOUTSB},
-       {"OUTSL", LTYPE0, x86.AOUTSL},
-       {"OUTSW", LTYPE0, x86.AOUTSW},
-       {"PAUSE", LTYPEN, x86.APAUSE},
-       {"PINSRD", LTYPEX, x86.APINSRD},
-       {"POPAL", LTYPE0, x86.APOPAL},
-       {"POPAW", LTYPE0, x86.APOPAW},
-       {"POPFL", LTYPE0, x86.APOPFL},
-       {"POPFW", LTYPE0, x86.APOPFW},
-       {"POPL", LTYPE1, x86.APOPL},
-       {"POPW", LTYPE1, x86.APOPW},
-       {"PUSHAL", LTYPE0, x86.APUSHAL},
-       {"PUSHAW", LTYPE0, x86.APUSHAW},
-       {"PUSHFL", LTYPE0, x86.APUSHFL},
-       {"PUSHFW", LTYPE0, x86.APUSHFW},
-       {"PUSHL", LTYPE2, x86.APUSHL},
-       {"PUSHW", LTYPE2, x86.APUSHW},
-       {"RCLB", LTYPE3, x86.ARCLB},
-       {"RCLL", LTYPE3, x86.ARCLL},
-       {"RCLW", LTYPE3, x86.ARCLW},
-       {"RCRB", LTYPE3, x86.ARCRB},
-       {"RCRL", LTYPE3, x86.ARCRL},
-       {"RCRW", LTYPE3, x86.ARCRW},
-       {"RDTSC", LTYPE0, x86.ARDTSC},
-       {"REP", LTYPE0, x86.AREP},
-       {"REPN", LTYPE0, x86.AREPN},
-       {"RET", LTYPE0, obj.ARET},
-       {"ROLB", LTYPE3, x86.AROLB},
-       {"ROLL", LTYPE3, x86.AROLL},
-       {"ROLW", LTYPE3, x86.AROLW},
-       {"RORB", LTYPE3, x86.ARORB},
-       {"RORL", LTYPE3, x86.ARORL},
-       {"RORW", LTYPE3, x86.ARORW},
-       {"SAHF", LTYPE0, x86.ASAHF},
-       {"SALB", LTYPE3, x86.ASALB},
-       {"SALL", LTYPE3, x86.ASALL},
-       {"SALW", LTYPE3, x86.ASALW},
-       {"SARB", LTYPE3, x86.ASARB},
-       {"SARL", LTYPE3, x86.ASARL},
-       {"SARW", LTYPE3, x86.ASARW},
-       {"SBBB", LTYPE3, x86.ASBBB},
-       {"SBBL", LTYPE3, x86.ASBBL},
-       {"SBBW", LTYPE3, x86.ASBBW},
-       {"SCASB", LTYPE0, x86.ASCASB},
-       {"SCASL", LTYPE0, x86.ASCASL},
-       {"SCASW", LTYPE0, x86.ASCASW},
-       {"SETCC", LTYPE1, x86.ASETCC}, /* see JCC etc above for condition codes */
-       {"SETCS", LTYPE1, x86.ASETCS},
-       {"SETEQ", LTYPE1, x86.ASETEQ},
-       {"SETGE", LTYPE1, x86.ASETGE},
-       {"SETGT", LTYPE1, x86.ASETGT},
-       {"SETHI", LTYPE1, x86.ASETHI},
-       {"SETLE", LTYPE1, x86.ASETLE},
-       {"SETLS", LTYPE1, x86.ASETLS},
-       {"SETLT", LTYPE1, x86.ASETLT},
-       {"SETMI", LTYPE1, x86.ASETMI},
-       {"SETNE", LTYPE1, x86.ASETNE},
-       {"SETOC", LTYPE1, x86.ASETOC},
-       {"SETOS", LTYPE1, x86.ASETOS},
-       {"SETPC", LTYPE1, x86.ASETPC},
-       {"SETPL", LTYPE1, x86.ASETPL},
-       {"SETPS", LTYPE1, x86.ASETPS},
-       {"CDQ", LTYPE0, x86.ACDQ},
-       {"CWD", LTYPE0, x86.ACWD},
-       {"SHLB", LTYPE3, x86.ASHLB},
-       {"SHLL", LTYPES, x86.ASHLL},
-       {"SHLW", LTYPES, x86.ASHLW},
-       {"SHRB", LTYPE3, x86.ASHRB},
-       {"SHRL", LTYPES, x86.ASHRL},
-       {"SHRW", LTYPES, x86.ASHRW},
-       {"STC", LTYPE0, x86.ASTC},
-       {"STD", LTYPE0, x86.ASTD},
-       {"STI", LTYPE0, x86.ASTI},
-       {"STOSB", LTYPE0, x86.ASTOSB},
-       {"STOSL", LTYPE0, x86.ASTOSL},
-       {"STOSW", LTYPE0, x86.ASTOSW},
-       {"SUBB", LTYPE3, x86.ASUBB},
-       {"SUBL", LTYPE3, x86.ASUBL},
-       {"SUBW", LTYPE3, x86.ASUBW},
-       {"SYSCALL", LTYPE0, x86.ASYSCALL},
-       {"TESTB", LTYPE3, x86.ATESTB},
-       {"TESTL", LTYPE3, x86.ATESTL},
-       {"TESTW", LTYPE3, x86.ATESTW},
-       {"TEXT", LTYPET, obj.ATEXT},
-       {"VERR", LTYPE2, x86.AVERR},
-       {"VERW", LTYPE2, x86.AVERW},
-       {"WAIT", LTYPE0, x86.AWAIT},
-       {"WORD", LTYPE2, x86.AWORD},
-       {"XADDB", LTYPE3, x86.AXADDB},
-       {"XADDL", LTYPE3, x86.AXADDL},
-       {"XADDW", LTYPE3, x86.AXADDW},
-       {"XCHGB", LTYPE3, x86.AXCHGB},
-       {"XCHGL", LTYPE3, x86.AXCHGL},
-       {"XCHGW", LTYPE3, x86.AXCHGW},
-       {"XLAT", LTYPE2, x86.AXLAT},
-       {"XORB", LTYPE3, x86.AXORB},
-       {"XORL", LTYPE3, x86.AXORL},
-       {"XORW", LTYPE3, x86.AXORW},
-       {"CMOVLCC", LTYPE3, x86.ACMOVLCC},
-       {"CMOVLCS", LTYPE3, x86.ACMOVLCS},
-       {"CMOVLEQ", LTYPE3, x86.ACMOVLEQ},
-       {"CMOVLGE", LTYPE3, x86.ACMOVLGE},
-       {"CMOVLGT", LTYPE3, x86.ACMOVLGT},
-       {"CMOVLHI", LTYPE3, x86.ACMOVLHI},
-       {"CMOVLLE", LTYPE3, x86.ACMOVLLE},
-       {"CMOVLLS", LTYPE3, x86.ACMOVLLS},
-       {"CMOVLLT", LTYPE3, x86.ACMOVLLT},
-       {"CMOVLMI", LTYPE3, x86.ACMOVLMI},
-       {"CMOVLNE", LTYPE3, x86.ACMOVLNE},
-       {"CMOVLOC", LTYPE3, x86.ACMOVLOC},
-       {"CMOVLOS", LTYPE3, x86.ACMOVLOS},
-       {"CMOVLPC", LTYPE3, x86.ACMOVLPC},
-       {"CMOVLPL", LTYPE3, x86.ACMOVLPL},
-       {"CMOVLPS", LTYPE3, x86.ACMOVLPS},
-       {"CMOVWCC", LTYPE3, x86.ACMOVWCC},
-       {"CMOVWCS", LTYPE3, x86.ACMOVWCS},
-       {"CMOVWEQ", LTYPE3, x86.ACMOVWEQ},
-       {"CMOVWGE", LTYPE3, x86.ACMOVWGE},
-       {"CMOVWGT", LTYPE3, x86.ACMOVWGT},
-       {"CMOVWHI", LTYPE3, x86.ACMOVWHI},
-       {"CMOVWLE", LTYPE3, x86.ACMOVWLE},
-       {"CMOVWLS", LTYPE3, x86.ACMOVWLS},
-       {"CMOVWLT", LTYPE3, x86.ACMOVWLT},
-       {"CMOVWMI", LTYPE3, x86.ACMOVWMI},
-       {"CMOVWNE", LTYPE3, x86.ACMOVWNE},
-       {"CMOVWOC", LTYPE3, x86.ACMOVWOC},
-       {"CMOVWOS", LTYPE3, x86.ACMOVWOS},
-       {"CMOVWPC", LTYPE3, x86.ACMOVWPC},
-       {"CMOVWPL", LTYPE3, x86.ACMOVWPL},
-       {"CMOVWPS", LTYPE3, x86.ACMOVWPS},
-       {"FMOVB", LTYPE3, x86.AFMOVB},
-       {"FMOVBP", LTYPE3, x86.AFMOVBP},
-       {"FMOVD", LTYPE3, x86.AFMOVD},
-       {"FMOVDP", LTYPE3, x86.AFMOVDP},
-       {"FMOVF", LTYPE3, x86.AFMOVF},
-       {"FMOVFP", LTYPE3, x86.AFMOVFP},
-       {"FMOVL", LTYPE3, x86.AFMOVL},
-       {"FMOVLP", LTYPE3, x86.AFMOVLP},
-       {"FMOVV", LTYPE3, x86.AFMOVV},
-       {"FMOVVP", LTYPE3, x86.AFMOVVP},
-       {"FMOVW", LTYPE3, x86.AFMOVW},
-       {"FMOVWP", LTYPE3, x86.AFMOVWP},
-       {"FMOVX", LTYPE3, x86.AFMOVX},
-       {"FMOVXP", LTYPE3, x86.AFMOVXP},
-       {"FCMOVCC", LTYPE3, x86.AFCMOVCC},
-       {"FCMOVCS", LTYPE3, x86.AFCMOVCS},
-       {"FCMOVEQ", LTYPE3, x86.AFCMOVEQ},
-       {"FCMOVHI", LTYPE3, x86.AFCMOVHI},
-       {"FCMOVLS", LTYPE3, x86.AFCMOVLS},
-       {"FCMOVNE", LTYPE3, x86.AFCMOVNE},
-       {"FCMOVNU", LTYPE3, x86.AFCMOVNU},
-       {"FCMOVUN", LTYPE3, x86.AFCMOVUN},
-       {"FCOMB", LTYPE3, x86.AFCOMB},
-       {"FCOMBP", LTYPE3, x86.AFCOMBP},
-       {"FCOMD", LTYPE3, x86.AFCOMD},
-       {"FCOMDP", LTYPE3, x86.AFCOMDP},
-       {"FCOMDPP", LTYPE3, x86.AFCOMDPP},
-       {"FCOMF", LTYPE3, x86.AFCOMF},
-       {"FCOMFP", LTYPE3, x86.AFCOMFP},
-       {"FCOMI", LTYPE3, x86.AFCOMI},
-       {"FCOMIP", LTYPE3, x86.AFCOMIP},
-       {"FCOML", LTYPE3, x86.AFCOML},
-       {"FCOMLP", LTYPE3, x86.AFCOMLP},
-       {"FCOMW", LTYPE3, x86.AFCOMW},
-       {"FCOMWP", LTYPE3, x86.AFCOMWP},
-       {"FUCOM", LTYPE3, x86.AFUCOM},
-       {"FUCOMI", LTYPE3, x86.AFUCOMI},
-       {"FUCOMIP", LTYPE3, x86.AFUCOMIP},
-       {"FUCOMP", LTYPE3, x86.AFUCOMP},
-       {"FUCOMPP", LTYPE3, x86.AFUCOMPP},
-       {"FADDW", LTYPE3, x86.AFADDW},
-       {"FADDL", LTYPE3, x86.AFADDL},
-       {"FADDF", LTYPE3, x86.AFADDF},
-       {"FADDD", LTYPE3, x86.AFADDD},
-       {"FADDDP", LTYPE3, x86.AFADDDP},
-       {"FSUBDP", LTYPE3, x86.AFSUBDP},
-       {"FSUBW", LTYPE3, x86.AFSUBW},
-       {"FSUBL", LTYPE3, x86.AFSUBL},
-       {"FSUBF", LTYPE3, x86.AFSUBF},
-       {"FSUBD", LTYPE3, x86.AFSUBD},
-       {"FSUBRDP", LTYPE3, x86.AFSUBRDP},
-       {"FSUBRW", LTYPE3, x86.AFSUBRW},
-       {"FSUBRL", LTYPE3, x86.AFSUBRL},
-       {"FSUBRF", LTYPE3, x86.AFSUBRF},
-       {"FSUBRD", LTYPE3, x86.AFSUBRD},
-       {"FMULDP", LTYPE3, x86.AFMULDP},
-       {"FMULW", LTYPE3, x86.AFMULW},
-       {"FMULL", LTYPE3, x86.AFMULL},
-       {"FMULF", LTYPE3, x86.AFMULF},
-       {"FMULD", LTYPE3, x86.AFMULD},
-       {"FDIVDP", LTYPE3, x86.AFDIVDP},
-       {"FDIVW", LTYPE3, x86.AFDIVW},
-       {"FDIVL", LTYPE3, x86.AFDIVL},
-       {"FDIVF", LTYPE3, x86.AFDIVF},
-       {"FDIVD", LTYPE3, x86.AFDIVD},
-       {"FDIVRDP", LTYPE3, x86.AFDIVRDP},
-       {"FDIVRW", LTYPE3, x86.AFDIVRW},
-       {"FDIVRL", LTYPE3, x86.AFDIVRL},
-       {"FDIVRF", LTYPE3, x86.AFDIVRF},
-       {"FDIVRD", LTYPE3, x86.AFDIVRD},
-       {"FXCHD", LTYPE3, x86.AFXCHD},
-       {"FFREE", LTYPE1, x86.AFFREE},
-       {"FLDCW", LTYPE2, x86.AFLDCW},
-       {"FLDENV", LTYPE1, x86.AFLDENV},
-       {"FRSTOR", LTYPE2, x86.AFRSTOR},
-       {"FSAVE", LTYPE1, x86.AFSAVE},
-       {"FSTCW", LTYPE1, x86.AFSTCW},
-       {"FSTENV", LTYPE1, x86.AFSTENV},
-       {"FSTSW", LTYPE1, x86.AFSTSW},
-       {"F2XM1", LTYPE0, x86.AF2XM1},
-       {"FABS", LTYPE0, x86.AFABS},
-       {"FCHS", LTYPE0, x86.AFCHS},
-       {"FCLEX", LTYPE0, x86.AFCLEX},
-       {"FCOS", LTYPE0, x86.AFCOS},
-       {"FDECSTP", LTYPE0, x86.AFDECSTP},
-       {"FINCSTP", LTYPE0, x86.AFINCSTP},
-       {"FINIT", LTYPE0, x86.AFINIT},
-       {"FLD1", LTYPE0, x86.AFLD1},
-       {"FLDL2E", LTYPE0, x86.AFLDL2E},
-       {"FLDL2T", LTYPE0, x86.AFLDL2T},
-       {"FLDLG2", LTYPE0, x86.AFLDLG2},
-       {"FLDLN2", LTYPE0, x86.AFLDLN2},
-       {"FLDPI", LTYPE0, x86.AFLDPI},
-       {"FLDZ", LTYPE0, x86.AFLDZ},
-       {"FNOP", LTYPE0, x86.AFNOP},
-       {"FPATAN", LTYPE0, x86.AFPATAN},
-       {"FPREM", LTYPE0, x86.AFPREM},
-       {"FPREM1", LTYPE0, x86.AFPREM1},
-       {"FPTAN", LTYPE0, x86.AFPTAN},
-       {"FRNDINT", LTYPE0, x86.AFRNDINT},
-       {"FSCALE", LTYPE0, x86.AFSCALE},
-       {"FSIN", LTYPE0, x86.AFSIN},
-       {"FSINCOS", LTYPE0, x86.AFSINCOS},
-       {"FSQRT", LTYPE0, x86.AFSQRT},
-       {"FTST", LTYPE0, x86.AFTST},
-       {"FXAM", LTYPE0, x86.AFXAM},
-       {"FXTRACT", LTYPE0, x86.AFXTRACT},
-       {"FYL2X", LTYPE0, x86.AFYL2X},
-       {"FYL2XP1", LTYPE0, x86.AFYL2XP1},
-       {"LFENCE", LTYPE0, x86.ALFENCE},
-       {"MFENCE", LTYPE0, x86.AMFENCE},
-       {"SFENCE", LTYPE0, x86.ASFENCE},
-       {"EMMS", LTYPE0, x86.AEMMS},
-       {"PREFETCHT0", LTYPE2, x86.APREFETCHT0},
-       {"PREFETCHT1", LTYPE2, x86.APREFETCHT1},
-       {"PREFETCHT2", LTYPE2, x86.APREFETCHT2},
-       {"PREFETCHNTA", LTYPE2, x86.APREFETCHNTA},
-       {"UNDEF", LTYPE0, obj.AUNDEF},
-       {"ADDPD", LTYPE3, x86.AADDPD},
-       {"ADDPS", LTYPE3, x86.AADDPS},
-       {"ADDSD", LTYPE3, x86.AADDSD},
-       {"ADDSS", LTYPE3, x86.AADDSS},
-       {"AESENC", LTYPE3, x86.AAESENC},
-       {"ANDNPD", LTYPE3, x86.AANDNPD},
-       {"ANDNPS", LTYPE3, x86.AANDNPS},
-       {"ANDPD", LTYPE3, x86.AANDPD},
-       {"ANDPS", LTYPE3, x86.AANDPS},
-       {"CMPPD", LTYPEXC, x86.ACMPPD},
-       {"CMPPS", LTYPEXC, x86.ACMPPS},
-       {"CMPSD", LTYPEXC, x86.ACMPSD},
-       {"CMPSS", LTYPEXC, x86.ACMPSS},
-       {"COMISD", LTYPE3, x86.ACOMISD},
-       {"COMISS", LTYPE3, x86.ACOMISS},
-       {"CVTPL2PD", LTYPE3, x86.ACVTPL2PD},
-       {"CVTPL2PS", LTYPE3, x86.ACVTPL2PS},
-       {"CVTPD2PL", LTYPE3, x86.ACVTPD2PL},
-       {"CVTPD2PS", LTYPE3, x86.ACVTPD2PS},
-       {"CVTPS2PL", LTYPE3, x86.ACVTPS2PL},
-       {"CVTPS2PD", LTYPE3, x86.ACVTPS2PD},
-       {"CVTSD2SL", LTYPE3, x86.ACVTSD2SL},
-       {"CVTSD2SS", LTYPE3, x86.ACVTSD2SS},
-       {"CVTSL2SD", LTYPE3, x86.ACVTSL2SD},
-       {"CVTSL2SS", LTYPE3, x86.ACVTSL2SS},
-       {"CVTSS2SD", LTYPE3, x86.ACVTSS2SD},
-       {"CVTSS2SL", LTYPE3, x86.ACVTSS2SL},
-       {"CVTTPD2PL", LTYPE3, x86.ACVTTPD2PL},
-       {"CVTTPS2PL", LTYPE3, x86.ACVTTPS2PL},
-       {"CVTTSD2SL", LTYPE3, x86.ACVTTSD2SL},
-       {"CVTTSS2SL", LTYPE3, x86.ACVTTSS2SL},
-       {"DIVPD", LTYPE3, x86.ADIVPD},
-       {"DIVPS", LTYPE3, x86.ADIVPS},
-       {"DIVSD", LTYPE3, x86.ADIVSD},
-       {"DIVSS", LTYPE3, x86.ADIVSS},
-       {"MASKMOVOU", LTYPE3, x86.AMASKMOVOU},
-       {"MASKMOVDQU", LTYPE3, x86.AMASKMOVOU}, /* syn */
-       {"MAXPD", LTYPE3, x86.AMAXPD},
-       {"MAXPS", LTYPE3, x86.AMAXPS},
-       {"MAXSD", LTYPE3, x86.AMAXSD},
-       {"MAXSS", LTYPE3, x86.AMAXSS},
-       {"MINPD", LTYPE3, x86.AMINPD},
-       {"MINPS", LTYPE3, x86.AMINPS},
-       {"MINSD", LTYPE3, x86.AMINSD},
-       {"MINSS", LTYPE3, x86.AMINSS},
-       {"MOVAPD", LTYPE3, x86.AMOVAPD},
-       {"MOVAPS", LTYPE3, x86.AMOVAPS},
-       {"MOVO", LTYPE3, x86.AMOVO},
-       {"MOVOA", LTYPE3, x86.AMOVO}, /* syn */
-       {"MOVOU", LTYPE3, x86.AMOVOU},
-       {"MOVHLPS", LTYPE3, x86.AMOVHLPS},
-       {"MOVHPD", LTYPE3, x86.AMOVHPD},
-       {"MOVHPS", LTYPE3, x86.AMOVHPS},
-       {"MOVLHPS", LTYPE3, x86.AMOVLHPS},
-       {"MOVLPD", LTYPE3, x86.AMOVLPD},
-       {"MOVLPS", LTYPE3, x86.AMOVLPS},
-       {"MOVMSKPD", LTYPE3, x86.AMOVMSKPD},
-       {"MOVMSKPS", LTYPE3, x86.AMOVMSKPS},
-       {"MOVNTO", LTYPE3, x86.AMOVNTO},
-       {"MOVNTDQ", LTYPE3, x86.AMOVNTO}, /* syn */
-       {"MOVNTPD", LTYPE3, x86.AMOVNTPD},
-       {"MOVNTPS", LTYPE3, x86.AMOVNTPS},
-       {"MOVSD", LTYPE3, x86.AMOVSD},
-       {"MOVSS", LTYPE3, x86.AMOVSS},
-       {"MOVUPD", LTYPE3, x86.AMOVUPD},
-       {"MOVUPS", LTYPE3, x86.AMOVUPS},
-       {"MULPD", LTYPE3, x86.AMULPD},
-       {"MULPS", LTYPE3, x86.AMULPS},
-       {"MULSD", LTYPE3, x86.AMULSD},
-       {"MULSS", LTYPE3, x86.AMULSS},
-       {"ORPD", LTYPE3, x86.AORPD},
-       {"ORPS", LTYPE3, x86.AORPS},
-       {"PADDQ", LTYPE3, x86.APADDQ},
-       {"PAND", LTYPE3, x86.APAND},
-       {"PCMPEQB", LTYPE3, x86.APCMPEQB},
-       {"PMAXSW", LTYPE3, x86.APMAXSW},
-       {"PMAXUB", LTYPE3, x86.APMAXUB},
-       {"PMINSW", LTYPE3, x86.APMINSW},
-       {"PMINUB", LTYPE3, x86.APMINUB},
-       {"PMOVMSKB", LTYPE3, x86.APMOVMSKB},
-       {"PSADBW", LTYPE3, x86.APSADBW},
-       {"PSHUFB", LTYPE3, x86.APSHUFB},
-       {"PSHUFHW", LTYPEX, x86.APSHUFHW},
-       {"PSHUFL", LTYPEX, x86.APSHUFL},
-       {"PSHUFLW", LTYPEX, x86.APSHUFLW},
-       {"PSUBB", LTYPE3, x86.APSUBB},
-       {"PSUBL", LTYPE3, x86.APSUBL},
-       {"PSUBQ", LTYPE3, x86.APSUBQ},
-       {"PSUBSB", LTYPE3, x86.APSUBSB},
-       {"PSUBSW", LTYPE3, x86.APSUBSW},
-       {"PSUBUSB", LTYPE3, x86.APSUBUSB},
-       {"PSUBUSW", LTYPE3, x86.APSUBUSW},
-       {"PSUBW", LTYPE3, x86.APSUBW},
-       {"PUNPCKHQDQ", LTYPE3, x86.APUNPCKHQDQ},
-       {"PUNPCKLQDQ", LTYPE3, x86.APUNPCKLQDQ},
-       {"PXOR", LTYPE3, x86.APXOR},
-       {"RCPPS", LTYPE3, x86.ARCPPS},
-       {"RCPSS", LTYPE3, x86.ARCPSS},
-       {"RSQRTPS", LTYPE3, x86.ARSQRTPS},
-       {"RSQRTSS", LTYPE3, x86.ARSQRTSS},
-       {"SQRTPD", LTYPE3, x86.ASQRTPD},
-       {"SQRTPS", LTYPE3, x86.ASQRTPS},
-       {"SQRTSD", LTYPE3, x86.ASQRTSD},
-       {"SQRTSS", LTYPE3, x86.ASQRTSS},
-       {"SUBPD", LTYPE3, x86.ASUBPD},
-       {"SUBPS", LTYPE3, x86.ASUBPS},
-       {"SUBSD", LTYPE3, x86.ASUBSD},
-       {"SUBSS", LTYPE3, x86.ASUBSS},
-       {"UCOMISD", LTYPE3, x86.AUCOMISD},
-       {"UCOMISS", LTYPE3, x86.AUCOMISS},
-       {"UNPCKHPD", LTYPE3, x86.AUNPCKHPD},
-       {"UNPCKHPS", LTYPE3, x86.AUNPCKHPS},
-       {"UNPCKLPD", LTYPE3, x86.AUNPCKLPD},
-       {"UNPCKLPS", LTYPE3, x86.AUNPCKLPS},
-       {"XORPD", LTYPE3, x86.AXORPD},
-       {"XORPS", LTYPE3, x86.AXORPS},
-       {"USEFIELD", LTYPEN, obj.AUSEFIELD},
-       {"PCDATA", LTYPEPC, obj.APCDATA},
-       {"FUNCDATA", LTYPEF, obj.AFUNCDATA},
-}
-
-func cinit() {
-       nullgen.Type = x86.REG_NONE
-       nullgen.Index = x86.REG_NONE
-}
-
-func checkscale(scale int16) {
-       switch scale {
-       case 1,
-               2,
-               4,
-               8:
-               return
-       }
-
-       yyerror("scale must be 1248: %d", scale)
-}
-
-func syminit(s *asm.Sym) {
-       s.Type = LNAME
-       s.Value = 0
-}
-
-func cclean() {
-       var g2 Addr2
-
-       g2.from = nullgen
-       g2.to = nullgen
-       outcode(obj.AEND, &g2)
-}
-
-var lastpc *obj.Prog
-
-type Addr2 struct {
-       from obj.Addr
-       to   obj.Addr
-}
-
-func outcode(a int, g2 *Addr2) {
-       var p *obj.Prog
-       var pl *obj.Plist
-
-       if asm.Pass == 1 {
-               goto out
-       }
-
-       p = new(obj.Prog)
-       *p = obj.Prog{}
-       p.Ctxt = asm.Ctxt
-       p.As = int16(a)
-       p.Lineno = stmtline
-       p.From = g2.from
-       p.To = g2.to
-       p.Pc = int64(asm.PC)
-
-       if lastpc == nil {
-               pl = obj.Linknewplist(asm.Ctxt)
-               pl.Firstpc = p
-       } else {
-
-               lastpc.Link = p
-       }
-       lastpc = p
-
-out:
-       if a != obj.AGLOBL && a != obj.ADATA {
-               asm.PC++
-       }
-}
diff --git a/src/cmd/old8a/y.go b/src/cmd/old8a/y.go
deleted file mode 100644 (file)
index af47224..0000000
+++ /dev/null
@@ -1,1509 +0,0 @@
-//line a.y:32
-package main
-
-import __yyfmt__ "fmt"
-
-//line a.y:32
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/x86"
-)
-
-//line a.y:41
-type yySymType struct {
-       yys  int
-       sym  *asm.Sym
-       lval int64
-       con2 struct {
-               v1 int32
-               v2 int32
-       }
-       dval  float64
-       sval  string
-       addr  obj.Addr
-       addr2 Addr2
-}
-
-const LTYPE0 = 57346
-const LTYPE1 = 57347
-const LTYPE2 = 57348
-const LTYPE3 = 57349
-const LTYPE4 = 57350
-const LTYPEC = 57351
-const LTYPED = 57352
-const LTYPEN = 57353
-const LTYPER = 57354
-const LTYPET = 57355
-const LTYPES = 57356
-const LTYPEM = 57357
-const LTYPEI = 57358
-const LTYPEG = 57359
-const LTYPEXC = 57360
-const LTYPEX = 57361
-const LTYPEPC = 57362
-const LTYPEF = 57363
-const LCONST = 57364
-const LFP = 57365
-const LPC = 57366
-const LSB = 57367
-const LBREG = 57368
-const LLREG = 57369
-const LSREG = 57370
-const LFREG = 57371
-const LXREG = 57372
-const LFCONST = 57373
-const LSCONST = 57374
-const LSP = 57375
-const LNAME = 57376
-const LLAB = 57377
-const LVAR = 57378
-
-var yyToknames = [...]string{
-       "$end",
-       "error",
-       "$unk",
-       "'|'",
-       "'^'",
-       "'&'",
-       "'<'",
-       "'>'",
-       "'+'",
-       "'-'",
-       "'*'",
-       "'/'",
-       "'%'",
-       "LTYPE0",
-       "LTYPE1",
-       "LTYPE2",
-       "LTYPE3",
-       "LTYPE4",
-       "LTYPEC",
-       "LTYPED",
-       "LTYPEN",
-       "LTYPER",
-       "LTYPET",
-       "LTYPES",
-       "LTYPEM",
-       "LTYPEI",
-       "LTYPEG",
-       "LTYPEXC",
-       "LTYPEX",
-       "LTYPEPC",
-       "LTYPEF",
-       "LCONST",
-       "LFP",
-       "LPC",
-       "LSB",
-       "LBREG",
-       "LLREG",
-       "LSREG",
-       "LFREG",
-       "LXREG",
-       "LFCONST",
-       "LSCONST",
-       "LSP",
-       "LNAME",
-       "LLAB",
-       "LVAR",
-       "':'",
-       "';'",
-       "'='",
-       "','",
-       "'$'",
-       "'('",
-       "')'",
-       "'~'",
-}
-var yyStatenames = [...]string{}
-
-const yyEofCode = 1
-const yyErrCode = 2
-const yyMaxDepth = 200
-
-//line yacctab:1
-var yyExca = [...]int{
-       -1, 1,
-       1, -1,
-       -2, 2,
-}
-
-const yyNprod = 131
-const yyPrivate = 57344
-
-var yyTokenNames []string
-var yyStates []string
-
-const yyLast = 594
-
-var yyAct = [...]int{
-
-       50, 226, 40, 3, 79, 77, 120, 49, 62, 207,
-       268, 267, 48, 169, 266, 72, 60, 262, 84, 70,
-       81, 254, 252, 71, 240, 80, 83, 115, 238, 65,
-       82, 236, 109, 99, 220, 109, 91, 93, 95, 52,
-       218, 209, 101, 103, 208, 170, 239, 233, 210, 173,
-       63, 206, 109, 56, 55, 168, 117, 118, 119, 108,
-       142, 135, 110, 116, 125, 112, 248, 104, 230, 229,
-       72, 225, 224, 223, 133, 109, 53, 84, 153, 81,
-       136, 140, 137, 152, 80, 83, 61, 150, 73, 82,
-       54, 141, 143, 149, 69, 63, 74, 39, 57, 148,
-       67, 147, 146, 126, 145, 39, 144, 134, 132, 131,
-       97, 154, 124, 36, 30, 34, 31, 33, 139, 32,
-       222, 221, 58, 175, 176, 111, 216, 242, 214, 241,
-       109, 117, 56, 55, 183, 72, 215, 165, 167, 182,
-       235, 140, 172, 166, 250, 251, 255, 183, 263, 181,
-       187, 141, 191, 193, 195, 53, 109, 109, 109, 109,
-       109, 256, 194, 109, 109, 109, 189, 190, 247, 54,
-       211, 228, 56, 130, 63, 74, 111, 57, 37, 117,
-       35, 217, 41, 196, 197, 198, 199, 200, 165, 167,
-       203, 204, 205, 227, 166, 53, 151, 88, 121, 87,
-       122, 123, 109, 109, 128, 127, 260, 58, 234, 54,
-       259, 105, 106, 237, 253, 129, 212, 57, 180, 42,
-       44, 47, 43, 45, 243, 257, 46, 244, 246, 231,
-       232, 184, 185, 186, 245, 188, 157, 158, 159, 249,
-       164, 163, 162, 160, 161, 155, 156, 157, 158, 159,
-       258, 7, 122, 123, 261, 155, 156, 157, 158, 159,
-       264, 265, 202, 9, 10, 11, 12, 13, 17, 27,
-       18, 14, 28, 19, 20, 21, 29, 23, 24, 25,
-       26, 56, 55, 78, 174, 201, 22, 16, 15, 171,
-       6, 107, 2, 4, 1, 8, 102, 5, 100, 98,
-       96, 94, 92, 90, 53, 56, 55, 138, 42, 44,
-       47, 43, 45, 86, 75, 46, 85, 66, 54, 64,
-       59, 68, 76, 63, 51, 213, 57, 0, 53, 56,
-       55, 0, 42, 44, 47, 43, 45, 0, 0, 46,
-       85, 0, 54, 0, 0, 0, 0, 63, 51, 0,
-       57, 0, 53, 56, 55, 0, 42, 44, 47, 43,
-       45, 0, 0, 46, 58, 0, 54, 0, 0, 0,
-       0, 63, 51, 0, 57, 0, 53, 56, 55, 0,
-       42, 44, 47, 43, 45, 0, 0, 46, 58, 0,
-       54, 0, 0, 0, 89, 0, 51, 0, 57, 0,
-       53, 56, 55, 0, 42, 44, 47, 43, 45, 0,
-       0, 46, 58, 0, 54, 0, 0, 0, 38, 0,
-       51, 0, 57, 0, 53, 56, 55, 0, 42, 44,
-       47, 43, 45, 0, 0, 46, 58, 0, 54, 0,
-       0, 56, 55, 0, 51, 0, 57, 0, 53, 0,
-       56, 55, 42, 44, 47, 43, 45, 56, 55, 46,
-       0, 0, 54, 0, 53, 0, 56, 55, 51, 113,
-       57, 0, 0, 53, 0, 114, 0, 0, 54, 0,
-       53, 0, 219, 0, 74, 0, 57, 54, 0, 53,
-       56, 55, 0, 74, 54, 57, 0, 56, 178, 192,
-       74, 73, 57, 54, 0, 0, 0, 56, 55, 74,
-       0, 57, 0, 53, 56, 55, 0, 0, 0, 0,
-       53, 0, 179, 0, 0, 0, 0, 54, 0, 177,
-       53, 0, 0, 74, 54, 57, 0, 53, 0, 0,
-       74, 0, 57, 0, 54, 0, 0, 0, 0, 58,
-       74, 54, 57, 0, 0, 0, 0, 51, 0, 57,
-       164, 163, 162, 160, 161, 155, 156, 157, 158, 159,
-       163, 162, 160, 161, 155, 156, 157, 158, 159, 162,
-       160, 161, 155, 156, 157, 158, 159, 160, 161, 155,
-       156, 157, 158, 159,
-}
-var yyPact = [...]int{
-
-       -1000, -1000, 249, -1000, 67, -1000, 71, 69, 66, 63,
-       368, 320, 320, 392, 44, -1000, -1000, 272, 344, 320,
-       320, 320, -1000, 392, -1, 320, 320, 78, 505, 505,
-       -1000, 498, -1000, -1000, 498, -1000, -1000, -1000, 392, -1000,
-       -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       13, 432, 11, -1000, -1000, 498, 498, 498, 191, -1000,
-       62, -1000, -1000, 163, -1000, 59, -1000, 58, -1000, 457,
-       -1000, 57, 9, 243, 498, -1000, 296, -1000, 392, -1000,
-       -1000, -1000, -1000, -1000, 8, 191, -1000, -1000, -1000, 392,
-       -1000, 56, -1000, 54, -1000, 52, -1000, 51, -1000, 49,
-       -1000, 43, -1000, 37, 184, 33, 28, 249, 556, -1000,
-       556, -1000, 151, 2, -8, 236, 105, -1000, -1000, -1000,
-       -3, 276, 498, 498, -1000, -1000, -1000, -1000, -1000, 488,
-       481, 392, 320, -1000, 457, 113, -1000, -1000, 416, -1000,
-       -1000, -1000, 100, -3, 392, 392, 392, 183, 392, 320,
-       320, 498, 448, 123, -1000, 498, 498, 498, 498, 498,
-       278, 254, 498, 498, 498, -2, -9, -12, -4, 498,
-       -1000, -1000, 205, 93, 243, -1000, -1000, -13, 441, -1000,
-       -1000, -1000, -1000, -19, 74, 73, -1000, 23, 22, -1000,
-       -1000, 21, 161, 19, -1000, 18, 225, 225, -1000, -1000,
-       -1000, 498, 498, 580, 573, 565, -5, 498, -1000, -1000,
-       103, -22, 498, -25, -1000, -1000, -1000, -6, -1000, -29,
-       -1000, 92, 89, 498, 183, -1, -1000, 218, 136, 15,
-       -1, 246, 246, 107, -31, 203, -1000, -32, -1000, 111,
-       -1000, -1000, -1000, -1000, -1000, -1000, 129, 215, 161, -1000,
-       199, 195, -1000, 498, -1000, -36, -1000, 116, -1000, 498,
-       498, -39, -1000, -1000, -42, -43, -1000, -1000, -1000,
-}
-var yyPgo = [...]int{
-
-       0, 0, 27, 325, 6, 182, 8, 2, 39, 4,
-       86, 16, 5, 12, 7, 1, 180, 321, 178, 320,
-       319, 317, 314, 313, 303, 302, 301, 300, 299, 298,
-       296, 294, 292, 3, 291, 290, 288, 287, 286,
-}
-var yyR1 = [...]int{
-
-       0, 31, 32, 31, 34, 33, 33, 33, 33, 35,
-       35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
-       35, 35, 35, 35, 35, 35, 35, 35, 35, 16,
-       16, 20, 21, 19, 19, 18, 18, 17, 17, 17,
-       36, 37, 37, 38, 38, 22, 22, 22, 23, 23,
-       24, 24, 25, 25, 26, 26, 26, 27, 28, 29,
-       30, 10, 10, 12, 12, 12, 12, 12, 12, 12,
-       11, 11, 9, 9, 7, 7, 7, 7, 7, 7,
-       6, 6, 6, 6, 6, 6, 6, 15, 15, 15,
-       15, 5, 5, 13, 13, 13, 13, 13, 13, 13,
-       13, 13, 13, 13, 14, 14, 8, 8, 4, 4,
-       4, 3, 3, 3, 1, 1, 1, 1, 1, 1,
-       2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-       2,
-}
-var yyR2 = [...]int{
-
-       0, 0, 0, 3, 0, 4, 1, 2, 2, 3,
-       3, 2, 2, 2, 2, 2, 2, 1, 1, 2,
-       2, 2, 2, 2, 1, 2, 2, 2, 2, 0,
-       1, 3, 3, 2, 1, 2, 1, 2, 1, 3,
-       6, 5, 7, 4, 6, 2, 1, 2, 1, 1,
-       3, 5, 3, 5, 2, 1, 3, 5, 5, 3,
-       3, 1, 1, 1, 1, 2, 2, 1, 1, 1,
-       1, 1, 4, 2, 1, 1, 1, 1, 1, 1,
-       2, 2, 2, 2, 4, 5, 3, 1, 2, 3,
-       4, 1, 1, 1, 4, 4, 6, 9, 9, 3,
-       3, 4, 5, 8, 1, 6, 5, 7, 0, 2,
-       2, 1, 1, 1, 1, 1, 2, 2, 2, 3,
-       1, 3, 3, 3, 3, 3, 4, 4, 3, 3,
-       3,
-}
-var yyChk = [...]int{
-
-       -1000, -31, -32, -33, 44, 48, -35, 2, 46, 14,
-       15, 16, 17, 18, 22, -36, -37, 19, 21, 24,
-       25, 26, -38, 28, 29, 30, 31, 20, 23, 27,
-       47, 49, 48, 48, 49, -16, 50, -18, 50, -10,
-       -7, -5, 36, 39, 37, 40, 43, 38, -13, -14,
-       -1, 52, -8, 32, 46, 10, 9, 54, 44, -19,
-       -11, -10, -6, 51, -20, -11, -21, -10, -17, 50,
-       -9, -6, -1, 44, 52, -22, 50, -12, 11, -9,
-       -14, -7, -13, -6, -1, 44, -23, -16, -18, 50,
-       -24, -11, -25, -11, -26, -11, -27, -10, -28, -6,
-       -29, -11, -30, -11, -8, -5, -5, -34, -2, -1,
-       -2, -10, 52, 37, 43, -2, 52, -1, -1, -1,
-       -4, 7, 9, 10, 50, -1, -8, 42, 41, 52,
-       10, 50, 50, -9, 50, 52, -4, -12, 11, -8,
-       -7, -13, 52, -4, 50, 50, 50, 50, 50, 50,
-       50, 12, 50, 50, -33, 9, 10, 11, 12, 13,
-       7, 8, 6, 5, 4, 37, 43, 38, 53, 11,
-       53, 53, 37, 52, 8, -1, -1, 41, 10, 41,
-       -10, -11, -9, 34, -10, -10, -10, -7, -10, -11,
-       -11, -1, 51, -1, -6, -1, -2, -2, -2, -2,
-       -2, 7, 8, -2, -2, -2, 53, 11, 53, 53,
-       52, -1, 11, -3, 35, 43, 33, -4, 53, 41,
-       53, 47, 47, 50, 50, 50, -15, 32, 10, 50,
-       50, -2, -2, 52, -1, 37, 53, -1, 53, 52,
-       53, 37, 38, -1, -7, -6, 10, 32, 51, -6,
-       37, 38, 53, 11, 53, 35, 32, 10, -15, 11,
-       11, -1, 53, 32, -1, -1, 53, 53, 53,
-}
-var yyDef = [...]int{
-
-       1, -2, 0, 3, 0, 6, 0, 0, 0, 29,
-       0, 0, 0, 0, 0, 17, 18, 0, 29, 0,
-       0, 0, 24, 0, 0, 0, 0, 0, 0, 0,
-       4, 0, 7, 8, 0, 11, 30, 12, 0, 36,
-       61, 62, 74, 75, 76, 77, 78, 79, 91, 92,
-       93, 0, 104, 114, 115, 0, 0, 0, 108, 13,
-       34, 70, 71, 0, 14, 0, 15, 0, 16, 0,
-       38, 0, 0, 108, 0, 19, 0, 46, 0, 63,
-       64, 67, 68, 69, 93, 108, 20, 48, 49, 30,
-       21, 0, 22, 0, 23, 55, 25, 0, 26, 0,
-       27, 0, 28, 0, 0, 0, 0, 0, 9, 120,
-       10, 35, 0, 0, 0, 0, 0, 116, 117, 118,
-       0, 0, 0, 0, 33, 80, 81, 82, 83, 0,
-       0, 0, 0, 37, 0, 0, 73, 45, 0, 47,
-       65, 66, 0, 73, 0, 0, 54, 0, 0, 0,
-       0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 99, 0,
-       100, 119, 0, 0, 108, 109, 110, 0, 0, 86,
-       31, 32, 39, 0, 50, 52, 56, 0, 0, 59,
-       60, 0, 0, 0, 43, 0, 121, 122, 123, 124,
-       125, 0, 0, 128, 129, 130, 94, 0, 95, 101,
-       0, 0, 0, 0, 111, 112, 113, 0, 84, 0,
-       72, 0, 0, 0, 0, 0, 41, 87, 0, 0,
-       0, 126, 127, 0, 0, 0, 102, 0, 106, 0,
-       85, 51, 53, 57, 58, 40, 0, 88, 0, 44,
-       0, 0, 96, 0, 105, 0, 89, 0, 42, 0,
-       0, 0, 107, 90, 0, 0, 103, 97, 98,
-}
-var yyTok1 = [...]int{
-
-       1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 51, 13, 6, 3,
-       52, 53, 11, 9, 50, 10, 3, 12, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 47, 48,
-       7, 49, 8, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 4, 3, 54,
-}
-var yyTok2 = [...]int{
-
-       2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
-       22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-       32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-       42, 43, 44, 45, 46,
-}
-var yyTok3 = [...]int{
-       0,
-}
-
-var yyErrorMessages = [...]struct {
-       state int
-       token int
-       msg   string
-}{}
-
-//line yaccpar:1
-
-/*     parser for yacc output  */
-
-var (
-       yyDebug        = 0
-       yyErrorVerbose = false
-)
-
-type yyLexer interface {
-       Lex(lval *yySymType) int
-       Error(s string)
-}
-
-type yyParser interface {
-       Parse(yyLexer) int
-       Lookahead() int
-}
-
-type yyParserImpl struct {
-       lookahead func() int
-}
-
-func (p *yyParserImpl) Lookahead() int {
-       return p.lookahead()
-}
-
-func yyNewParser() yyParser {
-       p := &yyParserImpl{
-               lookahead: func() int { return -1 },
-       }
-       return p
-}
-
-const yyFlag = -1000
-
-func yyTokname(c int) string {
-       if c >= 1 && c-1 < len(yyToknames) {
-               if yyToknames[c-1] != "" {
-                       return yyToknames[c-1]
-               }
-       }
-       return __yyfmt__.Sprintf("tok-%v", c)
-}
-
-func yyStatname(s int) string {
-       if s >= 0 && s < len(yyStatenames) {
-               if yyStatenames[s] != "" {
-                       return yyStatenames[s]
-               }
-       }
-       return __yyfmt__.Sprintf("state-%v", s)
-}
-
-func yyErrorMessage(state, lookAhead int) string {
-       const TOKSTART = 4
-
-       if !yyErrorVerbose {
-               return "syntax error"
-       }
-
-       for _, e := range yyErrorMessages {
-               if e.state == state && e.token == lookAhead {
-                       return "syntax error: " + e.msg
-               }
-       }
-
-       res := "syntax error: unexpected " + yyTokname(lookAhead)
-
-       // To match Bison, suggest at most four expected tokens.
-       expected := make([]int, 0, 4)
-
-       // Look for shiftable tokens.
-       base := yyPact[state]
-       for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
-               if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-       }
-
-       if yyDef[state] == -2 {
-               i := 0
-               for yyExca[i] != -1 || yyExca[i+1] != state {
-                       i += 2
-               }
-
-               // Look for tokens that we accept or reduce.
-               for i += 2; yyExca[i] >= 0; i += 2 {
-                       tok := yyExca[i]
-                       if tok < TOKSTART || yyExca[i+1] == 0 {
-                               continue
-                       }
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-
-               // If the default action is to accept or reduce, give up.
-               if yyExca[i+1] != 0 {
-                       return res
-               }
-       }
-
-       for i, tok := range expected {
-               if i == 0 {
-                       res += ", expecting "
-               } else {
-                       res += " or "
-               }
-               res += yyTokname(tok)
-       }
-       return res
-}
-
-func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
-       token = 0
-       char = lex.Lex(lval)
-       if char <= 0 {
-               token = yyTok1[0]
-               goto out
-       }
-       if char < len(yyTok1) {
-               token = yyTok1[char]
-               goto out
-       }
-       if char >= yyPrivate {
-               if char < yyPrivate+len(yyTok2) {
-                       token = yyTok2[char-yyPrivate]
-                       goto out
-               }
-       }
-       for i := 0; i < len(yyTok3); i += 2 {
-               token = yyTok3[i+0]
-               if token == char {
-                       token = yyTok3[i+1]
-                       goto out
-               }
-       }
-
-out:
-       if token == 0 {
-               token = yyTok2[1] /* unknown char */
-       }
-       if yyDebug >= 3 {
-               __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
-       }
-       return char, token
-}
-
-func yyParse(yylex yyLexer) int {
-       return yyNewParser().Parse(yylex)
-}
-
-func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
-       var yyn int
-       var yylval yySymType
-       var yyVAL yySymType
-       var yyDollar []yySymType
-       yyS := make([]yySymType, yyMaxDepth)
-
-       Nerrs := 0   /* number of errors */
-       Errflag := 0 /* error recovery flag */
-       yystate := 0
-       yychar := -1
-       yytoken := -1 // yychar translated into internal numbering
-       yyrcvr.lookahead = func() int { return yychar }
-       defer func() {
-               // Make sure we report no lookahead when not parsing.
-               yystate = -1
-               yychar = -1
-               yytoken = -1
-       }()
-       yyp := -1
-       goto yystack
-
-ret0:
-       return 0
-
-ret1:
-       return 1
-
-yystack:
-       /* put a state and value onto the stack */
-       if yyDebug >= 4 {
-               __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
-       }
-
-       yyp++
-       if yyp >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyS[yyp] = yyVAL
-       yyS[yyp].yys = yystate
-
-yynewstate:
-       yyn = yyPact[yystate]
-       if yyn <= yyFlag {
-               goto yydefault /* simple state */
-       }
-       if yychar < 0 {
-               yychar, yytoken = yylex1(yylex, &yylval)
-       }
-       yyn += yytoken
-       if yyn < 0 || yyn >= yyLast {
-               goto yydefault
-       }
-       yyn = yyAct[yyn]
-       if yyChk[yyn] == yytoken { /* valid shift */
-               yychar = -1
-               yytoken = -1
-               yyVAL = yylval
-               yystate = yyn
-               if Errflag > 0 {
-                       Errflag--
-               }
-               goto yystack
-       }
-
-yydefault:
-       /* default state action */
-       yyn = yyDef[yystate]
-       if yyn == -2 {
-               if yychar < 0 {
-                       yychar, yytoken = yylex1(yylex, &yylval)
-               }
-
-               /* look through exception table */
-               xi := 0
-               for {
-                       if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
-                               break
-                       }
-                       xi += 2
-               }
-               for xi += 2; ; xi += 2 {
-                       yyn = yyExca[xi+0]
-                       if yyn < 0 || yyn == yytoken {
-                               break
-                       }
-               }
-               yyn = yyExca[xi+1]
-               if yyn < 0 {
-                       goto ret0
-               }
-       }
-       if yyn == 0 {
-               /* error ... attempt to resume parsing */
-               switch Errflag {
-               case 0: /* brand new error */
-                       yylex.Error(yyErrorMessage(yystate, yytoken))
-                       Nerrs++
-                       if yyDebug >= 1 {
-                               __yyfmt__.Printf("%s", yyStatname(yystate))
-                               __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
-                       }
-                       fallthrough
-
-               case 1, 2: /* incompletely recovered error ... try again */
-                       Errflag = 3
-
-                       /* find a state where "error" is a legal shift action */
-                       for yyp >= 0 {
-                               yyn = yyPact[yyS[yyp].yys] + yyErrCode
-                               if yyn >= 0 && yyn < yyLast {
-                                       yystate = yyAct[yyn] /* simulate a shift of "error" */
-                                       if yyChk[yystate] == yyErrCode {
-                                               goto yystack
-                                       }
-                               }
-
-                               /* the current p has no shift on "error", pop stack */
-                               if yyDebug >= 2 {
-                                       __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
-                               }
-                               yyp--
-                       }
-                       /* there is no state on the stack with an error shift ... abort */
-                       goto ret1
-
-               case 3: /* no shift yet; clobber input char */
-                       if yyDebug >= 2 {
-                               __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
-                       }
-                       if yytoken == yyEofCode {
-                               goto ret1
-                       }
-                       yychar = -1
-                       yytoken = -1
-                       goto yynewstate /* try again in the same state */
-               }
-       }
-
-       /* reduction by production yyn */
-       if yyDebug >= 2 {
-               __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
-       }
-
-       yynt := yyn
-       yypt := yyp
-       _ = yypt // guard against "declared and not used"
-
-       yyp -= yyR2[yyn]
-       // yyp is now the index of $0. Perform the default action. Iff the
-       // reduced production is ε, $1 is possibly out of range.
-       if yyp+1 >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyVAL = yyS[yyp+1]
-
-       /* consult goto table to find next state */
-       yyn = yyR1[yyn]
-       yyg := yyPgo[yyn]
-       yyj := yyg + yyS[yyp].yys + 1
-
-       if yyj >= yyLast {
-               yystate = yyAct[yyg]
-       } else {
-               yystate = yyAct[yyj]
-               if yyChk[yystate] != -yyn {
-                       yystate = yyAct[yyg]
-               }
-       }
-       // dummy call; replaced with literal code
-       switch yynt {
-
-       case 2:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:74
-               {
-                       stmtline = asm.Lineno
-               }
-       case 4:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:81
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyDollar[1].sym.Type = LLAB
-                       yyDollar[1].sym.Value = int64(asm.PC)
-               }
-       case 9:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:96
-               {
-                       yyDollar[1].sym.Type = LVAR
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 10:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:101
-               {
-                       if yyDollar[1].sym.Value != int64(yyDollar[3].lval) {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Name)
-                       }
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 11:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:107
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 12:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:108
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 13:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:109
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 14:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:110
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 15:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:111
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 16:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:112
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 19:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:115
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 20:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:116
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 21:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:117
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 22:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:118
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 23:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:119
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 25:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:121
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 26:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:122
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 27:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:123
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 28:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:124
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
-               }
-       case 29:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:127
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = nullgen
-               }
-       case 30:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:132
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = nullgen
-               }
-       case 31:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:139
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 32:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:146
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 33:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:153
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 34:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:158
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 35:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:165
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 36:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:170
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 37:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:177
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 38:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:182
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 39:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:187
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 40:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:194
-               {
-                       outcode(obj.ADATA, &Addr2{yyDollar[2].addr, yyDollar[6].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 41:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:205
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[5].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 42:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:213
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.ATEXT, &Addr2{yyDollar[2].addr, yyDollar[7].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 43:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:225
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[4].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 44:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:233
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(obj.AGLOBL, &Addr2{yyDollar[2].addr, yyDollar[6].addr})
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 45:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:246
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-               }
-       case 46:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:251
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[1].addr
-               }
-       case 47:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:256
-               {
-                       yyVAL.addr2.from = nullgen
-                       yyVAL.addr2.to = yyDollar[2].addr
-                       yyVAL.addr2.to.Type = obj.TYPE_INDIR
-               }
-       case 50:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:268
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 51:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:273
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-                       if yyVAL.addr2.from.Index != obj.TYPE_NONE {
-                               yyerror("dp shift with lhs index")
-                       }
-                       yyVAL.addr2.from.Index = int16(yyDollar[5].lval)
-               }
-       case 52:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:284
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 53:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:289
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-                       if yyVAL.addr2.to.Index != obj.TYPE_NONE {
-                               yyerror("dp move with lhs index")
-                       }
-                       yyVAL.addr2.to.Index = int16(yyDollar[5].lval)
-               }
-       case 54:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:300
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 55:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:305
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = nullgen
-               }
-       case 56:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:310
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 57:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:317
-               {
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-                       yyVAL.addr2.to.Offset = yyDollar[5].lval
-               }
-       case 58:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:325
-               {
-                       yyVAL.addr2.from = yyDollar[3].addr
-                       yyVAL.addr2.to = yyDollar[5].addr
-                       if yyDollar[1].addr.Type != obj.TYPE_CONST {
-                               yyerror("illegal constant")
-                       }
-                       yyVAL.addr2.to.Offset = yyDollar[1].addr.Offset
-               }
-       case 59:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:336
-               {
-                       if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST {
-                               yyerror("arguments to PCDATA must be integer constants")
-                       }
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 60:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:346
-               {
-                       if yyDollar[1].addr.Type != obj.TYPE_CONST {
-                               yyerror("index for FUNCDATA must be integer constant")
-                       }
-                       if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) {
-                               yyerror("value for FUNCDATA must be symbol reference")
-                       }
-                       yyVAL.addr2.from = yyDollar[1].addr
-                       yyVAL.addr2.to = yyDollar[3].addr
-               }
-       case 65:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:365
-               {
-                       yyVAL.addr = yyDollar[2].addr
-               }
-       case 66:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:369
-               {
-                       yyVAL.addr = yyDollar[2].addr
-               }
-       case 72:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:382
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
-               }
-       case 73:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:388
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       yyVAL.addr = nullgen
-                       if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
-                               yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
-               }
-       case 74:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:400
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 75:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:406
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 76:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:412
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 77:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:418
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 78:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:424
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = REG_SP
-               }
-       case 79:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:430
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 80:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:438
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 81:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:444
-               {
-                       yyVAL.addr = yyDollar[2].addr
-                       yyVAL.addr.Type = obj.TYPE_ADDR
-                       /*
-                               if($2.Type == D_AUTO || $2.Type == D_PARAM)
-                                       yyerror("constant cannot be automatic: %s",
-                                               $2.Sym.name);
-                       */
-               }
-       case 82:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:453
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SCONST
-                       yyVAL.addr.Val = yyDollar[2].sval
-               }
-       case 83:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:459
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[2].dval
-               }
-       case 84:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:465
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[3].dval
-               }
-       case 85:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:471
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[4].dval
-               }
-       case 86:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:477
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[3].dval
-               }
-       case 87:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:485
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 88:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:492
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -yyDollar[2].lval
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 89:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:499
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Val = int32(yyDollar[3].lval)
-               }
-       case 90:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:506
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -yyDollar[2].lval
-                       yyVAL.addr.Val = int32(yyDollar[4].lval)
-               }
-       case 93:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:520
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 94:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:526
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 95:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:533
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = REG_SP
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 96:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:540
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[3].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[5].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 97:
-               yyDollar = yyS[yypt-9 : yypt+1]
-               //line a.y:549
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[6].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[8].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 98:
-               yyDollar = yyS[yypt-9 : yypt+1]
-               //line a.y:559
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-                       yyVAL.addr.Index = int16(yyDollar[6].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[8].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 99:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:569
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-               }
-       case 100:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:575
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = REG_SP
-               }
-       case 101:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:581
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 102:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:588
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Index = int16(yyDollar[2].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[4].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 103:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:596
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Index = int16(yyDollar[5].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[7].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 104:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:607
-               {
-                       yyVAL.addr = yyDollar[1].addr
-               }
-       case 105:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:611
-               {
-                       yyVAL.addr = yyDollar[1].addr
-                       yyVAL.addr.Index = int16(yyDollar[3].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[5].lval)
-                       checkscale(yyVAL.addr.Scale)
-               }
-       case 106:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:620
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[4].lval)
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 107:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:628
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = obj.NAME_STATIC
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
-                       yyVAL.addr.Offset = yyDollar[4].lval
-               }
-       case 108:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:637
-               {
-                       yyVAL.lval = 0
-               }
-       case 109:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:641
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 110:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:645
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 112:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:652
-               {
-                       yyVAL.lval = obj.NAME_AUTO
-               }
-       case 115:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:660
-               {
-                       yyVAL.lval = yyDollar[1].sym.Value
-               }
-       case 116:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:664
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 117:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:668
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 118:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:672
-               {
-                       yyVAL.lval = ^yyDollar[2].lval
-               }
-       case 119:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:676
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 121:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:683
-               {
-                       yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
-               }
-       case 122:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:687
-               {
-                       yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
-               }
-       case 123:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:691
-               {
-                       yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
-               }
-       case 124:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:695
-               {
-                       yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
-               }
-       case 125:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:699
-               {
-                       yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
-               }
-       case 126:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:703
-               {
-                       yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
-               }
-       case 127:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:707
-               {
-                       yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
-               }
-       case 128:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:711
-               {
-                       yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
-               }
-       case 129:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:715
-               {
-                       yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
-               }
-       case 130:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:719
-               {
-                       yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
-               }
-       }
-       goto yystack /* stack new state and value */
-}
diff --git a/src/cmd/old9a/a.y b/src/cmd/old9a/a.y
deleted file mode 100644 (file)
index f7e8925..0000000
+++ /dev/null
@@ -1,1066 +0,0 @@
-// cmd/9a/a.y from Vita Nuova.
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-%{
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/ppc64"
-)
-%}
-
-%union
-{
-       sym *asm.Sym
-       lval int64
-       dval float64
-       sval string
-       addr obj.Addr
-}
-
-%left  '|'
-%left  '^'
-%left  '&'
-%left  '<' '>'
-%left  '+' '-'
-%left  '*' '/' '%'
-%token <lval>  LMOVW LMOVB LABS LLOGW LSHW LADDW LCMP LCROP
-%token <lval>  LBRA LFMOV LFCONV LFCMP LFADD LFMA LTRAP LXORW
-%token <lval>  LNOP LEND LRETT LWORD LTEXT LDATA LGLOBL LRETRN
-%token <lval>  LCONST LSP LSB LFP LPC LCREG LFLUSH
-%token <lval>  LREG LFREG LR LCR LF LFPSCR
-%token <lval>  LLR LCTR LSPR LSPREG LSEG LMSR
-%token <lval>  LPCDAT LFUNCDAT LSCHED LXLD LXST LXOP LXMV
-%token <lval>  LRLWM LMOVMW LMOVEM LMOVFL LMTFSB LMA
-%token <dval>  LFCONST
-%token <sval>  LSCONST
-%token <sym>   LNAME LLAB LVAR
-%type  <lval>  con expr pointer offset sreg
-%type  <addr>  addr rreg regaddr name creg freg xlreg lr ctr textsize
-%type  <addr>  imm ximm fimm rel psr lcr cbit fpscr msr mask
-%%
-prog:
-|      prog
-       {
-               stmtline = asm.Lineno
-       }
-       line
-
-line:
-       LNAME ':'
-       {
-               $1 = asm.LabelLookup($1);
-               if $1.Type == LLAB && $1.Value != int64(asm.PC) {
-                       yyerror("redeclaration of %s", $1.Labelname)
-               }
-               $1.Type = LLAB;
-               $1.Value = int64(asm.PC);
-       }
-       line
-|      LNAME '=' expr ';'
-       {
-               $1.Type = LVAR;
-               $1.Value = $3;
-       }
-|      LVAR '=' expr ';'
-       {
-               if $1.Value != $3 {
-                       yyerror("redeclaration of %s", $1.Name)
-               }
-               $1.Value = $3;
-       }
-|      LSCHED ';'
-       {
-               nosched = int($1);
-       }
-|      ';'
-|      inst ';'
-|      error ';'
-
-inst:
-/*
- * load ints and bytes
- */
-       LMOVW rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW addr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW regaddr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVB rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVB addr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVB regaddr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * load floats
- */
-|      LFMOV addr ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFMOV regaddr ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFMOV fimm ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFMOV freg ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFMOV freg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFMOV freg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * store ints and bytes
- */
-|      LMOVW rreg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW rreg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVB rreg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVB rreg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * store floats
- */
-|      LMOVW freg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW freg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * floating point status
- */
-|      LMOVW fpscr ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW freg ','  fpscr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW freg ',' imm ',' fpscr
-       {
-               outgcode(int($1), &$2, 0, &$4, &$6);
-       }
-|      LMOVW fpscr ',' creg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMTFSB imm ',' con
-       {
-               outcode(int($1), &$2, int($4), &nullgen);
-       }
-/*
- * field moves (mtcrf)
- */
-|      LMOVW rreg ',' imm ',' lcr
-       {
-               outgcode(int($1), &$2, 0, &$4, &$6);
-       }
-|      LMOVW rreg ',' creg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW rreg ',' lcr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * integer operations
- * logical instructions
- * shift instructions
- * unary instructions
- */
-|      LADDW rreg ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-|      LADDW imm ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-|      LADDW rreg ',' imm ',' rreg
-       {
-               outgcode(int($1), &$2, 0, &$4, &$6);
-       }
-|      LADDW rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LADDW imm ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LLOGW rreg ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-|      LLOGW rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LSHW rreg ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-|      LSHW rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LSHW imm ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-|      LSHW imm ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LABS rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LABS rreg
-       {
-               outcode(int($1), &$2, 0, &$2);
-       }
-/*
- * multiply-accumulate
- */
-|      LMA rreg ',' sreg ',' rreg
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-/*
- * move immediate: macro for cau+or, addi, addis, and other combinations
- */
-|      LMOVW imm ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW ximm ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * condition register operations
- */
-|      LCROP cbit ',' cbit
-       {
-               outcode(int($1), &$2, int($4.Reg), &$4);
-       }
-|      LCROP cbit ',' con ',' cbit
-       {
-               outcode(int($1), &$2, int($4), &$6);
-       }
-/*
- * condition register moves
- * move from machine state register
- */
-|      LMOVW creg ',' creg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW psr ',' creg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW lcr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW psr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW xlreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW rreg ',' xlreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW creg ',' psr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVW rreg ',' psr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * branch, branch conditional
- * branch conditional register
- * branch conditional to count register
- */
-|      LBRA rel
-       {
-               outcode(int($1), &nullgen, 0, &$2);
-       }
-|      LBRA addr
-       {
-               outcode(int($1), &nullgen, 0, &$2);
-       }
-|      LBRA '(' xlreg ')'
-       {
-               outcode(int($1), &nullgen, 0, &$3);
-       }
-|      LBRA ',' rel
-       {
-               outcode(int($1), &nullgen, 0, &$3);
-       }
-|      LBRA ',' addr
-       {
-               outcode(int($1), &nullgen, 0, &$3);
-       }
-|      LBRA ',' '(' xlreg ')'
-       {
-               outcode(int($1), &nullgen, 0, &$4);
-       }
-|      LBRA creg ',' rel
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LBRA creg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LBRA creg ',' '(' xlreg ')'
-       {
-               outcode(int($1), &$2, 0, &$5);
-       }
-|      LBRA con ',' rel
-       {
-               outcode(int($1), &nullgen, int($2), &$4);
-       }
-|      LBRA con ',' addr
-       {
-               outcode(int($1), &nullgen, int($2), &$4);
-       }
-|      LBRA con ',' '(' xlreg ')'
-       {
-               outcode(int($1), &nullgen, int($2), &$5);
-       }
-|      LBRA con ',' con ',' rel
-       {
-               var g obj.Addr
-               g = nullgen;
-               g.Type = obj.TYPE_CONST;
-               g.Offset = $2;
-               outcode(int($1), &g, int(REG_R0+$4), &$6);
-       }
-|      LBRA con ',' con ',' addr
-       {
-               var g obj.Addr
-               g = nullgen;
-               g.Type = obj.TYPE_CONST;
-               g.Offset = $2;
-               outcode(int($1), &g, int(REG_R0+$4), &$6);
-       }
-|      LBRA con ',' con ',' '(' xlreg ')'
-       {
-               var g obj.Addr
-               g = nullgen;
-               g.Type = obj.TYPE_CONST;
-               g.Offset = $2;
-               outcode(int($1), &g, int(REG_R0+$4), &$7);
-       }
-/*
- * conditional trap
- */
-|      LTRAP rreg ',' sreg
-       {
-               outcode(int($1), &$2, int($4), &nullgen);
-       }
-|      LTRAP imm ',' sreg
-       {
-               outcode(int($1), &$2, int($4), &nullgen);
-       }
-|      LTRAP rreg comma
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-|      LTRAP comma
-       {
-               outcode(int($1), &nullgen, 0, &nullgen);
-       }
-/*
- * floating point operate
- */
-|      LFCONV freg ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFADD freg ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFADD freg ',' freg ',' freg
-       {
-               outcode(int($1), &$2, int($4.Reg), &$6);
-       }
-|      LFMA freg ',' freg ',' freg ',' freg
-       {
-               outgcode(int($1), &$2, int($4.Reg), &$6, &$8);
-       }
-|      LFCMP freg ',' freg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LFCMP freg ',' freg ',' creg
-       {
-               outcode(int($1), &$2, int($6.Reg), &$4);
-       }
-/*
- * CMP
- */
-|      LCMP rreg ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LCMP rreg ',' imm
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LCMP rreg ',' rreg ',' creg
-       {
-               outcode(int($1), &$2, int($6.Reg), &$4);
-       }
-|      LCMP rreg ',' imm ',' creg
-       {
-               outcode(int($1), &$2, int($6.Reg), &$4);
-       }
-/*
- * rotate and mask
- */
-|      LRLWM  imm ',' rreg ',' imm ',' rreg
-       {
-               outgcode(int($1), &$2, int($4.Reg), &$6, &$8);
-       }
-|      LRLWM  imm ',' rreg ',' mask ',' rreg
-       {
-               outgcode(int($1), &$2, int($4.Reg), &$6, &$8);
-       }
-|      LRLWM  rreg ',' rreg ',' imm ',' rreg
-       {
-               outgcode(int($1), &$2, int($4.Reg), &$6, &$8);
-       }
-|      LRLWM  rreg ',' rreg ',' mask ',' rreg
-       {
-               outgcode(int($1), &$2, int($4.Reg), &$6, &$8);
-       }
-/*
- * load/store multiple
- */
-|      LMOVMW addr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LMOVMW rreg ',' addr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * various indexed load/store
- * indexed unary (eg, cache clear)
- */
-|      LXLD regaddr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LXLD regaddr ',' imm ',' rreg
-       {
-               outgcode(int($1), &$2, 0, &$4, &$6);
-       }
-|      LXST rreg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LXST rreg ',' imm ',' regaddr
-       {
-               outgcode(int($1), &$2, 0, &$4, &$6);
-       }
-|      LXMV regaddr ',' rreg
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LXMV rreg ',' regaddr
-       {
-               outcode(int($1), &$2, 0, &$4);
-       }
-|      LXOP regaddr
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-/*
- * NOP
- */
-|      LNOP comma
-       {
-               outcode(int($1), &nullgen, 0, &nullgen);
-       }
-|      LNOP rreg comma
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-|      LNOP freg comma
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-|      LNOP ',' rreg
-       {
-               outcode(int($1), &nullgen, 0, &$3);
-       }
-|      LNOP ',' freg
-       {
-               outcode(int($1), &nullgen, 0, &$3);
-       }
-|      LNOP imm /* SYSCALL $num: load $num to R0 before syscall and restore R0 to 0 afterwards. */
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-/*
- * word
- */
-|      LWORD imm comma
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-|      LWORD ximm comma
-       {
-               outcode(int($1), &$2, 0, &nullgen);
-       }
-/*
- * PCDATA
- */
-|      LPCDAT imm ',' imm
-       {
-               if $2.Type != obj.TYPE_CONST || $4.Type != obj.TYPE_CONST {
-                       yyerror("arguments to PCDATA must be integer constants")
-               }
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * FUNCDATA
- */
-|      LFUNCDAT imm ',' addr
-       {
-               if $2.Type != obj.TYPE_CONST {
-                       yyerror("index for FUNCDATA must be integer constant")
-               }
-               if $4.Type != obj.TYPE_MEM || ($4.Name != obj.NAME_EXTERN && $4.Name != obj.NAME_STATIC) {
-                       yyerror("value for FUNCDATA must be symbol reference")
-               }
-               outcode(int($1), &$2, 0, &$4);
-       }
-/*
- * END
- */
-|      LEND comma
-       {
-               outcode(int($1), &nullgen, 0, &nullgen);
-       }
-/*
- * TEXT
- */
-|      LTEXT name ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(int($1), &$2, 0, &$5);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LTEXT name ',' con ',' '$' textsize
-       {
-               asm.Settext($2.Sym);
-               outcode(int($1), &$2, int($4), &$7);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-/*
- * GLOBL
- */
-|      LGLOBL name ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode(int($1), &$2, 0, &$4)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-               }
-       }
-|      LGLOBL name ',' con ',' imm
-       {
-               asm.Settext($2.Sym)
-               outcode(int($1), &$2, 0, &$6)
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-
-/*
- * DATA
- */
-|      LDATA name '/' con ',' imm
-       {
-               outcode(int($1), &$2, 0, &$6);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-|      LDATA name '/' con ',' ximm
-       {
-               outcode(int($1), &$2, 0, &$6);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-|      LDATA name '/' con ',' fimm
-       {
-               outcode(int($1), &$2, 0, &$6);
-               if asm.Pass > 1 {
-                       lastpc.From3 = new(obj.Addr)
-                       lastpc.From3.Type = obj.TYPE_CONST
-                       lastpc.From3.Offset = $4
-               }
-       }
-/*
- * RETURN
- */
-|      LRETRN  comma
-       {
-               outcode(int($1), &nullgen, 0, &nullgen);
-       }
-
-rel:
-       con '(' LPC ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1 + int64(asm.PC);
-       }
-|      LNAME offset
-       {
-               $1 = asm.LabelLookup($1);
-               $$ = nullgen;
-               if asm.Pass == 2 && $1.Type != LLAB {
-                       yyerror("undefined label: %s", $1.Labelname)
-               }
-               $$.Type = obj.TYPE_BRANCH;
-               $$.Offset = $1.Value + $2;
-       }
-
-rreg:
-       sreg
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-xlreg:
-       lr
-|      ctr
-
-lr:
-       LLR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-lcr:
-       LCR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);     /* whole register */
-       }
-
-ctr:
-       LCTR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-msr:
-       LMSR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1)
-       }
-
-psr:
-       LSPREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-|      LSPR '(' con ')'
-       {
-               if $3 < 0 || $3 >= 1024 {
-                       yyerror("SPR/DCR out of range")
-               }
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG
-               $$.Reg = int16($1 + $3);
-       }
-|      msr
-
-fpscr:
-       LFPSCR
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-freg:
-       LFREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-|      LF '(' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16(REG_F0 + $3);
-       }
-
-creg:
-       LCREG
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-|      LCR '(' con ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16(REG_CR0 + $3);
-       }
-
-
-cbit:  con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_REG;
-               $$.Reg = int16($1);
-       }
-
-mask:
-       con ',' con
-       {
-               var mb, me int
-               var v uint32
-
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               mb = int($1);
-               me = int($3);
-               if(mb < 0 || mb > 31 || me < 0 || me > 31){
-                       yyerror("illegal mask start/end value(s)");
-                       mb = 0
-                       me = 0;
-               }
-               if mb <= me {
-                       v = (^uint32(0)>>uint(mb)) & (^uint32(0)<<uint(31-me))
-               } else {
-                       v = (^uint32(0)>>uint(me+1)) & (^uint32(0)<<uint(31-(mb-1)))
-               }
-               $$.Offset = int64(v);
-       }
-
-textsize:
-       LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = int64($1)
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -int64($2)
-               $$.Val = int32(obj.ArgsSizeUnknown);
-       }
-|      LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = int64($1)
-               $$.Val = int32($3);
-       }
-|      '-' LCONST '-' LCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_TEXTSIZE;
-               $$.Offset = -int64($2)
-               $$.Val = int32($4);
-       }
-
-ximm:
-       '$' addr
-       {
-               $$ = $2;
-               $$.Type = obj.TYPE_ADDR;
-       }
-|      '$' LSCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_SCONST;
-               $$.Val = $2
-       }
-
-fimm:
-       '$' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = $2;
-       }
-|      '$' '-' LFCONST
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_FCONST;
-               $$.Val = -$3;
-       }
-
-imm:   '$' con
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_CONST;
-               $$.Offset = $2;
-       }
-
-sreg:
-       LREG
-|      LR '(' con ')'
-       {
-               if $$ < 0 || $$ >= NREG {
-                       print("register value out of range\n")
-               }
-               $$ = REG_R0 + $3;
-       }
-
-regaddr:
-       '(' sreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($2);
-               $$.Offset = 0;
-       }
-|      '(' sreg '+' sreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($2);
-               $$.Scale = int16($4);
-               $$.Offset = 0;
-       }
-
-addr:
-       name
-|      con '(' sreg ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Reg = int16($3);
-               $$.Offset = $1;
-       }
-
-name:
-       con '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = int8($3);
-               $$.Sym = nil;
-               $$.Offset = $1;
-       }
-|      LNAME offset '(' pointer ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = int8($4);
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 0);
-               $$.Offset = $2;
-       }
-|      LNAME '<' '>' offset '(' LSB ')'
-       {
-               $$ = nullgen;
-               $$.Type = obj.TYPE_MEM;
-               $$.Name = obj.NAME_STATIC;
-               $$.Sym = obj.Linklookup(asm.Ctxt, $1.Name, 1);
-               $$.Offset = $4;
-       }
-
-comma:
-|      ','
-
-offset:
-       {
-               $$ = 0;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-
-pointer:
-       LSB
-|      LSP
-|      LFP
-
-con:
-       LCONST
-|      LVAR
-       {
-               $$ = $1.Value;
-       }
-|      '-' con
-       {
-               $$ = -$2;
-       }
-|      '+' con
-       {
-               $$ = $2;
-       }
-|      '~' con
-       {
-               $$ = ^$2;
-       }
-|      '(' expr ')'
-       {
-               $$ = $2;
-       }
-
-expr:
-       con
-|      expr '+' expr
-       {
-               $$ = $1 + $3;
-       }
-|      expr '-' expr
-       {
-               $$ = $1 - $3;
-       }
-|      expr '*' expr
-       {
-               $$ = $1 * $3;
-       }
-|      expr '/' expr
-       {
-               $$ = $1 / $3;
-       }
-|      expr '%' expr
-       {
-               $$ = $1 % $3;
-       }
-|      expr '<' '<' expr
-       {
-               $$ = $1 << uint($4);
-       }
-|      expr '>' '>' expr
-       {
-               $$ = $1 >> uint($4);
-       }
-|      expr '&' expr
-       {
-               $$ = $1 & $3;
-       }
-|      expr '^' expr
-       {
-               $$ = $1 ^ $3;
-       }
-|      expr '|' expr
-       {
-               $$ = $1 | $3;
-       }
diff --git a/src/cmd/old9a/lex.go b/src/cmd/old9a/lex.go
deleted file mode 100644 (file)
index f04c8df..0000000
+++ /dev/null
@@ -1,560 +0,0 @@
-// cmd/9a/lex.c from Vita Nuova.
-//
-//     Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved.
-//     Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
-//     Portions Copyright © 1997-1999 Vita Nuova Limited
-//     Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com)
-//     Portions Copyright © 2004,2006 Bruce Ellis
-//     Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
-//     Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others
-//     Portions Copyright © 2009 The Go Authors.  All rights reserved.
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-//go:generate go tool yacc a.y
-
-package main
-
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       "cmd/internal/obj/ppc64"
-)
-
-var (
-       yyerror  = asm.Yyerror
-       nullgen  obj.Addr
-       stmtline int32
-)
-
-func main() {
-       cinit()
-
-       asm.LSCONST = LSCONST
-       asm.LCONST = LCONST
-       asm.LFCONST = LFCONST
-       asm.LNAME = LNAME
-       asm.LVAR = LVAR
-       asm.LLAB = LLAB
-
-       asm.Lexinit = lexinit
-       asm.Cclean = cclean
-       asm.Yyparse = yyparse
-
-       asm.Thechar = '9'
-       asm.Thestring = "ppc64"
-       asm.Thelinkarch = &ppc64.Linkppc64
-       asm.Arches = map[string]*obj.LinkArch{
-               "ppc64le": &ppc64.Linkppc64le,
-       }
-
-       asm.Main()
-}
-
-type yy struct{}
-
-func (yy) Lex(v *yySymType) int {
-       var av asm.Yylval
-       tok := asm.Yylex(&av)
-       v.sym = av.Sym
-       v.lval = av.Lval
-       v.sval = av.Sval
-       v.dval = av.Dval
-       return tok
-}
-
-func (yy) Error(msg string) {
-       asm.Yyerror("%s", msg)
-}
-
-func yyparse() {
-       nosched = 0
-       yyParse(yy{})
-}
-
-var lexinit = []asm.Lextab{
-       {"SP", LSP, obj.NAME_AUTO},
-       {"SB", LSB, obj.NAME_EXTERN},
-       {"FP", LFP, obj.NAME_PARAM},
-       {"PC", LPC, obj.TYPE_BRANCH},
-       {"LR", LLR, ppc64.REG_LR},
-       {"CTR", LCTR, ppc64.REG_CTR},
-       {"XER", LSPREG, ppc64.REG_XER},
-       {"MSR", LMSR, ppc64.REG_MSR},
-       {"FPSCR", LFPSCR, ppc64.REG_FPSCR},
-       {"SPR", LSPR, ppc64.REG_SPR0},
-       {"DCR", LSPR, ppc64.REG_DCR0},
-       {"CR", LCR, ppc64.REG_CR},
-       {"CR0", LCREG, ppc64.REG_CR0},
-       {"CR1", LCREG, ppc64.REG_CR1},
-       {"CR2", LCREG, ppc64.REG_CR2},
-       {"CR3", LCREG, ppc64.REG_CR3},
-       {"CR4", LCREG, ppc64.REG_CR4},
-       {"CR5", LCREG, ppc64.REG_CR5},
-       {"CR6", LCREG, ppc64.REG_CR6},
-       {"CR7", LCREG, ppc64.REG_CR7},
-       {"R", LR, 0},
-       {"R0", LREG, ppc64.REG_R0},
-       {"R1", LREG, ppc64.REG_R1},
-       {"R2", LREG, ppc64.REG_R2},
-       {"R3", LREG, ppc64.REG_R3},
-       {"R4", LREG, ppc64.REG_R4},
-       {"R5", LREG, ppc64.REG_R5},
-       {"R6", LREG, ppc64.REG_R6},
-       {"R7", LREG, ppc64.REG_R7},
-       {"R8", LREG, ppc64.REG_R8},
-       {"R9", LREG, ppc64.REG_R9},
-       {"R10", LREG, ppc64.REG_R10},
-       {"R11", LREG, ppc64.REG_R11},
-       {"R12", LREG, ppc64.REG_R12},
-       {"R13", LREG, ppc64.REG_R13},
-       {"R14", LREG, ppc64.REG_R14},
-       {"R15", LREG, ppc64.REG_R15},
-       {"R16", LREG, ppc64.REG_R16},
-       {"R17", LREG, ppc64.REG_R17},
-       {"R18", LREG, ppc64.REG_R18},
-       {"R19", LREG, ppc64.REG_R19},
-       {"R20", LREG, ppc64.REG_R20},
-       {"R21", LREG, ppc64.REG_R21},
-       {"R22", LREG, ppc64.REG_R22},
-       {"R23", LREG, ppc64.REG_R23},
-       {"R24", LREG, ppc64.REG_R24},
-       {"R25", LREG, ppc64.REG_R25},
-       {"R26", LREG, ppc64.REG_R26},
-       {"R27", LREG, ppc64.REG_R27},
-       {"R28", LREG, ppc64.REG_R28},
-       {"R29", LREG, ppc64.REG_R29},
-       {"g", LREG, ppc64.REG_R30}, // avoid unintentionally clobbering g using R30
-       {"R31", LREG, ppc64.REG_R31},
-       {"F", LF, 0},
-       {"F0", LFREG, ppc64.REG_F0},
-       {"F1", LFREG, ppc64.REG_F1},
-       {"F2", LFREG, ppc64.REG_F2},
-       {"F3", LFREG, ppc64.REG_F3},
-       {"F4", LFREG, ppc64.REG_F4},
-       {"F5", LFREG, ppc64.REG_F5},
-       {"F6", LFREG, ppc64.REG_F6},
-       {"F7", LFREG, ppc64.REG_F7},
-       {"F8", LFREG, ppc64.REG_F8},
-       {"F9", LFREG, ppc64.REG_F9},
-       {"F10", LFREG, ppc64.REG_F10},
-       {"F11", LFREG, ppc64.REG_F11},
-       {"F12", LFREG, ppc64.REG_F12},
-       {"F13", LFREG, ppc64.REG_F13},
-       {"F14", LFREG, ppc64.REG_F14},
-       {"F15", LFREG, ppc64.REG_F15},
-       {"F16", LFREG, ppc64.REG_F16},
-       {"F17", LFREG, ppc64.REG_F17},
-       {"F18", LFREG, ppc64.REG_F18},
-       {"F19", LFREG, ppc64.REG_F19},
-       {"F20", LFREG, ppc64.REG_F20},
-       {"F21", LFREG, ppc64.REG_F21},
-       {"F22", LFREG, ppc64.REG_F22},
-       {"F23", LFREG, ppc64.REG_F23},
-       {"F24", LFREG, ppc64.REG_F24},
-       {"F25", LFREG, ppc64.REG_F25},
-       {"F26", LFREG, ppc64.REG_F26},
-       {"F27", LFREG, ppc64.REG_F27},
-       {"F28", LFREG, ppc64.REG_F28},
-       {"F29", LFREG, ppc64.REG_F29},
-       {"F30", LFREG, ppc64.REG_F30},
-       {"F31", LFREG, ppc64.REG_F31},
-       {"CREQV", LCROP, ppc64.ACREQV},
-       {"CRXOR", LCROP, ppc64.ACRXOR},
-       {"CRAND", LCROP, ppc64.ACRAND},
-       {"CROR", LCROP, ppc64.ACROR},
-       {"CRANDN", LCROP, ppc64.ACRANDN},
-       {"CRORN", LCROP, ppc64.ACRORN},
-       {"CRNAND", LCROP, ppc64.ACRNAND},
-       {"CRNOR", LCROP, ppc64.ACRNOR},
-       {"ADD", LADDW, ppc64.AADD},
-       {"ADDV", LADDW, ppc64.AADDV},
-       {"ADDCC", LADDW, ppc64.AADDCC},
-       {"ADDVCC", LADDW, ppc64.AADDVCC},
-       {"ADDC", LADDW, ppc64.AADDC},
-       {"ADDCV", LADDW, ppc64.AADDCV},
-       {"ADDCCC", LADDW, ppc64.AADDCCC},
-       {"ADDCVCC", LADDW, ppc64.AADDCVCC},
-       {"ADDE", LLOGW, ppc64.AADDE},
-       {"ADDEV", LLOGW, ppc64.AADDEV},
-       {"ADDECC", LLOGW, ppc64.AADDECC},
-       {"ADDEVCC", LLOGW, ppc64.AADDEVCC},
-       {"ADDME", LABS, ppc64.AADDME},
-       {"ADDMEV", LABS, ppc64.AADDMEV},
-       {"ADDMECC", LABS, ppc64.AADDMECC},
-       {"ADDMEVCC", LABS, ppc64.AADDMEVCC},
-       {"ADDZE", LABS, ppc64.AADDZE},
-       {"ADDZEV", LABS, ppc64.AADDZEV},
-       {"ADDZECC", LABS, ppc64.AADDZECC},
-       {"ADDZEVCC", LABS, ppc64.AADDZEVCC},
-       {"SUB", LADDW, ppc64.ASUB},
-       {"SUBV", LADDW, ppc64.ASUBV},
-       {"SUBCC", LADDW, ppc64.ASUBCC},
-       {"SUBVCC", LADDW, ppc64.ASUBVCC},
-       {"SUBE", LLOGW, ppc64.ASUBE},
-       {"SUBECC", LLOGW, ppc64.ASUBECC},
-       {"SUBEV", LLOGW, ppc64.ASUBEV},
-       {"SUBEVCC", LLOGW, ppc64.ASUBEVCC},
-       {"SUBC", LADDW, ppc64.ASUBC},
-       {"SUBCCC", LADDW, ppc64.ASUBCCC},
-       {"SUBCV", LADDW, ppc64.ASUBCV},
-       {"SUBCVCC", LADDW, ppc64.ASUBCVCC},
-       {"SUBME", LABS, ppc64.ASUBME},
-       {"SUBMEV", LABS, ppc64.ASUBMEV},
-       {"SUBMECC", LABS, ppc64.ASUBMECC},
-       {"SUBMEVCC", LABS, ppc64.ASUBMEVCC},
-       {"SUBZE", LABS, ppc64.ASUBZE},
-       {"SUBZEV", LABS, ppc64.ASUBZEV},
-       {"SUBZECC", LABS, ppc64.ASUBZECC},
-       {"SUBZEVCC", LABS, ppc64.ASUBZEVCC},
-       {"AND", LADDW, ppc64.AAND},
-       {"ANDCC", LADDW, ppc64.AANDCC}, /* includes andil & andiu */
-       {"ANDN", LLOGW, ppc64.AANDN},
-       {"ANDNCC", LLOGW, ppc64.AANDNCC},
-       {"EQV", LLOGW, ppc64.AEQV},
-       {"EQVCC", LLOGW, ppc64.AEQVCC},
-       {"NAND", LLOGW, ppc64.ANAND},
-       {"NANDCC", LLOGW, ppc64.ANANDCC},
-       {"NOR", LLOGW, ppc64.ANOR},
-       {"NORCC", LLOGW, ppc64.ANORCC},
-       {"OR", LADDW, ppc64.AOR}, /* includes oril & oriu */
-       {"ORCC", LADDW, ppc64.AORCC},
-       {"ORN", LLOGW, ppc64.AORN},
-       {"ORNCC", LLOGW, ppc64.AORNCC},
-       {"XOR", LADDW, ppc64.AXOR}, /* includes xoril & xoriu */
-       {"XORCC", LLOGW, ppc64.AXORCC},
-       {"EXTSB", LABS, ppc64.AEXTSB},
-       {"EXTSBCC", LABS, ppc64.AEXTSBCC},
-       {"EXTSH", LABS, ppc64.AEXTSH},
-       {"EXTSHCC", LABS, ppc64.AEXTSHCC},
-       {"CNTLZW", LABS, ppc64.ACNTLZW},
-       {"CNTLZWCC", LABS, ppc64.ACNTLZWCC},
-       {"RLWMI", LRLWM, ppc64.ARLWMI},
-       {"RLWMICC", LRLWM, ppc64.ARLWMICC},
-       {"RLWNM", LRLWM, ppc64.ARLWNM},
-       {"RLWNMCC", LRLWM, ppc64.ARLWNMCC},
-       {"SLW", LSHW, ppc64.ASLW},
-       {"SLWCC", LSHW, ppc64.ASLWCC},
-       {"SRW", LSHW, ppc64.ASRW},
-       {"SRWCC", LSHW, ppc64.ASRWCC},
-       {"SRAW", LSHW, ppc64.ASRAW},
-       {"SRAWCC", LSHW, ppc64.ASRAWCC},
-       {"BR", LBRA, ppc64.ABR},
-       {"JMP", LBRA, ppc64.ABR},
-       {"BC", LBRA, ppc64.ABC},
-       {"BCL", LBRA, ppc64.ABC},
-       {"BL", LBRA, ppc64.ABL},
-       {"CALL", LBRA, ppc64.ABL},
-       {"BEQ", LBRA, ppc64.ABEQ},
-       {"BNE", LBRA, ppc64.ABNE},
-       {"BGT", LBRA, ppc64.ABGT},
-       {"BGE", LBRA, ppc64.ABGE},
-       {"BLT", LBRA, ppc64.ABLT},
-       {"BLE", LBRA, ppc64.ABLE},
-       {"BVC", LBRA, ppc64.ABVC},
-       {"BVS", LBRA, ppc64.ABVS},
-       {"CMP", LCMP, ppc64.ACMP},
-       {"CMPU", LCMP, ppc64.ACMPU},
-       {"CMPW", LCMP, ppc64.ACMPW},
-       {"CMPWU", LCMP, ppc64.ACMPWU},
-       {"DIVW", LLOGW, ppc64.ADIVW},
-       {"DIVWV", LLOGW, ppc64.ADIVWV},
-       {"DIVWCC", LLOGW, ppc64.ADIVWCC},
-       {"DIVWVCC", LLOGW, ppc64.ADIVWVCC},
-       {"DIVWU", LLOGW, ppc64.ADIVWU},
-       {"DIVWUV", LLOGW, ppc64.ADIVWUV},
-       {"DIVWUCC", LLOGW, ppc64.ADIVWUCC},
-       {"DIVWUVCC", LLOGW, ppc64.ADIVWUVCC},
-       {"FABS", LFCONV, ppc64.AFABS},
-       {"FABSCC", LFCONV, ppc64.AFABSCC},
-       {"FNEG", LFCONV, ppc64.AFNEG},
-       {"FNEGCC", LFCONV, ppc64.AFNEGCC},
-       {"FNABS", LFCONV, ppc64.AFNABS},
-       {"FNABSCC", LFCONV, ppc64.AFNABSCC},
-       {"FADD", LFADD, ppc64.AFADD},
-       {"FADDCC", LFADD, ppc64.AFADDCC},
-       {"FSUB", LFADD, ppc64.AFSUB},
-       {"FSUBCC", LFADD, ppc64.AFSUBCC},
-       {"FMUL", LFADD, ppc64.AFMUL},
-       {"FMULCC", LFADD, ppc64.AFMULCC},
-       {"FDIV", LFADD, ppc64.AFDIV},
-       {"FDIVCC", LFADD, ppc64.AFDIVCC},
-       {"FRSP", LFCONV, ppc64.AFRSP},
-       {"FRSPCC", LFCONV, ppc64.AFRSPCC},
-       {"FCTIW", LFCONV, ppc64.AFCTIW},
-       {"FCTIWCC", LFCONV, ppc64.AFCTIWCC},
-       {"FCTIWZ", LFCONV, ppc64.AFCTIWZ},
-       {"FCTIWZCC", LFCONV, ppc64.AFCTIWZCC},
-       {"FMADD", LFMA, ppc64.AFMADD},
-       {"FMADDCC", LFMA, ppc64.AFMADDCC},
-       {"FMSUB", LFMA, ppc64.AFMSUB},
-       {"FMSUBCC", LFMA, ppc64.AFMSUBCC},
-       {"FNMADD", LFMA, ppc64.AFNMADD},
-       {"FNMADDCC", LFMA, ppc64.AFNMADDCC},
-       {"FNMSUB", LFMA, ppc64.AFNMSUB},
-       {"FNMSUBCC", LFMA, ppc64.AFNMSUBCC},
-       {"FMADDS", LFMA, ppc64.AFMADDS},
-       {"FMADDSCC", LFMA, ppc64.AFMADDSCC},
-       {"FMSUBS", LFMA, ppc64.AFMSUBS},
-       {"FMSUBSCC", LFMA, ppc64.AFMSUBSCC},
-       {"FNMADDS", LFMA, ppc64.AFNMADDS},
-       {"FNMADDSCC", LFMA, ppc64.AFNMADDSCC},
-       {"FNMSUBS", LFMA, ppc64.AFNMSUBS},
-       {"FNMSUBSCC", LFMA, ppc64.AFNMSUBSCC},
-       {"FCMPU", LFCMP, ppc64.AFCMPU},
-       {"FCMPO", LFCMP, ppc64.AFCMPO},
-       {"MTFSB0", LMTFSB, ppc64.AMTFSB0},
-       {"MTFSB1", LMTFSB, ppc64.AMTFSB1},
-       {"FMOVD", LFMOV, ppc64.AFMOVD},
-       {"FMOVS", LFMOV, ppc64.AFMOVS},
-       {"FMOVDCC", LFCONV, ppc64.AFMOVDCC}, /* fmr. */
-       {"GLOBL", LGLOBL, obj.AGLOBL},
-       {"MOVB", LMOVB, ppc64.AMOVB},
-       {"MOVBZ", LMOVB, ppc64.AMOVBZ},
-       {"MOVBU", LMOVB, ppc64.AMOVBU},
-       {"MOVBZU", LMOVB, ppc64.AMOVBZU},
-       {"MOVH", LMOVB, ppc64.AMOVH},
-       {"MOVHZ", LMOVB, ppc64.AMOVHZ},
-       {"MOVHU", LMOVB, ppc64.AMOVHU},
-       {"MOVHZU", LMOVB, ppc64.AMOVHZU},
-       {"MOVHBR", LXMV, ppc64.AMOVHBR},
-       {"MOVWBR", LXMV, ppc64.AMOVWBR},
-       {"MOVW", LMOVW, ppc64.AMOVW},
-       {"MOVWU", LMOVW, ppc64.AMOVWU},
-       {"MOVMW", LMOVMW, ppc64.AMOVMW},
-       {"MOVFL", LMOVW, ppc64.AMOVFL},
-       {"MULLW", LADDW, ppc64.AMULLW}, /* includes multiply immediate 10-139 */
-       {"MULLWV", LLOGW, ppc64.AMULLWV},
-       {"MULLWCC", LLOGW, ppc64.AMULLWCC},
-       {"MULLWVCC", LLOGW, ppc64.AMULLWVCC},
-       {"MULHW", LLOGW, ppc64.AMULHW},
-       {"MULHWCC", LLOGW, ppc64.AMULHWCC},
-       {"MULHWU", LLOGW, ppc64.AMULHWU},
-       {"MULHWUCC", LLOGW, ppc64.AMULHWUCC},
-       {"NEG", LABS, ppc64.ANEG},
-       {"NEGV", LABS, ppc64.ANEGV},
-       {"NEGCC", LABS, ppc64.ANEGCC},
-       {"NEGVCC", LABS, ppc64.ANEGVCC},
-       {"NOP", LNOP, obj.ANOP}, /* ori 0,0,0 */
-       {"SYSCALL", LNOP, ppc64.ASYSCALL},
-       {"UNDEF", LNOP, obj.AUNDEF},
-       {"RET", LRETRN, obj.ARET},
-       {"RETURN", LRETRN, obj.ARET},
-       {"RFI", LRETRN, ppc64.ARFI},
-       {"RFCI", LRETRN, ppc64.ARFCI},
-       {"DATA", LDATA, obj.ADATA},
-       {"END", LEND, obj.AEND},
-       {"TEXT", LTEXT, obj.ATEXT},
-
-       /* 64-bit instructions */
-       {"CNTLZD", LABS, ppc64.ACNTLZD},
-       {"CNTLZDCC", LABS, ppc64.ACNTLZDCC},
-       {"DIVD", LLOGW, ppc64.ADIVD},
-       {"DIVDCC", LLOGW, ppc64.ADIVDCC},
-       {"DIVDVCC", LLOGW, ppc64.ADIVDVCC},
-       {"DIVDV", LLOGW, ppc64.ADIVDV},
-       {"DIVDU", LLOGW, ppc64.ADIVDU},
-       {"DIVDUCC", LLOGW, ppc64.ADIVDUCC},
-       {"DIVDUVCC", LLOGW, ppc64.ADIVDUVCC},
-       {"DIVDUV", LLOGW, ppc64.ADIVDUV},
-       {"EXTSW", LABS, ppc64.AEXTSW},
-       {"EXTSWCC", LABS, ppc64.AEXTSWCC},
-       {"FCTID", LFCONV, ppc64.AFCTID},
-       {"FCTIDCC", LFCONV, ppc64.AFCTIDCC},
-       {"FCTIDZ", LFCONV, ppc64.AFCTIDZ},
-       {"FCTIDZCC", LFCONV, ppc64.AFCTIDZCC},
-       {"FCFID", LFCONV, ppc64.AFCFID},
-       {"FCFIDCC", LFCONV, ppc64.AFCFIDCC},
-       {"LDAR", LXLD, ppc64.ALDAR},
-       {"MOVD", LMOVW, ppc64.AMOVD},
-       {"MOVDU", LMOVW, ppc64.AMOVDU},
-       {"MOVWZ", LMOVW, ppc64.AMOVWZ},
-       {"MOVWZU", LMOVW, ppc64.AMOVWZU},
-       {"MULHD", LLOGW, ppc64.AMULHD},
-       {"MULHDCC", LLOGW, ppc64.AMULHDCC},
-       {"MULHDU", LLOGW, ppc64.AMULHDU},
-       {"MULHDUCC", LLOGW, ppc64.AMULHDUCC},
-       {"MULLD", LADDW, ppc64.AMULLD}, /* includes multiply immediate? */
-       {"MULLDCC", LLOGW, ppc64.AMULLDCC},
-       {"MULLDVCC", LLOGW, ppc64.AMULLDVCC},
-       {"MULLDV", LLOGW, ppc64.AMULLDV},
-       {"RFID", LRETRN, ppc64.ARFID},
-       {"HRFID", LRETRN, ppc64.AHRFID},
-       {"RLDMI", LRLWM, ppc64.ARLDMI},
-       {"RLDMICC", LRLWM, ppc64.ARLDMICC},
-       {"RLDC", LRLWM, ppc64.ARLDC},
-       {"RLDCCC", LRLWM, ppc64.ARLDCCC},
-       {"RLDCR", LRLWM, ppc64.ARLDCR},
-       {"RLDCRCC", LRLWM, ppc64.ARLDCRCC},
-       {"RLDCL", LRLWM, ppc64.ARLDCL},
-       {"RLDCLCC", LRLWM, ppc64.ARLDCLCC},
-       {"SLBIA", LNOP, ppc64.ASLBIA},
-       {"SLBIE", LNOP, ppc64.ASLBIE},
-       {"SLBMFEE", LABS, ppc64.ASLBMFEE},
-       {"SLBMFEV", LABS, ppc64.ASLBMFEV},
-       {"SLBMTE", LABS, ppc64.ASLBMTE},
-       {"SLD", LSHW, ppc64.ASLD},
-       {"SLDCC", LSHW, ppc64.ASLDCC},
-       {"SRD", LSHW, ppc64.ASRD},
-       {"SRAD", LSHW, ppc64.ASRAD},
-       {"SRADCC", LSHW, ppc64.ASRADCC},
-       {"SRDCC", LSHW, ppc64.ASRDCC},
-       {"STDCCC", LXST, ppc64.ASTDCCC},
-       {"TD", LADDW, ppc64.ATD},
-
-       /* pseudo instructions */
-       {"REM", LLOGW, ppc64.AREM},
-       {"REMCC", LLOGW, ppc64.AREMCC},
-       {"REMV", LLOGW, ppc64.AREMV},
-       {"REMVCC", LLOGW, ppc64.AREMVCC},
-       {"REMU", LLOGW, ppc64.AREMU},
-       {"REMUCC", LLOGW, ppc64.AREMUCC},
-       {"REMUV", LLOGW, ppc64.AREMUV},
-       {"REMUVCC", LLOGW, ppc64.AREMUVCC},
-       {"REMD", LLOGW, ppc64.AREMD},
-       {"REMDCC", LLOGW, ppc64.AREMDCC},
-       {"REMDV", LLOGW, ppc64.AREMDV},
-       {"REMDVCC", LLOGW, ppc64.AREMDVCC},
-       {"REMDU", LLOGW, ppc64.AREMDU},
-       {"REMDUCC", LLOGW, ppc64.AREMDUCC},
-       {"REMDUV", LLOGW, ppc64.AREMDUV},
-       {"REMDUVCC", LLOGW, ppc64.AREMDUVCC},
-
-       /* special instructions */
-       {"DCBF", LXOP, ppc64.ADCBF},
-       {"DCBI", LXOP, ppc64.ADCBI},
-       {"DCBST", LXOP, ppc64.ADCBST},
-       {"DCBT", LXOP, ppc64.ADCBT},
-       {"DCBTST", LXOP, ppc64.ADCBTST},
-       {"DCBZ", LXOP, ppc64.ADCBZ},
-       {"ICBI", LXOP, ppc64.AICBI},
-       {"ECIWX", LXLD, ppc64.AECIWX},
-       {"ECOWX", LXST, ppc64.AECOWX},
-       {"LWAR", LXLD, ppc64.ALWAR},
-       {"STWCCC", LXST, ppc64.ASTWCCC},
-       {"EIEIO", LRETRN, ppc64.AEIEIO},
-       {"TLBIE", LNOP, ppc64.ATLBIE},
-       {"TLBIEL", LNOP, ppc64.ATLBIEL},
-       {"LSW", LXLD, ppc64.ALSW},
-       {"STSW", LXST, ppc64.ASTSW},
-       {"ISYNC", LRETRN, ppc64.AISYNC},
-       {"SYNC", LRETRN, ppc64.ASYNC},
-       {"TLBSYNC", LRETRN, ppc64.ATLBSYNC},
-       {"PTESYNC", LRETRN, ppc64.APTESYNC},
-
-       /*      "TW",           LADDW,  ATW,*/
-       {"WORD", LWORD, ppc64.AWORD},
-       {"DWORD", LWORD, ppc64.ADWORD},
-       {"SCHED", LSCHED, 0},
-       {"NOSCHED", LSCHED, 0x80},
-       {"PCDATA", LPCDAT, obj.APCDATA},
-       {"FUNCDATA", LFUNCDAT, obj.AFUNCDATA},
-}
-
-func cinit() {
-}
-
-func cclean() {
-       outcode(obj.AEND, &nullgen, 0, &nullgen)
-}
-
-var lastpc *obj.Prog
-var nosched int
-
-func outcode(a int, g1 *obj.Addr, reg int, g2 *obj.Addr) {
-       var p *obj.Prog
-       var pl *obj.Plist
-
-       if asm.Pass == 1 {
-               goto out
-       }
-
-       if g1.Scale != 0 {
-               if reg != 0 || g2.Scale != 0 {
-                       yyerror("bad addressing modes")
-               }
-               reg = int(g1.Scale)
-       } else if g2.Scale != 0 {
-               if reg != 0 {
-                       yyerror("bad addressing modes")
-               }
-               reg = int(g2.Scale)
-       }
-
-       p = asm.Ctxt.NewProg()
-       p.As = int16(a)
-       p.Lineno = stmtline
-       if nosched != 0 {
-               p.Mark |= ppc64.NOSCHED
-       }
-       p.From = *g1
-       p.Reg = int16(reg)
-       p.To = *g2
-       p.Pc = int64(asm.PC)
-
-       if lastpc == nil {
-               pl = obj.Linknewplist(asm.Ctxt)
-               pl.Firstpc = p
-       } else {
-               lastpc.Link = p
-       }
-       lastpc = p
-
-out:
-       if a != obj.AGLOBL && a != obj.ADATA {
-               asm.PC++
-       }
-}
-
-func outgcode(a int, g1 *obj.Addr, reg int, g2, g3 *obj.Addr) {
-       var p *obj.Prog
-       var pl *obj.Plist
-
-       if asm.Pass == 1 {
-               goto out
-       }
-
-       p = asm.Ctxt.NewProg()
-       p.As = int16(a)
-       p.Lineno = stmtline
-       if nosched != 0 {
-               p.Mark |= ppc64.NOSCHED
-       }
-       p.From = *g1
-       p.Reg = int16(reg)
-       if g2.Type != 0 {
-               p.From3 = new(obj.Addr)
-               *p.From3 = *g2
-       }
-       p.To = *g3
-       p.Pc = int64(asm.PC)
-
-       if lastpc == nil {
-               pl = obj.Linknewplist(asm.Ctxt)
-               pl.Firstpc = p
-       } else {
-               lastpc.Link = p
-       }
-       lastpc = p
-
-out:
-       if a != obj.AGLOBL && a != obj.ADATA {
-               asm.PC++
-       }
-}
diff --git a/src/cmd/old9a/y.go b/src/cmd/old9a/y.go
deleted file mode 100644 (file)
index c1126bf..0000000
+++ /dev/null
@@ -1,2028 +0,0 @@
-//line a.y:31
-package main
-
-import __yyfmt__ "fmt"
-
-//line a.y:31
-import (
-       "cmd/internal/asm"
-       "cmd/internal/obj"
-       . "cmd/internal/obj/ppc64"
-)
-
-//line a.y:40
-type yySymType struct {
-       yys  int
-       sym  *asm.Sym
-       lval int64
-       dval float64
-       sval string
-       addr obj.Addr
-}
-
-const LMOVW = 57346
-const LMOVB = 57347
-const LABS = 57348
-const LLOGW = 57349
-const LSHW = 57350
-const LADDW = 57351
-const LCMP = 57352
-const LCROP = 57353
-const LBRA = 57354
-const LFMOV = 57355
-const LFCONV = 57356
-const LFCMP = 57357
-const LFADD = 57358
-const LFMA = 57359
-const LTRAP = 57360
-const LXORW = 57361
-const LNOP = 57362
-const LEND = 57363
-const LRETT = 57364
-const LWORD = 57365
-const LTEXT = 57366
-const LDATA = 57367
-const LGLOBL = 57368
-const LRETRN = 57369
-const LCONST = 57370
-const LSP = 57371
-const LSB = 57372
-const LFP = 57373
-const LPC = 57374
-const LCREG = 57375
-const LFLUSH = 57376
-const LREG = 57377
-const LFREG = 57378
-const LR = 57379
-const LCR = 57380
-const LF = 57381
-const LFPSCR = 57382
-const LLR = 57383
-const LCTR = 57384
-const LSPR = 57385
-const LSPREG = 57386
-const LSEG = 57387
-const LMSR = 57388
-const LPCDAT = 57389
-const LFUNCDAT = 57390
-const LSCHED = 57391
-const LXLD = 57392
-const LXST = 57393
-const LXOP = 57394
-const LXMV = 57395
-const LRLWM = 57396
-const LMOVMW = 57397
-const LMOVEM = 57398
-const LMOVFL = 57399
-const LMTFSB = 57400
-const LMA = 57401
-const LFCONST = 57402
-const LSCONST = 57403
-const LNAME = 57404
-const LLAB = 57405
-const LVAR = 57406
-
-var yyToknames = [...]string{
-       "$end",
-       "error",
-       "$unk",
-       "'|'",
-       "'^'",
-       "'&'",
-       "'<'",
-       "'>'",
-       "'+'",
-       "'-'",
-       "'*'",
-       "'/'",
-       "'%'",
-       "LMOVW",
-       "LMOVB",
-       "LABS",
-       "LLOGW",
-       "LSHW",
-       "LADDW",
-       "LCMP",
-       "LCROP",
-       "LBRA",
-       "LFMOV",
-       "LFCONV",
-       "LFCMP",
-       "LFADD",
-       "LFMA",
-       "LTRAP",
-       "LXORW",
-       "LNOP",
-       "LEND",
-       "LRETT",
-       "LWORD",
-       "LTEXT",
-       "LDATA",
-       "LGLOBL",
-       "LRETRN",
-       "LCONST",
-       "LSP",
-       "LSB",
-       "LFP",
-       "LPC",
-       "LCREG",
-       "LFLUSH",
-       "LREG",
-       "LFREG",
-       "LR",
-       "LCR",
-       "LF",
-       "LFPSCR",
-       "LLR",
-       "LCTR",
-       "LSPR",
-       "LSPREG",
-       "LSEG",
-       "LMSR",
-       "LPCDAT",
-       "LFUNCDAT",
-       "LSCHED",
-       "LXLD",
-       "LXST",
-       "LXOP",
-       "LXMV",
-       "LRLWM",
-       "LMOVMW",
-       "LMOVEM",
-       "LMOVFL",
-       "LMTFSB",
-       "LMA",
-       "LFCONST",
-       "LSCONST",
-       "LNAME",
-       "LLAB",
-       "LVAR",
-       "':'",
-       "'='",
-       "';'",
-       "','",
-       "'('",
-       "')'",
-       "'$'",
-       "'~'",
-}
-var yyStatenames = [...]string{}
-
-const yyEofCode = 1
-const yyErrCode = 2
-const yyMaxDepth = 200
-
-//line yacctab:1
-var yyExca = [...]int{
-       -1, 1,
-       1, -1,
-       -2, 2,
-}
-
-const yyNprod = 187
-const yyPrivate = 57344
-
-var yyTokenNames []string
-var yyStates []string
-
-const yyLast = 900
-
-var yyAct = [...]int{
-
-       48, 394, 54, 90, 427, 273, 440, 58, 52, 102,
-       80, 79, 85, 172, 94, 95, 97, 98, 100, 101,
-       51, 57, 113, 3, 80, 79, 56, 121, 123, 125,
-       435, 128, 130, 91, 133, 53, 278, 138, 74, 77,
-       75, 66, 164, 117, 118, 119, 120, 454, 453, 93,
-       96, 65, 99, 77, 134, 417, 127, 114, 94, 74,
-       416, 75, 74, 122, 75, 406, 83, 84, 105, 136,
-       137, 139, 140, 76, 94, 78, 80, 79, 405, 384,
-       62, 127, 94, 81, 383, 205, 148, 150, 149, 78,
-       50, 380, 116, 369, 104, 94, 127, 81, 368, 61,
-       61, 61, 87, 89, 367, 77, 366, 277, 103, 110,
-       364, 363, 316, 63, 407, 198, 64, 61, 284, 55,
-       126, 205, 129, 131, 162, 206, 232, 143, 143, 143,
-       169, 74, 63, 75, 171, 64, 225, 204, 205, 76,
-       109, 78, 170, 165, 448, 47, 62, 447, 92, 81,
-       446, 445, 248, 256, 257, 168, 226, 264, 265, 254,
-       269, 270, 271, 260, 135, 444, 443, 94, 176, 177,
-       178, 235, 399, 253, 398, 397, 262, 199, 255, 393,
-       288, 291, 292, 189, 392, 267, 391, 251, 390, 389,
-       261, 303, 305, 307, 309, 311, 312, 202, 388, 387,
-       166, 386, 385, 293, 294, 295, 296, 314, 379, 317,
-       115, 49, 86, 88, 378, 332, 334, 335, 336, 377,
-       338, 106, 342, 376, 375, 374, 302, 373, 372, 124,
-       362, 328, 329, 330, 331, 361, 233, 231, 230, 229,
-       61, 116, 250, 61, 132, 259, 222, 221, 141, 220,
-       333, 219, 146, 218, 280, 339, 341, 217, 281, 282,
-       283, 216, 215, 286, 287, 344, 214, 213, 61, 348,
-       290, 252, 318, 321, 61, 263, 298, 300, 266, 268,
-       351, 352, 353, 354, 355, 212, 315, 358, 359, 360,
-       370, 211, 202, 324, 59, 210, 80, 79, 209, 371,
-       207, 203, 197, 196, 195, 194, 193, 61, 192, 200,
-       191, 340, 190, 343, 188, 185, 184, 80, 79, 61,
-       347, 183, 349, 350, 208, 77, 182, 181, 381, 180,
-       67, 382, 74, 63, 75, 68, 64, 65, 83, 84,
-       70, 69, 179, 82, 223, 224, 77, 161, 227, 228,
-       160, 159, 249, 158, 157, 258, 156, 163, 155, 76,
-       154, 78, 153, 152, 151, 46, 62, 45, 66, 81,
-       44, 404, 187, 408, 409, 410, 411, 412, 413, 414,
-       289, 299, 78, 402, 42, 43, 297, 104, 63, 415,
-       81, 64, 67, 431, 65, 63, 430, 112, 64, 400,
-       401, 403, 438, 439, 319, 322, 421, 422, 246, 245,
-       244, 242, 243, 237, 238, 239, 240, 241, 67, 337,
-       441, 461, 163, 112, 449, 434, 426, 429, 442, 234,
-       450, 345, 186, 433, 436, 437, 357, 451, 74, 63,
-       75, 74, 64, 75, 285, 456, 457, 356, 459, 460,
-       67, 8, 418, 60, 67, 112, 74, 272, 75, 112,
-       70, 69, 396, 82, 455, 275, 274, 276, 103, 174,
-       175, 74, 202, 75, 275, 274, 276, 80, 452, 428,
-       428, 247, 147, 2, 432, 301, 304, 306, 308, 310,
-       395, 313, 142, 144, 145, 275, 274, 276, 325, 9,
-       272, 74, 326, 75, 327, 1, 77, 423, 424, 425,
-       71, 10, 11, 17, 15, 16, 14, 26, 19, 20,
-       12, 22, 25, 23, 24, 21, 73, 33, 37, 168,
-       34, 38, 40, 39, 41, 458, 72, 0, 186, 167,
-       76, 176, 78, 80, 79, 0, 173, 104, 174, 175,
-       81, 239, 240, 241, 35, 36, 6, 29, 30, 32,
-       31, 27, 28, 80, 79, 13, 18, 0, 0, 4,
-       0, 5, 77, 365, 7, 0, 0, 67, 0, 74,
-       0, 75, 68, 0, 419, 83, 84, 70, 69, 0,
-       82, 0, 77, 0, 80, 79, 0, 67, 0, 0,
-       80, 79, 112, 0, 0, 0, 76, 0, 78, 80,
-       79, 0, 0, 62, 0, 94, 81, 237, 238, 239,
-       240, 241, 0, 77, 0, 0, 111, 0, 78, 77,
-       0, 63, 108, 107, 64, 0, 81, 0, 77, 80,
-       79, 0, 0, 0, 0, 74, 0, 75, 245, 244,
-       242, 243, 237, 238, 239, 240, 241, 76, 0, 78,
-       0, 0, 167, 76, 62, 78, 0, 81, 77, 0,
-       104, 0, 76, 81, 78, 74, 0, 75, 0, 62,
-       0, 0, 81, 246, 245, 244, 242, 243, 237, 238,
-       239, 240, 241, 80, 79, 80, 79, 80, 79, 0,
-       0, 0, 76, 0, 78, 0, 80, 79, 0, 104,
-       80, 79, 81, 0, 0, 0, 0, 0, 0, 80,
-       79, 0, 77, 0, 77, 0, 77, 0, 0, 74,
-       0, 75, 80, 79, 0, 77, 0, 0, 0, 77,
-       0, 0, 0, 80, 79, 0, 0, 0, 77, 0,
-       0, 0, 80, 79, 0, 0, 299, 0, 78, 279,
-       78, 77, 78, 104, 0, 104, 81, 104, 81, 94,
-       81, 78, 77, 111, 0, 78, 104, 0, 346, 81,
-       420, 77, 76, 81, 78, 0, 0, 0, 0, 104,
-       0, 0, 81, 0, 0, 111, 0, 78, 0, 0,
-       0, 0, 323, 0, 0, 81, 111, 0, 78, 0,
-       0, 0, 0, 320, 0, 111, 81, 78, 0, 0,
-       0, 0, 201, 0, 0, 81, 246, 245, 244, 242,
-       243, 237, 238, 239, 240, 241, 244, 242, 243, 237,
-       238, 239, 240, 241, 242, 243, 237, 238, 239, 240,
-       241, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 236,
-}
-var yyPact = [...]int{
-
-       -1000, -1000, 497, -1000, 309, 294, 290, -1000, 288, 68,
-       287, 600, 67, -67, -7, 396, -7, 396, 396, 308,
-       554, 14, 342, 342, 342, 342, 396, -7, 630, 2,
-       396, 17, 2, 86, -40, -67, -67, 163, 710, 710,
-       710, 163, -1000, 308, 308, -1000, -1000, -1000, 286, 285,
-       284, 282, 280, 278, 276, 275, 273, 272, 269, -1000,
-       -1000, 45, 684, -1000, 64, -1000, 591, -1000, 51, -1000,
-       63, -1000, -1000, -1000, -1000, 55, 539, -1000, -1000, 308,
-       308, 308, -1000, -1000, -1000, 264, 251, 249, 248, 243,
-       238, 237, 362, 236, 308, 234, 232, 230, 228, 227,
-       226, 225, 224, -1000, 308, -1000, -1000, 15, 743, 223,
-       59, 539, 51, 222, 220, -1000, -1000, 217, 213, 207,
-       189, 188, 184, 183, 179, 175, 173, 396, 171, 169,
-       168, -1000, -1000, 163, 163, 393, -1000, 163, 163, 161,
-       160, -1000, 159, 47, 158, 417, -1000, 497, 822, -1000,
-       404, 534, 396, 396, 1, 349, 396, 396, 407, 411,
-       396, 396, 426, 27, 679, 308, -1000, -1000, 45, 308,
-       308, 308, 39, 436, 308, 308, -1000, -1000, -1000, 600,
-       396, 396, 342, 342, 342, 585, -1000, 311, 308, -1000,
-       -7, 396, 396, 396, 396, 396, 396, 308, 32, -1000,
-       -1000, 15, 42, 734, 723, 456, 39, 396, -1000, 396,
-       342, 342, 342, 342, -7, 396, 396, 396, 710, -7,
-       -23, 396, 2, -1000, -1000, -1000, -1000, -1000, -1000, -67,
-       710, 697, 435, 688, 308, -1000, -1000, 308, 308, 308,
-       308, 308, 440, 428, 308, 308, 308, -1000, -1000, -1000,
-       -1000, 157, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       -1000, 152, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       -1000, -1000, 31, 30, -1000, -1000, -1000, -1000, 396, -1000,
-       26, 24, 18, 13, 435, 460, -1000, -1000, -1000, -1000,
-       -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       -1000, 150, 149, -1000, 147, -1000, 146, -1000, 145, -1000,
-       141, -1000, -1000, 136, -1000, 130, -1000, 11, -1000, -1000,
-       15, -1000, -1000, 15, 6, -1, -1000, -1000, -1000, 124,
-       123, 121, 120, 111, 110, 108, -1000, -1000, -1000, 106,
-       -1000, 101, -1000, -1000, -1000, -1000, 452, 97, -1000, 96,
-       94, 540, 540, -1000, -1000, -1000, 308, 308, 837, 830,
-       643, 353, 344, -1000, -1000, -2, -1000, -1000, -1000, -1000,
-       -15, 35, 396, 396, 396, 396, 396, 396, 396, 308,
-       -1000, -20, -25, 701, -1000, 342, 342, 375, 375, 375,
-       688, 688, 396, 2, -1000, 423, 387, -51, -67, -75,
-       608, 608, -1000, -1000, -1000, -1000, -1000, 380, -1000, -1000,
-       -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       15, -1000, 88, -1000, -1000, -1000, 87, 73, 72, 69,
-       66, -1000, -1000, 386, 420, 452, -1000, -1000, -1000, -1000,
-       468, -32, -33, 342, 396, 396, 308, 396, 396, -1000,
-       383, -1000, 686, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-       -1000, -1000,
-}
-var yyPgo = [...]int{
-
-       0, 88, 42, 5, 13, 294, 200, 0, 90, 453,
-       119, 20, 7, 536, 526, 1, 35, 2, 3, 68,
-       26, 21, 9, 8, 510, 4, 505, 483, 23, 482,
-       451, 210,
-}
-var yyR1 = [...]int{
-
-       0, 26, 27, 26, 29, 28, 28, 28, 28, 28,
-       28, 28, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
-       30, 30, 30, 30, 30, 19, 19, 7, 12, 12,
-       13, 21, 14, 24, 20, 20, 20, 23, 11, 11,
-       10, 10, 22, 25, 15, 15, 15, 15, 17, 17,
-       18, 18, 16, 5, 5, 8, 8, 6, 6, 9,
-       9, 9, 31, 31, 4, 4, 4, 3, 3, 3,
-       1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
-       2, 2, 2, 2, 2, 2, 2,
-}
-var yyR2 = [...]int{
-
-       0, 0, 0, 3, 0, 4, 4, 4, 2, 1,
-       2, 2, 4, 4, 4, 4, 4, 4, 4, 4,
-       4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
-       4, 4, 6, 4, 4, 6, 4, 4, 6, 6,
-       6, 4, 4, 6, 4, 6, 4, 6, 4, 4,
-       2, 6, 4, 4, 4, 6, 4, 4, 4, 4,
-       4, 4, 4, 4, 2, 2, 4, 3, 3, 5,
-       4, 4, 6, 4, 4, 6, 6, 6, 8, 4,
-       4, 3, 2, 4, 4, 6, 8, 4, 6, 4,
-       4, 6, 6, 8, 8, 8, 8, 4, 4, 4,
-       6, 4, 6, 4, 4, 2, 2, 3, 3, 3,
-       3, 2, 3, 3, 4, 4, 2, 5, 7, 4,
-       6, 6, 6, 6, 2, 4, 2, 1, 1, 1,
-       1, 1, 1, 1, 1, 4, 1, 1, 1, 4,
-       1, 4, 1, 3, 1, 2, 3, 4, 2, 2,
-       2, 3, 2, 1, 4, 3, 5, 1, 4, 4,
-       5, 7, 0, 1, 0, 2, 2, 1, 1, 1,
-       1, 1, 2, 2, 2, 3, 1, 3, 3, 3,
-       3, 3, 4, 4, 3, 3, 3,
-}
-var yyChk = [...]int{
-
-       -1000, -26, -27, -28, 72, 74, 59, 77, -30, 2,
-       14, 15, 23, 68, 19, 17, 18, 16, 69, 21,
-       22, 28, 24, 26, 27, 25, 20, 64, 65, 60,
-       61, 63, 62, 30, 33, 57, 58, 31, 34, 36,
-       35, 37, 75, 76, 76, 77, 77, 77, -7, -6,
-       -8, -11, -23, -16, -17, -10, -20, -21, -12, -5,
-       -9, -1, 79, 46, 49, 50, 81, 43, 48, 54,
-       53, -24, -13, -14, 45, 47, 72, 38, 74, 10,
-       9, 82, 56, 51, 52, -7, -6, -8, -6, -8,
-       -18, -11, 81, -16, 81, -7, -16, -7, -7, -16,
-       -7, -7, -22, -1, 79, -19, -6, 79, 78, -10,
-       -1, 72, 48, -7, -16, -31, 78, -11, -11, -11,
-       -11, -7, -16, -7, -6, -7, -8, 79, -7, -8,
-       -7, -8, -31, -7, -11, 78, -16, -16, -17, -16,
-       -16, -31, -9, -1, -9, -9, -31, -29, -2, -1,
-       -2, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-       78, 78, 79, -5, -2, 79, -6, 71, -1, 79,
-       79, 79, -4, 7, 9, 10, -1, -1, -1, 78,
-       78, 78, 78, 78, 78, 78, 70, 10, 78, -1,
-       78, 78, 78, 78, 78, 78, 78, 78, -12, -19,
-       -6, 79, -1, 78, 78, 79, -4, 78, -31, 78,
-       78, 78, 78, 78, 78, 78, 78, 78, 78, 78,
-       78, 78, 78, -31, -31, -7, -11, -31, -31, 78,
-       78, 78, 79, 78, 12, -28, 77, 9, 10, 11,
-       12, 13, 7, 8, 6, 5, 4, 77, -7, -6,
-       -8, -16, -10, -21, -12, -20, -7, -7, -6, -8,
-       -23, -16, -11, -10, -7, -7, -10, -20, -10, -7,
-       -7, -7, -5, -3, 40, 39, 41, 80, 9, 80,
-       -1, -1, -1, -1, 79, 8, -1, -1, -7, -6,
-       -8, -7, -7, -11, -11, -11, -11, -6, -8, 70,
-       -1, -5, -16, -7, -5, -7, -5, -7, -5, -7,
-       -5, -7, -7, -5, -22, -1, 80, -12, -19, -6,
-       79, -19, -6, 79, -1, 42, -5, -5, -11, -11,
-       -11, -11, -7, -16, -7, -7, -7, -6, -7, -16,
-       -8, -16, -7, -8, -16, -6, 81, -1, -16, -1,
-       -1, -2, -2, -2, -2, -2, 7, 8, -2, -2,
-       -2, 78, 78, 80, 80, -5, 80, 80, 80, 80,
-       -3, -4, 78, 78, 78, 78, 78, 78, 78, 78,
-       80, -12, -12, 78, 80, 78, 78, 78, 78, 78,
-       78, 78, 78, 78, -15, 38, 10, 78, 78, 78,
-       -2, -2, -21, 48, -23, 80, 80, 79, -7, -7,
-       -7, -7, -7, -7, -7, -22, 80, 80, -19, -6,
-       79, -11, -11, -10, -10, -10, -16, -25, -1, -16,
-       -25, -7, -8, 10, 38, 81, -16, -16, -17, -18,
-       81, 40, -12, 78, 78, 78, 78, 78, 78, 38,
-       10, -15, 10, 80, 80, -11, -7, -7, -1, -7,
-       -7, 38,
-}
-var yyDef = [...]int{
-
-       1, -2, 0, 3, 0, 0, 0, 9, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 162, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 162, 0, 0, 0, 162, 0, 0,
-       0, 162, 4, 0, 0, 8, 10, 11, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 127,
-       157, 0, 0, 138, 0, 137, 0, 140, 131, 134,
-       0, 136, 128, 129, 153, 0, 164, 170, 171, 0,
-       0, 0, 133, 130, 132, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       50, 0, 0, 142, 0, 64, 65, 0, 0, 0,
-       0, 164, 0, 162, 0, 82, 163, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 105, 106, 162, 162, 163, 111, 162, 162, 0,
-       0, 116, 0, 0, 0, 0, 124, 0, 0, 176,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 148, 149, 152, 0,
-       0, 0, 0, 0, 0, 0, 172, 173, 174, 0,
-       0, 0, 0, 0, 0, 0, 150, 0, 0, 152,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 67,
-       68, 0, 0, 0, 0, 0, 126, 163, 81, 0,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       0, 0, 0, 107, 108, 109, 110, 112, 113, 0,
-       0, 0, 0, 0, 0, 5, 6, 0, 0, 0,
-       0, 0, 0, 0, 0, 0, 0, 7, 12, 24,
-       25, 0, 36, 37, 61, 63, 13, 14, 28, 29,
-       31, 0, 30, 33, 52, 53, 56, 62, 57, 59,
-       58, 60, 0, 0, 167, 168, 169, 155, 0, 175,
-       0, 0, 0, 0, 0, 164, 165, 166, 15, 26,
-       27, 16, 17, 18, 19, 20, 21, 22, 23, 151,
-       34, 127, 0, 41, 127, 42, 127, 44, 127, 46,
-       127, 48, 49, 0, 54, 142, 66, 0, 70, 71,
-       0, 73, 74, 0, 0, 0, 79, 80, 83, 84,
-       0, 87, 89, 90, 0, 0, 97, 98, 99, 0,
-       101, 0, 103, 104, 114, 115, 0, 0, 119, 0,
-       0, 177, 178, 179, 180, 181, 0, 0, 184, 185,
-       186, 0, 0, 158, 159, 0, 139, 141, 135, 154,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-       69, 0, 0, 0, 125, 0, 0, 0, 0, 0,
-       0, 0, 0, 0, 117, 144, 0, 0, 0, 0,
-       182, 183, 35, 131, 32, 156, 160, 0, 38, 40,
-       39, 43, 45, 47, 51, 55, 72, 75, 76, 77,
-       0, 85, 0, 88, 91, 92, 0, 0, 0, 0,
-       0, 100, 102, 0, 145, 0, 120, 121, 122, 123,
-       0, 0, 0, 0, 0, 0, 0, 0, 0, 146,
-       0, 118, 0, 161, 78, 86, 93, 94, 143, 95,
-       96, 147,
-}
-var yyTok1 = [...]int{
-
-       1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 81, 13, 6, 3,
-       79, 80, 11, 9, 78, 10, 3, 12, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 75, 77,
-       7, 76, 8, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
-       3, 3, 3, 3, 4, 3, 82,
-}
-var yyTok2 = [...]int{
-
-       2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
-       22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
-       32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
-       42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
-       52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
-       62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
-       72, 73, 74,
-}
-var yyTok3 = [...]int{
-       0,
-}
-
-var yyErrorMessages = [...]struct {
-       state int
-       token int
-       msg   string
-}{}
-
-//line yaccpar:1
-
-/*     parser for yacc output  */
-
-var (
-       yyDebug        = 0
-       yyErrorVerbose = false
-)
-
-type yyLexer interface {
-       Lex(lval *yySymType) int
-       Error(s string)
-}
-
-type yyParser interface {
-       Parse(yyLexer) int
-       Lookahead() int
-}
-
-type yyParserImpl struct {
-       lookahead func() int
-}
-
-func (p *yyParserImpl) Lookahead() int {
-       return p.lookahead()
-}
-
-func yyNewParser() yyParser {
-       p := &yyParserImpl{
-               lookahead: func() int { return -1 },
-       }
-       return p
-}
-
-const yyFlag = -1000
-
-func yyTokname(c int) string {
-       if c >= 1 && c-1 < len(yyToknames) {
-               if yyToknames[c-1] != "" {
-                       return yyToknames[c-1]
-               }
-       }
-       return __yyfmt__.Sprintf("tok-%v", c)
-}
-
-func yyStatname(s int) string {
-       if s >= 0 && s < len(yyStatenames) {
-               if yyStatenames[s] != "" {
-                       return yyStatenames[s]
-               }
-       }
-       return __yyfmt__.Sprintf("state-%v", s)
-}
-
-func yyErrorMessage(state, lookAhead int) string {
-       const TOKSTART = 4
-
-       if !yyErrorVerbose {
-               return "syntax error"
-       }
-
-       for _, e := range yyErrorMessages {
-               if e.state == state && e.token == lookAhead {
-                       return "syntax error: " + e.msg
-               }
-       }
-
-       res := "syntax error: unexpected " + yyTokname(lookAhead)
-
-       // To match Bison, suggest at most four expected tokens.
-       expected := make([]int, 0, 4)
-
-       // Look for shiftable tokens.
-       base := yyPact[state]
-       for tok := TOKSTART; tok-1 < len(yyToknames); tok++ {
-               if n := base + tok; n >= 0 && n < yyLast && yyChk[yyAct[n]] == tok {
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-       }
-
-       if yyDef[state] == -2 {
-               i := 0
-               for yyExca[i] != -1 || yyExca[i+1] != state {
-                       i += 2
-               }
-
-               // Look for tokens that we accept or reduce.
-               for i += 2; yyExca[i] >= 0; i += 2 {
-                       tok := yyExca[i]
-                       if tok < TOKSTART || yyExca[i+1] == 0 {
-                               continue
-                       }
-                       if len(expected) == cap(expected) {
-                               return res
-                       }
-                       expected = append(expected, tok)
-               }
-
-               // If the default action is to accept or reduce, give up.
-               if yyExca[i+1] != 0 {
-                       return res
-               }
-       }
-
-       for i, tok := range expected {
-               if i == 0 {
-                       res += ", expecting "
-               } else {
-                       res += " or "
-               }
-               res += yyTokname(tok)
-       }
-       return res
-}
-
-func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
-       token = 0
-       char = lex.Lex(lval)
-       if char <= 0 {
-               token = yyTok1[0]
-               goto out
-       }
-       if char < len(yyTok1) {
-               token = yyTok1[char]
-               goto out
-       }
-       if char >= yyPrivate {
-               if char < yyPrivate+len(yyTok2) {
-                       token = yyTok2[char-yyPrivate]
-                       goto out
-               }
-       }
-       for i := 0; i < len(yyTok3); i += 2 {
-               token = yyTok3[i+0]
-               if token == char {
-                       token = yyTok3[i+1]
-                       goto out
-               }
-       }
-
-out:
-       if token == 0 {
-               token = yyTok2[1] /* unknown char */
-       }
-       if yyDebug >= 3 {
-               __yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
-       }
-       return char, token
-}
-
-func yyParse(yylex yyLexer) int {
-       return yyNewParser().Parse(yylex)
-}
-
-func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
-       var yyn int
-       var yylval yySymType
-       var yyVAL yySymType
-       var yyDollar []yySymType
-       yyS := make([]yySymType, yyMaxDepth)
-
-       Nerrs := 0   /* number of errors */
-       Errflag := 0 /* error recovery flag */
-       yystate := 0
-       yychar := -1
-       yytoken := -1 // yychar translated into internal numbering
-       yyrcvr.lookahead = func() int { return yychar }
-       defer func() {
-               // Make sure we report no lookahead when not parsing.
-               yystate = -1
-               yychar = -1
-               yytoken = -1
-       }()
-       yyp := -1
-       goto yystack
-
-ret0:
-       return 0
-
-ret1:
-       return 1
-
-yystack:
-       /* put a state and value onto the stack */
-       if yyDebug >= 4 {
-               __yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
-       }
-
-       yyp++
-       if yyp >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyS[yyp] = yyVAL
-       yyS[yyp].yys = yystate
-
-yynewstate:
-       yyn = yyPact[yystate]
-       if yyn <= yyFlag {
-               goto yydefault /* simple state */
-       }
-       if yychar < 0 {
-               yychar, yytoken = yylex1(yylex, &yylval)
-       }
-       yyn += yytoken
-       if yyn < 0 || yyn >= yyLast {
-               goto yydefault
-       }
-       yyn = yyAct[yyn]
-       if yyChk[yyn] == yytoken { /* valid shift */
-               yychar = -1
-               yytoken = -1
-               yyVAL = yylval
-               yystate = yyn
-               if Errflag > 0 {
-                       Errflag--
-               }
-               goto yystack
-       }
-
-yydefault:
-       /* default state action */
-       yyn = yyDef[yystate]
-       if yyn == -2 {
-               if yychar < 0 {
-                       yychar, yytoken = yylex1(yylex, &yylval)
-               }
-
-               /* look through exception table */
-               xi := 0
-               for {
-                       if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
-                               break
-                       }
-                       xi += 2
-               }
-               for xi += 2; ; xi += 2 {
-                       yyn = yyExca[xi+0]
-                       if yyn < 0 || yyn == yytoken {
-                               break
-                       }
-               }
-               yyn = yyExca[xi+1]
-               if yyn < 0 {
-                       goto ret0
-               }
-       }
-       if yyn == 0 {
-               /* error ... attempt to resume parsing */
-               switch Errflag {
-               case 0: /* brand new error */
-                       yylex.Error(yyErrorMessage(yystate, yytoken))
-                       Nerrs++
-                       if yyDebug >= 1 {
-                               __yyfmt__.Printf("%s", yyStatname(yystate))
-                               __yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
-                       }
-                       fallthrough
-
-               case 1, 2: /* incompletely recovered error ... try again */
-                       Errflag = 3
-
-                       /* find a state where "error" is a legal shift action */
-                       for yyp >= 0 {
-                               yyn = yyPact[yyS[yyp].yys] + yyErrCode
-                               if yyn >= 0 && yyn < yyLast {
-                                       yystate = yyAct[yyn] /* simulate a shift of "error" */
-                                       if yyChk[yystate] == yyErrCode {
-                                               goto yystack
-                                       }
-                               }
-
-                               /* the current p has no shift on "error", pop stack */
-                               if yyDebug >= 2 {
-                                       __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
-                               }
-                               yyp--
-                       }
-                       /* there is no state on the stack with an error shift ... abort */
-                       goto ret1
-
-               case 3: /* no shift yet; clobber input char */
-                       if yyDebug >= 2 {
-                               __yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
-                       }
-                       if yytoken == yyEofCode {
-                               goto ret1
-                       }
-                       yychar = -1
-                       yytoken = -1
-                       goto yynewstate /* try again in the same state */
-               }
-       }
-
-       /* reduction by production yyn */
-       if yyDebug >= 2 {
-               __yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
-       }
-
-       yynt := yyn
-       yypt := yyp
-       _ = yypt // guard against "declared and not used"
-
-       yyp -= yyR2[yyn]
-       // yyp is now the index of $0. Perform the default action. Iff the
-       // reduced production is ε, $1 is possibly out of range.
-       if yyp+1 >= len(yyS) {
-               nyys := make([]yySymType, len(yyS)*2)
-               copy(nyys, yyS)
-               yyS = nyys
-       }
-       yyVAL = yyS[yyp+1]
-
-       /* consult goto table to find next state */
-       yyn = yyR1[yyn]
-       yyg := yyPgo[yyn]
-       yyj := yyg + yyS[yyp].yys + 1
-
-       if yyj >= yyLast {
-               yystate = yyAct[yyg]
-       } else {
-               yystate = yyAct[yyj]
-               if yyChk[yystate] != -yyn {
-                       yystate = yyAct[yyg]
-               }
-       }
-       // dummy call; replaced with literal code
-       switch yynt {
-
-       case 2:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:72
-               {
-                       stmtline = asm.Lineno
-               }
-       case 4:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:79
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyDollar[1].sym.Type = LLAB
-                       yyDollar[1].sym.Value = int64(asm.PC)
-               }
-       case 6:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:89
-               {
-                       yyDollar[1].sym.Type = LVAR
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 7:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:94
-               {
-                       if yyDollar[1].sym.Value != yyDollar[3].lval {
-                               yyerror("redeclaration of %s", yyDollar[1].sym.Name)
-                       }
-                       yyDollar[1].sym.Value = yyDollar[3].lval
-               }
-       case 8:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:101
-               {
-                       nosched = int(yyDollar[1].lval)
-               }
-       case 12:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:113
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 13:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:117
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 14:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:121
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 15:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:125
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 16:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:129
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 17:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:133
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 18:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:140
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 19:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:144
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 20:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:148
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 21:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:152
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 22:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:156
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 23:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:160
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 24:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:167
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 25:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:171
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 26:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:175
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 27:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:179
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 28:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:186
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 29:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:190
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 30:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:197
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 31:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:201
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 32:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:205
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
-               }
-       case 33:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:209
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 34:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:213
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
-               }
-       case 35:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:220
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
-               }
-       case 36:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:224
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 37:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:228
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 38:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:238
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 39:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:242
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 40:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:246
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
-               }
-       case 41:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:250
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 42:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:254
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 43:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:258
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 44:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:262
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 45:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:266
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 46:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:270
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 47:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:274
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 48:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:278
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 49:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:282
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 50:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:286
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[2].addr)
-               }
-       case 51:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:293
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 52:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:300
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 53:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:304
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 54:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:311
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[4].addr)
-               }
-       case 55:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:315
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 56:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:323
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 57:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:327
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 58:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:331
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 59:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:335
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 60:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:339
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 61:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:343
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 62:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:347
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 63:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:351
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 64:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:360
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr)
-               }
-       case 65:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:364
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[2].addr)
-               }
-       case 66:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:368
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 67:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:372
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 68:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:376
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 69:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:380
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[4].addr)
-               }
-       case 70:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:384
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 71:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:388
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 72:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:392
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr)
-               }
-       case 73:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:396
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr)
-               }
-       case 74:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:400
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[4].addr)
-               }
-       case 75:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:404
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, int(yyDollar[2].lval), &yyDollar[5].addr)
-               }
-       case 76:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:408
-               {
-                       var g obj.Addr
-                       g = nullgen
-                       g.Type = obj.TYPE_CONST
-                       g.Offset = yyDollar[2].lval
-                       outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 77:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:416
-               {
-                       var g obj.Addr
-                       g = nullgen
-                       g.Type = obj.TYPE_CONST
-                       g.Offset = yyDollar[2].lval
-                       outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[6].addr)
-               }
-       case 78:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:424
-               {
-                       var g obj.Addr
-                       g = nullgen
-                       g.Type = obj.TYPE_CONST
-                       g.Offset = yyDollar[2].lval
-                       outcode(int(yyDollar[1].lval), &g, int(REG_R0+yyDollar[4].lval), &yyDollar[7].addr)
-               }
-       case 79:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:435
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
-               }
-       case 80:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:439
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &nullgen)
-               }
-       case 81:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:443
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 82:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:447
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
-               }
-       case 83:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:454
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 84:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:458
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 85:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:462
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr)
-               }
-       case 86:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:466
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
-               }
-       case 87:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:470
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 88:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:474
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
-               }
-       case 89:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:481
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 90:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:485
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 91:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:489
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
-               }
-       case 92:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:493
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[6].addr.Reg), &yyDollar[4].addr)
-               }
-       case 93:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:500
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
-               }
-       case 94:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:504
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
-               }
-       case 95:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:508
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
-               }
-       case 96:
-               yyDollar = yyS[yypt-8 : yypt+1]
-               //line a.y:512
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].addr.Reg), &yyDollar[6].addr, &yyDollar[8].addr)
-               }
-       case 97:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:519
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 98:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:523
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 99:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:531
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 100:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:535
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
-               }
-       case 101:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:539
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 102:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:543
-               {
-                       outgcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr, &yyDollar[6].addr)
-               }
-       case 103:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:547
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 104:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:551
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 105:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:555
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 106:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:562
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
-               }
-       case 107:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:566
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 108:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:570
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 109:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:574
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 110:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:578
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &yyDollar[3].addr)
-               }
-       case 111:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:582
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 112:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:589
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 113:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:593
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &nullgen)
-               }
-       case 114:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:600
-               {
-                       if yyDollar[2].addr.Type != obj.TYPE_CONST || yyDollar[4].addr.Type != obj.TYPE_CONST {
-                               yyerror("arguments to PCDATA must be integer constants")
-                       }
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 115:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:610
-               {
-                       if yyDollar[2].addr.Type != obj.TYPE_CONST {
-                               yyerror("index for FUNCDATA must be integer constant")
-                       }
-                       if yyDollar[4].addr.Type != obj.TYPE_MEM || (yyDollar[4].addr.Name != obj.NAME_EXTERN && yyDollar[4].addr.Name != obj.NAME_STATIC) {
-                               yyerror("value for FUNCDATA must be symbol reference")
-                       }
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-               }
-       case 116:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:623
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
-               }
-       case 117:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:630
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[5].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 118:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:638
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, int(yyDollar[4].lval), &yyDollar[7].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 119:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:651
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[4].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                       }
-               }
-       case 120:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:659
-               {
-                       asm.Settext(yyDollar[2].addr.Sym)
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 121:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:673
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 122:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:682
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 123:
-               yyDollar = yyS[yypt-6 : yypt+1]
-               //line a.y:691
-               {
-                       outcode(int(yyDollar[1].lval), &yyDollar[2].addr, 0, &yyDollar[6].addr)
-                       if asm.Pass > 1 {
-                               lastpc.From3 = new(obj.Addr)
-                               lastpc.From3.Type = obj.TYPE_CONST
-                               lastpc.From3.Offset = yyDollar[4].lval
-                       }
-               }
-       case 124:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:703
-               {
-                       outcode(int(yyDollar[1].lval), &nullgen, 0, &nullgen)
-               }
-       case 125:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:709
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
-               }
-       case 126:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:715
-               {
-                       yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
-                       yyVAL.addr = nullgen
-                       if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
-                               yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
-                       }
-                       yyVAL.addr.Type = obj.TYPE_BRANCH
-                       yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
-               }
-       case 127:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:727
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 130:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:739
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 131:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:747
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval) /* whole register */
-               }
-       case 132:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:754
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 133:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:762
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 134:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:770
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 135:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:776
-               {
-                       if yyDollar[3].lval < 0 || yyDollar[3].lval >= 1024 {
-                               yyerror("SPR/DCR out of range")
-                       }
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval + yyDollar[3].lval)
-               }
-       case 137:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:788
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 138:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:796
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 139:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:802
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(REG_F0 + yyDollar[3].lval)
-               }
-       case 140:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:810
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 141:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:816
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(REG_CR0 + yyDollar[3].lval)
-               }
-       case 142:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:824
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_REG
-                       yyVAL.addr.Reg = int16(yyDollar[1].lval)
-               }
-       case 143:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:832
-               {
-                       var mb, me int
-                       var v uint32
-
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       mb = int(yyDollar[1].lval)
-                       me = int(yyDollar[3].lval)
-                       if mb < 0 || mb > 31 || me < 0 || me > 31 {
-                               yyerror("illegal mask start/end value(s)")
-                               mb = 0
-                               me = 0
-                       }
-                       if mb <= me {
-                               v = (^uint32(0) >> uint(mb)) & (^uint32(0) << uint(31-me))
-                       } else {
-                               v = (^uint32(0) >> uint(me+1)) & (^uint32(0) << uint(31-(mb-1)))
-                       }
-                       yyVAL.addr.Offset = int64(v)
-               }
-       case 144:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:855
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 145:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:862
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -int64(yyDollar[2].lval)
-                       yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
-               }
-       case 146:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:869
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = int64(yyDollar[1].lval)
-                       yyVAL.addr.Val = int32(yyDollar[3].lval)
-               }
-       case 147:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:876
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_TEXTSIZE
-                       yyVAL.addr.Offset = -int64(yyDollar[2].lval)
-                       yyVAL.addr.Val = int32(yyDollar[4].lval)
-               }
-       case 148:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:885
-               {
-                       yyVAL.addr = yyDollar[2].addr
-                       yyVAL.addr.Type = obj.TYPE_ADDR
-               }
-       case 149:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:890
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_SCONST
-                       yyVAL.addr.Val = yyDollar[2].sval
-               }
-       case 150:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:898
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = yyDollar[2].dval
-               }
-       case 151:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:904
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_FCONST
-                       yyVAL.addr.Val = -yyDollar[3].dval
-               }
-       case 152:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:911
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_CONST
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 154:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:920
-               {
-                       if yyVAL.lval < 0 || yyVAL.lval >= NREG {
-                               print("register value out of range\n")
-                       }
-                       yyVAL.lval = REG_R0 + yyDollar[3].lval
-               }
-       case 155:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:929
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Offset = 0
-               }
-       case 156:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:936
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[2].lval)
-                       yyVAL.addr.Scale = int16(yyDollar[4].lval)
-                       yyVAL.addr.Offset = 0
-               }
-       case 158:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:947
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Reg = int16(yyDollar[3].lval)
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 159:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:956
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[3].lval)
-                       yyVAL.addr.Sym = nil
-                       yyVAL.addr.Offset = yyDollar[1].lval
-               }
-       case 160:
-               yyDollar = yyS[yypt-5 : yypt+1]
-               //line a.y:964
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = int8(yyDollar[4].lval)
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
-                       yyVAL.addr.Offset = yyDollar[2].lval
-               }
-       case 161:
-               yyDollar = yyS[yypt-7 : yypt+1]
-               //line a.y:972
-               {
-                       yyVAL.addr = nullgen
-                       yyVAL.addr.Type = obj.TYPE_MEM
-                       yyVAL.addr.Name = obj.NAME_STATIC
-                       yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
-                       yyVAL.addr.Offset = yyDollar[4].lval
-               }
-       case 164:
-               yyDollar = yyS[yypt-0 : yypt+1]
-               //line a.y:984
-               {
-                       yyVAL.lval = 0
-               }
-       case 165:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:988
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 166:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:992
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 171:
-               yyDollar = yyS[yypt-1 : yypt+1]
-               //line a.y:1004
-               {
-                       yyVAL.lval = yyDollar[1].sym.Value
-               }
-       case 172:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:1008
-               {
-                       yyVAL.lval = -yyDollar[2].lval
-               }
-       case 173:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:1012
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 174:
-               yyDollar = yyS[yypt-2 : yypt+1]
-               //line a.y:1016
-               {
-                       yyVAL.lval = ^yyDollar[2].lval
-               }
-       case 175:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1020
-               {
-                       yyVAL.lval = yyDollar[2].lval
-               }
-       case 177:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1027
-               {
-                       yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
-               }
-       case 178:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1031
-               {
-                       yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
-               }
-       case 179:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1035
-               {
-                       yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
-               }
-       case 180:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1039
-               {
-                       yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
-               }
-       case 181:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1043
-               {
-                       yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
-               }
-       case 182:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:1047
-               {
-                       yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
-               }
-       case 183:
-               yyDollar = yyS[yypt-4 : yypt+1]
-               //line a.y:1051
-               {
-                       yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
-               }
-       case 184:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1055
-               {
-                       yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
-               }
-       case 185:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1059
-               {
-                       yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
-               }
-       case 186:
-               yyDollar = yyS[yypt-3 : yypt+1]
-               //line a.y:1063
-               {
-                       yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
-               }
-       }
-       goto yystack /* stack new state and value */
-}