Plan 9 from Bell Labs’s /usr/web/sources/contrib/ericvh/ppctools/qa/y.tab.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.



#line	2	"/sys/src/cmd/qa/a.y"
#include "a.h"

#line	4	"/sys/src/cmd/qa/a.y"
typedef union 
{
	Sym	*sym;
	long	lval;
	double	dval;
	char	sval[8];
	Gen	gen;
} YYSTYPE;
extern	int	yyerrflag;
#ifndef	YYMAXDEPTH
#define	YYMAXDEPTH	150
#endif
YYSTYPE	yylval;
YYSTYPE	yyval;
#define	LMOVW	57346
#define	LMOVB	57347
#define	LABS	57348
#define	LLOGW	57349
#define	LSHW	57350
#define	LADDW	57351
#define	LCMP	57352
#define	LCROP	57353
#define	LBRA	57354
#define	LFMOV	57355
#define	LFCONV	57356
#define	LFCMP	57357
#define	LFADD	57358
#define	LFMA	57359
#define	LTRAP	57360
#define	LXORW	57361
#define	LNOP	57362
#define	LEND	57363
#define	LRETT	57364
#define	LWORD	57365
#define	LTEXT	57366
#define	LDATA	57367
#define	LRETRN	57368
#define	LCONST	57369
#define	LSP	57370
#define	LSB	57371
#define	LFP	57372
#define	LPC	57373
#define	LCREG	57374
#define	LFLUSH	57375
#define	LREG	57376
#define	LFREG	57377
#define	LR	57378
#define	LCR	57379
#define	LF	57380
#define	LFPSCR	57381
#define	LLR	57382
#define	LCTR	57383
#define	LSPR	57384
#define	LSPREG	57385
#define	LSEG	57386
#define	LMSR	57387
#define	LSCHED	57388
#define	LXLD	57389
#define	LXST	57390
#define	LXOP	57391
#define	LXMV	57392
#define	LRLWM	57393
#define	LMOVMW	57394
#define	LMOVEM	57395
#define	LMOVFL	57396
#define	LMTFSB	57397
#define	LMA	57398
#define	LFCONST	57399
#define	LSCONST	57400
#define	LNAME	57401
#define	LLAB	57402
#define	LVAR	57403
#define YYEOFCODE 1
#define YYERRCODE 2
short	yyexca[] =
{-1, 1,
	1, -1,
	-2, 0,
};
#define	YYNPROD	188
#define	YYPRIVATE 57344
#define	yydebug	1
#define	YYLAST	864
short	yyact[] =
{
  46,  52,  90,  57, 429, 105, 102,  55, 276,  50,
  94, 440,  85,  56, 281,  95,  97,  98, 100, 101,
   2,  53, 114,  51,  80,  79, 172, 122, 124, 126,
  65, 129, 131, 128, 134,  94, 138,  93,  96,  74,
  99,  75, 109, 453, 452, 115,  74, 441,  75,  54,
 419, 123,  77,  74, 418,  75, 408,  66, 137,  74,
  62,  75,  67,  63,  64,  83,  84,  69,  68,  71,
  82, 407, 128,  94,  80,  79, 388, 117, 387, 205,
  94, 384, 280, 373,  76, 128,  78, 372, 147, 371,
 370,  61, 409,  65,  81, 369, 368,  49, 366,  60,
  60,  60,  77, 365, 321, 204, 205,  66, 103, 110,
  91, 198, 113, 364, 199, 289,  48,  60, 205, 161,
 118, 119, 120, 121, 231, 141, 141, 168,  87,  89,
 171, 135, 170, 169, 111, 112,  78, 226, 206, 207,
 108, 107, 164, 449,  81, 448, 127, 447, 130, 132,
 247, 256, 257, 254, 167, 265, 267, 252, 271, 272,
 273, 274, 260, 253, 446, 233, 234, 445, 176, 177,
 178, 251, 444, 250, 400, 263, 261, 399, 268, 270,
 293, 296, 297, 189, 397,  80,  79, 396, 116, 395,
 163, 308, 310, 312, 314, 316, 317, 202, 394, 255,
  80,  79, 393, 392, 319, 322, 269, 391, 390, 323,
 326, 389, 383,  77, 307, 382, 337, 339, 340, 341,
 381, 343, 133, 347, 139, 380, 379, 143,  77, 378,
 377, 376, 146, 148, 227,  74, 363,  75,  60, 338,
 362,  60, 230, 304, 344, 346, 117,  78, 223, 222,
 221, 262, 104, 283, 349,  81, 220, 284, 285, 286,
 288, 219,  78, 291, 292, 218, 249, 104,  60, 259,
  81, 217, 216, 215,  60, 214, 213, 305, 212, 211,
 298, 299, 300, 301, 210, 208, 320,  74,  62,  75,
 203,  63, 202, 329,  80,  79, 295, 197, 374, 196,
 195, 194, 303, 209,  58, 193, 192, 191,  60, 333,
 334, 335, 336, 190, 188, 185, 184, 375, 136, 350,
 183, 351,  77, 224, 225, 182, 228, 229, 181, 385,
  62, 180, 386,  63,  80,  79, 179, 160, 345, 165,
 348, 159, 158, 157, 156, 155, 154, 153, 152, 151,
  47,  86,  88, 150,  76, 149,  78,  45,  44,  42,
 106,  61,  77,  92,  81,  43, 162, 450, 125,  74,
 403,  75, 398, 405,  40,  41,  39, 410, 411, 412,
 413, 414, 415, 416, 187, 304,  74,  64,  75,  62,
 417, 266,  63, 420,  76, 404,  78, 433, 442, 232,
 432,  61, 438, 439,  81,  74,  62,  75,  74,  63,
  75,  80, 451, 425, 426, 427, 174, 175, 428, 431,
  66, 358, 435, 436, 437, 113, 443, 352, 353, 354,
 355, 356,  66, 162, 359, 360, 361, 113, 290,  77,
 357, 186,  69,  68,   8,  82, 455, 456, 200, 458,
 459, 145, 144, 406, 245, 244, 243, 241, 242, 236,
 237, 238, 239, 240,   1, 173, 275, 174, 175, 186,
 166,  76, 103,  78, 460, 287, 202,  70, 104,  59,
 264,  81,  73, 430, 430,  72,   0, 423, 424, 248,
  80,  79, 258,   0,   0, 306, 309, 311, 313, 315,
   0, 318,   0, 278, 277, 279, 330,   0,   0,  74,
 275,  75,   0, 331, 434, 332, 140, 142,  77, 294,
 278, 277, 279,  80,  79, 302,  74, 282,  75, 167,
   0,  83,  84,  66,   0,  74, 457,  75, 113,   0,
 176,   0, 454, 324, 327, 278, 277, 279, 401, 402,
   9,  77,  78, 238, 239, 240,   0, 104,   0, 342,
  81,   0,  10,  11,  17,  15,  16,  14,  26,  19,
  20,  12,  22,  25,  23,  24,  21,   0,  33,  35,
   0,  34,  36,  37,  38,  78, 367,   0,  80,  79,
 104,  66,  94,  81,  62,   0, 113,  63,   0,  80,
  79,   0,   0,   0,   6,  29,  30,  32,  31,  27,
  28,  80,  79,  13,  18,   0,  77,   4,   3,   5,
   0,  66,   7,  74,   0,  75,  67,  77,   0,  83,
  84,  69,  68,  71,  82,  62,  80,  79,  63,  77,
  80,  79, 236, 237, 238, 239, 240,   0,  76,   0,
  78,  64,   0,   0,   0,  61,   0,  94,  81,  76,
   0,  78,  80,  79,  77,   0,  61,   0,  77,  81,
   0,  76,   0,  78,   0,  74,   0,  75,  61,   0,
  94,  81,   0,  80,  79,   0,   0,  80,  79,   0,
  77,   0,   0,  80,  79,   0, 111, 112,  78,   0,
  76,   0,  78, 422,   0,   0,  81, 104,  80,  79,
  81,  77,  80,  79,   0,  77,   0,   0,   0,   0,
   0,  77, 111, 112,  78,   0,   0, 421,   0, 328,
   0,   0,  81,   0,   0,   0,  77,   0,   0,   0,
  77,   0,   0, 111, 112,  78,   0, 111, 112,  78,
 325,   0,   0,  81, 201,  78,   0,  81,   0,   0,
 104,   0,   0,  81,   0,   0,   0, 166,  76,   0,
  78,   0,  76,   0,  78, 104,   0,   0,  81, 104,
   0,   0,  81, 245, 244, 243, 241, 242, 236, 237,
 238, 239, 240, 245, 244, 243, 241, 242, 236, 237,
 238, 239, 240, 244, 243, 241, 242, 236, 237, 238,
 239, 240, 243, 241, 242, 236, 237, 238, 239, 240,
 241, 242, 236, 237, 238, 239, 240,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 246,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 235
};
short	yypact[] =
{
-1000, 548,-1000, 304, 302, 286, 291,-1000, 284, 283,
  15, 325, 285, -68,  -5, 364,  -5, 364, 364, 684,
  65,   2, 344, 344, 344, 344, 364,  -5, 631,  -4,
 364,   9,  -4, 243, -48, 171, 703, 703, 171,-1000,
-1000, 684, 684,-1000,-1000,-1000, 280, 278, 274, 273,
 272, 271, 270, 269, 268, 267, 266, 262,-1000,-1000,
  43, 191,-1000,  66,-1000, 699,-1000,  51,-1000,  57,
-1000,  56,-1000,-1000,-1000,  54, 458,-1000,-1000, 684,
 684, 684,-1000,-1000,-1000, 261, 256, 253, 250, 245,
 241, 240, 374, 239, 684, 238, 232, 231, 230, 226,
 225, 224, 222,-1000, 684,-1000,-1000, 481, 678, 215,
  30, 458, 407,  51, 210, 209,-1000,-1000, 204, 203,
 201, 200, 198, 197, 196, 190, 186, 181, 364, 175,
 174, 173,-1000,-1000, 171, 171, 361, 171, 171,-1000,
 167,  48, 387,-1000, 548, 548, 789,-1000, 779, 579,
 364, 364, 602, 549, 342, 364, 390, 491, 364, 364,
 364, 482,   5, 450, 684,-1000,-1000,  43, 684, 684,
 191, 684,  39, 430, 684, 684,-1000,-1000,-1000, 325,
 364, 364, 344, 344, 344, 590,-1000, 318, 684,-1000,
  -5, 364, 364, 364, 364, 364, 364, 684,  27,-1000,
-1000, 481,  42, 674, 653, 465,  39,-1000, 364,-1000,
 364, 344, 344, 344, 344,  -5, 364, 364, 364, 703,
  -5, -43, 364,  -4,-1000,-1000,-1000,-1000,-1000,-1000,
 514, 507, 684,-1000,-1000,-1000, 684, 684, 684, 684,
 684, 433, 413, 684, 684, 684,-1000,-1000,-1000,-1000,
 165,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000, 161,-1000,-1000,-1000,-1000,  37,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,  26,  21,-1000,-1000,-1000,
-1000, 364,-1000,  19,  18,  13,  12,  10,   6, 507,
 407,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000,-1000,-1000,-1000,-1000, 156, 155,-1000, 154,
-1000, 151,-1000, 150,-1000, 145,-1000,-1000, 140,-1000,
 137,-1000,   4,-1000,-1000, 481,-1000,-1000, 481,   3,
  -1,-1000,-1000,-1000, 136, 133, 132, 128, 127, 123,
 114,-1000,-1000,-1000, 112,-1000, 109,-1000,-1000, 300,
 102,  99, 542, 542,-1000,-1000,-1000, 684, 684, 813,
 806, 798, 348, 338, 684,-1000,-1000,  -6,-1000,-1000,
-1000,-1000,-1000,-1000, -21,  16, 364, 364, 364, 364,
 364, 364, 364, 684,-1000, -23, -27, 627,-1000, 344,
 344, 378, 378, 378, 514, 514, 364,  -4, -68, -68,
 -67, 633, 633,-1000,-1000,-1000, -30,-1000,-1000, 359,
-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000,-1000, 481,-1000,  97,-1000,-1000,-1000,  92,  89,
  72,  70,  68,-1000,-1000,-1000, 295,-1000,-1000,-1000,
 402,-1000, -33, -34, 344, 364, 364, 684, 364, 364,
 -68, 176,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
-1000
};
short	yypgo[] =
{
   0,  88, 190,   8,  26, 304, 339,   0, 116, 479,
  21,  97,   3, 485, 482,  23,   1,   2,   5,  49,
   7,   6,   9, 480,  13, 477,   4, 464,  20, 452,
 451, 444, 188
};
short	yyr1[] =
{
   0,  27,  27,  29,  28,  30,  28,  28,  28,  28,
  28,  28,  28,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  31,  31,  31,  31,
  31,  31,  31,  31,  31,  31,  18,  18,  18,   7,
  12,  12,  13,  20,  14,  25,  19,  19,  19,  24,
  24,  22,  23,  11,  11,  10,  10,  21,  26,  16,
  16,  17,  17,  15,   5,   5,   8,   8,   6,   6,
   9,   9,   9,  32,  32,   4,   4,   4,   3,   3,
   3,   1,   1,   1,   1,   1,   1,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2
};
short	yyr2[] =
{
   0,   0,   2,   0,   4,   0,   4,   4,   4,   2,
   1,   2,   2,   4,   4,   4,   4,   4,   4,   4,
   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,
   4,   4,   4,   6,   4,   4,   4,   6,   4,   4,
   6,   6,   6,   4,   4,   6,   4,   6,   4,   6,
   4,   4,   2,   6,   4,   4,   4,   6,   4,   4,
   4,   4,   4,   4,   4,   4,   4,   4,   2,   2,
   4,   3,   3,   5,   4,   4,   6,   4,   4,   6,
   6,   6,   8,   4,   4,   3,   2,   4,   4,   6,
   8,   4,   6,   4,   4,   6,   6,   8,   8,   8,
   8,   4,   4,   4,   6,   4,   6,   4,   4,   2,
   2,   3,   3,   3,   3,   3,   3,   2,   4,   6,
   6,   8,   6,   6,   6,   2,   4,   2,   2,   1,
   1,   1,   1,   1,   1,   1,   1,   4,   1,   4,
   4,   1,   4,   1,   4,   1,   4,   1,   3,   2,
   2,   2,   3,   2,   1,   4,   3,   5,   1,   4,
   4,   5,   7,   0,   1,   0,   2,   2,   1,   1,
   1,   1,   1,   2,   2,   2,   3,   1,   3,   3,
   3,   3,   3,   4,   4,   3,   3,   3
};
short	yychk[] =
{
-1000, -27, -28,  70,  69,  71,  56,  74, -31,   2,
  14,  15,  23,  65,  19,  17,  18,  16,  66,  21,
  22,  28,  24,  26,  27,  25,  20,  61,  62,  57,
  58,  60,  59,  30,  33,  31,  34,  35,  36,  72,
  72,  73,  73,  74,  74,  74,  -7,  -6,  -8, -11,
 -22, -15, -16, -10, -19, -20, -24, -12,  -5,  -9,
  -1,  76,  45,  48,  49,  78,  42,  47,  53,  52,
 -25,  54, -13, -14,  44,  46,  69,  37,  71,  10,
   9,  79,  55,  50,  51,  -7,  -6,  -8,  -6,  -8,
 -17, -11,  78, -15,  78,  -7, -15,  -7,  -7, -15,
  -7,  -7, -21,  -1,  76, -18,  -6,  76,  75, -10,
  -1,  69,  70,  47,  -7, -15, -32,  75, -11, -11,
 -11, -11,  -7, -15,  -7,  -6,  -7,  -8,  76,  -7,
  -8,  -7,  -8, -32,  -7, -11,  75, -15, -16, -32,
  -9,  -1,  -9, -32, -29, -30,  -2,  -1,  -2,  75,
  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
  75,  76,  -5,  -2,  76,  -6,  68,  -1,  76,  76,
  76,  76,  -4,   7,   9,  10,  -1,  -1,  -1,  75,
  75,  75,  75,  75,  75,  75,  67,  10,  75,  -1,
  75,  75,  75,  75,  75,  75,  75,  75, -12, -18,
  -6,  76,  -1,  75,  75,  76,  -4,  -4,  75, -32,
  75,  75,  75,  75,  75,  75,  75,  75,  75,  75,
  75,  75,  75,  75, -32, -32,  -7, -11, -32, -32,
  75,  76,  12, -28, -28,  74,   9,  10,  11,  12,
  13,   7,   8,   6,   5,   4,  74,  -7,  -6,  -8,
 -15, -10, -20, -24, -12, -19,  -7,  -7,  -6,  -8,
 -22, -15, -11, -10, -23,  -7,  49,  -7, -10, -19,
 -10,  -7,  -7,  -7,  -7,  -5,  -3,  39,  38,  40,
  77,   9,  77,  -1,  -1,  -1,  -1,  -5,  -1,  76,
   8,  -1,  -1,  -7,  -6,  -8,  -7,  -7, -11, -11,
 -11, -11,  -6,  -8,  67,  -1,  -5, -15,  -7,  -5,
  -7,  -5,  -7,  -5,  -7,  -5,  -7,  -7,  -5, -21,
  -1,  77, -12, -18,  -6,  76, -18,  -6,  76,  -1,
  41,  -5,  -5, -11, -11, -11, -11,  -7, -15,  -7,
  -7,  -7,  -6,  -7, -15,  -8, -15,  -7,  -8, -15,
  -1,  -1,  -2,  -2,  -2,  -2,  -2,   7,   8,  -2,
  -2,  -2,  75,  75,  76,  77,  77,  -5,  77,  77,
  77,  77,  77,  77,  -3,  -4,  75,  75,  75,  75,
  75,  75,  75,  75,  77, -12, -12,  75,  77,  75,
  75,  75,  75,  75,  75,  75,  75,  75,  72,  75,
  75,  -2,  -2, -20,  47, -22,  -1,  77,  77,  76,
  -7,  -7,  -7,  -7,  -7,  -7,  -7, -21,  77,  77,
 -18,  -6,  76, -11, -11, -10, -10, -10, -15, -26,
  -1, -15, -26,  -7,  -8, -15, -15, -15, -16, -17,
  78,  77,  39, -12,  75,  75,  75,  75,  75,  75,
  72,  10,  77,  77, -11,  -7,  -7,  -1,  -7,  -7,
 -15
};
short	yydef[] =
{
   1,  -2,   2,   0,   0,   0,   0,  10,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 163,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0, 163,   0, 163,   0,   0, 163,   3,
   5,   0,   0,   9,  11,  12,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 129, 158,
   0,   0, 143,   0, 141,   0, 145, 133, 136,   0,
 138,   0, 130, 131, 154,   0, 165, 171, 172,   0,
   0,   0, 135, 132, 134,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  52,   0,   0, 147,   0,  68,  69,   0,   0,   0,
   0, 165, 165,   0, 163,   0,  86, 164,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 109, 110, 163, 163, 164, 163, 163, 117,
   0,   0,   0, 125,   0,   0,   0, 177,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0, 149, 150, 153,   0,   0,
   0,   0,   0,   0,   0,   0, 173, 174, 175,   0,
   0,   0,   0,   0,   0,   0, 151,   0,   0, 153,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  71,
  72,   0,   0,   0,   0,   0, 127, 128, 164,  85,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 111, 112, 113, 114, 115, 116,
   0,   0,   0,   4,   6,   7,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   8,  13,  25,  26,
   0,  38,  39,  63,  65,  67,  14,  15,  29,  30,
  32,   0,  31,  34,  35,  54,   0,  55,  58,  66,
  59,  61,  60,  62,  64,   0,   0, 168, 169, 170,
 156,   0, 176,   0,   0,   0,   0,   0,   0,   0,
 165, 166, 167,  16,  27,  28,  17,  18,  19,  20,
  21,  22,  23,  24, 152,  36, 129,   0,  43, 129,
  44, 129,  46, 129,  48, 129,  50,  51,   0,  56,
 147,  70,   0,  74,  75,   0,  77,  78,   0,   0,
   0,  83,  84,  87,  88,   0,  91,  93,  94,   0,
   0, 101, 102, 103,   0, 105,   0, 107, 108, 118,
   0,   0, 178, 179, 180, 181, 182,   0,   0, 185,
 186, 187,   0,   0,   0, 159, 160,   0, 144, 146,
 137, 139, 140, 155,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  73,   0,   0,   0, 126,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0, 183, 184,  37, 133,  33,   0, 157, 161,   0,
  40,  42,  41,  45,  47,  49,  53,  57,  76,  79,
  80,  81,   0,  89,   0,  92,  95,  96,   0,   0,
   0,   0,   0, 104, 106, 120, 119, 122, 123, 124,
   0, 142,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 162,  82,  90,  97,  98, 148,  99, 100,
 121
};
short	yytok1[] =
{
   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  78,  13,   6,   0,
  76,  77,  11,   9,  75,  10,   0,  12,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  72,  74,
   7,  73,   8,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   5,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   4,   0,  79
};
short	yytok2[] =
{
   2,   3,  14,  15,  16,  17,  18,  19,  20,  21,
  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
  62,  63,  64,  65,  66,  67,  68,  69,  70,  71
};
long	yytok3[] =
{
   0
};
#define YYFLAG 		-1000
#define	yyclearin	yychar = -1
#define	yyerrok		yyerrflag = 0

