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