rsc.io/go@v0.0.0-20150416155037-e040fd465409/src/cmd/old6a/y.go (about)

     1  //line a.y:32
     2  package main
     3  
     4  import __yyfmt__ "fmt"
     5  
     6  //line a.y:32
     7  import (
     8  	"cmd/internal/asm"
     9  	"cmd/internal/obj"
    10  	"cmd/internal/obj/x86"
    11  )
    12  
    13  //line a.y:41
    14  type yySymType struct {
    15  	yys   int
    16  	sym   *asm.Sym
    17  	lval  int64
    18  	dval  float64
    19  	sval  string
    20  	addr  obj.Addr
    21  	addr2 Addr2
    22  }
    23  
    24  const LTYPE0 = 57346
    25  const LTYPE1 = 57347
    26  const LTYPE2 = 57348
    27  const LTYPE3 = 57349
    28  const LTYPE4 = 57350
    29  const LTYPEC = 57351
    30  const LTYPED = 57352
    31  const LTYPEN = 57353
    32  const LTYPER = 57354
    33  const LTYPET = 57355
    34  const LTYPEG = 57356
    35  const LTYPEPC = 57357
    36  const LTYPES = 57358
    37  const LTYPEM = 57359
    38  const LTYPEI = 57360
    39  const LTYPEXC = 57361
    40  const LTYPEX = 57362
    41  const LTYPERT = 57363
    42  const LTYPEF = 57364
    43  const LCONST = 57365
    44  const LFP = 57366
    45  const LPC = 57367
    46  const LSB = 57368
    47  const LBREG = 57369
    48  const LLREG = 57370
    49  const LSREG = 57371
    50  const LFREG = 57372
    51  const LMREG = 57373
    52  const LXREG = 57374
    53  const LFCONST = 57375
    54  const LSCONST = 57376
    55  const LSP = 57377
    56  const LNAME = 57378
    57  const LLAB = 57379
    58  const LVAR = 57380
    59  
    60  var yyToknames = []string{
    61  	"'|'",
    62  	"'^'",
    63  	"'&'",
    64  	"'<'",
    65  	"'>'",
    66  	"'+'",
    67  	"'-'",
    68  	"'*'",
    69  	"'/'",
    70  	"'%'",
    71  	"LTYPE0",
    72  	"LTYPE1",
    73  	"LTYPE2",
    74  	"LTYPE3",
    75  	"LTYPE4",
    76  	"LTYPEC",
    77  	"LTYPED",
    78  	"LTYPEN",
    79  	"LTYPER",
    80  	"LTYPET",
    81  	"LTYPEG",
    82  	"LTYPEPC",
    83  	"LTYPES",
    84  	"LTYPEM",
    85  	"LTYPEI",
    86  	"LTYPEXC",
    87  	"LTYPEX",
    88  	"LTYPERT",
    89  	"LTYPEF",
    90  	"LCONST",
    91  	"LFP",
    92  	"LPC",
    93  	"LSB",
    94  	"LBREG",
    95  	"LLREG",
    96  	"LSREG",
    97  	"LFREG",
    98  	"LMREG",
    99  	"LXREG",
   100  	"LFCONST",
   101  	"LSCONST",
   102  	"LSP",
   103  	"LNAME",
   104  	"LLAB",
   105  	"LVAR",
   106  }
   107  var yyStatenames = []string{}
   108  
   109  const yyEofCode = 1
   110  const yyErrCode = 2
   111  const yyMaxDepth = 200
   112  
   113  //line yacctab:1
   114  var yyExca = []int{
   115  	-1, 1,
   116  	1, -1,
   117  	-2, 2,
   118  }
   119  
   120  const yyNprod = 133
   121  const yyPrivate = 57344
   122  
   123  var yyTokenNames []string
   124  var yyStates []string
   125  
   126  const yyLast = 593
   127  
   128  var yyAct = []int{
   129  
   130  	52, 227, 41, 3, 80, 208, 269, 64, 123, 50,
   131  	51, 79, 54, 170, 268, 74, 267, 118, 85, 72,
   132  	83, 263, 73, 255, 253, 241, 239, 84, 81, 237,
   133  	221, 100, 102, 112, 219, 210, 112, 209, 171, 240,
   134  	234, 107, 211, 62, 174, 143, 138, 119, 65, 207,
   135  	111, 115, 249, 113, 112, 231, 67, 169, 120, 121,
   136  	122, 230, 226, 92, 94, 96, 128, 225, 224, 154,
   137  	104, 106, 74, 58, 57, 153, 136, 112, 129, 85,
   138  	151, 83, 150, 149, 139, 141, 148, 147, 84, 81,
   139  	140, 146, 142, 145, 137, 144, 63, 55, 58, 57,
   140  	135, 43, 45, 48, 44, 46, 49, 40, 134, 47,
   141  	69, 127, 56, 37, 155, 40, 35, 34, 53, 98,
   142  	59, 31, 55, 32, 33, 223, 176, 177, 222, 217,
   143  	60, 215, 220, 112, 120, 243, 114, 56, 74, 242,
   144  	216, 236, 183, 76, 173, 59, 58, 57, 256, 166,
   145  	168, 188, 184, 192, 194, 196, 167, 112, 112, 112,
   146  	112, 112, 195, 229, 112, 112, 112, 258, 58, 57,
   147  	55, 212, 251, 252, 197, 198, 199, 200, 201, 182,
   148  	120, 204, 205, 206, 218, 56, 228, 114, 264, 257,
   149  	65, 76, 55, 59, 190, 191, 184, 248, 38, 166,
   150  	168, 152, 42, 112, 112, 75, 167, 56, 36, 235,
   151  	261, 71, 65, 76, 238, 59, 124, 89, 125, 126,
   152  	232, 233, 158, 159, 160, 244, 260, 88, 245, 254,
   153  	213, 181, 108, 109, 246, 125, 126, 247, 203, 250,
   154  	175, 202, 185, 186, 187, 25, 189, 16, 15, 6,
   155  	110, 259, 7, 2, 1, 262, 156, 157, 158, 159,
   156  	160, 265, 266, 105, 9, 10, 11, 12, 13, 17,
   157  	28, 18, 14, 29, 30, 26, 19, 20, 21, 22,
   158  	23, 24, 27, 58, 57, 82, 165, 164, 163, 161,
   159  	162, 156, 157, 158, 159, 160, 4, 103, 8, 101,
   160  	5, 99, 97, 58, 57, 95, 93, 55, 91, 87,
   161  	77, 43, 45, 48, 44, 46, 49, 68, 66, 47,
   162  	86, 61, 56, 70, 214, 0, 78, 55, 53, 0,
   163  	59, 43, 45, 48, 44, 46, 49, 172, 0, 47,
   164  	60, 0, 56, 58, 57, 82, 0, 65, 53, 0,
   165  	59, 43, 45, 48, 44, 46, 49, 0, 0, 47,
   166  	0, 0, 0, 58, 57, 0, 0, 55, 0, 0,
   167  	0, 43, 45, 48, 44, 46, 49, 0, 0, 47,
   168  	86, 0, 56, 58, 57, 0, 0, 55, 53, 0,
   169  	59, 43, 45, 48, 44, 46, 49, 0, 0, 47,
   170  	60, 0, 56, 58, 57, 0, 90, 55, 53, 0,
   171  	59, 43, 45, 48, 44, 46, 49, 58, 133, 47,
   172  	60, 0, 56, 0, 0, 0, 39, 55, 53, 0,
   173  	59, 43, 45, 48, 44, 46, 49, 58, 57, 47,
   174  	60, 55, 56, 0, 58, 57, 0, 0, 53, 0,
   175  	59, 131, 130, 0, 60, 0, 56, 58, 57, 0,
   176  	0, 55, 132, 0, 59, 0, 116, 0, 55, 58,
   177  	57, 0, 0, 117, 0, 0, 56, 0, 0, 0,
   178  	0, 55, 76, 56, 59, 58, 179, 0, 193, 76,
   179  	0, 59, 0, 55, 75, 0, 56, 58, 57, 0,
   180  	0, 0, 76, 180, 59, 0, 0, 0, 56, 55,
   181  	0, 58, 57, 0, 76, 0, 59, 0, 0, 178,
   182  	0, 55, 0, 0, 56, 0, 0, 0, 0, 0,
   183  	76, 0, 59, 0, 60, 55, 56, 0, 0, 0,
   184  	0, 0, 53, 0, 59, 0, 0, 0, 0, 0,
   185  	56, 0, 0, 0, 0, 0, 76, 0, 59, 165,
   186  	164, 163, 161, 162, 156, 157, 158, 159, 160, 164,
   187  	163, 161, 162, 156, 157, 158, 159, 160, 163, 161,
   188  	162, 156, 157, 158, 159, 160, 161, 162, 156, 157,
   189  	158, 159, 160,
   190  }
   191  var yyPact = []int{
   192  
   193  	-1000, -1000, 250, -1000, 72, -1000, 74, 67, 65, 61,
   194  	374, 294, 294, 394, 159, -1000, -1000, 274, 354, 294,
   195  	294, 294, 394, -5, -5, -1000, 294, 294, 84, 488,
   196  	488, -1000, 502, -1000, -1000, 502, -1000, -1000, -1000, 394,
   197  	-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
   198  	-1000, -1000, -3, 428, -7, -1000, -1000, 502, 502, 502,
   199  	209, -1000, 59, -1000, -1000, 408, -1000, 56, -1000, 48,
   200  	-1000, 448, -1000, 42, -8, 226, 502, -1000, 334, -1000,
   201  	-1000, -1000, 64, -1000, -1000, -9, 209, -1000, -1000, -1000,
   202  	394, -1000, 41, -1000, 39, -1000, 35, -1000, 34, -1000,
   203  	31, -1000, -1000, -1000, 30, -1000, 28, 189, 23, 17,
   204  	250, 555, -1000, 555, -1000, 111, 2, -17, 282, 106,
   205  	-1000, -1000, -1000, -10, 232, 502, 502, -1000, -1000, -1000,
   206  	-1000, -1000, 476, 460, 394, 294, -1000, 448, 117, -1000,
   207  	-1000, -1000, -1000, 161, -10, 394, 394, 394, 314, 394,
   208  	294, 294, 502, 435, 137, -1000, 502, 502, 502, 502,
   209  	502, 234, 230, 502, 502, 502, -6, -18, -20, -12,
   210  	502, -1000, -1000, 219, 95, 226, -1000, -1000, -21, 89,
   211  	-1000, -1000, -1000, -1000, -25, 79, 76, -1000, 16, 15,
   212  	-1000, -1000, 10, 153, 9, -1000, 3, 211, 211, -1000,
   213  	-1000, -1000, 502, 502, 579, 572, 564, -14, 502, -1000,
   214  	-1000, 103, -26, 502, -29, -1000, -1000, -1000, -15, -1000,
   215  	-30, -1000, 101, 96, 502, 314, -5, -1000, 227, 164,
   216  	-1, -5, 247, 247, 134, -31, 218, -1000, -32, -1000,
   217  	112, -1000, -1000, -1000, -1000, -1000, -1000, 156, 157, 153,
   218  	-1000, 215, 199, -1000, 502, -1000, -34, -1000, 155, -1000,
   219  	502, 502, -39, -1000, -1000, -41, -49, -1000, -1000, -1000,
   220  }
   221  var yyPgo = []int{
   222  
   223  	0, 0, 17, 324, 8, 202, 7, 1, 2, 12,
   224  	4, 96, 43, 11, 9, 10, 208, 323, 198, 321,
   225  	318, 317, 310, 309, 308, 306, 305, 302, 301, 299,
   226  	297, 263, 254, 253, 3, 250, 249, 248, 247, 245,
   227  }
   228  var yyR1 = []int{
   229  
   230  	0, 32, 33, 32, 35, 34, 34, 34, 34, 36,
   231  	36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
   232  	36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
   233  	16, 16, 20, 21, 19, 19, 18, 18, 17, 17,
   234  	17, 37, 38, 38, 39, 39, 22, 22, 23, 23,
   235  	24, 24, 25, 25, 26, 26, 26, 27, 28, 29,
   236  	29, 30, 31, 11, 11, 13, 13, 13, 13, 13,
   237  	13, 12, 12, 10, 10, 8, 8, 8, 8, 8,
   238  	8, 8, 6, 6, 6, 6, 6, 6, 6, 5,
   239  	5, 14, 14, 14, 14, 14, 14, 14, 14, 14,
   240  	14, 14, 15, 15, 9, 9, 4, 4, 4, 3,
   241  	3, 3, 1, 1, 1, 1, 1, 1, 7, 7,
   242  	7, 7, 2, 2, 2, 2, 2, 2, 2, 2,
   243  	2, 2, 2,
   244  }
   245  var yyR2 = []int{
   246  
   247  	0, 0, 0, 3, 0, 4, 1, 2, 2, 3,
   248  	3, 2, 2, 2, 2, 2, 2, 1, 1, 2,
   249  	2, 2, 2, 2, 2, 2, 2, 1, 2, 2,
   250  	0, 1, 3, 3, 2, 1, 2, 1, 2, 1,
   251  	3, 6, 5, 7, 4, 6, 2, 1, 1, 1,
   252  	3, 5, 3, 5, 2, 1, 3, 5, 5, 0,
   253  	1, 3, 3, 1, 1, 1, 1, 2, 2, 1,
   254  	1, 1, 1, 4, 2, 1, 1, 1, 1, 1,
   255  	1, 1, 2, 2, 2, 2, 4, 5, 3, 1,
   256  	1, 1, 4, 4, 4, 6, 9, 9, 3, 3,
   257  	5, 8, 1, 6, 5, 7, 0, 2, 2, 1,
   258  	1, 1, 1, 1, 2, 2, 2, 3, 1, 2,
   259  	3, 4, 1, 3, 3, 3, 3, 3, 4, 4,
   260  	3, 3, 3,
   261  }
   262  var yyChk = []int{
   263  
   264  	-1000, -32, -33, -34, 46, 50, -36, 2, 48, 14,
   265  	15, 16, 17, 18, 22, -37, -38, 19, 21, 26,
   266  	27, 28, 29, 30, 31, -39, 25, 32, 20, 23,
   267  	24, 49, 51, 50, 50, 51, -16, 52, -18, 52,
   268  	-11, -8, -5, 37, 40, 38, 41, 45, 39, 42,
   269  	-14, -15, -1, 54, -9, 33, 48, 10, 9, 56,
   270  	46, -19, -12, -11, -6, 53, -20, -12, -21, -11,
   271  	-17, 52, -10, -6, -1, 46, 54, -22, 52, -13,
   272  	-10, -15, 11, -8, -14, -1, 46, -23, -16, -18,
   273  	52, -24, -12, -25, -12, -26, -12, -27, -11, -28,
   274  	-6, -29, -6, -30, -12, -31, -12, -9, -5, -5,
   275  	-35, -2, -1, -2, -11, 54, 38, 45, -2, 54,
   276  	-1, -1, -1, -4, 7, 9, 10, 52, -1, -9,
   277  	44, 43, 54, 10, 52, 52, -10, 52, 54, -4,
   278  	-13, -8, -14, 54, -4, 52, 52, 52, 52, 52,
   279  	52, 52, 12, 52, 52, -34, 9, 10, 11, 12,
   280  	13, 7, 8, 6, 5, 4, 38, 45, 39, 55,
   281  	11, 55, 55, 38, 54, 8, -1, -1, 43, 10,
   282  	43, -11, -12, -10, 35, -11, -11, -11, -8, -11,
   283  	-12, -12, -1, 53, -1, -6, -1, -2, -2, -2,
   284  	-2, -2, 7, 8, -2, -2, -2, 55, 11, 55,
   285  	55, 54, -1, 11, -3, 36, 45, 34, -4, 55,
   286  	43, 55, 49, 49, 52, 52, 52, -7, 33, 10,
   287  	52, 52, -2, -2, 54, -1, 38, 55, -1, 55,
   288  	54, 55, 38, 39, -1, -8, -6, 10, 33, 53,
   289  	-6, 38, 39, 55, 11, 55, 36, 33, 10, -7,
   290  	11, 11, -1, 55, 33, -1, -1, 55, 55, 55,
   291  }
   292  var yyDef = []int{
   293  
   294  	1, -2, 0, 3, 0, 6, 0, 0, 0, 30,
   295  	0, 0, 0, 0, 0, 17, 18, 0, 30, 0,
   296  	0, 0, 0, 0, 59, 27, 0, 0, 0, 0,
   297  	0, 4, 0, 7, 8, 0, 11, 31, 12, 0,
   298  	37, 63, 64, 75, 76, 77, 78, 79, 80, 81,
   299  	89, 90, 91, 0, 102, 112, 113, 0, 0, 0,
   300  	106, 13, 35, 71, 72, 0, 14, 0, 15, 0,
   301  	16, 0, 39, 0, 0, 106, 0, 19, 0, 47,
   302  	65, 66, 0, 69, 70, 91, 106, 20, 48, 49,
   303  	31, 21, 0, 22, 0, 23, 55, 24, 0, 25,
   304  	0, 26, 60, 28, 0, 29, 0, 0, 0, 0,
   305  	0, 9, 122, 10, 36, 0, 0, 0, 0, 0,
   306  	114, 115, 116, 0, 0, 0, 0, 34, 82, 83,
   307  	84, 85, 0, 0, 0, 0, 38, 0, 0, 74,
   308  	46, 67, 68, 0, 74, 0, 0, 54, 0, 0,
   309  	0, 0, 0, 0, 0, 5, 0, 0, 0, 0,
   310  	0, 0, 0, 0, 0, 0, 0, 0, 0, 98,
   311  	0, 99, 117, 0, 0, 106, 107, 108, 0, 0,
   312  	88, 32, 33, 40, 0, 50, 52, 56, 0, 0,
   313  	61, 62, 0, 0, 0, 44, 0, 123, 124, 125,
   314  	126, 127, 0, 0, 130, 131, 132, 92, 0, 93,
   315  	94, 0, 0, 0, 0, 109, 110, 111, 0, 86,
   316  	0, 73, 0, 0, 0, 0, 0, 42, 118, 0,
   317  	0, 0, 128, 129, 0, 0, 0, 100, 0, 104,
   318  	0, 87, 51, 53, 57, 58, 41, 0, 119, 0,
   319  	45, 0, 0, 95, 0, 103, 0, 120, 0, 43,
   320  	0, 0, 0, 105, 121, 0, 0, 101, 96, 97,
   321  }
   322  var yyTok1 = []int{
   323  
   324  	1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   325  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   326  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   327  	3, 3, 3, 3, 3, 3, 53, 13, 6, 3,
   328  	54, 55, 11, 9, 52, 10, 3, 12, 3, 3,
   329  	3, 3, 3, 3, 3, 3, 3, 3, 49, 50,
   330  	7, 51, 8, 3, 3, 3, 3, 3, 3, 3,
   331  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   332  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   333  	3, 3, 3, 3, 5, 3, 3, 3, 3, 3,
   334  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   335  	3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
   336  	3, 3, 3, 3, 4, 3, 56,
   337  }
   338  var yyTok2 = []int{
   339  
   340  	2, 3, 14, 15, 16, 17, 18, 19, 20, 21,
   341  	22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
   342  	32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
   343  	42, 43, 44, 45, 46, 47, 48,
   344  }
   345  var yyTok3 = []int{
   346  	0,
   347  }
   348  
   349  //line yaccpar:1
   350  
   351  /*	parser for yacc output	*/
   352  
   353  var yyDebug = 0
   354  
   355  type yyLexer interface {
   356  	Lex(lval *yySymType) int
   357  	Error(s string)
   358  }
   359  
   360  type yyParser interface {
   361  	Parse(yyLexer) int
   362  	Lookahead() int
   363  }
   364  
   365  type yyParserImpl struct {
   366  	lookahead func() int
   367  }
   368  
   369  func (p *yyParserImpl) Lookahead() int {
   370  	return p.lookahead()
   371  }
   372  
   373  func yyNewParser() yyParser {
   374  	p := &yyParserImpl{
   375  		lookahead: func() int { return -1 },
   376  	}
   377  	return p
   378  }
   379  
   380  const yyFlag = -1000
   381  
   382  func yyTokname(c int) string {
   383  	// 4 is TOKSTART above
   384  	if c >= 4 && c-4 < len(yyToknames) {
   385  		if yyToknames[c-4] != "" {
   386  			return yyToknames[c-4]
   387  		}
   388  	}
   389  	return __yyfmt__.Sprintf("tok-%v", c)
   390  }
   391  
   392  func yyStatname(s int) string {
   393  	if s >= 0 && s < len(yyStatenames) {
   394  		if yyStatenames[s] != "" {
   395  			return yyStatenames[s]
   396  		}
   397  	}
   398  	return __yyfmt__.Sprintf("state-%v", s)
   399  }
   400  
   401  func yylex1(lex yyLexer, lval *yySymType) (char, token int) {
   402  	token = 0
   403  	char = lex.Lex(lval)
   404  	if char <= 0 {
   405  		token = yyTok1[0]
   406  		goto out
   407  	}
   408  	if char < len(yyTok1) {
   409  		token = yyTok1[char]
   410  		goto out
   411  	}
   412  	if char >= yyPrivate {
   413  		if char < yyPrivate+len(yyTok2) {
   414  			token = yyTok2[char-yyPrivate]
   415  			goto out
   416  		}
   417  	}
   418  	for i := 0; i < len(yyTok3); i += 2 {
   419  		token = yyTok3[i+0]
   420  		if token == char {
   421  			token = yyTok3[i+1]
   422  			goto out
   423  		}
   424  	}
   425  
   426  out:
   427  	if token == 0 {
   428  		token = yyTok2[1] /* unknown char */
   429  	}
   430  	if yyDebug >= 3 {
   431  		__yyfmt__.Printf("lex %s(%d)\n", yyTokname(token), uint(char))
   432  	}
   433  	return char, token
   434  }
   435  
   436  func yyParse(yylex yyLexer) int {
   437  	return yyNewParser().Parse(yylex)
   438  }
   439  
   440  func (yyrcvr *yyParserImpl) Parse(yylex yyLexer) int {
   441  	var yyn int
   442  	var yylval yySymType
   443  	var yyVAL yySymType
   444  	var yyDollar []yySymType
   445  	yyS := make([]yySymType, yyMaxDepth)
   446  
   447  	Nerrs := 0   /* number of errors */
   448  	Errflag := 0 /* error recovery flag */
   449  	yystate := 0
   450  	yychar := -1
   451  	yytoken := -1 // yychar translated into internal numbering
   452  	yyrcvr.lookahead = func() int { return yychar }
   453  	defer func() {
   454  		// Make sure we report no lookahead when not parsing.
   455  		yychar = -1
   456  		yytoken = -1
   457  	}()
   458  	yyp := -1
   459  	goto yystack
   460  
   461  ret0:
   462  	return 0
   463  
   464  ret1:
   465  	return 1
   466  
   467  yystack:
   468  	/* put a state and value onto the stack */
   469  	if yyDebug >= 4 {
   470  		__yyfmt__.Printf("char %v in %v\n", yyTokname(yytoken), yyStatname(yystate))
   471  	}
   472  
   473  	yyp++
   474  	if yyp >= len(yyS) {
   475  		nyys := make([]yySymType, len(yyS)*2)
   476  		copy(nyys, yyS)
   477  		yyS = nyys
   478  	}
   479  	yyS[yyp] = yyVAL
   480  	yyS[yyp].yys = yystate
   481  
   482  yynewstate:
   483  	yyn = yyPact[yystate]
   484  	if yyn <= yyFlag {
   485  		goto yydefault /* simple state */
   486  	}
   487  	if yychar < 0 {
   488  		yychar, yytoken = yylex1(yylex, &yylval)
   489  	}
   490  	yyn += yytoken
   491  	if yyn < 0 || yyn >= yyLast {
   492  		goto yydefault
   493  	}
   494  	yyn = yyAct[yyn]
   495  	if yyChk[yyn] == yytoken { /* valid shift */
   496  		yychar = -1
   497  		yytoken = -1
   498  		yyVAL = yylval
   499  		yystate = yyn
   500  		if Errflag > 0 {
   501  			Errflag--
   502  		}
   503  		goto yystack
   504  	}
   505  
   506  yydefault:
   507  	/* default state action */
   508  	yyn = yyDef[yystate]
   509  	if yyn == -2 {
   510  		if yychar < 0 {
   511  			yychar, yytoken = yylex1(yylex, &yylval)
   512  		}
   513  
   514  		/* look through exception table */
   515  		xi := 0
   516  		for {
   517  			if yyExca[xi+0] == -1 && yyExca[xi+1] == yystate {
   518  				break
   519  			}
   520  			xi += 2
   521  		}
   522  		for xi += 2; ; xi += 2 {
   523  			yyn = yyExca[xi+0]
   524  			if yyn < 0 || yyn == yytoken {
   525  				break
   526  			}
   527  		}
   528  		yyn = yyExca[xi+1]
   529  		if yyn < 0 {
   530  			goto ret0
   531  		}
   532  	}
   533  	if yyn == 0 {
   534  		/* error ... attempt to resume parsing */
   535  		switch Errflag {
   536  		case 0: /* brand new error */
   537  			yylex.Error("syntax error")
   538  			Nerrs++
   539  			if yyDebug >= 1 {
   540  				__yyfmt__.Printf("%s", yyStatname(yystate))
   541  				__yyfmt__.Printf(" saw %s\n", yyTokname(yytoken))
   542  			}
   543  			fallthrough
   544  
   545  		case 1, 2: /* incompletely recovered error ... try again */
   546  			Errflag = 3
   547  
   548  			/* find a state where "error" is a legal shift action */
   549  			for yyp >= 0 {
   550  				yyn = yyPact[yyS[yyp].yys] + yyErrCode
   551  				if yyn >= 0 && yyn < yyLast {
   552  					yystate = yyAct[yyn] /* simulate a shift of "error" */
   553  					if yyChk[yystate] == yyErrCode {
   554  						goto yystack
   555  					}
   556  				}
   557  
   558  				/* the current p has no shift on "error", pop stack */
   559  				if yyDebug >= 2 {
   560  					__yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
   561  				}
   562  				yyp--
   563  			}
   564  			/* there is no state on the stack with an error shift ... abort */
   565  			goto ret1
   566  
   567  		case 3: /* no shift yet; clobber input char */
   568  			if yyDebug >= 2 {
   569  				__yyfmt__.Printf("error recovery discards %s\n", yyTokname(yytoken))
   570  			}
   571  			if yytoken == yyEofCode {
   572  				goto ret1
   573  			}
   574  			yychar = -1
   575  			yytoken = -1
   576  			goto yynewstate /* try again in the same state */
   577  		}
   578  	}
   579  
   580  	/* reduction by production yyn */
   581  	if yyDebug >= 2 {
   582  		__yyfmt__.Printf("reduce %v in:\n\t%v\n", yyn, yyStatname(yystate))
   583  	}
   584  
   585  	yynt := yyn
   586  	yypt := yyp
   587  	_ = yypt // guard against "declared and not used"
   588  
   589  	yyp -= yyR2[yyn]
   590  	// yyp is now the index of $0. Perform the default action. Iff the
   591  	// reduced production is ε, $1 is possibly out of range.
   592  	if yyp+1 >= len(yyS) {
   593  		nyys := make([]yySymType, len(yyS)*2)
   594  		copy(nyys, yyS)
   595  		yyS = nyys
   596  	}
   597  	yyVAL = yyS[yyp+1]
   598  
   599  	/* consult goto table to find next state */
   600  	yyn = yyR1[yyn]
   601  	yyg := yyPgo[yyn]
   602  	yyj := yyg + yyS[yyp].yys + 1
   603  
   604  	if yyj >= yyLast {
   605  		yystate = yyAct[yyg]
   606  	} else {
   607  		yystate = yyAct[yyj]
   608  		if yyChk[yystate] != -yyn {
   609  			yystate = yyAct[yyg]
   610  		}
   611  	}
   612  	// dummy call; replaced with literal code
   613  	switch yynt {
   614  
   615  	case 2:
   616  		yyDollar = yyS[yypt-1 : yypt+1]
   617  		//line a.y:72
   618  		{
   619  			stmtline = asm.Lineno
   620  		}
   621  	case 4:
   622  		yyDollar = yyS[yypt-2 : yypt+1]
   623  		//line a.y:79
   624  		{
   625  			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
   626  			if yyDollar[1].sym.Type == LLAB && yyDollar[1].sym.Value != int64(asm.PC) {
   627  				yyerror("redeclaration of %s (%s)", yyDollar[1].sym.Labelname, yyDollar[1].sym.Name)
   628  			}
   629  			yyDollar[1].sym.Type = LLAB
   630  			yyDollar[1].sym.Value = int64(asm.PC)
   631  		}
   632  	case 9:
   633  		yyDollar = yyS[yypt-3 : yypt+1]
   634  		//line a.y:94
   635  		{
   636  			yyDollar[1].sym.Type = LVAR
   637  			yyDollar[1].sym.Value = yyDollar[3].lval
   638  		}
   639  	case 10:
   640  		yyDollar = yyS[yypt-3 : yypt+1]
   641  		//line a.y:99
   642  		{
   643  			if yyDollar[1].sym.Value != yyDollar[3].lval {
   644  				yyerror("redeclaration of %s", yyDollar[1].sym.Name)
   645  			}
   646  			yyDollar[1].sym.Value = yyDollar[3].lval
   647  		}
   648  	case 11:
   649  		yyDollar = yyS[yypt-2 : yypt+1]
   650  		//line a.y:105
   651  		{
   652  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   653  		}
   654  	case 12:
   655  		yyDollar = yyS[yypt-2 : yypt+1]
   656  		//line a.y:106
   657  		{
   658  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   659  		}
   660  	case 13:
   661  		yyDollar = yyS[yypt-2 : yypt+1]
   662  		//line a.y:107
   663  		{
   664  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   665  		}
   666  	case 14:
   667  		yyDollar = yyS[yypt-2 : yypt+1]
   668  		//line a.y:108
   669  		{
   670  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   671  		}
   672  	case 15:
   673  		yyDollar = yyS[yypt-2 : yypt+1]
   674  		//line a.y:109
   675  		{
   676  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   677  		}
   678  	case 16:
   679  		yyDollar = yyS[yypt-2 : yypt+1]
   680  		//line a.y:110
   681  		{
   682  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   683  		}
   684  	case 19:
   685  		yyDollar = yyS[yypt-2 : yypt+1]
   686  		//line a.y:113
   687  		{
   688  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   689  		}
   690  	case 20:
   691  		yyDollar = yyS[yypt-2 : yypt+1]
   692  		//line a.y:114
   693  		{
   694  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   695  		}
   696  	case 21:
   697  		yyDollar = yyS[yypt-2 : yypt+1]
   698  		//line a.y:115
   699  		{
   700  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   701  		}
   702  	case 22:
   703  		yyDollar = yyS[yypt-2 : yypt+1]
   704  		//line a.y:116
   705  		{
   706  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   707  		}
   708  	case 23:
   709  		yyDollar = yyS[yypt-2 : yypt+1]
   710  		//line a.y:117
   711  		{
   712  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   713  		}
   714  	case 24:
   715  		yyDollar = yyS[yypt-2 : yypt+1]
   716  		//line a.y:118
   717  		{
   718  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   719  		}
   720  	case 25:
   721  		yyDollar = yyS[yypt-2 : yypt+1]
   722  		//line a.y:119
   723  		{
   724  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   725  		}
   726  	case 26:
   727  		yyDollar = yyS[yypt-2 : yypt+1]
   728  		//line a.y:120
   729  		{
   730  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   731  		}
   732  	case 28:
   733  		yyDollar = yyS[yypt-2 : yypt+1]
   734  		//line a.y:122
   735  		{
   736  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   737  		}
   738  	case 29:
   739  		yyDollar = yyS[yypt-2 : yypt+1]
   740  		//line a.y:123
   741  		{
   742  			outcode(int(yyDollar[1].lval), &yyDollar[2].addr2)
   743  		}
   744  	case 30:
   745  		yyDollar = yyS[yypt-0 : yypt+1]
   746  		//line a.y:126
   747  		{
   748  			yyVAL.addr2.from = nullgen
   749  			yyVAL.addr2.to = nullgen
   750  		}
   751  	case 31:
   752  		yyDollar = yyS[yypt-1 : yypt+1]
   753  		//line a.y:131
   754  		{
   755  			yyVAL.addr2.from = nullgen
   756  			yyVAL.addr2.to = nullgen
   757  		}
   758  	case 32:
   759  		yyDollar = yyS[yypt-3 : yypt+1]
   760  		//line a.y:138
   761  		{
   762  			yyVAL.addr2.from = yyDollar[1].addr
   763  			yyVAL.addr2.to = yyDollar[3].addr
   764  		}
   765  	case 33:
   766  		yyDollar = yyS[yypt-3 : yypt+1]
   767  		//line a.y:145
   768  		{
   769  			yyVAL.addr2.from = yyDollar[1].addr
   770  			yyVAL.addr2.to = yyDollar[3].addr
   771  		}
   772  	case 34:
   773  		yyDollar = yyS[yypt-2 : yypt+1]
   774  		//line a.y:152
   775  		{
   776  			yyVAL.addr2.from = yyDollar[1].addr
   777  			yyVAL.addr2.to = nullgen
   778  		}
   779  	case 35:
   780  		yyDollar = yyS[yypt-1 : yypt+1]
   781  		//line a.y:157
   782  		{
   783  			yyVAL.addr2.from = yyDollar[1].addr
   784  			yyVAL.addr2.to = nullgen
   785  		}
   786  	case 36:
   787  		yyDollar = yyS[yypt-2 : yypt+1]
   788  		//line a.y:164
   789  		{
   790  			yyVAL.addr2.from = nullgen
   791  			yyVAL.addr2.to = yyDollar[2].addr
   792  		}
   793  	case 37:
   794  		yyDollar = yyS[yypt-1 : yypt+1]
   795  		//line a.y:169
   796  		{
   797  			yyVAL.addr2.from = nullgen
   798  			yyVAL.addr2.to = yyDollar[1].addr
   799  		}
   800  	case 38:
   801  		yyDollar = yyS[yypt-2 : yypt+1]
   802  		//line a.y:176
   803  		{
   804  			yyVAL.addr2.from = nullgen
   805  			yyVAL.addr2.to = yyDollar[2].addr
   806  		}
   807  	case 39:
   808  		yyDollar = yyS[yypt-1 : yypt+1]
   809  		//line a.y:181
   810  		{
   811  			yyVAL.addr2.from = nullgen
   812  			yyVAL.addr2.to = yyDollar[1].addr
   813  		}
   814  	case 40:
   815  		yyDollar = yyS[yypt-3 : yypt+1]
   816  		//line a.y:186
   817  		{
   818  			yyVAL.addr2.from = yyDollar[1].addr
   819  			yyVAL.addr2.to = yyDollar[3].addr
   820  		}
   821  	case 41:
   822  		yyDollar = yyS[yypt-6 : yypt+1]
   823  		//line a.y:193
   824  		{
   825  			var a Addr2
   826  			a.from = yyDollar[2].addr
   827  			a.to = yyDollar[6].addr
   828  			outcode(obj.ADATA, &a)
   829  			if asm.Pass > 1 {
   830  				lastpc.From3.Type = obj.TYPE_CONST
   831  				lastpc.From3.Offset = yyDollar[4].lval
   832  			}
   833  		}
   834  	case 42:
   835  		yyDollar = yyS[yypt-5 : yypt+1]
   836  		//line a.y:206
   837  		{
   838  			asm.Settext(yyDollar[2].addr.Sym)
   839  			outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[5].addr})
   840  		}
   841  	case 43:
   842  		yyDollar = yyS[yypt-7 : yypt+1]
   843  		//line a.y:211
   844  		{
   845  			asm.Settext(yyDollar[2].addr.Sym)
   846  			outcode(obj.ATEXT, &Addr2{from: yyDollar[2].addr, to: yyDollar[7].addr})
   847  			if asm.Pass > 1 {
   848  				lastpc.From3.Type = obj.TYPE_CONST
   849  				lastpc.From3.Offset = yyDollar[4].lval
   850  			}
   851  		}
   852  	case 44:
   853  		yyDollar = yyS[yypt-4 : yypt+1]
   854  		//line a.y:222
   855  		{
   856  			asm.Settext(yyDollar[2].addr.Sym)
   857  			outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[4].addr})
   858  		}
   859  	case 45:
   860  		yyDollar = yyS[yypt-6 : yypt+1]
   861  		//line a.y:227
   862  		{
   863  			asm.Settext(yyDollar[2].addr.Sym)
   864  			outcode(obj.AGLOBL, &Addr2{from: yyDollar[2].addr, to: yyDollar[6].addr})
   865  			if asm.Pass > 1 {
   866  				lastpc.From3.Type = obj.TYPE_CONST
   867  				lastpc.From3.Offset = yyDollar[4].lval
   868  			}
   869  		}
   870  	case 46:
   871  		yyDollar = yyS[yypt-2 : yypt+1]
   872  		//line a.y:238
   873  		{
   874  			yyVAL.addr2.from = nullgen
   875  			yyVAL.addr2.to = yyDollar[2].addr
   876  		}
   877  	case 47:
   878  		yyDollar = yyS[yypt-1 : yypt+1]
   879  		//line a.y:243
   880  		{
   881  			yyVAL.addr2.from = nullgen
   882  			yyVAL.addr2.to = yyDollar[1].addr
   883  		}
   884  	case 48:
   885  		yyVAL.addr2 = yyS[yypt-0].addr2
   886  	case 49:
   887  		yyVAL.addr2 = yyS[yypt-0].addr2
   888  	case 50:
   889  		yyDollar = yyS[yypt-3 : yypt+1]
   890  		//line a.y:254
   891  		{
   892  			yyVAL.addr2.from = yyDollar[1].addr
   893  			yyVAL.addr2.to = yyDollar[3].addr
   894  		}
   895  	case 51:
   896  		yyDollar = yyS[yypt-5 : yypt+1]
   897  		//line a.y:259
   898  		{
   899  			yyVAL.addr2.from = yyDollar[1].addr
   900  			yyVAL.addr2.to = yyDollar[3].addr
   901  			if yyVAL.addr2.from.Index != obj.TYPE_NONE {
   902  				yyerror("dp shift with lhs index")
   903  			}
   904  			yyVAL.addr2.from.Index = int16(yyDollar[5].lval)
   905  		}
   906  	case 52:
   907  		yyDollar = yyS[yypt-3 : yypt+1]
   908  		//line a.y:270
   909  		{
   910  			yyVAL.addr2.from = yyDollar[1].addr
   911  			yyVAL.addr2.to = yyDollar[3].addr
   912  		}
   913  	case 53:
   914  		yyDollar = yyS[yypt-5 : yypt+1]
   915  		//line a.y:275
   916  		{
   917  			yyVAL.addr2.from = yyDollar[1].addr
   918  			yyVAL.addr2.to = yyDollar[3].addr
   919  			if yyVAL.addr2.to.Index != obj.TYPE_NONE {
   920  				yyerror("dp move with lhs index")
   921  			}
   922  			yyVAL.addr2.to.Index = int16(yyDollar[5].lval)
   923  		}
   924  	case 54:
   925  		yyDollar = yyS[yypt-2 : yypt+1]
   926  		//line a.y:286
   927  		{
   928  			yyVAL.addr2.from = yyDollar[1].addr
   929  			yyVAL.addr2.to = nullgen
   930  		}
   931  	case 55:
   932  		yyDollar = yyS[yypt-1 : yypt+1]
   933  		//line a.y:291
   934  		{
   935  			yyVAL.addr2.from = yyDollar[1].addr
   936  			yyVAL.addr2.to = nullgen
   937  		}
   938  	case 56:
   939  		yyDollar = yyS[yypt-3 : yypt+1]
   940  		//line a.y:296
   941  		{
   942  			yyVAL.addr2.from = yyDollar[1].addr
   943  			yyVAL.addr2.to = yyDollar[3].addr
   944  		}
   945  	case 57:
   946  		yyDollar = yyS[yypt-5 : yypt+1]
   947  		//line a.y:303
   948  		{
   949  			yyVAL.addr2.from = yyDollar[1].addr
   950  			yyVAL.addr2.from3 = yyDollar[3].addr
   951  			yyVAL.addr2.to.Type = obj.TYPE_MEM // to give library something to do
   952  			yyVAL.addr2.to.Offset = yyDollar[5].lval
   953  		}
   954  	case 58:
   955  		yyDollar = yyS[yypt-5 : yypt+1]
   956  		//line a.y:312
   957  		{
   958  			yyVAL.addr2.from = yyDollar[1].addr
   959  			yyVAL.addr2.from3 = yyDollar[3].addr
   960  			yyVAL.addr2.to = yyDollar[5].addr
   961  		}
   962  	case 59:
   963  		yyDollar = yyS[yypt-0 : yypt+1]
   964  		//line a.y:319
   965  		{
   966  			yyVAL.addr2.from = nullgen
   967  			yyVAL.addr2.to = nullgen
   968  		}
   969  	case 60:
   970  		yyDollar = yyS[yypt-1 : yypt+1]
   971  		//line a.y:324
   972  		{
   973  			yyVAL.addr2.from = yyDollar[1].addr
   974  			yyVAL.addr2.to = nullgen
   975  		}
   976  	case 61:
   977  		yyDollar = yyS[yypt-3 : yypt+1]
   978  		//line a.y:331
   979  		{
   980  			if yyDollar[1].addr.Type != obj.TYPE_CONST || yyDollar[3].addr.Type != obj.TYPE_CONST {
   981  				yyerror("arguments to asm.PCDATA must be integer constants")
   982  			}
   983  			yyVAL.addr2.from = yyDollar[1].addr
   984  			yyVAL.addr2.to = yyDollar[3].addr
   985  		}
   986  	case 62:
   987  		yyDollar = yyS[yypt-3 : yypt+1]
   988  		//line a.y:341
   989  		{
   990  			if yyDollar[1].addr.Type != obj.TYPE_CONST {
   991  				yyerror("index for FUNCDATA must be integer constant")
   992  			}
   993  			if yyDollar[3].addr.Type != obj.TYPE_MEM || (yyDollar[3].addr.Name != obj.NAME_EXTERN && yyDollar[3].addr.Name != obj.NAME_STATIC) {
   994  				yyerror("value for FUNCDATA must be symbol reference")
   995  			}
   996  			yyVAL.addr2.from = yyDollar[1].addr
   997  			yyVAL.addr2.to = yyDollar[3].addr
   998  		}
   999  	case 63:
  1000  		yyVAL.addr = yyS[yypt-0].addr
  1001  	case 64:
  1002  		yyVAL.addr = yyS[yypt-0].addr
  1003  	case 65:
  1004  		yyVAL.addr = yyS[yypt-0].addr
  1005  	case 66:
  1006  		yyVAL.addr = yyS[yypt-0].addr
  1007  	case 67:
  1008  		yyDollar = yyS[yypt-2 : yypt+1]
  1009  		//line a.y:360
  1010  		{
  1011  			yyVAL.addr = yyDollar[2].addr
  1012  		}
  1013  	case 68:
  1014  		yyDollar = yyS[yypt-2 : yypt+1]
  1015  		//line a.y:364
  1016  		{
  1017  			yyVAL.addr = yyDollar[2].addr
  1018  		}
  1019  	case 69:
  1020  		yyVAL.addr = yyS[yypt-0].addr
  1021  	case 70:
  1022  		yyVAL.addr = yyS[yypt-0].addr
  1023  	case 71:
  1024  		yyVAL.addr = yyS[yypt-0].addr
  1025  	case 72:
  1026  		yyVAL.addr = yyS[yypt-0].addr
  1027  	case 73:
  1028  		yyDollar = yyS[yypt-4 : yypt+1]
  1029  		//line a.y:376
  1030  		{
  1031  			yyVAL.addr = nullgen
  1032  			yyVAL.addr.Type = obj.TYPE_BRANCH
  1033  			yyVAL.addr.Offset = yyDollar[1].lval + int64(asm.PC)
  1034  		}
  1035  	case 74:
  1036  		yyDollar = yyS[yypt-2 : yypt+1]
  1037  		//line a.y:382
  1038  		{
  1039  			yyDollar[1].sym = asm.LabelLookup(yyDollar[1].sym)
  1040  			yyVAL.addr = nullgen
  1041  			if asm.Pass == 2 && yyDollar[1].sym.Type != LLAB {
  1042  				yyerror("undefined label: %s", yyDollar[1].sym.Labelname)
  1043  			}
  1044  			yyVAL.addr.Type = obj.TYPE_BRANCH
  1045  			yyVAL.addr.Offset = yyDollar[1].sym.Value + yyDollar[2].lval
  1046  		}
  1047  	case 75:
  1048  		yyDollar = yyS[yypt-1 : yypt+1]
  1049  		//line a.y:394
  1050  		{
  1051  			yyVAL.addr = nullgen
  1052  			yyVAL.addr.Type = obj.TYPE_REG
  1053  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1054  		}
  1055  	case 76:
  1056  		yyDollar = yyS[yypt-1 : yypt+1]
  1057  		//line a.y:400
  1058  		{
  1059  			yyVAL.addr = nullgen
  1060  			yyVAL.addr.Type = obj.TYPE_REG
  1061  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1062  		}
  1063  	case 77:
  1064  		yyDollar = yyS[yypt-1 : yypt+1]
  1065  		//line a.y:406
  1066  		{
  1067  			yyVAL.addr = nullgen
  1068  			yyVAL.addr.Type = obj.TYPE_REG
  1069  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1070  		}
  1071  	case 78:
  1072  		yyDollar = yyS[yypt-1 : yypt+1]
  1073  		//line a.y:412
  1074  		{
  1075  			yyVAL.addr = nullgen
  1076  			yyVAL.addr.Type = obj.TYPE_REG
  1077  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1078  		}
  1079  	case 79:
  1080  		yyDollar = yyS[yypt-1 : yypt+1]
  1081  		//line a.y:418
  1082  		{
  1083  			yyVAL.addr = nullgen
  1084  			yyVAL.addr.Type = obj.TYPE_REG
  1085  			yyVAL.addr.Reg = x86.REG_SP
  1086  		}
  1087  	case 80:
  1088  		yyDollar = yyS[yypt-1 : yypt+1]
  1089  		//line a.y:424
  1090  		{
  1091  			yyVAL.addr = nullgen
  1092  			yyVAL.addr.Type = obj.TYPE_REG
  1093  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1094  		}
  1095  	case 81:
  1096  		yyDollar = yyS[yypt-1 : yypt+1]
  1097  		//line a.y:430
  1098  		{
  1099  			yyVAL.addr = nullgen
  1100  			yyVAL.addr.Type = obj.TYPE_REG
  1101  			yyVAL.addr.Reg = int16(yyDollar[1].lval)
  1102  		}
  1103  	case 82:
  1104  		yyDollar = yyS[yypt-2 : yypt+1]
  1105  		//line a.y:438
  1106  		{
  1107  			yyVAL.addr = nullgen
  1108  			yyVAL.addr.Type = obj.TYPE_CONST
  1109  			yyVAL.addr.Offset = yyDollar[2].lval
  1110  		}
  1111  	case 83:
  1112  		yyDollar = yyS[yypt-2 : yypt+1]
  1113  		//line a.y:444
  1114  		{
  1115  			yyVAL.addr = yyDollar[2].addr
  1116  			yyVAL.addr.Type = obj.TYPE_ADDR
  1117  			/*
  1118  				if($2.Type == x86.D_AUTO || $2.Type == x86.D_PARAM)
  1119  					yyerror("constant cannot be automatic: %s",
  1120  						$2.sym.Name);
  1121  			*/
  1122  		}
  1123  	case 84:
  1124  		yyDollar = yyS[yypt-2 : yypt+1]
  1125  		//line a.y:453
  1126  		{
  1127  			yyVAL.addr = nullgen
  1128  			yyVAL.addr.Type = obj.TYPE_SCONST
  1129  			yyVAL.addr.Val = (yyDollar[2].sval + "\x00\x00\x00\x00\x00\x00\x00\x00")[:8]
  1130  		}
  1131  	case 85:
  1132  		yyDollar = yyS[yypt-2 : yypt+1]
  1133  		//line a.y:459
  1134  		{
  1135  			yyVAL.addr = nullgen
  1136  			yyVAL.addr.Type = obj.TYPE_FCONST
  1137  			yyVAL.addr.Val = yyDollar[2].dval
  1138  		}
  1139  	case 86:
  1140  		yyDollar = yyS[yypt-4 : yypt+1]
  1141  		//line a.y:465
  1142  		{
  1143  			yyVAL.addr = nullgen
  1144  			yyVAL.addr.Type = obj.TYPE_FCONST
  1145  			yyVAL.addr.Val = yyDollar[3].dval
  1146  		}
  1147  	case 87:
  1148  		yyDollar = yyS[yypt-5 : yypt+1]
  1149  		//line a.y:471
  1150  		{
  1151  			yyVAL.addr = nullgen
  1152  			yyVAL.addr.Type = obj.TYPE_FCONST
  1153  			yyVAL.addr.Val = -yyDollar[4].dval
  1154  		}
  1155  	case 88:
  1156  		yyDollar = yyS[yypt-3 : yypt+1]
  1157  		//line a.y:477
  1158  		{
  1159  			yyVAL.addr = nullgen
  1160  			yyVAL.addr.Type = obj.TYPE_FCONST
  1161  			yyVAL.addr.Val = -yyDollar[3].dval
  1162  		}
  1163  	case 89:
  1164  		yyVAL.addr = yyS[yypt-0].addr
  1165  	case 90:
  1166  		yyVAL.addr = yyS[yypt-0].addr
  1167  	case 91:
  1168  		yyDollar = yyS[yypt-1 : yypt+1]
  1169  		//line a.y:489
  1170  		{
  1171  			yyVAL.addr = nullgen
  1172  			yyVAL.addr.Type = obj.TYPE_MEM
  1173  			yyVAL.addr.Offset = yyDollar[1].lval
  1174  		}
  1175  	case 92:
  1176  		yyDollar = yyS[yypt-4 : yypt+1]
  1177  		//line a.y:495
  1178  		{
  1179  			yyVAL.addr = nullgen
  1180  			yyVAL.addr.Type = obj.TYPE_MEM
  1181  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1182  			yyVAL.addr.Offset = yyDollar[1].lval
  1183  		}
  1184  	case 93:
  1185  		yyDollar = yyS[yypt-4 : yypt+1]
  1186  		//line a.y:502
  1187  		{
  1188  			yyVAL.addr = nullgen
  1189  			yyVAL.addr.Type = obj.TYPE_MEM
  1190  			yyVAL.addr.Reg = x86.REG_SP
  1191  			yyVAL.addr.Offset = yyDollar[1].lval
  1192  		}
  1193  	case 94:
  1194  		yyDollar = yyS[yypt-4 : yypt+1]
  1195  		//line a.y:509
  1196  		{
  1197  			yyVAL.addr = nullgen
  1198  			yyVAL.addr.Type = obj.TYPE_MEM
  1199  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1200  			yyVAL.addr.Offset = yyDollar[1].lval
  1201  		}
  1202  	case 95:
  1203  		yyDollar = yyS[yypt-6 : yypt+1]
  1204  		//line a.y:516
  1205  		{
  1206  			yyVAL.addr = nullgen
  1207  			yyVAL.addr.Type = obj.TYPE_MEM
  1208  			yyVAL.addr.Offset = yyDollar[1].lval
  1209  			yyVAL.addr.Index = int16(yyDollar[3].lval)
  1210  			yyVAL.addr.Scale = int16(yyDollar[5].lval)
  1211  			checkscale(yyVAL.addr.Scale)
  1212  		}
  1213  	case 96:
  1214  		yyDollar = yyS[yypt-9 : yypt+1]
  1215  		//line a.y:525
  1216  		{
  1217  			yyVAL.addr = nullgen
  1218  			yyVAL.addr.Type = obj.TYPE_MEM
  1219  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1220  			yyVAL.addr.Offset = yyDollar[1].lval
  1221  			yyVAL.addr.Index = int16(yyDollar[6].lval)
  1222  			yyVAL.addr.Scale = int16(yyDollar[8].lval)
  1223  			checkscale(yyVAL.addr.Scale)
  1224  		}
  1225  	case 97:
  1226  		yyDollar = yyS[yypt-9 : yypt+1]
  1227  		//line a.y:535
  1228  		{
  1229  			yyVAL.addr = nullgen
  1230  			yyVAL.addr.Type = obj.TYPE_MEM
  1231  			yyVAL.addr.Reg = int16(yyDollar[3].lval)
  1232  			yyVAL.addr.Offset = yyDollar[1].lval
  1233  			yyVAL.addr.Index = int16(yyDollar[6].lval)
  1234  			yyVAL.addr.Scale = int16(yyDollar[8].lval)
  1235  			checkscale(yyVAL.addr.Scale)
  1236  		}
  1237  	case 98:
  1238  		yyDollar = yyS[yypt-3 : yypt+1]
  1239  		//line a.y:545
  1240  		{
  1241  			yyVAL.addr = nullgen
  1242  			yyVAL.addr.Type = obj.TYPE_MEM
  1243  			yyVAL.addr.Reg = int16(yyDollar[2].lval)
  1244  		}
  1245  	case 99:
  1246  		yyDollar = yyS[yypt-3 : yypt+1]
  1247  		//line a.y:551
  1248  		{
  1249  			yyVAL.addr = nullgen
  1250  			yyVAL.addr.Type = obj.TYPE_MEM
  1251  			yyVAL.addr.Reg = x86.REG_SP
  1252  		}
  1253  	case 100:
  1254  		yyDollar = yyS[yypt-5 : yypt+1]
  1255  		//line a.y:557
  1256  		{
  1257  			yyVAL.addr = nullgen
  1258  			yyVAL.addr.Type = obj.TYPE_MEM
  1259  			yyVAL.addr.Index = int16(yyDollar[2].lval)
  1260  			yyVAL.addr.Scale = int16(yyDollar[4].lval)
  1261  			checkscale(yyVAL.addr.Scale)
  1262  		}
  1263  	case 101:
  1264  		yyDollar = yyS[yypt-8 : yypt+1]
  1265  		//line a.y:565
  1266  		{
  1267  			yyVAL.addr = nullgen
  1268  			yyVAL.addr.Type = obj.TYPE_MEM
  1269  			yyVAL.addr.Reg = int16(yyDollar[2].lval)
  1270  			yyVAL.addr.Index = int16(yyDollar[5].lval)
  1271  			yyVAL.addr.Scale = int16(yyDollar[7].lval)
  1272  			checkscale(yyVAL.addr.Scale)
  1273  		}
  1274  	case 102:
  1275  		yyDollar = yyS[yypt-1 : yypt+1]
  1276  		//line a.y:576
  1277  		{
  1278  			yyVAL.addr = yyDollar[1].addr
  1279  		}
  1280  	case 103:
  1281  		yyDollar = yyS[yypt-6 : yypt+1]
  1282  		//line a.y:580
  1283  		{
  1284  			yyVAL.addr = yyDollar[1].addr
  1285  			yyVAL.addr.Index = int16(yyDollar[3].lval)
  1286  			yyVAL.addr.Scale = int16(yyDollar[5].lval)
  1287  			checkscale(yyVAL.addr.Scale)
  1288  		}
  1289  	case 104:
  1290  		yyDollar = yyS[yypt-5 : yypt+1]
  1291  		//line a.y:589
  1292  		{
  1293  			yyVAL.addr = nullgen
  1294  			yyVAL.addr.Type = obj.TYPE_MEM
  1295  			yyVAL.addr.Name = int8(yyDollar[4].lval)
  1296  			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 0)
  1297  			yyVAL.addr.Offset = yyDollar[2].lval
  1298  		}
  1299  	case 105:
  1300  		yyDollar = yyS[yypt-7 : yypt+1]
  1301  		//line a.y:597
  1302  		{
  1303  			yyVAL.addr = nullgen
  1304  			yyVAL.addr.Type = obj.TYPE_MEM
  1305  			yyVAL.addr.Name = obj.NAME_STATIC
  1306  			yyVAL.addr.Sym = obj.Linklookup(asm.Ctxt, yyDollar[1].sym.Name, 1)
  1307  			yyVAL.addr.Offset = yyDollar[4].lval
  1308  		}
  1309  	case 106:
  1310  		yyDollar = yyS[yypt-0 : yypt+1]
  1311  		//line a.y:606
  1312  		{
  1313  			yyVAL.lval = 0
  1314  		}
  1315  	case 107:
  1316  		yyDollar = yyS[yypt-2 : yypt+1]
  1317  		//line a.y:610
  1318  		{
  1319  			yyVAL.lval = yyDollar[2].lval
  1320  		}
  1321  	case 108:
  1322  		yyDollar = yyS[yypt-2 : yypt+1]
  1323  		//line a.y:614
  1324  		{
  1325  			yyVAL.lval = -yyDollar[2].lval
  1326  		}
  1327  	case 109:
  1328  		yyVAL.lval = yyS[yypt-0].lval
  1329  	case 110:
  1330  		yyDollar = yyS[yypt-1 : yypt+1]
  1331  		//line a.y:621
  1332  		{
  1333  			yyVAL.lval = obj.NAME_AUTO
  1334  		}
  1335  	case 111:
  1336  		yyVAL.lval = yyS[yypt-0].lval
  1337  	case 112:
  1338  		yyVAL.lval = yyS[yypt-0].lval
  1339  	case 113:
  1340  		yyDollar = yyS[yypt-1 : yypt+1]
  1341  		//line a.y:629
  1342  		{
  1343  			yyVAL.lval = yyDollar[1].sym.Value
  1344  		}
  1345  	case 114:
  1346  		yyDollar = yyS[yypt-2 : yypt+1]
  1347  		//line a.y:633
  1348  		{
  1349  			yyVAL.lval = -yyDollar[2].lval
  1350  		}
  1351  	case 115:
  1352  		yyDollar = yyS[yypt-2 : yypt+1]
  1353  		//line a.y:637
  1354  		{
  1355  			yyVAL.lval = yyDollar[2].lval
  1356  		}
  1357  	case 116:
  1358  		yyDollar = yyS[yypt-2 : yypt+1]
  1359  		//line a.y:641
  1360  		{
  1361  			yyVAL.lval = ^yyDollar[2].lval
  1362  		}
  1363  	case 117:
  1364  		yyDollar = yyS[yypt-3 : yypt+1]
  1365  		//line a.y:645
  1366  		{
  1367  			yyVAL.lval = yyDollar[2].lval
  1368  		}
  1369  	case 118:
  1370  		yyDollar = yyS[yypt-1 : yypt+1]
  1371  		//line a.y:651
  1372  		{
  1373  			yyVAL.addr = nullgen
  1374  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1375  			yyVAL.addr.Offset = yyDollar[1].lval
  1376  			yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
  1377  		}
  1378  	case 119:
  1379  		yyDollar = yyS[yypt-2 : yypt+1]
  1380  		//line a.y:658
  1381  		{
  1382  			yyVAL.addr = nullgen
  1383  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1384  			yyVAL.addr.Offset = -yyDollar[2].lval
  1385  			yyVAL.addr.Val = int32(obj.ArgsSizeUnknown)
  1386  		}
  1387  	case 120:
  1388  		yyDollar = yyS[yypt-3 : yypt+1]
  1389  		//line a.y:665
  1390  		{
  1391  			yyVAL.addr = nullgen
  1392  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1393  			yyVAL.addr.Offset = yyDollar[1].lval
  1394  			yyVAL.addr.Val = int32(yyDollar[3].lval)
  1395  		}
  1396  	case 121:
  1397  		yyDollar = yyS[yypt-4 : yypt+1]
  1398  		//line a.y:672
  1399  		{
  1400  			yyVAL.addr = nullgen
  1401  			yyVAL.addr.Type = obj.TYPE_TEXTSIZE
  1402  			yyVAL.addr.Offset = -yyDollar[2].lval
  1403  			yyVAL.addr.Val = int32(yyDollar[4].lval)
  1404  		}
  1405  	case 122:
  1406  		yyVAL.lval = yyS[yypt-0].lval
  1407  	case 123:
  1408  		yyDollar = yyS[yypt-3 : yypt+1]
  1409  		//line a.y:682
  1410  		{
  1411  			yyVAL.lval = yyDollar[1].lval + yyDollar[3].lval
  1412  		}
  1413  	case 124:
  1414  		yyDollar = yyS[yypt-3 : yypt+1]
  1415  		//line a.y:686
  1416  		{
  1417  			yyVAL.lval = yyDollar[1].lval - yyDollar[3].lval
  1418  		}
  1419  	case 125:
  1420  		yyDollar = yyS[yypt-3 : yypt+1]
  1421  		//line a.y:690
  1422  		{
  1423  			yyVAL.lval = yyDollar[1].lval * yyDollar[3].lval
  1424  		}
  1425  	case 126:
  1426  		yyDollar = yyS[yypt-3 : yypt+1]
  1427  		//line a.y:694
  1428  		{
  1429  			yyVAL.lval = yyDollar[1].lval / yyDollar[3].lval
  1430  		}
  1431  	case 127:
  1432  		yyDollar = yyS[yypt-3 : yypt+1]
  1433  		//line a.y:698
  1434  		{
  1435  			yyVAL.lval = yyDollar[1].lval % yyDollar[3].lval
  1436  		}
  1437  	case 128:
  1438  		yyDollar = yyS[yypt-4 : yypt+1]
  1439  		//line a.y:702
  1440  		{
  1441  			yyVAL.lval = yyDollar[1].lval << uint(yyDollar[4].lval)
  1442  		}
  1443  	case 129:
  1444  		yyDollar = yyS[yypt-4 : yypt+1]
  1445  		//line a.y:706
  1446  		{
  1447  			yyVAL.lval = yyDollar[1].lval >> uint(yyDollar[4].lval)
  1448  		}
  1449  	case 130:
  1450  		yyDollar = yyS[yypt-3 : yypt+1]
  1451  		//line a.y:710
  1452  		{
  1453  			yyVAL.lval = yyDollar[1].lval & yyDollar[3].lval
  1454  		}
  1455  	case 131:
  1456  		yyDollar = yyS[yypt-3 : yypt+1]
  1457  		//line a.y:714
  1458  		{
  1459  			yyVAL.lval = yyDollar[1].lval ^ yyDollar[3].lval
  1460  		}
  1461  	case 132:
  1462  		yyDollar = yyS[yypt-3 : yypt+1]
  1463  		//line a.y:718
  1464  		{
  1465  			yyVAL.lval = yyDollar[1].lval | yyDollar[3].lval
  1466  		}
  1467  	}
  1468  	goto yystack /* stack new state and value */
  1469  }