#ifdef	yydebug
#include	"y.debug"
#else
#define	yydebug		0
char*	yytoknames[1];		/* for debugging */
char*	yystates[1];		/* for debugging */
#endif

/*	parser for yacc output	*/

int	yynerrs = 0;		/* number of errors */
int	yyerrflag = 0;		/* error recovery flag */

extern	int	fprint(int, char*, ...);
extern	int	sprint(char*, char*, ...);

char*
yytokname(int yyc)
{
	static char x[16];

	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
	if(yytoknames[yyc-1])
		return yytoknames[yyc-1];
	sprint(x, "<%d>", yyc);
	return x;
}

char*
yystatname(int yys)
{
	static char x[16];

	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
	if(yystates[yys])
		return yystates[yys];
	sprint(x, "<%d>\n", yys);
	return x;
}

long
yylex1(void)
{
	long yychar;
	long *t3p;
	int c;

	yychar = yylex();
	if(yychar <= 0) {
		c = yytok1[0];
		goto out;
	}
	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
		c = yytok1[yychar];
		goto out;
	}
	if(yychar >= YYPRIVATE)
		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
			c = yytok2[yychar-YYPRIVATE];
			goto out;
		}
	for(t3p=yytok3;; t3p+=2) {
		c = t3p[0];
		if(c == yychar) {
			c = t3p[1];
			goto out;
		}
		if(c == 0)
			break;
	}
	c = 0;

out:
	if(c == 0)
		c = yytok2[1];	/* unknown char */
	if(yydebug >= 3)
		fprint(2, "lex %.4lux %s\n", yychar, yytokname(c));
	return c;
}

int
yyparse(void)
{
	struct
	{
		YYSTYPE	yyv;
		int	yys;
	} yys[YYMAXDEPTH], *yyp, *yypt;
	short *yyxi;
	int yyj, yym, yystate, yyn, yyg;
	long yychar;
	YYSTYPE save1, save2;
	int save3, save4;

	save1 = yylval;
	save2 = yyval;
	save3 = yynerrs;
	save4 = yyerrflag;

	yystate = 0;
	yychar = -1;
	yynerrs = 0;
	yyerrflag = 0;
	yyp = &yys[-1];
	goto yystack;

ret0:
	yyn = 0;
	goto ret;

ret1:
	yyn = 1;
	goto ret;

ret:
	yylval = save1;
	yyval = save2;
	yynerrs = save3;
	yyerrflag = save4;
	return yyn;

yystack:
	/* put a state and value onto the stack */
	if(yydebug >= 4)
		fprint(2, "char %s in %s", yytokname(yychar), yystatname(yystate));

	yyp++;
	if(yyp >= &yys[YYMAXDEPTH]) {
		yyerror("yacc stack overflow");
		goto ret1;
	}
	yyp->yys = yystate;
	yyp->yyv = yyval;

yynewstate:
	yyn = yypact[yystate];
	if(yyn <= YYFLAG)
		goto yydefault; /* simple state */
	if(yychar < 0)
		yychar = yylex1();
	yyn += yychar;
	if(yyn < 0 || yyn >= YYLAST)
		goto yydefault;
	yyn = yyact[yyn];
	if(yychk[yyn] == yychar) { /* valid shift */
		yychar = -1;
		yyval = yylval;
		yystate = yyn;
		if(yyerrflag > 0)
			yyerrflag--;
		goto yystack;
	}

yydefault:
	/* default state action */
	yyn = yydef[yystate];
	if(yyn == -2) {
		if(yychar < 0)
			yychar = yylex1();

		/* look through exception table */
		for(yyxi=yyexca;; yyxi+=2)
			if(yyxi[0] == -1 && yyxi[1] == yystate)
				break;
		for(yyxi += 2;; yyxi += 2) {
			yyn = yyxi[0];
			if(yyn < 0 || yyn == yychar)
				break;
		}
		yyn = yyxi[1];
		if(yyn < 0)
			goto ret0;
	}
	if(yyn == 0) {
		/* error ... attempt to resume parsing */
		switch(yyerrflag) {
		case 0:   /* brand new error */
			yyerror("syntax error");
			yynerrs++;
			if(yydebug >= 1) {
				fprint(2, "%s", yystatname(yystate));
				fprint(2, "saw %s\n", yytokname(yychar));
			}

		case 1:
		case 2: /* incompletely recovered error ... try again */
			yyerrflag = 3;

			/* find a state where "error" is a legal shift action */
			while(yyp >= yys) {
				yyn = yypact[yyp->yys] + YYERRCODE;
				if(yyn >= 0 && yyn < YYLAST) {
					yystate = yyact[yyn];  /* simulate a shift of "error" */
					if(yychk[yystate] == YYERRCODE)
						goto yystack;
				}

				/* the current yyp has no shift onn "error", pop stack */
				if(yydebug >= 2)
					fprint(2, "error recovery pops state %d, uncovers %d\n",
						yyp->yys, (yyp-1)->yys );
				yyp--;
			}
			/* there is no state on the stack with an error shift ... abort */
			goto ret1;

		case 3:  /* no shift yet; clobber input char */
			if(yydebug >= 2)
				fprint(2, "error recovery discards %s\n", yytokname(yychar));
			if(yychar == YYEOFCODE)
				goto ret1;
			yychar = -1;
			goto yynewstate;   /* try again in the same state */
		}
	}

	/* reduction by production yyn */
	if(yydebug >= 2)
		fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate));

	yypt = yyp;
	yyp -= yyr2[yyn];
	yyval = (yyp+1)->yyv;
	yym = yyn;

	/* consult goto table to find next state */
	yyn = yyr1[yyn];
	yyg = yypgo[yyn];
	yyj = yyg + yyp->yys + 1;

	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
		yystate = yyact[yyg];
	switch(yym) {
		
case 3:
#line	38	"/sys/src/cmd/qa/a.y"
{
		if(yypt[-1].yyv.sym->value != pc)
			yyerror("redeclaration of %s", yypt[-1].yyv.sym->name);
		yypt[-1].yyv.sym->value = pc;
	} break;
case 5:
#line	45	"/sys/src/cmd/qa/a.y"
{
		yypt[-1].yyv.sym->type = LLAB;
		yypt[-1].yyv.sym->value = pc;
	} break;
case 7:
#line	51	"/sys/src/cmd/qa/a.y"
{
		yypt[-3].yyv.sym->type = LVAR;
		yypt[-3].yyv.sym->value = yypt[-1].yyv.lval;
	} break;
case 8:
#line	56	"/sys/src/cmd/qa/a.y"
{
		if(yypt[-3].yyv.sym->value != yypt[-1].yyv.lval)
			yyerror("redeclaration of %s", yypt[-3].yyv.sym->name);
		yypt[-3].yyv.sym->value = yypt[-1].yyv.lval;
	} break;
case 9:
#line	62	"/sys/src/cmd/qa/a.y"
{
		nosched = yypt[-1].yyv.lval;
	} break;
case 13:
#line	74	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 14:
#line	78	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 15:
#line	82	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 16:
#line	86	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 17:
#line	90	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 18:
#line	94	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 19:
#line	101	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 20:
#line	105	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 21:
#line	109	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 22:
#line	113	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 23:
#line	117	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 24:
#line	121	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 25:
#line	128	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 26:
#line	132	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 27:
#line	136	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 28:
#line	140	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 29:
#line	147	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 30:
#line	151	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 31:
#line	158	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 32:
#line	162	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 33:
#line	166	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 34:
#line	170	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 35:
#line	174	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 36:
#line	178	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, yypt[-0].yyv.lval, &nullgen);
	} break;
case 37:
#line	185	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 38:
#line	189	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 39:
#line	193	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 40:
#line	203	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 41:
#line	207	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 42:
#line	211	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 43:
#line	215	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 44:
#line	219	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 45:
#line	223	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 46:
#line	227	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 47:
#line	231	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 48:
#line	235	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 49:
#line	239	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 50:
#line	243	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 51:
#line	247	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 52:
#line	251	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &yypt[-0].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 53:
#line	258	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 54:
#line	265	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 55:
#line	269	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 56:
#line	276	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, yypt[-0].yyv.gen.reg, &yypt[-0].yyv.gen);
	} break;
case 57:
#line	280	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 58:
#line	288	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 59:
#line	292	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 60:
#line	296	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 61:
#line	300	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 62:
#line	304	"/sys/src/cmd/qa/a.y"
{
		int r;
		r = yypt[-2].yyv.gen.offset;
		yypt[-2].yyv.gen.offset = 0;
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, r, &yypt[-0].yyv.gen);
	} break;
case 63:
#line	311	"/sys/src/cmd/qa/a.y"
{
		int r;
		r = yypt[-0].yyv.gen.offset;
		yypt[-0].yyv.gen.offset = 0;
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, r, &yypt[-0].yyv.gen);
	} break;
case 64:
#line	318	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 65:
#line	322	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 66:
#line	326	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 67:
#line	330	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 68:
#line	339	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 69:
#line	343	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 70:
#line	347	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &nullgen, NREG, &yypt[-1].yyv.gen);
	} break;
case 71:
#line	351	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 72:
#line	355	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 73:
#line	359	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-4].yyv.lval, &nullgen, NREG, &yypt[-1].yyv.gen);
	} break;
case 74:
#line	363	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 75:
#line	367	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 76:
#line	371	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-1].yyv.gen);
	} break;
case 77:
#line	375	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &nullgen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 78:
#line	379	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &nullgen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 79:
#line	383	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &nullgen, yypt[-4].yyv.lval, &yypt[-1].yyv.gen);
	} break;
case 80:
#line	387	"/sys/src/cmd/qa/a.y"
{
		Gen g;
		g = nullgen;
		g.type = D_CONST;
		g.offset = yypt[-4].yyv.lval;
		outcode(yypt[-5].yyv.lval, &g, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 81:
#line	395	"/sys/src/cmd/qa/a.y"
{
		Gen g;
		g = nullgen;
		g.type = D_CONST;
		g.offset = yypt[-4].yyv.lval;
		outcode(yypt[-5].yyv.lval, &g, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 82:
#line	403	"/sys/src/cmd/qa/a.y"
{
		Gen g;
		g = nullgen;
		g.type = D_CONST;
		g.offset = yypt[-6].yyv.lval;
		outcode(yypt[-7].yyv.lval, &g, yypt[-4].yyv.lval, &yypt[-1].yyv.gen);
	} break;
case 83:
#line	414	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, yypt[-0].yyv.lval, &nullgen);
	} break;
case 84:
#line	418	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, yypt[-0].yyv.lval, &nullgen);
	} break;
case 85:
#line	422	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &yypt[-1].yyv.gen, NREG, &nullgen);
	} break;
case 86:
#line	426	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &nullgen);
	} break;
case 87:
#line	433	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 88:
#line	437	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 89:
#line	441	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.gen.reg, &yypt[-0].yyv.gen);
	} break;
case 90:
#line	445	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.gen.reg, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 91:
#line	449	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 92:
#line	453	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-0].yyv.gen.reg, &yypt[-2].yyv.gen);
	} break;
case 93:
#line	460	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 94:
#line	464	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 95:
#line	468	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-0].yyv.gen.reg, &yypt[-2].yyv.gen);
	} break;
case 96:
#line	472	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-0].yyv.gen.reg, &yypt[-2].yyv.gen);
	} break;
case 97:
#line	479	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.gen.reg, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 98:
#line	483	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.gen.reg, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 99:
#line	487	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.gen.reg, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 100:
#line	491	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.gen.reg, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 101:
#line	498	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 102:
#line	502	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 103:
#line	510	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 104:
#line	514	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 105:
#line	518	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 106:
#line	522	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-2].yyv.gen, &yypt[-0].yyv.gen);
	} break;
case 107:
#line	526	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 108:
#line	530	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 109:
#line	534	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &yypt[-0].yyv.gen, NREG, &nullgen);
	} break;
case 110:
#line	541	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &nullgen);
	} break;
case 111:
#line	545	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &yypt[-1].yyv.gen, NREG, &nullgen);
	} break;
case 112:
#line	549	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &yypt[-1].yyv.gen, NREG, &nullgen);
	} break;
case 113:
#line	553	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 114:
#line	557	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &nullgen, NREG, &yypt[-0].yyv.gen);
	} break;
case 115:
#line	564	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &yypt[-1].yyv.gen, NREG, &nullgen);
	} break;
case 116:
#line	568	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-2].yyv.lval, &yypt[-1].yyv.gen, NREG, &nullgen);
	} break;
case 117:
#line	575	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &nullgen);
	} break;
case 118:
#line	582	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-3].yyv.lval, &yypt[-2].yyv.gen, NREG, &yypt[-0].yyv.gen);
	} break;
case 119:
#line	586	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 120:
#line	590	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, NREG, &yypt[-0].yyv.gen, &yypt[-2].yyv.gen);
	} break;
case 121:
#line	594	"/sys/src/cmd/qa/a.y"
{
		outgcode(yypt[-7].yyv.lval, &yypt[-6].yyv.gen, yypt[-4].yyv.lval, &yypt[-0].yyv.gen, &yypt[-2].yyv.gen);
	} break;
case 122:
#line	601	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 123:
#line	605	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 124:
#line	609	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-5].yyv.lval, &yypt[-4].yyv.gen, yypt[-2].yyv.lval, &yypt[-0].yyv.gen);
	} break;
case 125:
#line	616	"/sys/src/cmd/qa/a.y"
{
		outcode(yypt[-1].yyv.lval, &nullgen, NREG, &nullgen);
	} break;
case 126:
#line	622	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_BRANCH;
		yyval.gen.offset = yypt[-3].yyv.lval + pc;
	} break;
case 127:
#line	628	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		if(pass == 2)
			yyerror("undefined label: %s", yypt[-1].yyv.sym->name);
		yyval.gen.type = D_BRANCH;
		yyval.gen.sym = yypt[-1].yyv.sym;
		yyval.gen.offset = yypt[-0].yyv.lval;
	} break;
case 128:
#line	637	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_BRANCH;
		yyval.gen.sym = yypt[-1].yyv.sym;
		yyval.gen.offset = yypt[-1].yyv.sym->value + yypt[-0].yyv.lval;
	} break;
case 129:
#line	646	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_REG;
		yyval.gen.reg = yypt[-0].yyv.lval;
	} break;
case 132:
#line	658	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_SPR;
		yyval.gen.offset = yypt[-0].yyv.lval;
	} break;
case 133:
#line	666	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_CREG;
		yyval.gen.reg = NREG;	/* whole register */
	} break;
case 134:
#line	674	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_SPR;
		yyval.gen.offset = yypt[-0].yyv.lval;
	} break;
case 135:
#line	682	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_MSR;
	} break;
case 136:
#line	689	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_SPR;
		yyval.gen.offset = yypt[-0].yyv.lval;
	} break;
case 137:
#line	695	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = yypt[-3].yyv.lval;
		yyval.gen.offset = yypt[-1].yyv.lval;
	} break;
case 139:
#line	704	"/sys/src/cmd/qa/a.y"
{
		if(yypt[-1].yyv.lval < 0 || yypt[-1].yyv.lval > 15)
			yyerror("segment register number out of range");
		yyval.gen = nullgen;
		yyval.gen.type = D_SREG;
		yyval.gen.reg = yypt[-1].yyv.lval;
		yyval.gen.offset = NREG;
	} break;
case 140:
#line	713	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_SREG;
		yyval.gen.reg = NREG;
		yyval.gen.offset = yypt[-1].yyv.lval;
	} break;
case 141:
#line	722	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FPSCR;
		yyval.gen.reg = NREG;
	} break;
case 142:
#line	730	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FPSCR;
		yyval.gen.reg = yypt[-1].yyv.lval;
	} break;
case 143:
#line	738	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FREG;
		yyval.gen.reg = yypt[-0].yyv.lval;
	} break;
case 144:
#line	744	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FREG;
		yyval.gen.reg = yypt[-1].yyv.lval;
	} break;
case 145:
#line	752	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_CREG;
		yyval.gen.reg = yypt[-0].yyv.lval;
	} break;
case 146:
#line	758	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_CREG;
		yyval.gen.reg = yypt[-1].yyv.lval;
	} break;
case 147:
#line	766	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_REG;
		yyval.gen.reg = yypt[-0].yyv.lval;
	} break;
case 148:
#line	774	"/sys/src/cmd/qa/a.y"
{
		int mb, me;
		ulong v;

		yyval.gen = nullgen;
		yyval.gen.type = D_CONST;
		mb = yypt[-2].yyv.lval;
		me = yypt[-0].yyv.lval;
		if(mb < 0 || mb > 31 || me < 0 || me > 31){
			yyerror("illegal mask start/end value(s)");
			mb = me = 0;
		}
		if(mb <= me)
			v = ((ulong)~0L>>mb) & (~0L<<(31-me));
		else
			v = ~(((ulong)~0L>>(me+1)) & (~0L<<(31-(mb-1))));
		yyval.gen.offset = v;
	} break;
case 149:
#line	795	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = yypt[-0].yyv.gen;
		yyval.gen.type = D_CONST;
	} break;
case 150:
#line	800	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_SCONST;
		memcpy(yyval.gen.sval, yypt[-0].yyv.sval, sizeof(yyval.gen.sval));
	} break;
case 151:
#line	808	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FCONST;
		yyval.gen.dval = yypt[-0].yyv.dval;
	} break;
case 152:
#line	814	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_FCONST;
		yyval.gen.dval = -yypt[-0].yyv.dval;
	} break;
case 153:
#line	821	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_CONST;
		yyval.gen.offset = yypt[-0].yyv.lval;
	} break;
case 155:
#line	830	"/sys/src/cmd/qa/a.y"
{
		if(yyval.lval < 0 || yyval.lval >= NREG)
			print("register value out of range\n");
		yyval.lval = yypt[-1].yyv.lval;
	} break;
case 156:
#line	838	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.reg = yypt[-1].yyv.lval;
		yyval.gen.offset = 0;
	} break;
case 157:
#line	845	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.reg = yypt[-3].yyv.lval;
		yyval.gen.xreg = yypt[-1].yyv.lval;
		yyval.gen.offset = 0;
	} break;
case 159:
#line	856	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.reg = yypt[-1].yyv.lval;
		yyval.gen.offset = yypt[-3].yyv.lval;
	} break;
case 160:
#line	865	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.name = yypt[-1].yyv.lval;
		yyval.gen.sym = S;
		yyval.gen.offset = yypt[-3].yyv.lval;
	} break;
case 161:
#line	873	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.name = yypt[-1].yyv.lval;
		yyval.gen.sym = yypt[-4].yyv.sym;
		yyval.gen.offset = yypt[-3].yyv.lval;
	} break;
case 162:
#line	881	"/sys/src/cmd/qa/a.y"
{
		yyval.gen = nullgen;
		yyval.gen.type = D_OREG;
		yyval.gen.name = D_STATIC;
		yyval.gen.sym = yypt[-6].yyv.sym;
		yyval.gen.offset = yypt[-3].yyv.lval;
	} break;
case 165:
#line	893	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = 0;
	} break;
case 166:
#line	897	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-0].yyv.lval;
	} break;
case 167:
#line	901	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = -yypt[-0].yyv.lval;
	} break;
case 172:
#line	913	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-0].yyv.sym->value;
	} break;
case 173:
#line	917	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = -yypt[-0].yyv.lval;
	} break;
case 174:
#line	921	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-0].yyv.lval;
	} break;
case 175:
#line	925	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = ~yypt[-0].yyv.lval;
	} break;
case 176:
#line	929	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-1].yyv.lval;
	} break;
case 178:
#line	936	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval + yypt[-0].yyv.lval;
	} break;
case 179:
#line	940	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval - yypt[-0].yyv.lval;
	} break;
case 180:
#line	944	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval * yypt[-0].yyv.lval;
	} break;
case 181:
#line	948	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval / yypt[-0].yyv.lval;
	} break;
case 182:
#line	952	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval % yypt[-0].yyv.lval;
	} break;
case 183:
#line	956	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-3].yyv.lval << yypt[-0].yyv.lval;
	} break;
case 184:
#line	960	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-3].yyv.lval >> yypt[-0].yyv.lval;
	} break;
case 185:
#line	964	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval & yypt[-0].yyv.lval;
	} break;
case 186:
#line	968	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval ^ yypt[-0].yyv.lval;
	} break;
case 187:
#line	972	"/sys/src/cmd/qa/a.y"
{
		yyval.lval = yypt[-2].yyv.lval | yypt[-0].yyv.lval;
	} break;
	}
	goto yystack;  /* stack new state and value */
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].